月亮链 月亮链
Ctrl+D收藏月亮链
首页 > Polygon > 正文

BOX:【翻译】升级智能合约 (Hardhat)_ProximaX

作者:

时间:1900/1/1 0:00:00

原文链接

使用OpenZeppelin升级插件部署的智能合约可以通过升级来修改代码,同时保留原合约地址、状态和余额。这让帮助我们为项目添加新功能,或修复在生产中可能发现的任何错误。

在本指南中,我们将学习:

为什么升级很重要

使用升级插件升级我们的盒子。

了解升级在引擎盖下是如何工作的

学习如何编写可升级合约

什么是可升级的合约

以太坊中的智能合约默认情况下是不可更改的。一旦创建了就无法改变,有效地为合约参与者扮演了不可篡改的合约的角色。

然而某些场景下,我们希望能够修改它们。想想传统合约:如果参与双方都同意改变它,就可以去对齐进行改变。同样在以太坊上,我们也希望能够修改智能合约,以修复他们发现的bug,增加额外的功能,或者仅仅是改变它所执行的规则。

Cathie Wood:在对XRP的裁决后,对Coinbase持乐观态度:金色财经报道,Cathie Wood周一表示,在上周法庭裁决Ripple Labs在与美国证券交易委员会的持续纠纷中取得部分胜利后,她对加密货币交易所Coinbase持乐观态度。尽管Ark Invest最近出售了该公司的股票,但情况还是如此。?

Wood称,我们对Coinbase非常看好,特别是考虑到法院对Ripple做出了有利于Ripple且对SEC不利的裁决。虽然有一些认沽和认购,但总的来说,对交易所来说是非常积极的。[2023/7/18 11:01:07]

以下是你需要做的事情,以修复你无法升级的合约中的错误。

部署一个新版本的合约

手动将所有的状态从旧的合约迁移到新的合约

更新所有与旧合约交互的合约,使用新合约的地址

过去24小时内大额爆仓总计金额17585.32万USDT:金色财经报道,据数据统计,BTC爆仓4435.57万USD,EOS爆仓67.16万USD,LTC爆仓232.31万USD,XRP爆仓464.73万USD,BCH爆仓54.16万USD等。[2023/4/23 14:20:48]

联系你的所有用户,并说服他们开始使用新的部署

为了避免出现这种乱象,我们将合约升级直接内置到我们的插件中。这让我们可以改变合约代码,同时保留状态、余额和地址。让我们来看看如何实现。

使用升级插件来升级合约

使用OpenZeppelin升级插件中的deployProxy部署一个新的合约时,该合约实例就可以实现可升级的功能。默认情况下,只有最初部署合约的地址才有权限执行升级操作。

deployProxy将创建以下事务;

以太坊开发人员准备在Goerli测试网上发布Shapella升级:金色财经报道,以太坊开发人员正在为今天晚些时候在 Goerli 测试网络上推出备受期待的 Shanghai-Capella 或 Shapella 升级做准备,这是定于 4 月推出主网之前的最后彩排。开发人员在以太坊基金会的一篇博文中表示,升级将在 Goerli 的纪元 162304 触发,估计发生在美国东部时间下午 6 点 25 分左右。在 Goerli 上测试升级后,如果测试顺利,他们计划下个月将其部署到主网上。

升级的主要特点是以太坊改进提案 (EIP) 4895,旨在使验证者能够在主网络上进行质押提款。在以太坊于 2022 年 9 月转向权益证明共识期间关闭了该功能,以确保安全过渡。[2023/3/15 13:04:34]

部署执行合约

部署ProxyAdmin合约

数据:Bitmex上的永续合约未平仓价值达到约7317.4万美元,创一个月新高:金色财经报道,数据显示,Bitmex上的永续合约未平仓价值刚刚达到73,174,056.71美元,创1个月新高。

此前2022年10月26日观察到的1个月高点为73,060,166.70美元。[2022/10/28 11:53:40]

部署代理合约并运行初始化函数

让我们看看它是如何工作的,通过部署我们的Box合约的可升级版本,使用与之前部署时相同的设置:

//contracts/Box

//Readsthelaststoredvaluefunctionretrieve()publicviewreturns(uint256){returnvalue;}}

首先需要安装升级插件。

安装HardhatUpgrades插件。

a16z报告:DAO最好提交法律文件并进行纳税:6月3日消息,DAO的兴起引发了法律上的难题,即如何正式建立一个设计上并不真正想成为实体的实体。a16z提出了一套拟议的解决方案,并于周四发布了一份报告,称这类群体可能更适合安顿下来并缴纳美国税款。DAO将资金锁定在一个区块链上,一组参与者可以透明地朝向某个共同目标。a16z在其最近一次为DAO建立美国法律基础的公开努力中称,DAO需要“不要求进行真实世界的人类活动”的结构来满足法律要求——可能有利于非法人非营利组织(UNA)和有限责任公司(LLC)。面临的挑战是保持DAO的去中心化,同时允许它满足企业或非营利组织的税务要求和其他实际需求。

a16z总顾问兼去中心化负责人Miles Jennings和参与DAO研究小组的律师David Kerr撰写的论文称,使用受欢迎的离岸策略来避税可能会大大增加全球抵制的风险。美国国内结构对拥有大量美国成员和联系方的项目的实际好处是显而易见的,该文件总结道,并质疑在行业等待监管的同时进入免税司法管辖区是否真的是最佳的行动方案。(CoinDesk)[2022/6/3 4:00:07]

