You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在React JS中实现BRC-20代币跨钱包转账?

BRC-20铭文转账第二步(发送铭文)代码实现方案

核心逻辑

铭文转账第二步的本质是构建包含目标铭文UTXO的比特币交易,核心要求是铭文绑定的UTXO必须完整转出到接收方地址(不能拆分,否则铭文会丢失),同时处理手续费与找零逻辑。

核心代码实现(基于Unisat Wallet SDK和bitcoinjs-lib)

以下是简化可复用的代码片段,适配你提到的工具库:

const { bitcoinjs, Psbt } = require('bitcoinjs-lib');
const { getInscriptionUTXO } = require('@unisat/wallet-sdk');

// 1. 获取目标铭文对应的UTXO
// 替换为你的钱包地址、目标铭文ID
const inscriptionUTXO = await getInscriptionUTXO('你的钱包地址', '目标铭文ID');

// 2. 初始化PSBT(部分签名比特币交易)
// 测试网请替换为bitcoinjs.networks.testnet
const psbt = new Psbt({ network: bitcoinjs.networks.bitcoin });

// 添加铭文UTXO作为交易输入
psbt.addInput({
  hash: inscriptionUTXO.txid,
  index: inscriptionUTXO.vout,
  witnessUtxo: {
    script: Buffer.from(inscriptionUTXO.scriptPubKey, 'hex'),
    value: inscriptionUTXO.value
  }
});

// 添加铭文输出:必须完整转出铭文UTXO金额,不能拆分
psbt.addOutput({
  address: '接收方地址',
  value: inscriptionUTXO.value
});

// 处理手续费与找零:若铭文UTXO不足以支付手续费,需添加额外非铭文UTXO
// 示例:添加额外UTXO并计算找零
const extraUTXO = { /* 你的非铭文UTXO数据:txid、vout、scriptPubKey、value */ };
const fee = 1200; // 自定义手续费,建议参考当前网络费率
const changeValue = extraUTXO.value - fee;

psbt.addInput({
  hash: extraUTXO.txid,
  index: extraUTXO.vout,
  witnessUtxo: {
    script: Buffer.from(extraUTXO.scriptPubKey, 'hex'),
    value: extraUTXO.value
  }
});

psbt.addOutput({
  address: '你的钱包地址',
  value: changeValue
});

// 3. 使用私钥签名交易
// 替换为你的WIF格式私钥
const keyPair = bitcoinjs.ECPair.fromWIF('你的私钥WIF', bitcoinjs.networks.bitcoin);
psbt.signInput(0, keyPair);
psbt.signInput(1, keyPair); // 若添加了额外UTXO,需对应签名

// 4. 完成交易并广播
psbt.finalizeAllInputs();
const txHex = psbt.extractTransaction().toHex();

// 广播交易(通过Unisat API)
const broadcastRes = await fetch('https://api.unisat.io/v1/indexer/tx/broadcast', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ rawtx: txHex })
});
const result = await broadcastRes.json();
console.log('交易广播结果:', result);

关键注意事项

  • 铭文UTXO必须完整转出:铭文与UTXO绑定,拆分UTXO会导致铭文永久丢失,因此输出金额必须严格等于铭文UTXO的金额。
  • 手续费覆盖:如果铭文UTXO的金额不足以支付手续费,必须添加额外的非铭文UTXO作为输入,不能从铭文UTXO中扣除手续费。
  • 网络适配:注意区分比特币主网与测试网,代码中的network参数需对应调整。
  • 签名权限:确保你持有铭文UTXO对应的私钥,否则无法完成交易签名。

参考资源(中文翻译)

  • bitcoinjs-lib:比特币JS开发工具库,用于构建、解析、签名比特币交易
  • Unisat Wallet SDK 发送铭文模块:Unisat官方钱包SDK中处理铭文转账的核心实现代码
  • BRC-20实验文档:BRC-20铭文体系的实验性技术指南
  • Unisat开发者服务:创建BRC-20转账的官方API文档

内容的提问来源于stack exchange,提问作者sachin singh jagawat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 04:33:27