This modifies the script engine to replace OP_UNKNOWN192 with OP_SHA256 along with a flag named ScriptVerifySHA256 to selectively enable its enforcement. The new opcode consumes the top item from the data stack, computes its SHA-256, and pushes the resulting digest back to the data stack. Since it requires an item on the data stack, execution will terminate with an error when the stack is empty. This behavior differs from OP_UNKNOWN192 which does not consume any elements from the data stack and therefore makes this is hard-forking change when interpreted with the new semantics due to the ScriptVerifySHA256 flag being set. Code to selectively enable the opcode based on the result of an agenda vote will be added in a separate commit. This also includes tests to ensure the opcode works as expected including when used both correctly and incorrectly. |
||
|---|---|---|
| .. | ||
| LICENSE | ||
| script_invalid.json | ||
| script_valid.json | ||
| tx_invalid.json | ||
| tx_valid.json | ||