当前位置: 首页 > 专利查询>中山大学专利>正文

一种基于有向无环图的区块链共识系统技术方案

技术编号:29158826 阅读:20 留言:0更新日期:2021-07-06 22:59
本发明专利技术涉及一种基于有向无环图的区块链共识系统。包括委员会模块、链增长模块、排序模块以及网络模块,网络模块用于完成系统中各个模块之间的网络通信;委员会模块、链增长模块和排序模块共同完成区块链共识;委员会模块用于确认下一世代的活跃节点,第零世代的活跃链节点形成初始委员会,每个世代的委员会成员数量均为L;链增长模块用于根据当前委员会成员生成的链交易CTs更新有向无环图;排序模块首先完成普通交易NNTs的确认,形成共识,然后采用所确定的算法对确认的NNTs进行排序,形成一致的顺序。本发明专利技术将权益证明和有向无环图结合,不需要在一个委员会中运行拜占庭容错算法,也避免了需要见证节点或协调服务器的情况。

【技术实现步骤摘要】
一种基于有向无环图的区块链共识系统
本专利技术涉及区块链
,更具体地,涉及一种基于有向无环图的区块链共识系统。
技术介绍
有向无环图链是以有向无环图为形式的链,其顶点是一个区块或交易,区块或交易包含之前的区块或交易的哈希值,两顶点间的边表示顶点的顺序。有向无环图链允许大量节点同时产生区块或事务。当节点数量增加时,交易的吞吐量也随之增加。目前,大多数有向无环图链使用工作量证明(PoW)来生成块或交易。权益证明(PoS)是一种保证节点产生区块或交易的更有力的共识机制。PoS项目通常将时间划分为一个个时槽,一些时槽构成一个世代。在每一个世代中,根据节点的权益和其他的参数来选择出一个或若干个节点构成一个委员会,这个委员会运行类似拜占庭容错算法或其他基于投票的算法就区块或交易达成共识。一些基于权益证明(PoS)的项目为保证公平,采用随机方式选举领导者,这使得权益较少的节点有可能被选为一个世代的领导者,敌手可以更少的成本破坏该节点并发起远程攻击。而基于工作量证明(PoW)的有向无环图链在完全依赖于有向无环图的拓扑结构时,可能遭受分裂攻击。
技术实现思路
本专利技术为克服上述现有技术中的至少一个缺陷,提供一种基于有向无环图的区块链共识系统,有效避免PoS中随机选取领导者导致的远程攻击问题。为解决上述技术问题,本专利技术采用的技术方案是:一种基于有向无环图的区块链共识系统,包括委员会模块、链增长模块、排序模块以及网络模块,所述的网络模块用于完成系统中各个模块之间的网络通信;所述的委员会模块、链增长模块和排序模块共同完成区块链共识;所述的委员会模块用于确认下一世代的活跃节点,第零世代的活跃链节点形成初始委员会,每个世代的委员会成员数量均为L;所述的链增长模块用于根据当前委员会成员生成的链交易CTs更新有向无环图;所述的排序模块首先完成普通交易NNTs的确认,形成共识,然后采用所确定的算法对确认的NNTs进行排序,形成一致的顺序。进一步的,所述的有向无环图中包含链交易CTs,所述的链交易CTs构成有向无环图的顶点,所述的链交易CTs由链节点生成;所述的链交易CTs中包含两大类内容,一类是普通交易NNTs,由客户端节点生成,是区块链的共识对象;另一类是哈希确认列表,由链节点生成,用于委员会模块。进一步的,所述的链节点可以按照其工作认为分为活跃链节点、候选链节点和静默链节点。链节点和客户端节点可以同时存在于一个物理节点中,形成本专利技术区块链系统的节点。进一步的,客户端节点包含网络模块、NNT模块和分布式应用模块DAPP,其中。NNT模块生成交易NNTs,承载DAPP的应用消息,进一步的,链节点包含网络模块、委员会模块、链增长模块、排序模块、状态数据库、交易数据库和交易池;其中状态数据库存储链节点和客户端节点的状态,包含他们的权益值、令牌值、交易计数器等信息,交易数据库存储已被确认的NNTs和MNTs,交易池存储还未被确认的NNTs和MNTs。其中,NNTs封装的字段包括时间戳、计数器值、DAPP的应用消息和前述内容的签名;CTs封装的字段包括时间戳、计数器值、委员会模块或链增长模块的消息、引用的CTs的个数、引用的CTs的哈希值、稳定状态根和前述内容的签名;引用的CTs指链节点从交易数据库中随机选择i个CT作为引用,引用过后的CTs不再继续引用。MNTs封装的字段包括时间戳、所在世代编号、稳定状态根和前述内容的签名;其中世代是由若干个时槽组成的一段时间,第零世代由D个时槽初始化,后续每个世代按照自然数的顺序编号,每个世代包含e个时槽,其中D和e都是自然数,D>e。稳定状态根是S个时槽前的状态数据库的内容的一个哈希值。链节点和客户端节点都通过网络模块通信。进一步的,所述的网络模块存在于每一个区块链系统的节点中,每个节点拥有本地路由表;路由表内存储有其他节点路由信息;所述的节点路由信息包括节点IP、端口号和节点ID标识;其中,一个节点通过UDP协议与其他节点通信,以更新节点路由表,所有节点构成点到点网络;所述的节点路由表采用Kademlia算法中的K桶结构,路由表中K桶的个数对应于节点ID的比特数。进一步的,K桶是一个节点集合,集合内存放的节点与当前节点距离在特定范围内,节点距离是两个节点ID逐比特异或计算的,第i个K桶存放节点距离在[2i,2i+1)范围内的节点,i是自然数,每个K桶能存放的最大节点数为k个,k是自然数。希望存入某个K桶的节点数超过上限k时,这些节点暂时存入与该K桶对应的缓存中。进一步的,一个节点通过UDP协议与其他节点通信时设计四种类型数据包,包括Ping、Pong、FindNeighbors和Neighbors;这些数据包的发送和接收机制包括:每发送一个Ping包,都要等待其它对应的Pong包相应;每发送一个FindNeighbors包,都要等待其对应的Neighbors包相应;每发送FindNeighbors包前,先向对应节点发送Ping包检查对方是否还存活在网络中。一个节点通过UDP协议与其他节点通信时涉及两个进程,分别是监听网络中数据包进程和定期清除等待相应列表的进程,其中监听网络中的数据包的进程每间隔K_REQUEST_TIMEOUT时间,就清空一次等待响应列表;等待响应列表指每发送一个Ping包或FindNeighbors包,则在等待响应列表中添加一个等待事件,而接收到对应的数据包时,则把等待事件清除,如果超时没有接收到对应的数据包,等待事件就会被清空,没有等待事件的数据包不会被接收。进一步的,更新节点路由表包含检查更新协议和节点发现协议,其中,所述的检查更新协议包括:每间隔RE_VALIDATE_INTERVAL时间,检查每个K桶内的节点是否存活;若K桶不为空,则取出K桶中最后一个节点,向其发送Ping数据包;若得到对方回应的Pong包,就将取出的节点重新插入到K桶最前端;若没有等待到对方节点回应的Pong包,则从K桶对应的缓存中随机取出一个节点,加入到K桶末尾。所述的节点发现协议包括:每间隔REFRESH_INTERVAL时间执行一次;如果没有列表closest,则找出与本节点最近的BUCKET_SIZE个邻居节点,定义为列表closest,若找不到任何邻居节点,就将已知的静态节点加入到closest中;如果存在列表closest,则向closest中的邻居节点逐个发送FindNeighbors数据包,等待每个FindNeighbors包的响应结果;每个邻居节点收到FindNeighbors包后,将其最近的BUCKET_SIZE个邻居节点封装到Neighbors数据包中响应;收到各邻居节点响应的Neighbors包后,将Neighbors包中的节点加入到路由表里,并重新计算Neighbors包中的节点与自身的距离,更新closest,保证closest中的节点是与自身距离最近的BUCKET_SIZE个邻居节点。进一步的,所述的本文档来自技高网...

