郑孝祥1558星评价
2020-10-27 11:47:39
比特币发布之初,币只可以通过一个公钥进行存储。这意味着,无论是谁,只要获悉了与该公钥匹配的私钥,就能够支配该公钥名下的比特币。
对于一个可靠和安全的系统来讲,免疫单点故障是(单点故障意味着,若此处出现故障,则全系统停止运转)一条基本的原则。而在这里,这条原则没有受到尊重,因为:只要私钥丢失或者泄露,即意味着失去比特币合法所有者的身份。
对此最早的解决方案,是一种叫做秘密片段的密码学方法。它将一条私钥分解成独立的几个部分(称为片段),一定数量的片段(少于总数)组合起来就可以重建原私钥。通过这种方式,一个私钥片段的丢失或者泄露并不会危害到比特币的安全。
然而,这种方法未能很好的与比特币软件兼容:你必须使用额外的工具来创造或者合并私钥片段。而且,为了使用比特币,你不得不将大量的片段放在一起,这意味着,免疫单点故障的初衷还是未能得到很好地实现。
其实解决方案一直包含在比特币核心代码之中,从一开始就存在,只是没有标准化:有两个脚本操作允许对普通的比特币公钥进行多重签名。这样的话,多重签名交易时需要验证的不同的私钥无需处于同一空间,相比于使用单一的私钥或者加密片段的方法,系统安全性可以得到很大的提升。
一个比特币改进协议(BIP11)将这种类型的交易标准化,并将秘钥的最大数量限定为3个。在2011年12月20日,BIP11被纳入比特币核心代码,2012年1月下旬,首个BIP11类型的交易出现在区块链上。
多重签名与向脚本哈希支付(P2SH)
尽管因为有了BIP11,多重签名在2012年早期已经成为可能,但是多重签名大规模接受却要感谢另一种类型的交易:向脚本哈希支付,或简称P2SH。这种新的交易类型,可以采用任意的脚本来验证交易。在此之前,只能严格的使用特定的脚本来验证交易。
由于可以使用任意的脚本,多重签名脚本中可以使用的秘钥的最大数量,从BIP11类型多重签名接受的3个,提升到P2SH脚本允许的15个压缩秘钥和相应签名。
最重要的是,P2SH增加了一种新的比特币地址模式。在BIP11之下,简单的向某人提供一个多重签名地址,与他进行交易,你必须精确的告诉对方如何给你的多重签名设置打币:秘钥分别是什么,需要多少才能验证交易,怎样发起多重签名……
P2SH将使用多重签名的难度降低到与使用单一公钥相当的水平上。使用这种新的技术,大量的在线钱包和软件迭兴,同时提升了比特币网络的安全性。