如何实现比特币挖矿的去中心化?

2019-08-06 10:24 来源:蓝狐笔记 阅读:7813
“第一个人可能对挖矿或者比特币不太了解,第二个人已经接近了真相,可以充分了解细微差别并且更恰当地衡量这些场景。”
前言:因为矿池有中心化的趋势,比特币在去中心化方面常遭受诟病。当前的矿池有较大的杠杆力量,它可以决定哪些交易可以被打包,切换算力挖不同的分叉链等。本文作者StopAndDecrypt提出用新的协议BetterHash来代替目前的挖矿协议,它试图把原来矿池的权力部分让渡给了矿工。不过,它要真正实施,需要得到当前矿池的同意,这并非易事。本文由“蓝狐笔记”社群“鑫鑫”翻译。原文标题是:“BetterHash:用新哈希协议实现比特币挖矿的去中心化”。

BetterHash是目前正在开发的替代挖矿协议的代号。开发完成后,需要有足够多的矿工愿意切换到使用这些新协议的矿池,或者有一个既愿意服务于旧协议又愿意服务于新协议的现有矿池,而矿工们则逐渐做好切换的准备。在任何一种情况下,初始的切换都需要足够多的矿工支持以实现盈利,否则利润波动太大。

最终,矿工们需要理解他们为什么应该切换,并且需要有具备前瞻性思维的不想拥有当前矿池的控制权的矿池运营者。只有在正确理解和传达当前系统的问题和风险时,这种情况才会发生。

免责声明:这不是分叉,也不是共识规则的改变。

那么现在比特币挖矿到底出了什么问题?

比特币挖矿存在代表权问题。比特币矿池不是比特币矿工,但矿池会过度地为他们发出信号。矿池运行节点,构建区块,选择交易,并可以决定将所有矿工的哈希算力用于哪个分叉。这就产生了一些激励问题,并且使一些相当不受欢迎的政治杠杆成为可能。

BetterHash的目标是通过将这些责任交还给各个矿工来解决这一问题,并为了网络的更大利益而剥夺矿池的影响力。有了BetterHash,矿工们就可以控制自己的哈希算力,而矿池只会协调他们并分配奖励。

矿池哈希算力分布,对比Slush Pool投射到每个矿池的的矿工分布

本文旨在强调在当前挖矿环境下矿池可以实施的滥用类型(如果采用类似于BetterHash的协议则无法实施),它以牺牲矿工的最大利益为代价。矿池也可能被黑客攻击,然后由攻击者使用矿池实施该行为。在我们开始之前,让我们简单地回顾一下现状和BetterHash协议即将带来的结构性差异。

目前,许多矿工甚至都不运行节点,只需要使用诸如Stratum之类的协议将他们的ASIC连接到一个矿池。矿池运行节点,选择交易,创建一个待挖区块,然后将该区块发送给所有接入矿池的矿工,矿工开始对其进行哈希计算。一旦一个矿工成功地挖出了一个区块,它就会被送回矿池中,然后输出到比特币网络。

使用BetterHash,矿工将单独运行自己的节点,选择交易,创建一个区块,然后开始挖矿。该区块将被配置成支付给矿池,就像Stratum协议一样,那些未成功的区块(称为“份额”)将被矿工们用来证明他们一直在为该矿池挖矿。

通过更换创建待挖区块模板的矿工,而不是矿池所有者,然后围绕这个概念构建一个新的协议,BetterHash绕开了我们要讨论的所有问题。

对于目前正在开发中的BetterHash协议的更多技术概述,看Matt Corallo的演讲应该就足够了,不必理解本文讨论的问题,因为从概念上讲,BetterHash在客观上是更好的,不需要一个完整的代码实现来理解这有多重要。

值得注意的是,“BetterHash”不是最终确定的名字,正如Matt Corallo中所提到的。

现状

为了理解为什么切换到BetterHash如此重要,让我们列举出如果不使用BetterHash,当前矿工将会面临的所有问题。

