一种基于社区发现的dag网络拓扑构建方法及交易方法

文档序号:170154 发布日期:2021-10-29 浏览:30次 >En<

阅读说明:本技术 一种基于社区发现的dag网络拓扑构建方法及交易方法 (Community discovery-based DAG network topology construction method and trading method ) 是由 张珠君 朱大立 范伟 于 2021-07-20 设计创作,主要内容包括:本发明公开了一种基于社区发现的DAG网络拓扑构建方法及交易方法。本发明方法为:1)将物联网中的节点划分为多个社区;2)将每个所述社区注册进入区块链系统;每个社区拥有一个唯一标识ID-(C),基于该ID-(C)生成一个社区起始区块B-(C);区块链系统接收社区内的每个用户节点的注册信息并为其分配一个用户标识ID-(C,U),并基于ID-(C,U)生成用户起始区块B-(C,U);针对用户节点U-(1)生成交易区块并链接于用户节点U-(1)的用户起始区块后;生成一父节点区块作为所有社区起始区块的父节点;3)遍历每个社区的每个用户节点U,如果其发起交易T的应答方与其在同一社区内,则进行社区内共识;否则启动社区间共识。(The invention discloses a DAG network topology construction method and a trading method based on community discovery. The method comprises the following steps: 1) dividing nodes in the Internet of things into a plurality of communities; 2) registering each of the communities into a blockchain system; each community has a unique identification ID C Based on the ID C Generating a community start block B C (ii) a The blockchain system receives the registration information of each user node in the community and distributes a user identification ID to the registration information C,U And based on ID C,U Generating a user start block B C,U (ii) a For user node U 1 Generating a transaction block And linked to user node U 1 User start block of Then; generating a father node block as a father node of all community initial blocks; 3) traversing each user node U of each community, and if the responder initiating the transaction T is in the same community, performing community consensus; otherwise, the community consensus is started.)

一种基于社区发现的DAG网络拓扑构建方法及交易方法

技术领域

本发明涉及区块链技术领域,具体涉及一种基于社区发现的DAG网络拓扑构建方法及交易方法。

背景技术

物联网技术高速发展,在医疗、物流、工控领域广泛应用,区块链的分布式存储、数据可追溯特性为灵活多样的物联网应用模式提供了一个可行的技术思路,但是物联网应用规模不断扩大,可扩展问题突出。可扩展性是指系统性能不受网络节点数目增大而降低,具体表现为交易效率和对系统安全性的保证上。区块链技术如何适应日渐庞大、复杂的物联网系统的可扩展性要求是当前迫切需要解决的问题。

区块链技术根据哈希加密、时间戳、分布式共识和智能合约在分布式系统中实现分步式交互。传统的链式区块链模型源自中本聪(Satoshi Nakamoto)的比特币底层技术设计模型。链式区块链的基本单位是一个块,块通过散列指针连接,以确保数据完整性、连续性和合法性。

但是,区块链去中心化信任机制的成本是可扩展性瓶颈,系统吞吐量不足。以比特币为例,当前系统的最大交易处理速率仅为每秒7笔交易,每笔交易需要6个区块确认,导致至少1个小时的延迟。相反,主流支付工具,例如visa,平均每秒可处理2000笔交易,峰值处理能力为每秒56000笔交易。这种巨大的性能差距使得当前的区块链不足以支持实际活动,并限制了其大规模应用。

与链式区块链相比,有向无环图(DAG)具有出色的可扩展性。链式区块链受到数据链式组织的限制,任何分叉都将被视为非法。写入数据库的权限的唯一性和数据的单向扩展极大地限制了区块链的可扩展性和并发性。在数据组织方面,DAG样式的区块链允许两个或多个哈希指针组成一个块,并且一段时间内的块将形成有向无环图。在写权限方面,DAG样式的区块链允许多个用户拥有写权限。每个区块的生产者可以选择独立引用多个历史区块,然后广播交易。收到该块的用户将其保存在本地数据库中。这两个方面的改革使DAG区块链的可扩展性和并发性大大提高。

作为一种谣言传播算法,DAG异步通信机制虽然提高了可伸缩性,却带来了无法控制的一致性问题。区块链是一种用于同步操作的验证机制,可以确保高度一致性。但是,作为异步操作,DAG没有全局排序机制。运行智能合约时,经过一段时间的操作后,节点之间存储的数据可能会偏离原始数据。因此,设计一种安全高效的DAG数据结构和共识机制是保证DAG在物联网领域落地应用的前提。

发明内容

针对上述问题,本发明的目的在于提供一种基于社区发现的DAG网络拓扑构建方法及交易方法,以实现可扩展性和安全性之间的平衡。

本发明基于DAG的并发机制来满足系统可伸缩性。在实际的物联网网络中,某些网络实体节点紧密交互,并且在某些其他网络实体节点之间几乎没有事务。不必维护所有网络数据的强一致性,而保持最终一致性可以满足系统要求。这种关系可以抽象为社交网络中的社区结构,联系紧密的节点可以看成一个社区,社区内部是紧耦合的关系,社区之间的通信较少,连接稀疏。

为了优化资源消耗并提高系统吞吐量,同时利用DAG的优势实现共识和分散化,本发明基于社区划分的思想设计了一种C-DAG(Community-assisted DAG)架构,如图1所示。

C-DAG的设计包括三个方面:(1)引入社区概念。基于CNM社区分析算法,将紧密连接的节点划分为一个统一的社区。社区内部采用了DAG并发机制,以提高系统吞吐量。(2)设计基于社区的DAG区块数据结构,以实现区块的高效生成。(3)提出基于社区划分的DAG共识算法,包括在社区内运行独立的共识机制和由社区之间的交易驱动的全局区块排名机制,以确保交易数据的全局最终一致性。

本发明的技术方案为:

一种基于社区发现的DAG网络拓扑构建方法,其步骤包括:采用加权CNM算法将物联网中的节点划分为多个社区;其中加权CNM算法为CNM算法的模块度Q计算公式中增加了社区内部边和跨社区边的权重信息,即Q=∑i(eiiwii-(aiwi)2);eii是社区i的内部边密度,ai是跨社区i的边密度,wii是社区i中不同节点之间的连接权重,wi表示社区i内部节点和外部节点之间连接的权重;然后基于划分的社区形成物联网的DAG网络拓扑图。

一种交易方法,其步骤包括:

1)采用加权CNM算法将物联网中的节点划分为多个社区;其中加权CNM算法为CNM算法的模块度Q计算公式中增加了社区内部边和跨社区边的权重信息,即Q=∑i(eiiwii-(aiwi)2);eii是社区i的内部边密度,ai是跨社区i的边密度,wii是社区i中不同节点之间的连接权重,wi表示社区i内部节点和外部节点之间连接的权重;

2)将每个所述社区注册进入区块链系统,每个社区拥有一个唯一标识IDC,基于该IDC生成一个社区起始区块BC;区块链系统接收社区内的每个用户节点的注册信息并为其分配一个基于其所属社区标识IDC和注册信息的唯一用户标识IDC,U,并基于IDC,U生成用户起始区块BC,U,以及相应的公私钥信息PKU和SKU;针对用户节点U1生成交易区块并链接于用户节点U1的用户起始区块后,用于记录用户节点U1与其他用户节点U2的交易内容;区块链系统生成一父节点区块作为所有社区起始区块的父节点;

3)遍历每个社区的每个用户节点U,如果其发起交易T的应答方与其在同一社区内,则进行社区内共识;否则转到4);其中社区内共识的方法为:确定各用户节点的角色,包括投票节点、生产节点和候选节点,选取一用户节点作为主节点,当主节点收到任务发布请求时,向其余用户节点U发送共识指令,启动共识运算;共识运算开始时,主节点将生产块请求和数据块消息(b,h,IDU,hash(b),sig(hash(b)))广播给投票节点;其中b是交易T对应的新区块、h是区块b的序号、IDU是节点标识、hash(b)是区块b的摘要、sig(hash(b))是摘要的签名;当投票节点收到广播消息后进行验证,验证合法后将添加时间戳timestamp,并向全网广播消息(b,h,IDU,hash(b),sig(hash(b)),timestamp);主节点收到至少1+Nv/2投票节点的验证消息后,对该区块b达成共识,生产节点生产交易区块;其中Nv为投票节点数量;

4)启动社区间共识,将形成社区间的交易共识结果后,由发起交易T的用户节点U将社区内的交易共识结果及社区间的交易共识结果在全网内广播,进行全网数据同步。

进一步的,每个用户节点拥有若干个公开的包含交易记录的链式结构,同一对用户之间的交易记录构成一个链式结构,每一交易记录采用一交易区块进行记录;所述交易区块中记录的信息包括交易区块标识IDB、交易发起方的标识IDS和数字签名sig(S)、交易接收方的标识IDR和数字签名sig(R)、前一交易区块标识IDB-1和哈希值hash(B-1)、交易内容M、当前交易区块完成时间。

进一步的,所述用户起始区块用于记录用户节点的标识IDU、公私钥信息PKU和SKU、数字签名sig(U)。

进一步的,所述社区起始区块中记录对应社区的标识IDC

进一步的,利用PBFT算法确定各用户节点的角色。

本发明具有如下有益效果:

1、提出了一种C-DAG架构,为提高区块链网络的吞吐量提出了理论模型;

2、对社区分析算法CNM进行优化,以构建具有紧密通信节点的社区,每个社区都采用基于DAG的分布式账本技术以提高系统并发性能;

