如何防止毒块攻击
扫描二维码
随时随地手机看文章
本文将解释与链上网络扩容、区块传播和其它主题相关的技术概念。2009年,世界上的第一个比特币节点诞生了。在这里,节点指的是运行了可以为比特币网络提供服务的专门软件的计算机。随后交易将会被存储到区块中并向网络广而告之,这个区块随后将会被传播到网络上的所有节点。由于用户对比特币的需求不断增加,一个区块可能无法尽快传播到各个节点。
通过致密区块来摆脱传播困境并解决其它的新问题
比特币核心开发人员已经认识到了上述问题,并研究出了被称作致密区块的解决方案。这个方案非常简单。致密区块方案仅公告交易的标识符列表,而不是在比特币网络上公告每一笔交易。由于几乎所有的交易都会被每个节点所存储,因此接收到公告信息的节点可以找到已经识别的交易并据此构建区块,然后再安全地验证区块的有效性。如果缺少任何交易,该节点还可以从关联节点申请这些交易的数据。致密区块可以减少对带宽的要求,但它会引入了一个可能的新步骤——申请缺失的交易的数据。
由于申请缺失的新交易的数据需要双向沟通,因此它可能会造成延迟。Bitcoin Unlimited已经计划降低对申请缺失交易的数据的需求了。举个例子,如果区块需要某个节点的数据,那么包含所有已知交易的布隆过滤器就会发送申请。这样一来,发送数据的节点就可以预测到申请数据的节点缺失了哪一笔交易并将交易的标识符列表发回给后者。这样的操作也称Xtreme thinblocks或Xthin传播。
毒块攻击延缓区块传播
上述协议和之前的另一篇文章中提及的Graphene协议都依赖于可传播交易资讯的节点,并以此提高区块传播的效率。但如果交易数据不可用,那么这些协议最终将无法提高区块传播的效率。
实际上,矿工可以选择将区块中的交易存储到尚未向网络广而告之的区块,即所谓的毒块。它不仅会使区块传播无法加速,而且,失败的区块传播加速还会延迟实用信息的共享。因此,毒块将会导致网络上的卡顿,有些节点可能已经更新了创建时间更早的某些区块的信息,而有些区块还需要继续跟进。在这种情况下,毒块更有可能成为孤块并被网络所忽略。
毒块只能由矿工创建。不过,在考虑到经济激励的情况下,矿工一般都不愿意创建毒块。换句话说,网络有着足够的灵活性来抵制毒块并维持网络的正常运行。