我们前几期讲到了工作量证明(POW)与权益证明(POS),里面提到POS机制虽然考虑到了POW的不足,但依据权益结余来选择,会导致首富账户的权力更大,有可能支配记账权。
而今天,我们要来讲讲TRT金牛链采用的共识机制(DPOS+PBFT)。
DPOS ,股份授权证明机制
DPOS的出现正是基于解决POW机制和POS机制的这类不足。
想象这样一家公司:公司员工总数有1000人,每个人都持有数额不等的公司股份。每隔一段时间,员工可以把手里的票投向自己最认可的10个人来领导公司,其中每个员工的票权和他手里持有的股份数成正比。等所有人投完票以后,得票率最高的10个人成为公司的领导。如果有领导能力不胜任或做了不利于公司的事,那员工可以撤销对改领导的投票,让他的得票率无法进入前10名,从而退出管理层。这就是对DPOS共识机制的一个形象描述。
POS的本质是听有钱人的,DPOS是投票产生代表,由代表们去做一个去中心化节点的集合。听起来是不是很熟悉?有点像资本主义对于社会主义。这样做的优点是相对于POW,DPOS节省了能源消耗,对于POS,它提高了作恶的成本。
PBFT ,实用拜占庭容错算法
刚开始是在MIT的Miguel 和 Barbara Liskov在1999年的学术论文中提出的,他们的本意是为设计一个低延迟存储系统设计系统,将算法复杂度由指数级降低到多项式级,使得拜占庭容错算法在实际系统应用中变得可行。节点将签名所有通过节点的消息,以验证其准确性。当得到一定数量的签名通过,此交易就被认定为有效。
这个数值是2/3,只要系统中有2/3的节点正常工作,整个链就可以保持一致性。
PBFT协议通信模式(不感兴趣的小伙伴可以略过)
其中C为客户端,N0~N3表示服务节点,特别的,N0为主节点,N3为故障节点。整个协议的基本过程如下:
1)客户端发送请求,激活主节点的服务操作。
2)当主节点接收请求后,启动三阶段的协议以向各从节点广播请求。
[2.1]序号分配阶段,主节点给请求赋值一个序列号n,广播序号分配消息和客户端的请求消息m,并将构造PRE-PREPARE消息给各从节点;
[2.2]交互阶段,从节点接收PRE-PREPARE消息,向其他服务节点广播PREPARE消息;
[2.3]序号确认阶段,各节点对视图内的请求和次序进行验证后,广播COMMIT消息,执行收到的客户端的请求并给客户端以响应。
3)客户端等待来自不同节点的响应,若有m+1个响应相同,则该响应即为运算的结果。
实用拜占庭容错机制是一种采用“许可投票、少数服从多数”来选举领导者并进行记账的共识机制。由于特别适合联盟链的应用场景,实用拜占庭容错机制及其改进算法为目前使用最多的联盟链共识算法。