CN109189396B - 智能合约引擎组件、运行方法及存储介质 - Google Patents
智能合约引擎组件、运行方法及存储介质 Download PDFInfo
- Publication number
- CN109189396B CN109189396B CN201810937313.8A CN201810937313A CN109189396B CN 109189396 B CN109189396 B CN 109189396B CN 201810937313 A CN201810937313 A CN 201810937313A CN 109189396 B CN109189396 B CN 109189396B
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- engine component
- deployed
- blockchain network
- contract engine
- 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
- 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
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- 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 Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Economics (AREA)
- General Business, Economics & Management (AREA)
- Technology Law (AREA)
- Strategic Management (AREA)
- Marketing (AREA)
- Development Economics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明提供一种智能合约引擎组件、运行方法及存储介质,智能合约引擎组件,所述智能合约引擎组件包括:账本访问适配器,用于适配智能合约模块访问模拟账本,所述模拟账本为基于本地数据源模拟形成;或者,用于适配所述智能合约模块访问区块链网络的账本;智能合约模块,用于对智能合约的源代码进行编译,形成智能合约,并通过所述账本访问适配器获取所述模拟账本,对所获取的模拟账本执行所述编译形成的智能合约,以形成交易结果;或者,用于响应区块链网络中智能合约的调用,通过所述账本访问适配器对所述区块链网络的账本执行被调用的智能合约,并形成对所述被调用的智能合约进行响应的交易结果。
Description
技术领域
本发明涉及通信技术,尤其涉及一种智能合约引擎组件、运行方法及存储介质。
背景技术
在实现本发明过程中,发明人发现业务系统借助于区块链网络实现部分业务逻辑时,需要开发相对应的智能合约,然而相关技术中并不存在兼容已有业务系统的集成开发环境的本地化开发/调试方案。
发明内容
本发明实施例提供一种智能合约引擎组件、运行方法及存储介质,能够进行完全本地化的智能合约的开发测试,及执行区块链网络中调用的智能合约。
本发明实施例的技术方案是这样实现的:
第一方面,本发明实施例提供一种智能合约引擎组件,所述智能合约引擎组件包括:
账本访问适配器,用于当所述智能合约引擎组件部署于开发环境中时,适配智能合约模块访问模拟账本,所述模拟账本为基于本地数据源模拟形成;或者,用于当所述智能合约引擎组件部署于区块链网络中时,适配所述智能合约模块访问区块链网络的账本;
智能合约模块,用于当所述智能合约引擎组件部署于开发环境中时,对智能合约的源代码进行编译,形成智能合约,并通过所述账本访问适配器获取所述模拟账本,对所获取的模拟账本执行所述编译形成的智能合约,以形成交易结果;
或者,用于当所述智能合约引擎组件部署于区块链网络中时,响应区块链网络中智能合约的调用,通过所述账本访问适配器对所述区块链网络的账本执行被调用的智能合约,并形成对所述被调用的智能合约进行响应的交易结果。
第二方面,本发明实施例提供一种智能合约引擎组件的运行方法,所述方法包括:
根据智能合约引擎组件的部署环境,在所述智能合约引擎组件中响应与所述部署环境相适配的功能;其中,
当所述智能合约引擎组件部署于开发环境中时,响应以下功能:
基于本地数据源进行账本模拟,形成模拟账本,以及,
对智能合约的源代码进行编译,在本地形成智能合约,并根据所述模拟账本执行编译形成的所述智能合约,以形成交易结果;
当所述智能合约引擎组件部署于区块链网络中时,响应以下功能:
响应区块链网络中智能合约的调用,获取所述区块链网络的账本,以及,
根据获取的所述区块链网络的账本执行被调用的智能合约,并形成对所述被调用的智能合约进行响应的交易结果。
第三方面,本发明实施例提供一种存储介质,存储有可执行指令,当所述可执行指令被执行时,用于实现本发明实施例提供的智能合约引擎组件的运行方法。
第四方面,本发明实施例提供一种智能合约引擎组件,所述智能合约引擎组件包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令,实现本发明实施例提供的所述的智能合约引擎组件的运行方法。
本发明实施例具有以下有益效果:
1)智能合约引擎组件根据模拟账本执行编译形成的智能合约,实现了完全本地化的智能合约的开发测试,开发成本低;
2)智能合约引擎组件在实现智能合约的开发测试的基础上,根据区块链网络的账本,执行区块链网络中调用的智能合约,实现了区块链网络中智能合约的执行与本地化开发的兼容。
附图说明
图1是本发明实施例提供的区块链网络的功能架构示意图;
图2本发明实施例提供的区块链网络的组织架构示意图;
图3是本发明实施例提供的共识节点的一个可选的结构示意图;
图4为本发明实施例提供的智能合约引擎组件的组成结构示意图;
图5是本发明实施例提供的区块链网络的部署结构示意图一;
图6为本发明实施例提供的在区块链网络中部署智能合约引擎组件的示意图一;
图7是本发明实施例提供的区块链网络的部署结构示意图二;
图8是本发明实施例提供的在区块链网络中部署智能合约引擎组件的示意图二;
图9是本发明实施例提供的开发环境中部署智能合约引擎组件的示意图;
图10是本发明实施例提供的智能合约引擎组件的部署示意图;
图11是本发明实施例提供的开发环境中智能合约引擎组件的运行方法的流程示意图;
图12是本发明实施例提供的区块链网络中智能合约引擎组件的运行方法的流程示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
1)交易(Transaction),等同于计算机术语“事务”,包括对智能合约的调用,以实现对账本中的目标账户的相关数据的操作,包括增、查、改的操作修改账户中的键值(Key-Value)对形式的数据,或者在账本中增加新的账户,并非单指商业语境中的交易,鉴于在区块链技术中约定俗成地使用了“交易”这一术语,本发明实施例遵循了这一习惯。
2)区块(Block),记录一段时间内交易所更新的账本数据的数据结构,被标记上时间戳和之前一个区块的独特标记(例如数字指纹),区块经过区块链网络中节点的共识验证后,会被追加到区块链的末尾成为新的区块。
3)区块链(Blockchain),区块以顺序相连的方式组合成的一种链式数据结构,在每个区块中引用前一个区块或者其子集的哈希值,从而以密码学的方式保证所记录交易的防篡改和防伪造。
4)区块链网络,通过共识的方式将新区块纳入区块链的一系列的、无中心的节点的集合。
5)账本(Ledger),区块链网络中以账户为维度所记录的数据的总和,包括账本数据、账本状态、账本状态证明和区块索引等元素。
6)账本数据,实际区块数据存储,即区块链中记录的一系列有序的、不可篡改的交易的记录,可以表现为文件系统的文件的形式,交易中调用的智能合约被执行时,实现对账户/账户中数据的更新。
7)账本状态,也称为状态数据,即账本数据的状态,可以表现为数据库终中的键值对的形式,其中实时账本状态用于表示共识的交易所更新的键值对的最新记录,历史账本状态用于表示键值对的历史记录。
8)共识(Consensus),是区块链网络中的一个过程,用于在涉及的多个节点之间对交易结果达成一致,实现共识的机制包括工作量证明(PoW,Proof of Work)、权益证明(PoS,Proof of Stake)、股份授权证明(DPoS,Delegated Proof-of-Stake)、消逝时间量证明(PoET,Proof of Elapsed Time)等。
9)智能合约(Smart Contracts),也称为链码(Chaincode),部署在区块链网络中的根据条件而触发执行的程序,用于通过查询、增加、修改来操作账本,以实现对账本的查询或更新。
10)响应于,用于表示所执行的操作所依赖的条件或者状态,当满足所依赖的条件或状态时,所执行的一个或多个操作可以是实时的,也可以具有设定的延迟;在没有特别说明的情况下,所执行的多个操作不存在执行先后顺序的限制。
下面说明实现本发明实施例的区块链网络的示例性的功能架构,参见图1,图1本发明实施例提供的区块链网络的功能架构示意图,包括应用层101、共识层102、网络层103、数据层104和资源层105,下面分别进行说明。
资源层105封装各种可用的计算资源和存储资源,例如计算机、服务器/集群和云中的计算资源和存储资源,进行抽象并向数据层104提供统一的接口以屏蔽实现资源层105的底层硬件的差异性。
计算资源包括各种形式的处理器,例如中央处理器(CPU,Central ProcessingUnit)、应用专用集成电路(ASIC,Application Specific Integrated Circuit)、专用集成电路和现场可编程门阵列(FPGA,Field-Programmable Gate Array)的各种形式的处理器。
存储资源包括各种易失性存储器和非易失性存储器等各种类型的存储介质。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)。易失性存储器可以是随机存取存储器(RAM,Random Access Memory),其用作外部高速缓存。
资源层105的计算资源和存储资源可以被映射为区块链网络中各种类型的节点,实现本发明实施例的存储介质存储了用于实现本发明实施例的区块链网络部署方法的可执行指令,一旦被部署到节点的可执行指令被执行,实现节点的底层资源(例如各种类型的处理器)将实现区块链网络中各种类型的节点的部署、以及执行各种类型节点的功能,从而实现针对业务过程中的交易的账本、以及基于账本的各种应用。
作为示例,可执行指令可以采用软件(包括系统程序和应用程序)、软件模块、脚本、插件等的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件或者适合在计算环境中使用的其它单元。
数据层104封装了实现账本的各种数据结构,包括以文件系统实现的账本数据,以数据库形式实现的账本状态和存在性证明。
网络层103封装了点对点(P2P)网络协议、数据传播机制和数据验证机制、接入和认证机制和业务主体身份。P2P网络协议实现区块链网络中节点之间的通信,数据传播机制保证了交易/交易结果在区块链网络中的传播,数据验证机制用于基于加密学方法(例如数字证书、数字签名、公/私钥对)实现节点之间传输数据的可靠性;接入和认证机制用于基于业务主体身份对终端的接入和认证进行管理。
共识层102封装了区块链中传播的交易结果达成一致性的机制,包括POS、POW和DPOS等,支持共识机制的可插拔。
应用层101封装了区块链网络能够实现的各种业务,包括交易结算、溯源和存证等。
下面说明实现本发明实施例的区块链网络的示例性的组织架构,参见图2,图2本发明实施例提供的区块链网络的组织架构示意图,包括至少两个共识节点110,作为示例,图2中仅示出了共识节点110-1和共识节点110-2;共识节点110-1和共识节点110-2是针对参与业务的两个不同业务实体在业务中所实现的角色而对应部署。区块链网络100的共识节点110响应来自业务主体的终端300提交的交易以更新账本或者查询账本,并在终端300的用户界面310显示各种中间结果或最终结果。
下面以共识节点为例,说明实现本发明实施例的区块链网络中节点的示例性结构,可以理解地,区块链网络100中的其他节点的硬件结构可以根据共识节点的硬件结构而对应实施。
参见图3,图3是本发明实施例提供的共识节点110一个可选的结构示意图,共识节点110可以是一个或多个服务器,根据共识节点110的结构,可以预见共识节点110的其他的示例性结构,因此这里所描述的结构不应视为限制,例如可以省略下文所描述的部分组件,或者,增设下文所未记载的组件以适应某些应用场景的特殊需求。
图3所示的共识节点110包括:至少一个处理器1101、存储器1104、至少一个网络接口1102。共识节点110中的各个组件通过总线系统1103耦合在一起。可理解,总线系统1103用于实现这些组件之间的连接通信。总线系统1103除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图3中将各种总线都标为总线系统1103。
存储器1104可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。本发明实施例描述的存储器1104旨在包括这些和任意其它适合类型的存储器。
处理器1101可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
存储器1104能够存储可执行指令以支持共识节点110的操作,这些可执行指令的示例包括:用于在共识节点110上操作的程序、插件和脚本等各种形式的软件模块,程序例如可以包括操作系统和应用程序,其中,操作系统包含各种系统程序和驱动程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序可以包含实现共识节点110各种功能的程序。
结合上文可知,实现本发明实施例的区块链网络通过提供为一系列的存储器和处理器的形式,在存储器中存储有可执行指令,当可执行指令被处理器执行时,在运行处理器和存储器的多个机器部署有与业务主体的角色相适配的共识节点,当然还可以部署有其他类型的节点。
作为本发明实施例提供的区块链部署方法采用软硬件结合实施的示例,本发明实施例所提供的区块链部署方法可以直接体现为由处理器1101执行的上述不同形式的软件模块,软件模块可以位于存储介质中,存储介质位于存储器1104,处理器1101读取存储器1104中软件模块包括的可执行指令,结合必要的硬件(例如,包括处理器1101以及连接到总线系统1103的其他组件)完成共识节点110的功能。
下面说明实现本发明实施例的区块链网络支撑多个业务主体参与业务的示例性应用,参与业务的业务主体在所参与业务中所实现的角色根据业务主体的业务诉求而定。
在一个示例性的业务中,业务主体的角色至少可以包括交易方,还可以包括协作方、监管方、认证方和备案方,下面分别进行说明。
交易方是业务中的主要角色,交易方彼此之间就开展的一项或多项业务具有在维护共同的账本中记录交易的日志的业务诉求,例如,在账本中记录交易方之间的数字资产、商品库存的状态的变化。
协作方,在业务中与交易方协同完成交易过程的业务主体,向交易方提供必要的业务支持,或者用于完成交易方在业务中所实现的部分业务环节的业务实体。
监管方,是对交易方的交易结果具有监管诉求的业务主体,不参与交易方的具体交易过程,例如,对交易有监管权限/责任的相关职能部门。
认证方,是对交易方、或对交易方所交易的对象(例如实体商品、虚拟商品、数字资产等)具有行业认证资质的业务主体,账本中可以包括认证方针对对象所签发的认证信息(例如产品质量认证、产地认证等),以供在后续的交易/使用过程中证明交易方的合法资质、以及交易对象的质量等。
备案方,是对业务的账本有备份诉求的业务实体,不参与交易方的具体交易过程,例如,对账本有监察权限的智能部门,对账本提供验证服务的第三方机构等。
接下来对本发明实施例提供的智能合约引擎组件进行说明。图4为本发明实施例提供的智能合约引擎组件的组成结构示意图,参见图4,本发明实施例提供的智能合约引擎组件的组成包括:智能合约模块710及账本访问适配器720;其中,智能合约模块710包括编译器711和执行器712,账本访问适配器720包括集成开发环境(IDE,IntegratedDevelopment Environment)模拟器721及账本远程代理模块722。
智能合约模块710用于实现的功能包括:智能合约的编译(由编译器711实现)/模拟测试功能(编译器711和执行器712协同实现),以及智能合约的执行功能(由执行器712实现);账本访问适配器720用于实现的功能包括:I DE模拟器721根据本地数据源模拟形成账本,编译器711将智能合约的代码进行编译形成供执行器712进行测试用的智能合约,或通过远程代理的方式(即通过账本远程代理模块722)提供区块链网络100中的真实的账本以供执行器712执行智能合约。
本发明实施例的智能合约引擎组件具有智能合约的编译/模拟运行功能(利用模拟的账本)、以及智能合约的执行功能(执行结果应用于区块链网络的真实账本),能够根据所部署的环境(例如自动检测所部署的环境,或者接收开发者的关于部署环境的设置),自动设置其中的子模块的工作状态和离线状态,从而在智能合约的编译/模拟测试功能、以及智能合约的执行功能之间自动切换。例如,在部署于区块链网络中时实现智能合约的执行功能,而在部署于开发环境中时实现智能合约的编译/模拟运行功能。
当然,智能合约引擎组件也可以根据预设置而自动调整其中的子模块的在线状态(即,与外部的连接被激活的状态)和离线状态(即,与外部的连接被旁路的状态),下面对智能合约引擎组件处于不同部署环境时设置不同模块的工作/离线状态,以自动切换智能合约的编译/模拟测试功能、以及智能合约的执行功能进行说明。
当智能合约引擎组件部署于区块链网络的环境时,智能合约模块710中的执行器712自动处于在线状态,账本访问适配器720中的账本远程代理模块722用于根据区块链网络中的部署环境而处于在线状态,而智能合约模块710中的编译器711则处于离线状态。
当智能合约引擎组件700部署于开发环境中时,智能合约模块710中的编译器711、执行器712、IDE模拟器721处于在线状态,以支持开发者使用智能合约的编译(由编译器711实现)/模拟测试功能(编译器711和执行器712协同实现),而智能合约模块710中的账本远程代理模块722则处于离线状态。
接下来对智能合约引擎组件700部署于区块链网络100的环境中的不同情况进行说明。
在一些实施例中,本发明实施例的区块链网络中可以部署一类独立的用于运行智能合约引擎组件的合约引擎节点,用以代替区块链网络中的共识节点执行交易中所调用的智能合约,并向共识节点返回执行智能合约得到的交易结果。
例如,可以在区块链网络中部署与全部共识节点连接(一对一连接或一对多地连接)的合约引擎节点,以降低全网的共识节点的负荷;或者,部署于部分业务主体的共识节点连接的合约引擎节点以定向降低业务主体的IT能力负荷,下面示例性说明。
参见图5,图5是本发明实施例提供的区块链网络的部署结构示意图,区块链网络100中部署有共识节点110(图中示例性的示出了共识节点110-1至共识节点110-5),以及合约引擎节点150;合约引擎节点150连接对应角色为交易方的业务主体200-2而部署的共识节点110-3,用于当共识节点110-3需要执行交易时,代替共识节点110-3执行交易中所调用的智能合约,将执行得到的交易结果返回共识节点110-3。
共识节点,对应参与业务的业务主体在所述业务中所实现的角色而部署,下面结合图5对不同角色的业务主体而部署节点的示例进行说明。
示例1)参见图5,当业务主体200-1和业务主体200-2在业务中的角色为交易方时,在区块链网络100中对应相应的业务主体200-1部署有至少一个共识节点即共识节点110,向来自业务主体200-1的终端提供接入,包括业务主体外部并与业务主体200-1连接的终端(包括终端300-1至终端300-3,其中终端300-1为手机、终端300-2为桌面设备,终端300-3为物联网设备)、以及业务主体内部的终端(图中未示出,例如通过内部专用网络而接入业务主体的终端);在区块链网络100中对应相应的业务主体200-2部署有至少一个共识节点即共识节点110-3,向来自业务主体200-2的终端提供接入,包括业务主体200-2内部的终端(包括终端300-4和终端300-5,均为桌面设备)、以及业务主体200-2外部、并与业务主体200-2连接的终端(图中未示出)。
在一个业务中通常至少有两个共识节点参与,因此在区块链网络中部署有至少两个共识节点。其中,针对不同角色的业务主体而部署的共识节点的数量可以根据相应业务主体的业务负荷确定,从而保证交易的处理效率;当然,针对业务主体部署的共识节点的数量也可以为设定值。
以角色为交易方的业务主体为例,业务负荷可以从以下至少一个方面确定:在业务主体内部和外部需要接入共识节点的终端的总量;窗口时间(如一小时)来自业务主体的终端(包括业务主体内部的终端、以及通过业务主体而接入共识节点的终端)提交交易的总量,等等。
示例2)参见图5,当业务主体200-1在业务中的角色为交易方时,在区块链网络100中对应业务主体200-1、以及角色为相应业务主体200-1的协作方的业务主体200-3-1部署有共同的至少一个共识节点,即共识节点110-2,共识节点110-2向来自业务主体200-3-1的终端提供接入,包括业务主体200-3-1内部的终端300-6(例如是用户终端),以及业务主体200-3-1外部的终端(图中未示出)。
业务主体200-2在业务中的角色为交易方时,在区块链网络100中对应业务主体200-2、以及角色为相应业务主体200-2的协作方的业务主体200-3-2部署有共同的至少一个共识节点即共识节点110-3,共识节点110-3为来自业务主体200-3-2的终端,包括业务主体200-3-2内部的终端300-4和终端300-5(例如是物联网终端),以及业务主体200-3-2的外部的终端(图中未示出)。
示例3)参见图5,当业务主体200-4在业务中的角色为监管方时,在区块链网络100中对应业务主体200-4部署有至少一个共识节点,即共识节点110-4,共识节点110-4向来自监管方的终端300-7提供接入。
示例4)参见图5,业务主体200-5在业务中的角色为认证方时,在区块链网络100中对应相应业务主体200-5部署有至少一个共识节点,即共识节点110-5。
接下来结合图5所示的智能合约引擎组件700部署于独立的合约引擎节点的情况,对智能合约引擎组件的功能进一步进行说明。图6为本发明实施例提供的在区块链网络中部署智能合约引擎组件的示意图,参见图6,当在智能合约引擎组件700部署于区块链网络100的环境中,一个示例性的交易处理过程如下。
共识节点110中的交易处理模块1102用于对终端300提交的交易进行封装形成新区块,并通过调用合约引擎节点150中的合约引擎组件700,合约引擎组件700中的执行器712用于代替共识节点执行交易中所调用的智能合约来读/写账本,账本远程代理模块722用于实现执行器712和账本之间的通信代理功能,从账本读取智能合约需要读/写的账本数据,执行器712将接收的账本数据执行智能合约得到交易结果,然后由执行器712将交易结果返回共识节点110。
共识节点110中的共识模块1101针对交易结果与区块链网络100中的其他共识节点取得共识时,将会触发执行器712进行读/写账本,执行器712将通过账本远程代理模块722来读/写账本,对于写入账本来说,包括将交易结果存储到账本状态,以及将包含交易的新区块存储到账本数据。
通过在区块链网络中部署合约引擎节点,将执行智能合约的负荷从共识节点转移,能够解除对共识节点执行智能合约的IT能力的限制,尤其适用于IT能力受限的业务主体,以及由于接入过多终端而导致执行合约的高负荷的共识节点,例如针对交易方部署的共识节点。
在一些实施例中,实现区块链网络执行智能合约的功能通过运行智能合约组件,智能合约组件被部署于区块链网络中的共识节点上,以对终端提交的交易排序后打包为新区块后,通过共识节点中的智能合约组件执行智能合约,形成交易结果。下面进行示例性说明。
参见图7,图7是本发明实施例提供的区块链网络的部署结构示意图,基于图5;图8是本发明实施例提供的在区块链网络中部署智能合约引擎组件的示意图,结合图7、图8对本发明实施例中智能合约组件部署于共识节点上的情况进行说明。智能合约组件被部署于区块链网络中的共识节点上,使得合约引擎节点150与共识节点110-3的功能集成在一个节点上,当终端300-4或终端300-5向共识节点110-3提交交易后,共识节点110-3对终端300-4或终端300-5提交的交易排序后打包为新区块后,通过共识节点110-3中的智能合约组件执行智能合约,形成交易结果。
接下来对智能合约引擎组件700部署于开发环境中的情况进行说明。参见图9,图9是本发明实施例提供的开发环境中部署智能合约引擎组件700的部署示意图,智能合约引擎组件700以嵌入的方式部署到开发者的开发环境中,与开发环境中的开发组件(图9中以Maven编译插件为例)和测试组件(图9中以Junit测试组件为例)适配。
基于图9,一个示例性的交易处理过程如下。
在编译智能合约(项目)的阶段,开发环境中的编译插件调用编译器711进行智能合约的编译;在测试智能合约的阶段,开发环境中的测试组件调用执行器712执行智能合约,IDE模拟器721基于本地数据源模拟区块链网络的完备账本,向执行器712提供本地数据源形式的账本数据,以由执行器712对模拟的账本数据执行智能合约中的读/写操作,形成交易结果;通过执行智能合约的中间结果和最终结果用以定位出错代码。
参见图10,图10是本发明实施例提供的智能合约引擎组件的部署示意图,贯穿智能合约的开发和链上部署阶段。
在智能合约的项目管理和开发测试阶段,在集成开发环境(如Eclipse)中进行定义智能合约编译的各种依赖关系以及编译插件;编译插件编译、打包智能合约的代码,包括智能合约的打包文件(CONTRACT.jar)以及开发者针对打包文件的数字签名(Signature.cert),以根据智能合约源代码进行智能合约代码的编译;智能合约的测试用例完全依赖于本地数据源的账本,不依赖于区块链网络中的节点维护的账本数据,
在智能合约的部署阶段,签署数字签名的智能合约被部署到如图5所示的共识节点110中,从而共识节点110能够执行终端300提交的交易中所引用的智能合约并形成交易结果。
智能合约引擎组件提供的智能合约的工程化环境:开发语言成熟、工具链完整、可重用、可分发、可验证、可管理;通过与开发环境的测试组件和编译组件的适配,能够延续业务系统的开发模式,并直接利用现有的持续集成设施,降低了智能合约开发的学习成本;可以进行完全本地化的单元测试。
参见图11,图11是本发明实施例提供的开发环境中智能合约引擎组件的运行方法的流程示意图,结合步骤201至步骤203进行说明。
步骤201,基于本地数据源进行账本模拟,形成模拟账本。
步骤202,对智能合约的源代码进行编译,形成智能合约。
步骤203,根据模拟账本执行编译形成的智能合约,以形成交易结果。
参见图12,图12是本发明实施例提供的区块链网络中智能合约引擎组件的运行方法的流程示意图,结合步骤301至步骤302进行说明。
步骤301,响应区块链网络中智能合约的调用,获取所述区块链网络的账本。
步骤302,根据获取的所述区块链网络的账本执行被调用的智能合约,形成对被调用的智能合约进行响应的交易结果。
在一些实施例中,当所述智能合约引擎组件部署于区块链网络中时,所述智能合约引擎组件部署于所述区块链网络中独立的合约引擎节点上,所述合约引擎节点连接所述区块链网络中的共识节点,以响应所述共识节点对所述区块链网络中智能合约的调用;
其中,所述共识节点数量为至少两个,对应参与业务的业务主体在所述业务中所实现的角色而部署。
在一些实施例中,当所述智能合约引擎组件部署于区块链网络中时,所述智能合约引擎组件部署于所述区块链网络中的共识节点上;
其中,所述共识节点数量为至少两个,对应参与业务的业务主体在所述业务中所实现的角色而部署。
综上所述,本发明实施例具有以下有益效果:
1)智能合约引擎组件能够自动基于所部署的环境切换其中的子模块的工作状态和离线状态,从而在智能合约的编译/模拟测试功能、以及智能合约的执行功能之间自动切换。
2)智能合约引擎组件根据模拟账本执行编译形成的智能合约,实现了完全本地化的智能合约的开发测试,开发成本低。
3)智能合约引擎组件在实现智能合约的开发测试的基础上,根据区块链网络的账本,执行区块链网络中调用的智能合约,实现了区块链网络中智能合约的执行与本地化开发的兼容。
4)智能合约引擎组件可以部署在区块链网络中的合约引擎节点上,如此,能够减轻共识节点在执行交易过程中的负荷,其计算能力可以直接耦合到业务主体用于执行共识的资源上,从而不需要对已有业务系统进行升级,降低了业务主体的业务系统的复杂度。
本发明实施例还提供了一种存储介质,存储有可执行指令,当所述可执行指令被执行时,用于引起处理器执行本发明实施例提供的智能合约引擎组件的运行方法。
本发明实施例提供一种智能合约引擎组件,所述智能合约引擎组件包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令,实现本发明实施例提供的所述的智能合约引擎组件的运行方法。
以上所述,仅为本发明的实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。
Claims (9)
1.一种智能合约引擎组件,其特征在于,所述智能合约引擎组件包括:
账本访问适配器,用于当所述智能合约引擎组件部署于开发环境中时,适配智能合约模块访问模拟账本,所述模拟账本为基于本地数据源模拟形成;或者,用于当所述智能合约引擎组件部署于区块链网络中时,适配所述智能合约模块访问区块链网络的账本;所述账本访问适配器包括:集成开发环境IDE模拟器;所述IDE模拟器,用于当所述智能合约引擎组件部署于开发环境中时,根据本地数据源进行账本模拟,形成模拟账本;
智能合约模块,用于当所述智能合约引擎组件部署于开发环境中时,对智能合约的源代码进行编译,形成智能合约,并通过所述账本访问适配器获取所述模拟账本,对所获取的模拟账本执行所述编译形成的智能合约,以形成交易结果;
或者,用于当所述智能合约引擎组件部署于区块链网络中时,响应区块链网络中智能合约的调用,通过所述账本访问适配器对所述区块链网络的账本执行被调用的智能合约,并形成对所述被调用的智能合约进行响应的交易结果。
2.根据权利要求1所述的智能合约引擎组件,其特征在于,
所述智能合约模块包括:编译器及执行器;
所述编译器,用于当所述智能合约引擎组件部署于开发环境中时,对智能合约的源代码进行编译,形成所述智能合约;
所述执行器,用于当所述智能合约引擎组件部署于开发环境中时,根据所述模拟账本执行编译形成的所述智能合约。
3.根据权利要求2所述的智能合约引擎组件,其特征在于,所述账本访问适配器还包括:账本远程代理模块;
所述账本远程代理模块,用于当所述智能合约引擎组件部署于区块链网络中时,获取所述区块链网络的账本;
所述执行器,还用于当所述智能合约引擎组件部署于区块链网络中时,响应区块链网络中的智能合约调用,根据所述区块链网络的账本,执行被调用的智能合约,并形成对被调用的所述智能合约进行响应的交易结果。
4.根据权利要求3所述的智能合约引擎组件,其特征在于,
所述IDE模拟器,用于当所述智能合约引擎组件部署于开发环境中时,自动处于在线状态,当所述智能合约引擎组件部署于区块链网络中时,自动处于离线状态;
所述编译器,用于当所述智能合约引擎组件部署于开发环境中时,自动处于在线状态,当所述智能合约引擎组件部署于区块链网络中时,自动处于离线状态;
所述执行器,用于当所述智能合约引擎组件部署于开发环境或区块链网络中时,自动处于在线状态;
所述账本远程代理模块,用于当所述智能合约引擎组件部署于开发环境中时,自动处于离线状态,当所述智能合约引擎组件部署于区块链网络中时,自动处于在线状态。
5.根据权利要求1至4任一项所述的智能合约引擎组件,其特征在于,
当所述智能合约引擎组件部署于区块链网络中时,所述智能合约引擎组件部署于所述区块链网络中独立的合约引擎节点上,所述合约引擎节点连接所述区块链网络中的共识节点,以响应所述共识节点对所述区块链网络中智能合约的调用;
其中,所述共识节点数量为至少两个,对应参与业务的业务主体在所述业务中所实现的角色而部署。
6.根据权利要求1至4任一项所述的智能合约引擎组件,其特征在于,
当所述智能合约引擎组件部署于区块链网络中时,所述智能合约引擎组件部署于所述区块链网络中的共识节点上;
其中,所述共识节点数量为至少两个,对应参与业务的业务主体在所述业务中所实现的角色而部署。
7.一种智能合约引擎组件的运行方法,其特征在于,所述方法包括:
根据智能合约引擎组件的部署环境,在所述智能合约引擎组件中响应与所述部署环境相适配的功能;其中,
当所述智能合约引擎组件部署于开发环境中时,响应以下功能:
基于本地数据源进行账本模拟,形成模拟账本,以及,
对智能合约的源代码进行编译,形成智能合约,并根据所述模拟账本执行编译形成的所述智能合约,以形成交易结果;
当所述智能合约引擎组件部署于区块链网络中时,响应以下功能:
响应区块链网络中智能合约的调用,获取所述区块链网络的账本,以及,
根据获取的所述区块链网络的账本执行被调用的智能合约,并形成对被调用的所述智能合约进行响应的交易结果。
8.一种存储介质,其特征在于,存储有可执行指令,当所述可执行指令被执行时,用于引起处理器执行权利要求7所述的智能合约引擎组件的运行方法。
9.一种智能合约引擎组件,其特征在于,所述智能合约引擎组件包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令,实现如权利要求7所述的智能合约引擎组件的运行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810937313.8A CN109189396B (zh) | 2018-08-16 | 2018-08-16 | 智能合约引擎组件、运行方法及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810937313.8A CN109189396B (zh) | 2018-08-16 | 2018-08-16 | 智能合约引擎组件、运行方法及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109189396A CN109189396A (zh) | 2019-01-11 |
CN109189396B true CN109189396B (zh) | 2022-04-12 |
Family
ID=64918485
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810937313.8A Active CN109189396B (zh) | 2018-08-16 | 2018-08-16 | 智能合约引擎组件、运行方法及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109189396B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111478932B (zh) * | 2019-01-24 | 2023-04-07 | 北京京东尚科信息技术有限公司 | 智能合约数据的处理方法、区块链网络及存储介质 |
CN110060155B (zh) | 2019-01-31 | 2021-03-23 | 创新先进技术有限公司 | 区块链的智能合约执行方法及装置和电子设备 |
CN109886043B (zh) * | 2019-02-11 | 2020-12-29 | 上海点融信息科技有限责任公司 | 用于生成区块链参与方的组织凭证的方法和装置 |
WO2019101234A2 (en) * | 2019-03-04 | 2019-05-31 | Alibaba Group Holding Limited | Methods and devices for performing off-chain testing on smart contract |
CN111273970B (zh) * | 2020-01-21 | 2022-05-06 | 腾讯科技(深圳)有限公司 | 智能合约的调用方法、装置、系统、介质及电子设备 |
CN111047449B (zh) * | 2020-03-12 | 2020-06-23 | 支付宝(杭州)信息技术有限公司 | 在区块链中执行交易的方法及装置 |
CN111381863B (zh) * | 2020-03-17 | 2023-03-07 | 成都创流科技有限责任公司 | 基于区块链技术的app交易及自动化上线方法及上线系统 |
CN111782551B (zh) * | 2020-08-04 | 2021-07-27 | 腾讯科技(深圳)有限公司 | 针对区块链项目的测试方法、装置及计算机设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107526624A (zh) * | 2017-07-18 | 2017-12-29 | 杭州趣链科技有限公司 | 一种基于Java虚拟机的智能合约执行引擎 |
CN107562513A (zh) * | 2017-07-18 | 2018-01-09 | 杭州趣链科技有限公司 | 一种基于java的智能合约生命周期的管理方法 |
CN107943469A (zh) * | 2017-11-17 | 2018-04-20 | 深圳圣马歌科技有限公司 | 一种智能合约的发布方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11663609B2 (en) * | 2016-10-04 | 2023-05-30 | International Business Machines Corporation | Method and apparatus to enforce smart contract execution hierarchy on blockchain |
-
2018
- 2018-08-16 CN CN201810937313.8A patent/CN109189396B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107526624A (zh) * | 2017-07-18 | 2017-12-29 | 杭州趣链科技有限公司 | 一种基于Java虚拟机的智能合约执行引擎 |
CN107562513A (zh) * | 2017-07-18 | 2018-01-09 | 杭州趣链科技有限公司 | 一种基于java的智能合约生命周期的管理方法 |
CN107943469A (zh) * | 2017-11-17 | 2018-04-20 | 深圳圣马歌科技有限公司 | 一种智能合约的发布方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109189396A (zh) | 2019-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109189396B (zh) | 智能合约引擎组件、运行方法及存储介质 | |
CN109325855B (zh) | 区块链网络、部署方法及存储介质 | |
CN109191124B (zh) | 区块链网络、部署方法及存储介质 | |
CN109218079B (zh) | 一种区块链网络、部署方法及存储介质 | |
CN109325854B (zh) | 区块链网络、部署方法及存储介质 | |
CN109408373B (zh) | 智能合约的测试方法、计算机可读存储介质及测试终端 | |
CN109241032B (zh) | 账本数据库组件、运行方法及存储介质 | |
CN112073269B (zh) | 区块链网络测试方法、装置、服务器及存储介质 | |
WO2021197097A1 (zh) | 跨链数据订阅 | |
CN109493203A (zh) | 一种数据核算方法、装置及存储介质 | |
US20020046149A1 (en) | Apparatus, methods and articles of manufacture for constructing and executing computerized transaction processes and programs | |
US20200201843A1 (en) | Optimization of chaincode statements | |
CN111899008B (zh) | 资源转移方法、装置、设备及系统 | |
CN110968437A (zh) | 一种基于Java智能合约的单个合约并行执行的方法、装置、设备及介质 | |
CN112559635B (zh) | 以太坊联盟链节点的业务处理方法、装置、设备及介质 | |
WO2023207146A1 (zh) | Esop系统的服务模拟方法、装置、设备及存储介质 | |
CN115759955B (zh) | 一种基于区块链的业务流程执行引擎 | |
CN114327861A (zh) | 执行eda任务的方法、装置、系统和存储介质 | |
CN112100588A (zh) | 基于区块链的数字印章申领方法、装置及电子设备 | |
CN110377323B (zh) | 一种区块链dapp管理系统 | |
Sandobalin et al. | ARGON: A model-driven infrastructure provisioning tool | |
Ceccarelli et al. | A testing service for lifelong validation of dynamic SOA | |
CN114610598A (zh) | 测试方法、装置、电子设备及计算机可读存储介质 | |
CN113282318A (zh) | 业务实现方法与装置 | |
CN113095825A (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 |