How Bitcoin transactions are serialized and deserialized in different formats within the BSV TypeScript SDK.
The SDK supports multiple transaction encoding formats:
Standard Bitcoin transaction serialization:
import { Transaction } from '@bsv/sdk'
// Serialize to hex
const txHex = transaction.toHex()
// Deserialize from hex
const tx = Transaction.fromHex(txHex)
Bitcoin Extras Extension Format for efficient data exchange:
// Serialize to BEEF
const beefHex = transaction.toBEEF()
// Deserialize from BEEF
const tx = Transaction.fromHexBEEF(beefHex)
Raw binary data for maximum efficiency:
// Serialize to binary
const txBinary = transaction.toBinary()
// Deserialize from binary
const tx = Transaction.fromBinary(txBinary)
Version (4 bytes)
Input Count (varint)
Inputs (variable)
Output Count (varint)
Outputs (variable)
Lock Time (4 bytes)
Previous TX Hash (32 bytes)
Output Index (4 bytes)
Script Length (varint)
Unlocking Script (variable)
Sequence (4 bytes)
Value (8 bytes)
Script Length (varint)
Locking Script (variable)
BEEF format adds:
// 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
// Verify encoding integrity
const originalTx = Transaction.fromHex(hex)
const roundTripHex = originalTx.toHex()
console.log(hex === roundTripHex) // true
Common encoding issues:
The SDK provides comprehensive validation and error reporting.