比特币如何部署新功能并管理不同版本的兼容性?
例如,如果将新功能添加到比特币,那么如何部署和管理?也就是说,当新版本可用时,网络上的每个人都不会被迫升级?
如果没有强制升级/更新,比特币如何在网络上管理不同版本的比特币?是否有最低要求的版本以某种方式在网络中分发?
答案 0 :(得分:1)
有两种不同的变化,必须以不同的方式进行部署:
为了保持向后兼容性,即允许人们在感觉舒适时进行升级,并且不受更改的影响,比特币目前仅限于执行软叉。根据新规则有效的事务和块在旧规则下也是有效的,因此未升级的节点也会将它们视为有效,并且版本之间没有持久的分支。
在硬分叉中,网络的升级部分接受对非升级节点看起来无效的东西,因此我们有一个持久分叉,其中升级后的节点有自己的区块链,未升级的节点将拥有它们。这是一种危险的情况,因为现在有两个网络,来自一个初始网络,并且它们之间可能存在一些干扰(例如,重放攻击)。这就是在以太坊vs以太坊经典赛道中发生的事情。
软叉的一个例子是segwit提议:交易对于未升级的节点仍然有效,并且他们能够更新其分类帐的本地视图(尽管它们可能无法完全验证事务的有效性,并且升级的节点强制遵守扩展的有效性规则。另一方面,块大小的增加是硬分叉,因为未升级的节点不会接受更大的块,停留在小块分支上,而升级的节点会接受它们,从而创建一个大块分支。
这些是基本的两种更新,虽然有一些混合版本,并且分类通常不那么明确(由于系统的复杂性)。
引入新功能的另一种方法是在基本区块链之上分层附加功能,例如Lightning或Sidechains。在这些中,我们不会尝试修改区块链,这需要从大部分社区中选择加入,而是在较小的上下文中实现功能,只需要参与者选择加入,允许感兴趣的各方使用它或不。
(免责声明:我是Lightning协议的实施者)