
咱平时去银行存钱,银行的账本都在它自己的中心服务器里存着,这就是中心化数据库。要是有人能进到这个数据库,不管是银行内部员工还是黑客,数据就可能被破坏或者修改,不太安全。
现在有个新技术叫区块链,它就像是个去中心化的数据库,也可以说是分布式账本。打个比方,这个账本不是放在一个地方,而是存在全球成千上万台电脑上。每个人都有自己的账本,通过网络同步。要是有人增加了一笔交易,就会通知其他人验证,然后大家把这笔交易记到自己账本里。这些账本是由一个个包含交易信息的区块按顺序连起来的,这就是区块链名字的由来。
但问题来了,这么多人都有账本,要是有人在自己账本上乱写交易信息咋办?这么多账本怎么保证记得都一样呢?这就需要区块链的共识机制来解决。简单说,共识机制就是让分布式系统里所有节点的数据都一样,对交易记录这些提案能达成一致。不过分布式系统里节点多,情况很复杂,像节点可能会出故障,网络通信也可能被干扰,这就增加了保证一致性的难度。
区块链有三种类型:
- 公有链:就像住在公寓里,谁都能进出。全世界的人都能随时读取数据、发送可确认交易、竞争记账。它被认为是“完全去中心化”的,没有谁能控制或篡改数据。一般会用代币机制鼓励大家竞争记账,保证数据安全。
- 联盟链:好比是几个公司共建的小区,只有特定的机构能进出。有若干个机构一起管理,数据只允许这些机构读写和发送交易,属于“部分去中心化”。
- 私有链:这就像自己盖了一栋房子,只有自己家人能住。写入权限由某个组织或机构控制,参与节点有限且可控,交易速度快、隐私保护好、成本低,还不容易被攻击,很多大型金融机构喜欢用。
为了解决分布式一致性问题,有很多种共识机制,它们各有特点,适用于不同场景:
1. PoW(工作量证明机制):可以把它想象成一场挖矿比赛。网络上每个节点都在用SHA256哈希函数计算一个不断变化的区块头的哈希值,就像在不停地挖宝藏,只有算出的值符合要求才行。在比特币网络里,做这个计算的人叫“矿工”,这个过程叫“挖矿”。挖矿很费时间和精力,所以会给矿工一些比特币作为奖励。它的好处是完全去中心化,谁都能参与。但缺点也很明显,特别费电,达成共识要花很长时间,效率不高,不太适合商业使用。比特币和莱特币用的就是这种机制,以太坊前三个阶段也是,不过第四阶段就不用了。
2. PoS(股权/权益证明机制):PoS认为,手里币多的人攻击网络的可能性小。创建新区块时,矿工要创建一个“币权”交易,能得到一些币。而且根据每个节点持有的代币比例和时间,也就是“币龄”,来降低挖矿难度,这样就能更快找到随机数,缩短达成共识的时间。和PoW比起来,PoS更节能、效率更高。但它也有问题,因为挖矿成本低,可能会被攻击,而且本质上还是需要节点挖矿运算,在商业领域应用也有困难。点点币和未来币就是用的PoS机制。
3. DPoS(股份授权证明机制):DPoS是为了解决PoS的问题出现的。它有点像选班干部,每个持有系统原生代币的人都能投票。大家投票选出理事会成员,也能对平台发展的议题表态。持币人还能把投票权授权给别人。DPoS由比特股项目组发明,持币人选出代表来生成和验证区块。这些代表轮流干活,收益平分。它的优点是参与验证和记账的节点少了,共识验证时间短,交易效率高,适合企业级应用。不过也存在一些问题,比如很多人不投票,而且整个机制还是依赖代币。比特股就采用DPoS机制。
4. PBFT(实用拜占庭容错算法):PBFT是一种基于数学证明的算法,就像做数学题,要经过三个步骤才能得出正确答案。它能保证只要系统里正常节点超过三分之二,就能达成一致的共识结果,最多能容忍三分之一的节点出问题。Hyperledger Fabric v0.6就用的PBFT,v1.0还推出了改进版本。它适合私有链和联盟链。
5. DBFT(授权拜占庭容错算法):DBFT是在PBFT基础上发展来的。这里面有两种参与者,一种是专门记账的“超级节点”,另一种是普通用户。普通用户根据持有的权益比例投票选出超级节点。需要记账时,从超级节点里随机选一个人出方案,其他人按照少数服从多数的原则表态。如果超过三分之二的超级节点同意,这个方案就通过。NEO这个平台就用的DBFT算法。
6. SCP(恒星共识协议):SCP是恒星这个支付协议用的共识算法,它基于联邦拜占庭协议。和传统的拜占庭协议不同,它既能去中心化,又能做到拜占庭容错。
7. RPCA(Ripple共识算法):RPCA是Ripple支付协议用的算法。在Ripple网络里,交易由客户端发起,经过追踪节点和验证节点广播到整个网络。验证节点会验证交易,只有在可信任节点名单(UNL)上的节点的提案才会被考虑。当交易获得足够多的票数,就会被写入账本。这个算法效率高,交易确认时间只要几秒钟,适合联盟链或私有链。
8. Pool验证池共识机制:Pool验证池共识机制是在Paxos和Raft这两种分布式一致性算法基础上开发的。Paxos和Raft就像选领导人,参选者要让大多数人投票给自己,当选后大家就跟着他操作。Pool验证池共识机制就是在这两个算法的基础上,再加上数据验证。
总的来说,共识机制对区块链特别重要,就像交通规则对交通一样。不同的区块链需要不同的共识机制来保证正常运行。常见的共识机制有PoW、PoS、DPoS等,它们各自有优缺点和适用场景。在选择共识机制时,要根据具体情况来决定。