[color=rgba(0, 0, 0, 0.882353)] [color=rgba(0, 0, 0, 0.560784)][color=rgba(0, 0, 0, 0.882353)]作者:Vitalik Buterin 翻译:宋欢平 [color=rgba(0, 0, 0, 0.882353)]译者注:长铗和朗豫两位技术专家已经在微博抨击了素数币。请关注他们微博学习。我仅仅是翻译,欢迎抨击。
[color=rgba(0, 0, 0, 0.882353)]比特币的支持者往往掩饰这样一个事实:比特币的挖掘算法几乎没有现实价值。问题的本质是这样的:为了往blockchain添加一个新的比特币块,矿工必须进行“工作量证明”,以寻找一个很难找的数字,找到了就是有效的验证。从本质上讲,工作量证明是矿工花时间产生块的证明,是比特币安全的重要组成部分。如果没有这个工作量证明,攻击者可以容易的伪装成具有数百万比特币的节点,并以这种方式严重损害比特币的交易机制。典型的“重复消费”诈骗,就是在向商家支付后,把钱又发送给了自己,然后创建一个虚假的共识,即第二次交易发生在第一次交易前,从而剥夺了商家的钱。工作量证明解决了这个问题,“伪装成百万比特币的节点”成本非常高。然而,让人不舒服的是比特币的工作量证明(SHA256算法)并没有潜在的价值,比特币的工作量证明表面上看就是在浪费电而已。
[color=rgba(0, 0, 0, 0.882353)]人们一直认为,其实我们可以做的更好。许多比特币新手建议挖掘算法可以参与SETI@home(译者注:SETI@home 是一项利用全球联网的计算机共同搜寻地外文明的科学实验计划,任何人都可以通过运行一个免费程序下载并分析从射电望远镜传来的数据来加入这个项目)或者floding@home(译者注:floding@home是哈佛大学的研究阿尔茨海默氏症,亨廷顿病、帕金森症和很多癌症的项目,任何人都可以运行他们的软件加入提供运算能力),这样的计算也将有助于人类治疗复杂的疾病或者寻找外星人。然而,问题是,比特币的挖掘算法需要的一个前提是算法能够被验证,而SETI@home的Folding@Home都不具备这个特性。眼下,SETI和floding中所有参与者都是志愿者,这意味着他们除了帮助项目达到目标以外没有别的目的。然而,如果这些网络和比特币的挖掘绑定,参与者将能够受利益驱使,不用再纠结计算产生的无用数据, [color=rgba(0, 0, 0, 0.882353)]素数币是第一个拿出可行的解决方案的基于工作量证明的加密货币。素数币的核心前提,放弃无用的哈希算法,而要求矿工找到素数长链来进行工作量证明。有三个特定类型的素数列:第一类坎宁安链,第二类坎宁安链,和双坎宁安链。 [color=rgba(0, 0, 0, 0.882353)]第一类坎宁安链的规则是,素数链中每个数都是前一个数的两倍减一。第一个长度为5的第一类坎宁安链包含以下5个素数: [color=rgba(0, 0, 0, 0.882353)]1531,3061,6121,12241,24481 [color=rgba(0, 0, 0, 0.882353)]第二类坎宁安链,素数链中每个数都是前一个数的两倍加一。第一个长度为5的第二类坎宁安链出现得更快,如下: [color=rgba(0, 0, 0, 0.882353)]2,5,11,23,47 [color=rgba(0, 0, 0, 0.882353)]最后,双坎宁安链的规则是:大小相差2的孪生素数,后一对的平均值是前一对的平均值的两倍。很容易理解,双坎宁安链具有偶数个数。第一个长度为6的双坎宁安链是: [color=rgba(0, 0, 0, 0.882353)]211049,211051,422099,422101,844199,844201 [color=rgba(0, 0, 0, 0.882353)]请注意,双坎宁安链本质上是第一类坎宁安链和第二类坎宁安链组合而成。每对的第一个数字组合正好是第二类坎宁安链,每对的第二个数字组合正好是第一类坎宁安链。
[color=rgba(0, 0, 0, 0.882353)]找到素数列有什么实际效用呢?电子前沿基金会提供55万美元价值的奖品给第一个发现数字长度超过100万,10万,亿和1亿的素数。目前前两个奖项已经被拿走。“大互联网梅森素数搜索”从1996年以来一直在寻找大素数,世界各地大学的数学家们都在参与。美国田纳西大学马汀分校为寻找素数是有用的提供了一系列说法:除了获得荣耀以外,在数论领域有很多副产品,激励计算机硬件开发,了解素数背后的工作机制,例如,能够深度预测素数间隔的素数理论,在用来寻找素数分布中得到使用。在这里,希望是,如果素数币能够大规模推广,人们能够更有效的找到坎宁安链和双坎宁安链,甚至可能突破性的找到这些数列出现的规律。
[color=rgba(0, 0, 0, 0.882353)]为了成为可行的加密货币,素数币需要一种微调工作证明难度的方式,否则随着技术日益普及和认可度越来越高,可能会导致新块创建太快而使区块链不稳定或交易时间延长。从原理上看,素数列出现的间隔本身就不稳定,找一个8位长度的素数列比找7位长度的难度要提升一百倍。一种选择是对长度进行奖励,但这将使验证变得困难。素数币提供的解决方案是基于费马测试的。费马测试是一种快速辨别素数的方法:以任意数字(通常为2)为底,以需要测试的素数为幂,计算结果再用来减去该素数和一个大数的乘积,看是否得到原来的数字。例如:
[color=rgba(0, 0, 0, 0.882353)]2^17-17*7710=2 [color=rgba(0, 0, 0, 0.882353)]2^23-23*364722=2
[color=rgba(0, 0, 0, 0.882353)]但是: [color=rgba(0, 0, 0, 0.882353)]2^21-21*99864=8
[color=rgba(0, 0, 0, 0.882353)]另一种稍好的公式是,以需要测试的素数减一为幂,采用如上的运算,看能否回到原来的数字。如果通过这个测试,证明它就是素数,而别的其他测试都挺费时间(唯一的例外是,3560运算后为375,但3561运算后为3(而561却不是素数),但素数较大是这样的例外变得很罕见)。素数币将P-1测试和欧拉-拉格朗日-立夫习兹的测试结合,使用类似的原则,来测试素性。所以,问题是,如何才能使用这个测试来创建间隔?也就是说,怎么区分7.2和7.5的素数链长?答案很简单:拿数列中第一个非素数,进行费马测试余数越小,分级长度越大。例如,我们的链2,5,11,23,47下一个值是95,依据上面使用的重复减法的过程计算后,余数是54,因此,链的长度为5+(95-54)/95=5.43。然而,1531……24481素数链的下一个值48961,费马余数为1024,所以链的长度为5+(48961-1024)/48961=5.97。为了一个为了使素数链可以成为有效的工作证明,它用小数表示的长度至少要和现在的难度想当。为写这篇文章时,这个参数在7.1上下浮动。
[color=rgba(0, 0, 0, 0.882353)]我们不希望工作量证明可以重复使用,素数币还增加了另一种限制。基于素数币的目的,对于双向链的起点被定义为前面两个数字的平均,对于单坎宁安链的的起点被定义为假想双向链存在前面两数字的平均。例如,上面两个单坎宁安链的起点分别是1530和3。这样限制是因为素数列起点必须能够被工作证明的区块哈希数整除。哈希函数从属性看,寻找特定的散列值的唯一途径只能是采用简单地尝试新的值直到得到结果。因此,得到有效的工作证明的方法就是针对已知哈希值的区块寻找素数列,这些素数列只有对特定的区块才有效。
[color=rgba(0, 0, 0, 0.882353)]素数币还增加了一些其他方面的创新:
[color=rgba(0, 0, 0, 0.882353)]平滑的难度调整: [color=rgba(0, 0, 0, 0.882353)]不同于比特币每2016个区块(大约两个星期)后调整其难度,以匹配每十分钟一个块的挖掘速度,素数币的难度调整更加平滑,采用每个块后调整其难度,挖掘量向目标总量以指数衰减的方式靠近。例如,如果网络哈希运算能力(或更确切地说,素数生成效率)突然增加一倍,下一个块难度比前面的增加0.02%,假设没有进一步增加运算力,一个星期后挖掘每个新块需要的工作会提高186.5%,两星期后提高198.2%。 [color=rgba(0, 0, 0, 0.882353)]非常快的确认 [color=rgba(0, 0, 0, 0.882353)]不同于比特币平均10分钟得到确认(实际差不多8分钟,因为难度在追赶运算能力),而素数币每分钟出一个新块。这就能更快速地进行安全的交易;比特币六个确认可能需要50分钟,但在素数币上仅需要6分钟。六个独立的块确认能够保证相当安全的阈值是由背后的数学原理保证的。所以素数币同样6个交易确认并没有降低安全度。
[color=rgba(0, 0, 0, 0.882353)]自我调节块奖励 [color=rgba(0, 0, 0, 0.882353)]比特币因为控制货币供应量的算法而著名,它保证最多只有2100万比特币,且将永远不会增加,并且设定挖掘的速度。素数币遵循不同的路径。每块释放的素数币(XPM)的数量总是等于999除以难度的平方,如果难度线性增加,总量最后会收敛。由于摩尔定律指出,计算能力指数增加,寻找素数列的难度以长度来衡量也是指数增加的,所以最后总量收敛是正确的。
[color=rgba(0, 0, 0, 0.882353)]素数币也有一些地方错过了较大的改进的机会。首先,自我调节的新块的奖励是更自然的模仿“黄金的稀缺性”。然而,在实践中,它是完全完全相反的。黄金在需求,导致一定程度上,供给是随着价格的增加而增加的;如果在黄金价格突破5000美元,采矿将成为有利可图的,之前没有盈利机会的挖矿设备也会投入,增加了新黄金的开采量,最终使得价格上涨乏力。而素数币而言,如果价格上升10倍,随着矿工的大量进入,难度也会跟着快速提升,导致新生产的币越来越少。因此,素数币不是像黄金学习增加固有的负反馈机制,却创建一个正反馈机制,使得波动变得更加剧烈。此外,素数币原本可以把它的难度指数调整算法设置一个更长的时间(比如经过两个月的调整达到86.5%的完成度)而不是采用一个星期。这个创新使得汇率上升时会产生更多的币,至少在某种程度上能够使得价格稳定。但遗憾的是至今没有一种货币试过这种想法。素数币,尽管它有了很多改进,却错过了成为第一的机会。
[color=rgba(0, 0, 0, 0.882353)]所有的一切,素数币认为自己会是一个非常有趣的实验。这是历史上第一次,我们有一个货币的挖掘算法除了保证交易安全,还有了一个有价值的附加功效。素数币,不像之前许多其他加密货币,只是在一些无关重要的地方来改善。如果没有比特币的大规模领先地位,素数币很可能是由于比特币的选择,让加密货币未来充满光明的潜力。 |