以太坊價格 以太坊價格
Ctrl+D 以太坊價格
ads

TRU:Rust智能合約養成日記(9)-ODAILY

Author:

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

程序維護中的一個基本問題是——缺陷修復總會以%的機率引入新的bug。所以整個過程是前進兩步,后退一步。——布魯克斯《人月神話》

1.合約升級的必要性

智能合約本質上是程序,既然是程序,缺陷就不可避免。即便是經過大量測試和審計的智能合約,仍然可能會有漏洞。合約的漏洞如果被攻擊者利用,可能造成用戶資產的損失,導致嚴重的后果。漏洞的修復往往需要通過合約升級來實現。除了漏洞修復,新特性的加入也需要合約升級。因此合約的可升級性非常有必要。本期Rust智能合約養成日記,將為大家介紹Rust合約的升級方式。

2.Solidity合約常見升級方式

以太坊中,智能合約具有不可變性,一旦被部署到鏈上,沒有人可以改變它。

那么如果合約存在漏洞或合約需要添加新功能,該如何修改合約的代碼?解決方案是將新的合約部署到區塊鏈上。

該方法面臨的挑戰是,solidity每次部署合約后,合約都會被分配一個唯一的地址。因此所有用到了該合約的DApps都需要修改合約地址來適配新的合約。此外,舊版本合約中的狀態需要遷移到新版本合約中,狀態較為復雜的合約遷移的工作量很大,容易出錯,而且復制數據的Gas費用高。

EOS EVM正式名稱確定為Trust Network,測試網目前處于開發者預覽階段:金色財經消息,EOS網絡基金會發布推特稱,EOS EVM的官方名稱將更換為Trust Network。

據相關資料顯示,Trust是基于EOS網絡的以太坊虛擬機,為開發人員提供了一個交鑰匙解決方案。Trust測試網目前處于開發者預覽階段。此前報道,根據EOS網絡基金會發布的季度報告,EOS EVM網絡的測試網將于第二季度推出,主網將在第三季度推出。[2022/4/20 14:34:38]

因此,我們通常采用數據和邏輯分離的架構,將數據保存在一個不處理任何邏輯的合約中,所有的邏輯在另一個合約中實現。通常合約升級修改的是邏輯,使用該架構只需要升級邏輯合約,不需要擔心狀態遷移。

為了解決這個問題,可以使用代理合約,具體架構如下圖所示。

代理合約用來來存儲數據,并且使用delegatecall調用邏輯合約A,這樣合約A讀寫的數據都存儲在代理合約中。如果需要升級邏輯合約,部署新的合約B,然后發一條交易給代理合約,讓代理合約指向新的邏輯合約B即可。

Hex Trust完成1000萬美元融資 Animoca Brands領投:10月5日消息,加密資產托管商Hex Trust完成1000萬美元融資,Animoca Brands領投。參與本輪投資的還有 Ripple Labs、Algorand Foundation、BCW Group、Tessera Capital Partners、Mind Fund、Double Peak Group 和 Token Bay Capital。

Hex Trust表示,新資金將用于進一步完善其市場基礎設施和安全框架,以支持其 Hex Safe 托管平臺。新資本還將為公司在新加坡和越南辦事處的擴張提供資金,并在歐洲和中東建立業務。[2021/10/5 20:07:26]

3.NEAR合約升級常用方法

接下來我們將以StatusMessage項目為例,給大家介紹NEAR合約的常用升級方法,如下是StatusMessage的合約代碼

富達為加密托管機構KingdomTrust退休賬戶提供比特幣托管服務:7月14日消息,管理著130億美元資產的加密托管機構KingdomTrust與資產管理巨頭富達旗下富達數字資產(FidelityDigitalAssets)達成獨家托管協議,富達數字資產將為其退休賬戶提供比特幣托管服務。資金存儲在一個名為Choice的自助退休平臺上,投資者可以在一個享有稅收優惠的帳戶中買賣或持有股票、交易所交易基金(ETF)以及數字資產。使用Choice的退休人員將不必管理自己的私鑰,而是選擇將比特幣完全由富達保存在冷錢包中。

KingdomTrust首席執行官RyanRadloff表示,就個人而言已經逐漸信任富達品牌家族,退休賬戶中的比特幣現在可以由富達數字資產來保護。也適用于那些考慮將比特幣作為其退休投資組合的人。(Prnewswire)[2020/7/14]

我們先將編譯好的合約部署在測試網上。

transaction如下

美國足球明星Russell Okung投資比特幣支付應用Fold:美國足球明星Russell Okung創辦的公司Okung Ventures已投資比特幣支付應用Fold,以幫助加密貨幣持有者獲得BTC,并將其用于消費。Okung在接受《福布斯》采訪時表示,找到更多獲取比特幣的方法與讓更多人對購買比特幣感興趣同樣重要。(Cointelegraph)[2020/4/22]

接著我們調用set_status方法,向合約中存儲數據

transaction如下

接下來我們詳細討論兩種不同的合約升級情況

3.1合約數據結構未被修改

