一种区块链智能合约执行方法技术

技术编号:24454977 阅读:36 留言:0更新日期:2020-06-10 15:17
本发明专利技术公开了一种区块链智能合约执行方法,在区块链节点中设置合约数据服务模块和合约装载模块,区块链节点自用户处接收智能合约的动态共享库以及智能合约部署交易,进行合法性校验后将智能合约动态共享库转发给合约装载模块进行装载,创建并启动合约Docker容器,然后启动合约服务程序,区块链节点自用户处到接收到智能合约请求转发至合约服务程序进行执行。采用本发明专利技术可以快速完成智能合约的加载运行,提升区块链智能合约调用的便捷性和高效性。

A blockchain smart contract execution method

The invention discloses a blockchain smart contract execution method, in which a contract data service module and a contract loading module are set in the blockchain node, the blockchain node receives the dynamic sharing library of the smart contract and the smart contract deployment transaction from the user, after the validity verification, forwards the dynamic sharing library of the smart contract to the contract loading module for loading, creates and starts the contract D The ocker container starts the contract service program, and the blockchain node forwards the smart contract request from the user to the contract service program for execution. The invention can quickly complete the loading and operation of the smart contract, and improve the convenience and efficiency of the call of the blockchain smart contract.

【技术实现步骤摘要】
一种区块链智能合约执行方法
本专利技术属于区块链
,更为具体地讲,涉及一种区块链智能合约执行方法。
技术介绍
区块链技术作为一种全新的分布式基础架构与计算范式,涵盖了P2P网络、加密算法、智能合约、共识算法等多种技术。基于这种集成式的技术堆叠,区块链实现了一种防篡改、可追溯、去中心化的系统,有效解决了传统模式中存在的中央权威、可靠性差、安全性低等问题。智能合约(Smartcontract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。从本质上讲,区块链中的智能合约是一段由各个参与方共同编写、确认之后部署在区块链上并以沙箱形式运行的代码。但是目前智能合约执行大多存在设计复杂、功能扩展困难等问题。
技术实现思路
本专利技术的目的在于克服现有技术的不足,提供一种区块链智能合约执行方法,快速完成智能合约的加载运行,提升区块链智能合约调用的便捷性和高效性。为实现上述专利技术目的,本专利技术区块链智能合约执行方法包括以下步骤:S1:在区块链节点中设置合约数据服务模块和合约装载模块,其中合约数据服务模块采用基于网络套接字UDS的远程过程调用RPC实现,用于为智能合约目标函数的执行提供所需的业务数据,在区块链节点启动时以UDS的形式启动;合约装载模块用于创建并启动合约Docker容器;S2:区块链节点自用户处接收智能合约的动态共享库以及智能合约部署交易,该动态共享库中的文件由智能合约源代码编译得到;区块链节点对接收到的智能合约部署交易进行合法性校验,校验通过后将智能合约动态共享库转发给合约装载模块;S3:合约装载模块利用接收到的智能合约动态共享库和基础环境Docker镜像创建合约Docker镜像,随后对该合约和区块链节点进行目录映射,得到目录映射关系,再利用所述合约Docker镜像和目录映射关系来创建并启动合约Docker容器;S4:Docker容器内的合约服务程序启动,在启动过程中对合约动态共享库进行解析进而创建智能合约实例,并创建与合约数据服务模块通信的客户端;S5:区块链节点自用户处到接收到智能合约请求,智能合约请求包括合约地址、目标函数名及其执行参数;区块链节点对收到的智能合约调用请求进行合法性校验,校验通过后根据合约地址将该智能合约调用请求转发至对应的合约服务程序;S6:Docker容器内的合约服务程序首先解析出该智能合约调用请求中的目标函数名及其执行参数,并创建智能合约编程接口对应的实例对象;然后根据合约实例和目标函数名,利用反射机制获取目标函数的句柄;最后将目标函数执行参数和编程接口实例对象封装成目标函数的请求参数,通过获取到的目标函数句柄完成相应的处理逻辑,在整个处理过程合约服务程序利用编程接口的实例对象向合约数据服务模块获取相应的业务数据。本专利技术区块链智能合约执行方法,在区块链节点中设置合约数据服务模块和合约装载模块,区块链节点自用户处接收智能合约的动态共享库以及智能合约部署交易,进行合法性校验后将智能合约动态共享库转发给合约装载模块进行装载,创建并启动合约Docker容器,然后启动合约服务程序,区块链节点自用户处到接收到智能合约请求转发至合约服务程序进行执行。本专利技术中智能合约源码被编译成动态共享库文件的形式,具有代码文件简洁、便于快速加载的特点,采用Docker容器的方式运行智能合约,并以UDS服务的方式将合约数据服务模块、合约装载模块以及合约服务程序进行整合,具有设计简捷轻便的特点,同时还可以实现智能合约之间的相互调用,使得各个智能合约不在相互独立,便于业务功能的扩展。附图说明图1是本专利技术区块链智能合约执行方法的具体实施方式流程图。具体实施方式下面结合附图对本专利技术的具体实施方式进行描述,以便本领域的技术人员更好地理解本专利技术。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本专利技术的主要内容时,这些描述在这里将被忽略。实施例图1是本专利技术区块链智能合约执行方法的具体实施方式流程图。如图1所示,本专利技术区块链智能合约执行方法的具体步骤包括:S101:区块链节点设置:在区块链节点中设置合约数据服务模块和合约装载模块,其中合约数据服务模块采用基于网络套接字UDS(UnixDomainSocket)的远程过程调用RPC实现,用于为智能合约目标函数的执行提供所需的业务数据,在区块链节点启动时以UDS的形式启动;合约装载模块用于创建并启动合约Docker容器。S102:智能合约部署:区块链节点自用户处接收智能合约的动态共享库以及智能合约部署交易,该动态共享库中的文件由智能合约源代码编译得到;区块链节点对接收到的智能合约部署交易进行合法性校验,校验通过后将智能合约动态共享库转发给合约装载模块。S103:合约装载:合约装载模块利用接收到的智能合约动态共享库和基础环境Docker镜像创建合约Docker镜像,随后对该合约和区块链节点进行目录映射,得到目录映射关系,再利用所述合约Docker镜像和目录映射关系来创建并启动合约Docker容器。基础环境Docker镜像中仅包含Ubuntu操作系统和合约服务程序。其中,目录映射的具体过程包括:1)将合约数据服务模块启动时创建的UDS文件与Docker容器中的文件进行关联;2)将合约服务程序启动时创建的UDS文件所在目录与区块链节点中该智能合约的目录进行关联;3)将区块链中所有合约的目录与合约Docker容器中的新建合约目录进行关联。S104:合约服务程序启动:Docker容器内的合约服务程序启动(合约服务程序在合约Docker容器启动后会自动以基于UDS的RPC服务形式启动),在启动过程中对合约动态共享库进行解析进而创建智能合约实例,并创建合约数据服务模块通信的客户端。其中,智能合约实例是由合约服务程序在加载智能合约动态共享库时利用反射机制所创建的,与合约数据服务模块通信的客户端是由合约服务程序利用合约Docker容器中合约数据服务的UDS文件所创建的。S105:智能合约请求处理:区块链节点自用户处到接收到智能合约请求,智能合约请求包括合约地址、目标函数名及其执行参数;区块链节点对收到的智能合约调用请求进行合法性校验,校验通过后根据合约地址将该智能合约调用请求转发至对应的合约服务程序。S106:智能合约执行:Docker容器内的合约服务程序首先解析出该智能合约调用请求中的目标函数名及其执行参数,并创建智能合约编程接口对应的实例对象;然后根据合约实例和目标函数名,利用反射机制获取目标函数的句柄;最后将目标函数执行参数和编程接口实例对象封装成目标函数的请求参数,通过获取到的目标函数句柄完成相应的处理逻辑,在整个处理过程合约服务程序利用编程接口的实例对象通过与合约数据服务模块通信的客户端获取相应的业务数据。为了实现智能合约之间的相互调用,合约服务程序可以利用合约Docker容器中所有智能合约的UDS文件本文档来自技高网...

【技术保护点】
1.一种区块链智能合约执行方法,其特征在于,包括以下步骤:/nS1:在区块链节点中设置合约数据服务模块和合约装载模块,其中合约数据服务模块采用基于网络套接字UDS的远程过程调用RPC实现,用于为智能合约目标函数的执行提供所需的业务数据,在区块链节点启动时以UDS的形式启动;合约装载模块用于创建并启动合约Docker容器;/nS2:区块链节点自用户处接收智能合约的动态共享库以及智能合约部署交易,该动态共享库中的文件由智能合约源代码编译得到;区块链节点对接收到的智能合约部署交易进行合法性校验,校验通过后将智能合约动态共享库转发给合约装载模块;/nS3:合约装载模块利用接收到的智能合约动态共享库和基础环境Docker镜像创建合约Docker镜像,随后对该合约和区块链节点进行目录映射,得到目录映射关系,再利用所述合约Docker镜像和目录映射关系来创建并启动合约Docker容器;/nS4:Docker容器内的合约服务程序启动,在启动过程中对合约动态共享库进行解析进而创建智能合约实例,并创建与合约数据服务模块通信的客户端;/nS5:区块链节点自用户处到接收到智能合约请求,智能合约请求包括合约地址、目标函数名及其执行参数;区块链节点对收到的智能合约调用请求进行合法性校验,校验通过后根据合约地址将该智能合约调用请求转发至对应的合约装载服务程序;/nS6:Docker容器内的合约服务程序首先解析出该智能合约调用请求中的目标函数名及其执行参数,并创建智能合约编程接口对应的实例对象;然后根据合约实例和目标函数名,利用反射机制获取目标函数的句柄;最后将目标函数执行参数和编程接口实例对象封装成目标函数的请求参数,通过获取到的目标函数句柄完成相应的处理逻辑,在整个处理过程合约服务程序利用编程接口的实例对象向合约数据服务模块获取相应的业务数据。/n...

