本文来自链闻,作者:DanningSu,编译:周恒宇,星球日报经授权转发。以太坊背后的本质是一个p2p网络结构,每个以太坊的参与者都是这个巨大结构中的一个节点。在这个分布式的网络中,每个节点都和其他节点相互连接,并且,为了保持整个区块网络的可持续发展,所有的节点都需要达成一致。其中一部分的节点实际上属于矿工们,他们的工作就是不断的贡献算力来确认接下来要上链的区块。为了增加挖矿的成功率并获得更高频次的回报,矿工们之间经常相互合作来汇聚他们的哈希算力,进行挖矿活动。这种哈希算力的组合就是我们所熟知的矿池。矿池巨大的算力会对整个区块链网络产生影响。近期的学术研究中都以各个矿池的哈希算力作为判断以太坊中心化的标准,但我们认为这种判断方式不仅把问题过于简化了,还会给对算力中心化的讨论带来一些分歧。我们希望带领读者深入了解目前各个矿池的运行状态,以及他们的算力能力。此外,我们还会通过分析矿池向矿工支付报酬的方式,深入了解以太坊上的算力分布情况。先说我们的结论,在以太坊生态中:矿池是中心化的吗?这个问题的答案是:「是的」,矿池本来就是高度中心化的组织;矿工们是中心化的吗?其实不是;此外,在以太坊网络中,无论如何都很难实现部分矿工所担心的攻击;不过,一个攻击者只需要统一全网1.5%最强大的节点,就能控制整个网络。且看我们的详细分析。挖矿究竟有哪些方式?
让我们从普及最基本的知识开始。对于常规的个人矿工来说,一般有三种挖矿方式:1.自己挖矿矿工可以自己组织算力去挖矿。尽管在这种方式下矿工可以自己享有全部收益,但是对于只有一两台矿机的业余矿工,这种方式在现实中并不可行,因为在这些类似以太坊的热门区块链网络中,这种利用微弱算力的方式找到一个区块可能会花上几年的时间。这些矿工不得不面对来自大矿池以及有大量电力资源与算力资源的合作群体的算力竞争。这种方式只有一个好处,即矿工可以掌握挖矿中的所有流程。2.加入一个矿池矿工还可以通过加盟矿池的方式进行挖矿。通过把自己的哈希算力加入矿池的算力集合,矿工增加了自己认证一个区块的可能性。一旦矿池中的某个矿工发现并认证了区块,整个矿池中的矿工按照自己的算力贡献比例共同分享挖矿收益。3.「云挖矿」除了拥有自己的硬件去挖矿这种方式包括自己挖矿和矿池挖矿,矿工还可以从拥有自己矿机的那些矿工手里租用空闲机器挖矿。尽管需要向第三方支付费用,但是在这个过程中,云挖矿的矿工避免了在前期投入过多的购买与维护矿机的成本。我们研究所用的数据我们研究所使用的数据库包含了从2018年4月21日到28日一整周以太坊的区块数据,其中包含了以太坊的转账数据等。数据集整体状况结论一:以太坊矿池是中心化的吗?是的。为了佐证我们的分析,我们先来讲讲算力在所有的矿池之间是怎么分布的。如下图所示,在本周之内,前五名的矿池挖到了84%的新确认区块。所以从某种意义上来说,矿池本来就是高度中心化的组织。但其实在现实世界中,每个矿池都是相对独立的个体。一个矿池会包含所有为了提升挖矿能力而投入自己的挖矿设备的个体矿工的利益。所以,我们在分析中会深入矿池内部,来证明以太坊是如何实现去中心化这个目标的。以太坊矿池挖出区块占总体比重结论二:以太坊矿工们是中心化?其实不是上面的图给人第一印象是以太坊挖矿的算力是非常集中的。然而,正如前文所说,矿池本质上并不拥有大量的矿机,它实际上是通过集合许多个体的算力去挖掘新的区块。当我们从个体矿工的角度去看这件事的时候,我们会发现整件事并不像我们想象的一样。矿池向矿工支付报酬的最直接方式是直接返还收益。在这种情况下,收益直接从矿池账户中转到矿工的账户地址里。这种分配是经常使用的分配方式,而且分配数额可以由掌握矿池分配账户的矿工设定。有些情况下,这种报酬的支付不会直接从矿池的账户中发出,而是选择通过独立的账户被称作代理账户返还给参与挖矿的个体矿工们。但也有一些矿池使用不那么直接的支付方式:他们直接使用法定货币,把报酬支付给个体矿工。举个例子:我们前文提到的云挖矿就是这样支付报酬的,他们会把报酬打进整个挖矿过程的参与者的信用卡里。下面的表格列出了我们分析的时间段内,排名最高的几个矿池的状况。他们的挖矿收益大体上和他们挖掘的区块数量成正比。数据上的不符主要来自于支付过程的个性化以及时间上的延迟。我们会发现,表中最后那个叫「bitclubpool」的矿池支付的报酬明显和挖掘到的区块数量不成比例。Bitclubpool就是我们所说那种不会直接从矿池账户返还报酬给矿工的矿池这点我们可以从独立支付账户的数量上推断。我们认为这种操作报酬的方式非常的不透明,并且会降低矿工们对它的信任。下面的图像描绘了矿池向每个矿工支付报酬百分比的累计分布函数CDF。累计分布函数的图像主要说明的是样本的分布情况。曲线陡峭的地方说明,x轴上的这个数值附近是样本比较集中的区域,并在y轴上说明了在这个数值以下的样本占总体样本比例。该累计分布图像显示,向矿工小数额的报酬支付占了所有支付中的绝大部分。我们通过分析发现,前四大矿池给每个矿工支付的报酬平均只占他们总报酬的0.04%。得到占总报酬比例最大的报酬的矿工是「nanopool」的一个参与矿工,他能够收到矿池整体收益的3.7%,矿池如何向矿工们支付报酬?
我们在分析过程中观察到了矿池三种不同的报酬支付方式:1.直接在链上使用加密货币支付,这么做的有Ethermine、Ethfan、F2pool、nanopool等等矿池。特点:每笔支付金额很小,面对的支付账户众多大多数支付金额都小于1个ETH支付的账户所有者都是实际参与挖矿的矿工2.通过链上的代理账户支付报酬。比如以下这个账户就是链上的一个用于支付的代理账户0xb75d1e62b10e4ba91315c4aa3facc536f8a922f5特点:用于针对少量账户的大额支付每次转账平均向特定账户支付大概100个ETH账户是代理账户,直接支付给实际参与的矿工通过非链上账户,例如信用卡支付,如Bitclubpool大金额转账支付金额量大致是每笔1000ETH支付账户通常是矿池拥有者的个人账户下图是一张收到付款的矿工数量以及平均支付金额的散点图。其中包含了不同的支付方式,并做了相应的聚类。我们可以发现前五的矿池miningpoolhub,f2pool,ethfans,nanopool和ethermine都有一样的模式:大量的矿工以及小数额的支付。这说明他们直接向矿工支付报酬,这也符合矿池中矿工的去中心化结构。但从另外的角度来讲,「bitclubpool」是一个在图像左边顶端的异常点,这意味着「bitclubpool」只会向几个账户支付极大数量的报酬。这些账户并不从区块挖矿网络中收到他们的报酬,因为我们显而易见可以看到他们收到的35,173个ETH是远超过当周他们挖出的1124个区块的收益的。Bitclubpool的网站上说他们通过法定货币使用支票账户来支付报酬。我们认为Bitclubpool上大量的链上支付其实是向其他矿池拥有者的转账。同时,有迹象表明,Bitclubpool和bw在用挖矿来掩盖某些欺诈行为。此外,我们仔细探究了上图中临近Bitclubpool和bw的点。地址0x92e3f585ab699445fd7a809b5edf0c3dc88fb549下的支付模式和Bitclubpool以及bw类似。而上图中地址为0xb75d1e62b10e4ba91315c4aa3facc536f8a922f5的矿池支付也有一定特点。我们发现它每次支付报酬都价值约为100ETH,并且都转入同一个账户内。然后这个账户会用小于1ETH的额度将收益转入其他账户,有点类似于前几大矿池使用代理账户的做法。如果发动一次51%算力的攻击需要多少矿工?成千上万个
51%算力攻击是一个在区块链生态中经常流传的一个问题。当攻击者掌握了全网超过一半的哈希算力,他就能最终创造全网最长的一条链,这条记录信息的链完全属于他,甚至可能不包含任何一个其他矿工之前挖出的区块。因为最长的链总是被认为是最优公信力的那条,所以攻击者就有了以下的特权:控制区块认证哪些转移支付审查制度撤销稍短的竞争链引起双花和其他攻击引起许多负面影响我们收集了来此不同矿池的矿工信息,并按照他们调查当周收到的报酬,对他们做了排序,根据算力与收益的比例关系,我们可以判断他们掌握的算力大小。为了能够实现过半算力,一个攻击者必须尽力说服超过4484个矿工合作才能发起攻击;也就是说,至少4484个矿工统一恶意攻击才能颠覆整个以太坊网络,而不是表面上看到的3个矿池就能颠覆网络。然而,这排名前4484的矿工只占全网矿工按照支付地址计算的1.5%。下图说明了有297443名矿工掌握着剩下50%的算力。因此,从另外一个角度来讲,一个攻击者只需要统一全网1.5%最强大的节点就能控制整个网络。一旦实现了51%算力的攻击,就会给整个加密货币市场造成巨大影响。如果竞争链条没有攻击链条长的话,一次持久的51%攻击甚至会阻止其他矿工从网络中挖出新的区块。假设矿工们都足够理性的话,他们会尽力保护他们投资与回报的价值。如果某一矿池达到了接近全网50%的哈希算力,或者和其他矿池协作达到了超过51%的算力,矿工们为了保护自己的收益,就会放弃这些矿池。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。