dcrd/txscript
Dave Collins aad3f7c85b
txscript: Optimize conditional execution mem usage.
The existing implementation to handle conditional execution makes use of
a stack to track the state of each nested conditional.  It is already
fairly efficient in terms of execution costs since it only considers the
most recent conditional stack entry and makes use of pushing OpCondSkip
to essentially track the nesting depth in unexecuted branches, however,
using a stack is less efficient in terms of memory usage than is
actually necessary since there is no need to use a stack at all given
that all that is really needed to provide the necessary behavior is the
current conditional nesting depth and the depth at which branch
execution was disabled (if it has been disabled).

Given the above, this optimizes the txscript conditional execution logic
by replacing the condition stack with two int32 fields to track the
aforementioned cases and updates the conditional execution opcode and
logic accordingly.
2019-12-30 13:50:01 -06: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: Optimize conditional execution mem usage. 2019-12-30 13:50:01 -06:00
error_test.go txscript: Introduce zero-alloc script tokenizer. 2019-03-26 14:50:56 -05:00
error.go multi: Correct typos. 2019-08-22 10:20:03 -05:00
example_test.go txscript: drop chainec 2019-10-25 21:27:01 -05:00
go.mod txscript: Start v3 module dev cycle. 2019-10-24 20:48:43 -05:00
go.sum dcrutil: Start v3 module dev cycle. 2019-10-24 19:13:26 -05: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 txscript: Optimize conditional execution mem usage. 2019-12-30 13:50:01 -06:00
README.md build: Replace TravisCI with CI via Github actions. 2019-09-20 19:59:04 -05:00
reference_test.go multi: remove whitespace 2019-11-21 18:31:30 -06:00
script_test.go multi: remove whitespace 2019-11-21 18:31:30 -06:00
script.go multi: Correct typos. 2019-08-16 17:37:58 -05:00
scriptbuilder_test.go multi: remove whitespace 2019-11-21 18:31:30 -06: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 multi: Use secp256k1/v2 module. 2019-10-08 10:14:13 -05:00
sigcache.go multi: Use secp256k1/v2 module. 2019-10-08 10:14:13 -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 txscript: drop chainec 2019-10-25 21:27:01 -05:00
sign.go txscript: drop chainec 2019-10-25 21:27:01 -05:00
stack_test.go multi: Correct typos. 2019-08-16 17:37:58 -05:00
stack.go txscript: code cleanup 2019-02-08 09:18:53 -05:00
standard_test.go multi: remove whitespace 2019-11-21 18:31:30 -06:00
standard.go dcrutil: Start v3 module dev cycle. 2019-10-24 19:13:26 -05:00
tokenizer_test.go multi: Correct typos. 2019-08-16 17:37:58 -05:00
tokenizer.go multi: remove whitespace 2019-11-21 18:31:30 -06:00

txscript

Build Status ISC License GoDoc

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.