基于有向无环图的支持合约的分布式账本共识方法与系统转让专利
申请号 : CN202110709125.1
文献号 : CN113472870B
文献日 : 2022-04-19
发明人 : 沈国华 , 卞书钰 , 黄志球 , 杨阳 , 李井涵 , 张小玉
申请人 : 南京航空航天大学
摘要 :
权利要求 :
1.一种基于有向无环图的支持合约的分布式账本共识方法,其特征在于,所述分布式账本的创世顶点不连接有向无环图的任意顶点,第二个添加到有向无环图的顶点必须连接创世顶点;从第三个添加到有向无环图的顶点开始,顶点类型包括合约定义顶点和合约交易顶点;第二个添加到有向无环图的顶点类型必须为合约定义顶点;每个顶点含两个编号,一个是合约编号,一个是交易编号,且每个交易编号均不相同;当添加到有向无环图的顶点的类型为合约定义顶点时,顶点的合约编号不得与有向无环图中任意其他顶点的合约编号相同;当添加到有向无环图的顶点的类型为合约交易顶点时,顶点的合约编号必须属于在有向无环图中所有顶点的合约编号构成的集合;当添加到有向无环图的顶点的类型为合约交易顶点时,顶点必须强连接有向无环图中的一个顶点,并弱连接有向无环图中至少一个顶点;网络节点在定义一个新的智能合约时,或者根据现有的智能合约及其状态发起一笔新的交易时,向有向无环图中添加顶点,并将账本同步到网络中的其他网络节点,具体顶点添加的步骤包括:
为即将添加到有向无环图中的新顶点赋权值,所述权值为正整数;
预选择零个或一个可被强连接的顶点,预选择一个或多个可被弱连接的顶点,然后将新顶点强连接到预选择的可被强连接的顶点上,并弱连接到所有预选择的可被弱连接的顶点上;所述强连接满足新顶点与预选择的顶点含有相同的合约编号,所述弱连接满足新顶点与预选择的顶点含有不同的合约编号;
对有向无环图中顶点的权值进行更新;
在添加顶点后,对有向无环图进行分叉剪枝,所述分叉是一个或多个类型为合约交易顶点的新顶点未强连接到最新的可被强连接的顶点,导致多个顶点强连接到同一个顶点的现象,所述剪枝是将部分顶点和与这些顶点有关的边删除,使得含相同合约编号的顶点依次连接构成一条链。
2.根据权利要求1所述的基于有向无环图的支持合约的分布式账本共识方法,其特征在于,顶点选择策略是:如果新顶点的类型是合约定义顶点,则不选择可被强连接的顶点,且预选择至少两个可被弱连接的顶点;如果新顶点类型是合约交易顶点,则预选择一个可被强连接的顶点,预选择至少一个可被弱连接的顶点。
3.根据权利要求1所述的基于有向无环图的支持合约的分布式账本共识方法,其特征在于,预选择可被强连接的顶点时,选择有向无环图中所有可被强连接的顶点集合中最新的一个顶点。
4.根据权利要求1所述的基于有向无环图的支持合约的分布式账本共识方法,其特征在于,根据如下方法预选择可被弱连接的顶点:首先根据新顶点的合约编号和交易编号代入生成伪随机数的函数中,获取多个输出值;
然后选取前k个输出值,每个输出值均在由有向无环图中已存在的合约编号构成的集合里;其中k为配置的最大弱连接数;
再从选取的输出值中,选择一个以该输出值为合约编号的顶点,且该顶点是在所有以该输出值为合约编号的顶点中最新添加到有向无环图的,至多选择k个顶点作为预选择可被弱连接的顶点。
5.根据权利要求1所述的基于有向无环图的支持合约的分布式账本共识方法,其特征在于,所述创世顶点的合约编号、交易编号与权值均为0。
6.根据权利要求1所述的基于有向无环图的支持合约的分布式账本共识方法,其特征在于,根据如下方法更新有向无环图中顶点的权值:新顶点所属的强连接链包含的除该新顶点以外的每个顶点的权值w修改为其中,w′为更新后的权值,th为配置的顶点可信阈值;
新顶点所属的弱连接链包含的除该新顶点以外的每个顶点的权值w修改为其中,表示自然数;新顶点所属的弱连接链指被所述新顶点弱连接的顶点所属的强连接链的中所有顶点的集合。
7.根据权利要求1所述的基于有向无环图的支持合约的分布式账本共识方法,其特征在于,为避免由于网络延迟、黑客攻击导致网络节点并不能总是将一个合约交易顶点与最新的与其合约编号相同的顶点强连接,网络节点在添加顶点后,还根据如下方法对有向无环图进行分叉剪枝:
在新顶点添加完毕后,扫描该顶点所属的强连接链与弱连接链,将链上所有权值小于等于可信阈值的、且未标记为“可信的”顶点,标记为“可信的”;其中顶点v所属的弱连接链指被顶点v弱连接的顶点所属的强连接链的中所有顶点的集合;
然后在被新标记为“可信的”顶点所强连接的先序顶点,如果被其他顶点强连接,则将其他这些顶点标记为“不可信的”;
再将强连接被标记为“不可信的”顶点的顶点标记为“不可信的”,直至不再有顶点强连接被标记为“不可信的”顶点;
最后删除所有被标记为“不可信的”顶点,及有关的边。
8.一种基于有向无环图的支持合约的分布式账本共识系统,其特征在于,所述分布式账本的创世顶点不连接有向无环图的任意顶点,第二个添加到有向无环图的顶点必须连接创世顶点;从第三个添加到有向无环图的顶点开始,顶点类型包括合约定义顶点和合约交易顶点;第二个添加到有向无环图的顶点类型必须为合约定义顶点;每个顶点含两个编号,一个是合约编号,一个是交易编号,且每个交易编号均不相同;当添加到有向无环图的顶点的类型为合约定义顶点时,顶点的合约编号不得与有向无环图中任意其他顶点的合约编号相同;当添加到有向无环图的顶点的类型为合约交易顶点时,顶点的合约编号必须属于在有向无环图中所有顶点的合约编号构成的集合;当添加到有向无环图的顶点的类型为合约交易顶点时,顶点必须强连接有向无环图中的一个顶点,并弱连接有向无环图中至少一个顶点;所述系统包括多个网络节点,所述网络节点设有顶点添加模块和分叉剪枝模块,用于在定义一个新的智能合约时,或者根据现有的智能合约及其状态发起一笔新的交易时,向有向无环图中添加顶点;所述顶点添加模块包括:新顶点赋权值单元,用于为即将添加到有向无环图中的新顶点赋权值,所述权值为正整数;
现有节点连接单元,用于预选择零个或一个可被强连接的顶点,预选择一个或多个可被弱连接的顶点,然后将新顶点强连接到预选择的可被强连接的顶点上,并弱连接到所有预选择的可被弱连接的顶点上;所述强连接满足新顶点与预选择的顶点含有相同的合约编号,所述弱连接满足新顶点与预选择的顶点含有不同的合约编号;
权重更新单元,用于对有向无环图中顶点的权值进行更新;
以及同步单元,用于将账本同步到网络中的其他网络节点;
所述分叉剪枝模块,用于在添加顶点后,对有向无环图进行分叉剪枝,所述分叉是一个或多个类型为合约交易顶点的新顶点未强连接到最新的可被强连接的顶点,导致多个顶点强连接到同一个顶点的现象,所述剪枝是将部分顶点和与这些顶点有关的边删除,使得含相同合约编号的顶点依次连接构成一条链。
9.根据权利要求8所述的一种基于有向无环图的支持合约的分布式账本共识系统,其特征在于,所述分叉剪枝模块包括:
可信顶点标记单元,用于在新顶点添加完毕后,扫描该顶点所属的强连接链与弱连接链,将链上所有权值小于等于可信阈值的、且未标记为“可信的”顶点,标记为“可信的”;其中顶点v所属的弱连接链指被顶点v弱连接的顶点所属的强连接链的中所有顶点的集合;
直接不可信顶点标记单元,用于在被新标记为“可信的”顶点所强连接的先序顶点,如果被其他顶点强连接,则将其他这些顶点标记为“不可信的”;
间接不可信顶点标记单元,用于将强连接被标记为“不可信的”顶点的顶点标记为“不可信的”,直至不再有顶点强连接被标记为“不可信的”顶点;
以及剪枝单元,用于删除所有被标记为“不可信的”顶点,及有关的边。
10.一种计算机系统,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述计算机程序被加载至处理器时实现根据权利要求1‑7任一项所述的基于有向无环图的支持合约的分布式账本共识方法。
说明书 :
基于有向无环图的支持合约的分布式账本共识方法与系统
技术领域
背景技术
中存在一个核心节点,管理着其他节点,或者在数据库的运作过程中扮演重要角色,一旦该
核心节点失效,一个或多个数据库操作便无法进行。去中心化的结构意味着这些网络节点
地位平等,不存在一个核心节点,即在一定数量的节点失效时,数据库仍能正常运作。比特
币、以太坊和超级账本等区块链平台所使用的基于区块链的数据库就属于去中心化分布式
账本。
区块链等去中心化分布式账本技术结合,从而开发出去中心化的、基于智能合约的应用程
序,实现自动化可信交易等功能。超级账本、以太坊和一些基于以太坊的区块链平台,都是
支持智能合约的去中心化分布式账本平台。
个区块的哈希值、当前区块的哈希值,另外还有时间戳和交易数量等元信息。区块体中记录
着交易的详细内容,如交易发起方、收款方、金额和时间戳等。一个区块体可以包含一笔或
若干笔交易。根据区块链平台的不同,区块链的具体实现有所区别。
是远远不足的。为了提高性能,现有一些方法放弃使用基于链表结构的区块链,转而使用基
于非链表结构的分布式账本技术,如采用有向无环图。对于有向无环图来说,如果认为图中
的每个顶点是一笔交易,新的交易以某种方式连接到现有的图上,由于有向无环图天然地
只具备偏序关系,而不具备全序关系,在提高了交易的并发能力从而提高吞吐量的同时,严
格的交易顺序变得难以确定。智能合约由于涉及数据状态的有序修改,与分布式账本的结
合必然要求分布式账本具备全序关系。如何使得有向无环图具备全序关系从而支持智能合
约的同时,分布式账本的性能优良,就变得十分重要。
发明内容
账本的并发性能,使得去中心化分布式账本的应用领域更为开阔。
从第三个添加到有向无环图的顶点开始,顶点类型包括合约定义顶点和合约交易顶点,网
络节点在定义一个新的智能合约时,或者根据现有的智能合约及其状态发起一笔新的交易
时,向有向无环图中添加顶点,并将账本同步到网络中的其他网络节点,具体顶点添加的步
骤包括:
的顶点上;所述强连接满足新顶点与预选择的顶点含有相同的合约编号,所述弱连接满足
新顶点与预选择的顶点含有不同的合约编号;
选择一个可被强连接的顶点,预选择至少一个可被弱连接的顶点。
择可被弱连接的顶点。
方法对有向无环图进行分叉剪枝:
接链指被顶点v弱连接的顶点所属的强连接链的中所有顶点的集合;
向无环图的顶点必须连接创世顶点;从第三个添加到有向无环图的顶点开始,顶点类型包
括合约定义顶点和合约交易顶点;所述系统包括多个网络节点,所述网络节点设有顶点添
加模块,用于在定义一个新的智能合约时,或者根据现有的智能合约及其状态发起一笔新
的交易时,向有向无环图中添加顶点;所述顶点添加模块包括:
所有预选择的可被弱连接的顶点上;所述强连接满足新顶点与预选择的顶点含有相同的合
约编号,所述弱连接满足新顶点与预选择的顶点含有不同的合约编号;
的”;其中顶点v所属的弱连接链指被顶点v弱连接的顶点所属的强连接链的中所有顶点的
集合;
述的基于有向无环图的支持合约的分布式账本共识方法。
合约编号的顶点之间具备了全序关系,从而实现了基于有向无环图的分布式账本对智能合
约的支持。此外,本发明提供的顶点添加算法和分叉剪枝算法解决了因网络延迟、恶意攻击
等原因导致的异常现象,为分布式账本的安全性和可靠性提供了保证。
附图说明
具体实施方式
于有向无环图的分布式账本数据结构,包括如下内容:
络节点基于所述数据结构执行的。
在向账本中添加新顶点(即定义新合约,或根据合约发起交易)时,必须在其本地执行本发
明提供的共识方法,然后将账本同步到其他网络节点。该账本的起始是创世顶点(即顶点
0),该顶点由创建者网络节点创建并同步到其他网络节点。创建者网络节点可以在创世顶
init
点中可以定义该账本的参数以初始化整个账本,如新增顶点的初始权值2 ,顶点可信的
阈值th,用于选择待弱连接的顶点的合约编号的随机函数Ran(ScNo,VNo,Nonce)和最大弱
连接数k等。为了与后继的合约定义顶点与合约交易顶点作区分,创世顶点的合约编号、交
init
易编号与权值均为0。图2展示了一个新增顶点的初始权值2 为32,顶点可信的阈值th为
2,最大弱连接数k为3的账本。
在定义一个新的智能合约时添加;合约交易顶点,网络节点根据现有的智能合约及其状态
发起一笔新的交易,以改变对应智能合约状态时添加。为了区别不同的智能合约,以合约编
号指代不同的智能合约,因此要求合约定义顶点的合约编号必须互不相同。为了确保某笔
交易是建立在一个现有的智能合约基础上,该合约交易顶点的合约编号必须与该合约定义
顶点的合约编号一致。图2中展示了一个由19个顶点(其中2个被删除)构成的账本。
约交易顶点时,网络节点都可以证明与自己无关的(合约编号不同的)顶点所代表的合约定
义或合约交易是正确的,即通过计算被证明的顶点的哈希值,并将该值添加到新顶点中,从
而将新顶点与该被证明的顶点弱连接。在添加合约交易顶点时,网络节点可以且必须证明
与自己有关的(合并编号相同的)智能合约的定义(合约定义顶点)与先序状态(先序合约交
易顶点)是正确的,即通过计算与新顶点同合约编号的最新现有顶点的哈希值,并将该值添
加到新顶点中,从而将新顶点与该现有顶点强连接。图2展示了一个含5个智能合约、13个合
约交易(其中2个合约交易顶点被删除)的账本。
顶点添加步骤,包括:
的顶点上,并弱连接到所有预选泽的可被弱连接的顶点上;
预选择一个可被强连接的顶点,预选择至少一个可被弱连接的顶点。
一个自然数,SCMAX为该有向无环图所允许的最大合约编号值。
顶点作为预选择可被弱连接的顶点。
连接了顶点10、顶点5和顶点0;合约交易顶点70强连接了顶点12并弱连接了顶点15。
据步骤(2)中顶点选择策略中的弱连接顶点的预选择方法,再选择1至3个顶点进行弱连接。
该网络节点选择了顶点25和顶点98这两个顶点,将顶点3与它们进行弱连接。连接完成后,
网络节点还需对所有涉及到的顶点进行权值更新:对于顶点3所属的强连接链中的顶点77、
74、84、70、12,权值从32、16、8、4、2更新为16、8、4、2、2,对于顶点3所属的弱连接链中的顶点
25、44、8、31、10、1、98,权值从35、19、11、7、2、2、32更新为36、20、12、0、2、2、33。
程它们的权值保持不变;而对于顶点31,权值w=7,且 (w+1)=2 ,因而更新后的权
值为0,同样小于等于阈值th。对于一个顶点,随着被直接、间接强连接的次数增多,类似于
区块链,其可信程度越来越高,其权值最终会在有限次数内稳定在阈值或阈值以下;一个顶
点被直接、间接弱连接的次数增多,同样可以表明其可信程度越来越高,其权值同样会在有
限次数内稳定在阈值或阈值以下。因此,可以认为权值一旦小于等于阈值,该顶点就具备了
相当高的可信程度,使其能被大多网络节点所共同认可(即共识),从而为分叉剪枝算法提
供铺垫。
延迟为1秒,在1秒内有两个不同的网络节点向各自的本地账本各添加了顶点31和顶点15
(合约编号均为1)。从整个分布式账本网络的全局来看,这两个顶点的添加时间总是有先有
后的,但对于这两个网络节点来说,由于两个顶点添加间隔时间太短,在向各自的本地账本
添加顶点时,合约编号为1的最新顶点都是10,从而造成了对规则“一个合约交易顶点必须
强连接最新的与其合约编号相同的顶点”的破坏。如何取舍顶点31和顶点15是分叉剪枝算
法所要做的。
一个顶点的现象。
为36、20、12、0、32、16。由于顶点31相对于顶点15“率先”进入可信区间(即权值小于等于阈
值),因而顶点31被认为比顶点15更可信。根据分叉剪枝算法,将顶点31及其后继顶点暂时
保留,网络节点需要将顶点15及其后继顶点16作为不可信顶点从账本中删除,从而实现分
叉剪枝。
义一个新的智能合约时,或者根据现有的智能合约及其状态发起一笔新的交易时,向有向
无环图中添加顶点;所述顶点添加模块包括:
点,预选择一个或多个可被弱连接的顶点,然后将新顶点强连接到预选择的可被强连接的
顶点上,并弱连接到所有预选择的可被弱连接的顶点上;所述强连接满足新顶点与预选择
的顶点含有相同的合约编号,所述弱连接满足新顶点与预选择的顶点含有不同的合约编
号;权重更新单元,用于对有向无环图中顶点的权值进行更新;以及同步单元,用于将账本
同步到网络中的其他网络节点。
权值小于等于可信阈值的、且未标记为“可信的”顶点,标记为“可信的”;直接不可信顶点标
记单元,用于在被新标记为“可信的”顶点所强连接的先序顶点,如果被其他顶点强连接,则
将其他这些顶点标记为“不可信的”;间接不可信顶点标记单元,用于将强连接被标记为“不
可信的”顶点的顶点标记为“不可信的”,直至不再有顶点强连接被标记为“不可信的”顶点;
以及剪枝单元,用于删除所有被标记为“不可信的”顶点,及有关的边。
现所述的基于有向无环图的支持合约的分布式账本共识方法。