想自己做网站该学些什么如何免费做网站并发布

张小明 2026/3/2 18:20:25
想自己做网站该学些什么,如何免费做网站并发布,酒店网站设计公司,专门做门业的网站目录 1.在REMIX中集成透明升级合约 2.在HARDHAT中集成透明升级合约 合约一旦部署#xff0c;是不可以更改了#xff0c;项目初期必须提前设计#xff0c;决定是否需要升级#xff0c;否则是无法升级的#xff0c;只要提前用代理模式#xff0c;就能升级。演示一下升级的…目录1.在REMIX中集成透明升级合约2.在HARDHAT中集成透明升级合约合约一旦部署是不可以更改了项目初期必须提前设计决定是否需要升级否则是无法升级的只要提前用代理模式就能升级。演示一下升级的过程。BoxV1升级到BoxV2过程。1.在REMIX中集成透明升级合约BoxV1.sol代码// SPDX-License-Identifier: MIT pragma solidity ^0.8.26; import openzeppelin/contracts/proxy/utils/Initializable.sol; contract BoxV1 is Initializable { uint public x; function initialize(uint _val) external initializer { x _val; // set initial value in initializer } function call() external { x 1; } function showInvoke() external pure returns (bytes memory) { return abi.encodeWithSelector(this.initialize.selector, 1); } }BoxV2.sol// SPDX-License-Identifier: MIT pragma solidity ^0.8.26; import openzeppelin/contracts/proxy/utils/Initializable.sol; contract BoxV2 is Initializable { uint public x; function initialize(uint _val) external initializer { x _val; // set initial value in initializer } function call() external { x * 2; } function showInvoke() external pure returns (bytes memory) { return abi.encodeWithSelector(this.initialize.selector, 1); } }TPUProxy.sol// SPDX-License-Identifier: MIT pragma solidity ^0.8.26; import openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol; contract TPUProxy is TransparentUpgradeableProxy { constructor( address _logic, address _initialOwner, bytes memory _data ) payable TransparentUpgradeableProxy(_logic, _initialOwner, _data) {} function proxAdmin() external view returns (address) { return _proxyAdmin(); } function getImplementation() external view returns (address) { return _implementation(); } }在remix分别编译和部署BoxV1BoxV2合约然后部署TPUProxy合约部署前注意填写数据参数解释参数类型作用_logicaddress业务逻辑合约地址如BoxV1_initialOwneraddress管理员地址可以升级合约的人_databytes初始化数据调用逻辑合约initialize函数_logic的值是复制BoxV1的地址然后点击部署部署TPUProxy时就已经调用了BoxV1的initialize(1)方法在 TPUProxy 的存储上下文中执行 BoxV1.initialize(1)initializer 来自 Initializable该函数只能调用一次。复制TPUProxy合约地址然后挂载到BoxV1上Remix 的界面会把 “At Address 绑定的操作入口” 和 “直接部署的合约” 放在同一区域显示名称都是 “BoxV1”操作本质给 TPUProxy 套了个 BoxV1 的 “操作界面”用 BoxV1 的按钮控制代理现在要升级到BoxV2,只能由管理合约来升级找管理员合约可以对应上的。如果发现ProxyAdmin合约地址跟proxAdmin按钮显示的地址不一样明显就是错了那么不管填写什么值都会报错。参数意思怎么填proxy要升级的代理地址你的TPUProxy地址implementation新逻辑合约地址你的BoxV2地址data升级后要执行的函数 calldata0x不执行或abi.encode(...)然后点击“transact意思是发起一笔区块链交易请求将代理合约TPUProxy的逻辑升级到新版本如 BoxV2并在升级后立即执行指定的初始化或迁移函数。接下来把代理合约挂载到BoxV2中因为TPUProxy已经变了我们再次复制这个TPUProxy合约地址点击”Ar Address点击“x:显示的值是之前Boxv1的值状态没丢然后点“call发现值已经是乘法升级成功了完成合约。用户/前端始终与 同一个地址 交互TPUProxy即使升级了 10 次逻辑合约这个地址永远不会变看这个TPUProxy地址始终都没变。2.在HARDHAT中集成透明升级合约首先安装依赖npm install --save-dev openzeppelin/hardhat-upgrades 或 yarn add -D openzeppelin/hardhat-upgrades在hardhat.config.ts文件添加依赖require(nomicfoundation/hardhat-toolbox); require(openzeppelin/hardhat-upgrades)把BoxV1.sol和BoxV2.sol复制到hardhat中然后在test目录下新建BoxV1.js文件const hre require(hardhat); async function deploy() { const BOXV1 await hre.ethers.getContractFactory(BoxV1); // 通过v1版本部署代理 const v1 await hre.upgrades.deployProxy(BOXV1, [1], { initializer: initialize, }); await v1.waitForDeployment(); console.log(await v1.getAddress()); console.log(await v1.x()); await v1.call(); console.log(await v1.x()); } deploy();然后在package.json文件所在目录打开命令提示符输入#清理可能的缓存 npx hardhat clean #重新编译 npx hardhat compile #启动节点 npx hardhat node启动另一个命令窗口输入npx hardhat run test\BoxV1.js --network localhost复制BoxV1.js变成BoxV2.jsconst hre require(hardhat); async function deploy() { //V2版本工厂 const BOXV2 await hre.ethers.getContractFactory(BoxV2); // 通过v2版本部署代理 const v2 await hre.upgrades.upgradeProxy( 0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512, BOXV2 ); await v2.waitForDeployment(); console.log(await v2.getAddress()); console.log(await v2.x()); await v2.call(); console.log(await v2.x()); } deploy();再次要命令行执行npx hardhat run test\BoxV2.js --network localhost成功了
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

