一种基于JAVA的智能合约生命周期的管理方法技术

技术编号:17006968 阅读:25 留言:0更新日期:2018-01-11 03:30
本发明专利技术公开了一种基于JAVA的智能合约生命周期的管理方法,该方法通过实现一个JCEE服务器来处理客户端的部署、调用、升级、冻结、解冻合约的请求,对每一个合约生成一个唯一的合约地址并实例化一个合约对象,该对象用于处理发送到对应合约地址上的所有请求,JCEE服务器会对每次的合约请求进行安全性检查,检查其字节码的合法性,检查通过后才会进行合约的请求处理,并返回结果给客户端。由于本产品是基于JAVA语言开发的,因此用户可以将其部署到任意区块链平台中进行合约生命周期的管理,提升了区块链平台的可扩展性。

【技术实现步骤摘要】
一种基于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客户端;如果检查通过,则进行旧合约的查询,如果能本文档来自技高网...
一种基于JAVA的智能合约生命周期的管理方法

【技术保护点】
一种基于JAVA的智能合约生命周期的管理方法,其特征在于,包括如下步骤:步骤一:合约部署:基于JAVA虚拟机的智能合约执行引擎JCEE的客户端接收用户输入的压缩过的类文件,随后解压类文件并持久化后,生成合约的唯一标识合约地址ContractAddress,连同类文件的地址向JCEE服务器端发送部署请求;JCEE服务器端通过监听指定端口收到JCEE客户端发送过来的合约部署请求,首先对合约进行安全性检查,如果检查通过,则将合约持久化到元数据库中,随后即可将类文件装载到内存中进行合约的部署;如果检查不通过,直接退出本次的合约部署,并向JCEE客户端返回错误信息。步骤二:根据用户需求对合约执行对应的操作:(1)当需要调用合约时:JCEE客户端接收用户输入的调用invoke请求,解析出调用合约的唯一标识ContractAddress、合约调用的方法名与参数,向JCEE服务器端发送合约调用invoke请求;JCEE服务器端通过监听指定端口收到JCEE客户端发送过来的合约invoke请求,首先对合约进行安全性检查,如果检查通过,则调用指定合约地址的指定方法并同步账本信息到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客户端返回错误信息。...

【技术特征摘要】
1.一种基于JAVA的智能合约生命周期的管理方法,其特征在于,包括如下步骤:步骤一:合约部署:基于JAVA虚拟机的智能合约执行引擎JCEE的客户端接收用户输入的压缩过的类文件,随后解压类文件并持久化后,生成合约的唯一标识合约地址ContractAddress,连同类文件的地址向JCEE服务器端发送部署请求;JCEE服务器端通过监听指定端口收到JCEE客户端发送过来的合约部署请求,首先对合约进行安全性检查,如果检查通过,则将合约持久化到元数据库中,随后即可将类文件装载到内存中进行合约的部署;如果检查不通过,直接退出本次的合约部署,并向JCEE客户端返回错误信息。步骤二:根据用户需求对合约执行对应的操作:(1)当需要调用合约时:JCEE客户端接收用户输入的调用invoke请求,解析出调用合约的唯一标识ContractAddress、合约调用的方法名与参数,向JCEE服务器端发送合约调用invoke请求;JCEE服务器端通过监听指定端口收到JCEE客户端发送过来的合约invoke请求,首先对合约进行安全性检查,如果检查通过,则调用指定合约地址的指定方法并同步账本信息到JCEE客户端,实现合约的调用,如果检查不通过,则终止本次的合约调用,并向JCEE客户端返回错误信息;(2)当需要升级合约时:JCEE客户端接收用户输入的升级update请求,解析出旧合约的唯一标识ContractAddress、连同新合约的类文件地址向JCEE服务器端发送update请求;JCEE服务器端通过监听指定端口收到JCEE客户端发送过来的合约升级请求,首先对合约进行安全性检查,如果检查不通过,则直接退出本次的合约升级,并返回错误信息到JCEE客户端;如果检查通过,则进行旧合约的...

【专利技术属性】
技术研发人员:李伟梁秀波邱炜伟李启雷尹可挺
申请(专利权)人:杭州趣链科技有限公司
类型:发明
国别省市:浙江,33

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

1