npminstall--save-dev

在创建Solidity文件后,我们现在使用upgradeProxy函数升级之前部署的实例。

upgradeProxy将创建以下事务:

部署执行合约

调用ProxyAdmin来更新代理合约以应用新的实现

创建一个脚本,使用upgradeProxy将Box合约升级为使用BoxV2。把这个文件保存为scripts/upgrade_box

main();

然后就可以部署我们的可升级合约。

使用run命令,可以在development网络中部署升级Box合约。

$npxhardhatrun--networklocalhostscripts/upgrade_box

//Storesanewvalueinthecontractfunctionstore(uint256newValue)public{require(msg

//Readsthelaststoredvaluefunctionretrieve()publicviewreturns(uint256){returnvalue;}}

部署合约时,我们需要指定initializer函数名,并提供一个管理员地址。

//scripts/deploy_upgradeable_adminbox

main();

出于实践目的,initializer作为构造函数。然而,请记住,由于它是一个常规函数,你将需要手动调用所有基础合约的初initializer。

要了解更多关于这一点以及编写可升级合约时的其他注意事项,请查看我们的WritingUpgradeableContracts指南。

升级

由于技术上的限制,当你将一个合约升级到新版本时,你不能改变该合约的存储布局。

这意味着,如果你已经在合约中声明了一个状态变量,你就不能删除它,不能改变它的类型,也不能在它之前声明其他变量。在我们的Box例子中,这意味着我们只能在value之后添加新的状态变量。

//contracts/Box.solcontractBox{uint256privatevalue;//Wecansafelyaddanewvariableaftertheoneswehaddeclaredaddressprivateowner;//...}

幸运的是,这种限制只影响状态变量。你可以随心所欲地改变合约的功能和事件。

注意如果你不小心弄乱了合约的存储布局,当尝试升级时,升级插件提出警告。

前往ModifyingYourContracts指南了解更多限制。

测试

为了测试可升级的合约,我们应该为实现合约创建单元测试,同时创建更高级别的测试,来测试与代理的交互。可以在测试中使用deployProxy,就像我们部署时一样。

当要升级时,我们应该为新的实现合约创建单元测试,同时创建更高级别的测试,以便在升级后使用upgradeProxy通过代理测试交互,检查在升级过程中是否保持状态一致。

接下来的步骤

现在你已经知道如何升级智能合约,并且可以迭代开发你的项目,是时候把你的项目带到测试网和正式网中去了。你可以放心,如果出现bug,你有工具来修改你的合约并修复它。

_请戳↓“阅读原文”↓获取文中链接_

免责声明:作为区块链信息平台,本站所发布文章仅代表作者个人观点,与链闻ChainNews立场无关。文章内的信息、意见等均仅供参考,并非作为或被视为实际投资建议。

本文来源于非小号媒体平台:

登链社区

现已在非小号资讯平台发布105篇作品,

非小号开放平台欢迎币圈作者入驻

入驻指南:

/apply_guide/

本文网址:

/news/9579147.html

免责声明:

1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险

2.本文版权归属原作所有,仅代表作者本人观点,不代表非小号的观点或立场

上一篇:

币安为何推出第三条链?这对BNB意味着什么?

标签:BOXProxyADEPROXMegaShiboX InuProxyNodeHade PlatformProximaX

Polygon热门资讯
FOMP:关于“持仓FOMP,空投QFIL”空投方案变更的公告_数字货币

尊敬的中币用户:根据FOMP官方信息,“持仓FOMP,空投QFIL”的空投时间调整为每周一,平台将按照FOMP官方的规则在空投当天的17:00对用户在中币账户的FOMP资产进行快照.

1900/1/1 0:00:00
OMI:关于FAR(Farmland Protocol) 交易送积分 轮盘转不停 奖励发放公告_ramp币和leverfi币

HomiEx已完成"FAR(FarmlandProtocol)交易送积分轮盘转不停"所有奖励已全部分发,请在“钱包-资产记录”查看分发结果.

1900/1/1 0:00:00
比特币:比特币一天暴跌30%,合约爆仓10亿刀,牛还在吗?_Gemini女朋友染染多大

据数据显示,市值最高的加密货币比特币在本周大幅下挫,一度跌至3万美元附近,24小时下挫超1万美元。这也导致了大量期货合约遭到清算.

1900/1/1 0:00:00
nem:关于Symbol (XYM)空投NEM(XEM)用户快照时间变更公告_arbinu币今日价格

亲爱的用户:由于XYM主网上线时间推迟,NEM社区投票决定推迟原定的空投快照时间。币安将在NEM团队确定新的快照时间后另行公告.

1900/1/1 0:00:00
虚拟资产:币姥爷:熟悉的横盘调整_虚拟资产法律法规

今天的封面是《台上的舞蹈演员》,德加行情走到这里,如何进行操作?雨神连夜在圈子里给出科学的入场建议,欢迎扫码查看更多详情.

1900/1/1 0:00:00
EOS:LOEx|1月13日行情研报:BTC高位回落,谨慎抢反弹_ELLO

1111BTC凌晨持续上涨,最高涨至35545.46USDT,后小幅回落,现于33000USDT附近震荡。BTC在LOEx现报32600.60USDT,24H跌幅3.59%.

1900/1/1 0:00:00