简言之,你自己挖矿的回报率极有可能太不稳定,这就是为什么早在2010年矿池就已经存在的原因。批评者的矛头会指向矿池的分布,并声称比特币挖矿是中心化的,尽管反驳者声称,矿工们可以切换他们使用的矿池,

但并不总是那么简单。如果你是一名矿工,你的选择仅限于少数几个矿池,每个矿池都有你可能同意或不同意的服务条款。矿池太大,无法提供多种选择。

最后,你别无选择,只能选择最适合你的矿池,如果大多数或所有的矿池都决定把你不喜欢或者不同意的一些事情变成规范,那么实际上你没有选择,只能接受,因为自己启动矿池可能无法产生足够稳定的收入流。现存的矿池相对来说比较大,每个矿池旗下都有很多矿工,矿池有能力控制矿工的哈希算力,做一些我们将逐一讨论的有问题的事情。

矿池可以:

• 决定哪些交易打包或者不打包进区块

• 被贿赂后在适当的条件下重组区块链

• 积压交易内存池以提高费率

• 未经矿工同意切换哈希算力用于挖竞争性分叉

• 非诚实挖矿,他们这样做应该是别有用心的

• 使用矿工的哈希算力为提案提供支持

正如前面提到的,所有这些问题基本上都是因为构建比特币区块的是矿池而非矿工所直接导致的。伴随着矿池的滥用,还有第三方对矿池的可用滥用。

矿池可能被黑客攻击,然后黑客就可以潜在地进行这些操作,或者矿池可能遭受网络层的攻击,然后矿工们就要忙于查出问题或者切换到另一个矿池。有了BetterHash,攻击矿池无法控制矿工的哈希算力,而针对矿池的网络层攻击不会对使用该矿池的矿工产生直接影响。

网络层的攻击和矿池滥用矿工的哈希算力同样令人担忧。攻击者可以削减大量的哈希算力,或者根据需要进行切换。BGP攻击很容易完成,至少可以说,从中恢复所需的时间和资源较大的,让人担忧的。

毫无疑问,一个可以抵御这类问题的协议是很有价值的,但是针对前所未闻的潜在问题的解决方案并非总是能很好地表达其必要性。我想展示一些假想的场景和一些已经以某种方式发生的场景,以便更容易理解其必要性。让我们仔细看看它们都是什么。(请注意,其中一些是假设性的,不太可能实际发生,有些需要非常特别的情况,而另一些则已经以一种或另一种形式发生。)

1:矿池决定哪些交易打包进区块

在讨论51%攻击的可能性时,经常会提到一个问题,如果足够多的矿池被说服将某个交易类型或者地址列入黑名单,即使是临时的,那么尽管作为矿工的你对此毫不关心,你也已经参与其中了。这样做的动机可能是胁迫,也可能只是经济上的激励,不管是矿池自己的,还是支付给矿池的外部激励。

场景#1:审查某个服务的热钱包

想象一下,受一家竞争性交易所指使,某家交易所的热钱包被40%的矿池列入黑名单?它不会无限期地阻止钱包进行交易,但会明显地减慢它们的交易处理速度。作为一个矿工,也许你认为这种行为对生态系统是不健康的,但你没有其他选择,因为你对矿池秘密进行的操作没有发言权。

场景#2:审查保密交易类型

比特币目前没有保密交易,可能永远不会有保密交易,但它有不同的交易类型。如果矿池有这么做的理由,那么理论上他们可以忽略这些交易,因而特定类型的交易积压会加剧,使得费用提高,并可能降低使用这些特定交易的任何服务的速度。

2:矿池被贿赂并重组区块链

跟上面的例子类似,矿池可以决定他们不希望特定版本的交易被包含在账本中,然后尝试执行该决定。这种情况几乎不可能自发地或者事后进行协调,但如果矿池倾向于这一点,那么只需要少数几个矿池构建软件以准备接受贿赂,然后立即采取行动,而矿工们对此没有任何发言权。

如果和矿工分享贿赂,矿工们可能会认为这符合他们的最佳利益,但是他们给矿工的份额较高的话,他们就没有动力去做这件事。 此外,在黑客攻击的情况下,黑客可以反贿赂矿池,把水搅得更浑。

