一种基于智能合约的schema统一存取方法技术

技术编号:29464977 阅读:26 留言:0更新日期:2021-07-27 17:52
本发明专利技术公开了一种基于智能合约的schema统一存取方法,通过部署一个智能合约对schema进行统一存储和获取,将新的schema上链存储或者获取现有的schema用于线下解析,均通过调用这一智能合约完成相应操作。数据提供方根据其数据的组织格式,编写相应的schema,规定其链上数据在链下进行解析时各个字段的信息。在完成schema的编写后,数据提供方通过调用智能合约实现schema的存储。第三方通过调用同一智能合约,获得其想要进行解析的数据所对应的schema信息,根据schema对数据提供方上链的数据进行解析,获得各个字段对应的值。本发明专利技术方法一方面简化了各个节点的编码工作,另一方面节点无需存储多个schema与智能合约地址之间的映射关系,提高了节点的资源利用效率以及区块链系统的性能。

A unified schema access method based on smart contract

【技术实现步骤摘要】
一种基于智能合约的schema统一存取方法
本专利技术属于区块链
,涉及一种基于智能合约的schema统一存取方法,数据提供方通过该智能合约存储其数据的schema,其他参与者则通过调用该智能合约获得相应数据的schema,用于对链上特定数据的解析,以此实现基于区块链的高效数据共享。
技术介绍
区块链(Blockchain)作为一种去中心化、数据不可篡改、历史数据可追溯、由多方共同维护的新型分布式数据管理系统,集成了点对点通信、非对称加密、共识机制等多种技术,具有信息不可篡改,数据透明和可追溯的特性,可以保证数据在写入账本后无法被恶意篡改。因此,通过区块链,无需第三方可信机构或协调机构参与,互不信任的多方间可以进行可信的数据共享。区块链技术在公证防伪、金融交易、食品溯源以及数字资产等领域有着广泛的应用场景,数据的链上存储可以实现数据的安全存证和全生命周期的透明监管。以仓单存证为例,将仓单数据上链存储,结合区块链的不可篡改、数据可信等特性,可以实现仓单的安全存证,同时对于监管部门而言,仓单数据的链上存证可以实现仓单的全生命周期的透明监管,对于仓单质押等业务场景具有很高的应用价值。尽管区块链在数据存证、金融交易和食品溯源等方面具有很高的应用价值,但是目前区块链链上数据的高效管理仍存在很大的不足。究其根本,主要是因为现有的区块链系统中(例如以太坊,超级账本等),针对其链上数据,并不存在可以支持丰富语义的数据管理模式(schema)。目前区块链中数据的组织结构比较特殊,数据以区块为单位进行存储,采用的数据模式过于简单,这在很大程度上限制了区块链内部数据的表达能力,导致它所具备的数据管理功能非常有限。由于链上数据缺乏数据模式(schema),各方之间通过区块链进行数据共享时,数据访问用户不能高效的获取其所需数据,导致各方之间的数据共享效率低下。而在关系型数据库中,针对不同类型的数据,可以通过统一管理schema信息来实现数据信息的描述,在访问数据时,可以通过schema信息来解析数据库中的相应数据,进而支持数据的高效访问操作。但在区块链中,目前并不存在类似于数据库中管理schema的功能组件。作为区块链2.0的标志,智能合约让区块链更具有便捷性和拓展性。其本质上是一段程序,以计算机指令的方式实现了传统合约的自动化处理,在区块链内制定合约时使用,能够进行决策、存储以及同其他合约交互等。因此,针对上述问题,一个很直接的解决方案就是数据提供方将其数据的schema写入一个智能合约中,并部署该智能合约,第三方通过调用这个智能合约获得数据的schema,从区块链上取得数据提供方发布的数据后,根据其schema进行数据解析,就能够得到数据中各个字段所对应的值。但通过智能合约管理Schema信息时,智能合约不能像关系型数据库一样提供一个统一的schema管理组件,比较直观的方式是每个schema都部署一个相应的智能合约来管理Schema信息,但这种方式较为低效且实现复杂。针对每次新的应用数据格式,数据提供方都要部署新的智能合约以实现schema的链上存储,且第三方也要在拿到新的合约地址后才能进行调用。如此,一方面让整体的工作变得繁琐,每次有新的应用数据上线,都需要重复一遍上述流程;另一方面,随着schema的增多,相应的智能合约也会增多,每个节点就需要额外对schema与智能合约地址之间的映射关系进行管理,使系统变得臃肿。
技术实现思路
针对区块链中缺乏对数据schema的统一管理所带来的数据共享效率低下以及智能合约的重复部署问题,本专利技术提出了一种基于智能合约的schema统一存取方法,通过部署一个统一的智能合约,主要是在智能合约中实现一个针对schema列表的管理逻辑,完成schema的添加以及获取功能,之后对schema的存储以及获取均通过调用这个智能合约实现,节点就不需要针对每个应用数据格式编写对应的智能合约,也不需要在本地存储不同应用数据的schema对应的智能合约地址。因此只需要部署一次智能合约,之后各类数据对应的schema均通过调用这个合约来完成。而使用本专利技术的方法,不需要部署多个合约,也不需要在本地维护不同应用数据的schema对应的智能合约地址,只需要多个参与方协调部署一个统一的智能合约,在智能合约中实现一个schema列表的管理逻辑,后续的schema存取管理均通过调用此合约完成。本专利技术提供了一种基于智能合约的schema统一存取方法,所述方法包括以下步骤:步骤1:多个参与方节点协调部署一个统一的智能合约;所述智能合约能够实现多个schema的存储以及获取逻辑;步骤2:根据业务需求以及合约规范,部署智能合约得到合约地址;步骤3:当所述区块链网络中的各节点需要在区块链上发布新的应用数据时,以其应用数据对应的schema文件作为函数参数,调用上述部署的智能合约,实现其schema文件在区块链上的存储;步骤4:当所述区块链网络中的各节点需要从区块链上获取其他节点发布的应用数据并进行解析时,调用上述部署的智能合约,获取该应用数据对应的schema,即可用于对链上数据的解析。步骤3中,所述实现schema文件链上储存具体包括以下步骤:步骤3-1:以键值对映射的形式定义一个变量,用于存储多个不同的schema;步骤3-2:指定key值,区块链节点通过check函数验证所述key值是否已经在链上进行储存;步骤3-3:若指定的key值被步骤3-2中的check函数验证通过,则将key值和value值作为参数,根据已提供的put函数,当有节点需要存储新的schema时,调用所述智能合约,执行put方法,实现其应用数据对应schema的链上储存。步骤4中,所述通过调用智能合约获取schema具体包括以下步骤:步骤4-1:以键值对映射的形式定义一个变量,用于存储多个不同的schema;步骤4-2:指定key值,区块链节点通过check函数验证所述key值是否已经在链上进行储存;步骤4-3:若指定的key值被步骤4-2中的check函数验证通过,则将key值作为参数,根据已提供的get函数,当有节点需要获取其他节点的schema时,调用所述智能合约,执行get方法,获取到相应的schema内容,后续用于应用数据的链下解析。所述智能合约所提供的功能逻辑具体包括:以键值对映射的形式定义一个变量,用于存储多个不同的schema;提供一个put函数,当有节点需要存储新的schema时,则调用所述智能合约,执行put方法,实现其schema的链上存储;提供一个get函数,当有节点需要获取其他节点的schema时,则调用所述智能合约,执行get方法,取得相应的schema。区块链节点在调用put和get两个方法时应该提供相应的函数参数;所述的put方法包括两个函数参数,key和value;所述的get方法包括一个函数参数key;所述的key参数为每个schema的唯一标识符,用于标识不本文档来自技高网
...

