以太坊交易所 以太坊交易所
Ctrl+D 以太坊交易所
ads
首頁 > 幣贏 > Info

【翻譯】升級智能合約 (Hardhat)_UNI:PROX

Author:

Time:1900/1/1 0:00:00

原文鏈接

使用OpenZeppelin升級插件部署的智能合約可以通過升級來修改代碼,同時保留原合約地址、狀態和余額。這讓幫助我們為項目添加新功能,或修復在生產中可能發現的任何錯誤。

在本指南中,我們將學習:

為什么升級很重要

使用升級插件升級我們的盒子。

了解升級在引擎蓋下是如何工作的

學習如何編寫可升級合約

什么是可升級的合約

以太坊中的智能合約默認情況下是不可更改的。一旦創建了就無法改變,有效地為合約參與者扮演了不可篡改的合約的角色。

然而某些場景下,我們希望能夠修改它們。想想傳統合約:如果參與雙方都同意改變它,就可以去對齊進行改變。同樣在以太坊上,我們也希望能夠修改智能合約,以修復他們發現的bug,增加額外的功能,或者僅僅是改變它所執行的規則。

加密倡導組織抨擊美國財政部對Tornado Cash的制裁:金色財經報道,美國加密倡導組織區塊鏈協會(Blockchain Association)和DeFi 教育基金( DeFi Education Fund )在一份法庭之友簡報中表示,美國財政部制裁Tornado Cash 的決定是“前所未有和非法的” 。

美國財政部去年制裁了 Tornado Cash,這是一種開源軟件,可用于匿名化以太坊區塊鏈上的交易。此舉遭到加密倡導者的反對,其中包括華盛頓特區政策非營利組織 Coin Center,該組織就制裁對財政部提起訴訟,區塊鏈協會和 DeFi 教育基金一起提交了這份法律簡報,以支持 Coin Center 的案件。文件表示:“認識到 Tornado Cash 只是一種工具至關重要——懲罰工具本身只是因為它可以被任何人使用,包括壞人,這與這個國家建立的價值觀背道而馳”。[2023/6/3 11:55:30]

以下是你需要做的事情,以修復你無法升級的合約中的錯誤。

義烏發布數字人民幣試點10舉措:加大智能合約應用探索力度:金色財經報道,義烏市數字人民幣試點工作領導小組聯合辦公室發布《深入推進義烏小商品市場數字人民幣試點工作方案》,《方案》提出全面提升市場數字人民幣受理環境、推廣數字人民幣硬件錢包、加大智能合約應用探索力度、探索開展數字人民幣跨境支付應用等10條具體措施。[2023/3/25 13:26:15]

部署一個新版本的合約

手動將所有的狀態從舊的合約遷移到新的合約

更新所有與舊合約交互的合約,使用新合約的地址

聯系你的所有用戶,并說服他們開始使用新的部署

為了避免出現這種亂象,我們將合約升級直接內置到我們的插件中。這讓我們可以改變合約代碼,同時保留狀態、余額和地址。讓我們來看看如何實現。

使用升級插件來升級合約

使用OpenZeppelin升級插件中的deployProxy部署一個新的合約時,該合約實例就可以實現可升級的功能。默認情況下,只有最初部署合約的地址才有權限執行升級操作。

SPACE ID:“.arb”域名預注冊Phase 2已啟動上線:2月20日消息,去中心化域名協議SPACE ID宣布“.arb”域名預注冊Phase 2已啟動上線,預注冊截止時間為UTC時間2月25日14點。此前拍賣獲勝者現在可以注冊贏得的域名,其他人則可以注冊剩下的域名。SPACE ID還表示,SPACE ID 2.0現在已對所有人開放。[2023/2/21 12:18:20]

deployProxy將創建以下事務;

部署執行合約

部署ProxyAdmin合約

部署代理合約并運行初始化函數

讓我們看看它是如何工作的,通過部署我們的Box合約的可升級版本,使用與之前部署時相同的設置:

