比特币矿池

矿池

在这个激烈竞争的环境中,个体矿⼯独⽴⼯作(也就是solo挖矿)没有⼀点机会。他们找到⼀个区块以抵消电⼒和硬件成本
的可能性⾮常⼩,以⾄于可以称得上是赌博,就像是买彩票。就算是最快的消费型ASIC也不能和那些在巨⼤机房⾥拥有数万
芯⽚并靠近⽔电站的商业矿场竞争。现在矿⼯们合作组成矿池,汇集数以千计参与者们的算⼒并分享奖励。通过参加矿池,
矿⼯们得到整体回报的⼀⼩部分,但通常每天都能得到,因⽽减少了不确定性。


让我们来看⼀个具体的例⼦。假设⼀名矿⼯已经购买了算⼒共计6,000GH/S,或6TH/S的设备,在2014年8⽉,它的价值⼤
约是1万美元。该设备运⾏功率为3千⽡(KW),每⽇耗电72度,每⽇平均成本7或8美元。以⽬前的⽐特币难度,该矿⼯平
均每155天或5个⽉可能solo出⼀个块。如果这个矿⼯确实在这个时限内挖出⼀个区块,奖励25⽐特币,如果每个⽐特币价格
约为600美元,可以得到15,000美元的收⼊。这可以覆盖整个时间周期内的设备和电⼒成本,还剩下⼤约3,000美元的净利
润。然⽽,在5个⽉的时间周期内能否挖出⼀个块主要靠矿⼯的运⽓。他有可能在五个⽉中得到两个块从⽽赚到⾮常⼤的利
润。或者,他可能10个⽉都找不到⼀个块,从⽽遭受经济损失。更糟的是,⽐特币的⼯作证明(POW)算法的难度可能在这
段时间内显著上升,按照⽬前算⼒增⻓的速度,这意味着矿⼯在设备被下⼀代更有效率的矿机取代之前,最多有6个⽉的时间
取得成果。如果这个矿⼯加⼊矿池,⽽不是等待5个⽉内可能出现⼀次的暴利,他每周能赚取⼤约500-700美元。矿池的常规
收⼊能帮他随时间摊销硬件和电⼒的成本,并且不⽤承担巨⼤的⻛险。在7到9个⽉后,硬件仍然会过时,⻛险仍然很⾼,但
在此期间的收⼊⾄少是定期的和可靠的。

矿池通过专⽤挖矿协议协调成百上千的矿⼯。个⼈矿⼯在建⽴矿池账号后,设置他们的矿机连接到矿池服务器。他们的挖矿
设备在挖矿时保持和矿池服务器的连接,和其他矿⼯同步各⾃的⼯作。这样,矿池中的矿⼯分享挖矿任务,之后分享奖励。
成功出块的奖励⽀付到矿池的⽐特币地址,⽽不是单个矿⼯的。⼀旦奖励达到⼀个特定的阈值,矿池服务器便会定期⽀付奖
励到矿⼯的⽐特币地址。通常情况下,矿池服务器会为提供矿池服务收取⼀个百分⽐的费⽤。
参加矿池的矿⼯把搜寻候选区块的⼯作量分割,并根据他们挖矿的贡献赚取“份额”。矿池为赚取“份额”设置了⼀个低难度的⽬
标,通常⽐⽐特币⽹络难度低1000倍以上。当矿池中有⼈成功挖出⼀块,矿池获得奖励,并和所有矿⼯按照他们做出贡献
的“份额”数的⽐例分配。


矿池对任何矿⼯开放,⽆论⼤⼩、专业或业余。⼀个矿池的参与者中,有⼈只有⼀台⼩矿机,⽽有些⼈有⼀⻋库⾼端挖矿硬
件。有⼈只⽤⼏⼗度电挖矿,也有⼈会⽤⼀个数据中⼼消耗兆⽡级的电量。矿池如何衡量每个⼈的贡献,既能公平分配奖
励,⼜避免作弊的可能?答案是在设置⼀个较低难度的前提下,使⽤⽐特币的⼯作量证明算法来衡量每个矿⼯的贡献。因
此,即使是池中最⼩的矿⼯也经常能分得奖励,这⾜以激励他们为矿池做出贡献。通过设置⼀个较低的取得份额的难度,矿
池可以计量出每个矿⼯完成的⼯作量。每当矿⼯发现⼀个⼩于矿池难度的区块头hash,就证明了它已经完成了寻找结果所需
的hash计算。更重要的是,这些为取得份额贡献⽽做的⼯作,能以⼀个统计学上可衡量的⽅法,整体寻找⼀个⽐特币⽹络的
⽬标散列值。成千上万的矿⼯尝试较⼩区间的hash值,最终可以找到符合⽐特币⽹络要求的结果。