【技术保护点】
1.一种基于有向无环图的区块链共识系统,其特征在于,包括委员会模块、链增长模块、排序模块以及网络模块,所述的网络模块用于完成系统中各个模块之间的网络通信;所述的委员会模块、链增长模块和排序模块共同完成区块链共识;所述的委员会模块用于确认下一世代的活跃节点,第零世代的活跃链节点形成初始委员会,每个世代的委员会成员数量均为L;所述的链增长模块用于根据当前委员会成员生成的链交易CTs更新有向无环图;所述的排序模块首先完成普通交易NNTs的确认,形成共识,然后采用所确定的算法对确认的NNTs进行排序,形成一致的顺序。/n

【技术特征摘要】
1.一种基于有向无环图的区块链共识系统,其特征在于,包括委员会模块、链增长模块、排序模块以及网络模块,所述的网络模块用于完成系统中各个模块之间的网络通信;所述的委员会模块、链增长模块和排序模块共同完成区块链共识;所述的委员会模块用于确认下一世代的活跃节点,第零世代的活跃链节点形成初始委员会,每个世代的委员会成员数量均为L;所述的链增长模块用于根据当前委员会成员生成的链交易CTs更新有向无环图;所述的排序模块首先完成普通交易NNTs的确认,形成共识,然后采用所确定的算法对确认的NNTs进行排序,形成一致的顺序。


