Skip to content

btc-stamps/tx-builder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

33 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

@btc-stamps/tx-builder πŸš€

npm version npm downloads npm package size JSR License: MIT Node.js CI codecov Maintenance Dependencies Status PRs Welcome

The Bitcoin transaction builder for Bitcoin Stamps and SRC-20 metaprotocols

Build Bitcoin transactions with native support for Bitcoin Stamps, SRC-20 tokens, Ordinals protection, and extensible metaprotocol support.

Installation β€’ Quick Start β€’ Examples β€’ Documentation β€’ API Reference


🎯 Why tx-builder?

@btc-stamps/tx-builder is the only transaction builder with first-class support for Bitcoin Stamp metaprotocols. This can be extended to support other metaprotocols like Runes or BRC-20.

✨ Key Features

  • πŸ–ΌοΈ Bitcoin Stamps: Complete Bitcoin Stamp metaprotocol support
  • πŸͺ™ SRC-20 Tokens: Full lifecycle support (deploy, mint, transfer)
  • πŸ›‘οΈ UTXO Protection: Automatic protection of Ordinals, Inscriptions, Stamps & Counterparty assets
  • ⚑ Smart Selection: 6 UTXO selection algorithms with optimization
  • πŸ”Œ Zero Config: Works out-of-the-box with reliable defaults
  • 🌳 Tree-Shakeable: Optimized for modern bundlers with sideEffects: false
  • πŸ“¦ Lightweight: Minimal dependencies, maximum performance
  • πŸ§ͺ Battle-Tested: Comprehensive test suite with 430+ tests
  • πŸ”’ Type-Safe: Full TypeScript support with detailed types

πŸ“¦ Installation

Node.js / TypeScript

npm install @btc-stamps/tx-builder
# or
yarn add @btc-stamps/tx-builder
# or
pnpm add @btc-stamps/tx-builder

Deno

import { TransactionBuilder } from 'npm:@btc-stamps/tx-builder@^0.1.6';

Requirements

  • Node.js >= 18.0.0 or Bun >= 1.0.0
  • TypeScript >= 5.0.0 (for TypeScript users)
  • Deno: Partial support via npm compatibility (see guide)

πŸš€ Quick Start

Bitcoin Stamps with UTXO Protection

import { BitcoinStampBuilder, SelectorFactory } from '@btc-stamps/tx-builder';

// Zero-config setup with automatic UTXO protection
const selectorFactory = SelectorFactory.getInstance();
const builder = new BitcoinStampBuilder(network, selectorFactory);

// Build stamp transaction - automatically protects:
// βœ… Ordinals (sats with inscriptions or runes)
// βœ… Bitcoin Stamps (all types)
// βœ… Counterparty assets (XCP, PEPECASH, etc.)
// βœ… SRC-20 tokens
const result = await builder.buildStampTransaction(utxos, {
  stampData: {
    imageData: imageBuffer,
    filename: 'my-stamp.png',
  },
  fromAddress: 'bc1q...',
  feeRate: 20,
  algorithm: 'protection-aware', // Optional: explicitly use protection-aware selection
});

SRC-20 Tokens

import { SRC20Encoder, SRC20TokenBuilder } from '@btc-stamps/tx-builder';

const encoder = new SRC20Encoder();

// Deploy new token
const deployData = await encoder.encode({
  p: 'SRC-20',
  op: 'DEPLOY',
  tick: 'KEVIN',
  max: '21000000',
  lim: '1000',
});

// Build transaction
const psbt = await new SRC20TokenBuilder().buildSRC20Transaction({
  encodedData: deployData,
  utxos: selectedUTXOs,
  changeAddress: 'bc1q...',
  feeRate: 15,
});

πŸ›‘οΈ Advanced UTXO Protection

Built-in protection for Ordinals, Inscriptions, Stamps, Counterparty assets, and SRC-20 tokens is automatic in all builders.

// For custom protection configuration:
const selector = selectorFactory.createSelector('protection-aware', {
  protectionConfig: {
    enableOrdinalsDetection: true, // Detect inscriptions and runes
    enableCounterpartyDetection: true, // Detect UTXO attached assets
    enableStampsDetection: true, // Detect UTXO attached stamps
  },
});

// Use with any builder
builder.setSelector(selector);

⚑ UTXO Selection Algorithms

Optimize transaction fees with multiple selection strategies:

import {
  AccumulativeSelector, // Fast selection
  BlackjackSelector, // Target exact amounts
  BranchAndBoundSelector, // Optimal selection
  WasteOptimizedSelector, // Long-term optimization
} from '@btc-stamps/tx-builder';

🌐 Network Support

Zero-configuration with reliable defaults:

// Works immediately - no setup required
const provider = new ElectrumXProvider(); // Uses blockstream.info, fortress.qtornado.com, etc.

Networks: Mainnet, Testnet, Regtest with automatic server selection


πŸ“š Learn More


πŸ§ͺ Testing

npm test              # Run all tests
npm run test:unit     # Unit tests only
npm run test:coverage # Coverage report

🀝 Contributing

Contributions welcome! See Contributing Guide for details.

Development Setup

# Clone the repository
git clone https://github.com/btc-stamps/tx-builder.git
cd tx-builder

# Install dependencies
npm install

# Run tests
npm test

# Build the package
npm run build

πŸ“„ License

MIT License - see LICENSE file.

πŸ™ Acknowledgments

Built on top of excellent libraries:

πŸ’¬ Support


GitHub: btc-stamps/tx-builder β€’ NPM: @btc-stamps/tx-builder β€’ JSR: @btc-stamps/tx-builder β€’ Telegram: @BitcoinStamps

Built with ❀️ by the Stampchain team

Star on GitHub

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages