确认单点广播权限
首先,需要介绍以下专业术语:
共识节点:达到信用准入门槛并成功申请共识的节点。
共识轮次:完成所有共识节点轮流出块的完整时间段,我们称为一个共识轮次。每个共识轮次都有开始时间戳和结束时间戳,前一轮次的结束时间为当前轮次的开始时间,所以节点必须按照这个时间规则进行下去,否则任何的改动都会被全网排斥。在每个共识轮次中,所有共识节点有且只有一次广播区块的权力。
共识顺序:在一个共识轮次中,每个共识节点出块的顺序,叫做共识顺序。在知产链的共识中,每轮的顺序都是随机变化的,根据当前轮次的开始时间戳(也就是上一轮的结束时间戳)与共识节点账户、通过算法排序决定。所有节点(包含非共识节点)必须遵守这个规则,才能正常运行,任何哪怕是细微的改动,都会导致改动的节点被全网排斥
共识时段:在确定了共识顺序之后,每个节点都可以在共识顺序列表中通过账户获取自己的出块时间,这样自然就确定了单点广播权限,这个时间段也有开始时间和结束时间,间隔是区块出块时间,称为共识时段。
出块权限验证:每个区块头部,都有当前轮次的开始时间、共识节点的时段信息、共识节点数量信息,通过这些信息对区块的合法性进行验证。
共识步骤如下:
普通节点申请成为共识节点
校验贡献度;
IPChain 确认申请,加入备选共识节点;
等待本轮次共识周期结束;
本轮次共识周期结束,开始下一轮共识周期;
确定本次共识周期有效节点数;
确定本次共识周期节点共识顺序,确认每个有效共识节点的打包时间;
接受新区块,校验打包数据,等待本节点工作时间;
轮候到自己的工作时间,开始打包交易,生成新的区块;
从内存池获取交易信息,校验并生成新区块交易数据;
计时到本节点打包结束时间,中断打包工作;
验证打包数据;
将新生出的区块广播到区块链网络;
接受其他新产生区块,校验交易,等候下一个共识轮次的到来。
容错与处罚
区块链系统是非常复杂的系统,不单因为底层技术的复杂,更因为其运行的环境极其复杂,尤其是公有链。使用习惯、网络环境、人为破坏等都有可能影响系统的正常运转。
区块链的共识机制,必须要能够有效的解决这些因素带来的影响对于知产链的 DPOC 共识机制来说,节点的任何动作,都会被全网其它节点监控。DPOC 共识会对以下这些情况做出相应的处罚,整个系统会自动调整节点、维护稳定。
-
不出块:系统扣除一定的信用值,并降级为普通节点。
-
不按时出块或者网络同步延迟等非人为因素,会根据全网其它节点的选择作决定,若下一出块节点产生的区块 PREHASH 指向这个块,那么系统正常工作;若下一出块节点出块时丢弃了该块,那这个块将会成为孤块,其面临的结果是信用处罚,如果连续三轮出现状况,该节点被降级为普通节点。
-
非共识节点胡乱广播区块,验证不通过,直接丢弃。
-
同一时间段广播多个块,属于严重违规类型,会直接退还保证金并信用拉黑。
-
打包双花交易,属于严重违规类型,会被直接退还保证金并信用拉黑。
-
从链上的某特定区块处尝试分叉系统,所谓的双花攻击,属于严重违规类型,会直接退还保证金并信用拉黑。
其中,4、5、6 这三类严重违规类型,全网可监控,并有密码学证据,任何诚信节点只需提交包含其签名的一个或多个区块头信息即可行驶处罚权力,直接该节点的保证金,并扣除该节点的信用值,被处罚的节点永久无法再次作恶。
优点和不足
优点:
-
创新:第一次引入价值中介机制(信用)。
-
安全:超过 50%的容错率。
-
稳定:系统能自身调节运行状态,自动维护无需人工干涉。
-
节能:不会浪费系统 CPU 和内存资源。
-
高效:节点之间无需额外的网络通讯即可达成共识。
不足之处:和所有公有链一样,允许分叉,但 DPOC 是短期分叉,容错检测器一般会在 2 个块左右的时间内解决