媒体资讯

媒体资讯

从统计学的角度观察数字货币挖矿

2020-02-28 04:24:33

数字货币挖矿的“运气”本质上是一种概率事件。想象一下,每个矿工都得到了一张彩票,以获取他们提供的一定量的哈希算力。为了便于说明,假设您提供了1 EH/s的哈希算力,而网络中的总哈希算力是100 EH/s,那么您将获得100张彩票其中的1张,即中奖概率是1%。所以每发现100个区块,按照统计学计算你也会找到其中的1个区块。

现在假设你在100个区块中的找到2个区块,这意味着你比统计上更早地找到另一个区块。那么你是幸运的!现在想象一下你在100个区块里面找到0个区块,你又是不幸的。从长期来看,按照统计学计算平均每100个区块你应该会发现其中的一个区块,但是在短期内会存在差异。

上面的描述应该使你对“运气”有一个基本了解,但是如果你想深入了解它,请继续阅读以下内容!

关键术语

矿池

一个矿池是由一组矿工组成,矿工共同努力以减少回报的波动性。矿工通过网络共享他们的处理能力,然后根据他们为找到区块所做的工作量来分配奖励,并向矿池运营商收取费用。

当挖矿难度增加到小矿商可能需要耗费数年才能自己找到一个区块时,加入矿池便成为一种趋势。解决这个问题的办法是让矿工们集中他们的资源以至于他们可以更快地生成区块,从而在目的一致的基础上获得部分区块奖励。

PPS 模式:Pay-Per-Share 方式——即为每一个 share 支付报酬

这种分配模式是根据矿工在矿池中的算力占比,每天获得固定的收益。该模式最终目的是消除“运气”成分,减少了矿工的风险,但将风险转移给了矿池的运营者。运营者可以收取手续费来弥补这些风险可能造成的损失。

PPLNS 模式:(最纯正的组队挖矿) 全称 Pay-Per-Last-N-Shares

意思是说“根据过去的 N 个股份来支付收益”,这种分配模式是根据矿池当天的实际收益,按照算力占比,将收益分配给矿工。这意味着,所有的矿工一旦发现了一个区块,大家将根据每个人自己贡献的股份数量占比来分配区块中的货币。

计算“运气”

开采区块的可能性

每个哈希算力挖出区块的概率为1/(²³²*Difficulty)。

截止至2020年2月19日,BTC难度为15,546,745,765,549。

所以每个哈希算力能挖出一个区块的概率是0.000000000000000000001498%。

“运气”

计算“运气”的正确方法是看每轮的预期份额和实际份额。

“运气”=平均值(每轮预期份额/每轮实际份额)

“运气”越多,挖矿的“运气”就越好。200%的好运意味着只需提交了一半的份额,你就可以找到一个区块。

“运气统计”

“运气统计”与上述相反。这是我们作为矿池运营商对“运气”的看法。

“运气统计”=平均值(每轮实际份额/每轮预期份额)

“运气统计”值越小,“运气”越好。0.5的“运气统计”意味着你提交的份额是找到区块所需的一半。

“运气”差异

在一段时间内看“运气”,不应按照时间(小时,天等)来看,而应该以区块为单位。“运气”差异在根据“运气”得出结论或比较两个不同的矿工时尤为重要。一名矿工可能比另一名开采出更多的区块,这在很大程度上影响了我们对“运气”的看法。

可视化“运气统计”

找到适当的分布

从基本的泊松分布开始,它是一个离散随机的概率分布,表示给定数量的事件在一个固定的时间或空间间隔内发生的概率。如果这些事件以已知的恒定平均速率发生,并且与上一次事件发生以来的时间无关。泊松分布的问题在于它是离散的而不是连续的。泊松分布处理的是固定时间段内的事件数,但这不是我们查看“运气统计”的方式。

下一步是检查伽马分布,它是连续的。伽马分布是泊松点过程中事件之间时间的概率分布。事件以恒定的平均速率连续而独立地发生的过程。伽玛分布解决的问题是“要等到n个随机事件都发生,需要经历多久时间”。当伽马分布的形状参数为整数时,该分布称为爱尔朗分布。这对于查看“运气统计”数据很重要,因为它始终是正整数。

“运气统计”是负的二项分布,因此可以使用爱尔朗分布来类比。

爱尔朗分布

我们不需要深入研究这个分布的公式,但是可以将爱尔朗分布视为指数分布的一般化。该分布是连续分布,通常用来度量事件发生的预期时间(即挖出一个区块)。

使用这种分布使得计算“运气”更加简便,并且随着网络难度的增加,实际上将变得更加准确。在当前的网络难度下,错误率不会超过百万分之一。

如果这很难理解,那么下一节将帮助您将其可视化。

概率密度分布函数(PDF)

使用爱尔朗分布,PDF能表明“运气统计”是某个任意值的可能性有多大。在任何时候,“运气统计”数值是一个确切数字(即1.00000000000)的概率都是0%。相反,PDF可以用来指定“运气统计”值落在特定值范围内(即低于1.0)的概率。

参考公式如下:



您可以使用R语言或python计算PDF。但是更简单的方法是使用Wolfram Alpha网站。

quantile(ErlangDistribution[Number of Blocks, Number of Blocks], optional %)

每绘制1个区块,PDF显示了一系列的潜在结果。这意味着“运气统计”数据很可能远远低于1.0的均值。



如果我们将区块数量增加到14,这大约是每天网络奖励的10%,那么我们可以看到分布开始变得更加规范化。现在,“运气统计”数值更有可能接近1.0,但仍有很大的变化空间。



如果我们将区块数量增加到144,也就是100%的每日网络奖励,那么我们就会看到一条正常的曲线,其中包含了相当小范围的潜在结果。在144个区块中,“运气统计”数值不太可能低于0.7或高于1.3。



PDF有助于理解查看大样本(即在更多区块上取平均值)中“运气统计”数据的重要性。

累积分布函数(CDF)

CDF是分析“运气统计”数据的好方法。假设你的矿池在过去的1、10和140个区块中“运气统计”数值为1.3。这是不幸的还是几乎不可能的?(并引发了其他问题)。

同样,您可以使用R语言或python来建模,但也可以使用Wolfram Alpha网站或excel。

Wolfram Alpha: CDF[ErlangDistribution[nblocks, nblocks], Luck Statistic]

Excel: =GAMMA.DIST(Luck Statistic, nblocks, 1 / nblocks, 1)

1个区块中“运气统计”数值为1.3的结果将显示为0.727468。这意味着,在一个区块的100次重新运行中,约有73次我们会看到更幸运的区块。而在27%的情况下,会有看到一个更倒霉的区块。

我们把下表放在一起来显示多个区块具有特定“运气统计”的概率。如您所见,有些时候“运气统计”数值太糟糕,以至于数值不可相信(例如,平均超过60个区块“运气统计”的值为1.5)。



我们通常不太关心这些,因为我们不会亏本。但这可能是检查数据是否正确的原因。

结论

PPS矿池

正如我们在开始时所描述的,PPS矿池为它的矿工消除了挖矿差异。因此,坏“运气”损害了矿池,好“运气”有利于矿池,而矿工永远不会受到影响。唯一让矿工们担心的是,如果一个矿池破产,他们将无法得到待结款项,还要经历停工期,直到他们换到新的矿池。

作为PPS矿池运营商,我们非常认真地跟踪我们的“运气”。我们要确保有足够的流动性来弥补短期差异。我们还希望确保一切运行正常。通常在“运气”不好的时候,我们会检查自己是否真的那么倒霉。如果我们发现我们的“运气”比99%的情况都差,那么我们就会开始考虑其他因素,比如对矿池的攻击或技术bug。我们将通过下面的一个矿池攻击示例来做进一步讨论。

自从我们推出自己的BTC矿池以来,我们发现每找到9个区块,平均“运气”值为0.502。作为一个矿池运营商,我们对此感到高兴,但是仍处于可能性范围之内(在4%的情况下它会更好)。通过运行其他10个矿池,我们知道坏“运气”也有可能出现,所以我们不希望这种情况继续下去。



PPLNS矿池

PPLNS矿池的运营与PPS矿池相反。不是由矿池来承担差异风险,而是由矿工承担。一段时间的坏“运气”意味着矿工得到的回报更少,但一段时间的好“运气”意味着他们得到的回报更多。

对于PPLNS矿池而言,矿工可能会在经历一段时间的厄运后离开。这情况被称为“赌徒谬误”(Gambler’s Fallacy),即人们认为如果某个特定事件在过去比平常更频繁地发生,那么它在未来发生的可能性就较小(反之亦然)。人们认为下个矿池可能不会有更好的“运气”。

PPLNS矿池中的矿工应该密切关注他们池中的“运气”。如果不太可能是坏“运气”的缘故,那么矿池可能会受到攻击或存在bug。

区块截留攻击

这是对矿池最常见的攻击之一,通常来自于其他竞争对手的矿池。如果它们是PPS矿池,它们将破产;如果它们是PPLNS矿池,它们的矿工将离开它们。

当矿工没有返回他们创建的有效哈希值时,就会发生区块截留。

攻击者(矿工)会设置一些自定义规范以不返回小于预设大小的哈希值。预设的大小通常略低于网络目标(难度的倒数)。因此,矿工仍将获得他们提交给矿池中高于共享目标但低于网络目标份额的报酬。矿工永远不会向矿池发送一个有效区块的哈希值。因为付给矿工的费用就好像他们可以生产一个网络区块一样,而PPS矿池会出现亏损,PPLNS矿池中的矿工也会损失收入。

有很多方法可以防止这些攻击,但是没有一个明确的、万无一失的方法。这通常是通过矿池监控矿工的个人“运气”,并在他们不可能产生低于网络目标的哈希值之后锁定他们的帐户来完成的。