//contracts/Box

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

安全公司Dedaub因披露Uniswap重入漏洞獲得4萬美元漏洞賞金:1月3日消息,安全公司 Dedaub 團隊宣布獲得 Uniswap Labs 的 4 萬枚 USDC 安全漏洞賞金,因為其披露 Uniswap 的一個嚴重漏洞,該漏洞有重入并耗盡用戶的資金的可能性。不過,Uniswap 團隊已解決該漏洞并在所有鏈上重新部署了 Universal Router 智能合約,資金是安全的。

Uniswap 在 2022 年 11 月份發布通用路由器Universal Router智能合約,可將 ERC20 和 NFT 兌換統一到一個交換路由器中,用戶可以執行異構操作,例如,在一筆交易中交換多個 Token 和 NFT。

Dedaub 表示,該路由器為各種 Token 操作嵌入了腳本語言,此類命令可能包括向第三方(可能不受信任的)接收人的傳輸。如果在傳輸過程中的任何時候調用第三方代碼,該代碼可以重新進入 UniversalRouter 并在合約中臨時認領任何 Token。Dedaub 建議 Uniswap 為新路由器的核心執行添加一個重入鎖,并重新部署。[2023/1/4 9:50:22]

首先需要安裝升級插件。

LPR報價連續四個月“按兵不動” 明年初或為調降時間窗口:12月21日消息,LPR報價連續四個月保持不動。多位接受記者采訪的業內專家認為,盡管12月份LPR報價維持前值不變,但不會影響實體經濟融資成本下行勢頭,預計年底新發放企業貸款加權平均利率將續創歷史新低,新發放居民房貸利率也有望延續小幅下行勢頭。整體上看,預計2023年1月份或2月份,是LPR調降的時間窗口。(證券時報)(金十數據APP)[2022/12/21 21:57:29]

安裝HardhatUpgrades插件。

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意味著什么?

Tags:BOXROXPROXUNIgoldboxCROX價格ProxyNodeunisat錢包下載

幣贏
關于LBank上線BAGS交易的公告_ANK:BANK

尊敬的LBank用戶: LBank將于2021年1月13日19:50(UTC8)上線BAGS,具體如下:開啟交易對:BAGS/USDT開啟充值時間:2021.1.1319:30(UTC8)公告.

1900/1/1 0:00:00
關于支持Blockstack(STX)網絡升級和硬分叉的公告_Uniswap:SWAP

親愛的用戶:幣安已暫停STX的充值、提現業務,以支持Blockstack于比特幣網絡區塊高度666,050的硬分叉及網絡升級.

1900/1/1 0:00:00
庫幣上線Hydra Chain (HYDRA)!_HYDRA:HydraDX

親愛的庫幣用戶: 我們很高興的宣布,庫幣將上線HydraChain(HYDRA)項目并支持交易對HYDRA/USDT.

1900/1/1 0:00:00
談喻凱:多頭打響反擊戰 比特幣以太坊或將啟動下一輪牛市_ORE:OREN

比特幣,一波深度回調,讓市場不少人慌了神,對于是對于一些散戶而言,套牢,爆倉已經成為了韭菜的代名詞.

1900/1/1 0:00:00
關于LBank下線部分交易對的公告_USD:lbank交易所上海公司

尊敬的LBank用戶:因部分交易對流動性不足,現即將下線以下交易對,詳情如下:下線交易對:TRX/ETH、ATOM/BTC、ZEC/BTC、ZEC/ETH、AAC/ETH、DDD/ETH.

1900/1/1 0:00:00
1.12 BTC晚間簡評及ETH操作建議_BTC:NSI

行情觀點:下午建議反彈36800-37000附近分批空,目標36000-35800,止損37200,沒有反彈到入場點位,大餅震蕩下滑,直接掃到止盈點位,從小時級別來看.

1900/1/1 0:00:00
ads