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

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

作者:巴比特 字体:[增加 减小] 来源:互联网

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

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


主从合约(Master-Slave contract)

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

永久存储合约(Eternal Storage contract)

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

可升级存储代理合约

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

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

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

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

  • 如何在IoT Chain(万物链)部署智能合约
  • 智能合约的攻与防
  • 智能合约及Dapp安全简介
  • 如何审核智能合约
  • 如何编写以太坊ERC-20智能合约的单元测试
  • 升级您的以太坊智能合约的最佳实践
  • 构建智能合约时需要考虑的9个因素
  • 如何实现可升级的智能合约?
  • 智能合约是什么及我们需要它们的原因是什么
  • 智能合约攻击:我们都应该从DAO中吸取经验

相关文章

  • 区块链共识类型:POC、DBFT、POA、POB
  • 如何在Linux系统建立自己的闪电网络节点和通道
  • NeuronVisor框架概述
  • 闪电比特币LBTC轻钱包及区块浏览器使用教程
  • 比特币现金(BCH)就是比特币
  • 区块链的六层模型
  • 如何用架构师思维解读区块链技术?
  • 区块链共识的确定性
  • 什么是比特币驱动链
  • 一文读懂区块链之 - 零知识证明

文章分类

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

最近更新的内容

    • 区块链共识机制与分布式一致性算法
    • ImToken钱包使用教程
    • 一文弄懂什么是比特币分叉
    • 私钥攻击!权益证明协议的最大要害
    • 潜在分叉到来之前,你需要知道这些事情
    • 比特币钱包地址、私钥和公钥:到底是啥关系?
    • 通证(Token)的简短介绍
    • 区块链未来五大应用
    • 安全代币发行(STO)是什么及为什么需要一个顾问
    • B网交易所使用教程——以TenX代币PAY交易过程为例

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

©2020-2025 All Rights Reserved. linkedu.com 版权所有