CN116932647A - 一种基于哈希多叉树的区块链智能合约服务框架设计方法及应用系统 - Google Patents
一种基于哈希多叉树的区块链智能合约服务框架设计方法及应用系统 Download PDFInfo
- Publication number
- CN116932647A CN116932647A CN202310845501.9A CN202310845501A CN116932647A CN 116932647 A CN116932647 A CN 116932647A CN 202310845501 A CN202310845501 A CN 202310845501A CN 116932647 A CN116932647 A CN 116932647A
- Authority
- CN
- China
- Prior art keywords
- node
- tree
- hash
- intelligent contract
- contract
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 29
- 238000013461 design Methods 0.000 title claims abstract description 10
- 238000007726 management method Methods 0.000 claims abstract description 24
- 230000007246 mechanism Effects 0.000 claims abstract description 13
- 238000013523 data management Methods 0.000 claims abstract description 11
- 238000013507 mapping Methods 0.000 claims description 70
- 230000006870 function Effects 0.000 claims description 12
- 238000012986 modification Methods 0.000 claims description 7
- 230000004048 modification Effects 0.000 claims description 7
- 239000000284 extract Substances 0.000 claims description 4
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 claims description 3
- 238000004806 packaging method and process Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 7
- 230000006872 improvement Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- RTZKZFJDLAIYFH-UHFFFAOYSA-N Diethyl ether Chemical compound CCOCC RTZKZFJDLAIYFH-UHFFFAOYSA-N 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- 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/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出一种基于哈希多叉树的区块链智能合约服务框架设计方法及应用系统,涉及区块链智能合约的技术领域,令每个节点智能合约作为一个树节点,将若干个节点智能合约彼此相连,在区块链上形成一个哈希多叉树,实现了基于哈希多叉树构造区块链智能合约框架,实现了区块链上的可扩展性、可集成的多叉树结构,为哈希多叉树的每个树节点内置基于角色与权限的访问机制,检查用户是否具有特定的角色与权限,对外设置用户访问接口,提供序列化引擎与反序列化引擎,实现了数据管理和合约管理两大功能域,还可使DApp的可扩展性、兼容性、访问速度、可维护性、数据机密性、数据完整性均得到有效提升。
Description
技术领域
本发明涉及区块链智能合约的技术领域,更具体地,涉及一种基于哈希多叉树的区块链智能合约服务框架设计方法及应用系统。
背景技术
区块链是一项分布式账本技术,具有分布性、安全性、不可篡改优势,具有很高的应用前景。智能合约是电子版合同、数字化合约、智能化合约,利用代码将合同合约写成一段小程序,这段代码一旦写好就无法修改无法篡改,并公之于众,保存在区块链中去中心化,当外界条件发生变化,如违约或合同到期,智能合约会自动触发。
自以太坊出现后,区块链上可运行智能合约,从而实现了去中心化、开放透明、数据安全的分布式应用DApp(D+App,D为英文单词decentralization去中心化的首字母),DApp被认为是下一代互联网Web3.0的核心技术之一,DApp与App相比最大的不同是去中心化的特点,是继承传统App之下发展,结合区块链的特点所形成的产物。
DApp的运行依托于区块链,其代码部署在区块中,用户每一次使用DApp时,区块链网络的所有节点中需要同时执行历史区块中的智能合约代码,这些节点进行排序、共识和验证等过程后,DApp执行结果才能返回给用户。因此,DApp的性能受区块链交易速度的严重影响,在典型的联盟链中,区块链交易速度大约为150次每秒,这使得DApp的性能表现相较于传统App低了几个数量级。另外,出于区块链对安全性的严苛限制,智能合约必须精确地在所有网络节点中完全一致地运行,因此,智能合约在程序编码上存在很多限制,这也导致了DApp开发难度大、可扩展性差等问题。最后,DApp的设计目前尚没有统一的标准,这使得不同DApp系统之间无法兼容、遗留系统无法集成,同时,DApp的访问、管理接口缺乏统一的设计范式,使得DApp的易用性、易维护性、可管理性等软性指标难以达到传统App的水准。
发明内容
为解决当前DApp开发难度大、可扩展性差、性能受区块链交易速度制约的问题,本发明提出一种基于哈希多叉树的区块链智能合约服务框架设计方法及应用系统,基于哈希多叉树构造区块链智能合约框架,实现了区块链上的可扩展性、可集成性,实现了数据管理和合约管理两大功能域,使DApp的可扩展性、兼容性、访问速度、可维护性、数据机密性及数据完整性均得到有效提升。
为了达到上述技术效果,本发明的技术方案如下:
一种基于哈希多叉树的区块链智能合约服务框架设计方法,包括以下步骤:
基于智能合约语言设计若干个节点智能合约Node;
令每个节点智能合约Node作为一个树节点,所述若干个节点智能合约Node彼此相连,在区块链上形成一个哈希多叉树;
为哈希多叉树的每个树节点内置基于角色与权限的访问机制,检查用户是否具有特定的角色与权限;
对外设置用户访问接口,提供序列化引擎与反序列化引擎;所述序列化引擎将所述哈希多叉树的数据及拓扑序列化为字符串并提交给用户,所述反序列化引擎接受来自用户的字符串,并根据所述字符串在所述哈希多叉树上增加、修改或删除数据、拓扑。
优选地,所述区块链智能合约服务框架分为底层、中间层和顶层,其中,底层为支持层,用于为区块链智能合约服务框架提供基础数据、安全、类型转换功能;中间层为数据层,由哈希多叉树组成;顶层为接口层,对外设置用户访问接口;
所述的智能合约语言为Solidity智能合约语言。
优选地,每个节点智能合约Node的实体均包含一个有序哈希映射表,所述有序哈希映射表用于记录其它节点智能合约Node的实体在区块链上的合约地址,并将记录在有序哈希映射表中的其它节点智能合约Node的实体作为包含该有序哈希映射表的节点智能合约Node的实体的子节点;
所述一个有序哈希映射表包含一个key-address无序映射和一个key-key链表,所述key-address无序映射指在区块链上将256位的key映射到160位的合约地址,所述key-key链表是指所述key-address无序映射所映射的每个合约地址均为一个链表节点;一个key-key链表节点包含256位的前链表节点、后链表节点和当前链表节点的值,所述前链表节点和所述后链表节点分别表示上一个链表节点和下一个链表节点对应的关键字,所述当前链表节点的值表示关键字最终映射的值。
优选地,通过一个key-key链表和一个key-address无序映射实现有序映射合约,其中,key-key链表记录了某个节点智能合约Node的实体的全部子节点的key值,链表的每个节点都对应一个子节点和相应的key值,并记录了该节点的合约地址;key-address无序映射将key映射至链表节点,通过链表节点获取子节点的合约地址,完成key到子节点的映射,链表节点记录了相邻链表节点的key值,可通过key-address无序映射实现链表的遍历;
有序映射合约的实体将一个256位的key值映射至一个160位的address值,其中,address值是任意智能合约在区块链上的地址;每一个节点智能合约Node的实体均包含一个有序映射合约的实体,通过该实体的key-value映射,将任意256位内的关键值key映射为子节点的合约地址,同时,有序映射合约通过对链表的访问,支持节点智能合约Node的实体对其子节点的遍历。
优选地,在所述哈希多叉树上的每个树节点对应的节点智能合约Node均有唯一的路径,所述路径由树节点Nodei到哈希多叉树的根节点之间所有节点的关键字key的总和构成,i表示树节点的序次;哈希多叉树仅支持从上至下对树节点进行的访问,通过给出每个树节点Nodei的路径pathi进行访问,访问方式满足的过程为:
Datai=ExtractData(ai),
ai∈{a1,a2,...,ai|ak+1=ExtractChild(ak,Keyk+1),a1=rootNode},
{Keyk}=pathi
其中,ai表示所访问的第i个树节点,Datai表示所访问的树节点记录的数据,pathi表示所访问的树节点在哈希多叉树中的路径,集合{Keyk}表示路径pathi沿途的每个树节点的关键字,集合{ai}表示路径pathi沿途的每个树节点,ExtractData()表示从树节点中提取数据的操作,ExtractChild()表示根据指定关键字从树节点中提取子节点的操作。
优选地,所述节点智能合约Node的实体具有160位的数据插槽,用于存放任意160位以内数据或智能合约地址,其中:
在存放任意160位以内数据时,将数据插槽所位于的实体作为区块链上的结构化数据字段使用,所述结构化数据字段指用户能通过一特定路径访问区块链上的一特定数据;
在存放智能合约地址时,将数据插槽所位于的实体作为区块链上的智能虚拟实体或智能合约版本备份使用,所述智能虚拟实体指所述区块链智能合约服务框架在某一具体路径上挂载的具有智能逻辑与行为的智能合约,所述智能合约版本备份指所述区块链智能合约服务框架在某一隐藏路径下挂载的某个已部署的智能合约的非当前版本,所述挂载指在某一确定路径的节点智能合约Node的实体的数据插槽中记录某一已部署的智能合约的地址;
将智能合约M挂载至树节点I上,当需要访问智能合约M,首先提取所访问的树节点I记录的数据DataI,然后从DataI中提取智能合约M,过程满足:
M=ExtractContract(DataI)
其中,ExtractContract表示根据智能合约地址提取智能合约的操作,ExtractContract(DataI)表示用户访问智能合约M。
优选地,当且仅当用户具有某个特定角色的特定权限时,才能对某个特定节点智能合约Node的实体进行访问,所述基于角色与权限的访问机制具体表示为:
U={ui},R={rj},P={pk}
UR=U×R,RP=R×P
其中,U表示所有用户的集合,R表示所有已定义的角色,P表示所有已定义的权限,MapUR表示用户到角色的映射表,MapRP表示角色到权限的映射表,MapRP和MapUR均由用户指定,CheckUserHasPermission(u,p)为一命题,当用户u具有权限p时,命题为真。
优选地,为哈希多叉树的每个树节点内置基于角色与权限的访问机制时,并为哈希多叉树内置哈希算法和自动差错算法,所述哈希多叉树自下至上计算哈希值,任一树节点的哈希值不仅考虑该树节点自身的数据,也考虑该树节点所有子节点的哈希值,每个树节点收集其子节点的哈希值{hk},设该树节点的数据为d,将子节点的哈希值{hk}与该节点的数据d进行异或加法并打包,最后计算哈希值为:
其中,keccak表示keccak256哈希算法;
逐层对比树节点的当前哈希值与所记录哈希值,以判断树节点所对应的子树的数据或拓扑是否遭到篡改;若当前哈希值与所记录哈希值相同,则子树未经过修改;若当前哈希值与所记录哈希值不相同,则自上至下逐层对哈希值进行对比,在每层找出遭到篡改的子节点,直到找到最终篡改位置。
优选地,所述用户访问接口提供统一接口合约、数据管理合约、合约管理合约及权限管理合约;所述序列化的格式为Json格式;来自用户的字符串的表达式为:
string=JSON({Opk})
Opk={pathk,operationk,valuek}
其中,string表示来自用户的Json格式的字符串,JSON()表示Json编码算法,Opk表示第k次操作,pathk表示Opk所操作树节点的路径,operationk指Opk的具体操作,valuek指Opk操作的值;所述反序列化引擎从接收字符串中,提取{Opk},按照operationk的描述在哈希多叉树中定义数据。
本申请还提出一种基于哈希多叉树的区块链智能合约服务框架应用系统,包括:
节点智能合约模块,提供节点智能合约,节点智能合约包含一个160位的数据插槽,一个256位的哈希值和一个有序哈希映射表;
有序哈希映射合约模块,包含一个链表和一个无序哈希映射,以实现有序哈希映射;
访问控制合约模块,在用户执行访问操作时,检查用户是否具有特定的角色与权限;
数据管理合约模块,对用户提供一致的、基于路径的数据访问接口,整合数据序列化引擎与反序列化引擎;
合约管理合约模块,对用户提供一致的合约管理接口,通过在哈希多叉树上切换所挂载的智能合约,实现合约版本控制功能;
权限管理合约模块,为用户提供角色和权限的定义和修改操作。
与现有技术相比,本发明技术方案的有益效果是:
本发明提出了一种基于哈希多叉树的区块链智能合约服务框架设计方法及应用系统,令每个节点智能合约作为一个树节点,将若干个节点智能合约彼此相连,在区块链上形成一个哈希多叉树,实现了基于哈希多叉树构造区块链智能合约框架,实现了区块链上的可扩展性、可集成的多叉树结构,为哈希多叉树的每个树节点内置基于角色与权限的访问机制,检查用户是否具有特定的角色与权限,对外设置用户访问接口,提供序列化引擎与反序列化引擎,实现了数据管理和合约管理两大功能域,还可使DApp的可扩展性、兼容性、访问速度、可维护性、数据机密性、数据完整性均得到有效提升。
附图说明
图1表示本发明实施例中提出的基于哈希多叉树的区块链智能合约服务框架设计方法的流程图;
图2表示本发明实施例中提出的基于Solidity语言设计节点智能合约形成区块链智能合约框架的整体示意图;
图3表示本发明实施例中提出的有序哈希映射表的实现参照图;
图4表示本发明实施例中提出的区块链智能合约框架的示意图;
图5表示本发明实施例中提出的哈希运算的示意图;
图6表示本发明实施例中提出的用户到角色的映射表与角色到权限的映射表使用无序映射实现的示意图;
图7表示本发明实施例中提出的不同序列化批次下的数据写入速率的示意图;
图8表示本发明实施例中提出的基于哈希多叉树的区块链智能合约服务框架应用系统的结构示意图。
具体实施方式
附图仅用于示例性说明,不能理解为对本专利的限制;
为了更好地说明本实施例,附图某些部位会有省略、放大或缩小,并不代表实际尺寸;
对于本领域技术人员来说,附图中某些公知内容说明可能省略是可以理解的。
下面结合附图和实施例对本发明的技术方案做进一步的说明。
附图中描述位置关系的仅用于示例性说明,不能理解为对本专利的限制;
实施例1
本实施例提出了一种如图1流程图所示的基于哈希多叉树的区块链智能合约服务框架设计方法,区块链智能合约服务框架由Solidity智能合约语言开发,作为分布式应用实现,能够在以太坊(Ethereum)或兼容Solidity智能合约语言的联盟链上部署并运行。
如图2所示,区块链智能合约框架由若干个智能合约与一些基础支持库构成,这些合约与支持库均为Solidity智能合约语言的程序文件。其中智能合约包括:节点合约、有序映射合约、访问控制合约、数据管理合约、合约管理合约,这些智能合约与支持库之间存在彼此导入的关系,对它们进行编译,得到一个完整的二进制文件bin,以及对每个智能合约分别得到一个应用二进制接口文件abi。二进制文件通过相应的区块链SDK部署在区块链上,这样区块链智能合约框架即可开始提供服务;将应用二进制文件传递给用户程序或区块链SDK,即可对区块链上的框架进行访问。
参见图1所示的该方法的流程图,包括以下步骤:
S1.基于智能合约语言设计若干个节点智能合约Node;
每个节点智能合约Node的实体均包含一个有序哈希映射表,所述有序哈希映射表用于记录其它节点智能合约Node的实体在区块链上的合约地址,并将记录在有序哈希映射表中的其它节点智能合约Node的实体作为包含该有序哈希映射表的节点智能合约Node的实体的子节点。一个有序哈希映射表包含一个key-address无序映射和一个key-key链表,key-address无序映射指在区块链上将256位的key映射到160位的合约地址,key-key链表是指所述key-address无序映射所映射的每个合约地址均为一个链表节点;映射原理如图3所示,区块链智能合约框架定义了有序映射合约及链表节点合约,有序映射合约的实体将一个256位的key值映射至一个160位的address值,其中,address值是任意智能合约在区块链上的地址;每一个节点智能合约Node的实体均包含一个有序映射合约的实体,通过该实体的key-value映射,将任意256位内的关键值key映射为子节点的合约地址,同时,有序映射合约通过对链表的访问,支持节点智能合约Node的实体对其子节点的遍历。
有序映射合约通过一个key-key链表和一个key-address无序映射实现有序映射合约,其中,key-key链表记录了某个节点智能合约Node的实体的全部子节点的key值,链表的每个节点都对应一个子节点和相应的key值,并记录了该节点的合约地址;key-address无序映射将key映射至链表节点,通过链表节点获取子节点的合约地址,完成key到子节点的映射,链表节点记录了相邻链表节点的key值,可通过key-address无序映射实现链表的遍历;一个key-key链表节点包含256位的前链表节点、后链表节点和当前链表节点的值,所述前链表节点和所述后链表节点分别表示上一个链表节点和下一个链表节点对应的关键字,所述当前链表节点的值表示关键字最终映射的值。
S2.令每个节点智能合约Node作为一个树节点,所述若干个节点智能合约Node彼此相连,在区块链上形成一个哈希多叉树;
如图4所示,区块链智能合约服务框架分为底层、中间层和顶层,其中,底层为支持层,用于为区块链智能合约服务框架提供基础数据、安全、类型转换等功能,有序映射合约位于该支持层;中间层为数据层,由哈希多叉树组成,通过最顶层的根节点可以对整棵哈希多叉树的任意节点进行寻址;顶层为接口层,对外设置用户访问接口,提供可直接由用户使用的功能,包括序列化/反序列化操作、查询/增加/修改数据、获取合约地址、编辑用户角色和权限、进行合约版本控制等。
所述哈希多叉树位于数据层,在哈希多叉树上的每个节点Nodei都具有唯一的路径,为根节点到Nodei之间所经过的所有节点的key的总和。如图5所示,图中存在A~I共9个节点,每个节点的key都是节点名本身,例如A节点在其父节点的key就是“A”。举例来说,假设A节点是根节点的子节点,那么I节点的路径为:A→C→F→I。这些节点只能从上至下访问,即在访问一个节点前必须先访问其父节点。
在哈希多叉树上的每个树节点对应的节点智能合约Node均有唯一的路径,路径由树节点Nodei到哈希多叉树的根节点之间所有节点的关键字key的总和构成,i表示树节点的序次;哈希多叉树仅支持从上至下对树节点进行的访问,通过给出每个树节点Nodei的路径pathi进行访问,访问方式满足的过程为:
Datai=ExtractData(ai),
ai∈{a1,a2,...,ai|ak+1=ExtractChild(ak,Keyk+1),a1=rootNode},
{Keyk}=pathi
其中,ai表示所访问的第i个树节点,Datai表示所访问的树节点记录的数据,pathi表示所访问的树节点在哈希多叉树中的路径,集合{Keyk}表示路径pathi沿途的每个树节点的关键字,集合{ai}表示路径pathi沿途的每个树节点,ExtractData()表示从树节点中提取数据的操作,ExtractChild()表示根据指定关键字从树节点中提取子节点的操作。
以图5所示的哈希运算结果为例,当需要访问I节点的数据时,其路径为pathi={Keyk}=″root.A.C.F.I″,为访问I节点的数据,需要从root节点开始,沿着I节点的路径,依次按照关键字提取各节点的子节点,即:
A=ExtractChild(root,″A″)
C=ExtractChild(root,″C″)
F=ExtractChild(root,″F″)
I=ExtractChild(root,″I″)
最后,从I节点提取数据,DataI=ExtractData(I)。
Datai具有160位二进制位的存储空间,这意味着其几乎可以满足所有数据存储的需要,可以存储的数据包括但不限于:布尔值、长整型、双精度浮点数、字符串、字节串、数字签名、加密数据等。节点智能合约Node的实体具有160位的数据插槽,用于存放任意160位以内数据或智能合约地址,其中:
在存放任意160位以内数据时,将数据插槽所位于的实体作为区块链上的结构化数据字段使用,所述结构化数据字段指用户能通过一特定路径访问区块链上的一特定数据;
在存放智能合约地址时,将数据插槽所位于的实体作为区块链上的智能虚拟实体或智能合约版本备份使用,所述智能虚拟实体指所述区块链智能合约服务框架在某一具体路径上挂载的具有智能逻辑与行为的智能合约,所述智能合约版本备份指所述区块链智能合约服务框架在某一隐藏路径下挂载的某个已部署的智能合约的非当前版本,所述挂载指在某一确定路径的节点智能合约Node的实体的数据插槽中记录某一已部署的智能合约的地址。
另一方面,Datai可用于存储智能合约地址,此时相当于目标智能合约挂载在该Datai所位于的节点中。同样以图5为例,假设用户将智能合约M挂载在I节点上,那么当用户需要访问M时,首先按照前述步骤提取Datai,之后从Datai中提取合约M:
M=ExtractContract(DataI)
上式中,ExtractContract指根据智能合约地址提取合约的算法。之后,用户可访问智能合约M。这种智能合约挂载的方法实际上提供了一种灵活、可扩展、可索引、易管理的链上智能合约管理模式,具有很高的实际应用价值。
所述哈希多叉树具有扩展性。具体地,节点合约Node具有以下方法:AddNode(key):根据关键字key,为所处Node实体添加子节点;DeleteNode(key):根据关键字key,为所处Node实体删除子节点。因此,所述哈希多叉树可以灵活地对其拓扑结构进行扩充、更改或裁剪,体现了哈希多叉树的兼容性。值得注意,所述哈希多叉树支持环形、交叉形等拓扑结构。
S3.为哈希多叉树的每个树节点内置基于角色与权限的访问机制,检查用户是否具有特定的角色与权限;
当且仅当用户具有某个特定角色的特定权限时,才能对某个特定节点智能合约Node的实体进行访问,所述基于角色与权限的访问机制具体表示为:
U={ui},R={rj},P={pk}
UR=U×R.RP=R×P
其中,U表示所有用户的集合,R表示所有已定义的角色,P表示所有已定义的权限,MapUR表示用户到角色的映射表,MapRP表示角色到权限的映射表,MapRP和MapUR均由用户指定,CheckUserHasPermission(u,p)为一命题,当用户u具有权限p时,命题为真。其中,映射表MapRP和MapUR由用户指定,一般需要具有管理员权限或代理权限才可对其访问。在框架中,这两个映射表各自使用两个无序映射实现,参照图6。
S4.对外设置用户访问接口,提供序列化引擎与反序列化引擎;所述序列化引擎将所述哈希多叉树的数据及拓扑序列化为字符串并提交给用户,所述反序列化引擎接受来自用户的字符串,并根据所述字符串在所述哈希多叉树上增加、修改或删除数据、拓扑。
所述哈希多叉树对外提供用户访问接口,这些接口为对用户开放的智能合约,这些智能合约具有严格的权限控制机制、事件机制,确保用户的访问合法且被记录。同时,这些智能合约提供了用户友好的接口函数,用户通过调用这些函数,能够快速、方便地利用框架实现数据管理、合约管理、权限管理等方面的功能。
在本实施例中,所述用户访问接口提供统一接口合约、数据管理合约、合约管理合约及权限管理合约;如图4所示,所述用户访问接口提供统一接口合约,该合约对用户提供其他接口合约的地址;所述用户访问接口提供数据管理合约,该合约利用哈希多叉树,实现链上数据的结构化查询、索引、修改、读写等操作;所述用户访问接口提供合约管理合约,该合约利用哈希多叉树结构,实现链上合约的版本更新、备份、恢复等操作;所述用户访问接口提供权限管理合约,该合约在严格的访问权限验证下,实现用户-身份关系、身份-权限关系的定义、修改和删除,同时对哈希多叉树所管理的数据、合约进行访问权限的定义、修改。
所述哈希多叉树提供了序列化引擎与反序列化引擎。所述序列化引擎为所述接口智能合约的一系列函数,能够将所述哈希多叉树的完整树或某一子树的数据及拓扑以Json格式序列化为字符串并提交给用户。所述序列化引擎对子树节点进行遍历,并在此过程递归地将这些节点的数据和拓扑打包为Json格式。
其中,反序列化引擎为所述接口智能合约的一系列函数,能够接受来自用户的Json格式的字符串并据此在所述哈希多叉树上增加、修改或删除数据、拓扑。来自用户的字符串的表达式为:
string=JSON({Opk})
Opk={pathk,operationk,valuek}
其中,string表示来自用户的Json格式的字符串,JSON()表示Json编码算法,Opk表示第k次操作,pathk表示Opk所操作树节点的路径,operationk指Opk的具体操作,valuek指Opk操作的值;所述反序列化引擎从接收字符串中,提取{Opk},按照operationk的描述在哈希多叉树中定义数据。
在利用序列化引擎与反序列化引擎的情况下,对区块链智能合约框架进行数据写入测试,统计对于给定数量的数据量,完成这些数据写入所需的时间。测试数据如图7,图7的横坐标表示写入数据量,纵坐标表示数据写入速率,得出在通常方法下数据写入速率的曲线。其中,usual曲线表示通常方法的数据写入速率曲线,batch5、batch100、batch2000分别为本发明在序列化批次为5、100、2000时的数据写入速率曲线,所述序列化批次指{Opk}的元素个数。
图7可见,本发明相较于通常方法能够取得有效的数据写入速率的提升,具体的提升效果与序列化批次有关,在序列化批次较高时,本发明相较于传统方法可获得至多874%的性能提升。
为哈希多叉树的每个树节点内置基于角色与权限的访问机制,并为哈希多叉树内置哈希算法和自动差错算法,如图5,所述哈希多叉树自下至上计算哈希值,任一节点的哈希值不仅考虑了该节点自身的数据,也考虑了该节点所有子节点的哈希,因此哈希值蕴含了以该节点为根的子树的全部数据和全部拓扑结构。例如,在图6中,F节点的哈希值由F的数据、H的哈希和I的哈希构成。
其中,哈希算法利用递归方式实现,每个树节点收集其子节点的哈希值{hk},设该树节点的数据为d,将子节点的哈希值{hk}与该节点的数据d进行异或加法并打包,最后计算哈希值为:
其中,keccak表示keccak256哈希算法;
逐层对比树节点的当前哈希值与所记录哈希值,以判断树节点所对应的子树的数据或拓扑是否遭到篡改;若当前哈希值与所记录哈希值相同,则子树未经过修改;若当前哈希值与所记录哈希值不相同,则自上至下逐层对哈希值进行对比,在每层找出遭到篡改的子节点,直到找到最终篡改位置。这一功能体现了数据机密性、数据完整性以及可维护性。
实施例3
如图8所示,本实施例提出一种基于哈希多叉树的区块链智能合约服务框架应用系统,包括:
节点智能合约模块,提供节点智能合约,节点智能合约包含一个160位的数据插槽,一个256位的哈希值和一个有序哈希映射表;
有序哈希映射合约模块,包含一个链表和一个无序哈希映射,以实现有序哈希映射;
访问控制合约模块,在用户执行访问操作时,检查用户是否具有特定的角色与权限;
数据管理合约模块,对用户提供一致的、基于路径的数据访问接口,整合数据序列化引擎与反序列化引擎;
合约管理合约模块,对用户提供一致的合约管理接口,通过在哈希多叉树上切换所挂载的智能合约,实现合约版本控制功能;
权限管理合约模块,为用户提供角色和权限的定义和修改操作。
显然,本发明的上述实施例仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
Claims (10)
1.一种基于哈希多叉树的区块链智能合约服务框架设计方法,其特征在于,包括以下步骤:
基于智能合约语言设计若干个节点智能合约Node;
令每个节点智能合约Node作为一个树节点,所述若干个节点智能合约Node彼此相连,在区块链上形成一个哈希多叉树;
为哈希多叉树的每个树节点内置基于角色与权限的访问机制,检查用户是否具有特定的角色与权限;
对外设置用户访问接口,提供序列化引擎与反序列化引擎;所述序列化引擎将所述哈希多叉树的数据及拓扑序列化为字符串并提交给用户,所述反序列化引擎接受来自用户的字符串,并根据所述字符串在所述哈希多叉树上增加、修改或删除数据、拓扑。
2.根据权利要求1所述的基于哈希多叉树的区块链智能合约服务框架设计方法,其特征在于,所述区块链智能合约服务框架分为底层、中间层和顶层,其中,底层为支持层,用于为区块链智能合约服务框架提供基础数据、安全、类型转换功能;中间层为数据层,由哈希多叉树组成;顶层为接口层,对外设置用户访问接口;
所述的智能合约语言为Solidity智能合约语言。
3.根据权利要求1所述的基于哈希多叉树的区块链智能合约服务框架设计方法,其特征在于,每个节点智能合约Node的实体均包含一个有序哈希映射表,所述有序哈希映射表用于记录其它节点智能合约Node的实体在区块链上的合约地址,并将记录在有序哈希映射表中的其它节点智能合约Node的实体作为包含该有序哈希映射表的节点智能合约Node的实体的子节点;
所述一个有序哈希映射表包含一个key-address无序映射和一个key-key链表,所述key-address无序映射指在区块链上将256位的key映射到160位的合约地址,所述key-key链表是指所述key-address无序映射所映射的每个合约地址均为一个链表节点;一个key-key链表节点包含256位的前链表节点、后链表节点和当前链表节点的值,所述前链表节点和所述后链表节点分别表示上一个链表节点和下一个链表节点对应的关键字,所述当前链表节点的值表示关键字最终映射的值。
4.根据权利要求3所述的基于哈希多叉树的区块链智能合约服务框架设计方法,其特征在于,通过一个key-key链表和一个key-address无序映射实现有序映射合约,其中,key-key链表记录了某个节点智能合约Node的实体的全部子节点的key值,链表的每个节点都对应一个子节点和相应的key值,并记录了该节点的合约地址;key-address无序映射将key映射至链表节点,通过链表节点获取子节点的合约地址,完成key到子节点的映射,链表节点记录了相邻链表节点的key值,可通过key-address无序映射实现链表的遍历;
有序映射合约的实体将一个256位的key值映射至一个160位的address值,其中,address值是任意智能合约在区块链上的地址;每一个节点智能合约Node的实体均包含一个有序映射合约的实体,通过该实体的key-value映射,将任意256位内的关键值key映射为子节点的合约地址,同时,有序映射合约通过对链表的访问,支持节点智能合约Node的实体对其子节点的遍历。
5.根据权利要求4所述的基于哈希多叉树的区块链智能合约框架设计方法,其特征在于,在所述哈希多叉树上的每个树节点对应的节点智能合约Node均有唯一的路径,所述路径由树节点Nodei到哈希多叉树的根节点之间所有节点的关键字key的总和构成,i表示树节点的序次;哈希多叉树仅支持从上至下对树节点进行的访问,通过给出每个树节点Nodei的路径pathi进行访问,访问方式满足的过程为:
Datai=ExtractData(ai),
ai∈{a1,a2,...,ai|ak+1=ExtractChild(ak,Keyk+1),a1=rootNode},
{Keyk}=pathi
其中,ai表示所访问的第i个树节点,Datai表示所访问的树节点记录的数据,pathi表示所访问的树节点在哈希多叉树中的路径,集合{Keyk}表示路径pathi沿途的每个树节点的关键字,集合{au}表示路径pathi沿途的每个树节点,ExtractData()表示从树节点中提取数据的操作,ExtractChild()表示根据指定关键字从树节点中提取子节点的操作。
6.根据权利要求5所述的基于哈希多叉树的区块链智能合约框架设计方法,其特征在于,所述节点智能合约Node的实体具有160位的数据插槽,用于存放任意160位以内数据或智能合约地址,其中:
在存放任意160位以内数据时,将数据插槽所位于的实体作为区块链上的结构化数据字段使用,所述结构化数据字段指用户能通过一特定路径访问区块链上的一特定数据;
在存放智能合约地址时,将数据插槽所位于的实体作为区块链上的智能虚拟实体或智能合约版本备份使用,所述智能虚拟实体指所述区块链智能合约服务框架在某一具体路径上挂载的具有智能逻辑与行为的智能合约,所述智能合约版本备份指所述区块链智能合约服务框架在某一隐藏路径下挂载的某个已部署的智能合约的非当前版本,所述挂载指在某一确定路径的节点智能合约Node的实体的数据插槽中记录某一已部署的智能合约的地址;
将智能合约M挂载至树节点I上,当需要访问智能合约M,首先提取所访问的树节点I记录的数据DataI,然后从DataI中提取智能合约M,过程满足:
M=ExtractContract(DataI)
其中,ExtractContract表示根据智能合约地址提取智能合约的操作,ExtractContract(DataI)表示用户访问智能合约M。
7.根据权利要求1所述的基于哈希多叉树的区块链智能合约框架设计方法,其特征在于,当且仅当用户具有某个特定角色的特定权限时,才能对某个特定节点智能合约Node的实体进行访问,所述基于角色与权限的访问机制具体表示为:
U={ui},R={rj},P={pk}
UR=U×R,RP=R×P
其中,U表示所有用户的集合,R表示所有已定义的角色,P表示所有已定义的权限,MapUR表示用户到角色的映射表,MapRP表示角色到权限的映射表,MapRP和MapUR均由用户指定,CheckUserHasPermission(u,p)为一命题,当用户u具有权限p时,命题为真。
8.根据权利要求7所述的基于哈希多叉树的区块链智能合约框架设计方法,其特征在于,为哈希多叉树的每个树节点内置基于角色与权限的访问机制时,并为哈希多叉树内置哈希算法和自动差错算法,所述哈希多叉树自下至上计算哈希值,任一树节点的哈希值不仅考虑该树节点自身的数据,也考虑该树节点所有子节点的哈希值,每个树节点收集其子节点的哈希值{hk},设该树节点的数据为d,将子节点的哈希值{hk}与该节点的数据d进行异或加法并打包,最后计算哈希值为:
其中,keccak表示keccak256哈希算法;
逐层对比树节点的当前哈希值与所记录哈希值,以判断树节点所对应的子树的数据或拓扑是否遭到篡改;若当前哈希值与所记录哈希值相同,则子树未经过修改;若当前哈希值与所记录哈希值不相同,则自上至下逐层对哈希值进行对比,在每层找出遭到篡改的子节点,直到找到最终篡改位置。
9.根据权利要求1所述的基于哈希多叉树的区块链智能合约框架设计方法,其特征在于,所述用户访问接口提供统一接口合约、数据管理合约、合约管理合约及权限管理合约;所述序列化的格式为Json格式;来自用户的字符串的表达式为:
string=JSON({Opk})
OPk=(pathk,operationk,valuek}
其中,string表示来自用户的Json格式的字符串,JSON()表示Json编码算法,Opk表示第k次操作,pathk表示Opk所操作树节点的路径,operationk指Opk的具体操作,valuek指Opk操作的值;所述反序列化引擎从接收字符串中,提取{Opk},按照operationk的描述在哈希多叉树中定义数据。
10.一种基于哈希多叉树的区块链智能合约服务框架应用系统,其特征在于,包括:
节点智能合约模块,提供节点智能合约,节点智能合约包含一个160位的数据插槽,一个256位的哈希值和一个有序哈希映射表;
有序哈希映射合约模块,包含一个链表和一个无序哈希映射,以实现有序哈希映射;
访问控制合约模块,在用户执行访问操作时,检查用户是否具有特定的角色与权限;
数据管理合约模块,对用户提供一致的、基于路径的数据访问接口,整合数据序列化引擎与反序列化引擎;
合约管理合约模块,对用户提供一致的合约管理接口,通过在哈希多叉树上切换所挂载的智能合约,实现合约版本控制功能;
权限管理合约模块,为用户提供角色和权限的定义和修改操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310845501.9A CN116932647A (zh) | 2023-07-10 | 2023-07-10 | 一种基于哈希多叉树的区块链智能合约服务框架设计方法及应用系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310845501.9A CN116932647A (zh) | 2023-07-10 | 2023-07-10 | 一种基于哈希多叉树的区块链智能合约服务框架设计方法及应用系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116932647A true CN116932647A (zh) | 2023-10-24 |
Family
ID=88376621
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310845501.9A Pending CN116932647A (zh) | 2023-07-10 | 2023-07-10 | 一种基于哈希多叉树的区块链智能合约服务框架设计方法及应用系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116932647A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220247583A1 (en) * | 2019-06-14 | 2022-08-04 | Ailia Sa | Method for the execution of an instance of a smart contract by means of a blockchain |
-
2023
- 2023-07-10 CN CN202310845501.9A patent/CN116932647A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220247583A1 (en) * | 2019-06-14 | 2022-08-04 | Ailia Sa | Method for the execution of an instance of a smart contract by means of a blockchain |
US11991298B2 (en) * | 2019-06-14 | 2024-05-21 | Ailia Sa | Method for the execution of an instance of a smart contract by means of a blockchain |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI731595B (zh) | 區塊鏈狀態資料儲存方法及裝置、電子設備 | |
US7136867B1 (en) | Metadata format for hierarchical data storage on a raw storage device | |
US20070198566A1 (en) | Method and apparatus for efficient storage of hierarchical signal names | |
US20130173668A1 (en) | Data export/import from multiple data source to a destination data repository using corresponding data exporters and an importer | |
CN108304463A (zh) | 一种用于数据库的数据管理方法及其数据库应用组件 | |
US7519608B2 (en) | Secure virtual data warehousing system and method | |
US7730099B2 (en) | Storage and retrieval of richly typed hierarchical network models | |
CN103853718B (zh) | 分片数据库访问方法及数据库系统 | |
CN1652112A (zh) | 一种嵌入式环境下数据字典的实现方法 | |
BRPI0609007A2 (pt) | sistemas e métodos para manipulação de dados em um sistema de armazenamento de dados | |
US20050076031A1 (en) | Semantic file system | |
US20150186393A1 (en) | Representing directory structure in content-addressable storage systems | |
US6675173B1 (en) | Database apparatus | |
CN116932647A (zh) | 一种基于哈希多叉树的区块链智能合约服务框架设计方法及应用系统 | |
US6714946B1 (en) | Data management system using a plurality of data operating modules | |
CN112764743B (zh) | 一种基于数据模型驱动自动生成软件的方法 | |
CN104778192A (zh) | 表示可内容寻址存储系统的目录结构 | |
US20080046440A1 (en) | Method And System For Enforcing User-Defined Relational Limitations In A Recursive Relational Database Table | |
US20230401214A1 (en) | Graph database and methods with improved functionality | |
US20080294673A1 (en) | Data transfer and storage based on meta-data | |
Batra | SQL primer | |
Boehm et al. | EasyWinWin: a groupware-supported methodology for requirements negotiation | |
CN112835638A (zh) | 一种基于嵌入式应用程序的配置信息管理方法及装置 | |
CN102289448B (zh) | 访问数据访问层的实体 | |
Morris | Relational database design and implementation for biodiversity informatics |
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 |