1703868950
1703868951
1703868952
1703868953
图10.5 共同挖矿
1703868954
1703868955
注:图中显示了比特币和另类币的区块链,以及它们之间的相互作用。
1703868956
1703868957
相反,每个有效的另类币都是比特币挖矿的结果,但是在所有满足另类币的挖矿算法结果中,只有30%能达到比特币的要求。对于另外70%满足另类币要求却无法满足比特币要求的区块,另类币的网络需要验证这些区块是否真的符合解决挖矿的谜题。最直接的方法是向比特币相邻区块和另类币区块进行广播。更聪明的方法,是只广播比特币相邻区块的标题部分和比特币区域中包含币基交易的二进制证明。
1703868958
1703868959
虽然很罕见,另类币的谜题也可能比比特币更难。由于大部分另类币希望产生区块的速度要快于每10分钟一个,这种情况不常见。当然如果希望放慢速度的话,也很容易做到。这种情况下,你就会看到有些矿工挖到比特币,希望这些也能成为另类币,但是部分比特币区块,在另类币网络中,由于达不到更高的难度要求而被拒绝。
1703868960
1703868961
最后需要指出,任意数量的另类币都可以同时和比特币共同挖矿,每个矿工都可以自由选择任意另类币共同挖矿。在这样多种另类币组合共同挖矿的情况下,币基交易的输入脚本本身就是一个指向多种另类币的二叉哈希树结构。注意这种结构的复杂性,因为确认包含另类币交易需要确认以下几点:(1)二叉哈希树包含这个另类币的证明;(2)二叉哈希树证明包含币基交易输入脚本,而且里面包含另类币的哈希值;(3)二叉哈希树证明比特币区块或者附近区块有币基交易的输入脚本。
1703868962
1703868963
共同挖矿和安全
1703868964
1703868965
共同挖矿是一把双刃剑。正如本书讨论过的,它可以使一个另类币更易实现自我增长的循环发展,通过增加总算力从而提高其抗攻击能力。这种情况下,想通过购买算力去破坏另类币的恶意竞争对手就需要付出巨大的前期投资。
1703868966
1703868967
另一方面,有人可能会认为这是一个安全假象。因为恶意竞争对手可以通过共同挖矿来产生比特币,收回一部分前期投资,同时,使攻击另类币的边际成本变得很小。把恶意竞争者看成规模很大的比特币矿工,也许更易于理解。事实上,前文提到的夭折的盘旋币,就是允许共同挖矿的。攻击者矿池Eligius和参与攻击者并不需要停止比特币挖矿就可以展开攻击。事实上,矿池的参与者甚至都不知道他们的计算资源被用于攻击另类币。
1703868968
1703868969
1703868970
另类币的挖矿谜题趋势
1703868971
1703868972
截至2015年,无论是否允许共同挖矿,很少有另类币使用和比特币一样的SHA-256开采难题。这表明,SHA-256算法被认为是有安全隐患的。Scrypt算法[1]是更受欢迎的选择,因为它使得比特币的ASIC在挖矿或者攻击另类币上变得毫无用处。不过,用于莱特币挖矿所制造的Scrypt ASIC矿机可用于攻击它们。
1703868973
1703868974
站在一个理性矿工的角度,当我们思考是否会共同挖矿时,我们会发现共同挖矿有很多安全问题。本书之前曾简略地谈到,只有当期望收益大于期望成本时,挖矿才有意义。对于比特币挖矿来说,成本主要是计算哈希值。但是对比特币矿工来说,决定是否和另类币共同挖矿并不会对哈希计算成本产生影响。额外的成本来自其他方面:计算、带宽、用于验证另类币交易的存储空间,以及需要使软件实时更新及在另类币出现硬分叉或者软分叉时,做出非正式决定。
1703868975
1703868976
这样的推理引出两个有洞察力的观点。第一,共同挖矿有很强的规模效应,因为所有的矿工所花费的成本相同,不管其哈希算力有多大。这与比特币有明显差异,因为在比特币体系中,成本和哈希算力成正比。对于小的低价值另类币,由于低的哈希算力,一个小的独立矿工公开挖矿的成本超过了回报,因此其无法获利。截至2015年,通过挖另类币获得的收入只占了比特币收入的很小一部分。这预示着,与比特币体系比,共同挖矿的另类币将会更具中心化。
1703868977
1703868978
有预测指出,大部分矿工会选择外包来对他们的交易进行验证。另类币规模越小,矿工就越有动力去找外包。最简单的办法就是加入比特币矿池。因为矿池通常替代矿工进行运算。矿池管理员验证比特币和另类币区块交易,收集添加包含另类币的比特币区块。矿工只需专注于解决挖矿谜题并找出需要的数值。这个预测与实际非常贴近。比如,G池(GHash.IO), 曾经最大的比特币挖矿池,同时允许对域名币、IX币(IXCoin)和Dev币(DevCoin)共同挖矿。这些也同时成为最受欢迎的共同挖矿另类币。
1703868979
1703868980
第二个观点,从经济学的角度讲,也许更加让人担心安全性而不是挖矿能力太集中。如果矿工的主要成本是工作量证明,在这种模式设计下,矿工是无法作弊的。在哈希函数的安全性保障下,挖矿没有捷径,并且其他矿工很容易并且也愿意去验证工作量证明。但是如果主要成本变成交易验证时,以上两个假设就不成立了。矿工倾向于假设他们收到的交易都是有效的,并不对这个交易做任何其他验证。而且,矿工如果要去验证一个区块及其交易,其工作量就和挖矿一样。因此,可以预期对于小的共同矿工,他们有动机跳过验证环节。由于存在不验证的矿工,攻击变得更加容易,因为一个恶意的矿工可以创造一个区块,让其他矿工对哪条是最长的有效区块链产生争议。
1703868981
1703868982
简而言之,共同挖矿在解决一个安全问题的同时,却也产生其他多个问题,部分原因是共同挖矿和单独挖矿在经济收益上有重大差别。总体来说,考虑到挖矿攻击,共同挖矿对一个新的另类币是否是一个好主意还很难说清。
1703868983
1703868984
[1]Scrypt是由著名的FreeBSD黑客Colin Percival为他的备份服务Tarsnap开发的。Scrypt不仅计算所需时间长,而且占用的内存也多,使得并行计算多个摘要异常困难,因此利用rainbow table进行暴力攻击更加困难。scrypt没有在生产环境中大规模应用,并且缺乏仔细的审察和广泛的函数库支持。——译者注
1703868985
1703868986
1703868987
1703868988
1703868990
区块链技术驱动金融:数字货币与智能合约技术 10.5 不可分割的交叉链互换
1703868991
1703868992
在比特币体系里,在不同个体或群体之间,达成一项交换货币或资产的交易很直接。这就是第6章里谈到的合币的原理。合币也可以用来交易智能资产,第9章简要提到,第11章会再进一步讨论。本章前面谈到的在域名币中出售域名也是基于同样的原理。
1703868993
1703868994
但是前面所有的例子中,即便涉及不同的资产,交易也都是限制在单一的区块链里。一般来说,一个另类币的交易和另外的其他另类币的交易历史没有任何关系也无法相互参考,这是一个基本的无法跨越的限制。那么,是否有其他办法可以互换不同的货币?比如,如果爱丽丝想卖掉a个另类币给鲍勃,换得鲍勃的b个比特币,他们可以把这项交易做成是单一且无法分割的形式吗?初看起来好像不太可能,因为无法强迫不同体系的区块链同时发生相关的交易。如果其中一个人,假设是爱丽丝,先执行交易,有什么办法可以阻止鲍勃不遵守承诺呢?
1703868995
1703868996
有个聪明的办法可以做到,这用到了密码学的承诺和锁定时间存储,这是两个我们已经讨论过的技术。图10.6描绘了这个协议。暂时先假设两个区块链里的区块是按固定步骤轮流产生的,每个时间单位产生一个区块。T代表协议流程的开始时间。
1703868997
1703868998
1703868999
[
上一页 ]
[ :1.70386895e+09 ]
[
下一页 ]