一种减少区块链智能合约代码存储体积的方法技术

技术编号:21913620 阅读:45 留言:0更新日期:2019-08-21 12:19
本发明专利技术公开了一种减少区块链智能合约代码存储体积的方法,包括:(1)用户发起智能合约创建请求,输入智能合约代码;(2)对合约代码进行压缩并生成最终合约代码;(3)生成合约地址,根据合约地址将最终合约代码存储到区块链底层数据库中;(4)用户发起合约执行请求时,输入合约地址和请求的参数,区块链虚拟机通过合约地址查询区块链底层数据库,获取到所请求执行的合约代码;(5)对合约代码进行解压缩;(6)基于解压缩后的代码执行合约任务,并将执行结果返回用户。本发明专利技术方法将智能合约代码进行压缩存储,并在执行合约时,进行解压还原代码,减小智能合约代码存储体积,以此减少代码存储的手续费,减少整个区块链网络的存储负载。

A Method to Reduce the Storage Volume of Block Chain Intelligent Contract Code

【技术实现步骤摘要】
一种减少区块链智能合约代码存储体积的方法
本专利技术属于智能合约与区块链数据存储
,具体涉及一种减少区块链智能合约代码存储体积的方法。
技术介绍
区块链技术是一种分布式账本技术,可以将交易数据存储在不可篡改的区块中,并将区块按照时间顺序串连形成区块链。狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本;广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。智能合约是自动执行的合同,将协议条款直接写入代码行,然后将该代码以及其中包含的协议存在于一个区块链网络中。用一句话来说,智能合约就是代码即法律,当我们约定一个智能合约之后,即使是系统的运营方也是无法轻易改动它的。智能合约最早是由NickSzabo在1994年提出的;1998年,他专利技术了一种名为“比特黄金”的虚拟货币——比比特币的专利技术早了整整10年。重要的是,智能合约允许在不需要中央当局、法律制度或任何其他外部机制的情况下为可信的交易和协议提供便利;因此,这些交易是可追踪的、透明的和不可逆转的。不可否认,智能合约将产生深远的影响,更有趣的是如何实现智能合约;例如,我们很可能会进入这样一个世界:智能合约是纸质和数字内容的结合体,通过区块链对合同进行验证和执行,并通过硬拷贝加以证实,但仍然以数字方式签署。基于区块链网络,存在硬盘驱动器,其上存储着所有的帐户、智能合约的代码以及所有这些智能合约存储的信息。在区块链上的存储数据非常昂贵,按字节收取手续费;数据量过大,就意味着高昂的手续费。另外,区块链网络在不断发展的过程中,存储量会越来越大,势必会带来越来越高的系统负载,拖慢区块链网络同步数据的速度,同时对网络参与者的机器配置提出越来越高的要求,到了一定程度,整个网络将无法承载这些数据存储,只有飞跃式的硬件技术发展,才能从根本上解决这个问题。所以,通过技术方案,尽量减少数据的存储量,既可以节省成本,也可以延缓整体存储量到达瓶颈的时间,给硬件的发展提供时间。智能合约代码,是以原始代码编译后的字节码的形式进行存储,其体积一般较大,是区块链存储中的重要部分;所以,减少智能合约代码的体积是十分必要的。
技术实现思路
鉴于上述,本专利技术提供了一种减少区块链智能合约代码存储体积的方法,该方法将智能合约代码进行压缩存储,并在执行合约时,进行解压还原代码,减小智能合约代码存储体积,以此减少代码存储的手续费,减少整个区块链网络的存储负载。一种减少区块链智能合约代码存储体积的方法,包括如下步骤:(1)用户发起智能合约创建请求,输入智能合约代码;(2)对输入的智能合约代码进行压缩并生成最终的合约代码;(3)生成合约地址,将最终的合约代码根据合约地址存储到区块链底层数据库中;(4)用户发起合约执行请求时,输入合约地址和请求的参数,区块链虚拟机通过合约地址查询区块链底层数据库,获取到所请求执行的合约代码;(5)对请求获取到的合约代码进行解压缩;(6)基于解压缩后的代码,执行合约任务,并将执行结果返回给用户。进一步地,所述步骤(1)的具体实现方式为:在区块链网络中,智能合约是自动执行的合同,用户将协议条款直接写入代码行,生成智能合约代码,发起智能合约创建请求,然后将该智能合约代码写入区块链。优选地,所述步骤(1)中若输入的智能合约代码体积超过预设的阈值s,则进入步骤(2)进行代码压缩;若输入的智能合约代码体积未超过预设的阈值s,则直接将其作为最终的合约代码并执行步骤(3);所述阈值s大小根据实际区块链数据库存储量而定。选择性地进行合约代码压缩可有效的将大体积代码进行压缩,相对应的小体积代码可直接存储,从而提高运行效率。所述智能合约代码是字节码的形式,其具体表现为一个任意长度的字节数组。进一步地,所述步骤(2)的具体实现过程为:2.1选择一种压缩方案对输入的智能合约代码进行字节压缩,所述压缩方案包括zlib、gzip等压缩算法;2.2在压缩后的合约代码前面增加若干特殊字节的代码头,作为代码压缩的识别标识,用于对智能合约代码是否进行过压缩进行区分,以判断在后续执行时是否需要进行解压缩处理,加入代码头后的合约代码即为最终的合约代码。进一步地,所述代码压缩的识别标识为预设在区块链虚拟机中固定的若干字节,在压缩合约代码过程中调取其中的若干字节添加至所压缩代码的首字节前面,作为压缩识别标识。优选地,所述步骤(2)中若压缩后的合约代码体积大于压缩前原始的合约代码体积,则放弃此次合约代码压缩,将原始的合约代码直接作为最终的合约代码并执行步骤(3);若压缩后的合约代码体积小于压缩前原始的合约代码体积,则保持压缩后的合约代码作为最终的合约代码并执行步骤(3)。由此,避免若小体积合约代码超过所设置的合约体积阈值,进行利用压缩工具压缩后代码体积反而增大,失去代码压缩的意义,此时应保持原始合约代码体积进行存储,达到最有效的节约存储空间。虚拟机是通过软件模拟的具有完整硬件系统功能的、运行在一个完全环境中的完整计算机系统;区块链虚拟机则是基于区块链有共识机制,所以要求所有人的计算结果是一样的,但是传统的虚拟机不支持这样,可能会因为底层硬件的不同输出不同的结果。进一步地,所述步骤(5)的具体实现过程为:5.1判断所获取到的合约代码是否有包含了压缩识别标识的代码头;5.2若包含压缩识别标识,说明合约代码是经过压缩后的代码,从代码中去除代码头,使用解压方案进行解压缩,还原合约代码,并进入步骤(6);5.3若不包含压缩识别标识,说明合约代码为原始的合约代码,没有经过压缩,则无需解压,直接进入步骤(6)。基于上述技术方案,本专利技术方法有效地较少了智能合约代码的体积,减少数据的存储量,既可以节省成本,又可以减少整个区块链网络的存储负载。附图说明图1为本专利技术方法的流程示意图。图2为本专利技术智能合约代码压缩流程的示意图。图3为本专利技术智能合约代码解压缩流程的示意图。具体实施方式为了更为具体地描述本专利技术,下面结合附图及具体实施方式对本专利技术的技术方案进行详细说明。如图1所示,本专利技术减少区块链智能合约代码存储体积的方法,包括如下步骤:S1:在区块链网络中,智能合约是自动执行的合同,用户将协议条款直接写入代码行,生成智能合约代码,发起智能合约创建请求,然后将该合约代码写入区块链。本专利技术方法还包括设置最小合约代码体积阈值s,其阈值大小根据实际区块链数据库存储量而定,当输入的智能合约代码体积超过阈值s时,则进入步骤S2进行合约代码压缩;若输入的合约代码体积未超过阈值,则直接作为最终合约代码进入步骤S3。选择性地进行合约代码压缩可有效的将大体积代码进行压缩,相对应的小体积代码可直接存储,从而提高运行效率。智能合约代码是字节码的形式,其具体表现为一个任意长度的字节数组。本实施例在用户界面层,用户将需执行协议条款直接写入代码行,生成智能合约代码,合约代码是以字节的形式表示:不同的合约执行协议形成不同的合约代码,实际操作中合约代码往往比较复杂,为表达清晰,本实施例中合约代码较为简单,用户通过应用本文档来自技高网
...