【技术特征摘要】
1.一种区块链智能合约执行方法,其特征在于,包括以下步骤:
S1:在区块链节点中设置合约数据服务模块和合约装载模块,其中合约数据服务模块采用基于网络套接字UDS的远程过程调用RPC实现,用于为智能合约目标函数的执行提供所需的业务数据,在区块链节点启动时以UDS的形式启动;合约装载模块用于创建并启动合约Docker容器;
S2:区块链节点自用户处接收智能合约的动态共享库以及智能合约部署交易,该动态共享库中的文件由智能合约源代码编译得到;区块链节点对接收到的智能合约部署交易进行合法性校验,校验通过后将智能合约动态共享库转发给合约装载模块;
S3:合约装载模块利用接收到的智能合约动态共享库和基础环境Docker镜像创建合约Docker镜像,随后对该合约和区块链节点进行目录映射,得到目录映射关系,再利用所述合约Docker镜像和目录映射关系来创建并启动合约Docker容器;
S4:Docker容器内的合约服务程序启动,在启动过程中对合约动态共享库进行解析进而创建智能合约实例,并创建与合约数据服务模块通信的客户端;
S5:区块链节点自用户处到接收到智能合约请求,智能合约请求包括合约地址、目标函数名及其执行参数;区块链节点对收到的智能合约调用请求进行合法性校验,校验通过后根据合约地址将该智能合约调用请求转发至对应的合约装载服务程序;
S6:Docker容器内的合约服务程序首先解析出该智能合约调...

【专利技术属性】
技术研发人员:丘志杰徐豪陈虹
申请(专利权)人:电子科技大学电子科技大学广东电子信息工程研究院
类型:发明
国别省市:四川;51

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

1