分布式共识

3年前更新 0 0

区块链的核心就是怎么达成分布式共识维护一致性帐本的一种技术。

收录时间:
2022-12-08

区块链的核心就是怎么达成分布式共识维护一致性帐本的一种技术。所有的节点必须定期更新彼此之间的不断复制的状况,通过专门的槽位来识别每一个更新。当所有节点更新了他们的分类账并放映的值相同时,就可达成共识,会将协商一致的声明具体化并发布至它们的分类账副本去。验证池机制/POOL验证池机制是基于传统的分布式一致性技术和数据验证机制的结合,它使得在成熟的分布式一致性算法(Pasox、Raft)基础上,不需要代币也能实现秒级共识验证。

首先一个是它的网络结构,因为如果我们要维护一个分布式帐本的这么一个网络结构的话,我们就不能用右边,外围有很多客户端的结构,我们有左边点对点网络连接的结构,所以在区块链技术里面,所有的节点通常来说他们在网络上的地位是对等的。

第二个需要一些数据的结构,通过密码学的算法,能够证明所有的这些交易它的数据是真实的没有被篡改过的。这些交易就会用私钥来进行签名,签名的私钥任何人都不能够去篡改,即便这区块链里面负责记帐的角色,也是没有办法伪造这交易,因为没有对方的私钥。

有了这样一个数据结构之后,就让每一笔交易的层面做到数据是不能篡改的,但是仅仅是一笔交易的数据不可篡改其实还不够,因为交易的顺序往往也非常重要,所以就要过渡到共识机制里面。

共识机制到底是什么?其实它并不是说解决对网络里面的是非的判断,而是说当我在网络中发生了两个可能会产生冲突的交易时候,我去选择哪一个,或者再换一句话说,如果有两个事实都是可以成立的时候,去选择哪一个,这是一个决策的机制,而不是判断是非的机制。

在这共识机制里面目前有几个主流的具体机制,一个叫工作量证明,这是比特币,会消耗很多的能量,第二个权益证明,另外还有一种BFT,Quorum法定的投票人数。所以这三种共识机制是目前比较主流,现在来看前两种大多数是公有钥,后面是私有钥上比较全面。

但是如果是一个公有链,没有强制性来保证前面来遵守,但是大家不遵守一切都是没有用,没有意义,所以还需要一个博弈机制。

有了一个博弈机制以后,可以对遵守规则的人进行奖励,那些遵守比特币规则的矿工他们会挖到比特币作为奖励,如果不遵守规则你可以给帐户里面加上很多的比特币,但是那些比特币别人是不接受的,没有任何意义和价值。所以这是公有链所独有的价值。

分布式系统的诞生,主要是为了提供单机无法进行的计算和存储、提高吞吐量、增加容错性等。而在现在的互联网架构下,分布式系统由于大量使用廉价的商用机器,节点故障是不可避免的。

在这种情况下,多个机器如何像一个整体一样工作,是件很困难的事情,这里一致性算法就起到了至关重要的作用。

以分布式 KV 存储系统为例,我们来先搞清楚分布式一致性到底解决的是什么问题。

数据库常用 redo-log 来实现事务等能力,那当这样的存储系统不再是单机节点,我们通常也需要采用多台机器来存储日志,把同样的日志在不同的节点都存储一份。这样如果有一台节点挂了,整个系统还可以用备份节点来提供日志的能力。让多台服务器存储相同顺序的多条相同指令,也就是“日志”,可以帮助我们实现复制状态机。

每一个状态的变更记录都会先在日志中存储并 commit,之后才 apply 到状态机中修改对应的状态,这个设计能在分布式系统中解决许多和容错性相关的问题。

既然涉及多个节点存储同样的一份东西,怎样才能保证多个独立的节点所存储的内容是一致的呢?这就是我们常说的“一致性问题”了。

相关导航

哈希/Hash

哈希/Hash

Hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。