dcrd/dcrutil/txsort
2019-06-18 14:20:06 -05:00
..
testdata txsort: Implement stable tx sorting package. 2017-12-08 11:22:21 -06:00
doc.go txsort: Implement stable tx sorting package. 2017-12-08 11:22:21 -06:00
README.md multi: Use https links where available. 2019-06-18 14:20:06 -05:00
txsort_test.go txsort: Implement stable tx sorting package. 2017-12-08 11:22:21 -06:00
txsort.go txsort: Implement stable tx sorting package. 2017-12-08 11:22:21 -06:00

txsort

Build Status ISC License GoDoc

Package txsort provides stable transaction sorting.

This package implements a standard lexicographical sort order of transaction inputs and outputs. This is useful to standardize transactions for faster multi-party agreement as well as preventing information leaks in a single-party use case. It is a modified form of BIP69 which has been updated to account for differences with Decred-specific transactions.

The sort order for transaction inputs is defined as follows:

  • Previous transaction tree in ascending order
  • Previous transaction hash (treated as a big-endian uint256) lexicographically in ascending order
  • Previous output index in ascending order

The sort order for transaction outputs is defined as follows:

  • Amount in ascending order
  • Public key script version in ascending order
  • Raw public key script bytes lexicographically in ascending order

A comprehensive suite of tests is provided to ensure proper functionality.

Installation and Updating

$ go get -u github.com/decred/dcrd/dcrutil/txsort

License

Package txsort is licensed under the copyfree ISC License.