什么是可升級(jí)合約

什么是可升級(jí)的智能合約腰池?

你可能知道隙疚,智能合約是所有可編程區(qū)塊鏈(如以太坊上)的一個(gè)重要組成部分壤追。通過確保事情按照預(yù)定的規(guī)則運(yùn)行,智能合約強(qiáng)制執(zhí)行秩序供屉。沒有智能合約行冰,就沒有加密代幣、NFT贯卦,也沒有DApps资柔。但是,什么是可升級(jí)的智能合約撵割?嗯贿堰,首先,你需要注意啡彬,在這種情況下羹与,"可升級(jí) "這個(gè)詞并不意味著可變異。EVM的基本規(guī)則之一是庶灿,一旦合同被部署纵搁,它就不能被改變。相反往踢,可升級(jí)的智能合約使用特殊的代理模式腾誉。后者涉及部署代理合同和執(zhí)行合同(邏輯合同)。

為什么要使智能合約達(dá)到可升級(jí)

智能合約的特點(diǎn)之一就是部署到鏈上之后不能修改峻呕,這一機(jī)制使得合約的交互方都可以信任合約利职。但也帶來了一系列的問題,并且如果已部署的合約發(fā)現(xiàn)漏洞瘦癌,也是無法修復(fù)的猪贪。假如發(fā)現(xiàn)了bug,致命性的讯私,必須修復(fù)热押,那如何處理? 就是使用合約達(dá)到可升級(jí)優(yōu)化才能滿足需求斤寇。

可升級(jí)智能合約如何工作桶癣?

看上面的示意圖,你可以看到用戶通過代理合同與邏輯合同進(jìn)行互動(dòng)娘锁。由于代理合同能夠存儲(chǔ)邏輯合同的地址鬼廓,這才成為可能。然后致盟,我們通過部署一個(gè)新的邏輯合約來整合升級(jí)碎税。當(dāng)然尤慰,我們也需要在代理合同中更新邏輯合同的相關(guān)值,以實(shí)際實(shí)現(xiàn)升級(jí)雷蹂。

有許多代理模式可用伟端,它們可以用來創(chuàng)建可升級(jí)的合約。此外匪煌,雖然也有很多類型的代理模式责蝠,但大多數(shù)代理模式都使用transparent透明代理和UUPS(通用可升級(jí)代理標(biāo)準(zhǔn))。幸運(yùn)的是萎庭,這兩種類型在OpenZeppelin也有提供霜医,這讓開發(fā)者的工作變得簡(jiǎn)單了許多。此外驳规,這也是一個(gè)捷徑肴敛,在我們進(jìn)行一個(gè)例子項(xiàng)目時(shí),你會(huì)了解更多吗购。

透明代理與UUPS代理

如上所述医男,透明和UUPS代理模式是最常見的兩種類型。雖然這兩種類型都遵循相同的基本原則(如上所述)捻勉,但它們的設(shè)計(jì)卻截然不同镀梭。因此,我們需要對(duì)它們進(jìn)行快速比較踱启。以下是兩種代理模式類型各自的一些主要特征:

透明代理模式類型:

~升級(jí)由代理合同處理

~部署成本更高

~易于維護(hù)

UUPS 代理模式類型:

~升級(jí)由實(shí)施合同處理报账。這也意味著您需要將升級(jí)功能實(shí)現(xiàn)到實(shí)現(xiàn)合同中。否則埠偿,您將無法升級(jí)您的智能合約

~部署更便宜

~它使維護(hù)更具挑戰(zhàn)性

可升級(jí)智能合約案例

Params.sol 邏輯合約

部署后的合約地址:0x2CC6F64C688B0f9585B2fF4134420A5B74faD836笙什, initialize方法對(duì)應(yīng)的code為0x8129fc1c(部署代理合約的時(shí)候會(huì)用到)

ProxyAdmin.sol 管理合約

