如何升级或者更新智能合约?

简介: 如果合约发送方想要有一种方法来升级智能合约代码,以便账户数据和其他东西接通,可以有什么办法吗?可以在不改变合约地址的情况下进行,还是总是需要新的地址?是否存在annex机制,在不需要重写的情况下向智能合约中添加一些新的功能?问题解答一旦合约已经部署在区块链中,它就是最终版了并不能再被改变。

如果合约发送方想要有一种方法来升级智能合约代码,以便账户数据和其他东西接通,可以有什么办法吗?可以在不改变合约地址的情况下进行,还是总是需要新的地址?

是否存在annex机制,在不需要重写的情况下向智能合约中添加一些新的功能?

问题解答

一旦合约已经部署在区块链中,它就是最终版了并不能再被改变。当然,可以通过允许原始代码改变某些参数,来做些改变。

更新合约的一种方法是使用版本控制系统。例如,你可以有一个入口通道合约,它将所有调用转发到合同的最新版本,由可更新的地址参数定义。你还可以使用名称注册表,并将其更新为指向最近的合约版本。

另一种方法是将逻辑代码放在库中,然后使用CALLCODE特性,通过Solidity中的库调用位于指定的、可更新的地址的代码。这样,用户数据在版本之间仍然存在。但这也就限制了逻辑合约的ABI必须保持不变。

官方说法:

从Homestead release发布开始,有一个DELEGATECALL操作码。这基本上允许你向前调用一个单独的合约,同时保持msg.sender和所有存储。

例如,你可以拥有一个保持相同地址和存储的合同,但将所有调用转发到存储在变量中的地址:

contract Relay {
    address public currentVersion;
    address public owner;

    function Relay(address initAddr){
        currentVersion = initAddr;
        owner = msg.sender;
    }

    function update(address newAddress){
        if(msg.sender != owner) throw;
        currentVersion = newAddress;
    }

    function(){
        if(!currentVersion.delegatecall(msg.data)) throw;
    }
}

原文《以太坊常见问题和错误》中的:
http://cw.hubwiz.com/card/c/ethereum-FAQ/1/1/17/

另外推荐几个很受欢迎全网稀缺的互动教程:

  • python以太坊,主要是针对python围绕web3.py进行区块链以太坊应用开发的讲解。
  • web3j,主要是针对java和android程序员围绕web3j库进行区块链以太坊开发的讲解。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和事件等内容。
  • 以太坊开发,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • 以太坊教程,主要介绍智能合约与dapp应用开发,适合入门。
相关文章
|
安全 区块链
SOL链(Solana链)智能合约系统开发功能需求/案例设计/步骤指南/源码程序
Developing a smart contract system based on SOL chain (Solana chain) can achieve various functions and applications. The following are some common SOL chain smart contract system development features:
|
数据安全/隐私保护 虚拟化 Windows
如何在 VM 虚拟机中安装 Windows 7 操作系统保姆级教程(附链接)
如何在 VM 虚拟机中安装 Windows 7 操作系统保姆级教程(附链接)
如何在 VM 虚拟机中安装 Windows 7 操作系统保姆级教程(附链接)
|
数据安全/隐私保护 iOS开发 MacOS
|
Linux Docker 容器
CentOS7使用阿里源安装最新版Docker
CentOS7使用阿里源安装最新版Docker
10030 0
|
7月前
|
人工智能 自然语言处理 BI
基于阿里云人工智能平台的智能客服系统开发与部署
随着人工智能技术的发展,智能客服系统成为企业提升服务效率和用户体验的重要工具。阿里云提供包括自然语言处理(NLP)、语音识别(ASR)、机器学习(PAI)等在内的完整AI平台,助力企业快速构建智能客服系统。本文将通过电商平台案例,展示如何基于阿里云AI平台从零开始开发、部署智能客服系统,并介绍其核心优势与最佳实践,涵盖文本和语音客服、知识库管理及数据分析等功能,显著提升客户服务效率和用户满意度。
|
6月前
|
监控 文件存储 异构计算
国产NAS也支持本地部署DeepSeek了:极空间Z423上手
极空间Z423 NAS新增本地部署DeepSeek大模型功能,支持7B和14B两种参数量级模型。本文通过实际测试展示了其性能表现:14B模型运行缓慢,Token输出速度低于每秒10个,而7B模型速度稍快但仍不理想。硬件资源占用高,温度显著上升,风扇噪音增大。作者建议优化交互逻辑、提供局域网接口及更好GPU支持,并预测未来NAS可能加入GPU或NPU以提升推理能力。此功能目前更像战略布局,为后续硬件升级铺垫。
395 0
|
10月前
|
存储 区块链 数据安全/隐私保护
Uniswap丨justswap丨pancakeswap去中心化薄饼交易所系统开发逻辑分析及源码示例
Uniswap、JustSwap、PancakeSwap均为去中心化交易所,采用自动做市商(AMM)机制。Uniswap基于以太坊,通过Router、Factory和Pair合约实现交易功能;JustSwap基于TRON网络,支持TRC20代币交易,无手续费;PancakeSwap基于Binance Smart Chain,功能类似Uniswap,支持BSC代币交易。
|
人工智能 Ubuntu Docker
【多系统解决方案】赶紧丢掉虚拟机吧,Docker + VNC 让你更加轻松拥有多系统
【多系统解决方案】赶紧丢掉虚拟机吧,Docker + VNC 让你更加轻松拥有多系统
561 0
Flutter-自定义图片3D画廊
Flutter-自定义图片3D画廊
188 0
|
Linux 网络安全 数据安全/隐私保护