dcrd/txscript
Dave Collins 11ae59977a
txscript: Introduce OP_SHA256.
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.
2017-09-14 11:33:48 -05:00
..
data txscript: Introduce OP_SHA256. 2017-09-14 11:33:48 -05:00
consensus.go txscript: Implement CheckSequenceVerify 2017-08-28 12:23:34 -05:00
doc.go blockchain: Rework to use new db interface. 2016-08-18 15:42:18 -04:00
engine_test.go multi: Separate tx serialization type from version. 2017-08-07 14:10:27 -05:00
engine.go txscript: Introduce OP_SHA256. 2017-09-14 11:33:48 -05:00
error.go blockchain: Rework to use new db interface. 2016-08-18 15:42:18 -04:00
example_test.go multi: Update DecodeAddress function signature 2017-07-21 23:41:24 -05:00
internal_test.go txscript: Introduce OP_SHA256. 2017-09-14 11:33:48 -05:00
log.go all: Remove seelog logger. 2017-06-20 10:58:10 -04:00
opcode_test.go txscript: Introduce OP_SHA256. 2017-09-14 11:33:48 -05:00
opcode.go txscript: Introduce OP_SHA256. 2017-09-14 11:33:48 -05:00
README.md multi: Update markdown in README files to match change in github parser. 2017-05-26 12:06:19 -04:00
reference_test.go txscript: Introduce OP_SHA256. 2017-09-14 11:33:48 -05:00
script_test.go txscript: Introduce OP_SHA256. 2017-09-14 11:33:48 -05:00
script.go txscript: remove unneeded API 2017-08-17 15:42:04 -04:00
scriptbuilder_test.go txscript: Expose AddOps on ScriptBuilder. 2016-11-18 12:58:00 -06:00
scriptbuilder.go travis: enable gometalinter (#603) 2017-03-08 15:44:15 -05:00
scriptnum_test.go txscript: Sync upstream makeScriptNum tests. 2016-05-17 16:34:03 -05:00
scriptnum.go Initial Decred Commit. 2016-02-07 14:00:12 -05:00
sigcache_test.go multi: Upstream chainhash abstraction sync 2016-11-16 12:48:40 -06:00
sigcache.go Merge in btcd '7f07fb1093dd80105d36d61c8fb8a16f6e9d9b29' 2016-09-23 14:40:27 -04:00
sign_test.go multi: Separate tx serialization type from version. 2017-08-07 14:10:27 -05:00
sign.go txscript: Expose AddOps on ScriptBuilder. 2016-11-18 12:58:00 -06:00
stack_test.go multi: Error descriptions are in lower case. 2017-09-08 18:03:59 +02:00
stack.go blockchain: Rework to use new db interface. 2016-08-18 15:42:18 -04:00
standard_test.go txscript: Force extracted addrs to compressed. 2017-08-02 00:34:35 +00:00
standard.go txscript: Implement CheckSequenceVerify 2017-08-28 12:23:34 -05:00

txscript

Build Status ISC License GoDoc

Package txscript implements the decred transaction script language. There is a comprehensive test suite.

This package has intentionally been designed so it can be used as a standalone package for any projects needing to use or validate decred transaction scripts.

Decred Scripts

Decred provides a stack-based, FORTH-like language for the scripts in the decred transactions. This language is not turing complete although it is still fairly powerful.

Installation and Updating

$ go get -u github.com/decred/dcrd/txscript

Examples

License

Package txscript is licensed under the copyfree ISC License.