- 浏览: 722897 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1043)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (52)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (64)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
最新评论
UUPS
- 博客分类:
- solidity
a.Proxy直接把所有的请求都通过delegatecall丢给Implementation(如果是升级,Implementation的升级函数会确认一下是否为管理员)
b.需要实现_authorizeUpgrade函数以确保只有管理员账户可以进行升级
c.升级函数upgradeTo在Implementation合约中
test
b.需要实现_authorizeUpgrade函数以确保只有管理员账户可以进行升级
c.升级函数upgradeTo在Implementation合约中
// SPDX-License-Identifier: MIT pragma solidity >= 0.8.0; import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; import "hardhat/console.sol"; contract UUPSImplement is Initializable, UUPSUpgradeable, OwnableUpgradeable { uint256 public num; function initialize() initializer public { __Ownable_init(); __UUPSUpgradeable_init(); } /// @custom:oz-upgrades-unsafe-allow constructor constructor() initializer { } function _authorizeUpgrade(address) internal override onlyOwner {} function setNum(uint256 _num) external{ num = _num; } function fun() external{ console.log("fun"); } }
// SPDX-License-Identifier: MIT pragma solidity >= 0.8.0; import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; import "hardhat/console.sol"; contract UUPSImplementNew is Initializable, UUPSUpgradeable, OwnableUpgradeable { uint256 public num; address public addr; function initialize() initializer public { __Ownable_init(); __UUPSUpgradeable_init(); num = 3; } /// @custom:oz-upgrades-unsafe-allow constructor constructor() initializer { addr = msg.sender; } function _authorizeUpgrade(address) internal override onlyOwner { console.log("_authorizeUpgrade"); console.log(owner()); } function setAddr(address _addr) external { addr = _addr; } function fun() external{ console.log("new fun"); } }
test
const { ethers, upgrades } = require('hardhat'); contractImpl = "UUPSImplement"; contractImplNew = "UUPSImplementNew"; describe("contractProxy", function () { it("UUPS ", async function () { const ContractImpl = await ethers.getContractFactory(contractImpl); const impl = (await upgrades.deployProxy(ContractImpl, {kind: 'uups'})); await impl.fun(); await impl.setNum(8); console.log("num:",await impl.num()); const ContractImplNew = await ethers.getContractFactory(contractImplNew); implNew = (await upgrades.upgradeProxy(impl, ContractImplNew)); await implNew.fun(); await implNew.setAddr(implNew.address); console.log("num:",await implNew.num()); console.log("addr:",await implNew.addr()); }); }); 需要在hardhat.config.js最上面加上 require('@openzeppelin/hardhat-upgrades'); contractProxy fun num: BigNumber { value: "8" } new fun num: BigNumber { value: "8" } addr: 0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512
发表评论
-
TypeError:ethers_1.getAddress
2024-04-29 10:45 14package.json 添加:"@nomicfou ... -
solidity
2023-02-25 14:23 12一.solidity 1.EVM 不是基于寄存器的,而是基于栈 ... -
solidity
2023-02-25 14:23 11一.solidity 1.EVM 不是基于寄存器的,而是基于栈 ... -
solidity
2023-02-25 14:23 118一.solidity 1.EVM 不是基于寄存器的,而是基于栈 ... -
Address
2023-02-23 10:54 5// contracts/Box.sol // SPDX ... -
Address
2023-02-23 10:50 107// contracts/Box.sol // SPDX ... -
Beacon
2023-02-20 11:45 106Beacon a.Implementation地址并不存放在P ... -
Transparent
2023-02-16 15:44 106Transparent: a.如果Proxy合约发现自己被Pr ... -
string转bytes
2023-02-16 11:04 168const data = Buffer.from(''); ... -
hardhat命令
2023-02-13 09:58 2111.前置准备,运行一个新项目 mkdir my-project ... -
multicall
2023-01-31 20:11 146multicall的solidity调用与ethers.js调 ... -
检查是否是721
2023-01-31 15:18 94// SPDX-License-Identifier: M ... -
EVM操作码
2023-01-25 10:33 1932.栈和内存操作码 2.1 POP:取出栈顶元素 2.2 PU ... -
计算合约地址
2023-01-19 11:27 171EVM会根据发送者地址和nonce经过RLP编码后再进行kec ... -
标准修饰符
2023-01-18 17:03 871.internal:类似c++中的protected,通过J ... -
ABI编码函数
2023-01-17 10:40 1991. abi.encode()returns(bytes):对 ... -
数据位置
2023-01-17 10:24 1061.函数参数包括返回的参数默认是memory 2.局部变量默认 ... -
随机数
2023-01-17 10:06 109https://www.paradigm.xyz/2023/0 ... -
extcodesize
2023-01-16 11:16 204extcodesize取出的byte code长度,若长度大于 ... -
Elevator
2023-01-13 10:48 94Elevator.sol // SPDX-License- ...
相关推荐
这里是UUPs爬虫主项目组,任何新技术均会首先应用在B站爬虫上。我们的目标是为每位up主的创作之路助力,主要体现在: 1. 数据获取与管理:利用爬虫技术获取全B站的视频与用户数据,并用维护数据库的方法管理它们,...
内涵官网的imager(windows) 以及WoR,系统镜像可以在UUPs官网中找到
用法./convert.sh [compression] [uups_directory] [create_virtual_editions]压缩选项: wim-标准wim压缩( /Compress:max DISM中的/Compress:max )(默认) esd-固态esd压缩( /Compress:recovery DISM中的/...
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
rbac权限控制框架:1.支持角色继承,数据组,行为组.zip abac,rbac权限控制框架 支持角色继承,数据组,行为组 支持动态角色和静态角色 usage 用户与角色需要额外维护 权限控制规则默认驻留内存, 可自定义RuleRepository实现 角色继承关系默认驻留内存, 可自定义RoleHierarchyRepository实现 数据组关系默认驻留内存, 可自定义DataGroupRepository实现 行为组关系默认驻留内存, 可自定义ActionGroupRepository实现 若使用动态角色需要实现DynamicRoleDefiner
utlog.sqlite
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
xia0FridaScript-master.zip
煤炭地质勘查钻孔质量标准MTT1042-2007.pdf
149煤矿生产安全事故现场处置方案.pdf
javaweb登录注册页面,[信息办公]个人求职管理系统,jsp开发源码。
煤矿重要用途钢丝绳.PDF
2023-06-30-东方财富证券-华电重工-深度研究:乘氢能之风,新能源巨轮远航
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
超详细Python教程,包含Python数据结构、对象、模块、迭代器等等超多内容 Django框架教程
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。