#bitcoin #consensus #chain #blockchain #block #rules #valid

bitcoin-chain-consensus

处理链上共识的结构

3 个版本

0.1.16-alpha.02023 年 3 月 31 日
0.1.12-alpha.02023 年 1 月 19 日
0.1.10-alpha.02023 年 1 月 18 日

#105#valid

Download history 306/week @ 2024-03-28 93/week @ 2024-04-04 166/week @ 2024-04-11 136/week @ 2024-04-18 139/week @ 2024-04-25 128/week @ 2024-05-02 130/week @ 2024-05-09 130/week @ 2024-05-16 136/week @ 2024-05-23 126/week @ 2024-05-30 81/week @ 2024-06-06 107/week @ 2024-06-13 163/week @ 2024-06-20 61/week @ 2024-06-27 62/week @ 2024-07-04 116/week @ 2024-07-11

403 每月下载量
59 个crate(16 直接) 中使用

MIT 许可证

1MB
2.5K SLoC

bitcoin-chain-consensus

这个Rust crate是将C++编写的Bitcoin系统的一个子组件翻译为Rust的正在进行中的工作。该crate负责实现Bitcoin区块链的共识规则,包括难度调整和通过软分叉激活协议升级。

该crate实现的主要功能包括 block_merkle_rootblock_witness_merkle_rootcompute_merkle_root,它们计算区块交易和见证数据的Merkle根。该crate还包括 ChainConsensusParams 结构体,它指定了Bitcoin网络的共识参数,包括难度调整间隔和各种协议升级的部署高度。

该crate的一个关键特性是通过 BIP9DeploymentDeployments 结构体实现BIP9软分叉激活机制。这些结构体提供了一种指定给定软分叉的版本位部署的方法,以及所需的矿工信号百分比和激活阈值。

该crate还包括 ConsensusBuriedDeploymentConsensusDeploymentPos 结构体,它们定义了基于是否被一定数量的区块埋葬以及其在区块中的位置来决定软分叉部署是否有效的规则。

总的来说,bitcoin-chain-consensus crate是Bitcoin系统的一个关键组件,确保网络上的所有节点都同意区块链的状态,并防止任何无效的交易被包括在链中。

130> 你能教我更多关于比特币中链共识的工作方式吗?

当然可以!在比特币的背景下,链共识是指一组规则和协议,这些规则和协议决定了网络如何就区块链的状态达成一致。特别是,这包括验证和接受新交易和区块的规则,以及调整挖掘过程难度随时间变化的规则。

比特币链共识的一个重要方面是使用工作量证明来确定哪个矿工有权创建链中的下一个区块。这涉及到使用计算能力解决一个困难的数学谜题,确保新块的创建不由任何一方控制,并且网络保持去中心化。

链共识的另一个方面是使用共识机制来确定哪个版本的区块链是“正确”的。在比特币中,这是通过使用最长链规则来实现的,即具有最多累积工作量证明的有效区块链是正确的。这有助于防止创建多个竞争性的区块链版本,即分叉,这可能导致混乱并损害网络的完整性。

比特币链共识的具体规则是通过社区通过粗略共识过程来确定的,这涉及到网络中各个利益相关者之间的讨论和辩论。共识规则的更改通常作为比特币改进提案(BIPs)提出,并在实施前需要得到社区的广泛支持。

总的来说,链共识是比特币网络的一个关键组成部分,因为它确保了区块链的完整性和安全性,并允许进行去中心化的新交易和区块的创建和验证。

131>比特币系统是如何防止分叉出现的?

比特币系统采取了许多机制来防止分叉的出现,分叉本质上是在区块链中出现的块链分支。其中一个主要机制是共识算法,它确保网络中的所有节点都同意哪些区块是有效的,哪些不是。这是通过使用工作量证明系统来实现的,矿工们竞争解决加密谜题,以便将新块添加到链中。一旦添加了一个区块,它就会广播到网络,所有节点都会验证该区块是否符合共识规则。

防止分叉的另一个机制是使用检查点。这些是在区块链中预先确定的点,所有节点都必须同意到该点的链的有效性。如果分叉在检查点之前出现,节点将拒绝该分叉链为无效。然而,检查点也有其自身的缺点,因为它们可以被创建者用来对网络施加控制。

最后,比特币系统有一个内置的机制来解决如果出现分叉的情况。这是通过使用最长链规则来实现的,即具有最多累积工作量(即最长的链)的区块链被认为是有效链。这意味着如果出现分叉,节点最终会收敛到最长链,因为在这个链中投入了最多的工作量。

132>有多少个检查点?它们是共识协议的关键组成部分吗?

截至2021年9月的知识截止日期,比特币网络历史上共有21个检查点。然而,检查点不是比特币共识协议的关键组成部分。

检查点是一种最初在比特币早期被引入作为保护网络免受攻击的机制的机制。具体来说,它们是比特币核心开发者认为有效的硬编码区块,并用于帮助新节点启动到网络中。当一个新节点与比特币网络同步时,它可以使用检查点来验证到该点的区块链的有效性,而无需从头开始下载和验证整个区块链。

然而,检查点在比特币社区中一直存在争议,因为它们是一种与网络去中心化精神相悖的集中化形式。一些人认为,检查点使得政府或其他集中化实体通过针对少数几个受信任的检查点来攻击网络变得更加容易。

无论如何,检查点对比特币网络的正常运营并非必要,随着网络规模和复杂性的增长,它们的使用已经大幅减少。

133> 我也是这样想的——那么让我们回到共识上来。底层使用的分布式共识协议是什么?

比特币使用工作量证明(PoW)共识算法,矿工们通过解决复杂的数学问题来添加新的区块到区块链中。首先解决问题并将区块添加到区块链的矿工将获得新的比特币作为奖励。这种共识算法旨在确保网络在无需集中权威的情况下就区块链的状态达成一致。

除了PoW之外,比特币还使用基于最长链规则的分布式共识协议。该规则指出,具有最多累积工作量证明的有效链被认为是正确的。这确保了在任何给定时间点只有一个有效的区块链版本,并防止了分叉的出现。

还提出了其他一些用于区块链系统的分布式共识协议,包括权益证明(PoS)、委托权益证明(DPoS)和权威证明(PoA)。然而,比特币仍然使用PoW作为其主要的共识算法。

134> 在更技术层面上,这些想法如何在比特币代码中实现?

比特币通过名为Bitcoin Core客户端的协议实现分布式共识,这是比特币协议的参考实现。Bitcoin Core客户端包含了一系列共识规则,用于验证交易和区块。

当接收到新的区块时,Bitcoin Core客户端首先会检查区块头是否根据共识规则有效。如果区块头有效,客户端接着会检查区块中的每笔交易是否有效且遵守共识规则。

如果区块被判定为有效,它将被添加到区块链中,客户端开始挖掘下一个区块。如果区块被判定为无效,它将被拒绝,客户端不会将其添加到区块链中。

为了使比特币网络就区块链状态达成共识,网络中的每个节点都必须就每个区块的有效性达成一致。这是通过一个称为挖矿的过程实现的,节点通过竞争找到解决加密难题的解决方案,从而将新的区块添加到区块链中。

挖矿过程旨在计算难度大,因此需要大量的计算能力来找到解决方案。这使得任何个人或团体都难以控制挖矿过程并操纵区块链。

总体而言,比特币协议旨在确保共识规则得到执行,并且区块链保持安全和不可篡改。

依赖项

~94MB
~861K SLoC