手把手教你打造 BRC20 Ordinal 交易市场:PSBT 实战全过程

·

关键词:BRC20、Ordinal、PSBT、比特币、bitcoinjs-lib、交易市场、数字资产、去中心化

随着比特币生态的持续扩张,BRC20Ordinal 协议让开发者第一次能够在比特币主链上发行与交易同质化代币与独特数字资产。本文将用通俗的中文,带你一步步完成一个基于 PSBT(Partially Signed Bitcoin Transactions)的去中心化 BRC20 Ordinal 交易市场 后端雏形,核心代码仅需 Node.js 与 bitcoinjs-lib 即可跑通。


一、背景速览:BRC20、Ordinal 与 PSBT

二、动手前的环境准备

  1. 安装 Node.js ≥ 18
  2. 初始化项目:

    mkdir ordinal-marketplace && cd ordinal-marketplace
    npm init -y
    npm install bitcoinjs-lib bip32 tiny-secp256k1
  3. 测试网或主网 Electrum / 本地节点 / API 任选其一,用于查询 UTXO、广播最终交易。
  4. 比特币交易结构、UTXO、见证脚本 有基础认识,否则先速览 UTXO 入门 再回来看效果更佳。

三、逐步实战:PSBT 构造、签名、广播

3.1 创建 PSBT 骨架

import * as bitcoin from 'bitcoinjs-lib';
const network = bitcoin.networks.testnet;   // 主网改成 bitcoin
const psbt = new bitcoin.Psbt({ network });

核心关键词已在第 1 行自然嵌入:bitcoinjs-lib、PSBT。

3.2 填入买方 UTXO(用作购买支付)

psbt.addInput({
  hash: buyerUtxo.txid,
  index: buyerUtxo.vout,
  witnessUtxo: {
    value: buyerUtxo.value,
    script: buyerScriptPubKey
  },
  tapInternalKey: Buffer.from(buyerPubkey, 'hex').slice(1, 33)
});

3.3 构建两笔输出

psbt.addOutput({ address: 'seller-address', value: 50000 });
psbt.addOutput({ address: 'buyer-address', value: 1 });
👉想跑起完整 Demo? 一键获取开源代码仓库并阅读注释

3.4 买卖双方离线签名

const buyerKey = bitcoin.ECPair.fromWIF('your-wif');
psbt.signInput(0, buyerKey);
psbt.validateSignaturesOfInput(0);

四、从单笔交易到完整交易场所

模块功能建议
1. Token Listing卖方上传 Ordinal ID、价格、可选买断/挂单
2. Escrow 托管使用 2-of-2 多签+时间锁解决信任问题
3. Order BookRedis 实时撮合,前端 WebSocket 推送
4. 用户界面Next.js 或 React+Vite,调 Metamask 整合 UniSat

所有订单逻辑在 后端 跑 PSBT 轮询签名,再把最终交易广播即可,用户无需暴露私钥。


五、FAQ:常见疑问一次说清

Q1:BRC20 能和以太坊 NFT 一样挂图片吗?

答:可以,但图片通常嵌入在 单个 Satoshi 的铭文中,文件体积受区块限制,需控制 < 4MB。

Q2:测试网没有真实 Satoshi,能正常调试 Ordinal 吗?

答:切换到 Signet 或使用 ord wallet --signet,Signet 支持完整铭文链。

Q3:为什么同样的脚本,发主网就失败?

答:主网 dust limit 不同、确认费须严格高于每小时 fee rate。提前用 bitcoin-cli estimateFee 或 API 获取。

Q4:PSBT 是否支持硬件钱包?

答:完全支持,硬件钱包通过标准 “ledger-btc-app” 导出待签名 PSBT; 返回签名后合并即可。

Q5:Ordinal 未来会跟 Taproot 升级冲突吗?

答:不会,Ordinal 本就基于 Taproot 的脚本路径;新版软分叉只会带来更低的手续费和更大的铭文空间。

Q6:如何保证流动性,避免“无人接盘”?

答:在首次部署时提供官方做市 中继撮合+链上流动性挖矿,并对前 30 天成交订单减免链上手续费。


六、结语:成为比特币原生应用先锋

在这段动手之旅中,我们完成了:

OrdinalBRC20 正在重塑“比特币只有转账”的刻板印象;从 NFT、游戏资产到票据、债券,只要想象力在线,Bitcoin Layer 1 都能跑。今天的代码片段也许只是 MVP,却可能是下一波 比特币原生 DeFi 浪潮 的起点。祝编码愉快!