2.根据权利要求1所述的基于有向无环图的区块链共识系统,其特征在于,所述的有向无环图中包含链交易CTs,所述的链交易CTs构成有向无环图的顶点,所述的链交易CTs由链节点生成;所述的链交易CTs中包含两大类内容,一类是普通交易NNTs,由客户端节点生成,是区块链的共识对象;另一类是哈希确认列表,由链节点生成,用于委员会模块;所述的网络模块存在于每一个区块链系统的节点中,每个节点拥有本地路由表;路由表内存储有其他节点路由信息;所述的节点路由信息包括节点IP、端口号和节点ID标识;其中,一个节点通过UDP协议与其他节点通信,以更新节点路由表,所有节点构成点到点网络;所述的节点路由表采用Kademlia算法中的K桶结构,路由表中K桶的个数对应于节点ID的比特数。


3.根据权利要求2所述的基于有向无环图的区块链共识系统,其特征在于,一个节点通过UDP协议与其他节点通信时设计四种类型数据包,包括Ping、Pong、FindNeighbors和Neighbors;这些数据包的发送和接收机制包括:
每发送一个Ping包,都要等待其它对应的Pong包相应;
每发送一个FindNeighbors包,都要等待其对应的Neighbors包相应;
每发送FindNeighbors包前,先向对应节点发送Ping包检查对方是否还存活在网络中;
一个节点通过UDP协议与其他节点通信时涉及两个进程,分别是监听网络中数据包进程和定期清除等待相应列表的进程,其中监听网络中的数据包的进程每间隔K_REQUEST_TIMEOUT时间,就清空一次等待响应列表;
等待响应列表指每发送一个Ping包或FindNeighbors包,则在等待响应列表中添加一个等待事件,而接收到对应的数据包时,则把等待事件清除,如果超时没有接收到对应的数据包,等待事件就会被清空,没有等待事件的数据包不会被接收。


4.根据权利要求3所述的基于有向无环图的区块链共识系统,其特征在于,更新节点路由表包含检查更新协议和节点发现协议,其中,所述的检查更新协议包括:
每间隔RE_VALIDATE_INTERVAL时间,检查每个K桶内的节点是否存活;
若K桶不为空,则取出K桶中最后一个节点,向其发送Ping数据包;
若得到对方回应的Pong包,就将取出的节点重新插入到K桶最前端;若没有等待到对方节点回应的Pong包,则从K桶对应的缓存中随机取出一个节点,加入到K桶末尾;
所述的节点发现协议包括:
每间隔REFRESH_INTERVAL时间执行一次;
如果没有列表closest,则找出与本节点最近的BUCKET_SIZE个邻居节点,定义为列表closest,若找不到任何邻居节点,就将已知的静态节点加入到closest中;
如果存在列表closest,则向closest中的邻居节点逐个发送FindNeighbors数据包,等待每个FindNeighbors包的响应结果;每个邻居节点收到FindNeighbors包后,将其最近的BUCKET_SIZE个邻居节点封装到Neighbors数据包中响应;
收到各邻居节点响应的Neighbors包后,将Neighbors包中的节点加入到路由表里,并重新计算Neighbors包中的节点与自身的距离,更新closest,保证closest中的节点是与自身距离最近的BUCKET_SIZE个邻居节点。


5.根据权利要求1所述的基于有向无环图的区块链共识系统,其特征在于,所述的委员会模块确认下一世代的活跃节点具体包括:
希望成为下一世代活跃链节点的候选节点在当前世代发送MNT;
当前世代的活跃链节点接收MNT,验证MNT生成时间的有效性,把有效的交易存入交易池,并恢复发送该MNT的候选节点的公钥pk,然后根据公钥对应出候选链节点的账户地址,获取其权益值stake,组成二元组<stake,pk>,插入到长度为L的有序列表中,该列表按照权益值大小降序排列;
在当前世代的倒数第2个时槽结束前,当前世代活跃链节点建立一个MNT哈希确认列表,与有序列表中元素的哈希值一一对应,然后将此MNT哈希确认列表作为CT载荷发送出去,形成...

【专利技术属性】
技术研发人员:田海博罗玉琴叶婉
申请(专利权)人:中山大学
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1