web3_universal_bitcoin 0.1.1 copy "web3_universal_bitcoin: ^0.1.1" to clipboard
web3_universal_bitcoin: ^0.1.1 copied to clipboard

Bitcoin blockchain extension for Web3 Universal SDK. Supports P2PKH, P2SH, P2TR (Taproot) and PSBT.

dart_web3_bitcoin #

License: MIT

A robust Bitcoin extension for the Dart Web3 SDK. Brings Bitcoin's UTXO-based architecture and advanced scripting capabilities to the unified Dart API.

🚀 Features #

  • UTXO Management: Advanced logic for coin selection and change address calculation.
  • SegWit & Taproot: Support for modern Bitcoin address formats (Bech32/Bech32m).
  • PSBT Support: Partially Signed Bitcoin Transactions for multi-sig and air-gapped flows.
  • Lightning Ready: (Planned) Primitives for Lightning Network payment channels.

Usage Flow #

sequenceDiagram
    participant U as User
    participant C as BtcClient
    participant S as UTXO Selector
    participant B as TxBuilder
    participant W as Wallet
    U->>C: sendBtc(to, amount)
    C->>S: fetch unspent outputs
    S-->>C: selected UTXOs
    C->>B: build PSBT
    B-->>C: unsigned PSBT
    C->>W: sign_psbt()
    W-->>C: signed TX
    C-->>U: Broadcasted Hash

🏗️ Architecture #

graph TD
    User[Send BTC] --> CoinSelect[UTXO Selector]
    CoinSelect --> TxBuilder[Transaction Builder]
    
    subgraph Scripting [Output Types]
        P2PKH[Legacy]
        P2SH[Nested]
        P2WPKH[Native SegWit]
        P2TR[Taproot]
    end
    
    TxBuilder --> Scripting
    Scripting --> FinalTx[Signed Bytestream]

📚 Technical Reference #

Core Classes #

Class Responsibility
BtcClient High-level client for interacting with Bitcoin nodes or explorers.
Utxo Represents an individual unspent transaction output.
Psbt The standard format for sharing unsigned/partially signed data.
BtcAddress Comprehensive support for all Bitcoin address prefixes.

🛡️ Security Considerations #

  • Fee Sniper Protection: Use RBF (Replace-By-Fee) settings cautiously; the SDK enables RBF by default for flexibility.
  • Change Address Leakage: Always use a new change address for every transaction to maintain user privacy (BIP-44 compliance).
  • Dust Limit: Ensure your outputs are above the network dust limit (e.g., 546 satoshis) to prevent transaction rejection.

💻 Usage #

Building a SegWit Transaction #

import 'package:dart_web3_bitcoin/dart_web3_bitcoin.dart';

void main() async {
  final btc = BtcClient();
  final wallet = BtcWallet.fromMnemonic('...', type: AddressType.p2wpkh);

  final tx = await btc.buildTransaction(
    to: 'bc1q...',
    amount: 100000, // 0.001 BTC
    feeRate: 25,    // sats/vbyte
    signer: wallet,
  );
  
  print('Bitcoin Tx Hash: $tx');
}

📦 Installation #

dependencies:
  dart_web3_bitcoin: ^0.1.0
0
likes
140
points
4
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Bitcoin blockchain extension for Web3 Universal SDK. Supports P2PKH, P2SH, P2TR (Taproot) and PSBT.

Homepage
Repository (GitHub)
View/report issues

Topics

#web3 #bitcoin #blockchain

License

MIT (license)

Dependencies

bitcoin_base, blockchain_utils, web3_universal_core, web3_universal_crypto, web3_universal_signer

More

Packages that depend on web3_universal_bitcoin