让我们回到骰⼦游戏的⽐喻。如果骰⼦玩家的⽬标是扔骰⼦结果都⼩于4(整体⽹络难度),⼀个矿池可以设置⼀个更容易的
⽬标,统计有多少次池中的玩家扔出的结果⼩于8。当池中的玩家扔出的结果⼩于8(矿池份额⽬标),他们得到份额,但他
们没有赢得游戏,因为没有完成游戏⽬标(⼩于4)。但池中的玩家会更经常的达到较容易的矿池份额⽬标,规律地赚取他们
的份额,尽管他们没有完成更难的赢得⽐赛的⽬标。
时不时地,池中的⼀个成员有可能会扔出⼀个⼩于4的结果,矿池获胜。然后,收益可以在池中玩家获得的份额基础上分配。
尽管⽬标设置为8或更少并没有赢得游戏,但是这是⼀个衡量玩家们扔出的点数的公平⽅法,同时它偶尔会产⽣⼀个⼩于4的
结果。
同样的,⼀个矿池会将矿池难度设置在保证⼀个单独的矿⼯能够频繁地找到⼀个符合矿池难度的区块头hash来赢取份额。时
不时的,某次尝试会产⽣⼀个符合⽐特币⽹络⽬标的区块头hash,产⽣⼀个有效块,然后整个矿池获胜。

共识攻击

⽐特币的共识机制指的是,被矿⼯(或矿池)试图使⽤⾃⼰的算⼒实⾏欺骗或破坏的难度很⼤,⾄少理论上是这样。就像我
们前⾯讲的,⽐特币的共识机制依赖于这样⼀个前提,那就是绝⼤多数的矿⼯,出于⾃⼰利益最⼤化的考虑,都会通过诚实
地挖矿来维持整个⽐特币系统。然⽽,当⼀个或者⼀群拥有了整个系统中⼤量算⼒的矿⼯出现之后,他们就可以通过攻击⽐
特币的共识机制来达到破坏⽐特币⽹络的安全性和可靠性的⽬的。
值得注意的是,共识攻击只能影响整个区块链未来的共识,或者说,最多能影响不久的过去⼏个区块的共识(最多影响过去
10个块)。⽽且随着时间的推移,整个⽐特币块链被篡改的可能性越来越低。理论上,⼀个区块链分叉可以变得很⻓,但实
际上,要想实现⼀个⾮常⻓的区块链分叉需要的算⼒⾮常⾮常⼤,随着整个⽐特币区块链逐渐增⻓,过去的区块基本可以认
为是⽆法被分叉篡改的。同时,共识攻击也不会影响⽤⼾的私钥以及加密算法(ECDSA)。共识攻击也不能从其他的钱包那
⾥偷到⽐特币、不签名地⽀付⽐特币、重新分配⽐特币、改变过去的交易或者改变⽐特币持有纪录。共识攻击能够造成的唯
⼀影响是影响最近的区块(最多10个)并且通过拒绝服务来影响未来区块的⽣成。


