This adds a new package under dcrutil named txsort which 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
29 lines
1.1 KiB
Go
29 lines
1.1 KiB
Go
// Copyright (c) 2015 The btcsuite developers
|
|
// Copyright (c) 2017 The Decred developers
|
|
// Use of this source code is governed by an ISC
|
|
// license that can be found in the LICENSE file.
|
|
|
|
/*
|
|
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
|
|
*/
|
|
package txsort
|