长期存在的区块大小争议以及最近推出的几种新的比特币实现方式突显出,并非所有比特币节点都应用完全相同的规则-也许更重要的是,在实施这些规则时,并非所有开发团队都应用类似的策略.
背后的开发团队 比特币核心, 比特币历史悠久的“参考客户”,在实施规则更改(例如提高区块大小限制)之前,需要社区达成广泛共识,而其他更改则未遵循相同的标准.
同时,一些比特币分叉,例如 比特币LJR, 通常被开发社区所接受,而其他人,例如 比特币经典, 引起很多争议。一些人认为这是不一致的.
但是这种差异可以解释。在某些分支中实施的某些规则更改对比特币网络的影响与其他方面有很大不同。或更具体地说:某些规则更改会影响比特币网络的不同层。其中一些规则更改可以拆分比特币网络,而另一些则不能.
澄清这些差异, 比特币核心 开发商和 西弗雷克斯 首席执行官埃里克·隆布罗佐(Eric Lombrozo)最近提议在所有比特币改进提案中标记相关层。这些是他指定的比特币网络上的四个主要层 BIP 123, 以及每个共识的重要性.
共识规则
共识规则是比特币最重要的规则。它们确定了区块奖励中包含的比特币数量,挖矿难度,所需的工作量证明类型以及实际上的区块大小限制等诸多方面.
这些规则非常重要,因为它们确定哪些块被完整节点视为有效。如果所有完整节点都应用相同的共识规则,则可以确保它们都维护相同的区块链副本.
但是,如果不同的节点应用不同的共识规则,则它们冒接受其他节点拒绝的块的风险。这种差异可能导致不同的节点维护完全不兼容的区块链版本,从而有效地分裂了比特币网络.
比特币的共识规则可以通过两种方式进行更改。将附加规则添加到协议的更改(使先前有效的块无效)的更改称为软分叉。软叉需要大多数散列功能来支持此更改。根据新规则生产的块在旧规则下也将有效,因此未升级的节点仍将遵循最长的链条.
但是,未升级的矿工可能会根据新规则生成无效的区块,从而浪费了哈希功能。而且,未升级的完整节点将不再能够验证块是否遵守新规则,从而要求它们等待额外的确认以实现相同级别的安全性。.
由于这些原因和其他原因,Bitcoin Core开发团队表示,通常需要95%的哈希算力的超级多数才能同意软分叉.
从协议中删除规则(使之前无效的块生效)的共识规则更改称为硬分叉。硬分叉要求网络上的所有完整节点都采用。任何未实施更改的节点可能根本不会遵循最长的链,因为它可能会认为该链无效,而是停留在“旧”链上。如上所述,这可能会拆分比特币网络。这种分裂将持续多久,这实际上不是技术问题,而是有关政治,社会学,经济学,博弈论等的辩论.
在最坏的情况下,对没有达成共识的共识规则进行软分叉更改可能会(在最坏的情况下)导致少数矿工浪费哈希能力,并(略)降低整个节点的安全性.
在最坏的情况下,在没有共识的情况下硬性更改共识规则可能会分裂比特币网络.
对等层
比特币网络的对等层涵盖了完整节点如何共享数据以及它们共享什么数据。这包括用于发送和接收事务和块的协议规则,以及特殊数据包,例如隔离证人或可逆Bloom查找表.
最重要的是,对等层必须确保新的块以及通过验证整个块所需的数据包遍及整个网络。如果此中继策略失败,则可能导致网络分裂,其中不同节点持有不同版本的区块链-至少直到区块再次找到遍及整个网络的方式为止.
但是,与共识规则相反,如果不是每个节点都应用完全相同的中继策略,则不一定是一个大问题。由于大多数节点都将块转发给至少八个对等方,因此即使某些节点未正确转发,此放大器也应确保所有节点都接收到所有块.
在中继事务方面,节点还有更多的回旋余地。如今,比特币网络上的大多数节点都采用“先见之明”的策略:如果它们收到两个或多个冲突的交易,则拒绝后者。但是,越来越多的节点采用“按费用替换”策略的变体,这意味着它们选择了包含最高费用的交易,而不论哪个先发生。此外,某些节点完全拒绝某些类型的交易,或者根本不中继任何交易.
也就是说,矿工最终决定他们将哪些交易包含在区块中,以及原因。仅当事务中继策略发生巨大变化或具有足够的限制性时,才可能仅凭这些原因就无法确定哪些事务已被确认.
在最坏的情况下,在没有共识的情况下更改对等层可能会分裂网络。如果无法在整个网络中找到障碍,就存在这种风险。但是,重新连接网络后,拆分将自动解决.
如果更改仅涉及交易,则在最坏的情况下,它们可能阻止某些交易的确认。这也可能降低未确认交易的可靠性。但是它不能分割网络.
应用程序编程接口和远程过程调用
应用程序编程接口(API)和远程过程调用(RPC)层是对等协议之上的通信层。许多比特币软件应用程序(例如移动钱包和区块浏览器)通过连接到API或软件库,通过这些层与区块链进行通信.
如果这些层之一发生故障,则所有连接的软件应用程序将无法与比特币网络可靠地通信。移动钱包不会知道他们是否收到了比特币,而区块链浏览器也无法判断是否找到了新的区块。但是,所有其他比特币用户都不会注意到任何事情。网络本身仍然运行良好.
在最坏的情况下,未经一致同意而对API和RPC层进行更改可能会使这些层的用户与比特币网络完全断开连接。但是,这样的改变不能分裂网络本身.
应用领域
最后,应用程序层是指比特币软件应用程序如何创建和使用某些类型的数据,这些数据实际上并没有直接接触网络,但是对于跨应用程序同步很有用.
例如,这包括地址格式,私钥生成或钱包备份。如果一个钱包生成了另一个钱包认为无效的地址,则无法在它们之间进行交易。或者,如果一个钱包使用一种方法创建备份地址种子,而另一个钱包使用另一种方法,则用户将无法使用每个钱包恢复其私钥。钱包备份也是如此.
在最坏的情况下,未经一致同意对应用程序层进行更改可能会阻止某些用户进行相互交易,并带来其他不便。此类更改无法拆分网络。感谢您到Lombrozo寻求技术指导.