自己做网站可以揽业务吗个人直播网站开发

一、引言:为何文化是持续测试的“隐形架构”在当今快速迭代的软件开发环境中,“持续测试”(Continuous Testing)早已不是陌生词汇。然而,实践中我们常常看到这样的场景:团队引入了最先进的自动化测试框架&a…

张小明 2026/1/21 14:11:58 网站建设

富阳科技网站有哪些个人如何注册微信公众号怎么创建

WordPress作为企业管理系统的可行性分析在当今数字化转型的浪潮中,发现越来越多的企业开始寻求灵活、可扩展且成本可控的管理系统解决方案。作为全球最受欢迎的内容管理系统,WordPress不仅仅是一个博客平台,它已经演变成为一个功能强大的企业级应用框架。通过合理的架构设计和插…

张小明 2026/1/21 14:11:27 网站建设

网站前台模板设计免费房屋设计app

FLUX.1-dev Git 工作流构建:打造可复现的AI图像生成开发体系 在生成式AI迅猛发展的今天,文生图模型早已不再是“能不能画出来”的问题,而是演进为“能否稳定、高效、可控地生产符合预期的图像内容”。面对日益复杂的提示工程、微调实验和团…

张小明 2026/1/21 14:10:56 网站建设

顺德网站建设公司咨询网页设计宣传海报素材

xtb量子化学计算终极实战指南:从新手到专家的完整路径 【免费下载链接】xtb Semiempirical Extended Tight-Binding Program Package 项目地址: https://gitcode.com/gh_mirrors/xt/xtb 在当今计算化学研究领域,xtb量子化学计算工具正以其卓越的计…

张小明 2026/1/21 14:10:25 网站建设

做富集分析的网站免费店铺logo在线制作

于食品生产这个行业里头,异物检测可是保障产品安全以及维护品牌声誉极为关键重要的环节,食品X光机身为核心检测设备,借由X射线穿透的原理,能够高效地识别产品里头混入的像金属、玻璃、陶瓷、石子甚至某些硬质塑料等各种各样的异物…

张小明 2026/1/21 14:09:54 网站建设

现在给别人做网站还赚钱吗织梦网站搭建

Apache服务器配置与高级网络概念解析 1. Apache模块添加 Apache本身功能强大,但有些功能需要通过添加模块来实现,例如安装php5模块以支持PHP,或者Python模块用于Python开发。在不同的Linux发行版中,添加模块的方式有所不同。 1.1 Debian系统 在Debian系统中,有专门的命…

张小明 2026/1/21 14:09:23 网站建设