这是某个交易所遭到黑客攻击后的一个建议——尽管矿池没有为此做好准备——许多人用这个来讨论比特币挖矿是中心化的,而实际上只是因为矿池具有过高的杠杆(对于矿工)甚至可能会被滥用。 注意如果使用BetterHash,其中讨论的内容都不重要,因为如果是矿工而非矿池构建区块,这些问题都不可能存在。

3:矿池积压交易以提高费率

矿池不仅可以阻止特定类型的交易,还可以选择忽略低于特定费率的所有交易,从而提高每个人的交易成本。有些人认为这是一个微不足道的问题,因为较小的矿池将利用机会打包这些交易,因为对它们的奖励更大,从长远来看是奖励弱势群体。我不认为这是微不足道的,因为我们已经看到了这种行为的效果如何在政治舞台上引导关于短期费用上涨的争论。

收费市场迟早会存在,但将网络限制在共识强制的限制之下,不应该成为少数人经营矿池的工具。虽然在矿池级别可能存在对抗这种行为的竞争,但我们仍然看到出于财务激励选择挖空区块的矿池,以及某些只打包交易费用高于5聪/字节的交易的矿池的例子,即使仍有剩余空间可以容纳积压的交易。

这可能需要在矿池之间进行一些协调才能产生效果,但是如果激励一致,那么协调就不难甚至不必要了,现在一小部分矿池运营者将拥有一个其他人都没有的有价值的工具。

矿池也可以秘密地做到这一点。他们不需要创建“未填满”的区块,而是可以用看起来合法但未经广播的交易来填充这些区块,然后将这些交易重新收回去,从而引导个人、企业和费用评估者们相信新的“现行费率”是真实的。

一旦市场开始支付更高的价格,那么矿池就可以重新调整他们的恶意交易。在下面的图片中,大小占底部50%的积压交易仅占收集的矿工奖励的~7%。奖励与积压交易的中位费率呈非线性关系,这对于任何想要尝试这一点的大矿池来说都是一项有利可图的事情。

https://www.reddit.com/r/Bitcoin/comments/7lwajx/spamming_the_network_unfortunately_doesnt_result/

4:矿池未经同意切换哈希算力

矿池可以通过多种方式选择要扩展哪条链。矿池给矿工们提供一个区块,实际上只需要说“挖这个块”,矿工们就开始挖矿直到有人挖出这个区块,然后矿池给他们提供下一个区块。矿工们不会自己跟踪不同的分叉,他们通常会假设矿池是诚实的,并且会挖你希望他们挖的代币/分叉。

许多矿工没有运行节点,因此他们不会验证共识规则。当矿池决定它们也不验证区块,而是在无效区块之上进行“SPV挖矿”时,就导致了“以前出现的问题”。作为一名矿工,你应该想知道你的时间和金钱没有被你使用的矿池浪费掉。

一个场景:

你是一名矿工,是Pool_A的一部分。你会因为你提供给矿池的哈希算力而收到源源不断的支付费用。你已经完成了计算和检查,而且这永远不会改变。

Pool_A的运营者决定使用你的哈希算力为另一个处于危险中的链提供“生命支持”。一个你不关心、可能不喜欢或认为是竞争者的链。矿池继续为你的SHA256计算平台支付“市场价格”的费用,但你的哈希算力并没有用在你所认为的链上挖矿。(蓝狐笔记注:现实中已经出现类似的情况。)

由于现在有一整个矿池在一条不同的链上挖矿,网络的区块生产速度减慢,奖励减少——并且市场可能被愚弄,认为另一条链有比实际上更多的支持,这会降低你支持的链的潜在价值。作为一名矿工,这可能是你想要避免的一种情况。不幸的是,这种情况在现实生活中已经发生了:

https://www.reddit.com/r/btc/comments/9y5qpj/roger_ver_calvin_if_you_happen_to_watch_this/e9yj4fy/?context=10000

https://www.reddit.com/r/btc/comments/9x2ekv/all_poolbitcoincom_hashrate_to_mine_abc_chain_for/e9ozqes/