【技术保护点】
1.一种基于智能合约的schema统一存取方法,其特征在于,所述方法包括以下步骤:/n步骤1:多个参与方节点协调部署一个统一的智能合约;所述智能合约能够实现多个schema的存储以及获取逻辑;/n步骤2:根据业务需求以及合约规范,部署智能合约得到合约地址;/n步骤3:所述区块链网络中的各节点当需要在区块链上发布新的应用数据时,以其应用数据对应的schema文件作为函数参数,调用上述部署的智能合约,实现其schema文件在区块链上的存储;/n步骤4:所述区块链网络中的各节点当需要从区块链上获取其他节点发布的应用数据并进行解析时,调用上述部署的智能合约,获取该应用数据对应的schema,即可用于对链上数据的线下解析。/n

【技术特征摘要】
1.一种基于智能合约的schema统一存取方法,其特征在于,所述方法包括以下步骤:
步骤1:多个参与方节点协调部署一个统一的智能合约;所述智能合约能够实现多个schema的存储以及获取逻辑;
步骤2:根据业务需求以及合约规范,部署智能合约得到合约地址;
步骤3:所述区块链网络中的各节点当需要在区块链上发布新的应用数据时,以其应用数据对应的schema文件作为函数参数,调用上述部署的智能合约,实现其schema文件在区块链上的存储;
步骤4:所述区块链网络中的各节点当需要从区块链上获取其他节点发布的应用数据并进行解析时,调用上述部署的智能合约,获取该应用数据对应的schema,即可用于对链上数据的线下解析。


2.如权利要求1所述的方法,其特征在于,所述智能合约所提供的功能逻辑包括:
以键值对映射的形式定义一个变量,用于存储多个不同的schema;
提供一个put函数,当有节点需要存储新的schema时,区块链节点调用所述智能合约,执行put方法,实现其schema的链上存储;
提供一个get函数,当有节点需要获取其他节点的schema时,区块链节点调用所述智能合约,执行get方法,取得相应的schema。


3.如权利要求2所述的方法,其特征在于,所述区块链节点在调用put方法和get方法时提供了相应的函数参数,包括:
所述的put方法包括两个函数参数,key和value;所述的get方法包括一个函数参数key;
所述的key参数为每个schema的唯一标识符,用于标识不同应用数据的schema;
所述的value参数为应用数据对应的schema。


4.如权利要求2所述的方法,其特征在于,所述区块链节点在调用智能合约的过程中,会遇到的问题包括:
在调用put方法时,区块链节点提供的key参数已被其他节点使用,由于键值的冲突导致其sch...

【专利技术属性】
技术研发人员:江南佟兴张召金澈清秦钢杨英杰
申请(专利权)人:华东师范大学欧冶云商股份有限公司
类型:发明
国别省市:上海;31

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

1