Standardness rules are not the same as consensus rules and it is important to keep clear separation between them, because standardness rules can and do change, while the consensus rules must not change without a specific vote, and even then, the old rules must be kept around for validation of all blocks prior to any changes introduced by a successful vote. Prior to this commit, the blockchain code which enforces the consensus rule that requires the second output of the coinbase transaction to contain the height of the block in a provably pruneable nulldata script push was relying on code in txscript/standard.go, which, as the name of the file suggests, is specifically intended for code related to standardness checks. This introduces a new function in the txscript package named ExtractCoinbaseNullData which does not rely on any of the code related to standardness checks and modifies the blockchain code accordingly to make use of the new function instead. It also removes the standardness-dependent GetNullDataContent function which is no longer used by anything. Finally, it adds tests in the txscript package to ensure the new function has the required semantics. |
||
|---|---|---|
| .. | ||
| data | ||
| bench_test.go | ||
| consensus_test.go | ||
| consensus.go | ||
| doc.go | ||
| engine_test.go | ||
| engine.go | ||
| error.go | ||
| example_test.go | ||
| log.go | ||
| opcode_test.go | ||
| opcode.go | ||
| README.md | ||
| reference_test.go | ||
| script_test.go | ||
| script.go | ||
| scriptbuilder_test.go | ||
| scriptbuilder.go | ||
| scriptnum_test.go | ||
| scriptnum.go | ||
| sigcache_test.go | ||
| sigcache.go | ||
| sighash_test.go | ||
| sighash.go | ||
| sign_test.go | ||
| sign.go | ||
| stack_test.go | ||
| stack.go | ||
| standard_test.go | ||
| standard.go | ||
txscript
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
-
Standard Pay-to-pubkey-hash Script
Demonstrates creating a script which pays to a Decred address. It also prints the created script hex and uses the DisasmString function to display the disassembled script. -
Extracting Details from Standard Scripts
Demonstrates extracting information from a standard public key script. -
Manually Signing a Transaction Output
Demonstrates manually creating and signing a redeem transaction.
License
Package txscript is licensed under the copyfree ISC License.