【技术保护点】
1.一种减少区块链智能合约代码存储体积的方法,包括如下步骤:(1)用户发起智能合约创建请求,输入智能合约代码;(2)对输入的智能合约代码进行压缩并生成最终的合约代码;(3)生成合约地址,将最终的合约代码根据合约地址存储到区块链底层数据库中;(4)用户发起合约执行请求时,输入合约地址和请求的参数,区块链虚拟机通过合约地址查询区块链底层数据库,获取到所请求执行的合约代码;(5)对请求获取到的合约代码进行解压缩;(6)基于解压缩后的代码,执行合约任务,并将执行结果返回给用户。

【技术特征摘要】
1.一种减少区块链智能合约代码存储体积的方法,包括如下步骤:(1)用户发起智能合约创建请求,输入智能合约代码;(2)对输入的智能合约代码进行压缩并生成最终的合约代码;(3)生成合约地址,将最终的合约代码根据合约地址存储到区块链底层数据库中;(4)用户发起合约执行请求时,输入合约地址和请求的参数,区块链虚拟机通过合约地址查询区块链底层数据库,获取到所请求执行的合约代码;(5)对请求获取到的合约代码进行解压缩;(6)基于解压缩后的代码,执行合约任务,并将执行结果返回给用户。2.根据权利要求1所述减少区块链智能合约代码存储体积的方法,其特征在于:所述步骤(1)的具体实现方式为:在区块链网络中,智能合约是自动执行的合同,用户将协议条款直接写入代码行,生成智能合约代码,发起智能合约创建请求,然后将该智能合约代码写入区块链。3.根据权利要求1所述减少区块链智能合约代码存储体积的方法,其特征在于:所述步骤(1)中若输入的智能合约代码体积超过预设的阈值s,则进入步骤(2)进行代码压缩;若输入的智能合约代码体积未超过预设的阈值s,则直接将其作为最终的合约代码并执行步骤(3);所述阈值s大小根据实际区块链数据库存储量而定。4.根据权利要求1所述减少区块链智能合约代码存储体积的方法,其特征在于:所述智能合约代码是字节码的形式,其具体表现为一个任意长度的字节数组。5.根据权利要求1所述减少区块链智能合约代码存储体积的方法,其特征在于:所述步骤(2)的具体实现过程为...

【专利技术属性】
技术研发人员:黄步添闫凤喜刘振广陈建海石太彬王从礼
申请(专利权)人:杭州云象网络技术有限公司
类型:发明
国别省市:浙江,33

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

1