写在前面:
随着加密货币新周期的到来,矿工们已经迎来了春天,而摆在他们面前的,无非是挖哪个币,以及怎么挖才能获取更多收益的问题。是的,本周的学术内容,就是跟挖矿这件事有关啦。
而我们要分享的,是来自美国国家标准技术研究所(NIST)的一篇论文,其讨论了自私挖矿策略对比特币、莱特币、比特币现金(BCH)、达世币(Dash)、门罗币(Monero)以及大零币(Zcash)的影响。
而在硬核技术文章精选部分,我们还会看到基于可验证随机函数(VRF)的PoW方案设计、Optimistic Rollup、以太坊2.0验证者勒索攻击的内容。
另外,在过去的一周当中,比特币和以太坊也迎来了众多技术进展。
(图片来自:tuchong.com)
理论上,自私挖矿攻击可以让矿工获取超额份额的区块奖励,同时降低支付的整体安全性。关于这种恶意策略应用于比特币的研究,目前已经有很多了,但对该策略如何影响其他加密货币的关注却要少得多。
这是因为,自私挖矿是对加密货币难度调整算法(DAA)的一种攻击,因此在针对使用不同难度调整算法(DAA)的加密货币时,可能会产生截然不同的效果。
而在美国国家标准技术研究所(NIST)发布的新论文《基于多难度调整算法的自私挖矿收益率研究》中,研究者Michael Davidson和 Tyler Diamond对多个PoW加密货币的自私挖矿要求及收益率进行了评估,这些币种包括比特币、莱特币、比特币现金(BCH)、达世币(Dash)、门罗币(Monero)以及大零币(Zcash)。
原论文链接:https://eprint.iacr.org/2020/094.pdf
研究发现,考虑中的其他加密货币要远比BTC更容易受到自私挖矿的影响,此外,研究还表明,通过不诚实地报告区块时间戳,对于一些难度调整算法(DAA)而言,自私挖矿策略可以为非诚实矿工带来不成比例的收入,这要比他们通过诚实挖矿的收入高出2.5倍。
通常,当一个矿工开采一个新区块时,他们会将该区块广播给他们的对等节点,这样做目的是使该区块尽快传播到网络的其余部分,而矿工只有在自己的区块被接受之后才能获得区块奖励,因此,在通常情况下,迅速将任何新的区块提交给竞争者,是符合矿工最大利益的。
然而,在某些情况下,偏离策略将允许具有全网x%算力的矿工获得超过x%比例的区块奖励。
这一策略的工作原理是自私矿工广播其扣留的区块,然后迫使诚实矿工在这些区块上进行开采。
下图显示了自私矿工用来确定是否发布其区块的算法:
(图:最初的自私挖矿策略)
然而,仅此一点是不足以让自私挖矿的矿工盈利的,只要挖矿难度保持不变,那么使用自私挖矿策略的矿工就会遭受损失,当然,诚实矿工的损失会更为惨重,因此,在这种情况下,理性的参与者是不会使用自私挖矿策略的。
而只有在网络难度向下调整时,自私挖矿策略才可能会盈利。
下面的公式给出了自私挖矿矿工在拥有多少比例的算力时,其能够提高挖矿相对收入的情况:
如果γ =1/2,则当α ≥1/4时,自私挖矿是有利可图的,而如果γ = 0,则当α ≥ 1/3 时,自私挖矿是有利可图的。(其中α是自私矿工控制的总算力比例,而γ则是诚实矿工选择在自私矿工发布的区块上挖矿的比例)。
由于工作量证明(PoW)加密货币没有中央机构来确定谁可以挖矿,以及以什么速率进行挖矿,因此网络算力总量会随时间而发生变化。
然而,为了保持有计划的货币政策以及更好的用户体验,不管算力如何,都应该在可预测的时间内找到新的区块(例如,比特币的目标是10分钟的区块间隔)。而如果没有难度调整算法(DAA),算力的增加会使区块的发现越来越频繁,从而导致货币通胀率提高,并且使支付变得不那么可预测和安全。而难度调整算法(DAA)的作用是改变挖矿难题的难度,以适应算力的变化,以相对恒定的速度生成区块。
虽然难度调整算法(DAA)的主要目的是在算力波动的情况下,长期保持区块时间的一致性,以便执行加密货币的货币政策,但在其设计中,可能会考虑到其它各种因素。
例如,当算力保持不变时,难度调整算法(DAA)应避免突然的难度变化,阻止算力和难度之间的反馈产生剧烈的振荡,并避免新区块之间出现异常的长间隔。
在分布式系统中,要保持精确的时钟是一个具有挑战性的问题,而相对准确的计时,则是难度调整算法所需要用到的。
一些加密货币具有不同的时间戳规则,但这里研究的规则大致是相同的。节点关心的时间有三个概念:系统时钟时间、区块时间戳以及网络调整时间。当节点连接时,它们会各自向对方发送一个时间戳。而门罗币是这项研究当中唯一不使用网络调整时间的加密货币。
由于区块时间戳是节点可客观达成一致的唯一时间,因此它是在难度调整算法(DAA)计算中使用的时间戳。有两个规则可确定节点是否会根据其时间戳将区块视为有效;
区块时间戳必须比网络调整时间早2个小时以下(或者在门罗币的情况下,则是系统时钟时间);
时间戳必须大于前11个区块的中间时间戳;
总之,这些规则应防止区块时间戳偏离实际时间超过几个小时,并为节点提供一个商定的时间概念,以便进行难度调整。
但是,如果难度调整算法(DAA)设计得不好(或实现得不好),恶意矿工就可能策略性地设置区块时间戳,以“迷惑”算法并迅速降低难度,从而更快地挖取到更多的奖励。
而这是一种被称为时间扭曲的攻击方式,并且已经有攻击者在几种加密货币上成功执行了,这使得这些币的产出较原计划大大提前了。
利用时间戳的另一种可能的攻击,是利用网络调整时间的时间劫持攻击。通过多次连接到目标节点并报告错误的时间戳,保持目标连接一半以上的攻击者,可以将受害者的网络调整时间向前或向后移动最多70分钟,这可用于强制目标节点临时认为区块是有效或无效的。
我们需要知道的是,自私挖矿策略在难度调整之前是无利可图的,这已经得到了Cyril Grunspan和Ricardo Pérez-Marco的论证,这也是为什么当前我们没有在比特币网络观察到自私挖矿攻击现象的原因之一。
而Nayak等人的研究表明,各种“顽固挖矿”策略可以提高矿工的利润,此外,将这些策略与日蚀攻击(eclipse attack)相结合,就可以提高收益,甚至反直觉地使被日蚀攻击的“受害者”受益。而Sapirshtein等人则利用马尔可夫决策过程进一步改进了自私挖矿,得到了最优的挖矿策略,并表明使用其策略,矿工可以将攻击所需的算力要求从25%降低到23.21%。
其他人则通过更详细的模型或现实环境来研究自私挖矿的性能。在这种环境下,自私的矿工往往会创建更大的区块,从而收取到更多的费用。Gervais等人将区块传播时间、区块大小、预期区块时间以及日蚀攻击的可能性纳入他们的模型中,并表明较大的区块大小以及较短的预期区块时间,会增加自私矿工的相对收入,但是,先进的区块传播技术可以最小化这一问题。
以上的研究,只考虑了单个自私矿工存在的模型,而其它研究则展开到多个自私矿工同时作用的情况。
例如,Francisco J Marmolejo-Cossío等人提出了多个自私矿工存在的情况下,加密货币的安全性反而会进一步退化,例如,当有两个独立的自私矿工,实现自私挖矿的算力门槛就可以下降到21.48%。
与比特币不同,以太坊的“叔块”也是提供奖励的,而这在理论上降低了自私挖矿的门槛,因为这些区块仍然会给自私矿工一些回报,使得战略风险降低了。根据Ritz和Zugenmaier的研究表明,通过观察到的以太坊叔块比例,其自私挖矿的盈利阈值为α=0.185±0.012。 而Niu和Feng的马尔可夫模型发现,在α>0.163的情况下,以太坊的自私挖矿是有利可图的,而在这个值以下,自私矿工的损失要低于他们在比特币上进行自私挖矿活动的损失。此外,由于叔块奖励,自私矿工和诚实矿工的收入都随α增加,从而可能导致以太币资产更高的通胀。
而在最近,Cyril Grunspan和Ricardo Pérez-Marco更正式地分析了以太坊对自私挖矿的敏感性,并提出了新的变体策略。
而其它与自私挖矿有关,但又存在区别的挖矿攻击也逐渐多了起来。
例如,Yujin Kwon等人提出的 FAW(Fork After Withholding)攻击,其涉及从攻击者所属的矿池中扣留工作量证明解决方案,然后仅在外部诚实矿工发布其解决方案时传播该解决方案,从而创建故意的分叉。这种策略总是有利可图的,实际上它就是大矿池攻击小矿池的一种方式。Coin-hopping则是另一种攻击方式,攻击者从一个币跳至另一个币,让诚实矿工去面对更高难度的链,然后当难度降低时又转回来,这使得攻击者矿工能以尽可能低的成本挖矿。
自私挖矿攻击方案的首次提出者Eyal和Sirer建议,当有两个相互竞争的链出现时,诚实矿工应该随机选择,而不是优先考虑第一看到的链。这相当于将γ设置为0.5,因此,如果α<0.25,自私挖矿将无利可图。
Heilman 则提出了一种名为 Freshness Preferred的技术,使用这种技术后,矿工并不是接受它们第一看到的区块,而是接受来自可信源最新时间戳的区块。他还建议对“不可伪造的时间戳”使用NIST随机beacon,这将自私挖矿的盈利门槛提高到了0.32。
ZeroBlock则试图通过让矿工在其本地链的末端附加“仿造”区块来防止自私挖矿,前提是它们在一定时间内没有看到新的区块。Zhang和Preneel则提出了一个向后兼容的防御措施,以防止自私挖矿,而该方案的主要缺点是,网络从分区中恢复需要花费更长的时间。
据悉,该论文的研究者提出了一个使用蒙特卡洛(Monte Carlo)方法的模拟器,以确立针对各种难度调整算法(DAA)的自私挖矿的盈利能力。
模拟器代码库链接:https://github.com/usnistgov/SelfishMiningSim
研究所选的难度调整算法(DAA),是当前加密货币市场市值靠前的币种所采用的,而由于以太坊使用的PoW共识机制是更复杂的,因此超出了研究范围。这里考虑的币种是BTC、BCH、LTC、XMR、Dash以及Zcash。
据悉,这一模拟器做了一些简化的假设:
持续的区块奖励;
恒定的算力(没有新矿工上线或消失);
区块没有传播延迟;
攻击发生后,加密货币的汇率依旧保持不变;
只有一个自私矿工(或矿池)存在;
此外,研究没有考虑诚实矿工在发现自私挖矿攻击时会做出何种反应。从理论上讲,诚实矿工可能会采取行动,以此降低自私挖矿者的效率。然而,现有的研究表明,当多个矿工同时应用这种策略时,自私挖矿往往更有利可图。
(需要强调的是,这里的结果是针对难度调整算法(DAA)本身,而不一定是指使用它的币,这是因为一些加密货币(比如BCH和Dash)还采取了其他缓解措施,而这些措施可能会使自私挖矿变得更具挑战性,或者收益会更低。)
研究结果显示,比特币矿工要实现自私挖矿,其需要掌握很大一部分算力才能够盈利,并且在盈利的时候,要比其它币种的算法拥有更低的TARG(时间调整相对收益)。
在拥有40%算力,且没有网络影响的情况下,自私矿工仍将是亏损的(超过10000个区块),而对于下一个最佳竞争对手门罗币(Monero),同样的自私矿工将其时间调整后的收入增加19.15%。然而,随着自私矿工网络影响力的增加,这种差距趋于缩小。而Dash采用的暗黑重力波(DGW)算法以及zCash的Digishield则是另一种情况,其中DGW算法特别容易受到时间戳操纵的影响,而BCH的D601算法则介于两者之间。
每种币默认参数的TARG结果
这篇论文比较了自私挖矿策略对各种难度调整算法的攻击效果。此外,研究还证明了一些算法要比其他算法要更容易受到自私挖矿攻击的影响,自私挖矿矿工应该将区块时间戳操纵作为其策略空间的一个新组成部分。
在今后的工作中,还有很多问题是需要研究的,例如,挖矿者如何确定最佳时间戳,是否存在比天真地将时间戳设置为与挖矿者系统时间的偏移量更高级的策略?
timejacking又是如何影响自私挖矿的盈利能力的?如果多个自私小矿工同时挖取一种加密货币,而时间戳操纵大大降低了盈利门槛,那会怎么样?
还有很多其它潜在的难度调整算法可以分析,包括简单的组合。最后,未来的研究工作还应该检查某些缓解措施的有效性,例如BCH和Dash目前所采用的措施。
洒脱喜简评:仅从难度调整算法来看,比特币似乎是最能抵抗自私挖矿攻击的,而实现盈利的要求(40%算力),使得这类攻击发生的可能性是非常低的,而其它PoW币种的自私挖矿则相对更容易实现,当然,一些币种已经采取了缓解措施,而它们的有效性仍然是有待确认的。
作者:Runchao Han (runchao.han@monash.edu),Haoyu Lin (chris.haoyul@gmail.com)
研究者提出了一种基于可验证随机函数(VRF)的挖矿构造,通过这种构造,矿工如果要开矿池,其前提是必须要将自己的私钥告知矿工(计算VRF_hash需要私钥),而这样的结果就是没有人会选择去开公共矿池,以此可实现one-cpu-one-vote的目标。
相比其它挖矿方案设计,理论上这种构造的去中心化程度要更高。
中文版链接:https://hackmd.io/rObi2JbHSUaFUumecjPAow?view
洒脱喜简评:尽管这样的设计不太可能被比特币和以太坊矿池所接受(因此无法被采用),但其设想是非常有意思的,彻底的去中心化是否会被参与者接受?矿池的存在是否具有必要性?这些都是尚未被验证过的问题。
原文作者:John Adler 译者:闵敏 & 阿剑
目前在以太坊的layer 2解决方案当中,rollup方案已经脱颖而出,而optimistic rollup 与 zk rollup则是其中的热门。
这篇文章解释了optimistic rollup 为何能以安全且可持续的方式实现扩容,同时又能保持去中心化的特性,并介绍了一些构建该方案的团队。
文章链接:https://www.8btc.com/media/554829
洒脱喜简评:依赖于欺诈证明的optimistic rollup方案,和依赖于零知识证明的zk rollup方案都是非常具有前景的layer 2解决方案,至于两者之间哪个更好,得看具体的应用,目前在研究这类方案的项目都是值得观察的。
这篇文章介绍了一种针对以太坊2.0验证者的攻击方式:使用验证者的私钥,攻击者可以生成可罚没的证明,并获得相应的“举报者”奖励。
黑客不需要立即索取报酬,因此,如果他发现以太坊2.0 客户端受到零日攻击,其可以悄悄利用在网络上找到的所有验证者。
而作为受害者,如果你发现自己被黑客攻击,那么最好的策略就是尽快罚没自己,并索取举报者的报酬,不管怎样,质押的资金都是会丢失掉的。
尽管黑客的告密者奖励是有限的(大约0.05 ETH),但如果他能够黑掉几千个验证者,那么事情就会很有趣了。
此外,由于受害者面临的损失可能很高(1-32ETH),攻击者就可能会使用敲诈智能合约来增加利润。
原文链接:https://ethresear.ch/t/trustless-validator-blackmailing-with-the-blockchain/6922
洒脱喜简评:如果参与者对保护自己的私钥没有足够的信心,那么他们最好还是不要当验证者,而如果对自己是非常有信心,那么你可以忽略掉这一研究。
OP_CHECKTEMPLATEVERIFY (CTV) 研讨会:如果采用这一提议软分叉,用户将能够使用一个新的CTV操作码来创建契约(covenant),这种操作码有几种可能的应用,其中最值得关注的是保险库和压缩支付批处理。
Eclair 升级到0.3.3版本,支持多路径支付,对trampoline支付的实验性支持及其它改进;
关于Taproot和tapscript的实验工具:Karl Johan Alm在Bitcoin Dev列表中发布了他的btcdeb工具的一个实验分支;
更多技术进展更新:https://bitcoinops.org/en/newsletters/2020/02/12/
以太坊1.X更新内容:
Nethermind v1.6.1 版本客户端发布;
Parity v2.7.2版本客户端发布;
以太坊2.0研发更新内容:
以太坊2.0更新一览;
以太坊2.0研究团队AMA活动;
本期的分享就到这里啦,下周再见~
声明:此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网站所提供的信息,只供参考之用。