dcrd/txscript
Dave Collins ee5b56ba72
txscript: Implement CheckSequenceVerify
This modifies the script engine to replace OP_NOP3 with
OP_CHECKSEQUENCEVERIFY and adds a flag to selectively enable its
enforcement.

The new opcode examines the top item on the stack and compares it
against the sequence number of the associated transaction input in order
to allow scripts to conditionally enforce the inclusion of relative time
locks to the transaction.

The following is an overview of the changes:

- Introduce a new flag named ScriptVerifyCheckSequenceVerify to
  provide conditional enforcement of the new opcode
- Introduce a constant named OP_CHECKSEQUENCEVERIFY which has the same
  value as OP_NOP3 since it is replacing it
  - Update opcode to name mappings accordingly
- Abstract the logic that deals with time lock verification since it is
  the same for both the new opcode and OP_CHECKLOCKTIMEVERIFY
- Implement the required opcode semantics
- Add tests to ensure the opcode works as expected including when used
  both correctly and incorrectly
2017-09-21 15:58:48 -05:00
..
data txscript: Implement CheckSequenceVerify 2017-09-21 15:58:48 -05:00
consensus.go txscript: Implement CheckSequenceVerify 2017-09-21 15:58:48 -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: Implement CheckSequenceVerify 2017-09-21 15:58: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: Implement CheckSequenceVerify 2017-09-21 15:58:48 -05:00
opcode.go txscript: Implement CheckSequenceVerify 2017-09-21 15:58: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: Implement CheckSequenceVerify 2017-09-21 15:58: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: Revert upstream CSV merge. 2017-09-21 11:17:58 -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.