矿池的权力过大?比特币或许该使用BetterHash协议了
注:原文标题为《Betterhash:使用新的哈希协议,让比特币挖矿实现去中心化》(BetterHash: Decentralizing Bitcoin Mining With New Hashing Protocols),作者是StopAndDecrypt。
以下为译文:
简介
BetterHash是目前比特币开发者正在开发的一种替代挖矿协议。当其完成时,需要有足够多的矿工愿意使用这一协议来切换到新的矿池,或者有一个既愿意服务于旧协议又愿意服务于新协议的现有矿池,而矿工们则逐渐做好了切换的准备。在任何一种情况下,最初的转换都需要有足够的矿工支持,以实现盈利,否则利润波动将太大。最终,矿工们将需要理解他们为什么要切换,并且需要有前瞻性思维的矿池运营商(他们不希望控制现有的矿池)。只有正确理解和传达当前系统的问题及风险时,这种情况才会发生,这是BetterHash挖矿协议能够被采用的前提。
那么,比特币挖矿当前遇到了什么问题?
比特币挖矿存在着一种代理问题:比特币矿池不是矿工,但矿池却代表矿工发出了不适当的信号(signal)。矿池运行着节点,其负责构建区块,选择交易,并可代表池中的所有矿工算力用于支持哪个分叉链。这就产生了一些激励问题,以及一些相当不受欢迎的政治压力。Betterhash的目标是通过将这些责任交还给各个矿工,以此解决这一问题,并为了网络的更大利益而剥夺矿池的影响。有了BetterHash,矿工们就可以自己控制算力,而矿池只是负责协调它们并分配奖励。
矿池的算力分布情况 VS Slush Pool的矿工分布投射到每一个矿池
在我们开始之前,让我们简单地回顾一下现存协议的结构差异,以及BetterHash协议将会改变什么。
目前,很多矿工甚至都不运行节点,而只是使用诸如Stratum之类的协议将他们的ASIC矿机连接到一个矿池。矿池运行节点、选择交易、创建一个他们想要挖取的区块,然后将该区块发送给所有使用其矿池的矿工,矿工开始对其进行哈希处理。一旦一个矿工成功地开采了一个区块,它就会被送回至矿池,然后输出到比特币网络。
而使用BetterHash,矿工将单独运行自己的节点、选择交易、创建一个区块,然后对其进行挖矿处理。该区块将被配置以支付矿池的费用,就像使用 Stratum协议一样,这些未成功的区块(称为“share”)将被矿工用来证明他们一直在为该矿池挖矿。通过更改创建区块模板的参与者,然后围绕这个概念构建一个新的协议,BetterHash绕过了我们要讨论的所有问题。
对于目前正在开发中的Betterhash协议的更多技术概述,Matt Corallo的这一演示视频应该是足够了:
应该注意的是,“Betterhash”这个名字已经是最终确定的,正如视频中已提到的。
https://www.youtube.com/watch?V=0LGO5I74QJM
比特币挖矿业的现状
为了理解为什么切换到Betterhash是如此重要,让我们解开所有与矿工现在的生活方式相关的问题,而如果他们使用BetterHash协议,这些问题将不复存在。
简言之,矿工自己solo挖矿的回报率是极不稳定的,这就是为什么矿池会在2010年诞生。批评人士会指出,矿池的算力分布现状,使得比特币挖矿是呈现中心化的,尽管反驳者断言称,矿工们可切换他们所使用的矿池,但问题并不总是那么简单的。如果你是一名矿工,那么你的选择就仅限于少数几个矿池,而每个矿池都会有一些服务条款,你要么接受要么不接受。而矿池太大,就无法提供多种选择。
实际上,你别无选择,只能选择最适合自己的矿池,如果大多数或所有的矿池都决定了一些你不喜欢或不认同的决定,那么你就没有真正的选择,只能去处理这个问题,因为你建立自己的矿池可能不会产生足够稳定的收入流。那些已经存在的矿池会变得较大,通过让大量矿工在其保护伞下,矿池拥有矿工所没有的权利。我们将逐一进行讨论。
矿池可以:
- 确定哪些交易可被纳入区块,或者不执行这些交易。
- 在适当的条件下被贿赂重组区块链;
- 积压交易mempool,以提高交易费率;
- 未经矿工同意直接使用算力挖取竞争分叉链;
- 非诚实挖矿,这样做的动机应该是别有用心的;
- 使用矿工的算力为某提案提供信号支持;
而网络层面的攻击,攻击者可击落大量的算力,或者根据需要进行重定向。BGP攻击是很容易完成的,至少可以说,从中恢复所需的时间和资源是相关的。想要理解攻击者如何窃取矿池算力,并执行本文中编写的任何利用攻击,请观看下面的3分钟演示内容:
https://youtu.be/k_z-FBAil6k?t=353
(网络级攻击讨论在5:52处开始,并于9:00结束)
毫无疑问,一项协议是否适合采用,取决于这些问题是否迫切需要去解决。但是,针对这些场景的潜力,并不总是能很好地表达其必要性。
我想揭示一些假设的场景,以及一些已经以某种方式发生的场景,以便大家更容易理解Betterhash的必要性。所以让我们仔细看看它们各自是什么。(请注意,其中一些是假设性的,其不太可能实际发生,有些则需要非常具体的情况,而另一些已经以一种或另一种形式发生了。)
1、 矿池确定哪些交易进入一个区块
在讨论51%攻击的可能性时,经常会提出一个问题,如果足够多的矿池可以被说服将交易类型或地址列入黑名单,甚至是暂时的黑名单,那么问题就会出现了。 这样做的原因可能是被胁迫,也可能只是出于经济上的激励,不管是矿池自己,还是外部在支付奖励。
场景1: 审查一个服务器的热钱包
想象一下,一家交易所的热钱包被40%的矿池列入了黑名单(可能是由一家竞争交易所在背后支付),那么它不会阻止这个热钱包进行交易,但会明显地减缓其交易处理速度。作为一名矿工,也许你不认为这种行为对生态系统而言是健康的,但也许你没有其他选择,因为你对此没有发言权。场景2: 审查保密交易类型
“可能开发者也是同样的懒惰”,导致代码忽略了那些保密类型的交易。
相关阅读:ZCash保密交易审查事件 :https://medium.com/@levdubinets/zcash-shielded-transaction-censorship-12098f21090b
2、 可贿赂矿池来重组区块链
与上面的示例类似,矿池可决定他们不希望在账本中包含的特定版本的交易,然后尝试执行此决定。这种情况几乎不可能自发地或事后进行协调,但如果矿池有此倾向,而只要有少数这样的矿池愿意接受贿赂,然后立即采取行动,那么矿工对此就没有任何发言权。
如果矿池愿意和矿工分享这些贿赂金,那矿工可能会去接受,但矿池给予矿工的份额越高,则其愿意的动机也就越小。此外,在黑客攻击的场景中,黑客可反贿赂矿池,使情况变得更加复杂。
这是在某交易所被黑后所被提到的一个建议。尽管矿池没有准备这样去做,很多人用它来争论比特币挖矿是中心化的,关于这一主题的更多细节,请听下面的播客,并注意,如果使用Betterhash,那其中讨论的任何事情都是不重要的,因为当矿工在构建区块,而非矿池构建区块时,这些问题甚至是不需要考虑的。
3、 矿池可积压交易,以提高交易费率
矿池不仅可以阻止特定的交易,还可以选择忽略低于特定费率的所有交易,从而提高试图交易的每个人的成本。一些人认为这是一个微不足道的问题,因为较小的矿池将利用机会纳入这些交易,因为对他们来说,这样做的回报会更大,因此这将长期奖励弱势矿池。我不认为这是微不足道的,因为我们已经看到了这种行为的影响,如何在政治舞台上引导关于短期内费用上涨的争论。
费用市场是迟早会存在的,但不应该通过限定网络规则,来以此谋利。虽然在矿池层面,可能会存在竞争以应对这种行为,但我们仍然看到一些矿池选择挖空块。在过去的一些实例中,一些特定的矿池只打包高于5聪每字节的交易,即使是在区块还有剩余空间的情况下。这可能需要在矿池之间进行一些协调才能产生效果,但如果激励措施一致,那么协调就不难甚至不必要了,现在,一小部分矿池运营商将拥有一个其他人都没有的价值工具。
矿池也可以秘密地做到这一点,他们不需要创建“非满”区块,而是可以用看似合法但未经宣布的交易来填充这些区块,然后将这些交易重新收集起来,通过引导他们相信新的“现行费率”是真实的。一旦市场开始支付更高的价格,那么矿池可以重新调整他们的恶意交易。在下图所示的时间里,Tx积压量中最底层的50%,仅占矿工收取费用的7%。回报与交易积压中的中间费率呈非线性增长关系,如果有足够大的矿池想要尝试这个,那么它会是有利可图的。
https://www.reddit.com/r/Bitcoin/comments/7lwajx/spamming_the_network_unfortunately_doesnt_result/
4、 矿池可在未经矿工同意的情况下,直接动用算力
实际上,是矿池在决定要扩展的链,矿池给矿工们提供了一个区块,实际上只需要说“挖这个区块吧,”然后,矿工们就去挖这个区块了,直到有人找到了解,然后矿池又给矿工们另一个区块。矿工们不会自己跟踪不同的分支,矿工们通常会假设矿池是诚实的,并且会挖取你希望他们挖取的币/分叉链。很多矿工并不运行节点,因此他们没有验证共识规则。在过去,当矿池决定它们不验证区块,而是在无效区块上进行“SPV挖矿”时,这就产生了问题。作为一名矿工,你应该明白自己花的时间和金钱,没有因为矿池的原因而被浪费掉。
一个场景:
你是一名矿工,也是矿池_A的一部分,你为矿池贡献了算力,那你就会收到源源不断的支付。你完成了数学计算,然后进行了检查,并且这永远不会改变。
矿池_A的运营者决定使用你的算力为另一个处于危险之中的链提供算力(生命)支持。而这个链可能是你不关心的,甚至可能是你不喜欢的,或者是竞争者。矿池继续以“市场价”为你的算力支付报酬,但实际上你的算力并没有在你认为的那条链上被使用。
由于现在有一整个矿池在挖不同的链,网络的区块生产速度减慢(回报变少)(市场可能会被愚弄,认为对另一个链的支持比实际支持会更多),这会降低你支持的链的潜在价值。作为一名矿工,这可能是你想要避免的一种情况。不幸的是,这种情况在现实世界已经发生过了:
5、 矿池可使用矿工的算力进行不诚实的挖矿工作
考虑一下上面的场景,这是一个最好的例子说明这将如何进行:矿池坦诚告知矿工其意图,并且至少试图弥补矿工们。他们告诉矿工,如果你不喜欢,那你可以直接离开。但如果矿池是不诚实的呢?
如果一个矿池表示他们正在挖两条链,分别是黄色链占80%算力,绿色链占20%算力,而你正在通过它们挖绿色链,你怎么知道他们是诚实的,只有20%的矿工在支持这条链,他们可单独告诉每一个矿工,他们就是这20%,而他们是唯一支持这条链的人。矿工将不得不在侧通道上进行协调,然后相加他们的算力,以确定自己是否被欺骗。主要的问题是,很多矿工是隐秘的,很多人希望保持私密,并且也应该保持这样。像这样进行协调,以避免被欺骗和操纵是一种不切实际的解决办法。
这类虚假信息不仅允许矿池完全利用所有矿工的综合算力,而且造假可能影响市场对每一条链的估值。任何重视比特币网络长期健康的人,都希望避免这种情况。
6、矿池可使用你的算力为提议发出投票信号
这种操作甚至不需要实际的链分裂。考虑到投票信号不是财务承诺,这样做的风险是很小的。如果你想尝试将市场转向你想要的方向,你只需要说服运行这些矿池的少数人临时发出支持信号。如果失败了,就像我们看到的NO2X一样,那么这对矿池而言也不会带来什么损失。不管结果如何,每个矿工的算力都是在正常运用的。
每列表示一个矿池。每列的顶部部分表示该矿池拥有的算力,而底部部分则表示使用该矿池的其他矿工的种类。
没有人想要另一个NO2X方案,也没有人能够“决定”大多数人在他们真正不支持的情况下支持什么。如果几年前BetterHash就已经存在,那么NO2X运动也许就不必要了。
矿工们没有为Segwit2X投票,而是矿池在做这件事
结论:视角问题
我预计人们在阅读这篇文章时,会有两种不同的反应,这两种反应都是我从少数观看这篇文章的人那里得到的:
- “我不知道矿池拥有那么大的权利。”
- “这篇文章,给人的感觉像是矿池拥有了比实际更多的控制权。”
“第一个人可能对矿池或比特币不太了解,第二个人是个老手,他充分理解细微差别,以更恰当地衡量这些情况。”另一种可能的看法是:
“第一个人提供了一个新的、真实的视角,来学习这个系统中的权力平衡,而第二个人已经在这个系统中呆了一段时间,对事物的现状和潜在的威胁变得过于舒适和不敏感。”这两种初始反应都是有效的,这两个元考虑因素也都是有效的。如果矿池不可能去滥用系统当前设置的方式,那么就没有驱动力去开发更好的协议,你也不会阅读本文。相反,如果矿池对比特币构成了严重的威胁,那么它们会以无法弥补的破坏性方式滥用自己的权力(见BCash)。
除了这些两极分化的观点,这是我希望你收获的东西:
BetterHash应该被实施,因为客观上,它比当前比特币所使用的协议要好。矿池滥用以及网络攻击不应是可行的,我们可通过让矿工运行自己的节点来减轻这些担忧,这样他们就可以创建自己的区块,并使用一个更好的矿池协议,该协议的结构围绕着简单但根本的改变。如果我们不提前解决我们知道如何解决的问题,总有可能会出现严重的问题,所以让我们来解决它吧。
其他资源:
Bob McElrath: Decentralized Mining Pools for Bitcoin
Off Chain with Jimmy Song : How Mining Pools Work with Matt Corallo
What Bitcoin Did: Matt Corallo on How Bitcoin Works
感谢 Jameson Lopp和Steve Lee
위믹스3.0 최초의 DAO ‘원더다오’, 노드 카운슬 파트너 합류
위믹스3.0 최초의 DAO ‘원더다오’, 노드 카운슬 파트너 합류 l 탈중앙화 자율조직 형태로 결성…구성원 모두가 위믹스3.0 운영에 참여 가능l 스마트 컨트랙트 기반 모듈화 ...
[주간톡톡] 양의 탈을 쓴 늑대는 양일까? 늑대일까?
주간톡톡은 한주간의 블록체인 소식을 재구성해 독자들과 재미있게 이야기해보는 코너입니다. 이번주는 페이스북의 스테이블 코인 프로젝트 '디엠(Diem)'에 대해 알아보겠습니다. 그럼 ...
IBM, 블록체인 와인 추적 서비스 '빈어슈어(Assure)' 공개
IBM이 재배지부터 매장까지 와인 공급망을 추적할 수 있는 블록체인 기반 플랫폼을 공개했다.10일(현지시간) 발표에 따르면 IBM은 와인 모니터링 업체 e프로브넌스(eProven...