P2SH 脚本 | P2SH Scripts
公钥脚本是由花费者创造的,花费者对脚本做了什么没有太多兴趣。但是收入者会更关心脚本的情况,如果他们有意愿,他们可以支付者使用一个特定的公钥脚本。不幸的是,自定义的公钥脚本不如一个比特币短地址相方便。而且,在BIP70支付协议被广泛讨论和实行之前,没有标准的方式来在各程序之间传递公钥脚本。
为了解决这个问题,pay-to-script-hash (P2SH), 支付到脚本哈希 交易在2012 被发明。P2SH使得花费者可以创建一个包含第二个脚本(兑换脚本)的hash 的公钥脚本。
下图展示了基本的几乎和P2PKH一样的,P2SH的工作流程。Bob 创建了一个附带任意Bob 想要的脚本的兑换脚本,hash 兑换脚本,然后把兑换脚本的hash 值提供Alice。Alice 创造一个包含Bob的兑换脚本hash 的P2SH类型的支出。
当Bob想要花掉这笔支出,他在签名脚本中 提供自己的签名和完整的(序列化)的兑换脚本。点对点网络确保了全兑换脚本的hash 值和Alice 放入她的input 的是相同的。如果有初始公钥,像处理兑换脚本一样执行:兑换脚本不返回false,则让Bob花费输出。
兑换脚本的hash 和公钥哈希有相同的性质,所以只需要一个用来区别标准地址的小改动,兑换脚本就可以转换成标准比特币地址格式。这使得获取P2SH 样式的地址和获取 P2PKH样式的一样简单。哈希运算还会对兑换脚本中的任何公钥进行模糊处理,因此P2SH脚本获得了和P2PKH 的公钥hash一样的安全性。