CN110222051B - 以太坊区块链的智能合约压缩方法 - Google Patents
以太坊区块链的智能合约压缩方法 Download PDFInfo
- Publication number
- CN110222051B CN110222051B CN201910408520.9A CN201910408520A CN110222051B CN 110222051 B CN110222051 B CN 110222051B CN 201910408520 A CN201910408520 A CN 201910408520A CN 110222051 B CN110222051 B CN 110222051B
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- contract
- operation code
- size
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Economics (AREA)
- Software Systems (AREA)
- Development Economics (AREA)
- Computing Systems (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种以太坊区块链的智能合约压缩方法,属于区块链领域技术。本发明的方法具体为:按照既有的delegatecall伪操作码的定义,在以太坊虚拟机中加入新的伪操作码,该伪操作码只在本地使用,所述新的伪操作码能够寻找新智能合约是否与之前执行过的智能合约的某些操作相同,若是,则使用指向执行过的智能合约的操作替换新智能合约中的操作,对智能合约进行重用。本发明不仅节省了合约所占空间,还节省了压缩时间。
Description
技术领域
本发明属于区块链技术,具体为一种以太坊区块链的智能合约压缩方法。
背景技术
以太坊是一种基于区块链的分散式通用计算机。在以太坊平台上运行的程序通常被称为智能合约。智能合约的可重用性是以太坊智能合约系统的最初愿景之一。智能合约的目标是模块化,即将智能合约作为更大的智能合约的模块来运行,并不断重复此过程,直到达到用户的操作目的为止。
尽管官方提供了进行合约交互的伪操作码,例如call,delegatecall以及callcode,但是这些方法都非常不安全、低级,所以不推荐使用。
发明内容
本发明的目的在于提出了一种以太坊区块链的智能合约压缩方法。
实现本发明的技术解决方案为:一种以太坊区块链的智能合约压缩方法,具体步骤为:
步骤1、按照既有的delegatecall伪操作码的定义:对deleagtecall操作码分别传入参数:gas(函数执行所需gas)、_impl(调用智能合约的地址)、ptr(内存指针,即指向数据开始的地方)、calldatasize(传入数据的大小)、0(调用智能合约的返回值)、0(返回值的大小),在以太坊虚拟机中加入新的伪操作码,该伪操作码只在本地使用,所述新的伪操作码能够寻找新智能合约是否与之前执行过的智能合约的某些操作相同,若是,则使用指向执行过的智能合约的操作替换新智能合约中的操作;
步骤2、对任意给定的以太坊区块Bh中的智能合约进行压缩,具体为:所述太坊区块Bh中包含智能合约{Ch 0,Ch 1,…,ch n},对太坊区块Bh中的智能合约Ch 0进行压缩:检索以太坊区块Bh之前的w个区块{Bh-w,···,bh},找出最长公共合约序列LCS(a,Bh),其中a、Bh代表不同的区块,根据最长公共合约序列建立矩阵Dn,矩阵中元素的值Dij代表第i个区块与第j个区块的最长公共合约序列,Dn的形式如下:
步骤3、根据生成的矩阵Dn,为新智能合约选择最长公共合约序列,通过步骤1定义的伪操作码,执行已部署的智能合约,完成智能合约压缩。
本发明与现有技术相比,其显著优点为:
1)本发明通过智能合约的重用,减少了以太坊区块链的大小;
2)通过本发明,在以太坊区块规模达到一定程度后,智能合约运行效率明显提升,当检索窗口w为256,在一百万区块规模的以太坊中,压缩效率比zlib方式提升90%以上;
3)通过本发明,常用操作的执行效率有明显提升。
下面结合附图对本发明做进一步详细的描述。
附图说明
图1是本发明引入的伪操作码示意图。
具体实施方式
一种以太坊区块链的智能合约压缩方法,具体步骤为:
步骤一、按照既有的delegatecall伪操作码的定义:对deleagtecall操作码分别传入参数:gas(函数执行所需gas)、_impl(调用智能合约的地址)、ptr(内存指针,即指向数据开始的地方)、calldatasize(传入数据的大小)、0(调用智能合约的返回值)、0(返回值的大小),在以太坊虚拟机中加入新的操作码,该操作码只在本地使用。该伪操作码能够寻找本次操作是否与之前执行过的智能合约的操作相同,若是,则使用指向执行过的智能合约的操作替换新智能合约中的操作。通过这种方式减少智能合约的大小。
步骤二、对任意给定的以太坊区块Bh,Bh中包含了合约{Ch 0,Ch 1,…,ch n}。为了压缩这些合约,对在Bh之前的所有区块进行检索,找出最长公共合约序列LCS(a,Bh),其中a、Bh代表不同的区块。
根据最长公共合约序列建立矩阵Dn,矩阵中元素的值Dij代表第i个区块与第j个区块的最长公共合约序列,Dn的形式如下:
步骤三、根据生成的矩阵Dn,为新合约选择最长公共子序列,通过步骤1定义的伪操作码,执行已部署的合约,以替换其代码。本发明在合约交互的过程中调用了步骤一中定义的伪操作码,在宏观上减少了智能合约的大小,也提升了时间效率。
如图1所示,进一步的实施例中,步骤1中新的伪操作码大小为7字节,从低地址到高地址各字段大小为1字节、1字节、1字节、2字节、2字节。
进一步的实施例中,从低地址到高地址各字段意义分别为:第一个字节使用虚拟机操作码未使用的值作为字节码标识符;使用1字节大小的距离字段标识块与块之间的距离;使用1字节大小的事务索引字段标识块内事务的索引;使用2字节大小的开始字段标识合约开始的地址;使用2字节大小的大小字段标识合约的大小。
Claims (4)
1.一种以太坊区块链的智能合约压缩方法,其特征在于,具体步骤为:
步骤1、按照delegatecall伪操作码的定义,在以太坊虚拟机中加入新的伪操作码,新的伪操作码只在本地使用,所述新的伪操作码能够寻找新智能合约是否与之前执行过的智能合约的某些操作相同,若是,则使用指向执行过的智能合约的操作替换新智能合约中的操作,delegatecall伪操作码的定义:对deleagtecall操作码分别传入参数:gas:函数执行所需gas;_impl:调用智能合约的地址;ptr:内存指针,即指向数据开始的地方;calldatasize:传入数据的大小;0:调用智能合约的返回值,0:返回值的大小;
步骤2、检索以太坊区块Bh之前的w个区块{bh-w,···,bh},找出最长公共合约序列LCS(a,bh),其中a、Bh代表不同的区块,以太坊区块Bh包含了智能合约{ch 0,ch 1,…,ch n},根据最长公共合约序列建立矩阵Dn,矩阵中元素的值Dij代表第i个区块与第j个区块的最长公共合约序列;
步骤3、根据生成的矩阵Dn为新智能合约选择最长公共合约序列,通过步骤1定义的新的伪操作码,执行已部署的智能合约,完成智能合约压缩。
2.根据权利要求1所述的以太坊区块链的智能合约压缩方法,其特征在于,步骤1中新的伪操作码大小为7字节,从低地址到高地址各字段大小分别为1字节、1字节、1字节、2字节、2字节。
3.根据权利要求2所述的以太坊区块链的智能合约压缩方法,其特征在于,从低地址到高地址各字段意义分别为:第一个字节使用虚拟机操作码未使用的值作为字节码标识符;使用1字节大小的距离字段标识块与块之间的距离;使用1字节大小的事务索引字段标识块内事务的索引;使用2字节大小的开始字段标识合约开始的地址;使用2字节大小的大小字段标识合约的大小。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910408520.9A CN110222051B (zh) | 2019-05-16 | 2019-05-16 | 以太坊区块链的智能合约压缩方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910408520.9A CN110222051B (zh) | 2019-05-16 | 2019-05-16 | 以太坊区块链的智能合约压缩方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110222051A CN110222051A (zh) | 2019-09-10 |
CN110222051B true CN110222051B (zh) | 2022-09-13 |
Family
ID=67821257
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910408520.9A Active CN110222051B (zh) | 2019-05-16 | 2019-05-16 | 以太坊区块链的智能合约压缩方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110222051B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110809042B (zh) * | 2019-10-31 | 2022-07-12 | 杭州云象网络技术有限公司 | 一种基于de bruijn序列生成技术的智能合约分片存储方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109033141A (zh) * | 2018-06-08 | 2018-12-18 | 苏州大学 | 一种基于轨迹字典的时空轨迹压缩方法 |
CN109508334A (zh) * | 2018-11-23 | 2019-03-22 | 中科驭数(北京)科技有限公司 | 针对区块链数据库的数据压缩方法、访问方法和系统 |
-
2019
- 2019-05-16 CN CN201910408520.9A patent/CN110222051B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109033141A (zh) * | 2018-06-08 | 2018-12-18 | 苏州大学 | 一种基于轨迹字典的时空轨迹压缩方法 |
CN109508334A (zh) * | 2018-11-23 | 2019-03-22 | 中科驭数(北京)科技有限公司 | 针对区块链数据库的数据压缩方法、访问方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110222051A (zh) | 2019-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101290628B (zh) | 一种数据文件更新存储方法 | |
CN101467129A (zh) | 能够空中下载的移动终端的程序升级系统和方法 | |
CN110532347B (zh) | 一种日志数据处理方法、装置、设备和存储介质 | |
CN108279922A (zh) | 差分文件生成方法、基于该差分文件的升级方法及系统 | |
CN104750872A (zh) | 一种业务对象的查询方法及装置 | |
CN104881454A (zh) | 参数的更新方法及系统 | |
CN110222051B (zh) | 以太坊区块链的智能合约压缩方法 | |
CN105487668A (zh) | 终端设备的展示方法和装置 | |
CN112463784A (zh) | 数据去重方法、装置、设备及计算机可读存储介质 | |
CN109408682A (zh) | 一种正则表达式匹配的方法、系统及设备 | |
CN104361040A (zh) | 一种定制查询的方法及装置 | |
CN106688186A (zh) | 在基于lz的压缩算法中在多个经压缩块之间共享初始词典和霍夫曼树 | |
CN116340470B (zh) | 一种基于aigc的关键词关联检索系统 | |
CN105302827A (zh) | 一种事件的搜索方法和设备 | |
CN110266834B (zh) | 基于互联网协议地址的地区查找方法及装置 | |
CN111913704A (zh) | 一种基于VSCode快速开发GSP7脚本的方法及插件工具 | |
CN112711649A (zh) | 一种数据库多字段匹配方法、装置、设备及存储介质 | |
CN108829872B (zh) | 无损压缩文件的快速处理方法、设备、系统及存储介质 | |
CN105701162B (zh) | 一种智能终端的用户数据分区的管理方法及智能终端 | |
CN113064898A (zh) | 一种基于链上合约微型索引的检索方法、装置和电子设备 | |
CN105243123A (zh) | 地图离线文件的差异文件的生成、地图离线文件的更新方法及装置 | |
CN110750266A (zh) | 程序编译方法、装置、计算机设备及存储介质 | |
CN114047876B (zh) | 基于列式存储的数据排序方法、设备及存储介质 | |
CN114625935A (zh) | 场景化搜索的方法及系统 | |
CN116909688B (zh) | 一种数据库调用方法、装置、存储介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB03 | Change of inventor or designer information |
Inventor after: Li Qianmu Inventor after: Wang Shihao Inventor after: Qiu Tian Inventor after: Cai Junhui Inventor before: Wang Shihao Inventor before: Li Qianmu Inventor before: Qiu Tian Inventor before: Cai Junhui |
|
CB03 | Change of inventor or designer information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |