CN114594929A - 一种基于TrustZone的Solidity语言智能合约可信执行引擎 - Google Patents
一种基于TrustZone的Solidity语言智能合约可信执行引擎 Download PDFInfo
- Publication number
- CN114594929A CN114594929A CN202210103618.5A CN202210103618A CN114594929A CN 114594929 A CN114594929 A CN 114594929A CN 202210103618 A CN202210103618 A CN 202210103618A CN 114594929 A CN114594929 A CN 114594929A
- Authority
- CN
- China
- Prior art keywords
- contract
- intelligent contract
- trustzone
- instruction
- language
- 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
Images
Classifications
-
- 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
- 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
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- Strategic Management (AREA)
- Computing Systems (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Data Mining & Analysis (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供了一种基于TrustZone的Solidity语言智能合约可信执行引擎,包括解释器、指令集、数据段和预取数据段,所述解释器分别与所述指令集、数据段和预取数据段连接,所述数据段与预取数据段连接,所述解释器,用于从合约字节码中取出指令,并进行指令的解释和执行,所述指令集描述了指令的操作码到功能函数的映射,所述数据段,用于存储智能合约执行过程中的中间数据,所述预取数据段,用于存储智能合约执行过程中用到的合约字节码、交易参数、函数输入参数和合约持久化存储数据。本发明为Solidity语言智能合约字节码提供正确的解释执行功能,并根据TrustZone执行机制提供执行效率和内存消耗的优化。
Description
技术领域
本发明属于区块链智能合约技术领域,特别涉及一种基于TrustZone的Solidity语言智能合约可信执行引擎。
背景技术
区块链技术自2008年比特币的诞生以来发展迅速,并由于智能合约的引入具备了进行链上计算的能力。智能合约本质上是存储在区块链上的可执行代码,继承了区块链的相关特性,能够在满足触发条件时自动执行,无法修改,因此被广泛应用于金融、物流等区块链场景,承载着大量资产,但智能合约字节码同时也与其他区块链数据一同公开的存储与区块链账本中,由于缺乏机密性保证,这些资产面临着重大风险。
TrustZone是一种可信执行环境,广泛的存在于区块链场景中的边缘设备上,已经被学术界的一些研究证明可以为智能合约提供机密性保证。但是受限于TrustZone上的安全操作系统提供的运行时环境,通用的智能合约需要被重构为C语言的可信应用,导致了诸如开发成本高,迁移困难等问题。
发明内容
本发明针对现有技术中存在的技术问题,提供一种基于TrustZone的Solidity语言智能合约可信执行引擎,为Solidity语言智能合约字节码提供正确的解释执行功能,并根据TrustZone执行机制提供执行效率和内存消耗的优化。
本发明采用的技术方案是:一种基于TrustZone的Solidity语言智能合约可信执行引擎,包括解释器、指令集、数据段和预取数据段,所述解释器分别与所述指令集、数据段和预取数据段连接,所述数据段与预取数据段连接,
所述解释器,用于从合约字节码中取出指令,并进行指令的解释和执行,
所述指令集是基于TrustZone的执行引擎运行Solidity语言智能合约所需指令的完整集合,描述了指令的操作码到功能函数的映射,
所述数据段,用于存储智能合约执行过程中的中间数据,
所述预取数据段,用于存储智能合约执行过程中用到的合约字节码、交易参数、函数输入参数和合约持久化存储数据。
进一步的,所述解释器从预取数据段存储的合约字节码中取出指令。
进一步的,所述功能函数实现为C语言解释函数,其针对Solidity语言的智能合约编译产生的合约字节码,按照TrustZone执行机制设计。对现有的功能函数采用C语言进行编程。
进一步的,所述指令集中有参数释放指令的操作码及其映射的功能函数,所述参数释放指令用于释放内存。
进一步的,所述参数释放指令根据参数的实际生命周期而设置,在智能合约编程阶段添加到所述合约字节码中。
进一步的,所述数据段包括操作数栈和工作内存。
工作原理:
基于数据预取的解释机制:将智能合约执行过程中需要用到的合约字节码、交易参数、函数输入参数、合约持久化存储数据在执行前预先加载到安全世界的预取数据段中。具体实现过程为:非安全世界发起函数执行的交易后,从交易信息及区块链数据库中获取所需数据(合约字节码、交易参数、函数输入参数和合约持久化存储数据)。将上述数据进行打包和加密,经由非安全世界的主机应用程序传输到安全世界的预取数据段。
运行时内存释放机制:Solidity语言的智能合约执行前会被solc编译器编译为合约字节码,合约开发者在合约编程时通过行内汇编加入参数释放标记,具体为在编译器编译智能合约时根据参数的实际生命周期把参数释放指令的字节码加入到合约字节码的对应位置。在合约执行过程中,解释器只需要从合约字节码中按顺序取指令即可取出参数释放指令,再根据参数释放指令的操作码调用预设的C语言参数释放函数释放工作内存和预取数据段中对应的区域。
适配TrustZone的指令解释机制:针对Solidity语言的智能合约编译产生的合约字节码,按照TrustZone执行机制设计对应的C语言解释函数。具体的,对于跨世界的数据访问指令,解释函数主动发起中断触发世界切换;对于涉及预取数据的指令,解释函数根据映射表将该数据指向预取数的存储区域,而无需重复加载。
与现有技术相比,本发明所具有的有益效果是:本发明在TrustZone上提供了Solidity语言智能合约的基础执行环境,并从指令解释、数据预取和内存消耗三个方面进行了优化:首先,针对Solidity语言指令集,结合TrustZone执行机制特点设计了指令解释方法;其次,在执行前对执行过程中需要用到的合约字节码、输入参数、区块链状态数据等进行打包统一加载到安全世界;最后,在合约编程时添加参数释放标记,减少运行时的内存消耗。本发明应用于区块链系统的节点合约执行过程中,能够为通用的Solidity语言智能合约提供执行环境,并保护执行过程的机密性。
附图说明
图1为本发明实施例的总体架构图;
图2为本发明实施例的基于数据预取的解释机制的示意图;
图3为本发明实施例的运行时内存释放机制的示意图。
具体实施方式
为使本领域技术人员更好的理解本发明的技术方案,下面结合附图和具体实施例对本发明作详细说明。
本发明的实施例提供了一种基于TrustZone的Solidity语言智能合约可信执行引擎,如图1所示,其包括解释器、指令集、数据段和预取数据段,所述解释器分别与所述指令集、数据段和预取数据段连接,所述数据段与预取数据段连接。
所述解释器用于从合约字节码中取出指令,并进行指令的解释和执行。所述解释器负责合约字节码的解释执行过程,其工作分为取指令、指令解释和指令执行三个阶段。
所述指令集是基于TrustZone的执行引擎运行Solidity语言智能合约所需指令的完整集合,描述了指令的操作码到功能函数的映射,负责指令到功能函数的映射。功能函数为C语言解释函数,其针对Solidity语言的智能合约编译产生的合约字节码,按照TrustZone执行机制设计。
所述数据段包括操作数栈和工作内存,用于存储智能合约执行过程中的中间数据。
所述预取数据段用于存储智能合约执行过程中需要用到的合约字节码、交易参数、函数输入参数和合约持久化存储数据。
本实施例部署于支持TrustZone的硬件设备上,使用OP-TEE作为安全操作系统,执行引擎被实现为安全世界的C语言可信应用,使用OP-TEE internal API,同时,在非安全世界基于0P-TEE client API编写主机应用,作为执行引擎的调用入口并负责两个世界的数据交互。
结合图1说明本可信执行引擎的执行流程:位于非安全世界的区块链客户端发起智能合约调用的交易请求,主机应用通过包装器从交易和区块链状态数据库中提取合约字节码和区块链状态数据进行打包和加密,并传输到安全世界的可信执行引擎应用中进行解密和存储。执行引擎的解释器从存储的合约字节码中逐个取出指令;根据指令的操作码(两位十六进制数)从指令集中的跳转表中查找对应的功能函数;在执行该功能函数时,从数据段的操作数栈中获取所需的操作数,由操作数栈负责与工作内存和预取数据段的数据交互。解释器将重复该过程直到合约执行完成。
基于数据预取的解释机制细节如图2所示,没有数据预取机制时,解释器执行字节码前首先要从非安全世界获取执行参数(过程⑤),在解释器的取指令和指令执行阶段需要分别从非安全世界的区块链数据库中获取指令操作码(过程⑥)和状态数据(过程⑦),上述的与非安全世界的数据交互过程都需要经过耗时的世界切换过程,且过程⑥和⑦将在运行时不断重复。在基于数据预取的解释机制下,执行前首先将合约字节码、交易参数、函数输入参数和合约持久化存储数据预先加载到安全世界中(过程①),执行过程中的执行参数、指令操作码、状态数据将从预取数据段的存储区域获得(过程②、③和④),无需经过世界切换,从而提升执行效率。
运行时内存释放机制细节如图3所示,以主流的ERC20代币合约为例,合约参数在运行时存储与执行引擎数据段的工作内存中,该内存空间将在函数生命周期结束后一同释放,而在执行过程中,参数to在代码段①后即完成了实际生命周期,参数from和value在代码段②后完成实际生命周期。根据运行时内存释放方法,合约开发者可以分别在代码段①和代码段②后通过行内汇编将参数释放标记Free嵌入到汇编代码段中,并被编译器编译为合约字节码,在执行时该参数释放标记将作为独立的指令(参数释放指令)执行,通过预设的参数释放功能函数,释放工作内存和预取数据段的对应区域,从而减少运行时内存消耗。
以上通过实施例对本发明进行了详细说明,但所述内容仅为本发明的示例性实施例,不能被认为用于限定本发明的实施范围。本发明的保护范围由权利要求书限定。凡利用本发明所述的技术方案,或本领域的技术人员在本发明技术方案的启发下,在本发明的实质和保护范围内,设计出类似的技术方案而达到上述技术效果的,或者对申请范围所作的均等变化与改进等,均应仍归属于本发明的专利涵盖保护范围之内。
Claims (6)
1.一种基于TrustZone的Solidity语言智能合约可信执行引擎,其特征在于:包括解释器、指令集、数据段和预取数据段,所述解释器分别与所述指令集、数据段和预取数据段连接,所述数据段与预取数据段连接,
所述解释器,用于从合约字节码中取出指令,并进行指令的解释和执行,
所述指令集是基于TrustZone的执行引擎运行Solidity语言智能合约所需指令的完整集合,描述了指令的操作码到功能函数的映射,
所述数据段,用于存储智能合约执行过程中的中间数据,
所述预取数据段,用于存储智能合约执行过程中用到的合约字节码、交易参数、函数输入参数和合约持久化存储数据。
2.如权利要求1所述的基于TrustZone的Solidity语言智能合约可信执行引擎,其特征在于:所述解释器从预取数据段存储的合约字节码中取出指令。
3.如权利要求1所述的基于TrustZone的Solidity语言智能合约可信执行引擎,其特征在于:所述功能函数实现为C语言解释函数,其针对Solidity语言的智能合约编译产生的合约字节码,按照TrustZone执行机制设计。
4.如权利要求1所述的基于TrustZone的Solidity语言智能合约可信执行引擎,其特征在于:所述指令集中有参数释放指令的操作码及其映射的功能函数,所述参数释放指令用于释放内存。
5.如权利要求4所述的基于TrustZone的Solidity语言智能合约可信执行引擎,其特征在于:所述参数释放指令根据参数的实际生命周期而设置,在智能合约编程阶段添加到所述合约字节码中。
6.如权利要求1所述的基于TrustZone的Solidity语言智能合约可信执行引擎,其特征在于:所述数据段包括操作数栈和工作内存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210103618.5A CN114594929A (zh) | 2022-01-27 | 2022-01-27 | 一种基于TrustZone的Solidity语言智能合约可信执行引擎 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210103618.5A CN114594929A (zh) | 2022-01-27 | 2022-01-27 | 一种基于TrustZone的Solidity语言智能合约可信执行引擎 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114594929A true CN114594929A (zh) | 2022-06-07 |
Family
ID=81806728
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210103618.5A Pending CN114594929A (zh) | 2022-01-27 | 2022-01-27 | 一种基于TrustZone的Solidity语言智能合约可信执行引擎 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114594929A (zh) |
-
2022
- 2022-01-27 CN CN202210103618.5A patent/CN114594929A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111770206B (zh) | 一种部署智能合约的方法、区块链节点和存储介质 | |
CN111770113B (zh) | 一种执行智能合约的方法、区块链节点和节点设备 | |
CN111814202B (zh) | 一种执行智能合约的方法、区块链节点和存储介质 | |
US8769511B2 (en) | Dynamic incremental compiler and method | |
CN111770205B (zh) | 一种执行智能合约的方法、区块链节点、系统和存储介质 | |
EP3961973B1 (en) | Methods, blockchain nodes, and storage media for deploying smart contract | |
CN111770204B (zh) | 一种执行智能合约的方法、区块链节点和存储介质 | |
CN111815310B (zh) | 一种执行智能合约的方法、区块链节点和存储介质 | |
CN111770116B (zh) | 一种执行智能合约的方法、区块链节点、存储介质 | |
US20100305938A1 (en) | Translation block invalidation prehints in emulation of a target system on a host system | |
EP3961460B1 (en) | Methods, blockchain nodes and storage media for deploying smart contract | |
US20130311993A1 (en) | Adaptive obfuscated virtual machine | |
EP3961438B1 (en) | Method for executing smart contract, blockchain node, and storage medium | |
CN111770202B (zh) | 一种执行智能合约的方法、区块链节点和存储介质 | |
CN111768200A (zh) | 一种部署智能合约的方法、区块链节点和存储介质 | |
CN111768184A (zh) | 一种执行智能合约的方法及区块链节点 | |
Gruber et al. | Bringing compiling databases to RISC architectures | |
Perez et al. | A hybrid just-in-time compiler for android: comparing jit types and the result of cooperation | |
CN114594929A (zh) | 一种基于TrustZone的Solidity语言智能合约可信执行引擎 | |
US20230418950A1 (en) | Methods, Devices, and Systems for Control Flow Integrity | |
Li et al. | Java Virtual Machine |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |