一种维护区块链链下网络数据一致性的方法

文档序号:31565950发布日期:2022-09-20 20:35阅读:119来源:国知局
一种维护区块链链下网络数据一致性的方法

1.本发明属于区块链技术领域,具体是一种维护区块链链下网络数据一致性的方法。


背景技术:

2.区块链是以分布式方式(即没有中央存储库)并且通常没有中央机构(即银行、公司或政府)实施的防篡改的数字分类账本。它本质上是一个去中心化的分布式数据库。在基本层面上,区块链使用户能够在该社区内的共享分类账中记录交易,这样在区块链网络的正常运行下,一旦发布交易就不能更改。2008年,区块链理念与其他几种技术和计算概念相结合,创造了现代加密货币:通过加密机制而不是中央存储库或权威机构保护的电子现金。第一个基于区块链的加密货币是比特币。
3.比特币的诞生是有其具体的背景以及应用场景的,即如何在一个完全匿名,互相不信任又足够理性的虚拟社区中,做到分布式账本的不可篡改。比特币的大部分算法与机制,比如工作量证明和出块时间设计等,都是为了给安全性与匿名性铺路,与此同时不可避免地牺牲了一定程度的整体性能,包括系统吞吐量与可扩展性等。
4.为了适应用户对性能与吞吐量的要求,有些学者设计了新的区块链系统来应对网络与市场环境的变化,例如以太坊就是一个典型的案例。抛开这些新的区块链系统的表现以及设计者如何来权衡性能,安全性和去中心化三者之间的关系,推出新的区块链系统最大的问题就在于:如何满足不同用户的需求以及如何使用户从比特币中迁移过来。
5.区块链链下网络虽然起步时间较晚,但是规模发展迅速,反映了用户以及市场对链下网络的需求是旺盛的。然而,当前链下网络的选择范围较窄、针对性较强的特点亟待解决。如何链接不同共识算法与设计模式的区块链系统、处理当前飞速发展的非同质化代币的链下交易是区块链链下网络协同模型的主要设计挑战。
6.因此如何设计一种适用不同场景、可插拔、可扩展的区块链扩展系统模型,研究扩展系统的数据模型设计、数据一致性维护方法、满足不同安全级别的交易场景需求,将在一定程度上缓解热门区块链的吞吐量与存储量压力、改善用户体验,具有十分重要的研究意义。


技术实现要素:

