BIP-0016 是由比特币社区提出的一项改进提案(BIP),该提案为比特币网络引入了一种新的交易模式 Pay-to-Script-Hash(简称 P2SH),它允许在交易输出中只存储脚本的哈希值,而不是完整的脚本代码。
我们知道,UTXO(Unspent Transaction Output)是比特币交易模型的核心机制。比特币网络会以 UTXO 为核心来记录链上的每一笔交易,并追踪所有比特币的流转情况。
在该提案(BIP-0016)之前,比特币交易通常会直接把完整的 “交易规则脚本” 全部写进交易中,比如,规定一笔 UTXO 需要有 2 个签名才能花费,或者该 UTXO 只能等到某个时间点才能花费。而在 BIP-0016 之后,交易中只会存储一段脚本规则的哈希值,等到 UTXO 真的需要被花费时,花费一方才需要提供完整的脚本及相应的签名来验证。这样一来,交易输出的数据就可以变得更小,地址表现形式也更加简洁(产生了以 3 开头的 P2SH 地址),而且还因为脚本逻辑可以在 UTXO 被花费之前暂时隐藏,在一定程度上也提升了隐私性和灵活性。
简单来说,该提案就像是改变了 “寄快递” 的规则。原本寄快递时,你需要把所有的收件规则都写在快递单上:比如,收件人需要在下午 2 点以后,凭他的身份证以及你设置的取件暗号,且需要持有 A 的签名。这样虽然规则很明确,但寄件时需要填写的信息非常多,而且因为所有人都能看到这些信息,你的隐私是被暴露的。
而使用 BIP-0016 的新规则后,你在寄件时只需要在快递单上写上一个由系统根据这些规则生成的 “取件柜编号”(如 3ABC),而具体的取件信息则被锁在柜子。当收件人来取快递时,他需要做两件事情:
- 先出示取件柜编号以及提供写有完整规则的纸;
- 然后按照规则出示正确的身份证、暗号和签名。
而系统的 “快递员” 则需要核实这些信息,如果条件都能匹配,那么就允许收件人取件。