dcrd/txscript
Dave Collins 4fa0208d32
schnorr: Use specialized types when signing.
This modifies the function that produces signatures to use the
ModNScalar and FieldVal types instead of big ints and also fleshes out
the comments to include a reference to the signing algorithm specified
in README.md.

This is work towards eventually using the specialized types throughout.

While the primary focus of this change is not optimization since signing
happens infrequently enough that it is not in a performance hot path, as
can be seen from the benchmark below, it does have the effect of making
signing a bit faster.

The following benchmark shows a before and after comparison of producing
a typical signature:

benchmark       old ns/op    new ns/op    delta
-------------------------------------------------
BenchmarkSign   54270        52622        -3.04%

benchmark       old allocs   new allocs   delta
-------------------------------------------------
BenchmarkSign   34           20           -41.18%

benchmark       old bytes    new bytes    delta
-------------------------------------------------
BenchmarkSign   1809         1088         -39.86%
2020-04-06 16:37:39 -05:00
..
data multi: Correct typos. 2019-08-16 17:37:58 -05:00
bench_test.go txscript: Use dcrutil/v2. 2019-06-24 15:13:39 -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 multi: Correct typos. 2019-08-16 17:37:58 -05:00
engine_test.go multi: remove whitespace 2019-11-21 18:31:30 -06:00
engine.go txscript: Don't use GetScriptClass in consensus. 2020-02-13 15:45:07 -06:00
error_test.go txscript: Introduce zero-alloc script tokenizer. 2019-03-26 14:50:56 -05:00
error.go txscript: use errors api; require go 1.13+ 2020-04-04 07:12:01 -05:00
example_test.go secp256k1: Make private key independent type. 2020-02-10 22:40:34 -06:00
go.mod txscript: use errors api; require go 1.13+ 2020-04-04 07:12:01 -05:00
go.sum chaincfg: Start v3 module dev cycle. 2020-01-29 13:24:14 -06:00
log.go txscript: Remove DisableLog. 2019-06-24 15:13:30 -05:00
opcode_test.go txscript: Make op callbacks take opcode and data. 2019-03-26 14:55:46 -05:00
opcode.go secp256k1/ecdsa: Decouple ECDSA from secp256k1. 2020-03-28 13:32:04 -05:00
README.md multi: replace godoc.org with pkg.go.dev 2020-02-18 19:35:19 -06:00
reference_test.go txscript: use errors api; require go 1.13+ 2020-04-04 07:12:01 -05:00
script_test.go multi: remove whitespace 2019-11-21 18:31:30 -06:00
script.go txscript: Don't use GetScriptClass in consensus. 2020-02-13 15:45:07 -06:00
scriptbuilder_test.go txscript: use errors api; require go 1.13+ 2020-04-04 07:12:01 -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 multi: remove whitespace 2019-11-21 18:31:30 -06:00
sigcache_test.go secp256k1/ecdsa: Decouple ECDSA from secp256k1. 2020-03-28 13:32:04 -05:00
sigcache.go secp256k1/ecdsa: Decouple ECDSA from secp256k1. 2020-03-28 13:32:04 -05:00
sighash_test.go txscript: Decouple and optimize sighash calc. 2018-05-01 08:51:41 -05:00
sighash.go multi: Correct typos. 2019-08-16 17:37:58 -05:00
sign_test.go schnorr: Remove unused GenerateKey. 2020-03-20 14:01:08 -05:00
sign.go schnorr: Use specialized types when signing. 2020-04-06 16:37:39 -05:00
stack_test.go txscript: use errors api; require go 1.13+ 2020-04-04 07:12:01 -05:00
stack.go txscript: code cleanup 2019-02-08 09:18:53 -05:00
standard_test.go txscript: use errors api; require go 1.13+ 2020-04-04 07:12:01 -05:00
standard.go txscript: Remove unused isStakeOutput function. 2020-02-13 15:45:09 -06:00
tokenizer_test.go txscript: use errors api; require go 1.13+ 2020-04-04 07:12:01 -05:00
tokenizer.go multi: remove whitespace 2019-11-21 18:31:30 -06:00

txscript

Build Status ISC License Doc

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.