UUPSUpgradeable部署合约和升级合约

devtools/2024/10/19 2:19:35/

文章目录

        • 写一个合约
        • 1. 使用代理部署 并添加拥有者
        • 2. 没有name number为10
        • 3. 使用代理升级部署 填写上面代理的合约地址
        • 4. 合约地址没有变,但是添加了name,并且保存了number的属性值

写一个合约
// 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 constructorconstructor() {_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)internalonlyOwneroverride{}
}
1. 使用代理部署 并添加拥有者

请添加图片描述

2. 没有name number为10

请添加图片描述

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

请添加图片描述

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

请添加图片描述


http://www.ppmy.cn/devtools/11518.html

相关文章

全新创维EV6 Ⅱ超充车型有哪些亮点?答案将在北京车展揭晓

4月25日-5月4日,阔别4年的北京车展盛大回归,创维汽车将携全新车型创维EV6 Ⅱ超充车型及系列创新技术,亮相北京中国国际展览中心顺义馆W3号馆 311展位,全面展示其在新能源汽车补能及智能化领域的前瞻思考和技术布局。 以顶级超充革…

nvm使用指定镜像安装node和npm包

场景 使用nvm时,默认的安装源经常碰到找不到可用版本的问题,这时就需要指定镜像源。比如如果你在学习鸿蒙ArkTs项目的开发,就需要指定从华为官方镜像上安装指定版本的node和npm包 命令 以windows为例,以管理员身份运行cmd工具&…

【webrtc】m114自己实现的PrioritizedPacketQueue及优先级处理

G:\CDN\WEBRTC-DEV\libwebrtc_build\src\modules\pacing\prioritized_packet_queue.h跟m98不同 :webrtc】m98 RoundRobinPacketQueue的优先级处理,m114直接使用taskqueue顺序处理了。甚至自己实现了优先级队列感觉简化了实现,更为清晰 易读,但是去掉了码率低就优先的逻辑。1…

《魔兽世界》本人收集的二十六个单机版游戏,内有视频架设教程,非常详细,云盘下载

《魔兽世界》(World of Warcraft)属于大型多人在线角色扮演游戏。 《魔兽世界》本人收集的二十六个单机版游戏,内有视频架设教程,非常详细 下载地址: 链接:https://pan.baidu.com/s/1zu7lUNupkPnLPVYHM4jL5…

OpenHarmony UI动画-lottie

简介 lottie是一个适用于OpenHarmony的动画库,它可以解析Adobe After Effects软件通过Bodymovin插件导出的json格式的动画,并在移动设备上进行本地渲染。 下载安裝 ohpm install ohos/lottieOpenHarmony ohpm 环境配置等更多内容,请参考如何…

Jenkins打包app并通过openssh上传到服务器

目录 1、下载安装openssh 2、配置openssh根目录 3、安装Jenkins Build Steps配置 Post-build Actions配置 4、运行 1、下载安装openssh 网上很多教程,包括开端口的,可以搜下 2、配置openssh根目录 进入C:\ProgramData\ssh打开文件sshd_config&am…

服务器 BMC(基板管理控制器,Baseboard Management Controller)认知

写在前面 工作中遇到,简单整理博文内容涉及 BMC 基本认知理解不足小伙伴帮忙指正 不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候,眼前的风景已经和从前不一样了。——村上春树 基板管理控制器(BMC&…

AI人工智能培训老师叶梓:大数据治理的关键工具:开源数据血缘分析系统

在大数据时代,数据的产生和传播速度日益加快,数据之间的关系也变得日益复杂。为了更好地管理和理解数据之间的关系,数据血缘分析系统应运而生。本文将介绍几个开源的数据血缘分析系统,它们在数据治理、数据质量管理和数据隐私保护…