3、设计了基于社区划分的DAG数据结构,为保证区块快速生成提出数据结构上的支撑;

4、社区内部采用了基于DVPBFT的独立共识算法,社区之间采用了基于事务的数据同步机制,解决了数据一致性问题。

附图说明

图1为DAG架构图;

图2为网络拓扑实例图;

图3为基于社区的DAG数据结构图;

图4为交易区块数据结构图;

图5为用户起始区块数据结构图;

图6为DVPBFT机制图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明为一种基于社区的DAG交易机制,具体包括优化社区划分算法、设计支持并行交易的数据结构和提出高效的共识算法。

1.基于CNM的网络社区划分算法(即构建DAG网络拓扑)

合理的社区划分方法是提高网络并发性的必要前提。社区是紧密连接并在网络中具有某些共同特征的设备节点的集合。本发明基于Newman提出的基于高稳定性的模块值Q优化的贪婪算法CNM算法进行优化以实现更为合理的社区划分。

社区划分的出色程度是通过模块度Q来衡量的。Q的原始定义如下:

Q=∑i(eii-ai 2)

如上式所示,eii是社区i的内部边密度,ai是跨社区i的边密度,Q代表社区内边密度和社区间边密度之间的比较。Q越接近1,社区划分结果越好。以一定时间内物联网终端节点存在通信交互,则两终端间作一条边;一节点在其所在的社区内的度(即边数量)除以该节点的总度数为社区内部边密度,该节点延伸到社区外的度除以该节点的总度数为跨社区的边密度。

为了更准确地实现社区划分,将两个节点的日常交互数据作为它们之间边缘的权重。节点之间交互的数据量越大则连接权重越大,并且两个节点之间的关系越紧密。因此,将权重信息添加到计算公式中,以更准确地测量节点之间的关系。改进的计算公式定义如下:

Q=∑i(eiiwii-(aiwi)2)

新添加的参数wii是社区i中不同节点之间的连接权重;wi表示社区内部节点和外部节点之间连接的权重。一定时间内物联网终端节点间的通信次数作为两终端间的权重,在同一社区内的两终端的通信次数为社区内终端连边的权重,跨社区的两终端的通信次数为不同社区终端连边的权重。

加权CNM算法基于经典CNM运算,在Q计算公式中增加了社区内部边和跨社区边的权重信息。本发明选取图2所示的拓扑作为示例,进行社区划分。DAG是区别于区块链链式结构的分布式账本,也是一种基于图(非串行的链)的数据结构;图2规定了哪些节点在一个社区里,根据下述DAG数据结构构建规则,首先初始化创世节点,然后链接到每个社区建立一个社区起始区块,依次链接用户起始区块\交易区块,建立的是基于树(非串行单链)的DAG数据结构,每个终端节点都维护这样一个数据结构;社区间节点无交易时终端节点数据结构只维护社区内交易数据的一致性,当社区间产生交易时解发全网交易数据的同步。

CNM依据Q衡量社区划分结果是否合适有效,Q越接近1,代表社区划分结果越好,社区间的耦合越小。理论上Q取值范围为[-1/2,1)。在本发明示例中社区划分后的Q值为0.6179,划分效果比较理想。

2.DAG数据结构设计

基于社区划分的DAG数据结构,旨在保证社区内的交易数据高效完成同步,即区块快速生成,并可保证社区间交易的最终一致性。区块包括4种类型:父节点区块、社区起始区块、用户起始区块、交易区块。父节点区块为所有社区起始区块的父节点(也称为创世节点),标识为0;依据社区划分算法划分的每个社区注册进入区块链系统,每个社区拥有一个唯一标识IDC,基于该IDC生成一个社区起始区块BC;社区内的每个用户节点向区块链系统注册,分配一个基于其所属社区标识IDC和用户注册信息(如IP地址)的唯一用户标识IDC,U,同时基于IDC,U生成用户起始区块BC,U;交易区块链接于用户起始区块BC,U后,记录用户U1与其他用户U2的交易内容。

各社区构成一个DAG结构,如图3所示,图3中箭头表示区块的先后生成关系;每个社区可以看成一个子DAG结构。在社区内,用户U1向用户U2、U3发起的交易分别有序链接于后。通过基于用户并行的DAG结构,所有用户可在同一时间内并行触发交易的同步,生成区块,不再受限于传统区块链的链式串行结构,从数据结构层次规避了区块链串行数据同步效率低的问题。

在社区间,用户节点之间连接松散,但是仍存在部分交易的情况。仅当交易发生时,触发数据同步,生成相应的区块。社区间的DAG结构在某一时刻存在分叉,社区间的数据同步通过全局共识机制保证。

(1)交易区块