7.为了实现区块链链下节点的数据互操作功能,本发明提出一种维护区块链链下网络数据一致性的方法,其在树形拓扑网络的系统架构基础上,建立节点与节点的交易通道。同时借鉴组编辑中数据一致性维护的算法思想,保证了节点间数据的因果和最终一致性。将其他节点上需要交易的数字资产同步到相关节点上,使得用户能在单节点上对其他节点上拥有的数字资产方便地进行跨节点操作。本发明能够在各节点的服务器通信延迟较高的情况下,比如物理距离较远或者通信通道阻塞等情况,保证跨节点操作的因果一致性。同时如果有冲突产生,基于回溯算法和分支失效算法也能保证各节点数据的最终一致性。在去
中心化的分布式网络拓扑结构中,在集中式服务器,即节点与节点对等的情况下,每个节点无需维护全局路由表,即无需备份全部网络路由信息,在节省网络资源与存储资源的同时,很好的保护了节点间的隐私性。同时不影响链接区块链的共识算法与系统架构,即对附着系统无侵入性,为可插拔的链下扩展系统。
8.本发明采用的技术方案如下。
9.本发明提供一种维护区块链链下网络数据一致性的方法,具体步骤如下:
10.(1)设计链下网络协同模型,实现链下同质化通证和非同质化通证的交易;
11.交易模型采用utxo模型,基于utxo交易模型的数据类型定义为:
12.utxotx=(inputs:set[input],outputs:list[output],forge:value,fee:value)
[0013]
其中,inputs为该次交易的输入,来源为之前交易中未被花费的输出,outputs为本次交易新生成的输出,forge为交易的额度,fee为本次交易产生的手续费;
[0014]
进而将一次链下交易建模为:
[0015]
u-utxo=《txid,nodeid,inputs,outputs》
[0016]
input=《txid,nodeid,index,scriptsig》
[0017]
ouput=《txid,nodeid,value,scriptpubkey,extra》
[0018]
其中txid是每笔交易的唯一识别符,利用非对称加密技术的私钥签名对输入进行确定,输出地址为一个脚本,最简单的脚本为一个公钥,谁拥有运行此脚本的能力,谁就拥有该未花费的输出;
[0019]
交易双方以及其所在的委员会节点所共同维护的资产,是此通道所有交易历史所抽象出来的有向无环图,在交易发起方向该u-utxo组成的有向无环图增加尾部时,即发起一笔新的交易时,系统将维护交易双方即委员会节点所共同维护的分布式复制结构;
[0020]
(2)采用改进的地址空间转换ast算法维护各节点的有向无环图,用于链下通证交易的因果和最终一致性;
[0021]
在交易通道建立之后,该交易通道所维护的复制结构是u-utxo组成的有向无环图,当交易方在进行交易时,基于改进的地址空间转换算法,将其他节点上需要交易的数字资产同步到本地相关节点上,用户在本地立即执行交易;改进的地址空间转换算法如下:
[0022]
假设输入交易u-tx的时间戳为svo,而u-utxo的时间戳为svs,当出现并发操作时,以时间戳各向量之和定义优先级。
[0023]
本发明中,步骤(2)中,在准备执行一笔接收到交易之前,节点在本地验证该交易是否合法,即合规性检测,具体为对该次交易的所有输入引用进行遍历,将其与该交易通道的所有u-utxo区块进行对比,如果不存在引用同一交易,则合规性检测通过。
[0024]
本发明中,链下网络整体结构以二叉树的数据结构组成,每个节点在此网络拓扑的唯一身份id为160位的二进制哈希,节点m与节点n之间通过异或算法度量距离:
[0025]
dis(m,n)=xor(m,n)
[0026]
异或结果越大,距离越远,反之则越近;
[0027]
网络节点根据异或结果将路由中的节点分到160个集合里,即根据最长公共前缀的160为来分配,每个集合设置一个最大值为k,在进行路由选择时,原节点根据目标节点的160位哈希,选择与之最匹配的集合,向集合中的所有节点发送请求,即每次都查找离目标
节点更近的节点。
[0028]
和现有技术相比,本发明的有益效果在于:
[0029]
1、本发明提出了一种新的区块链链下网络协同模型。基于当前区块链链下网络的延迟高、中心化趋势的缺陷,定义了链下网络协同模型中的同质化通证与非同质化通证。
[0030]
2、本发明提出了一种链下数据一致性维护方法。当交易方在进行交易时,基于改进的地址空间转换算法,用户可在本地立即执行交易,该方法可以解决节点间潜在的数据不一致的问题,进而能够良好的支持节点间的数据同步,以乐观无锁的方式,保证节点间数据的一致性。
[0031]
3、本发明提出了一种链下节点的网络拓扑组织结构。基于kademlia算法的思想,在无中心化的分布式网络模型中,节点无需备份全部网络路由信息,在节省网络资源与存储资源的同时,很好的保护了节点间的隐私性。
附图说明
[0032]
图1为本发明链下协同网络的分层模型图示。
[0033]
图2为本发明链下节点维护资产图示。
[0034]
图3为本发明链下协同网络拓扑图示。
[0035]
图4为本发明实施例1图示。
[0036]
图5为本发明实施例2图示。
具体实施方式
[0037]
下面结合附图和实施例对本发明的技术方案进行详细介绍。
[0038]
本发明方法包括:设计新的链下网络协同模型,实现链下同质化通证和非同质化通证的交易;设计链下网络交易数据的一致性维护方法,用于链下通证交易的因果和最终一致性;设计链下节点的分布式路由网络,实现链下路由节点的自组织。具体介绍如下。
[0039]
1.区块链链下网络协同模型
[0040]
本发明要设计通用性范围广、灵活性程度高的区块链链下网络协同模型。
[0041]
历史上,加密货币根据它们接受的交易风格分为两大类。在基于账户的风格中,每个地址都被视为一个有余额的账户,交易是从一个账户到另一个账户的价值转移。在基于utxo(未使用的交易输出)的风格中,交易感应地花费由先前交易产生的输出并创建新的未花费输出,并且没有与地址相关联的帐户的内在概念。每种风格都有优点和缺点。本发明的交易模型采用utxo模型。
[0042]
基于utxo交易模型的数据类型可定义为:
[0043]
utxotx=(inputs:set[input],outputs:list[output],forge:value,fee:value)
[0044]
其中inputs为该次交易的输入,来源为之前交易中未被花费的输出,outputs为本次交易新生成的输出,forge为交易的额度,fee为本次交易产生的手续费。
[0045]
utxo网络中没有账户的概念,用户可以有多个钱包地址,每个钱包地址中都有着多个utxo,用户的数字资产是所有这些地址中的utxo加起来的总和。在交易模型中,一笔交易将会引用未被花费的utxo,输出为新的未被花费的utxo,消费output以非对称加密为信
任基础。节点验证交易合法性之后,无需对交易进行额外的计算或者状态存储,也就是说,utxo模型是无状态的,这使得在这个模型中,并发操作更容易被处理。基于有向无环图的数据结构,utxo交易无法被重放攻击,验证交易的先后顺序和依赖关系以及举证消费历史在技术上也较为容易。
[0046]
基于以上原理,本发明将一次链下交易建模为:
[0047]
v-utxo=《txid,nodeid,inputs,outputs》
[0048]
input=《txid,nodeid,index,scriptsig》
[0049]
ouput=《txid,nodeid,value,scriptpubkey,extra》
[0050]
其中txid是每笔交易的唯一识别符,nodeid为utxo的节点id,inputs为该次交易的输入,来源为之前交易中未被花费的输出,outputs为本次交易新生成的输出,scriptsig为脚本公钥,scriptpubkey为脚本私钥,extra为额外信息,包括备注等。
[0051]
由于utxo并没有账户的概念,所以确定输入的方法是利用非对称加密技术的私钥签名,而输出地址为一个脚本,最简单的脚本为一个公钥,谁拥有运行此脚本的能力,谁就拥有该未花费的输出。
[0052]
如图2所示,交易双方以及其所在的委员会节点所共同维护的资产,是此通道所有交易历史所抽象出来的有向无环图,在交易发起方向该u-utxo组成的有向无环图增加尾部时,即发起一笔新的交易时,系统将维护交易双方即委员会节点所共同维护的分布式复制结构。
[0053]
2.区块链链下协同网络数据一致性维护技术的设计
[0054]
如前一节所讨论的,在交易通道建立之后,该交易通道所维护的复制结构是u-utxo组成的有向无环图。对于每一次操作,如果存在后一个操作依赖于前一个操作的情况,应该保证两次操作的因果顺序,即因果一致性。而对于并发的操作,即使操作的顺序并不影响最后的结果,也应该保证所有节点的状态复制都是相同的,即操作的最终一致性。
[0055]
本发明采用改进的地址空间转换算法(address space transformation,下文简称ast)维护各节点的有向无环图。
[0056]
在分布式网络结构中,节点与节点之间的通信时长难题保证,如果采用锁定资源的方式进行维护数据一致性的操作,那效率将会比较低下,本发明设计一种节点在本地可以立即执行,参考ast算法与时间戳回溯思想保证操作的正确执行,可以显著提高共识效率。具体控制算法如下伪代码所示,该算法假设输入交易u-tx的时间戳为svo,而u-utxo的时间戳为svs,当出现并发操作时,以时间戳各向量之和定义优先级:
[0057][0058]
在准备执行一笔接收到交易之前,节点需要在本地验证该交易是否合法,即合规性检测,具体为对该次交易的所有输入引用进行遍历,将其与该交易通道的所有u-utxo区块进行对比,如果不存在引用同一交易,则合规性检测通过,具体算法如下伪代码所示:
[0059][0060]
3.链下去中心化的分布式网络拓扑
[0061]
本发明基于kademlia算法的思想,在无中心化的分布式网络模型中,节点无需备份全部网络路由信息,在节省网络资源与存储资源的同时,很好的保护了节点间的隐私性。整体网络结构以二叉树的数据结构组成,每个节点在此网络拓扑的唯一身份id为160位的二进制哈希。节点与节点之间通过异或算法度量距离:
[0062]
dis(m,n)=xor(m,n)
[0063]
异或结果越大,距离越远,反之则越近。本发明的网络节点根据异或结果将路由中的节点分到160个集合里,即根据最长公共前缀的160为来分配,每个集合设置一个最大值为k,在进行路由选择时,原节点根据目标节点的160位哈希,选择与之最匹配的集合,向集合中的所有节点发送请求,即每次都查找离目标节点更近的节点。
[0064]
该网络在极少存储空间的代价下,最多对数级次数的查找就可以找到离目标节点最近的k个节点进行通信,即使在目标节点宕机的情况下,仍然可以通过其最近的节点簇,找到备份的数字资产。
[0065]
实施例中,采用windows10操作系统的pc机作为终端设备,基于以太坊底层区块链、truffle和ganache框架,以goland idea和vscode为开发平台,使用python和golang语言编程,使用solidty编写智能合约、基于本发明介绍的一种维护区块链链下网络数据一致性的方法,研究开发了链下扩展网络操作平台,用户可基于本发明进行链下数字资产的交易或转移。
[0066]
实施例1
[0067]
图1为本发明链下协同网络的分层模型图示。自上而下主要包括应用层、数据层、交易层、网络架构层和区块链层。其中区块链层是链下协同网络服务的对象层,实现了链下网络可插拔的特性。图2为交易层中,交易通道与委员会的图示,交易数据以utxo的结构存储,而委员会机制负责对该交易通道进行监管。图3为链下协同网络的拓扑结构,节点以树状结构存储,为部分复制结构。
[0068]
如图4所示,在拥有合法的帐号之后,用户进入首页即可快速预览自己的通道状态并进行管理。用户在登录之后,可以查看该账户所有建立过的通道,正常情况下,该通道的状态为正在运行,即用户可以对该通道的资产进行管理,当对方提前结算时,该通道显示红色警告用户,如果对方提交了陈旧的状态,则该用户可以履行举证合约。同时用户可以新增通道,为了改善用户体验,用户只需提交和另一方的双重签名合约地址,即可新增通道到系统中,该通道的通道唯一标识id由系统自动生成,并且该通道的资产状态为合约的初始状态。
[0069]
实施例2
[0070]
如图5所示,链下交易也可以更改为租赁市场,租赁是附加了时间属性的交易。用户在进入我的资产界面时,该界面展示的为用户所有的自有资产,自由资产指的是用户可完全支配的资产,用户可以查看该资产的相信信息,并且拥有对该资产定价、转移和销毁的权力。如果一个数字资产已经被定价,则该资产将展示在通道另一方的租赁市场中。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1