Page 和 Generate Number
超矩链采用了Bitcoin的Utxo模型,在超矩链中它的地址格式有所变化,整个地址由两部分组成:
后面的部分是传统的Utxo地址即公钥的两次Hash结果,前面是该地址的遗传编号Generate Number,所谓遗传可以用下图解释:
上面一个地址TxA产生了两个输出,虚线指向的是找零地址,实线指向的是接收方地址。0x0表示Tx是一个全新的地址,0x1表示Tx已经被在交易中使用过一次了。目前所有采用Utxo模型的区块链的分布式共识,实际上就是对Utxo的共识。只要能保证所有节点上的Utxo是完整的、正确的就能保证用户的数字资产。只是超矩链更改了账本组织形式。我们假设TxA是Genesis Transaction,现在整个账本中存在的utxo就可以用以下矩阵来表示:
在当前共识也就是创世后的第 1轮共识中Utxo的分布状态,超矩链中将每一个轮的Utxo分布状态称之为Page ,每达成一轮共识都会产生一个Page,只要全网大部分记账节点能保证Page是一致的、正确的就可以保证用户资产的安全。
共识机制
为了解决当前公链的交易处理效率低的问题,超矩链采用了职责分割的机制,它将数据收集和记账两个部分分割开,提高整体的工作效率,避免不必要的消耗。目前,超矩链设立了16个Gate Server,这16个Server分布在世界不同的角落里,可以让世界各地的用户选择最近最快的Server来提交交易。Server之间不会去同步交易,它们只需要互相确认当前的共识轮数,和决定何时发起共识。
共识的时机是当有10个服务器收集满了10000笔交易或超过了1min的超时设定,所有的服务器会将自己收集的交易向记账节点进行公布。记账节点是完全公共的节点,就像是Bitcoin中的全节点一样,任何人都可以随时的加入和退出网络。需要明确说明的是,收集交易和共识是异步的,当Gata Server释放了收集的交易后,不会等待记账节点完成共识,而是会立刻为下一轮共识去收集交易。
如上图所示Keeper是记账节点,是要参与到分布式共识当中的,route是路由节点。假设每一个GataServer都按时公布收集的交易包,且网络畅通的情况下。每一个Keeper都会收到16个交易包,每一个包内都包含不同的交易(部分有可能重合),Keeper会根据交易包内的交易内容生成一个Update Cache。
如上所示,在第2轮共识中TxB发起了一笔到TxC的交易,同时指向TxB进行找零,此时的Update的矩阵表示如下:
每一个更新包都会生成一个对应的Update矩阵,然后将Update矩阵和上一轮Page矩阵作为输入求导本轮的Page:
具官方声称它会为每个页生成一个H值作为该页的特征值,当Keeper节点计算出H值后会广播,同时接收其他Keeper的H值。每一个Keeper会选择m个Keeper节点作为验证方(m由当前Keeper的数量决定,至少为10个),有超过半数以上的验证Keeper的H值相匹配则说明新的Page页有效,如果不匹配则扩大验证Keeper范围,再次验证,重复验证次数由当前Keeper数量决定。同时还生成该算法具有抗双花的功能,在同步H值的时候会将双花交易进行同步,Keeper节点会将双花的交易自动冻结,直到10轮共识以后。