CN106709704B - 一种基于许可链的智能合约升级方法 - Google Patents
一种基于许可链的智能合约升级方法 Download PDFInfo
- Publication number
- CN106709704B CN106709704B CN201611048985.0A CN201611048985A CN106709704B CN 106709704 B CN106709704 B CN 106709704B CN 201611048985 A CN201611048985 A CN 201611048985A CN 106709704 B CN106709704 B CN 106709704B
- Authority
- CN
- China
- Prior art keywords
- contract
- attribute
- data
- binary
- user
- 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
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
- G06Q20/065—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Engineering & Computer Science (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于许可链的智能合约升级方法,由于智能合约部署后会出现Bug或者存在日常升级的需求,传统智能合约技术本质上不能升级,本方法通过打破智能合约地址、代码、存储单元三者不可变更的结构,并对存储单元按照属性名称进行索引和序列化,使合约代码能够直接整体更新,同时可以复用之前的合约地址和合约存储单元,来提供一套适用于许可链的智能合约架构,以提供简单的编写机制和升级机制。
Description
技术领域
本发明涉及许可链上的智能合约开发和数据存储架构,特别涉及其中的升级方法。
背景技术
区块链(Block Chain)按照访问和管理权限可以分为公有链和许可链。公有链是指没有准入机制,全世界任何人都可以根据公开协议,生成合法账户,参与读取,发送交易,交易确认,甚至参与共识的区块链。
许可链(Permissioned Chain)是指其共识过程受到预选节点控制的区块链,由若干个机构组成的共同体,每个机构都运行着一个节点,而且为了使每个区块生效需要获得其中多数机构的确认。区块链上的用户身份也经过审核,大多为实名制,与现实世界的身份关系对应。
从用户角度来讲,智能合约通常被认为是一个自动担保账户,例如,当特定的条件满足时,程序就会释放和转移资金。从技术角度来讲,智能合约被认为是网络服务器,只是这些服务器并不是使用IP地址架设在互联网上,而是架设在区块链上。从而可以在其上面运行特定的合约程序。但是与网络服务器不同的是,所有人都可以看到智能合约,因为这些智能合约的代码和状态都在区块链上。
然而,问题并没有解决,只不过是出现在了新的层级:例如,合约可能有漏洞,造成严重后果,例如著名的TheDAO事件等。在现实生活中,这些事情可以通过中心化的系统来撤消。但是如果是去中心化的系统,则只能自己承担风险。所以智能合约的升级问题是影响系统可用性的关键。
现有技术的技术方案:目前公有链的智能合约技术升级方案是,合约部署后生成一次性地址,之后大多供任意用户使用,由于安全限制且实现方便,代码一经部署后就不可再修改或替换。合约的代码和存储空间是相互隔离的,合约数据对于其他合约不可自由读写,需通过接口供外部调用,若想升级目前的方法是进行数据和逻辑的拆分,使用多个合约。
1:部署路由合约,生成永久路由合约地址。路由合约内部只有业务逻辑的接口,没有具体实现,但可以存储函数的映射表,外部调用自己的函数会被导流至实际的操作合约。同时定义了能够对路由合约进行修改的用户权限规则。
2:部署数据合约,生成永久数据合约地址。数据合约内部只有数据结构,并只提供基础读写接口。
3:部署操作合约,生成操作合约地址。操作合约内容有完整的业务逻辑,并一一将操作合约的实际函数内容挂载到路由合约中。
普通用户通过调用永久的路由合约地址,即完成了初始的业务和数据的对接,之后如果需要升级操作合约内部的具体实现逻辑,需要重新部署操作合约,再由有权限进行路由合约操作的用户,一一将操作合约的实际函数内容挂载到路由合约中,延续了数据合约积累的数据,同时升级和业务逻辑。
现有技术的缺点:目前许可链的智能合约技术沿用公有链的机制,并没有创新。目前这套智能合约升级框架受制于公有链智能合约的去中心化机制,合约一经部署不可修改,合约地址、合约代码、合约存储单元三者为永久绑定关系,无法进行后续更改,而且合约数据存储是根据编译时变量声明顺序生成Index的数字索引,进行数组式的存储序列化。只能通过上述方法,进行迂回升级,造成了合约结构的冗余和编写困难,同时无法对数据结构进行扩展。
发明内容
鉴于现有技术中的不足,提出了一种许可链智能合约升级方法。
本发明的目的是通过以下技术方案实现的:一种基于许可链的智能合约升级方法,包括如下步骤:
(1)针对现有技术下的传统区块链运行架构,重新设计现有技术下世界状态中的合约代码存储空间的数据结构CodeData为:map(合约地址Address=>合约代码Binary);重新设计现有技术下世界状态中的合约数据存储空间数据结构StorageData为:map(合约地址Address=>map(属性名称Attribute=>属性内容Value))。
(2)设定合约升级条件Conditions,并编译合约代码生成Binary,用户发起部署合约交易,传入Binary。
(3)区块链收到该Transaction后生成合约地址Address,并将Binary插入CodeData中。
(4)区块链根据合约属性结构,初始化map(Attribute=>Value),序列化后作为整体,根据Address插入StorageData。
(5)合约开始运行,接受用户调用交易,执行并更新用户数据,根据用户对Attribute的操作,不断更新其属性内容Value内容并序列化存储。
(6)达到步骤2所述的合约升级条件时,则用户进行代码修改,并重新编译合约代码生成New Binary,通过调用保留函数Update,并向Update传入合约Address和NewBinary,发起合约更新交易。
(7)区块链收到该合约更新交易后在Code Data中查找该条记录并更新。
(8)区块链根据新合约中属性结构的变更,进行相应的Storage Data变更。
(9)合约升级完成,重新运行。重复步骤6-8,即可完成对同一合约的持续升级。
本发明的有益效果在于:本发明打破智能合约地址、代码、存储单元三者不可变更的结构,并对存储单元按照属性名称进行索引和序列化,使合约代码能够直接整体更新,同时可以复用之前的合约地址和合约存储单元。
附图说明
图1为本发明的Code Data数据结构图;
图2为本发明的Storage Data数据结构图。
具体实施方式
步骤1:沿用现有技术下合约编写、编译、部署、地址生成、用户发起交易Transaction、虚拟机执行、区块打包、数据序列化、世界状态存储等传统区块链运行架构。
由于区块链的特殊架构,用户部署合约和升级合约的操作,均是提交一个新的交易,原始块内的交易数据不可更改,只是增加一个新的区块记录合约升级的新代码数据,世界状态数据保留在区块链之外,根据块最新交易和运行结果进行存储。
步骤2:重新设计现有技术下世界状态中的合约代码存储空间的数据结构CodeData为:map(合约地址Address=>合约代码Binary)。原有技术下的Code Data只能新增,不可更改,本方法增加了更改操作。
步骤3:重新设计现有技术下世界状态中的合约数据存储空间数据结构StorageData为:map(合约地址Address=>map(属性名称Attribute=>属性内容Value))。
原有技术下的Storage Data结构为map(合约地址Address=>[属性内容Value]列表),属性根据编译时的Index进行索引和存储,顺序不可更改,数量也不可增减,本方法增加了增删操作。
步骤4:用户编写合约代码,并设定合约升级条件Conditions,并编译合约代码生成Binary,用户发起部署合约交易Transaction,传入Binary。
由于许可链中的用户大都为实名制认证,合约开发者和使用者身份明确固定,前期设定升级权限,比如合约作者可以升级,即合约作者发起的调用即达到Conditions为True,或者给定一段时间收集当时合约用户的投票,大于百分之多少即达到Conditions为True,或者设置达到固定时间点Conditions为True。
此处的Conditions不是一个特殊的变量,只是升级条件代码的代称,由合约作者自由编写,本质上Update保留函数的调用没有条件判断,只是如果没有Conditions的逻辑条件,则任意人任意时候都可以调用Update保留函数,造成合约升级的混乱。
步骤5:区块链收到该Transaction后生成固定地址Address,并将Binary插入CodeData中。
步骤6:区块链根据合约属性结构,初始化map(Attribute=>Value),序列化后作为整体根据Address插入Storage Data。
步骤7:合约开始运行,接收用户调用交易Transaction,执行并更新用户数据,根据用户对Attribute的操作,不断更新其Value内容并序列化存储。
步骤8:如需更新,则用户进行代码修改,并重新编译合约代码生成New Binary,发起合约更新交易Transaction,调用合约保留函数Update,传入合约Address和New Binary。
设计Update为合约的系统级保留函数,参数为新合约字节码,用户不能声明同名的函数。
步骤9:区块链收到该Transaction后在Code Data中查找该条记录并更新。
代码修改包含合约属性代码修改和函数代码修改,如果仅是函数代码修改,包括增加函数、删除函数、或者修改函数内部代码,这部分Binary都仅在运行时加载,不需引起Storage Data的变动。
步骤10:区块链根据新合约中属性结构的变更,进行相应的Storage Data变更。
由于Storage Data设计了根据属性名称索引属性值的结构,所以保持同样的属性名称和属性类型就可以在升级后复用以往的Value。如果新增属性,则在Storage Data中初始化该条记录。如果删除属性,则同样在Storage Data中删除该条记录。对于修改属性类型和修改属性名称的情况,等同于删除属性记录并新增一条属性记录的操作。
步骤11:合约升级完成,重新运行。重复步骤6-8,即可完成对同一合约的持续升级。
合约的Update函数可以多次调用,重复覆盖,增量更新,每次更新后重置Conditions为False,只需在每次更新时,积累条件变更其为True。
Claims (1)
1.一种基于许可链的智能合约升级方法,其特征在于,包括如下步骤:
(1)针对传统区块链运行架构,重新设计世界状态中的合约代码存储空间的数据结构CodeData为:map(合约地址Address =>合约代码Binary);重新设计世界状态中的合约数据存储空间数据结构StorageData为:map(合约地址Address => map(属性名称Attribute =>属性内容Value)) ;
(2)设定合约升级条件Conditions,并编译生成合约代码Binary,用户发起部署合约交易,传入合约代码Binary;
(3)区块链收到步骤(2)部署的合约交易后生成合约地址Address,并将合约代码Binary插入合约代码存储空间的数据结构CodeData中;
(4)区块链根据合约属性结构,初始化map(属性名称Attribute =>属性内容Value),序列化后作为整体,根据合约地址Address插入合约数据存储空间数据结构StorageData;
(5)合约开始运行,接受用户调用交易,执行并更新用户数据,根据用户对属性名称Attribute的操作,不断更新其属性内容Value并序列化存储;
(6)达到步骤(2)所述的合约升级条件Conditions时,则用户进行代码修改,并重新编译合约代码Binary生成New Binary,通过调用保留函数Update,并向保留函数Update传入合约地址Address和New Binary,发起合约更新交易;
(7)区块链收到该合约更新交易后在合约代码存储空间的数据结构CodeData中查找记录并更新;
(8)区块链根据新合约中属性结构的变更,进行相应的合约数据存储空间数据结构Storage Data变更;
(9)合约升级完成,重新运行;重复步骤(6)-(8),即可完成对同一合约的持续升级。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611048985.0A CN106709704B (zh) | 2016-11-23 | 2016-11-23 | 一种基于许可链的智能合约升级方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611048985.0A CN106709704B (zh) | 2016-11-23 | 2016-11-23 | 一种基于许可链的智能合约升级方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106709704A CN106709704A (zh) | 2017-05-24 |
CN106709704B true CN106709704B (zh) | 2020-04-24 |
Family
ID=58934864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611048985.0A Active CN106709704B (zh) | 2016-11-23 | 2016-11-23 | 一种基于许可链的智能合约升级方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106709704B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024002468A1 (en) * | 2022-06-28 | 2024-01-04 | Huawei Cloud Computing Technologies Co., Ltd. | Automated smart contract hot updates |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109144674B (zh) * | 2017-06-27 | 2024-03-08 | 中思博安科技(北京)有限公司 | 合约处理装置和合约处理方法 |
CN107562513B (zh) * | 2017-07-18 | 2020-08-07 | 杭州趣链科技有限公司 | 一种基于java的智能合约生命周期的管理方法 |
CN107526624B (zh) * | 2017-07-18 | 2020-12-08 | 杭州趣链科技有限公司 | 一种基于Java虚拟机的智能合约执行引擎 |
CN107464148A (zh) * | 2017-08-23 | 2017-12-12 | 众安信息技术服务有限公司 | 一种基于联盟链的智能合约升级方法和系统 |
CN107807991B (zh) * | 2017-11-07 | 2020-05-12 | 泰康保险集团股份有限公司 | 用于处理区块链数据的方法及装置 |
CN107844294B (zh) * | 2017-11-17 | 2020-05-19 | 杭州溪塔科技有限公司 | 一种高可用的合约执行方法及系统 |
CN107943950B (zh) * | 2017-11-24 | 2020-07-10 | 中钞信用卡产业发展有限公司杭州区块链技术研究院 | 一种区块链中数据智能合约生成的方法及系统 |
CN108170740B (zh) * | 2017-12-18 | 2022-04-26 | 深圳前海微众银行股份有限公司 | 数据迁移方法、系统和计算机可读存储介质 |
CN109962779A (zh) * | 2017-12-22 | 2019-07-02 | 中国电信股份有限公司 | 用于实现合约更新的方法、装置和系统 |
CN108196872A (zh) * | 2017-12-27 | 2018-06-22 | 邵美 | 一种区块链系统中智能合约的升级方法 |
CN108170449A (zh) * | 2017-12-27 | 2018-06-15 | 邵美 | 一种区块链系统中核心协议的升级方法 |
CN108540536B (zh) * | 2018-03-16 | 2021-07-23 | 深圳前海微众银行股份有限公司 | 基于区块链的网络海量业务处理方法、设备及存储介质 |
CN110400217B (zh) * | 2018-04-25 | 2022-07-01 | 中国移动通信集团广东有限公司 | 智能合约的规则变更处理方法及装置 |
CN110580624B (zh) * | 2018-06-07 | 2022-02-18 | 华为技术有限公司 | 链码升级方法及装置 |
CN108833398B (zh) * | 2018-06-08 | 2020-12-15 | 深圳智链未来科技有限公司 | 一种区块链智能合约更新方法、装置及设备 |
CN108965399B (zh) * | 2018-06-25 | 2022-02-25 | 百度在线网络技术(北京)有限公司 | 智能合约的执行方法、装置、设备及存储介质 |
CN108876619B (zh) * | 2018-06-26 | 2022-07-05 | 北京溯安链科技有限公司 | 基于区块链智能合约的处理方法、装置、设备和介质 |
CN109491682B (zh) * | 2018-10-24 | 2021-12-17 | 杭州趣链科技有限公司 | 一种基于智能合约的权限可控的区块链系统自动升级方法 |
CN109960696A (zh) * | 2019-03-22 | 2019-07-02 | 杭州复杂美科技有限公司 | 一种智能合约的配置方法、设备和存储介质 |
CN110018840B (zh) * | 2019-04-11 | 2021-12-03 | 深圳市迅雷网络技术有限公司 | 一种智能合约升级方法、装置、区块链节点设备及介质 |
CN110297721B (zh) * | 2019-06-24 | 2021-08-03 | 杭州趣链科技有限公司 | 一种基于java的智能合约的跨合约调用方法 |
CN110471921A (zh) * | 2019-08-08 | 2019-11-19 | 杭州复杂美科技有限公司 | 一种智能合约配置、调用和更新方法、设备及存储介质 |
CN111813836A (zh) * | 2020-08-13 | 2020-10-23 | 广州东港安全印刷有限公司 | 一种提高Ethereum区块链系统扩展性的方法 |
CN112527781B (zh) * | 2020-12-23 | 2022-07-15 | 上海万向区块链股份公司 | 一种智能合约数据迁移方法及系统 |
CN112749152A (zh) * | 2021-01-19 | 2021-05-04 | 矩阵元技术(深圳)有限公司 | 智能合约的数据迁移方法、装置及存储介质 |
CN112949778A (zh) * | 2021-04-17 | 2021-06-11 | 深圳前海移联科技有限公司 | 基于局部敏感哈希的智能合约分类方法、系统及电子设备 |
CN113220701B (zh) * | 2021-05-25 | 2023-05-02 | 成都佰纳瑞信息技术有限公司 | 基于区块链的数据结构自适应变动升级方法、装置、设备和产品 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016127721A1 (zh) * | 2015-02-13 | 2016-08-18 | 中兴通讯股份有限公司 | 一种获取信息的方法、智能终端和服务端 |
CN105893042A (zh) * | 2016-03-31 | 2016-08-24 | 北京航空航天大学 | 一种基于区块链的智能合约的实现方法 |
CN105956880A (zh) * | 2016-04-27 | 2016-09-21 | 天津三千里云信息技术有限公司 | 销售推广系统 |
CN105976231A (zh) * | 2016-06-24 | 2016-09-28 | 深圳前海微众银行股份有限公司 | 基于区块链智能合约的资产管理方法及节点 |
CN106022917A (zh) * | 2016-05-08 | 2016-10-12 | 杭州复杂美科技有限公司 | 区块链撮合交易所方案 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101702793B (zh) * | 2009-11-10 | 2013-08-21 | 中兴通讯股份有限公司 | Cdma网络中ussd业务的实现方法、系统及设备 |
-
2016
- 2016-11-23 CN CN201611048985.0A patent/CN106709704B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016127721A1 (zh) * | 2015-02-13 | 2016-08-18 | 中兴通讯股份有限公司 | 一种获取信息的方法、智能终端和服务端 |
CN105893042A (zh) * | 2016-03-31 | 2016-08-24 | 北京航空航天大学 | 一种基于区块链的智能合约的实现方法 |
CN105956880A (zh) * | 2016-04-27 | 2016-09-21 | 天津三千里云信息技术有限公司 | 销售推广系统 |
CN106022917A (zh) * | 2016-05-08 | 2016-10-12 | 杭州复杂美科技有限公司 | 区块链撮合交易所方案 |
CN105976231A (zh) * | 2016-06-24 | 2016-09-28 | 深圳前海微众银行股份有限公司 | 基于区块链智能合约的资产管理方法及节点 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024002468A1 (en) * | 2022-06-28 | 2024-01-04 | Huawei Cloud Computing Technologies Co., Ltd. | Automated smart contract hot updates |
Also Published As
Publication number | Publication date |
---|---|
CN106709704A (zh) | 2017-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106709704B (zh) | 一种基于许可链的智能合约升级方法 | |
EP3477488B1 (en) | Deploying changes to key patterns in multi-tenancy database systems | |
CN107562513B (zh) | 一种基于java的智能合约生命周期的管理方法 | |
US9928247B2 (en) | System and method for deletion of extraneous delete marker objects | |
US7684964B2 (en) | Model and system state synchronization | |
US5920873A (en) | Data management control system for file and database | |
CN110019215A (zh) | 多重租赁数据库系统中的键模式管理 | |
US6094654A (en) | Data management system for file and database management | |
CN111324571B (zh) | 一种容器集群管理方法、装置及系统 | |
US6298476B1 (en) | Object oriented software build framework mechanism | |
CN109614165B (zh) | 一种com组件的多版本并行运行方法和装置 | |
US20070143379A1 (en) | Metadata driven deployment of applications | |
US20180336021A1 (en) | Package installation on a host file system using a container | |
CN103475687A (zh) | 用于下载网站数据的分布式方法和系统 | |
US10768926B2 (en) | Maintaining manageability state information distinct from managed metadata | |
CN103475688A (zh) | 用于下载网站数据的分布式方法和系统 | |
CN110417857B (zh) | 区块链协议处理装置、处理方法及区块链 | |
CN114675934A (zh) | 联盟链中部署链码的方法和系统 | |
KR20050079625A (ko) | 객체 지향 프로그래밍 언어 및 툴에서의 버전닝 지원 방법 | |
US20130297755A1 (en) | Network element configuration management | |
CN111813836A (zh) | 一种提高Ethereum区块链系统扩展性的方法 | |
CN113515303A (zh) | 一种项目转型方法、装置和设备 | |
CN109753767B (zh) | 基于区块链的软件分发及更新方法和装置、服务器、客户端 | |
CN110377614A (zh) | 一种分布式环境下的订单处理锁系统 | |
Herrmannsdörfer et al. | Library concepts for model reuse |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200323 Address after: 310012 no.1001, 10 / F, block a, Huaxing Times Square, No.478, Wensan Road, Xihu District, Hangzhou City, Zhejiang Province Applicant after: Hangzhou Xita Technology Co.,Ltd. Address before: Seven 310030 Hangzhou Road, Zhejiang province Xihu District three Town Xiyuan No. 3 Building 3 Room 203 Applicant before: CRYPTAPE Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |