比特币白皮书上有一段话,透漏了中本聪在比特币底层算法选择上的权衡和妥协,这种权衡和妥协或是比特币设计时的某种失策?中本聪的比特币白皮书有一节关于Disk Space的论述:
A block header with no transactions would be about 80 bytes, if we suppose blocks are generated every 10 minutes, 80Bytes*6*24*365=4.2MB per year, With computer systems typically selling with 2GB of RAM as of 2008, and Moore’s Law predicting current growth of 1.2GB per year, storage should not be a problem even if all the block headers must be kept in memory
中本聪的比特币白皮书中这段话很耐人寻味和思考:为什么特意提到没有Transaction的block header的区块大小?特意提到摩尔定律的增长,及利用RAM来保存所有Block headers没有问题,如果存在除比特币之外的其他很多种数字货币或Tokens,需要分布式存储吗?分布式存储有前途吗?
比特币在2009年设计时,架构于椭圆曲线数字签名算法ECDSA(Elliptical Curve Digital Siganture Algorithum)基础上,椭圆曲线数字签名ECDSA相比其他的数字签名算法,具有一个很大的优势:签名很小,只有70个字节左右。在没有交易的情况下,区块只有80个字节左右。
这种架构在椭圆曲线签名算法基础上的开源公链,因签名大小很小,所以可以做一些事情,比如10多年后的当今追求的TPS。如果签名大小不是70个字节,而是400字节,或8000字节,40000字节呢?
中本聪在选择椭圆曲线签名虽然因为ECSDA的签名很小很灵巧,但我相信在2009年中本聪面临一个尴尬的平衡:1994年椭圆曲线签名算法在理论上实际已经被破解。
1994年我大学毕业那年,麻省理工学院的数学家Peter Shor公布了和Ding’s Key Exchange一样著名的Shor’s Algorithum,该算法在理论上宣布椭圆曲线签名算法已经被破解。
一个已经理论上被破解的算法,至少不会再被雄心勃勃的数学家所研究。但实践破解和理论破解略有不同,ECDSA在实践上被破解需要三个条件:
- Shor‘s Algorithm。
- 暴露的公钥
- 可用的量子计算机
关于以上第二条可以再写一篇万字长文,关于第三条“可用的量子计算机”,在2009年的中本聪回顾历史,发现自20世纪80年代来,量子计算机从理论上到实践中近30年几乎没有突破性的发展。
因此中本聪判断:如果采用比椭圆曲线签名算法更大的其他签名,比如可加密也可签名的RSA,那么可能60年后比特币节点可能非常大,导致一般人不能下载全节点。
而采用签名最小的椭圆曲线签名,那么只要两个条件满足:
1, 绝不暴露公钥
2, 量子计算机不能实际使用
那么设计一个可以CPU挖矿超过60年的开源P2P现金,到底是采用签名大小更大的其他算法?还是采用签名最小的椭圆曲线签名呢?
中本聪是这样评估的,如果采用其他签名,如果不能缩小签名大小,那么60年左右可能不能再利用CPU挖比特币,以及RAM不能存储。
如果采用椭圆曲线签名,那么一定要提醒所有比特币用户,不能暴露公钥,以及量子计算机不能实用。
因此中本聪随后提醒比特币用户:
当你发送比特币时,应该每次都将你所有的比特币发送给对方时,将剩下的比特币发送到你的另外一个地址。即“每次发两地址”来使用比特币。这条建议并是中本聪防止量子计算机破解而建议用户养成的使用习惯。
同时,中本聪估计在100年内量子计算机应该不会达到可实用阶段。因为评估量子计算机的发展,以及建议用户习惯,同时为比特币超过140年使用考虑,中本聪选择了椭圆曲线签名。
张小龙说:中本聪,不是一个好的产品经理。
我说:成也椭圆,败也椭圆。