Skip to main content

TxParser

Overview​

License: MIT​

library TxParser

A library for parsing Bitcoin transactions. Provides functions for parsing, formatting, and transaction ID calculation

Structs info​

Transaction​

struct Transaction {
TxParser.TransactionInput[] inputs;
TxParser.TransactionOutput[] outputs;
uint32 version;
uint32 locktime;
bool hasWitness;
}

TransactionInput​

struct TransactionInput {
bytes32 previousHash;
uint32 previousIndex;
uint32 sequence;
bytes script;
bytes[] witnesses;
}

TransactionOutput​

struct TransactionOutput {
uint64 value;
bytes script;
}

Errors info​

UnsupportedVersion​

error UnsupportedVersion(uint32 version)

InvalidFlag​

error InvalidFlag(uint8 flag)

BufferOverflow​

error BufferOverflow()

Functions info​

calculateTxId​

function calculateTxId(bytes calldata data_) internal pure returns (bytes32)

Calculate transaction ID (hash without witness data)

Parameters:

NameTypeDescription
data_bytesThe raw transaction data

Return values:

NameTypeDescription
[0]bytes32The transaction ID

calculateWTxId​

function calculateWTxId(bytes calldata data_) internal pure returns (bytes32)

Calculate witness transaction ID (hash with witness data)

Parameters:

NameTypeDescription
data_bytesThe raw transaction data

Return values:

NameTypeDescription
[0]bytes32The witness transaction ID

parseTransaction​

function parseTransaction(
bytes calldata data_
) internal pure returns (TxParser.Transaction memory tx_, uint256 consumed_)

Parse a complete transaction from raw bytes

Parameters:

NameTypeDescription
data_bytesThe raw transaction data

Return values:

NameTypeDescription
tx_struct TxParser.TransactionThe parsed transaction
consumed_uint256Number of bytes consumed

formatTransaction​

function formatTransaction(
TxParser.Transaction memory tx_,
bool withWitness_
) internal pure returns (bytes memory)

Format a transaction into raw bytes

Parameters:

NameTypeDescription
tx_struct TxParser.TransactionThe transaction to format
withWitness_boolWhether to include witness data

Return values:

NameTypeDescription
[0]bytesThe formatted transaction bytes

isTransaction​

function isTransaction(bytes memory data_) internal pure returns (bool)

Checks whether bytes may be a valid Bitcoin transaction

Parameters:

NameTypeDescription
data_bytesThe raw transaction data

Return values:

NameTypeDescription
[0]boolWhether the transaction is valid

parseCuint​

function parseCuint(
bytes calldata data_
) internal pure returns (uint64 value_, uint8 consumed_)

Parse a compact unsigned integer (Bitcoin's variable length encoding)

Parameters:

NameTypeDescription
data_bytesThe byte calldata array containing the cuint in little-endian encoding

Return values:

NameTypeDescription
value_uint64The parsed integer value
consumed_uint8Number of bytes consumed

formatCuint​

function formatCuint(uint64 value_) internal pure returns (bytes memory)

Format an integer as a compact unsigned integer

Returns bytes in little-endian encoding

Parameters:

NameTypeDescription
value_uint64The integer to encode

Return values:

NameTypeDescription
[0]bytesThe encoded bytes