UUPSUpgradeable部署合约和升级合约

简介: UUPSUpgradeable部署合约和升级合约
写一个合约
// SPDX-License-Identifier: MIT
// Compatible with OpenZeppelin Contracts ^5.0.0
pragma solidity ^0.8.20;

import "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol";

contract MyContract is Initializable, PausableUpgradeable, OwnableUpgradeable, UUPSUpgradeable {
     using CountersUpgradeable for CountersUpgradeable.Counter;
    CountersUpgradeable.Counter private changeId;
    uint public number;
    // string public name;
    /// @custom:oz-upgrades-unsafe-allow constructor
    constructor() {
        _disableInitializers();
    }

    function initialize(address initialOwner) initializer public {
        __Pausable_init();
        __Ownable_init(initialOwner);
        __UUPSUpgradeable_init();
    }

    function pause() public onlyOwner {
        _pause();
    }

    function unpause() public onlyOwner {
        _unpause();
    }

    function updateNumber(uint _number) public returns (uint, uint) {
        number = _number;
        changeId.increment();
        uint id = changeId.current();
        return (number, id);
    }

    //  function addName(string memory _name) public returns (string memory){
    //     name = _name;
    //     return name;
    // }

    function _authorizeUpgrade(address newImplementation)
        internal
        onlyOwner
        override
    {}
}


1. 使用代理部署 并添加拥有者


2. 没有name number为10


3. 使用代理升级部署 填写上面代理的合约地址


4. 合约地址没有变,但是添加了name,并且保存了number的属性值


相关文章
|
7月前
|
前端开发 API 区块链
合约交易丨秒合约丨永续合约丨合约跟单系统开发指南步骤
合约交易、秒合约、永续合约和合约跟单系统的开发基本要素和指南如下:
|
安全 API Python
OKEx交易所合约交易系统开发部署源码规则解析
OKEx交易所合约交易系统开发部署源码规则解析
量化合约交易系统开发详情(合约做市开发)丨DAPP交易所秒合约模式源码搭建
量化合约交易系统开发详情(合约做市开发)丨DAPP交易所秒合约模式源码搭建
|
机器学习/深度学习 人工智能 自然语言处理
秒合约开发原理丨秒合约系统开发(详细规则)丨秒合约源码案例部署
秒合约开发原理丨秒合约系统开发(详细规则)丨秒合约源码案例部署
|
供应链 安全 区块链
永续合约丨合约交易丨秒合约丨币币合约交易所系统开发|规则方案
区块链采用分布式记账模式,无论是登记结算场景下的实时对账能力,还是数据存证场景下的不可篡改能力
|
存储 大数据 Linux
秒合约交易系统开发部署源码|秒合约详情方案
区块链技术,通过网络中所有节点共同参与计算,互相验证其信息的真伪以达成全网共识
|
存储 供应链 安全
秒合约|现货合约|合约跟单系统开发(源码部署)
Web3.0的优势主要在于其将数据的存储和交互方式进行了彻底的改进
|
消息中间件 缓存 运维
永续合约丨秒合约丨交易所系统开发正式版/方案详情/开发功能
永续合约开发技术是指开发和实现永续合约交易的技术。永续合约是一种无固定到期日的合约,与传统的期货合约不同,它没有到期日,可以一直持有。永续合约的交易方式类似于现货交易,但是具有杠杆交易的特点。
|
算法 测试技术 区块链
合约交易所开发指南:合约交易所搭建基本原理和步骤实现
合约交易所是基于区块链技术构建的去中心化交易平台。它使用智能合约来管理交易和资产。 智能合约开发环境:在进行合约交易所的开发之前,使用开发环境是很重要的。常见的开发环境包括Truffle、Embark、Builder等。这些开发环境提供了一些有用的命令和工具,如编译合约、部署合约、调试合约、运行单元测试等。
|
存储 区块链 数据安全/隐私保护
合约跟单丨合约交易丨秒合约项目系统开发(源码案例)
去中心化:在一个系统中任意节点的权利和义务都是均等的