分布式区块链网络面临的一个难题是就哪些交易是合法的、哪些区块是有效的以及哪条链是最长的达成一致意见。为了解决这个问题,每个区块链都实现了一系列共识规则,每个用户或节点都必须遵守。
共识规则是一组特定的规则,它们指定了各种区块链属性和程序。这些规则在验证区块及其中的交易时需要遵循。只要它们被大多数节点遵守,就能保持一致意见,整个操作就能继续进行(这适用于工作量证明区块链,而一些替代的共识算法使用的是不太民主的方法)。
为了达成共识,大多数节点必须单独接受单一的数据值,并且必须一致地这样做。即使有些节点不遵守规则或不可靠,大多数也必须达成共识。
共识规则对于实现数千个区块链网络上的节点之间的同步和协议非常必要。由于每个节点实际上都存储了区块链的一个副本,因此需要一种机制,让节点能够选择一个可靠的区块来继续链条。这就是共识规则发挥作用的地方。
每个区块及其内部的每笔交易都需要符合共识规则。此外,这些规则还决定了区块链的基本属性。这包括从区块时间、区块大小、最大供应量、证明方式(通常是工作量证明)、到交易大小、签名要求、可用的交易输入和输出等等。它们还决定了验证者必须检查区块链的协议。
但是,谁首先决定共识规则呢?就比特币而言,它们最初是由中本聪编写的,但由于他将软件开源,社区现在决定规则。任何规则变更都需要社区大多数人的同意。分歧可能会导致分叉。
规则不是由区块链存储和执行的,而是由客户端软件执行的。因此,用户希望遵循的规则取决于他们选择运行的客户端。最受欢迎的比特币客户端是比特币核心,它是中本聪原始客户端的延续。
全节点在维护共识规则方面非常重要,它们存储了整个区块链的副本。这些节点根据规则验证交易和区块,并拒绝任何不遵循它们的区块。每当挖出一个新区块时,每个全节点都会根据共识规则对其进行验证。如果一切正常,它就被接受为链的延续。如果不是,它就被拒绝(或称孤立)而其他区块取而代之。
此外,矿工倾向于只从记忆池中选择有效的交易放入新区块。他们可以包括无效交易(例如,作为尝试分叉区块链的手段),但由于他们的区块被拒绝,冒着失去挖矿奖励的风险。
在共识制定中,无需信任可能是个问题。如果区块链不需要其用户之间的信任,我们有什么保证节点不仅仅遵循自己的私利?节点为什么不只是验证它喜欢的交易并审查其余的?
这种行为是不可接受的,因为它将允许行为人重新花费已经花费的加密货币,这个过程通常被称为双重支付。
这种情况不发生(或者说很少发生)的主要原因是共识规则。如果全节点开始验证虚假交易并传递无效区块,它们将被其他节点禁止(禁止过程通常是自动化的)。由于区块链以无需信任的基础运作,每个节点都必须自己得出交易和区块有效性的结论。这样,当结果相比较时,不可靠的节点很快就会被淘汰。
在分布式区块链网络上实现共识是不可或缺的。共识规则是一个解决方案,它允许网络在用户之间无需任何信任的情况下运作。虽然这些规则是必要的,但普通用户不需要担心它们。
如果你通过交易所操作加密货币,它会确保你的加密交易符合共识规则,所以你不需要担心它。这就是为什么很多人更喜欢通过可靠的交易所进行交易。