- 浏览: 774939 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- 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 (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
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 374package.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 322一.solidity 1.EVM 不是基于寄存器的,而是基于栈 ... -
Address
2023-02-23 10:54 5// contracts/Box.sol // SPDX ... -
Address
2023-02-23 10:50 282// contracts/Box.sol // SPDX ... -
Beacon
2023-02-20 11:45 286Beacon a.Implementation地址并不存放在P ... -
Transparent
2023-02-16 15:44 271Transparent: a.如果Proxy合约发现自己被Pr ... -
string转bytes
2023-02-16 11:04 349const data = Buffer.from(''); ... -
hardhat命令
2023-02-13 09:58 4001.前置准备,运行一个新项目 mkdir my-project ... -
multicall
2023-01-31 20:11 207multicall的solidity调用与ethers.js调 ... -
检查是否是721
2023-01-31 15:18 183// SPDX-License-Identifier: M ... -
EVM操作码
2023-01-25 10:33 3362.栈和内存操作码 2.1 POP:取出栈顶元素 2.2 PU ... -
计算合约地址
2023-01-19 11:27 281EVM会根据发送者地址和nonce经过RLP编码后再进行kec ... -
标准修饰符
2023-01-18 17:03 1861.internal:类似c++中的protected,通过J ... -
ABI编码函数
2023-01-17 10:40 3451. abi.encode()returns(bytes):对 ... -
数据位置
2023-01-17 10:24 2321.函数参数包括返回的参数默认是memory 2.局部变量默认 ... -
随机数
2023-01-17 10:06 247https://www.paradigm.xyz/2023/0 ... -
extcodesize
2023-01-16 11:16 327extcodesize取出的byte code长度,若长度大于 ... -
Elevator
2023-01-13 10:48 234Elevator.sol // SPDX-License- ...
相关推荐
开发bilibili网站爬虫,大数据分析研究比利蜘蛛【本项目孵化自想法#4】简介这里是UUPs爬虫主项目组,任何新的均会首先应用在B站爬虫上。我们的目标是为达到up主的创作道路助力,主要体现在数据获取与管理利用爬虫...
这里是UUPs爬虫主项目组,任何新技术均会首先应用在B站爬虫上。我们的目标是为每位up主的创作之路助力,主要体现在: 1. 数据获取与管理:利用爬虫技术获取全B站的视频与用户数据,并用维护数据库的方法管理它们,...
你可以从UUP Dump (UUPs官网)找到这个系统镜像,这是一个非官方的微软Windows更新镜像下载站点。请确保下载的是针对树莓派的正确版本,并注意系统的兼容性,如4B型号的树莓派可能需要特定的IoT Core版本。 在下载并...
用法./convert.sh [compression] [uups_directory] [create_virtual_editions]压缩选项: wim-标准wim压缩( /Compress:max DISM中的/Compress:max )(默认) esd-固态esd压缩( /Compress:recovery DISM中的/...
VMware workstation
光伏蓄电池单相并网模型:MPPT升压电路、桥式逆变与智能控制策略仿真结果展示,光伏蓄电池单相并网模型。 带参考文件,模型说明文件 模型内容: 1.光伏+MPPT+boost升压电路+桥式逆变 2.电池模型+电池控制器+直流母线控制 3.稳定交流负载+功率控制器+pwm调制 仿真结果: 1.直流母线380V稳定输出 2.逆变输出与单相220V电网同频同相 3.光伏功率充足时为电池充电,光伏输出不足电池放电 ,光伏蓄电池单相并网模型; 光伏MPPT; boost升压电路; 桥式逆变; 电池模型; 电池控制器; 直流母线控制; 稳定交流负载; 功率控制器; pwm调制; 380V直流母线稳定输出; 逆变输出与电网同频同相; 光伏充放电管理。,光伏储能单相并网模型:实现功率调度与电压稳定研究报告
欧洲新闻 English_Botox 肉毒杆菌行业分数据 英语 John.pdf
启蒙小游戏
基于MATLAB与Cplex求解器的冷热电多微网系统双层优化储能服务配置策略研究,MATLAB代码:基于储能电站服务的冷热电多微网系统双层优化配置 电网技术文章,《基于储能电站服务的冷热电多微网系统双层优化配置》复现 仿真平台:MATLAB,需要用到cplex求解器 ,关键词:基于储能电站服务;冷热电多微网系统;双层优化配置;MATLAB代码;cplex求解器;电网技术文章;复现;仿真平台。,"MATLAB仿真复现:多微网系统双层优化配置及其在储能电站服务的实践"
三相异步电机本体模型Matlab Simulink仿真模拟与性能研究参考模型,三相异步电机本体模型 Matlab Simulink仿真模型(成品) 本模型利用数学公式搭建了三相异步电机的模型,可以很好的模拟三相异步电机的运行性能,适合研究电机本体时修改参考,电机的各波形都很好可以很好的模拟三相电机 ,三相异步电机本体模型; Matlab Simulink仿真模型; 数学公式搭建模型; 运行性能模拟; 电机波形模拟。,基于Matlab Simulink的三相异步电机本体模型仿真研究
qt-opensource-windows-x86-5.12.12.zip.004
1、文件内容:google-guice-3.1.3-9.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/google-guice-3.1.3-9.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
1、文件内容:gnome-getting-started-docs-cs-3.28.2-1.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/gnome-getting-started-docs-cs-3.28.2-1.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
Matlab Simulink下的二阶线性自抗扰控制器(LADRC)仿真模型:快速响应与优异抗干扰性能,成功应用于电机速度控制,matlab simulink二阶线性自抗扰控制器(LADRC)仿真模型,已经封装完成,响应速度快,抗扰能力相较于传统pi更优秀。 采用线性ADRC相较于非线性ADRC大大减少了调参难度,已成功用于电机速度环替代传统pi。 ,关键词:Matlab Simulink;二阶线性自抗扰控制器(LADRC);仿真模型;封装完成;响应速度快;抗扰能力优秀;线性ADRC;调参难度低;电机速度环;传统PI替代。,Matlab Simulink:二阶线性自抗扰控制器(LADRC)仿真模型,调参简便,响应快速且抗扰性强
适用操作系统:linux。 适用CPU架构:x64。
欧洲新闻 RF Mixer(ENG) 射频混频器行业分数据 英语 Kira.pdf
1、文件内容:gnutls-c++-3.3.29-9.el7_6.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/gnutls-c++-3.3.29-9.el7_6.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
该工具主要实现jar包目录共享
RS422与MIL-STD-1553B协议转换:BU61580逻辑替代与扩展配置特性解析,RS422-MIL1553B 协议转 支持BC RT BM 1553B逻辑可以原位替BU61580协议芯片 配置寄存器和BU61580一样 存储器范围和BU61580一样4K*16bit 可外接扩展64K*16bit 实现过程:通过RS422去配置1553B寄存器和存储器 然后将数据通过RS422打印出来 PCI CPCI接口类似 可设计板卡也可以代码移植 ,核心关键词:RS422; MIL1553B协议转换; BC RT BM支持; 1553B逻辑原位替换BU61580协议芯片; 配置寄存器与BU61580相同; 存储器范围4K*16bit可扩展至64K*16bit; RS422配置1553B寄存器和存储器; 数据打印通过RS422; PCI CPCI接口; 设计板卡; 代码移植。,"RS422-MIL1553B协议转换卡:BU61580芯片替代方案"
内容概要:本研究围绕七鳃鳗(lamprey)适应性别比例机制,采用数学建模和生态系统评估的方法,探究了该机制对七鳃鳗种群及其所在生态系统的正面与负面影响。首先,在引入七鳃鳗生活史的基础上提出了两个模型:一是七鳃鳗种群迭代模型(Model I),二是包含物种丰富度、稳定性和生物量评估的BDS评价模型(Model II)。这两个模型共同用于量化适应性别比率对生态稳定性以及系统内部竞争动态的影响,并揭示出该比率能促进生物多样性和生物质量,但也会降低种群抵御环境压力的能力。随后,通过仿真验证,研究发现这种特性提高了整个生态系统的韧性并在环境改善时加快平衡重建速度;然而它同时也削弱了一些物种的竞争地位并减少了某些特定寄生鱼类的数量。 适用人群:对于从事生态学、动物学及相关跨学科研究人员而言是一份有价值的内容。此外,也适合作为高级生物课程的补充材料。 使用场景及目标:本文有助于深入理解入侵物种如何响应外部环境因素改变自身属性以达到适应性进化的效果,适用于那些希望进一步探索生态学中复杂互动关系的人士;也可作为教学案例,展示多维度视角下生态系统的定量研究方法和结论推导过程。 其他说明:本文提供的数据和模型不仅可用于七鳃鳗种群的具体研究中,还可以作为类似物种研究的一个通用框架来应用到其它生物类型的建模工作中去,从而提供广泛的参考价值。同时文章还指出了现有工作的局限性和未来改进的方向。