Currently, the secp256k1 package is rather tightly bound to ECDSA signatures which makes them the only real first-class citizen in the code. In an effort to make it clear the ECDSA is only one possible digital signature algorithms and to enable Schnorr signatures to also be made first class citizens, this decouples all code related to producing and parsing ECDSA signatures into a separate package under secp256k1 named ecdsa. This is a fairly large change in terms of the number of lines changed, however, the vast majority of the changes are mechanical to deal with the package name changes and moved code. The only real new code is documentation for the new package. The following is a high level overview of the changes: - Rename signature.go to ecdsa/signature.go - Rename signature_test.go to ecdsa/signature_test.go - Rename sigerror.go to ecdsa/error.go - Rename SignatureErrorCode type to ErrorCode - Rename SignatureError type to Error - Rename sigerror_test.go to ecdsa/error_test.go - Rename signature_bench_test.go to ecdsa/bench_test.go - Move signing-related examples from example_test.go to ecdsa/example_test.go - Update all moved code to reference secp256k1 types and funcs - Remove Sign from the secp256k1.PrivateKey type in favor of ecdsa.Sign - Add ecdsa/README.md to describe the new package - Add ecdsa/doc.go to provide package documentation via godoc - Move signing examples from README.md to new ecdsa/README.md - Update txscript and rpcserver to use the new package methods |
||
|---|---|---|
| .. | ||
| data | ||
| bench_test.go | ||
| consensus_test.go | ||
| consensus.go | ||
| doc.go | ||
| engine_test.go | ||
| engine.go | ||
| error_test.go | ||
| error.go | ||
| example_test.go | ||
| go.mod | ||
| go.sum | ||
| 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 | ||
| tokenizer_test.go | ||
| tokenizer.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.
-
Counting Opcodes in Scripts Demonstrates creating a script tokenizer instance and using it to count the number of opcodes a script contains.
License
Package txscript is licensed under the copyfree ISC License.