共识攻击的⼀个典型场景就是“51%攻击”。想象这么⼀个场景,⼀群矿⼯控制了整个⽐特币⽹络51%的算⼒,他们联合起来
打算攻击整个⽐特币系统。由于这群矿⼯可以⽣成绝⼤多数的块,他们就可以通过故意制造块链分叉来实现“双重⽀付”或者
通过拒绝服务的⽅式来阻⽌特定的交易或者攻击特定的钱包地址。区块链分叉/双重⽀付攻击指的是攻击者通过不承认最近的
某个交易,并在这个交易之前重构新的块,从⽽⽣成新的分叉,继⽽实现双重⽀付。有了充⾜算⼒的保证,⼀个攻击者可以
⼀次性篡改最近的6个或者更多的区块,从⽽使得这些区块包含的本应⽆法篡改的交易消失。值得注意的是,双重⽀付只能在
攻击者拥有的钱包所发⽣的交易上进⾏,因为只有钱包的拥有者才能⽣成⼀个合法的签名⽤于双重⽀付交易。攻击者只能在
⾃⼰的交易上进⾏双重⽀付攻击,但当这笔交易对应的是不可逆转的购买⾏为的时候,这种攻击就是有利可图的。


让我们看⼀个“51%攻击”的实际案例吧。Alice 和 Bob 之间使⽤⽐特币完成了⼀杯咖啡的交易。咖啡店⽼板 Bob 愿意在 Alice 给⾃⼰的转账交易确认数为零的时候就向其提供咖啡,这是因为这种⼩额交易遭遇“51%攻击”的⻛险和顾客购物的即时性(Alice 能⽴即拿到咖啡)⽐起来,显得微不⾜道。这就和⼤部分的咖啡店对低于25美元的信⽤卡消费不会费时费⼒地向顾客索要签名是⼀样的,因为和顾客有可能撤销这笔信⽤卡⽀付的⻛险⽐起来,向⽤⼾索要信⽤卡签名的成本更⾼。相应的,使⽤⽐特币⽀付的⼤额交易被双重⽀付的⻛险就⾼得多了,因为买家(攻击者)可以通过在全⽹⼴播⼀个和真实交易的UTXO⼀样的伪造交易,以达到取消真实交易的⽬的。双重⽀付可以有两种⽅式:要么是在交易被确认之前,要么攻击者通过块链分叉来完成。进⾏51%攻击的⼈,可以取消在旧分叉上的交易记录,然后在新分叉上重新⽣成⼀个同样⾦额的交易,从⽽实现双重⽀付。

再举个例⼦:攻击者Mallory在Carol的画廊买了描绘伟⼤的中本聪的三联组画,Mallory通过转账价值25万美⾦的⽐特币与Carol进⾏交易。在等到⼀个⽽不是六个交易确认之后,Carol放⼼地将这幅组画包好,交给了Mallory。这时,Mallory的⼀个同伙,⼀个拥有⼤量算⼒的矿池的⼈Paul,在这笔交易写进区块链的时候,开始了51%攻击。⾸先,Paul利⽤⾃⼰矿池的算⼒重新计算包含这笔交易的块,并且在新块⾥将原来的交易替换成了另外⼀笔交易(⽐如直接转给了Mallory的另⼀个钱包⽽不是Carol的),从⽽实现了“双重⽀付”。这笔“双重⽀付”交易使⽤了跟原有交易⼀致的UTXO,但收款⼈被替换成了Mallory的钱包地址。然后,Paul利⽤矿池在伪造的块的基础上,⼜计算出⼀个更新的块,这样,包含这笔“双重⽀付”交易的块链⽐原有的块链⾼出了⼀个块。到此,⾼度更⾼的分叉区块链取代了原有的区块链,“双重⽀付”交易取代了原来给Carol的交易,Carol既没有收到价值25万美⾦的⽐特币,原本拥有的三幅价值连城的画也被Mallory⽩⽩拿⾛了。在整个过程中,Paul矿池⾥的其他矿⼯可能⾃始⾄终都没有觉察到这笔“双重⽀付”交易有什么异样,因为挖矿程序都是⾃动在运⾏,并且不会时时监控每⼀个区块中的每⼀笔交易。


为了避免这类攻击,售卖⼤宗商品的商家应该在交易得到全⽹的6个确认之后再交付商品。或者,商家应该使⽤第三⽅的多⽅
签名的账⼾进⾏交易,并且也要等到交易账⼾获得全⽹多个确认之后再交付商品。⼀条交易的确认数越多,越难被攻击者通
过51%攻击篡改。对于⼤宗商品的交易,即使在付款24⼩时之后再发货,对买卖双⽅来说使⽤⽐特币⽀付也是⽅便并且有效
率的。⽽24⼩时之后,这笔交易的全⽹确认数将达到⾄少144个(能有效降低被51%攻击的可能性)。

