CN113077343A - 一种基于有向无环图的区块链共识系统 - Google Patents
一种基于有向无环图的区块链共识系统 Download PDFInfo
- Publication number
- CN113077343A CN113077343A CN202110382186.1A CN202110382186A CN113077343A CN 113077343 A CN113077343 A CN 113077343A CN 202110382186 A CN202110382186 A CN 202110382186A CN 113077343 A CN113077343 A CN 113077343A
- Authority
- CN
- China
- Prior art keywords
- node
- module
- transaction
- nodes
- nnt
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种基于有向无环图的区块链共识系统。包括委员会模块、链增长模块、排序模块以及网络模块,网络模块用于完成系统中各个模块之间的网络通信;委员会模块、链增长模块和排序模块共同完成区块链共识;委员会模块用于确认下一世代的活跃节点,第零世代的活跃链节点形成初始委员会,每个世代的委员会成员数量均为L;链增长模块用于根据当前委员会成员生成的链交易CTs更新有向无环图;排序模块首先完成普通交易NNTs的确认,形成共识,然后采用所确定的算法对确认的NNTs进行排序,形成一致的顺序。本发明将权益证明和有向无环图结合,不需要在一个委员会中运行拜占庭容错算法,也避免了需要见证节点或协调服务器的情况。
Description
技术领域
本发明涉及区块链技术领域,更具体地,涉及一种基于有向无环图的区块链共识系统。
背景技术
有向无环图链是以有向无环图为形式的链,其顶点是一个区块或交易,区块或交易包含之前的区块或交易的哈希值,两顶点间的边表示顶点的顺序。有向无环图链允许大量节点同时产生区块或事务。当节点数量增加时,交易的吞吐量也随之增加。目前,大多数有向无环图链使用工作量证明(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个邻居节点。
进一步的,所述的委员会模块确认下一世代的活跃节点具体包括:
希望成为下一世代活跃链节点的候选节点在当前世代发送MNT;
当前世代的活跃链节点接收MNT,验证MNT生成时间的有效性,把有效的交易存入交易池,并恢复发送该MNT的候选节点的公钥pk,然后根据公钥对应出候选链节点的账户地址,获取其权益值stake,组成二元组<stake,pk>,插入到长度为L的有序列表中,该列表按照权益值大小降序排列;
在当前世代的倒数第2个时槽结束前,当前世代活跃链节点建立一个MNT哈希确认列表,与有序列表中元素的哈希值一一对应,然后将此MNT哈希确认列表作为CT载荷发送出去,形成哈希列表CT,更新该活跃链节点状态数据库中的计数器;
链节点接收哈希列表CT,委员会模块获取MNT哈希确认列表,计算每一个哈希值的投票,直到当前世代最后1个时槽结束前,停止计票;如果一个哈希值被不少于2/3L个活跃链节点确认,则该哈希值对应的MNT被确认,该MNT从交易池移入交易数据库;当前世代最后1个时槽结束前,前L个被确认的哈希值对应的候选链节点成为下一世代的活跃链节点并组成新的委员会;若被确认的节点少于L个,则从初始的委员会节点中顺序选取,选取的第一个节点满足其索引是下一世代编号模L的余数,最终形成L个节点的委员会;未成为活跃链节点的候选节点,成为静默节点;交易池中的MNT交易清空。
其中,委员会模块生成的哈希列表CTs也属于有向无环图的一部分。
进一步的,所述的客户端节点包括网络模块、NNT模块和分布式引用模块DAPP,NNT模块生成交易NNTs,承载DAPP的应用消息;客户端节点生成NNTs,具体包括:
客户端节点中的DAPP模块产生一个应用消息,并发送到NNT模块;
NNT模块封装应用消息到NNT中,将当前节点的计数器加1,并发送该NNT到网络模块;
网络模块将NNT发送给链节点。
进一步的,当前委员会成员在接收到NNT后,生成并发出关于NNT的CTs,具体包括:
当前委员会成员的链增长模块验证NNT的生成时间的有效性和计数器值的有效性,如果NNT有效,则该NNT的哈希值以及该NNT的哈希确认列表被存储在交易池中,链增长模块将状态数据库中对应的客户端节点计数器更新为当前状态;如果NNT无效,则不做处理;
当前委员会成员的链增长模块将NNT的哈希值作为消息,形成CT,将当前委员会成员的计数器加1,并将CT存储在CT数据库中,然后发送这个CT到网络模块;网络模块将CT发送给其它链节点;
验证NNT的生成时间有效性涉及交易最大容忍时延Δ,链节点每次接收交易时,检查下述不等式:|节点接收时间—创建交易时间戳时间|≤Δ;
验证计数器值的有效性是指在收到交易后,要求交易中计数器值大于当前节点状态数据库中的对应计数器值。
进一步的,当前委员会成员在接收到CT后,更新有向无环图的过程具体包括:
链增长模块验证CT的生成时间、稳定状态根的有效性和计数器值的有效性,如果CT有效,链增长模块在状态数据库中更新发送CT的节点的计数器;
如果CT的引用CTs已在交易数据库中,那么将这个CT也存入交易数据库;否则,将这个CT存入交易池中;当一个新的CT被放入交易数据库,交易池就会更新;如果这个CT是交易池中某一交易CT*的最后一个引用CT,那么交易池中的这个CT*交易被放入交易数据库;
验证稳定状态根的有效性是指根据交易的时间戳确定交易发出时所在的世代和时槽,然后链节点在本地的状态数据库中找出对应时槽的稳定状态根,两者对比,若相等则有效。
进一步的,排序模块完成NNTs的确认,具体包括:
①当一个CT被加入交易数据库时,排序模块检查该CT所含的NNT哈希值,在交易池中找到该NNT,如果找不到,判断该NNT尚未到来或者已被确认,不再处理;否则,查找该NNT的哈希确认列表,判断是否存在该CT的发送链节点公钥,如果存在则不再处理;否则,将该CT的发送链节点公钥加入该NNT的哈希确认列表,增加该NNT的确认计数,如果超过2/3L,则完成对该NNT的确认,从交易池移入交易数据库;否则,不再处理;
②当一个CT被加入交易数据库时,排序模块依次查找一个前j个时槽内该CT所引用的交易数据库中的CT,以及这些被引用的CT所引用的CT,对每一个涉及的CT,排序模块检查该CT所含的NNT哈希值,按照上述①的过程更新这些CT所涉及的NNT的确认计数,对于确认数超过2/3L的交易,从交易池移入交易数据库,完成确认。
进一步的,采用确定的算法对确认的NNTs进行排序,具体包括:
当新CT加入交易数据库后,触发对NNT的排序,排序遵循以下规则:
按照NNTs的创建时间排序,创建时间更早的NNTs排在前面;
如果两个NNTs有同样的创建者,那么它们应有不同的创建时间,且有更小的创建时间的NNT应有更小的计数器,如果违反了规则,两个NNTs都被丢弃,创建者的权益或令牌被共享给该世代中的活跃链节点;
如果两个有相同创建时间的NNTs被不同的创建者创建,排序模块计算两个哈希值,哈希函数的输入是当前世代数、NNT发送者的公钥和当前世代活跃链节点的公钥;计算后哈希值小的NNT排在前面。
与现有技术相比,有益效果是:本发明提供的一种基于有向无环图的区块链共识系统,将权益证明和有向无环图结合,利用权益证明组成一个委员会,委员会的治理政策和股权锁定规则可以避免PoS中随机选取领导者导致的远程攻击问题;本发明将权益证明和有向无环图结合,由于没有破坏权益的攻击,敌手如果要发动攻击,需要生成一个包含所有可能拓扑信息的有向无环图,这是很困难的;本发明不需要在一个委员会中运行拜占庭容错算法,也避免了需要见证节点或协调服务器的情况。
具体实施方式
实施例1:
本实施例中的可调整参数列举如下:
(1)每个世代的委员会成员数量为L;
(2)每个CT可选择i个CT作为它的引用;
(3)稳定状态根是S个时槽前的状态数据库的内容的一个哈希值;
(4)每个世代包含e个时槽,第零世代由D个时槽初始化;
(5)每个K桶能够存放的最大节点数为k;
(6)每间隔K_REQUEST_TIMEOUT时间,清空一次等待响应列表;
(7)路由表检查更新协议中,每间隔RE_VALIDATE_INTERVAL时间,检查每个K桶内的节点是否存活;
(8)每间隔REFRESH_INTERVAL时间执行一次路由表节点发现协议;
(9)路由表节点发现协议中,closest列表中存放最多BUCKET_SIZE个邻居节点;
(10)链交易最大容忍时延是Δ;
(11)NNT确认过程中,排序模块依次查找一个前j个时槽内交易数据库中的CTs。
节点id是采用keccak256哈希算法加密节点IP和端口得到的256比特的二进制串,则每个节点的路由表由256个K桶组成,K桶采用列表结构。链上的哈希算法采用SHA256算法。
设定L=6,i=2,S=3,e=20,D=100,k=8,K_REQUEST_TIMEOUT=10,RE_VALIDATE_INTERVAL=10,REFRESH_INTERVAL=6,BUCKET_SIZE=8,Δ=10,j=2。
每个节点的网络模块采用UDP通信,执行两个进程:持续监听网络中的数据包的进程和定期清除等待响应列表的进程,其中监听网络中的数据包的进程每间隔10秒时间,就清空一次等待响应列表。
每个节点的路由表更新包含检查更新协议和节点发现协议。检查更新协议每隔10秒检查路由表中的节点是否存活。若K桶不为空,则取出K桶中最后一个节点,向其发送Ping数据包。若得到对方回应的Pong包,就将取出的节点重新插入到K桶最前端。若没有等待到对方节点回应的Pong包,则从K桶对应的缓存中随机取出一个节点,加入到K桶末尾。节点发现协议每间隔6秒时间执行一次,如果没有列表closest,则找出与本节点最近的8个邻居节点,定义为列表closest,若找不到任何邻居节点,就将已知的静态节点加入到closest中。如果存在列表closest,则向closest中的邻居节点逐个发送FindNeighbors数据包,等待每个FindNeighbors包的响应结果;每个邻居节点收到FindNeighbors包后,将其最近的8个邻居节点封装到Neighbors数据包中响应。收到各邻居节点响应的Neighbors包后,将Neighbors包中的节点加入到路由表里,并重新计算Neighbors包中的节点与自身的距离,更新closest,保证closest中的节点是与自身距离最近的8个邻居节点。
系统中希望成为下一世代活跃链节点的候选节点在当前世代发送MNT。当前世代的活跃链节点接收MNT,验证节点接收时间与创建MNT的时间戳时间的差值绝对值是否小于最大容忍时延10秒,并根据MNT的时间戳确定MNT发出时所在的世代和时槽,然后链节点在本地的状态数据库中找出对应时槽的稳定状态根,对比MNT中的稳定状态根是否相等,若时延小于10秒且稳定状态根相等则有效。把有效的交易存入交易池,并恢复发送该MNT的候选节点的公钥pk,然后根据公钥对应出候选链节点的账户地址,获取其权益值stake,组成二元组<stake,pk>,插入到长度为6的有序列表中,该列表按照权益值大小降序排列。在当前世代的倒数第2个时槽结束前,当前世代活跃链节点建立一个MNT哈希确认列表,与有序列表中元素的哈希值一一对应,然后将此MNT哈希确认列表作为CT载荷发送出去,形成哈希列表CT,更新该活跃链节点状态数据库中的计数器。链节点接收哈希列表CT,其委员会模块获取MNT哈希确认列表,计算每一个哈希值的投票,直到当前世代最后1个时槽结束前,停止计票。如果一个哈希值被不少于4个活跃链节点确认,则该哈希值对应的MNT被确认,该MNT从交易池移入交易数据库。当前世代最后1个时槽结束前,前6个被确认的哈希值对应的候选链节点成为下一世代的活跃链节点并组成新的委员会。若被确认的节点少于6个,则从初始的委员会节点中顺序选取,选取的第一个节点满足其索引是下一世代编号模6的余数,最终形成6个节点的委员会。未成为活跃链节点的候选节点,成为静默节点。交易池中的MNT交易清空。
客户端节点中的DAPP模块产生一个应用消息,并发送到NNT模块。NNT模块封装应用消息到NNT中,将当前节点的计数器加1,并发送该NNT到网络模块。网络模块将NNT发送给链节点。
当前委员会成员收到NNT后,其链增长模块验证节点接收时间与创建NNT的时间戳时间的差值绝对值是否小于最大容忍时延10秒,并验证NNT中计数器值是否大于当前节点状态数据库中的对应计数器值,若时延小于10秒且NNT中的计数器值大于状态数据库中的对应计数器值,则NNT有效。如果NNT有效,则该NNT的哈希值以及该NNT的哈希确认列表被存储在交易池中,链增长模块将状态数据库中对应的客户端节点计数器更新为当前状态。如果NNT无效,则不做处理。当前委员会成员的链增长模块将NNT的哈希值作为消息,形成CT,将当前委员会成员状态数据库中的计数器加1,并将CT存储在CT数据库中,然后发送这个CT到网络模块,网络模块将CT发送给其它链节点。
当前委员会成员在接收到CT后,其链增长模块验证节点接收时间与创建CT的时间戳时间的差值绝对值是否小于最大容忍时延10秒、根据MNT的时间戳确定MNT发出时所在的世代和时槽,然后链节点在本地的状态数据库中找出对应时槽的稳定状态根,对比MNT中的稳定状态根是否相等,以及验证CT中计数器值是否大于当前节点状态数据库中的对应计数器值,若时延小于10秒、稳定状态根相等且CT中的计数器值大于状态数据库中的对应计数器值,则CT有效。如果CT有效,链增长模块在状态数据库中更新发送CT的节点的计数器。如果CT的引用CTs已在交易数据库中,那么将这个CT也存入交易数据库,否则,将这个CT存入交易池中。当一个新的CT被放入交易数据库,交易池就会更新。如果这个CT是交易池中某一交易CT*的最后一个引用CT,那么交易池中的这个CT*交易被放入交易数据库。
当一个CT被加入交易数据库时,排序模块检查该CT所含的NNT哈希值,在交易池中找到该NNT,如果找不到,判断该NNT尚未到来或者已被确认,不再处理;否则,查找该NNT的哈希确认列表,判断是否存在该CT的发送链节点公钥,如果存在则不再处理;否则,将该CT的发送链节点公钥加入该NNT的哈希确认列表,增加该NNT的确认计数,如果大于等于4,则完成对该NNT的确认,从交易池移入交易数据库;否则,不再处理。
当一个CT被加入交易数据库时,排序模块依次查找一个前2个时槽内该CT所引用的交易数据库中的CT,以及这些被引用的CT所引用的CT,对每一个涉及的CT,排序模块检查该CT所含的NNT哈希值,按照上述步骤一的过程更新这些CT所涉及的NNT的确认计数,对于确认数大于等于4的交易,从交易池移入交易数据库,完成确认。
当新CT加入交易数据库后,触发对NNT的排序,首先按照NNTs的创建时间排序,创建时间更早的NNTs排在前面;如果两个NNTs有同样的创建者,那么它们应有不同的创建时间,且有更小的创建时间的NNT应有更小的计数器,如果违反了规则,两个NNTs都被丢弃,创建者的权益或令牌被共享给该世代中的活跃链节点;如果两个有相同创建时间的NNTs被不同的创建者创建,排序模块计算两个哈希值,哈希函数的的输入是当前世代数、NNT发送者的公钥和当前世代活跃链节点的公钥;计算后哈希值小的NNT排在前面。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
Claims (10)
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载荷发送出去,形成哈希列表CT,更新该活跃链节点状态数据库中的计数器;
链节点接收哈希列表CT,委员会模块获取MNT哈希确认列表,计算每一个哈希值的投票,直到当前世代最后1个时槽结束前,停止计票;如果一个哈希值被不少于2/3L个活跃链节点确认,则该哈希值对应的MNT被确认,该MNT从交易池移入交易数据库;当前世代最后1个时槽结束前,前L个被确认的哈希值对应的候选链节点成为下一世代的活跃链节点并组成新的委员会;若被确认的节点少于L个,则从初始的委员会节点中顺序选取,选取的第一个节点满足其索引是下一世代编号模L的余数,最终形成L个节点的委员会;未成为活跃链节点的候选节点,成为静默节点;交易池中的MNT交易清空。
6.根据权利要求1所述的基于有向无环图的区块链共识系统,其特征在于,所述的客户端节点包括网络模块、NNT模块和分布式引用模块DAPP,NNT模块生成交易NNTs,承载DAPP的应用消息;客户端节点生成NNTs,具体包括:
客户端节点中的DAPP模块产生一个应用消息,并发送到NNT模块;
NNT模块封装应用消息到NNT中,将当前节点的计数器加1,并发送该NNT到网络模块;
网络模块将NNT发送给链节点。
7.根据权利要求1所述的基于有向无环图的区块链共识系统,其特征在于,当前委员会成员在接收到NNT后,生成并发出关于NNT的CTs,具体包括:
当前委员会成员的链增长模块验证NNT的生成时间的有效性和计数器值的有效性,如果NNT有效,则该NNT的哈希值以及该NNT的哈希确认列表被存储在交易池中,链增长模块将状态数据库中对应的客户端节点计数器更新为当前状态;如果NNT无效,则不做处理;
当前委员会成员的链增长模块将NNT的哈希值作为消息,形成CT,将当前委员会成员的计数器加1,并将CT存储在CT数据库中,然后发送这个CT到网络模块;网络模块将CT发送给其它链节点;
验证NNT的生成时间有效性涉及交易最大容忍时延Δ,链节点每次接收交易时,检查下述不等式:|节点接收时间—创建交易时间戳时间|≤Δ;
验证计数器值的有效性是指在收到交易后,要求交易中计数器值大于当前节点状态数据库中的对应计数器值。
8.根据权利要求7所述的基于有向无环图的区块链共识系统,其特征在于,当前委员会成员在接收到CT后,更新有向无环图的过程具体包括:
链增长模块验证CT的生成时间、稳定状态根的有效性和计数器值的有效性,如果CT有效,链增长模块在状态数据库中更新发送CT的节点的计数器;
如果CT的引用CTs已在交易数据库中,那么将这个CT也存入交易数据库;否则,将这个CT存入交易池中;当一个新的CT被放入交易数据库,交易池就会更新;如果这个CT是交易池中某一交易CT*的最后一个引用CT,那么交易池中的这个CT*交易被放入交易数据库;
验证稳定状态根的有效性是指根据交易的时间戳确定交易发出时所在的世代和时槽,然后链节点在本地的状态数据库中找出对应时槽的稳定状态根,两者对比,若相等则有效。
9.根据权利要求1所述的基于有向无环图的区块链共识系统,其特征在于,排序模块完成NNTs的确认,具体包括:
①当一个CT被加入交易数据库时,排序模块检查该CT所含的NNT哈希值,在交易池中找到该NNT,如果找不到,判断该NNT尚未到来或者已被确认,不再处理;否则,查找该NNT的哈希确认列表,判断是否存在该CT的发送链节点公钥,如果存在则不再处理;否则,将该CT的发送链节点公钥加入该NNT的哈希确认列表,增加该NNT的确认计数,如果超过2/3L,则完成对该NNT的确认,从交易池移入交易数据库;否则,不再处理;
②当一个CT被加入交易数据库时,排序模块依次查找一个前j个时槽内该CT所引用的交易数据库中的CT,以及这些被引用的CT所引用的CT,对每一个涉及的CT,排序模块检查该CT所含的NNT哈希值,按照上述①的过程更新这些CT所涉及的NNT的确认计数,对于确认数超过2/3L的交易,从交易池移入交易数据库,完成确认。
10.根据权利要求1所述的基于有向无环图的区块链共识系统,其特征在于,采用确定的算法对确认的NNTs进行排序,具体包括:
当新CT加入交易数据库后,触发对NNT的排序,排序遵循以下规则:
按照NNTs的创建时间排序,创建时间更早的NNTs排在前面;
如果两个NNTs有同样的创建者,那么它们应有不同的创建时间,且有更小的创建时间的NNT应有更小的计数器,如果违反了规则,两个NNTs都被丢弃,创建者的权益或令牌被共享给该世代中的活跃链节点;
如果两个有相同创建时间的NNTs被不同的创建者创建,排序模块计算两个哈希值,哈希函数的输入是当前世代数、NNT发送者的公钥和当前世代活跃链节点的公钥;计算后哈希值小的NNT排在前面。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110382186.1A CN113077343B (zh) | 2021-04-09 | 2021-04-09 | 一种基于有向无环图的区块链共识系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110382186.1A CN113077343B (zh) | 2021-04-09 | 2021-04-09 | 一种基于有向无环图的区块链共识系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113077343A true CN113077343A (zh) | 2021-07-06 |
CN113077343B CN113077343B (zh) | 2022-09-16 |
Family
ID=76615753
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110382186.1A Active CN113077343B (zh) | 2021-04-09 | 2021-04-09 | 一种基于有向无环图的区块链共识系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113077343B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109859044A (zh) * | 2019-01-15 | 2019-06-07 | 中山大学 | 一种区块链构造方法 |
CN110198233A (zh) * | 2019-05-09 | 2019-09-03 | 中国人民解放军国防科技大学 | 基于可信执行环境和有向无环图的区块链共识方法及系统 |
KR20190140257A (ko) * | 2018-06-11 | 2019-12-19 | 이홍표 | 블록체인 기반의 초저지연 네트워크 시스템 및 이의 구축방법 |
CN111080288A (zh) * | 2019-10-18 | 2020-04-28 | 湖南天河国云科技有限公司 | 一种基于有向无环图的区块链共识达成方法及装置 |
EP3696701A1 (en) * | 2019-02-13 | 2020-08-19 | UVUE Limited | System for evaluating useful work and method of operation thereof |
CN112202775A (zh) * | 2020-09-29 | 2021-01-08 | 北京理工大学 | 一种有向无环图结构区块链的共识机制架构及其方法 |
CN112615846A (zh) * | 2020-12-14 | 2021-04-06 | 重庆邮电大学 | 一种基于dag的区块链系统认证门限的更新方法 |
-
2021
- 2021-04-09 CN CN202110382186.1A patent/CN113077343B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190140257A (ko) * | 2018-06-11 | 2019-12-19 | 이홍표 | 블록체인 기반의 초저지연 네트워크 시스템 및 이의 구축방법 |
CN109859044A (zh) * | 2019-01-15 | 2019-06-07 | 中山大学 | 一种区块链构造方法 |
EP3696701A1 (en) * | 2019-02-13 | 2020-08-19 | UVUE Limited | System for evaluating useful work and method of operation thereof |
CN110198233A (zh) * | 2019-05-09 | 2019-09-03 | 中国人民解放军国防科技大学 | 基于可信执行环境和有向无环图的区块链共识方法及系统 |
CN111080288A (zh) * | 2019-10-18 | 2020-04-28 | 湖南天河国云科技有限公司 | 一种基于有向无环图的区块链共识达成方法及装置 |
CN112202775A (zh) * | 2020-09-29 | 2021-01-08 | 北京理工大学 | 一种有向无环图结构区块链的共识机制架构及其方法 |
CN112615846A (zh) * | 2020-12-14 | 2021-04-06 | 重庆邮电大学 | 一种基于dag的区块链系统认证门限的更新方法 |
Non-Patent Citations (3)
Title |
---|
BIN CAO等: "《Performance analysis and comparison of PoW, PoS and DAG》", 《DIGITAL COMMUNICATIONS AND NETWORKS》 * |
刘懿中等: "《区块链共识机制研究综述》", 《密码学报》 * |
高政风等: "《基于DAG的分布式账本共识机制研究》", 《软件学报》 * |
Also Published As
Publication number | Publication date |
---|---|
CN113077343B (zh) | 2022-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11657036B2 (en) | Methods and apparatus for a distributed database that enables deletion of events | |
JP7184959B2 (ja) | ネットワーク内の分散データベースのための方法及び装置 | |
Baird | The swirlds hashgraph consensus algorithm: Fair, fast, byzantine fault tolerance | |
Clarke et al. | Freenet: A distributed anonymous information storage and retrieval system | |
EP0836779B1 (en) | Mechanism for efficiently synchronizing information over a network | |
Stifter et al. | Agreement with satoshi–on the formalization of nakamoto consensus | |
US11362832B2 (en) | Distributed proof-of-work for sharded or parallel blockchains | |
Ramezan et al. | Analysis of proof-of-work-based blockchains under an adaptive double-spend attack | |
Anceaume et al. | Peercube: A hypercube-based p2p overlay robust against collusion and churn | |
CN116615722A (zh) | 用于网络内分布式数据库的方法和装置 | |
EP3683678B1 (en) | Computer-implemented method, computer program and data processing system | |
CN113807851B (zh) | 一种基于分片的区块链可扩展性实现方法及系统 | |
CN113077343B (zh) | 一种基于有向无环图的区块链共识系统 | |
Wels | Guaranteed-TX: The exploration of a guaranteed cross-shard transaction execution protocol for Ethereum 2.0. | |
Al-Joboury et al. | Consensus algorithms based blockchain of things for distributed healthcare | |
Nguyen et al. | ONLAY: Online Layering for scalable asynchronous BFT system | |
Choi et al. | OPERA: Reasoning about continuous common knowledge in asynchronous distributed systems | |
Ren et al. | Improving the performance of blockchain sharding protocols with collaborative transaction verification | |
US20230291656A1 (en) | Operation of a distributed deterministic network | |
Peng et al. | Komorebi: A DAG-based Asynchronous BFT Consensus via Sharding | |
WO2003069467A1 (en) | Distributed execution system | |
CN114281888B (zh) | 一种区块链共识方法、装置、设备及存储介质 | |
Mahmood et al. | Develop a New Lightweight Consensus Algorithm for IoT | |
Kumari et al. | Leader Election in Internet of Things Using Blockchain: Issues and Challenges | |
US11075988B2 (en) | Consensus mechanism for distributed systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |