txsort

package
v0.0.0-...-46f88e6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 24, 2023 License: ISC, ISC Imports: 4 Imported by: 0

README

txsort

ISC License

Package txsort provides the transaction sorting according to BIP 69.

BIP 69 defines 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.

The BIP goes into more detail, but for a quick and simplistic overview, the order for inputs is defined as first sorting on the previous output hash and then on the index as a tie breaker. The order for outputs is defined as first sorting on the amount and then on the raw public key script bytes as a tie breaker.

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

License

Package txsort is licensed under the Copyfree ISC License.

Documentation

Overview

Package txsort provides the transaction sorting according to BIP 69.

Overview

BIP 69 defines 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.

The BIP goes into more detail, but for a quick and simplistic overview, the order for inputs is defined as first sorting on the previous output hash and then on the index as a tie breaker. The order for outputs is defined as first sorting on the amount and then on the raw public key script bytes as a tie breaker.

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 based on BIP 69.

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 btcutil.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.

func IsSorted

func IsSorted(tx *wire.MsgTx) bool

IsSorted checks whether tx has inputs and outputs sorted according to BIP 69.

func Sort

func Sort(tx *wire.MsgTx) *wire.MsgTx

Sort returns a new transaction with the inputs and outputs sorted based on BIP 69. The passed transaction is not modified and the new transaction might have a different hash if any sorting was done.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL