以太坊 NFT 市场可以依赖智能合约撮合,比特币上没有合约,铭文市场却同样做得到「资产不离开钱包的免托管挂单」,靠的是 PSBT(部分签名比特币交易)这个被 CoinJoin 项目发扬光大的半成品交易格式。理解 PSBT 怎么被改造成订单,就理解了铭文交易体验的全部独特之处:为什么挂单免费但取消要钱、为什么有些挂单显示「需手续费」而不用你签第二次、以及为什么铭文被盗案里受害者的签名记录看起来「什么都没授权」。
先补 PSBT 本身。比特币交易是所有输入签名的集合,多方协作时不可能让每个人从头签一笔最终交易——PSBT 就是一笔「带元数据的半成品交易」:输入、输出、找零都排好了,签名栏空着,任何一方可以在不破坏他人已签部分的前提下补充自己的信息(自己的输入、见证数据、脚本),最后拼成完整交易广播。铭文市场借用这个协作格式来定义订单。
挂单的实现:卖方把铭文所在的 UTXO 作为输入,构造一笔输出指向「成交时归买家」的脚本——通常是带条件的输出(例如买方支付的金额到达卖方地址、或时间窗之后资产退回卖方)。关键在于,卖方签名的只是「若这笔交易这样完成,我同意划转资产」,交易里买方要付的那部分钱此时并不存在,所以资产此刻仍是卖方持有,没挂进任何合约或金库。这份半成品以订单形式登记在市场的索引系统里(链下),想接单的买家补上自己的输入(付款)与签名,交易瞬间完整,广播成交。挂单动作本身可以完全不碰链,因此免费;取消订单则要走另一笔真实交易把资产改回原地址或改锁,所以取消要付链上费用——这是铭文市场与以太坊签名挂单「都能免托管、取消语义却不同」的原因。
时间锁是这套机制的安全阀。订单脚本普遍带一个有效期:到期没人买,资产自动回到卖家控制的路径。核验订单真伪的步骤因此围绕脚本展开:在市场的订单页或浏览器里,查看挂单 UTXO 的锁脚本结构,确认「买入条件」与「退回条件」两分支与页面描述一致;确认付款输出的收款地址确实是卖家地址,而不是第三方;确认时效字段的区块高度还没有过期。所有信息都在链上,任何人可验——这是比特币免托管挂单比链下签名订单更透明的地方:链下订单的真伪取决于私钥签名与平台对账,PSBT 订单的真伪直接读脚本。
安全边界要专门说。第一,签名的「无害错觉」:卖家签的半成品交易在语义上只是「条件满足则转这枚 UTXO」,钓鱼者会把 PSBT 伪装成「验证工具」「领取空投」流程让你签——签名即挂单,资产被锁定进攻击者构造的脚本(付款进他的地址、退回分支失效)。识别方法只有一个:用支持 PSBT 明细检视的钱包,逐输入逐输出看资金流向;陌生页面送来的半成品交易一律拒签。第二,订单时效与手续费博弈:PSBT 订单进入内存池后,若费率上涨,撮合服务方代付的 Gas 可能不足,交易长期不确认会让双方都以为「正在成交」,以链上最终状态为准核对。第三, Dust 与碎片风险:UTXO 模型下钱包零钱与铭文混排的钱包若管理不当,可能把带铭文的 UTXO 当零钱花掉,铭文钱包的 UTXO 隔离功能不是装饰,务必开启。
与以太坊模式对照收尾:以太坊用合约换来了功能丰富(竞价、捆绑、版税拆分),代价是授权攻击面;比特币用 PSBT 换来了「私钥从未交出、资产从未进金库」的简洁,代价是功能要靠脚本与索引器拼凑、订单数据基本靠平台索引维护。两种模式都免托管,风险画像完全不同——前者死在错误授权,后者死在错误签名。认清自己在哪种棋局里,才知道该防哪一手。本文为机制说明,不构成任何投资建议。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。