比特幣價格 比特幣價格
Ctrl+D 比特幣價格
ads

PRO:【翻譯】升級智能合約 (Hardhat)_PROX

Author:

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

原文鏈接

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

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

為什么升級很重要

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

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

學習如何編寫可升級合約

什么是可升級的合約

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

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

數字貨幣板塊異動拉升 恒寶股份午后漲停:金色財經報道,午后數字貨幣板塊異動走強,恒寶股份午后漲停,帶動雄帝科技、高偉達、楚天龍等快速沖高。[2023/2/16 12:10:30]

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

部署一個新版本的合約

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

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

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

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

使用升級插件來升級合約

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

數據:以太坊于1245美元附近存在約3050萬美元鏈上借貸清算額度:2月13日消息,據DefiLlama數據顯示,以太坊于1245美元附近存在約3050萬美元鏈上借貸清算額度。[2023/2/13 12:04:23]

deployProxy將創建以下事務;

部署執行合約

部署ProxyAdmin合約

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

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

//contracts/Box

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

首先需要安裝升級插件。

ApeCoin DAO投票通過質押系統相關漏洞賞金計劃及特別委員會成員提名和選舉程序:11月3日消息,ApeCoin在推特上宣布,ApeCoin DAO已投票通過了為APE質押系統智能合約設立漏洞賞金計劃的提案AIP-134。這意味著APE質押系統的上線日期將被推遲至漏洞賞金計劃結束后。該提案作者表示漏洞賞金計劃將持續約3周時間,因此質押系統可能會在11月24日上線,質押獎勵分配將于12月7日開始。

此外,ApeCoin DAO關于“特別委員會成員提名程序”AIP-137和“特別委員會成員選舉程序”AIP-138的提案投票已獲通過,ApeCoin基金會將于明天發布提名公告。[2022/11/3 12:13:17]

安裝HardhatUpgrades插件。

npminstall--save-dev

在創建Solidity文件后,我們現在使用upgradeProxy函數升級之前部署的實例。

Meta推出元宇宙身份系統Meta accounts與Meta Horizon Profiles:8月24日消息,Meta推出元宇宙身份系統Meta賬戶與Meta Horizon Profiles,用于代替使用社交媒體賬戶登錄Meta元宇宙,但仍允許用戶使用Facebook和Instagram帳戶創建Meta帳戶。Meta Horizon Profiles未來將取代Oculus帳戶,使用Oculus賬戶登錄的方式將截至2023年1月1日。[2022/8/24 12:45:31]

upgradeProxy將創建以下事務:

部署執行合約

調用ProxyAdmin來更新代理合約以應用新的實現

創建一個腳本,使用upgradeProxy將Box合約升級為使用BoxV2。把這個文件保存為scripts/upgrade_box

菲律賓聯合銀行將在其移動應用程序內提供兌換加密貨幣功能:金色財經報道,菲律賓聯合銀行(Unionbank)宣布,即將為其客戶推出一項加密貨幣服務。該金融機構將為其移動應用程序的特定用戶提供兌換比特幣和其他數字貨幣的選擇,而無需第三方錢包。菲律賓聯合銀行正在努力成為該國第一家在其移動應用中促進加密貨幣兌換的全能銀行。該銀行相關負責人Cathy Casas表示,我們認識到,加密貨幣已經是很多客戶在尋找的服務之一,尤其是年輕一代,這種需求被大流行加速了。

此外,聯合銀行稱,新的交易功能最初將提供給銀行應用程序的隨機預選用戶,但它的目標是在不久的將來進行更廣泛的推廣。(Bitcoin.com)[2022/8/13 12:23:14]

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:PROBOXETAPROXprops幣會不會退出市場BOXX價格MetaVPadProxeus

芝麻開門交易所
比特幣:比特幣半年創下歷史高潮,8000一枚的以太坊,能否續寫神話?_HongKong BTC bank

今年的區塊鏈的市場真可謂是火熱,比特幣一路飆升至26萬一枚,創下截止2020年的最高紀錄,那么位居第二的以太坊,價格也是跟隨漲幅,現如今只要手里有幣者都已經分到了第一杯羹.

1900/1/1 0:00:00
FTT:老幣第1期:中線空單布局,目標24000_ftt幣詳細介紹

老幣第1期:中線空單布局,目標24000昨日過山車日線報收一個帶有上下影線的實體中陰,幣價自41900以來連續5個交易日持續走跌,每日收盤雖報收較長幅度的下影,但是第二個交易日都能延續下跌.

1900/1/1 0:00:00
BIT:幣圈羅浩天:1.13btc持續下行,日內建議繼續高空_ETH

市場風云,變幻莫測,不如定其心,觀其勢,謀定而后動,取己所需,不貪婪,不好戰,收放自如,方能穩操勝券!大家好我是羅浩天! 實時快訊 截至1月12日,BTC活躍地址數為98.75萬.

1900/1/1 0:00:00
比特幣:炒幣教父1.14:幣價回調 幣圈往年春難事件或會重啟?_區塊鏈MOVEZ幣

消息面:灰度信托再次增持2172枚比特幣,除此之外也增持了少量的LTC以及BCH,作為市場的多頭風向標,與此同時這也應驗了教父昨日文章的預測,那么經過灰度這次再次出手.

1900/1/1 0:00:00
BAS:Basis的算法穩定幣實踐之路_PUNK-BASIC

原標題:Basis:走向何方雖然感覺過了好久,但其實Basis上線才一個多月,還是新生的項目。Basis是當初basecoin模式的繼承者,在經過這段時間的實踐之后,basis的創始人是如何看待.

1900/1/1 0:00:00
REN:老山說幣:大資金進入?后市必破4w?_Monsterra

各位朋友們,你們好,我是老山說幣。在這個市場,如果你處于一直虧損的狀態,不如換個環境。也許正是你的一次改變,會給你帶來不一樣的結果.

1900/1/1 0:00:00
ads