我一直认为比特币只是一种“协议”或“合同”。不同的节点在不同的硬件上运行自己的实现。有些是有效的,有些不是,他们必须同意比特币协议才能在这个生态系统中发挥作用。
但我发现实际上有一个集中的比特币代码库,经常更新!他们如何确保每个节点都更新到最新的代码?他们如何确保代码可以为每一个硬件编译?或者,我想最重要的是,历史中是否存在任何向后不兼容的更改,需要每个节点进行更新?
比特币核心
分权
源代码
分享
改进这个问题
跟随
10小时前编辑的
10小时前问的
仇杀
11333青铜徽章
新贡献者
1
这能回答你的问题吗?谁批准比特币的功能和错误代码审查10小时前的普拉扬克
@是的,谢谢,谢谢。我想还有一个问题:历史上是否有任何向后不兼容的变化需要每个节点都更新?比特币核心——10小时前的仇杀
添加评论
1个答案
1
我一直认为比特币只是一种“协议”或“合同”。不同的节点在不同的硬件上运行自己的实现。有些是有效的,有些不是,他们必须同意比特币协议才能在这个生态系统中发挥作用。
没错。有几十种节点、钱包和其他各种使用P2P协议的软件。
有一些可选的特性和新的东西被添加到协议中,但这些几乎都是以兼容的方式完成的:在支持它们的对等方之间协商,在不支持它们的对等方之间退回到旧的替代方案。
其中一部分是通过协议版本进行协商的,协议版本过去只是比特币客户端的版本号,但自2011年12月以来,这两个版本是分开的。
现在大多数比特币协议的实现都可以兼容到比特币0.2.10版本(从2010年6月开始,那时只有一个实现),那时校验和被添加到协议中。使用一个协议适配器(一个能说新旧版本的节点),今天编写的软件甚至可以用最早的代码说话(比特币0.1.02009年1月)。
但我发现实际上有一个集中的比特币代码库,经常更新!
比特币核心(Bitcoin Core)是一个项目,它维护的实现是Satoshi对原始代码库的改进。它通常被称为参考实现和开发的焦点。然而,它不是唯一的实现,甚至不是唯一的完全验证节点实现,它也不决定协议规则是什么(尽管有些可选的协议功能只在比特币核心中实现)。
他们如何确保每个节点都更新到最新的代码?
他们没有;严格地说没有必要。协议规则和关于哪些块有效的规则实际上没有改变。更新有很好的理由(例如安全性改进、速度改进、新功能),但这是每个人的个人选择。比特币核心非常刻意地没有自动更新功能,因为客户端的维护人员认为这会给网络带来太多的控制。
他们如何确保代码可以为每一个硬件编译?
广泛的持续集成测试。所有的代码更改都在各种平台上进行测试,包括Windows、MacOS、Linux(针对ARM32、ARM64、x86\u64、RISC-V、POWER)以及最近的Android。更多的系统可以工作,但不能保证。
或者,我想最重要的是,历史中是否存在任何向后不兼容的更改,需要每个节点进行更新?
是的,但它们非常罕见(到现在都是古老的历史)。
比特币0.2.9(协议版本209)在每个协议消息中引入了校验和。最初这些都是协商的,就像其他协议特性一样。然而,比特币0.2.10(2010年6月)实现了这一功能,因此从2012年2月起,校验和将成为强制性的,并包含在用于协商版本本身的消息中。这意味着到2012年2月,0.2.9之前的节点软件停止工作。
另一个不兼容的来源是网络的共识规则。这些规则决定了哪些事务和块是有效的,也是系统中最复杂的部分。整个网络必须以相同的方式有效地执行它们,否则网络就有分裂成不同货币的风险。如果你想要更多的信息,这个网站上有很多关于这个话题的问题,但简短的总结是,现在几乎所有对这些规则的更改都是作为所谓的“软分叉”来完成的:只收紧哪些块是有效的规则,这意味着网络是安全的,只要大多数hashrate也强制执行这些规则。其他更改是cal
另一个不兼容的来源是网络的共识规则。这些规则决定了哪些事务和块是有效的,也是系统中最复杂的部分。整个网络必须以相同的方式有效地执行它们,否则网络就有分裂成不同货币的风险。如果你想要更多的信息,这个网站上有很多关于这个话题的问题,但简短的总结是,现在几乎所有对这些规则的更改都是作为所谓的“软分叉”来完成的:只收紧哪些块是有效的规则,这意味着网络是安全的,只要大多数hashrate也强制执行这些规则。其他的变化被称为硬分叉,除了2013年的一个值得商榷的变化(由于数据库层的变化,请参见bip50),自2010年8月以来没有任何变化。有关详细信息,请参阅https://blog.bitmex.com/bitcoins-consensus-forks/.
免责声明:我是比特币核心的贡献者和维护者,并参与了上述一些更改。209协议的校验和更改是在我的时间之前。
分享
改进这个答案
跟随
9小时前编辑的
10小时前回答的
彼得·维尔
67.4k88金徽章145145银徽章20220铜徽章
谢谢。奇怪的是,在以太坊等其他著名的密码中是否存在显著的向后不兼容的变化?我只是想知道,一旦人民币升值到足够大的程度,这个社会怎么会同意一个向后不兼容的变化。2012年,比特币仍然很小马特·弗兰克1小时前
添加评论