共识攻击中除了“双重⽀付”攻击,还有⼀种攻击场景就是拒绝对某个特定的⽐特币地址提供服务。⼀个拥有了系统中绝⼤多
数算⼒的攻击者,可以轻易地忽略某⼀笔特定的交易。如果这笔交易存在于另⼀个矿⼯所产⽣的区块中,该攻击者可以故意
分叉,然后重新产⽣这个区块,并且把想忽略的交易从这个区块中移除。这种攻击造成的结果就是,只要这名攻击者拥有系
统中的绝⼤多数算⼒,那么他就可以持续地⼲预某⼀个或某⼀批特定钱包地址产⽣的所有交易,从⽽达到拒绝为这些地址服
务的⽬的。
需要注意的是,51%攻击并不是像它的命名⾥说的那样,攻击者需要⾄少51%的算⼒才能发起,实际上,即使其拥有不到
51%的系统算⼒,依然可以尝试发起这种攻击。之所以命名为51%攻击,只是因为在攻击者的算⼒达到51%这个阈值的时
候,其发起的攻击尝试⼏乎肯定会成功。本质上来看,共识攻击,就像是系统中所有矿⼯的算⼒被分成了两组,⼀组为诚实
算⼒,⼀组为攻击者算⼒,两组⼈都在争先恐后地计算块链上的新块,只是攻击者算⼒算出来的是精⼼构造的、包含或者剔
除了某些交易的块。因此,攻击者拥有的算⼒越少,在这场决逐中获胜的可能性就越⼩。从另⼀个⻆度讲,⼀个攻击者拥有
的算⼒越多,其故意创造的分叉块链就可能越⻓,可能被篡改的最近的块或者或者受其控制的未来的块就会越多。⼀些安全
研究组织利⽤统计模型得出的结论是,算⼒达到全⽹的30%就⾜以发动51%攻击了。
全⽹算⼒的急剧增⻓已经使得⽐特币系统不再可能被某⼀个矿⼯攻击,因为⼀个矿⼯已经不可能占据全⽹哪怕的1%算⼒。但
是中⼼化控制的矿池则引⼊了矿池操作者出于利益⽽施⾏攻击的⻛险。矿池操作者控制了候选块的⽣成,同时也控制哪些交
易会被放到新⽣成的块中。这样⼀来,矿池操作者就拥有了剔除特定交易或者双重⽀付的权⼒。如果这种权利被矿池操作者
以微妙⽽有节制的⽅式滥⽤的话,那么矿池操作者就可以在不为⼈知的情况下发动共识攻击并获益。

但是,并不是所有的攻击者都是为了利益。⼀个可能的场景就是,攻击者仅仅是为了破坏整个⽐特币系统⽽发动攻击,⽽不
是为了利益。这种意在破坏⽐特币系统的攻击者需要巨⼤的投⼊和精⼼的计划,因此可以想象,这种攻击很有可能来⾃政府
资助的组织。同样的,这类攻击者或许也会购买矿机,运营矿池,通过滥⽤矿池操作者的上述权⼒来施⾏拒绝服务等共识攻
击。但是,随着⽐特币⽹络的算⼒呈⼏何级数快速增⻓,上述这些理论上可⾏的攻击场景,实际操作起来已经越来越困难。
近期⽐特币系统的⼀些升级,⽐如旨在进⼀步将挖矿控制去中⼼化的P2Pool挖矿协议,也都正在让这些理论上可⾏的攻击变
得越来越困难。
毫⽆疑问,⼀次严重的共识攻击事件势必会降低⼈们对⽐特币系统的信⼼,进⽽可能导致⽐特币价格的跳⽔。然⽽,⽐特币
系统和相关软件也⼀直在持续改进,所以⽐特币社区也势必会对任何⼀次共识攻击快速做出响应,以使整个⽐特币系统⽐以
往更加稳健和可靠。

发布了432 篇原创文章 · 获赞 268 · 访问量 56万+

猜你喜欢

转载自blog.csdn.net/qq_32146369/article/details/105248088