Why does no Bitcoin opcode push data about the spending transaction onto the stack?
In Bitcoin Core, every method of BaseSignatureChecker that touches the spending transaction returns a bool: CheckSchnorrSignature, CheckLockTime (CLTV) and CheckSequence (CSV). Script supplies a parameter and gets back a yes/no answer, but no transaction data is ever pushed onto the stack. Was this “script asks, checker answers yes/no” separation a deliberate design principle, for example to keep script evaluation a pure function of (tx, prevouts), to allow validation caching, or to keep scripts easy to analyze? Or is it mostly a result of how the code evolved? I ask because covenant proposals seem to split along this line: OP_CHECKTEMPLATEVERIFY keeps the boolean pattern, while OP_TXHASH and OP_TEMPLATEHASH push a value onto the stack. Is there a known argument for why returning values to Script is a qualitatively bigger change than adding another boolean check? from Recent Questions - Bitcoin Stack Exchange https://ift.tt/YyILJoc via IFTTT