比特币的区块链矿池和风险规避浅谈

比特币挖矿会产生非常高的回报,但对于每一个小矿工来说,获得高回报的可能性很低。一个全天候运行的ASIC挖到下一个区块的概率小于60万分之一,这意味着几年内也发现不了一个区块。这种高风险/高回报的结果并不适合大多数人。许多人倾向于在短时间内获得小而稳定的收入(这实际是在规避风险)。例如,持续的固定收入可以用来支付挖矿电费。

矿池的形成:矿池是矿工联盟,联盟整合矿工们拥有的计算资源来挖矿,并在成员之间共享报酬。由于矿池的矿工作为一个整体比每个单独矿工挖掘到区块的频率要高得多,所以联盟可以在更有规律的基础上,为每个矿工提供小额的持续报酬。从比特币网络的角度来看,矿池只是单一的挖矿节点。矿池成员与矿池服务器进行交互,该服务器将正在处理的下一个区块头信息发送给所有矿工。每个成员都试图解决与这个区块相对应的加密难题(事实上,他们使用同一区块的变体,并且用略有不同的工作量证明,以避免重复劳动)矿工只要找到解决方案,就会将其发送给矿池管理员,然后由管理员将区块发布到网络。该区块为矿池提供报酬,然后管理员将报酬分发给所有在矿池中的矿工(扣除一些小额费用)。

池内报酬分配和可能的操纵方法:许多矿池是公开的,并对任何有意愿的参与者开放。显然,这些矿池必须采取措施来确保只有真正有助于挖矿工作的成员才能得到报酬。为此,每个矿池成员把工作量证明的部分解(partial solutions)发送到矿池---这些部分答案“接近”成为完整区块。相比完整答案,部分答案更普遍,任何尝试解决这个难题的参与者都会提供稳定长久的算力。这表明矿工的确参与了挖矿,并且可以评估每个矿工对矿池算力的贡献量。因此,矿池会根据矿工挣得的份额来对他们进行奖励(份额取决于每个提交的部分答案)。

幸运的是,找到难题有效答案的矿池成员无法窃取报酬。密码难题取决于矿池管理员控制的区块头。密码难题对块本身的内容(通过加密哈希)进行编码,包括报酬的接收者。找到特定区块头的难题的有效答案之后,除非使难题答案失效,否则任何人都不能篡改区块头。尽管如此,矿池还是容易被唯利是图的矿工操纵。

1. 矿池迁跃。在比特币的早期阶段,矿池根据每个矿工提交的部分答案的数量,简单地将来自最新区块的报酬按份额分配给所有矿工。份额数目是由同一矿池所创建的前一区块来计算的。一些矿工提出了一种增加报酬的方法:如果矿池有一段时间没有找到区块,那么很多部分答案(份额)就会累积起来。如果矿池发现了一个区块,它的报酬将在很多份额中分割。产生额外份额的成本和以前一样高,而预期回报却因上述原因变低了。相反,矿工可以切换到最近产生区块的其他矿池,因为在这个矿池,每个额外的份额都会获得更高的预期回报。如果许多矿工都采取这种行为,那么理性的矿工就会完全抛弃那些暂时未成功获得区块的矿池。因此,抵御矿池迁跃的报酬方案被迅速设计开发出来,并被大部分矿池所采用。

2. 区块截留攻击。尽管矿工无法窃取成功的答案所带来的区块奖励,但他仍然可以否决池中其他矿工的报酬。矿工可以选择丢弃所有成功答案,而只向矿池管理员提交部分答案。这样,当其他人找到完整答案时,该矿工会收到一定份额的奖励,而他并未对该矿池提供任何实质贡献。丢弃成功的答案妨害了矿池,但只让攻击者损失了少量收入。尽管会对攻击者造成损失,但在某些情况下攻击者投入算力来妨害他们的竞争对手是值得的:攻击者矿池通过将一些矿工注册为受害者矿池中的工作人员而渗透其中,然后这些矿工进行区块截留攻击。经过仔细计算成本和回报,在某些情况下(取决于攻击者和受害者矿池的大小),攻击是有利可图的。为了防止这种手段,略微修改的挖矿协议被提出。在修改的版本中,矿工将无法辨别部分和完整的工作量证明,并且也不能选择性地截留完整答案。

3. 消除矿池。虽然矿池对于小型矿工是有利的,减少了他们的风险和不确定性,但是也为系统引入了某种程度的中心化。矿池运维人员实质上控制了许多矿工的计算资源,因此是相当强大的。一些研究人员提出对挖矿协议做出技术上的修改,在整体上逐渐削弱公共矿池的存在。在这个方案下,在找到了区块有效答案之后,挖掘到此区块的矿工仍能够将报酬重定向到自己(而不用使该答案失效)。假设许多矿工为自己争取报酬,矿池会因无利可图而解散。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200315A0MBCN00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券