每个用户节点拥有若干个公开的包含交易记录的链式结构,同一对用户之间的交易记录构成一个链式结构,每一交易记录采用一交易区块进行记录。交易区块记录着交易区块标识IDB、该用户节点即交易发起方的标识IDS和数字签名sig(S)、交易接收方的标识IDR和数字签名sig(R)、前一交易区块标识IDB-1和哈希值hash(B-1)、交易内容M、当前交易区块完成时间T等。其中区块标识IDB代表着该交易区块在数据结构中的位置,交易双方的签名sig(S)、sig(R)用于验证交易内容。

(2)用户起始区块

用户起始区块记录着该用户节点的标识IDU、公私钥信息PKU和SKU、数字签名sig(U)。其中,用户节点标识IDU作为DAG交易区块分类链接的依据,作为交易区块的父节点,其后链接的交易区块记录着该IDU的用户向其他用户节点发起交易的内容;公钥PKU和数字签名sig(U)用于身份验证。

(3)社区起始区块

社区起始区块仅记录该社区的标识IDC,用来标识该社区。

(4)创世节点

创世节点是所有社区起始区块的父节点,其标号为0,不记录具体交易信息。

3.基于网络社区划分的DAG共识算法

本发明的一个重要目标是设计高效的共识机制保证网络的安全性和一致性。考虑POW等工作量证明对资源消耗较大,物联网环境中对交易的时效要求比较高,设备计算资源宝贵,因此本章基于收敛速度快、相对节省资源的PBFT(Practical Byzantine FaultTolerance,实用拜占庭容错)共识算法来构建可信安全的DAG账本。面向DAG架构,在传统PBFT基础上进行适应性改进,设计出应用于DAG的DVPBFT(DAG-based Voting-combinedPBFT consensus algorithm)共识机制,其分为两个步骤:(1)社区内部采用适用于DAG环境中弱同步环境的基于投票机制和PBFT思想的共识算法,并支持以每个用户起始块为父节点并行执行共识运算;(2)社区间采用基于交易的全局数据同步机制。

在社区内部,在PBFT的基础上引入了投票机制,并在弱同步环境下基于投票实现了参与区块生产的节点的选择。

在DVPBFT算法中,一个社区中的这些节点分为三个角色:投票者(voter),生产者(producer)和候选者(candidate)(见图6)。所有节点都是候选者,从中选择历史行为表现较好的用户节点作为投票者,生产者的历史表现行为相对最优秀(诚实\性能优越)。

投票者:负责为生产者投票。投票者根据身份验证从候选人中选出。

生产者:负责在特定的任命期内生产区块。

候选人:候选人可以通过投票者身份验证,也可以根据投票结果成为生产者。

社区之间的全局数据同步机制基于交易。当社区间之间存在交易时,将触发全局数据同步。

共识流程如下:

(1)注册。设定当前网络中共有M个节点,依据本发明提出的社区划分算法形成N个社区Community,社区标识号为社区内所有的用户向DAG网络注册,生成关联社区标识号的用户标识IDC,U,同时生成相应的公私钥信息PKU和SKU

(2)社区内共识。遍历每个社区的每个用户U,如果其发起交易T的应答方也在同一社区内,则进行社区内的共识。否则转到(3)。为提高算法执行效率和共识运算的可靠性,本发明选择历史行为表现良好的用户节点作为主节点,当主节点收到任务发布请求时,向其余用户节点U发送共识指令,启动共识运算。

共识开始时,主节点将生产块请求和数据块消息(b,h,IDU,hash(b),sig(hash(b)))广播给投票节点。其中b是新区块,可对应一个交易T,h是区块b的序号,IDU是节点标识,hash(b)是区块b的摘要,sig(hash(b))是摘要的签名。当投票节点voter收到广播消息后利用公私钥信息PKU和SKU进行验证,验证合法后将添加时间戳,并向全网广播消息(b,h,IDU,hash(b),sig(hash(b)),timestamp)。主节点收到至少1+Nv/2(Nv为投票节点数量)投票节点的验证消息后,对该区块b达成共识,生产者producer生产交易区块b并将其发送给发起交易T的用户节点。

(3)社区间数据同步。当监测到社区间产生交易时,启动社区间的共识。共识流程如(2)所述,共识的范围为发生交易的两个或多个社区内的所有用户节点。形成共识结果后(即达成验证通过的区块),由相应的交易发起方用户节点将(2)形成的社区内的交易共识结果及社区间的交易共识结果在全网内广播,进行全网数据同步。社区间的交易共识结果是对社区间交易验证达成共识的信息。

本发明提出的基于社区的共识机制在社区内维护了独立的共识,而全局共识仅在社区之间存在交易时才会发生。不必实时维护全局数据一致性,理论上可大大提高共识效率和网络的可扩展性。

尽管为说明目的公开了本发明的具体实施例,其目的在于帮助理解本发明的内容并据以实施,本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。因此,本发明不应局限于最佳实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。

11页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:多方支付数据传输方法、售电方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!