部署后的合約地址:0xcCFB00D3dd840dea0E4E258A07F870344d0fe9A4

TransparentUpgradeableProxy.sol 代理合約,DAPP直接交互的合約地址

部署需要參數(shù)胚想,如下:

~_LOGIC:邏輯合約地址,這里為 0x2CC6F64C688B0f9585B2fF4134420A5B74faD836 (Params.sol 合約部署地址)

~ADMIN_:管理合約地址芽隆,這里為 0xcCFB00D3dd840dea0E4E258A07F870344d0fe9A4 (ProxyAdmin.sol 合約部署地址)

~_DATA:邏輯合約初始化方法調(diào)用數(shù)據(jù)浊服,這里為0x8129fc1c(Params.sol initialize方法code)(只調(diào)用initialize方法,initialize方法沒有入?yún)⑴哂酰绻袇?shù)也是支持的)

部署后地址為:0xfa01ae0B2854E1F7496F879b82547a7091Bd74d5

可以使用web3測(cè)試合約是否部署成功:

至此可升級(jí)合約部署完成牙躺。

合約升級(jí)

ParamsV2.sol 升級(jí)后的邏輯合約

部署后的合約地址:0xeC05F7fFf671ae6c8368432AA8d3499D53B4F967

調(diào)用ProxyAdmin進(jìn)行升級(jí)

ProxyAdmin提供兩個(gè)方法進(jìn)行升級(jí)

~upgrade,需要傳入proxy地址腕扶,新的邏輯實(shí)現(xiàn)地址

~upgradeAndCall孽拷,需要傳入roxy地址,新的邏輯實(shí)現(xiàn)地址半抱,初始化調(diào)用數(shù)據(jù)


本例中脓恕,由于數(shù)據(jù)是保存在代理合約中膜宋,這份數(shù)據(jù)已經(jīng)初始化過了,不需要再初始化炼幔,所以調(diào)用upgrade方法即可秋茫,參數(shù)如下:

~proxy: 0xfa01ae0B2854E1F7496F879b82547a7091Bd74d5

~implementation: 0xeC05F7fFf671ae6c8368432AA8d3499D53B4F967

至此,合約升級(jí)完畢乃秀。

測(cè)試升級(jí)后的合約肛著,同理使用代理合約調(diào)用新的合約

dapp鏈接:https://www.chainpip.com/dapp-view/6752

原文鏈接(含可復(fù)制代碼):https://www.chainpip.com/dynamic/234

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市跺讯,隨后出現(xiàn)的幾起案子枢贿,更是在濱河造成了極大的恐慌,老刑警劉巖刀脏,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件局荚,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡火本,警方通過查閱死者的電腦和手機(jī)危队,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钙畔,“玉大人茫陆,你說我怎么就攤上這事∏嫖觯” “怎么了簿盅?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)揍魂。 經(jīng)常有香客問我桨醋,道長(zhǎng),這世上最難降的妖魔是什么现斋? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任喜最,我火速辦了婚禮,結(jié)果婚禮上庄蹋,老公的妹妹穿的比我還像新娘瞬内。我一直安慰自己,他們只是感情好限书,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布虫蝶。 她就那樣靜靜地躺著,像睡著了一般倦西。 火紅的嫁衣襯著肌膚如雪能真。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音粉铐,去河邊找鬼疼约。 笑死,一個(gè)胖子當(dāng)著我的面吹牛秦躯,可吹牛的內(nèi)容都是我干的忆谓。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼踱承,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼倡缠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起茎活,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤昙沦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后载荔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盾饮,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年懒熙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了丘损。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡工扎,死狀恐怖徘钥,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情肢娘,我是刑警寧澤呈础,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站橱健,受9級(jí)特大地震影響而钞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拘荡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一臼节、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧珊皿,春花似錦网缝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)垢夹。三九已至溢吻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背促王。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工犀盟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蝇狼。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓阅畴,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親迅耘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子贱枣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容