MTC 网络每隔 2-8 秒产生一个新的区块,新区块使用名为 PAOS 的共识 机制进行交易共识,新区块的被全网认可的过程就是所有网络节点进行共识的过 程。共识分两个阶段完成,第一阶段是达成交易集的共识,第二阶段是 对新生成的区块进行提议,最终形成被共识过的区块。达成交易集的共识分 轮进行, 在每一轮中进行下面的操作: 每个节点在共识开始时尽可能多地收集需要共识的交易,并放到“候选集”里面; 每个节点对它信任节点列表中的“候选集”做并集,并对每一个交易 进行投票; UNL 中的服务节点交易的投票结果,达到一定投票比例的交易会进入到下一轮,达不到比例的交易会被丢弃,或进入下一次共识过程的候选集; 在最终轮中,所有投票超过 80%的交易会被放到共识过的交易集;与 比特币类似,交易集也采用 Merkle 树数据结构。 形成交易集后,每个节点 开始打包新的区块,打包区块的过程如下: 把新的区块号、共识交易集的 Merkle 树根 Hash、父区块 Hash、当前时间戳等内容放到一起,计算区块哈希;每个节点广播自己得出的区块哈希到它 可见的节点;节点收集到它所有可信列表中节点广播过来的区块哈希后,结合本 节点生成的区块哈希,计算每个区块哈希的出现次数(即每个节点“投票”区块哈希的次数),如果某 区块一哈希的比例超过阈值(一般是 80%),则认为这个区块哈希是共识通过的区 块的哈希。如果本节点生成的区块哈希与之相 同,则说明本节点打包的区块得到了确,是新的被共识过的区块,直接存到本地,并且 更新状态。如果本节点生成的区块哈希与共识通过的哈希不同, 则需要去某个区块哈希正确的节点索要新的区块信息,然后存储到本地并且 更新当前状态; 如果上述环节中没有任何一个区块哈希的出现次数(投票比例)超过设 定的阈值,则重新开始共识过程,直到满足条件。 至此,一个区块的共识过 程结束,开启下一轮共识过程。