dcrd/txscript
Dave Collins ce852eb852
blockchain: Do coinbase nulldata check locally.
This refactors the consensus code which extracts the null data from the
coinbase from txscript.ExtractCoinbaseNullData so that it is performed
directly in the validation code where it more properly belongs.

The only reason the extraction was previously done in txscript is
because it was not possible to parse scripts outside of it, but that is
no longer the case now that txscript offers an exported tokenizer for
that purpose.

The extraction code is ever so slightly more efficient now that it no
longer needs to be as generic since it now has direct knowledge of the
conditions that need to be handled.

Great care was taken to ensure the semantics are not changed while
refactoring the code and no additional tests are added in this commit
because all of the conditions and code paths are covered by the tests
recently added to the full block tests.

While here, also perform some related code cleanup in the function and
improve the error messages .

Since the txscript.ExtractCoinbaseNullData is no longer necessary, this
deprecates the function and releated error code and constant so they can
be removed in the next major version of txscript.

Finally, since this relies on the script tokenizer which is not yet in a
released version of the txscript module, bump the requirement to include
an as yet unreleased version of txscript to ensure the next time the
blockchain module is released, it will require a newer version of
txscript to be released first.
2019-06-19 13:26:33 -05:00
..
data txscript: Add remove signature reference test. 2019-02-14 14:10:12 -06:00
bench_test.go txscript: Add ExtractPkScriptAltSigType benchmark. 2019-03-26 14:51:55 -05:00
consensus_test.go multi: Break coinbase dep on standardness rules. 2018-05-08 12:49:40 -05:00
consensus.go blockchain: Do coinbase nulldata check locally. 2019-06-19 13:26:33 -05:00
doc.go txscript: Significantly improve errors. 2018-07-01 15:04:59 -05:00
engine_test.go txscript: Refactor engine to use raw scripts. 2019-03-26 14:55:39 -05:00
engine.go txscript: Remove checks for impossible conditions. 2019-04-01 14:34:51 -05:00
error_test.go txscript: Introduce zero-alloc script tokenizer. 2019-03-26 14:50:56 -05:00
error.go blockchain: Do coinbase nulldata check locally. 2019-06-19 13:26:33 -05:00
example_test.go txscript: Introduce zero-alloc script tokenizer. 2019-03-26 14:50:56 -05:00
go.mod multi: Update all modules for chaincfg v1.5.1. 2019-06-17 15:54:31 -05:00
go.sum blockchain: Do coinbase nulldata check locally. 2019-06-19 13:26:33 -05:00
log.go multi: deprecate DisableLog 2019-03-18 11:16:35 -05:00
opcode_test.go txscript: Make op callbacks take opcode and data. 2019-03-26 14:55:46 -05:00
opcode.go txscript: Make op callbacks take opcode and data. 2019-03-26 14:55:46 -05:00
README.md multi: Use https links where available. 2019-06-18 14:20:06 -05:00
reference_test.go txscript: Convert sighash calc tests. 2019-03-26 14:50:59 -05:00
script_test.go txscript: Cleanup opcode removal by data tests. 2019-03-28 16:56:33 -05:00
script.go txscript: Remove unused parseScriptTemplate func. 2019-03-26 14:55:45 -05:00
scriptbuilder_test.go txscript: Significantly improve errors. 2018-07-01 15:04:59 -05:00
scriptbuilder.go txscript: code cleanup 2019-02-08 09:18:53 -05:00
scriptnum_test.go txscript: Remove script num require minimal flag. 2018-07-02 12:14:15 -05:00
scriptnum.go txscript: Introduce constant for max CSV bytes. 2019-03-12 10:26:04 -05:00
sigcache_test.go multi: Remove unused secp256k1 sig parse parameter. 2018-07-04 12:27:34 -05:00
sigcache.go txscript: Remove checks for impossible conditions. 2019-04-01 14:34:51 -05:00
sighash_test.go txscript: Decouple and optimize sighash calc. 2018-05-01 08:51:41 -05:00
sighash.go txscript: Rename calcSignatureHashRaw func. 2019-03-26 14:55:42 -05:00
sign_test.go txscript: code cleanup 2019-02-08 09:18:53 -05:00
sign.go txscript: Rename calcSignatureHashRaw func. 2019-03-26 14:55:42 -05:00
stack_test.go txscript: Make PeekInt consistent with PopInt. 2018-07-02 12:14:37 -05:00
stack.go txscript: code cleanup 2019-02-08 09:18:53 -05:00
standard_test.go txscript: Add tests for atomic swap extraction. 2019-03-26 14:51:45 -05:00
standard.go txscript: Remove unused isOneByteMaxDataPush func. 2019-03-26 14:51:59 -05:00
tokenizer_test.go txscript: Introduce zero-alloc script tokenizer. 2019-03-26 14:50:56 -05:00
tokenizer.go txscript: Introduce zero-alloc script tokenizer. 2019-03-26 14:50:56 -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.