This adds a significant number of JSON-based tests with various transactions, scripts, and hash types, to ensure the signature hash calculated generates the expected hash in each case. It specifically tests some specialized transactions such as coinbase, ticket purchase, vote, and revocation. It also includes carefully created tests for all combinations of defined hash types along with triggering an error due to improper use of SigHashSingle. Finally, it also includes fuzz testing by providing a selection of 100 regular transactions with various numbers of inputs and outputs along with randomly generated (including undefined) signature hash types and input indexes. Due to the way that masking of the signature hash type works, a couple of the fuzzer tests also hit the improper use of SigHashSingle. The test data was generated as JSON in order to make it easier for developers of software in other languages and platforms that need to deal with generating signature hashes to consume and prove correctness of their implementation as well. |
||
|---|---|---|
| .. | ||
| data | ||
| 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.