txsort

package
v0.0.0-...-986e42f Latest Latest
Warning

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

Go to latest
Published: May 25, 2018 License: ISC Imports: 4 Imported by: 0

README

txsort

Build Status ISC License GoDoc

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.

Installation and Updating

$ go get -u github.com/bitspill/floutil/txsort

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