术语表 /交易与手续费
托管合约
- 托管合约是什么?
- 托管合约(escrow contract)把比特币锁定在一个交易双方中任何一方都无法单独花费的输出中,只有双方都同意,或由指定的第三方裁决时,才会释放。
通常的构造是三取二多重签名:买方、卖方和仲裁方各持一个密钥,三者中任意两方即可动用这笔资金。自2012年4月1日起,pay-to-script-hash 激活,比特币即可表达这种结构;自2015年12月的 BIP65 起,可以使用带时间锁的退款分支。大多数使用 escrow 一词的平台并没有做到这些。
运作方式
托管合约是写入币本身的花费条件,而不是记录在公司数据库中的承诺。
注资交易支付到一个脚本,该脚本指定三个公钥和阈值二。交易顺利时,仲裁方不会出面:买方和卖方两人签名完成释放,第三个密钥留在抽屉里。发生争议时,仲裁方审阅证据,并与获胜一方一同签名,这足以达到阈值。三个签名中只有一个,什么也动不了,因此仲裁方单独行动无法取走这些币。剩下的风险是串通,即仲裁方向作弊者提供第二个签名。
设计良好的合约还为无人签名的情形留有退出途径。OP_CHECKLOCKTIMEVERIFY 自区块388,381(2015年12月)起强制执行,使脚本可以带有一个分支:一旦达到约定的区块高度,这些币便只返还给注资方。与之相近的相对版本 OP_CHECKSEQUENCEVERIFY 则从注资确认之时起计算延迟,而不是指定固定的高度。没有其中之一,对方一旦不再回复邮件,资金就会被永久冻结。
代价是两笔交易,而且第二笔体积较大。三取二见证脚本本身就有105字节,因此花费一个隔离见证托管输出约需105虚拟字节,而普通单密钥输入为68。因此,在20 sat/vB 的费率下,为一笔交易注资并释放,总共接近6,000聪。托管适用于价值数百美元的交易,对零碎小额则毫无意义,这也是更好的设计还要求双方都锁定一笔保证金的原因:作弊的代价必须高于这笔交易的价值。
在哪里会遇到它
凡是两个陌生人用某物交换比特币而双方都不愿先行动的场合,就会出现托管合约。
点对点市场是最常见的情形,判断托管是否真实有一个简单的测试:索要地址。真正的合约会为一个普通的链上地址注资,您可以把它粘贴到区块浏览器中,在交出任何东西之前看着它确认,而它所锁定的脚本是公开的。如果您得到的只是账户页面上的一个余额,那么这些币就在平台自己的钱包里,您信任的是平台的偿付能力及其监管机构,而不是比特币。这一区别并非纸上谈兵:LocalBitcoins 曾以这种方式持有客户资金,并于2023年2月关闭,Paxful Holdings 则于2025年12月9日对联邦指控认罪。
更稳健的市场设计持有三把密钥中的一把,没有交易者的同意便无法动用任何资金。私下交易也采用同样的结构,由律师或双方都信任的工程师担任第三位密钥持有人。闪电网络也借用了这一结构:通道注资输出是二取二,任何一方都无法单独花费,由带时间锁的惩罚机制取代仲裁方。
托管合约 vs HTLC
托管合约需要有人来裁决僵局;哈希时间锁合约则无需任何人,因为裁判是一个秘密。HTLC 会自动支付给在截止时间前披露正确原像的一方,这只有在交易的两半都位于能够校验同一哈希的账本上时才行得通。银行转账无法锁在哈希之后,因此任何法币换比特币的交易最终都需要仲裁方或托管方。当交易的一方发生在链下时,就要用到托管合约。