比特幣價格 比特幣價格
Ctrl+D 比特幣價格
ads
首頁 > 以太坊 > Info

UST:Rust智能合約養成日記(9)-ODAILY_Crust

Author:

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

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

1.合約升級的必要性

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

2.Solidity合約常見升級方式

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

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

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

Crust Network張佑安:Crust網絡利益比Flicoin更激勵相容:據官方消息,幣贏CoinW《共識52》第五期《IPFS憑什么崛起?——FIL狂歡 , 礦工闌珊?》主題AMA主題中,Crust Network 全球品牌負責人張佑安認為:

filecoin的礦工困難點主要在于挖礦門檻高、挖礦之前要買高配設備,挖礦還需要買幣抵押。

Crust網絡有不同的設計:

1)針對挖礦門檻高,Crust將證明問題交給TEE解決,由于沒有額外的復雜且不確定的算法,Crust的節點配置門檻較低;并且會比較固定,避免了礦機層面的不確定性。

2)Crust網絡基于GPoS權益證明,并不強制要求礦工持幣。類似波卡以及大多數波卡生態項目,礦工的節點提供服務,任何持幣者可以根據礦工的服務穩定性,用Crust代幣來進行擔保,這個擔保可以轉化為節點的有效質押。促進持幣者和節點的合作,以及促進節點提升服務質量。[2020/10/22]

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

iShares Silver Trust持倉較上日增加75.3噸:全球最大白銀ETF--iShares Silver Trust持倉較上日增加75.3噸,當前持倉量為17855.07噸。[2020/8/13]

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

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

3.NEAR合約升級常用方法

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

動態 | 2019年12月Rust語言區塊鏈生態開發活躍度調查:Solana排行第一:自從去年起被廣泛應用于眾多明星項目后,區塊鏈領域被認為是新一代系統級語言的Rust成為了加密生態的重要技術組成部分。在2019年12月活躍度統計中,Solana以343次合并位居第一。根據Rust社區12月對區塊鏈技術的生態進展總結報告,眾多Rust明星項目大多數保持著活躍的開發表現:其中以超高性能著稱的公鏈Solana以343次Github合并數位列活躍度第一、以太坊Parity客戶端以192次合并排行第二,原子跨鏈項目COMIT和分片公鏈NEAR緊隨其后。[2020/1/3]

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

transaction如下

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

聲音 | TrustToken聯合創始人:Tether事件不會影響整個穩定幣市場:5月15日,TrustToken聯合創始人兼工程和產品負責人Rafael Cosman在接受采訪時表示,對于市場的波動性和Tether事件的影響,Cosman稱過去幾周的市場上漲也使得幾大主要的穩定幣市值上升,事實上加密貨幣市場不穩定性有利于穩定幣。因為投資者會傾向于使用穩定幣存入或提取法幣,然后對其他加密貨幣進行投資。他表示Tether事件可能會對某些投資者帶來損失,但是不會影響整個穩定幣市場,對Paxos、TUSD、USDC等Tether的競爭對手來說則是利好消息。[2019/5/17]

transaction如下

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

3.1合約數據結構未被修改

TrustNote 新官網已于今日正式上線:TrustNote 官網最新版已于2018年4月24日18時18分正式上線。為了讓用戶更加了解TrustNote項目詳情,新上線官網新增了瀏覽器、測試網絡入口。[2018/4/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:USTCrustCRUNEARtrustwallet錢包地址忘記了crust幣價crust幣價格near幣歷史價格走勢

以太坊
RON:「TRON勢力」之“區塊鏈六邊形戰士”-ODAILY_馬斯克幣價格今日行情

作為全球最受歡迎的公鏈之一,波場TRON自創立以來始終保持高速發展,生態建設全面開花,各項數據突飛猛進.

1900/1/1 0:00:00
POC:Pocket Network努力提高全球可用性及網絡基礎設施安全性-ODAILY_Donu Network Token

PocketNetwork作為基礎設施中間件協議,其去中心化節點基礎設施已擴展至全球30多個國家和地區,分布于6大洲中,為Ethereum,Polygon,Solana,Avalanche.

1900/1/1 0:00:00
ENS:除了ENS,去中心化域名還有哪些項目值得關注?-ODAILY_OpenSea

Jan.2022,GeorgeDataSource:DecentralizedDomainNames2021年11月,去中心化域名項目ENS發行其項目Token并向社區空投.

1900/1/1 0:00:00
NFT:NFT大作猿猴推出ApeCoin,其價值幾何?-ODAILY_HIBAYC

今日,BoredApeYachtClub在推特發布與之有關的生態治理系統代幣ApeCoin正式推出.

1900/1/1 0:00:00
ATT:一文讀懂區塊鏈MOBA手游NoVa Battles(諾娃戰紀)-ODAILY_BAT幣

NovaBattles是一款基于區塊鏈技術的團隊MOBA手游,該公司早在2019年就開始構思區塊鏈游戲的前景,之后在設計、系統和合作伙伴方面進行了兩年的試驗.

1900/1/1 0:00:00
NFT:How to NFT 4:音樂-ODAILY_QUO價格

世界各地的音樂家也開始擁抱這一創新媒介形式,為音樂產業注入新的活力。從未發行的曲目到獨家完整的專輯,藝術家們現在可以直接以NFT的形式發布他們的歌曲,并直接從他們的粉絲那里獲得收入,沒有任何中間.

1900/1/1 0:00:00
ads