超矩链--基于矩阵的分布式账本
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轮共识以后。
分片技术
智能合约
超矩链中转账不收手续费,但是委托执行智能合约是要收取手续费的,智能合约的发布采用托单的的模式,多个Keeper节点可以组成一个工作组(个人也可以组成一个工作组)。每个工作组可以根据对方发布的智能合约大小、支付的fee来决定是否运行。但选择并不是单方的,超矩链的AI会统计Keeper节点执行智能合约的历史记录进行信用评级,以供托单人进行参考,注意,一切风险损失由自己负责。
智能合约的执行时长根据智能合约的内容和支付的fee来决定,同时有些合约的执行并不需要7x24小时不间断执行,用户在编写智能合约的时候可以指定在什么条件下挂起智能合约,比如Alice和Bob签订了一份贷款合同,合同要在三年后才会执行。两人以智能合约的方式实现这份合同,那这份合同真正的“执行”时间很短,只需要在发布日期的三年后才会使用到,它的挂起时间要远远大于执行时间。在智能合约挂起的时候不会放在虚拟机内部,而是会形成一个Smart Cache保存在Keeper节点,挂起时会在Keeper节点注册一个触发事件,当事件触发后立刻将Smart Cache加入虚拟机内执行。在挂起阶段内消耗的计算资源要小于执行阶段,相应的消耗的fee会小于执行。
上面所说的只是Smart Cache的一个应用,在未来的远景中,可以设想像操作系统的内存调度一样,几个Keeper节点可以创建一片共享Cache,轮流对Cache进行读写,达到真正的分布式计算的目的。