ts-sdk

Transaction Encoding

How Bitcoin transactions are serialized and deserialized in different formats within the BSV TypeScript SDK.

Encoding Formats

The SDK supports multiple transaction encoding formats:

Raw Transaction Format

Standard Bitcoin transaction serialization:

import { Transaction } from '@bsv/sdk'

// Serialize to hex
const txHex = transaction.toHex()

// Deserialize from hex
const tx = Transaction.fromHex(txHex)

BEEF Format

Bitcoin Extras Extension Format for efficient data exchange:

// Serialize to BEEF
const beefHex = transaction.toBEEF()

// Deserialize from BEEF
const tx = Transaction.fromHexBEEF(beefHex)

Binary Format

Raw binary data for maximum efficiency:

// Serialize to binary
const txBinary = transaction.toBinary()

// Deserialize from binary
const tx = Transaction.fromBinary(txBinary)

Serialization Structure

Standard Transaction

Version (4 bytes)
Input Count (varint)
Inputs (variable)
Output Count (varint)  
Outputs (variable)
Lock Time (4 bytes)

Input Structure

Previous TX Hash (32 bytes)
Output Index (4 bytes)
Script Length (varint)
Unlocking Script (variable)
Sequence (4 bytes)

Output Structure

Value (8 bytes)
Script Length (varint)
Locking Script (variable)

BEEF Enhancements

BEEF format adds:

Encoding Considerations

Size Optimization

Compatibility

Performance

Working with Encodings

Conversion Between Formats

// Start with a transaction
const tx = new Transaction()

// Convert between formats
const hex = tx.toHex()
const binary = tx.toBinary()
const beef = tx.toBEEF()

// All represent the same transaction

Validation

// Verify encoding integrity
const originalTx = Transaction.fromHex(hex)
const roundTripHex = originalTx.toHex()
console.log(hex === roundTripHex) // true

Use Cases

Network Transmission

Storage

Interoperability

Error Handling

Common encoding issues:

The SDK provides comprehensive validation and error reporting.

Next Steps