CN107526624B - 一种基于Java虚拟机的智能合约执行引擎 - Google Patents
一种基于Java虚拟机的智能合约执行引擎 Download PDFInfo
- Publication number
- CN107526624B CN107526624B CN201710585453.9A CN201710585453A CN107526624B CN 107526624 B CN107526624 B CN 107526624B CN 201710585453 A CN201710585453 A CN 201710585453A CN 107526624 B CN107526624 B CN 107526624B
- Authority
- CN
- China
- Prior art keywords
- contract
- jcee
- client
- module
- server
- 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.)
- Active
Links
Images
Classifications
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/405—Establishing or using transaction specific rules
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
Abstract
本发明公开了一种基于Java虚拟机的智能合约执行引擎JCEE,JCEE允许用户使用Java语言进行智能合约的开发,提供了智能合约完整生命周期管理。JCEE采用微服务的架构设计,分为客户端和服务端,客户端负责接收智能合约的调用请求,服务端负责具体智能合约的执行工作。JCEE的执行包括如下步骤:(1)客户端接收用户的合约调用请求并进行请求的完备性检查;(2)客户端将安全的用户请求封装并传递给JCEE服务端;(3)服务端首先进行合约的安全性检查,对安全的执行请求调用执行器进行具体的请求执行并返回执行结果。本发明提出了一种全新的智能合约执行引擎设计方案,解决了现有智能合约执行引擎通用性不足性能低下等问题。
Description
技术领域
本发明涉及区块链技术、智能合约引擎,尤其涉及一种基于Java虚拟机(简称JVM)的智能合约执行引擎。
背景技术
区块链技术,区块链是一种新型去中心化协议,能安全地存储数字货币交易或其他数据,信息不可伪造和篡改,区块链上的交易确认由区块链上的所有节点共同完成。智能合约是部署在区块链上的一段可自动执行的程序,广泛意义上的智能合约包含编程语言、编译器、虚拟机、事件、状态机、容错机制等。其中,对应用程序开发影响较大的是编程语言以及智能合约的执行引擎,即虚拟机。虚拟机作为沙箱被封装起来,整个执行环境都被完全隔离。虚拟机内部执行的智能合约不能接触网络、文件系统或者系统中的其他线程等系统资源。合约之间只能进行有限调用。
现有的智能合约执行引擎要不在合约的执行性能上达不到生产系统的要求,要不在安全性管理上存在漏洞。而智能合约直接同用户的链上资产交互,其安全性至关重要。
发明内容
面对现有智能合约执行引擎的不足,本发明提出了一种基于Java虚拟机的智能合约执行引擎(JVM based Contract Execution Engine,以下简称JCEE),该执行引擎允许合约编写者使用成熟的图灵完备的Java语言进行智能合约编写并且实现了字节码层面的安全性检查。
基于Java虚拟机的智能合约引擎JCEE的设计以一种微服务的架构提供服务,主要包括客户端和服务端,服务端是智能合约执行引擎的主要模块而客户端则提供了一种访问合约执行引擎的能力。一种基于Java虚拟机的智能合约执行引擎通过模块化设计允许嵌入到多种区块链网络,具体技术方案如下:
一种基于Java虚拟机的智能合约执行引擎,包括如下模块:
(1)基于Java虚拟机的智能合约执行引擎JCEE客户端:接收用户发送的智能合约调用请求,进行请求安全性检查、权限检查和参数合法性检查工作,该客户端模块包括JSON远程程序调用JSON-RPC模块、控制器模块以及JCEE客户端JCEE-Client模块等三个子模块,其中:
JSON-RPC模块负责接收解析来自用户的智能合约调用请求;
控制器模块维护客户端与JCEE服务端之间的通信安全以及心跳检测;
JCEE-Client模块负责具体智能合约的请求转发;
(2)JCEE服务端:JCEE服务端负责对用户智能合约的管理以及具体合约的执行工作;JCEE服务端包括JCEE服务器JCEE-Server、合约开发包Contract SDK、合约Contract模块以及元数据库MetaDB等四个子模块,其中:
JCEE-Server作为JCEE的服务器,管理同JCEE-Client模块的通信服务,将合约执行请求转发给下级处理器进行实际执行;
Contract SDK实现用户撰写智能合约相关的服务类,提供具体的合约编写支持;
Contract模块由四个独立的子模块构成:管理模块manager,负责合约生命周期的管理包括部署、执行、升级、冻结、解冻以及注销;执行模块executor:通过线程池的方式使得多个名字空间中的合约调用并行执行;安全模块security:通过基于字节码检查的机制进行合约安全性管控;账本模块ledger:为智能合约提供可以存取智能资产的功能;
MetaDB实现对合约元数据进行存储,包括合约名、合约创建时间、合约地址、合约创建者以及合约存储地址。
进一步地,所述的JCEE客户端中合约的调用请求通过JCEE客户端进行接收和转发,JCEE客户端可以内嵌入任何现有区块链平台中,合约的具体调用是通过客户端对用户合约调用请求的再封装。
进一步地,所述的JCEE服务端中安全模块中的安全检查组件通过字节码层面细粒度控制Java智能合约的安全性,以及通过线程池的方式实现多个名字空间中智能合约的并发执行。
本发明的有益效果:
本发明的基于JVM的智能合约执行引擎,允许用户使用图灵完备的Java语言直接进行智能合约的编写,既提高了智能合约的编写效率也提高了合约的执行效率。本发明采用基于字节码的细粒度合约安全检查机制并将合约的执行限制在虚拟机中从而实现了合约的沙箱化管理,从根本上杜绝了合约与网络、文件系统等系统资源的直接接触。此外本发明中通过线程池机制合约执行处理器设计提高了合约的整体执行效率。
附图说明
图1是基于Java虚拟机的智能合约执行引擎的架构图;
图2是基于Java虚拟机的智能合约执行引擎的请求执行流程图。
具体实施方式
下面根据附图和具体实施例详细描述本发明,本发明的目的和效果将变得更加明显。
如图1所示,本发明的基于Java虚拟机的智能合约执行引擎,包括如下模块:
(1)基于Java虚拟机的智能合约执行引擎JCEE客户端:接收用户发送的智能合约调用请求,进行请求安全性检查、权限检查和参数合法性检查工作,该客户端模块包括JSON远程程序调用JSON-RPC模块、控制器模块以及JCEE客户端JCEE-Client模块等三个子模块,其中:
JSON-RPC模块负责接收解析来自用户的智能合约调用请求;
控制器模块维护客户端与JCEE服务端之间的通信安全以及心跳检测;
JCEE-Client模块负责具体智能合约的请求转发;
(2)JCEE服务端:JCEE服务端负责对用户智能合约的管理以及具体合约的执行工作;JCEE服务端包括JCEE服务器JCEE-Server、合约开发包Contract SDK、合约Contract模块以及元数据库MetaDB等四个子模块,其中:
JCEE-Server作为JCEE的服务器,管理同JCEE-Client模块的通信服务,将合约执行请求转发给下级处理器进行实际执行;
Contract SDK实现用户撰写智能合约相关的服务类,提供具体的合约编写支持;
Contract模块由四个独立的子模块构成:管理模块manager,负责合约生命周期的管理包括部署、执行、升级、冻结、解冻以及注销;执行模块executor:通过线程池的方式使得多个名字空间中的合约调用并行执行;安全模块security:通过基于字节码检查的机制进行合约安全性管控;账本模块ledger:为智能合约提供可以存取智能资产的功能;
MetaDB实现对合约元数据进行存储,包括合约名、合约创建时间、合约地址、合约创建者以及合约存储地址。
所述的JCEE客户端中合约的调用请求通过JCEE客户端进行接收和转发,JCEE客户端可以内嵌入任何现有区块链平台中,合约的具体调用是通过客户端对用户合约调用请求的再封装。
所述的JCEE服务端中安全模块中的安全检查组件通过字节码层面细粒度控制Java智能合约的安全性,以及通过线程池的方式实现多个名字空间中智能合约的并发执行。
下面模拟一个合约调用的过程来说明基于Java虚拟机的智能合约执行引擎的具体执行过程。首先用户向JCEE客户端发送一个JS对象标记JSON的请求,JCEE客户端的JSON远程程序调用JSON-RPC模块接收到用户请求并封装成内部的交易transaction;接着该transaction会发送到JCEE-Client子模块,该模块会进行交易transaction的安全性以及参数的完整性能进行初步的安全性检查;安全性检查之后JCEE-Client通过远程程序调用协议将合约调用发送给JCEE-Server端,JCEE-Server端对调用进行封装并就分装的任务按照名字空间进行派发。最后基于线程池的任务执行器对这些派发的任务进行具体的执行。至此完成一个合约的调用。
Claims (3)
1.一种基于Java虚拟机的智能合约执行引擎,其特征在于,包括如下模块:
(1)基于Java虚拟机的智能合约执行引擎JCEE客户端:接收用户发送的智能合约调用请求,进行请求安全性检查、权限检查和参数合法性检查工作,该客户端模块包括JSON远程程序调用JSON-RPC模块、控制器模块以及JCEE客户端JCEE-Client模块等三个子模块,其中:
JSON-RPC模块负责接收解析来自用户的智能合约调用请求;
控制器模块维护客户端与JCEE服务端之间的通信安全以及心跳检测;
JCEE-Client模块负责具体智能合约的请求转发;
(2)JCEE服务端:JCEE服务端负责对用户智能合约的管理以及具体合约的执行工作;JCEE服务端包括JCEE服务器JCEE-Server、合约开发包Contract SDK、合约Contract模块以及元数据库MetaDB等四个子模块,其中:
JCEE-Server作为JCEE的服务器,管理同JCEE-Client模块的通信服务,将合约执行请求转发给下级处理器进行实际执行;
Contract SDK实现用户撰写智能合约相关的服务类,提供具体的合约编写支持;
Contract模块由四个独立的子模块构成:管理模块manager,负责合约生命周期的管理包括部署、执行、升级、冻结、解冻以及注销;执行模块executor:通过线程池的方式使得多个名字空间中的合约调用并行执行;安全模块security:通过基于字节码检查的机制进行合约安全性管控;账本模块ledger:为智能合约提供可以存取智能资产的功能;
MetaDB实现对合约元数据进行存储,包括合约名、合约创建时间、合约地址、合约创建者以及合约存储地址。
2.如权利要求1所述的一种基于Java虚拟机的智能合约执行引擎,其特征在于,所述的JCEE客户端中合约的调用请求通过JCEE客户端进行接收和转发,JCEE客户端可以内嵌入任何现有区块链平台中,合约的具体调用是通过客户端对用户合约调用请求的再封装。
3.如权利要求1所述的一种基于Java虚拟机的智能合约执行引擎,其特征在于,所述的JCEE服务端中安全模块中的安全检查组件通过字节码层面细粒度控制Java智能合约的安全性,以及通过线程池的方式实现多个名字空间中智能合约的并发执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710585453.9A CN107526624B (zh) | 2017-07-18 | 2017-07-18 | 一种基于Java虚拟机的智能合约执行引擎 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710585453.9A CN107526624B (zh) | 2017-07-18 | 2017-07-18 | 一种基于Java虚拟机的智能合约执行引擎 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107526624A CN107526624A (zh) | 2017-12-29 |
CN107526624B true CN107526624B (zh) | 2020-12-08 |
Family
ID=60749125
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710585453.9A Active CN107526624B (zh) | 2017-07-18 | 2017-07-18 | 一种基于Java虚拟机的智能合约执行引擎 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107526624B (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109816523B (zh) * | 2018-03-15 | 2023-10-24 | 纳智源科技(唐山)有限责任公司 | 基于区块链的文件交易系统及方法 |
CN108647009A (zh) * | 2018-03-22 | 2018-10-12 | 中钞信用卡产业发展有限公司杭州区块链技术研究院 | 区块链信息交互的装置、方法和存储介质 |
CN108765158B (zh) * | 2018-05-31 | 2020-11-24 | 杭州溪塔科技有限公司 | 一种基于区块链的智能合约引擎系统及其合约执行方法 |
CN109299004B (zh) * | 2018-06-22 | 2020-08-25 | 北京大学 | 关键元素差异性分析方法及系统 |
CN109254837B (zh) * | 2018-08-15 | 2021-02-19 | 泰链(厦门)科技有限公司 | 区块链系统及其中非生产节点的任务执行速度的提高方法 |
CN109189396B (zh) * | 2018-08-16 | 2022-04-12 | 北京京东尚科信息技术有限公司 | 智能合约引擎组件、运行方法及存储介质 |
CN109067759B (zh) * | 2018-08-27 | 2020-11-03 | 深圳前海益链网络科技有限公司 | 一种智能合约调用单点执行系统 |
CN109104491A (zh) * | 2018-08-30 | 2018-12-28 | 郑州云海信息技术有限公司 | 一种微服务调用方法、装置、服务器及存储介质 |
CN109582438B (zh) * | 2018-10-30 | 2021-05-28 | 广州斯拜若科技有限公司 | 一种具有多个智能合约执行引擎的虚拟机及其实现方法 |
CN109615517A (zh) * | 2018-12-07 | 2019-04-12 | 北京瑞卓喜投科技发展有限公司 | 一种智能合约执行方法及智能合约执行系统 |
CN110032568B (zh) * | 2018-12-20 | 2020-05-12 | 阿里巴巴集团控股有限公司 | 数据结构的读取及更新方法、装置、电子设备 |
CN109710384B (zh) * | 2018-12-29 | 2021-02-23 | 杭州趣链科技有限公司 | 一种安全的Java智能合约解释执行引擎及方法 |
CN109710385A (zh) * | 2018-12-29 | 2019-05-03 | 杭州趣链科技有限公司 | 一种基于Java虚拟机的智能合约复杂度限制方法 |
CN109766722B (zh) * | 2019-01-22 | 2020-11-10 | 苏州同济区块链研究院有限公司 | 一种区块链中构建智能合约的方法 |
CN110060155B (zh) * | 2019-01-31 | 2021-03-23 | 创新先进技术有限公司 | 区块链的智能合约执行方法及装置和电子设备 |
CN109933407B (zh) * | 2019-02-26 | 2021-06-01 | 上海南潮信息科技有限公司 | 区块链dapp虚拟机、数据处理方法和计算设备 |
CN111651169B (zh) * | 2020-05-19 | 2023-07-04 | 鼎链数字科技(深圳)有限公司 | 基于web容器的区块链智能合约运行方法及系统 |
CN112346820A (zh) * | 2020-11-16 | 2021-02-09 | 杭州复杂美科技有限公司 | 区块链jvm应用方法、设备和存储介质 |
CN112631803A (zh) * | 2020-12-21 | 2021-04-09 | 杭州趣链科技有限公司 | 区块链的智能合约调用方法、装置、服务器和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104392354A (zh) * | 2014-11-05 | 2015-03-04 | 中国科学院合肥物质科学研究院 | 一种用于加密数字货币的公钥地址与用户账号的关联和检索方法及其系统 |
CN106940854A (zh) * | 2017-03-06 | 2017-07-11 | 钱德君 | 一种utxo模型与合约之间的搭桥方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150379510A1 (en) * | 2012-07-10 | 2015-12-31 | Stanley Benjamin Smith | Method and system to use a block chain infrastructure and Smart Contracts to monetize data transactions involving changes to data included into a data supply chain. |
CN103885973B (zh) * | 2012-12-21 | 2017-07-07 | 中国科学院声学研究所 | 一种基于Web引擎的远程过程调用系统及实现方法 |
US10635471B2 (en) * | 2015-05-15 | 2020-04-28 | Joshua Paul Davis | System and method for an autonomous entity |
US11915332B2 (en) * | 2015-10-02 | 2024-02-27 | Loyyal Holdings Incorporated | System and process for tokenization and management of liability |
US9992028B2 (en) * | 2015-11-26 | 2018-06-05 | International Business Machines Corporation | System, method, and computer program product for privacy-preserving transaction validation mechanisms for smart contracts that are included in a ledger |
CN106709704B (zh) * | 2016-11-23 | 2020-04-24 | 杭州溪塔科技有限公司 | 一种基于许可链的智能合约升级方法 |
CN106651303B (zh) * | 2016-12-02 | 2020-05-26 | 北京轻信科技有限公司 | 一种基于模板的智能合约处理方法和系统 |
CN106598579B (zh) * | 2016-12-06 | 2020-12-25 | 北京果仁宝科技有限公司 | 区块链上集成动态类型编程语言方法和装置 |
CN106598549B (zh) * | 2016-12-08 | 2019-02-01 | 天津米游科技有限公司 | 一种基于区块链的智能合约系统及实现方法 |
CN106897878A (zh) * | 2017-02-27 | 2017-06-27 | 钱德君 | 一种量子链系统的智能合约类型实现方式 |
CN106951307B (zh) * | 2017-03-06 | 2020-09-22 | 钱德君 | 一种智能合约虚拟机实现方法 |
-
2017
- 2017-07-18 CN CN201710585453.9A patent/CN107526624B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104392354A (zh) * | 2014-11-05 | 2015-03-04 | 中国科学院合肥物质科学研究院 | 一种用于加密数字货币的公钥地址与用户账号的关联和检索方法及其系统 |
CN106940854A (zh) * | 2017-03-06 | 2017-07-11 | 钱德君 | 一种utxo模型与合约之间的搭桥方法 |
Non-Patent Citations (2)
Title |
---|
"Blockchain contract: Securing a blockchain applied to smart contracts";Hiroki Watanabe;《2016 IEEE International Conference on Consumer Electronics (ICCE)》;20160314;第467-468页 * |
"区块链技术驱动的产消者自组织产品制造社群构建";冷杰武;《广东工业大学学报》;20170710;第34卷(第5期);第1-9页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107526624A (zh) | 2017-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107526624B (zh) | 一种基于Java虚拟机的智能合约执行引擎 | |
CN109710384B (zh) | 一种安全的Java智能合约解释执行引擎及方法 | |
Baldini et al. | The serverless trilemma: Function composition for serverless computing | |
CN107147704B (zh) | 一种面向区块链的通用服务中间件系统 | |
CN102291464B (zh) | BPM中业务流程动态生成Web Service的系统及方法 | |
CN109284197B (zh) | 基于智能合约的分布式应用平台及实现方法 | |
CN106598549B (zh) | 一种基于区块链的智能合约系统及实现方法 | |
CN105677302B (zh) | 一种应用程序模块化开发方法以及装置 | |
CN107463434B (zh) | 一种分布式任务处理方法与设备 | |
CN102456185A (zh) | 一种分布式工作流处理方法及分布式工作流引擎系统 | |
CN107479990A (zh) | 一种分布式软件服务系统 | |
CN110399119A (zh) | 一种组件化构建方法、装置、电子设备及存储介质 | |
CN110413304A (zh) | 基于区块链网络的智能合约热升级方法及装置 | |
CN109542506A (zh) | 一种可灵活配置接口和快速交付服务的系统 | |
CN103324173A (zh) | 基于中间件的多异构机器人协作方法 | |
CN113688186B (zh) | 智能合约执行方法、引擎及区块链节点 | |
CN103092645A (zh) | 一种基于微内核技术的地理空间信息应用系统及其实现方法 | |
CN111899008A (zh) | 资源转移方法、装置、设备及系统 | |
CN111651121A (zh) | 数据逻辑计算方法、装置、电子设备及存储介质 | |
CN114006815A (zh) | 云平台节点的自动化部署方法、装置、节点及存储介质 | |
CN103294874B (zh) | 用于电磁仿真计算系统FEKO的Web服务封装方法以及系统 | |
CN116342283A (zh) | 可信智能合约实现方法、装置、设备及可读存储介质 | |
Nobakht et al. | Programming with actors in Java 8 | |
CN114327383A (zh) | 基于soa架构中间件的服务配置系统、方法及可读存储介质 | |
CN102867018B (zh) | 一种数据库系统中线程间的模拟信号通信方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |