一种基于JAVA的智能合约生命周期的管理方法与流程

文档序号:13421499阅读:2677来源:国知局
一种基于JAVA的智能合约生命周期的管理方法与流程

本发明涉及区块链技术,尤其涉及一种基于java的智能合约生命周期的管理方法。



背景技术:

区块链技术,区块链是一种新型去中心化协议,能安全地存储数字货币交易或其他数据,信息不可伪造和篡改,区块链上的交易确认由区块链上的所有节点共同完成,由共识算法保证其一致性,区块链上维护一个公共的账本,公共账本位于存储区块上任何节点可见,从而保证其不可伪造和篡改。

智能合约是编程在区块链上的汇编语言,该术语是跨领域法律学者尼克·萨博提出来的,他对智能合约的定义是“一个智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议”,换句话说,智能合约就是一个在计算机系统上,当一定条件被满足后,可以被自动执行的合约。通常人们不会自己写字节码,但是会从更高级的语言来编译它,例如用solidity等类似的专用语言。

区块链的去中心化与不可篡改的特性给智能合约提供了一个很好的发展环境,因此近年来,比特币网络、以太坊网络等一系列区块链社区都陆续开始提供了公开的智能合约编程的接口。但是在智能合约的开发过程中,一直缺少一个完善的生命周期的管理方法,尤其缺少一种基于当前主流编程语言的智能合约管理方法。



技术实现要素:

针对现有技术的不足,本发明提出了一种基于java的智能合约管理方法,从智能合约的部署、调用、升级、冻结、解冻等方面的管理来实现整个智能合约生命周期的管理,具体技术方案如下:

一种基于java的智能合约生命周期的管理方法,包括如下步骤:

步骤一:合约部署;

基于java虚拟机的智能合约执行引擎(javabasedcontractexecutionengine,以下简称jcee)的客户端接收用户输入的压缩过的类文件,随后解压类文件并持久化后,生成合约的唯一标识合约地址contractaddress,连同类文件的地址向jcee服务器端发送部署请求;jcee服务器端通过监听指定端口收到jcee客户端发送过来的合约部署请求,首先对合约进行安全性检查,如果检查通过,则将合约持久化到元数据库中,随后即可将类文件装载到内存中进行合约的部署;如果检查不通过,直接退出本次的合约部署,并向jcee客户端返回错误信息;

步骤二:根据用户需求对合约执行对应的操作:

(1)当需要调用合约时:jcee客户端接收用户输入的调用invoke请求,解析出调用合约的唯一标识contractaddress、合约调用的方法名与参数,向jcee服务器端发送合约调用invoke请求;jcee服务器端通过监听指定端口收到jcee客户端发送过来的合约调用请求,首先对合约进行安全性检查,如果检查通过,则调用指定合约地址的指定方法并同步账本信息到jcee客户端,实现合约的调用,如果检查不通过,则终止本次的合约调用,并向jcee客户端返回错误信息;

(2)当需要升级合约时:jcee客户端接收用户输入的升级update请求,解析出旧合约的唯一标识contractaddress、连同新合约的类文件地址向jcee服务器端发送update请求;jcee服务器端通过监听指定端口收到jcee客户端发送过来的合约升级请求,首先对合约进行安全性检查,如果检查不通过,则直接退出本次的合约升级,并返回错误信息到jcee客户端;如果检查通过,则进行旧合约的查询,如果能够查询到旧合约,则先摧毁旧合约,然后持久化新合约并装载新合约的类文件到内存中完成合约的升级,如果不能查到旧合约,则直接进行新合约的持久化与装载,完成合约的升级;

(3)当需要冻结合约时:jcee客户端接收用户输入的冻结frozen请求,解析出所要冻结合约的唯一标识contractaddress、连同合约的新状态位向jcee服务器端发送冻结请求;jcee服务器端通过监听指定端口收到jcee客户端发送过来的合约冻结请求,首先对合约进行安全性检查,如果检查通过,则更新合约的状态位为frozen状态,实现合约的冻结;如果检查不通过,则退出本次的合约冻结,并向jcee客户端返回错误信息;

(4)当需要解冻合约时:jcee客户端接收用户输入的解冻unfrozen请求,解析出所要解冻合约的唯一标识contractaddress、连同合约的新状态位向jcee服务器端发送解冻请求;jcee服务器端通过监听指定端口收到jcee客户端发送过来的合约解冻请求,首先对合约进行安全性检查,如果检查通过,则更新合约的状态位为unfrozen状态,实现合约的解冻;如果检查不通过,则退出本次的合约解冻,并向jcee客户端返回错误信息;

进一步地,所述的步骤一中,jcee服务器统一管理所有智能合约,每一次的合约部署都只是一次向jcee服务器的调用,而不用为每一个智能合约单起一个线程去维护,方便了整个平台的合约管理,也减少了系统资源的浪费。

进一步地,所述的步骤一中,jcee服务器通过远程过程调用协议rpc与jcee客户端进行通信,所述的合约的安全性检查包括检查合约字节码是否合法和检查合约信息中是否包含合约地址。

本发明的有益效果:本发明应用于区块链平台上,提供了一套全新的智能合约生命周期的管理,实现了合约的部署、调用、升级、冻结、解冻,为区块链平台的合约管理提供了便捷。同时,在合约生命周期的每一个阶段,本产品都会进行安全性检查,提升了合约生命周期的安全性。

