[发明专利]一种减少区块链智能合约代码存储体积的方法在审
申请号: | 201910403307.9 | 申请日: | 2019-05-15 |
公开(公告)号: | CN110147202A | 公开(公告)日: | 2019-08-20 |
发明(设计)人: | 黄步添;闫凤喜;刘振广;陈建海;石太彬;王从礼 | 申请(专利权)人: | 杭州云象网络技术有限公司 |
主分类号: | G06F3/06 | 分类号: | G06F3/06;G06F9/455 |
代理公司: | 杭州天勤知识产权代理有限公司 33224 | 代理人: | 王琛 |
地址: | 311121 浙江省杭州市*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 区块 代码存储 智能 底层数据库 用户发起 解压缩 结果返回用户 创建请求 存储负载 代码执行 地址查询 请求执行 压缩存储 虚拟机 减小 解压 还原 压缩 网络 | ||
1.一种减少区块链智能合约代码存储体积的方法,包括如下步骤:
(1)用户发起智能合约创建请求,输入智能合约代码;
(2)对输入的智能合约代码进行压缩并生成最终的合约代码;
(3)生成合约地址,将最终的合约代码根据合约地址存储到区块链底层数据库中;
(4)用户发起合约执行请求时,输入合约地址和请求的参数,区块链虚拟机通过合约地址查询区块链底层数据库,获取到所请求执行的合约代码;
(5)对请求获取到的合约代码进行解压缩;
(6)基于解压缩后的代码,执行合约任务,并将执行结果返回给用户。
2.根据权利要求1所述减少区块链智能合约代码存储体积的方法,其特征在于:所述步骤(1)的具体实现方式为:在区块链网络中,智能合约是自动执行的合同,用户将协议条款直接写入代码行,生成智能合约代码,发起智能合约创建请求,然后将该智能合约代码写入区块链。
3.根据权利要求1所述减少区块链智能合约代码存储体积的方法,其特征在于:所述步骤(1)中若输入的智能合约代码体积超过预设的阈值s,则进入步骤(2)进行代码压缩;若输入的智能合约代码体积未超过预设的阈值s,则直接将其作为最终的合约代码并执行步骤(3);所述阈值s大小根据实际区块链数据库存储量而定。
4.根据权利要求1所述减少区块链智能合约代码存储体积的方法,其特征在于:所述智能合约代码是字节码的形式,其具体表现为一个任意长度的字节数组。
5.根据权利要求1所述减少区块链智能合约代码存储体积的方法,其特征在于:所述步骤(2)的具体实现过程为:
2.1选择一种压缩方案对输入的智能合约代码进行字节压缩,所述压缩方案包括zlib、gzip等压缩算法;
2.2在压缩后的合约代码前面增加若干特殊字节的代码头,作为代码压缩的识别标识,用于对智能合约代码是否进行过压缩进行区分,以判断在后续执行时是否需要进行解压缩处理,加入代码头后的合约代码即为最终的合约代码。
6.根据权利要求5所述减少区块链智能合约代码存储体积的方法,其特征在于:所述代码压缩的识别标识为预设在区块链虚拟机中固定的若干字节,在压缩合约代码过程中调取其中的若干字节添加至所压缩代码的首字节前面,作为压缩识别标识。
7.根据权利要求1所述减少区块链智能合约代码存储体积的方法,其特征在于:所述步骤(2)中若压缩后的合约代码体积大于压缩前原始的合约代码体积,则放弃此次合约代码压缩,将原始的合约代码直接作为最终的合约代码并执行步骤(3);若压缩后的合约代码体积小于压缩前原始的合约代码体积,则保持压缩后的合约代码作为最终的合约代码并执行步骤(3)。
8.根据权利要求5所述减少区块链智能合约代码存储体积的方法,其特征在于:所述步骤(5)的具体实现过程为:
5.1判断所获取到的合约代码是否有包含了压缩识别标识的代码头;
5.2若包含压缩识别标识,说明合约代码是经过压缩后的代码,从代码中去除代码头,使用解压方案进行解压缩,还原合约代码,并进入步骤(6);
5.3若不包含压缩识别标识,说明合约代码为原始的合约代码,没有经过压缩,则无需解压,直接进入步骤(6)。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州云象网络技术有限公司,未经杭州云象网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910403307.9/1.html,转载请声明来源钻瓜专利网。