5:矿池使用矿工的哈希算力进行不诚实挖矿

考虑一下上面的场景,这是用来说明这将如何进行的一个最好的例子:矿池对矿工的意图是“诚实的”,他们至少是“试图”补偿他们认为的财务负担。他们让矿工们抬起头来,告诉他们如果他们不喜欢,那么就离开——并非总是这么简单。如果他们不诚实怎么办?

分配的哈希算力是矿池对世界发出的信号,但不一定是矿工们打算挖的。

如果一个矿池显示他们正在挖两条链,分别为80%和20%的黄色和绿色,而你正在通过他们挖绿色链,你怎么知道他们是诚实的,只有20%的矿工支持这条链?他们可以单独告诉每一个矿工,他们是那20%,他们是唯一支持它的人,而事实上并不是。

矿工们将不得不通过其他渠道进行协调,累加他们的哈希算力以查明是否被欺骗。主要的问题是,许多矿工是私密的,许多人希望保持私密,并且应该保持私密。像这样协调以避免被欺骗和操纵是一个不切实际的解决办法。

这类谎言不仅允许完全利用所有矿工的联合哈希算力,而且造假可能影响市场对每一条链的估值。任何重视比特币网络长期健康的人都希望避免这种情况。

6:矿池利用你的哈希算力支持某一提案

执行这种操作甚至不需要实际的链分叉。由于矿池在实际分叉之前代表他旗下的所有哈希算力发起了投票,像下面这样的情况会导致80%的哈希算力支持或反对某个提议或分叉。

考虑到投票不是财务承诺,这样做的风险很小。如果你想尝试将市场转向你想要的方向,只需要说服运行这些矿池的少数人临时发出支持信号。如果它失败了,就像我们见证过的NO2X,不会对矿池造成任何损失。不管结果如何,每个人的哈希算力仍然有效。

每列代表一个矿池。每列的顶部代表该矿池拥有的哈希算力,而底部则代表使用该矿池的其他矿工的种类。

没有人确切知道所有矿池实际拥有的哈希算力百分比与使用矿池的其他矿工拥有的百分比,但额外的透明度无疑会有效地为沉默的大多数哈希算力带来好处。

没有人想要另一个NO2X场景,也没有人能够“决定”大多数人在他们真正不支持的情况下支持什么。如果几年前BetterHash就已经存在,也许NO2X运动就没必要发起了。

矿工们没有为Segwit2X投票,是矿池投的。

结论:观点很重要

我预计人们在阅读本文时会有两种不同的常见反应,它们都是我从少数读者那里得到的。我认为重要的是要为读者(也就是你)强调这一点并解决这个问题。

1.“我不知道矿池有这么大的能量。”

2.“这可以使矿池看起来比实际拥有更多的控制权。”

现在,对于“元考虑因素”,乍一看,人们可能会认为:

“第一个人可能对挖矿或者比特币不太了解,第二个人已经接近了真相,可以充分了解细微差别并且更恰当地衡量这些场景。

另一种可能的看法是:

“第一个人提供了一个新的、真实的视角来了解这个系统中的权力平衡,而第二个人已经存在了一段时间,对事情的运作方式和潜在威胁变得过于舒适和不敏感。”

这两种初始反应都是合理的。这两个元考虑因素也都是有效的。如果矿池没有滥用系统当前设置的潜在可能,那么就无法驱动去开发更好的协议,你也不会阅读本文。相反,如果矿池对比特币构成了如此严重的威胁,那么到目前为止,它们已经以无法弥补的破坏性方式滥用了自己的权力。

除了这些两极分化的观点,我希望你的收获是这样的:

需要实现BetterHash,因为BetterHash客观上比我们现在拥有的更好。不应该存在矿池滥用和网络攻击的可能,我们可以简单地让矿工运行他们自己的节点从而创建自己的区块来缓解这些问题,并且使用一个更好的矿池协议,它围绕简单但根本的改变而构建。如果我们不提前解决我们知道如何解决的问题,总有可能出现严重的问题,所以让我们来解决它吧。

声明:此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网站所提供的信息,只供参考之用。

点击阅读全文