附图说明

图1是部署合约状态图;

图2是升级合约状态图。

具体实施方式

下面根据附图和具体实施例详细描述本发明,本发明的目的和效果将变得更加明显。

本发明是一种基于java的智能合约生命周期管理方法,包括如下步骤:

步骤一:合约部署;

基于java虚拟机的智能合约执行引擎jcee的客户端接收用户输入的压缩过的类文件,随后解压类文件并持久化后,生成合约的唯一标识合约地址contractaddress,连同类文件的地址向jcee服务器端发送部署请求;jcee服务器端通过监听指定端口收到jcee客户端发送过来的合约部署请求,首先对合约进行安全性检查,如果检查通过,则将合约持久化到元数据库中,随后即可将类文件装载到内存中进行合约的部署;如果检查不通过,直接退出本次的合约部署,并向jcee客户端返回错误信息;

步骤二:根据用户需求对合约执行对应的操作:

(1)当需要调用合约时:jcee客户端接收用户输入的调用invoke请求,解析出调用合约的唯一标识contractaddress、合约调用的方法名与参数,向jcee服务器端发送合约调用invoke请求;jcee服务器端通过监听指定端口收到jcee客户端发送过来的合约调用请求,首先对合约进行安全性检查,如果检查通过,则调用指定合约地址的指定方法并同步账本信息到jcee客户端,实现合约的调用,如果检查不通过,则终止本次的合约调用,并向jcee客户端返回错误信息;

(2)当需要升级合约时:jcee客户端接收用户输入的升级update请求,解析出旧合约的唯一标识contractaddress、连同新合约的类文件地址向jcee服务器端发送update请求;jcee服务器端通过监听指定端口收到jcee客户端发送过来的合约升级请求,首先对合约进行安全性检查,如果检查不通过,则直接退出本次的合约升级,并返回错误信息到jcee客户端;如果检查通过,则进行旧合约的查询,如果能够查询到旧合约,则先摧毁旧合约,然后持久化新合约并装载新合约的类文件到内存中完成合约的升级,如果不能查到旧合约,则直接进行新合约的持久化与装载,完成合约的升级;

(3)当需要冻结合约时:jcee客户端接收用户输入的冻结frozen请求,解析出所要冻结合约的唯一标识contractaddress、连同合约的新状态位向jcee服务器端发送冻结请求;jcee服务器端通过监听指定端口收到jcee客户端发送过来的合约冻结请求,首先对合约进行安全性检查,如果检查通过,则更新合约的状态位为frozen状态,实现合约的冻结;如果检查不通过,则退出本次的合约冻结,并向jcee客户端返回错误信息;

(4)当需要解冻合约时:jcee客户端接收用户输入的解冻unfrozen请求,解析出所要解冻合约的唯一标识contractaddress、连同合约的新状态位向jcee服务器端发送解冻请求;jcee服务器端通过监听指定端口收到jcee客户端发送过来的合约解冻请求,首先对合约进行安全性检查,如果检查通过,则更新合约的状态位为unfrozen状态,实现合约的解冻;如果检查不通过,则退出本次的合约解冻,并向jcee客户端返回错误信息。

所述的步骤一中,jcee服务器统一管理所有智能合约,每一次的合约部署都只是一次向jcee服务器的调用,而不用为每一个智能合约单起一个线程去维护。

所述的步骤一中,用户端指定的类文件的同时还需要提供该合约的一些属性信息,方便jcee客户端定位类文件的位置,jcee客户端通过区块链平台生成唯一的合约地址后,才能够向jcee服务器发送部署合约的请求,该请求中需要带上合约地址与合约的相关信息,如合约类文件的位置等,jcee服务器可以与jcee客户端可设置同一台主机上,也可以设置在不同主机上,jcee服务器端通过远程过程调用协议rpc与jcee客户端进行通信,获取到了jcee客户端的请求后,会进行合约安全性的检查,检查合约字节码是否合法等,检查通过后,还会进行合约完备性的检查,具体包括检查合约信息中是否包含了合约地址等,完成了两项检查后,才会进行合约的持久化,将新合约存储到元数据库中,完成后才会真正的进行合约的部署,即将合约装载到内存中。

所述的步骤二中,合约的调用是用户使用智能合约最直观的感受,用户通过输入合约的方法名、参数,并指定所要调用合约的地址后,向jcee客户端发送json-rpc请求,jcee客户端仅仅将相关参数封装后就可以转发给jcee服务器端,jcee服务器同样会进行安全性与完备性的检查,检查通过后才会进入相应的执行流程。

所述的步骤二中,合约的升级需要用户提供新的合约类文件以及旧的合约地址,旧合约地址用于定位摧毁原先的合约,并在该地址上新建一条新的合约,因此合约升级后,合约地址是不变的。

所述的步骤二中,合约的冻结只是对合约状态位的进行更改,冻结后的合约不能再进行调用、更新等操作。

所述的步骤二中,合约的解冻需要提供已冻结合约的合约地址,同样的,合约解冻也只是对合约状态位的进行更改,解冻后的合约可以继续进行调用、更新等操作。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1