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,以提高交易费率;
未经矿工同意直接使用算力挖取竞争分叉链;
非诚实挖矿,这样做的动机应该是别有用心的;
使用矿工的算力为某提案提供信号支持;
正如前面提到的,所有这些问题,基本上都是矿池在建立比特币区块,而非矿工在建立区块的直接结果。伴随着矿池的利用,第三方的问题也会随之而来。矿池可被黑客攻击,然后黑客就可潜在地执行这些利用,或者矿池可以受到网络层面的攻击,然后矿工就要忙于解决问题或切换到另一个矿池。而应用BetterHash之后,矿池黑客就无法控制矿工的算力,而针对矿池的网络级攻击,也不会对使用该矿池的矿工产生直接影响。
而网络层面的攻击,攻击者可击落大量的算力,或者根据需要进行重定向。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应该被实施,因为客观上,它比当前比特币所使用的协议要好。矿池滥用以及网络攻击不应是可行的,我们可通过让矿工运行自己的节点来减轻这些担忧,这样他们就可以创建自己的区块,并使用一个更好的矿池协议,该协议的结构围绕着简单但根本的改变。如果我们不提前解决我们知道如何解决的问题,总有可能会出现严重的问题,所以让我们来解决它吧。