• 微课视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
微课江湖
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 微课视频
  • 安全教程
  • 安全设置
  • 杀毒防毒
  • 病毒查杀
  • 脚本攻防
  • 入侵防御
  • 工具使用
  • 业界动态
  • Exploit
  • 漏洞分析
  • 加密解密
  • 手机安全
  • 区块链
您的位置:首页 > 网络安全 >区块链 > 如何实现可升级的智能合约?

如何实现可升级的智能合约?

作者:巴比特 字体:[增加 减小] 来源:互联网 时间:2018-11-03

巴比特向大家分享了如何实现可升级的智能合约?,其中包含智能合约,代理合约等知识点,遇到此问题的同学们可以参考下
智能合约的重要性已越来越明显,现如今,整个密码货币生态系统都是由智能合约所驱动!不管我们有多小心,或者我们的代码测试工作做得有多好,如果我们创建的是一个复杂的系统,那我们就有必要更新合约逻辑,以修补其存在的漏洞,或者添加必要的缺失功能。有时候,由于EVM虚拟机的更改或者被新发现的漏洞,我们可能需要去升级我们的智能合约。

一般来说,开发人员可以很容易地升级他们的软件,但区块链的情况是不一样滴,因为它们有着难以更改的属性。如果我们部署了一个合约,这就好比是泼出去的水。然而,如果我们使用适当的技术,我们可以在不同的地址部署一个新的合约,并使得旧合约无效。下面是一些最常见的,创建可升级智能合约的方法。


主从合约(Master-Slave contract)

主从技术,是可实现升级智能合约最为基础也是最容易理解的技术之一。在这种技术当中,我们部署一个主合约,以及其他合约,其中主合约负责存储所有其他合约的地址,并在需要时返回所需的地址。当这些合约需要和其它合约进行沟通时,它们会充当从合约,从主合约那里获取其它合约的最新地址。为了升级智能合约,我们只需要在网络上部署它,并更改主合约中的地址。虽然这远不是发展可升级智能合约的最佳方式,但它确是最简单的。这种方法存在着很多的局限性,其中之一是,我们不能轻易地把合约的数据或资产迁移到新合约中。

永久存储合约(Eternal Storage contract)

在这种技术当中,我们将逻辑合约和数据合约彼此分离。数据合约应该是永久并且不可升级的。而逻辑合约可以根据需要进行多次升级,并将变化通知给数据合约。这是一项相当基本的技术,并且存在着一个明显的缺陷。由于数据合约是不可升级的,数据结构中需要的任何更改,或数据合约中存在的漏洞,都会导致所有数据变得无用。这种技术的另一个问题是,如果逻辑合约想要访问/操作区块链上的数据,那么这个逻辑合约将需要进行外部调用,而外部调用会消耗额外的gas。通常情况下,这种技术会和主从技术相结合,以促进合约间的通信。

可升级存储代理合约

我们可通过使永久存储合约充当逻辑合约的代理,以此防止支付额外的gas。这个代理合约,以及这个逻辑合约,将继承同一存储合约,那么它们的存储会在EVM虚拟机中对齐。这个代理合约将有一个回退函数,它将委托调用这个逻辑合约,那么这个逻辑合约就可以在代理存储中进行更改。这个代理合约将是永恒的。这节省了对存储合约多次调用所需的gas,不管数据做了多少的更改,就只需要一次委托调用。

这项技术当中有三个组成部分:

代理合约(Proxy contract):它将充当永久存储并负责委托调用逻辑合约;
逻辑合约(Logic contract):它负责完成处理所有的数据;
存储结构(Storage structure):它包含了存储结构,并会由代理合约和逻辑合约所继承,以便它们的存储指针能够在区块链上保持同步;

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 智能合约是什么及我们需要它们的原因是什么
  • 智能合约攻击:我们都应该从DAO中吸取经验
  • 智能合约并不像你想象的那么智能
  • 以太坊可更新智能合约研究与开发综述
  • 如何通过以太坊智能合约来进行众筹(ICO)
  • 关于区块链技术最重要的三要素
  • 一分钟看懂智能合约是什么鬼
  • 比特币脚本及交易分析-智能合约雏形
  • 浅谈以太坊智能合约的设计模式与升级方法
  • 传统合同和智能合约

相关文章

  • 2018-11-03比原链(Bytom)合约交易构造流程
  • 2018-11-03区块链中的挖矿原理(POW算法)
  • 2018-11-03从共识算法到Token经济学
  • 2018-11-03以太坊代币(Token)的初学者指南
  • 2018-11-03为什么所有人都错过了最近500年内最重要的发明(第一章)
  • 2018-11-03Ethereum Devcon3 浓缩精华版 - 钱包与 Dapp 开发
  • 2018-11-03胖协议 vs 胖 dApp vs 胖钱包
  • 2018-11-03如何编写以太坊ERC-20智能合约的单元测试
  • 2018-11-03如何用最快的速度将比特币转换为以太坊教程介绍
  • 2018-11-03数字货币与加密货币之间的关系

文章分类

  • 安全教程
  • 安全设置
  • 杀毒防毒
  • 病毒查杀
  • 脚本攻防
  • 入侵防御
  • 工具使用
  • 业界动态
  • Exploit
  • 漏洞分析
  • 加密解密
  • 手机安全
  • 区块链

最近更新的内容

    • parity多签名合约漏洞分析
    • 科普 | 以太坊概况
    • 科普 | 非技术宅的区块链简介: 1.共识
    • 区块链-未来已来,只是尚未流行
    • 比特币现金(BCC)缺点、优势、如何获得、特性、挖矿
    • 什么是BCH(Bitcoin Cash)比特币现金
    • 什么是时间扭曲(Timewarp)攻击?
    • 比特币支付系统的创新
    • 如何通过BTS内盘进行ICO?
    • 比特币钱包地址、私钥和公钥:到底是啥关系?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2015-2018 All Rights Reserved. 微课江湖 版权所有