btc的挖矿

Reading time ~1 minute

1.1 挖矿

合法区块的bitcoins数为B。

假设:在块头构建中,协议中的hash函数和伪随机数生成器的量足够,一个给定的计算是否产生一个合法区块可以认为是一个随机事件,任何所有的计算hash彼此相互独立。 该量(quantity)称为计算难度(difficulty),标为D,由btc网络进行周期性调整,它决定着发现一个合法块的难度。选择的目标值,每个计算hash都会有的概率产生一个合法区块。

一个矿工(miner)的hash率(hashrate)为h,挖矿的周期为t,总共计算hash次数为ht,因此,可以平均找到个块。期望的回报为:

示例:Bob买了台专用矿机,它可以执行每秒数10亿次hash计算。h = 1 Ghash/s = 10^9 hash/s.如果一天连续24小时(86400s)挖矿,难度D=1690906,区块回报为B=50BTC,那么他将平均得到,换算成btc为:0.0119B=0.595BTC。

1.2 solo挖矿模式的variance

solo模式,具有常数的hashrate为:h,这是个泊松过程(Poisson process),相应的rate为:

发现的区块链的数目服从泊松分布:

该值也是发现的区块链数目的variance。

对应回报的方差(variance)为:

相应的标准差(standard deviation):

示例:前例中,Bob的回报(payout)具有

  • 方差为:,
  • 标准差为:,它为期望的917%倍。

事实上,Bob这一整天下来接收任何回报的概率为:

solo模式的variance是较大的。对于一个独立硬件的参与者来说,平均等3个月才能接收到一些回报。需要注意的是,该过程是完全随机且无记忆的–如果用户3个月过去后还没有发现一个块,他可能还需平均再等3个月。另外,随机BTC收益获取的难度变得越来越难,相应的variance也会增加。

这种情况是有问题的,有如下原因:

  • 由于货币供应是concave的,货币供应的variance会直接减少个人收入。很难开展财务计划。
  • 由于缺少常规的回报,使得技术上更难验证btc系统是否正确工作
  • 由于收入源具有这么高的方差,感觉被征了许多情感税

1.3 pool模式

pool模式允许矿工进行合作来发现区块,根据他们的贡献进行分配回报。如果所有矿工的hashrate为H,那么矿池将在周期t内平均获得:个区块,平均回报为:。单个矿工的hashrate为:h=qH(其中:q是该矿工对该矿池中总算力的贡献),它将获得总收益的q倍,,该值与solo模式的期望回报一致。但是,它的variance将变得更低–

  • 总回报的variance为:
  • 单人回报的variance为:,该值为solo模式下variance的q倍. (0<q«1)

因而,矿池越大,矿工越少,潜在收益更大。

矿池通常由一个矿池操作人(pool operator)来维护,它会在相应的服务上花费一定的费用。这通常是区块回报的一个固定百分比:f。因此,对于每个发现的区块,operator都将收到一笔fB的费用,余下的(1-f)B将分配给矿工。因此,单个矿工的实际期望回季收入为:

为了确定矿池是否工作良好,矿工们发现并提交块头的shares,hashes(如果D=1,)。每个hash具有一个概率成为一个share。假如使用的hash函数正确,如果没有做发现区块必需的工作,或者搜索区块时没有采用这种方法来发现shares,那也不可能发现shares。一个矿工发现的shares的数目,与hashes计算次数成比例。

每个share都有一个概率成为合法区块。因而,如果一个矿工花同样在solo模式下的挖矿算力,他的期望贡献是。因而,在一个公平的矿池中,矿工在每次提交一个share时将平均接收到pB的回报,对于operator则收到的费用。

这里的主要问题就转变成了:如何来划分回报,以使每个矿工可以根据它的贡献来得到公平的share,这是个很重要的问题。业界提出了许多方法,有好有坏。下面章节,将详细讨论每种方法。

需要注意一下,矿池潜在会提升一个矿工的variance(通过因子q,矿工对矿池的hashrate贡献度)。然而,如果一个矿工的hashrate过小,根据他发现shares的数目的方差,将不会出现这种可能性。这里存在一个最大可能改进因子,它依赖着回报系统的实现。挖矿中间可能会增加variance,它也依赖于回报系统。然而,这些情况都不会影响平均回报的量,在一个公平的矿池中,它对于每个提供的share都有

2.简单回报系统

2.2 PPS(Pay-per-share)

在PPS系统中,operator不是一个被动的中间人。它实际会吸收所有单个矿工都会遇到的variance。当一个参与者(participant)提交一个share时,它立即获得回报,对应于它的贡献,减去oprator的费用(fee)–不管事实上发现了多少区块。operator会保留着所有发现区块的回报。

每份share的支付都有一个决策值。这种方式对于矿工来说具有以下的优点:

  • 每份share在回报时都具有0方差。
  • 无需等待时间(发现区块)即可获得收益
  • 很容易描述精确的收益
  • 很容易验证回报,没有损失,无需担心部分operator或者部分组织的不诚信。
  • 不会因为矿池跳槽(pool-hopping)而受损失

然而,这对于矿池operator来说是风险最高的回报系统–为了提供variance=0支付给参与者,它必须承担所有的variance。他可以在短期获得很好的回报–他获取整个区块奖励,支出比平均shares数还要少–但是在长期来看会大幅损失。它的variance与solo的variance相同。为了补偿它的风险,operator将比其它方法支付一个更大的费用,这就是PPS方法的缺点。

如果operator不正确平衡矿池的费用以及他的财产准备金,矿池有很大可能会破产。在附录C中,为了让破产概率在以下,operator应该至少有如下的准备金:

需要的准备金比大多数人预期的还要高。管理这样的矿池最适合那些知道如何能负现管理自己风险的人,期望稳定的矿工应回避那些没有适当经营的PPS矿池,它们随时会关停。

Appenddix C:

PPS矿池的安全网

在附录中,我们会讨论一个PPS矿池的operator要准备多少准备金,才能让矿池合理运转。准备金越大,可以确保矿池破产的概率越低。

假设没有受到黑客攻击,非法区块链等,operator的财务平衡可以通过Markov链来建模:

每次提交share可以当成一个step。每次都具有期望,方差近似为:,根据中心极限定理,该随机过程的长期行为等价于:

它们具有相同的期望和方差。这等价于:

初始条件通过因子进行缩放。

表示,从状态n开始要达到0的概率(表示矿池破产)。我们在第一步得到的条件,表示:,

这个递归方程的多项式特征方程是:

因而,它具有通解:

代入初始值(边界条件):

我们具有A=0, B=1,因而:

如果operator以一个R的准备金启动,矿池的破产概率为:

相反地,为了维持一个破产概率最大为,矿池应至少保有准备金:

例如,如果B=50BTC, 和f=0.05(矿池费用为5%),准备金应该为:

如果oprator尝试以f=0.01,准备金为500BTC启动,那么:

因而,它实际上具有81.9%的机率破产。