例如我們增加一個函數:

動態 | COTI推出用于區塊鏈的多功能Trustchain協議:據Thepaypers消息,COTI宣布推出Trustchain協議AlphaNet,這是一種面向企業,商家,支付應用程序開發商和穩定硬幣發行商的端到端解決方案。[2018/9/24]

編譯后使用deploy重新部署:

編譯后使用deploy重新部署:

接著我們調用get_status方法讀取之前寫入的數據

原來合約中的數據能成功讀取:

這是因為NEAR合約可以重復部署,如果一個賬戶已經部署過合約,再次調用neardeploy命令可以將新的合約代碼部署到該賬戶上。如果我們只修改合約邏輯,不涉及數據結構的修改,可以直接使用neardeploy部署新的代碼。

3.2合約數據結構被修改

我們將該合約升級,修改了原來的數據結構,去除了records,新增了taglines和bios

我們嘗試再次重新部署:

合約還是成功部署了:

但是我們調用get_tagline方法讀取存儲的數據:

會發現出錯了,錯誤提示如下:

Cannotdeserializethecontractstate.

具體的transaction見:

https://explorer.testnet.near.org/transactions/4hQQ1zAwU5bsbfb6tA6DQDqjmFcHsBwaBctdHaPiCKHu

這是因為合約的狀態是以序列化數據的形式進行持久化存儲的,重新部署合約后,代碼中的數據結構變了,狀態沒有變,新的數據結構匹配不上舊狀態,就出錯了。

3.3Migrate升級智能合約

NEAR提供了Migrate方法去幫助我們對合約進行升級,針對3.2中所出現的錯誤,我們在新的合約中加入migrate方法:

代碼中的#表示在migrate函數執行前不要加載狀態。接著,我們重新部署合約,但是在部署的同時調用migrate方法

如下所示,該合約被成功部署:

我們嘗試調用合約新增的方法get_tagline去獲取新增的數據taglines

可以看到方法被成功調用,舊的合約數據也被遷移到新的合約

4.合約升級的安全考量

合約安全升級首先要考慮權限控制,一般合約只能由開發者或DAO升級。上一期Rust智能合約養成日記合約安全之權限控制介紹了特權函數的訪問控制,一般合約的升級函數為onlyowner函數,確保只能由owner調用。

我們推薦盡可能將合約的owner設置為DAO,通過提案和投票來共同管理合約。因為owner設置為個人賬戶,合約高度中心化,owner可以隨意修改合約數據,還存在owner私鑰丟失的風險。

除此之外,開發者在做合約遷移時,還可以考慮以下幾點建議

在遷移函數前加入#,確保執行遷移函數前不加載狀態。

遷移完成后盡量刪除遷移函數,確保遷移函數只被調用一次。

新增的數據結構在遷移時完成初始化。

Tags:USTTRUSTTRU比特幣UST幣trustwallet怎么提現人民幣tru幣前景比特幣錢包手機版app

中幣下載
AAB:AAX學院帶你了解4種利用NFT賺錢方法-ODAILY

非同質化代幣可以成為合法的賺錢方法。到今天為止,你幾乎可以將任何東西鑄成NFT——從稀有的棒球卡、數字藝術、游戲內配件,甚至是你實體的房地產。NFT正慢慢地融合實體世界和數字世界.

1900/1/1 0:00:00
NFT:DAO生態系統概述-ODAILY

DAO 從叢林法則到人類法則,人類是依賴并需要合作才能生存和繁榮的社會動物。因此,我們始終將自己組織成部落、團體、團隊、委員會、公司和其他形式的集體行動,以發展、學習、適應、協調和執行我們的更高.

1900/1/1 0:00:00
ORC:參與Orcanauts游戲,贏取Solana Riptide黑客松獎勵-ODAILY

你是游戲開發的行家嗎?對于SolanaRiptide黑客馬拉松,Orca為基于我們旗艦NFT項目Orcanauts建造的最好的游戲提供了一份特別的獎勵! 如何贏取 從2月2日到3月17日.

1900/1/1 0:00:00
NCE:區塊客周刊:V神登上《時代》雜志封面-ODAILY

2022.3.21第110期 本期關鍵字 亞馬遜推出類元宇宙游戲;Binance獲得運營執照;芒果TVAPP推出數字頭像;林俊杰展示無聊猿飾品;Layer2賽道的領跑者;時尚行業發力NFT.

1900/1/1 0:00:00
TENS:執法部門如何追查從Bitfinex被盜的94,000枚比特幣?-ODAILY

美國司法部在2022年2月的一份聲明中宣布,在控制了被盜資金的錢包后,它已成功扣押了2016年對加密交易所Bitifinex的黑客攻擊中流失的大部分比特幣.

1900/1/1 0:00:00
ART:How to NFT 3:藝術-ODAILY

藝術NFT興起主要由一個數字藝術家的小型社區推動。隨著這個場景獲得更多的關注度和影響力,其他藝術家也慢慢加入進來.

1900/1/1 0:00:00
ads