Documentation ¶
Overview ¶
Package txsort provides stable transaction sorting.
Overview ¶
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
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func InPlaceSort ¶
func InPlaceSort(tx *wire.MsgTx)
InPlaceSort modifies the passed transaction inputs and outputs to be sorted according to the description in the package documentation.
WARNING: This function must NOT be called with published transactions since it will mutate the transaction if it's not already sorted. This can cause issues if you mutate a tx in a block, for example, which would invalidate the block. It could also cause cached hashes, such as in a dcrutil.Tx to become invalidated.
The function should only be used if the caller is creating the transaction or is otherwise 100% positive mutating will not cause adverse affects due to other dependencies.
Types ¶
This section is empty.