a6965d493f
The btclog package has been changed to defining its own logging interface (rather than seelog's) and provides a default implementation for callers to use. There are two primary advantages to the new logger implementation. First, all log messages are created before the call returns. Compared to seelog, this prevents data races when mutable variables are logged. Second, the new logger does not implement any kind of artifical rate limiting (what seelog refers to as "adaptive logging"). Log messages are outputted as soon as possible and the application will appear to perform much better when watching standard output. Because log rotation is not a feature of the btclog logging implementation, it is handled by the main package by importing a file rotation package that provides an io.Reader interface for creating output to a rotating file output. The rotator has been configured with the same defaults that btcd previously used in the seelog config (10MB file limits with maximum of 3 rolls) but now compresses newly created roll files. Due to the high compressibility of log text, the compressed files typically reduce to around 15-30% of the original 10MB file. |
||
---|---|---|
.. | ||
data | ||
consensus.go | ||
doc.go | ||
engine.go | ||
engine_test.go | ||
error.go | ||
error_test.go | ||
example_test.go | ||
log.go | ||
opcode.go | ||
opcode_test.go | ||
README.md | ||
reference_test.go | ||
script.go | ||
script_test.go | ||
scriptbuilder.go | ||
scriptbuilder_test.go | ||
scriptnum.go | ||
scriptnum_test.go | ||
sigcache.go | ||
sigcache_test.go | ||
sign.go | ||
sign_test.go | ||
stack.go | ||
stack_test.go | ||
standard.go | ||
standard_test.go |
txscript
Package txscript implements the bitcoin 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 bitcoin transaction scripts.
Bitcoin Scripts
Bitcoin provides a stack-based, FORTH-like language for the scripts in the bitcoin transactions. This language is not turing complete although it is still fairly powerful. A description of the language can be found at https://en.bitcoin.it/wiki/Script
Installation and Updating
$ go get -u github.com/btcsuite/btcd/txscript
Examples
-
Standard Pay-to-pubkey-hash Script
Demonstrates creating a script which pays to a bitcoin 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.
GPG Verification Key
All official release tags are signed by Conformal so users can ensure the code has not been tampered with and is coming from the btcsuite developers. To verify the signature perform the following:
-
Download the public key from the Conformal website at https://opensource.conformal.com/GIT-GPG-KEY-conformal.txt
-
Import the public key into your GPG keyring:
gpg --import GIT-GPG-KEY-conformal.txt
-
Verify the release tag with the following command where
TAG_NAME
is a placeholder for the specific tag:git tag -v TAG_NAME
License
Package txscript is licensed under the copyfree ISC License.