[Bitcoin-development] Alternative to OP_EVAL
pieter.wuille at gmail.com
Thu Dec 29 21:00:26 UTC 2011
On Thu, Dec 29, 2011 at 08:08:38PM +0100, Pieter Wuille wrote:
> On Thu, Dec 29, 2011 at 01:55:03AM -0500, roconnor at theorem.ca wrote:
> > Gavin asked me to come up with an alternative to OP_EVAL, so here is my
> > proposal.
> > OP_CODEHASH Initial Proposal
> If we're again brainstorming about alternatives for OP_EVAL, I'll do my own.
> It is called OP_CHECKEDEVAL, and is specified as follows:
I realized this may have been needlessly complicated. All is required to achieve the
same properties (plus win half-verification by old clients) is a somewhat more
restricted OP_EVAL which:
* Does not touch the stack or altstack - it looks at the last (code-position wise)
literal pushed (and not yet consumed by another OP_EVAL) on the stack and uses
that as script to be executed.
* Executes its subscript in an independent environment, which inherits only the
main stack (this allows the outer script to hide information from the
inner script by moving it temporarily to the alt stack).
* OP_EVAL is an effective no-op for the execution state of the outer script,
* potentially causing failure (if the subscript doesn't parse or doesn't
* popping an element from the literal-only stack
A pay-to-script-hash becomes:
OP_EVAL OP_HASH160 <scriptHash> OP_EQUAL
and is redeemed using
[script input] <<script>>
More information about the bitcoin-dev