買以太坊 買以太坊
Ctrl+D 買以太坊
ads
首頁 > PEPE > Info

Crust:Rust智能合約養成日記(9)_CRUNCH價格

Author:

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

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

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

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

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

FTX US已申請NYDFS信托章程,即將成立信托公司FTX Trust:5月12日消息,FTX US已申請美國紐約金融服務部(NYDFS)頒發的信托章程,申請信托章程意味著平臺可以行使受托權,而僅獲得 BitLicensee 許可證則不能擁有這一權限。有限目的信托公司可以在紐約從事貨幣轉移,而無需獲得單獨的紐約貨幣轉移許可證。監管部門批準后,FTX.US 將允許為紐約民眾提供加密服務。

此外,FTX 還表示已任命Marissa MacDonald為 FTX Trust Company, LLC 的首席合規官,該公司是 FTX US 即將成立的紐約州有限目的信托公司。[2022/5/12 3:09:44]

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

Crust Shadow Network即將上線 Karura Swap:金色財經報道,據波卡(Polkadot)官方消息,Crust Shadow Network 原生代幣 CSM 在 Karura Swap 上線,CSM/aUSD 交易對于北京時間 4 月 27 日 早7:30 以 Bootstrap 模式啟動,交易池計劃于 北京時間 4 月 27 日 22:30 啟動。據悉,Karura Swap 為CSM 持有者、Crust Shadow Network 社區和交易者提供多元化的交易工具。在 Karura Swap 中,如果有足夠的流動性并通過 Gauntlet 的風險評估,CSM 則可成為鑄造 aUSD 的抵押資產。Crust Network 是一個通用的、專用的存儲區塊鏈,為整個 Web3 生態系統提供真正去中心化的文件存儲和托管功能,賦予隱私和數據所有權,目前擁有 4300+ 個節點和 1500+ PB 的存儲容量。[2022/5/2 2:45:26]

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

Crust市場負責人:Crust提供了Web3?態系統的去中?化存儲?絡:在10月17日由Polkaworld主辦的“波卡中國行”深圳站上,Crust市場負責人Steve談到,Crust提供了Web3?態系統的去中?化存儲?絡,?持包括IPFS在內的多種存儲層協議,并對應?層提供接?。Crust的技術棧還能夠?持去中?化計算層。Crust旨在構建?個重視數據隱私和所有權的分散式云?態系統。Crust將于近期開展其有獎勵測試網的招募活動,并預留了不少于30萬代幣的等值獎勵用于第一階測試網的礦工激勵。[2020/10/17]

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

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

黃金ETF SPDR Gold Trust持倉降低1.52%:全球最大黃金ETF--SPDR Gold Trust持倉較上日減少14.04噸,降幅1.52%,當前持倉量為908.19噸。[2020/3/21]

3.NEAR合約升級常用方法

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

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

transaction如下

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

transaction如下

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

3.1合約數據結構未被修改

例如我們增加一個函數:

編譯后使用deploy重新部署:

編譯后使用deploy重新部署:

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

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

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

3.2?合約數據結構被修改

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

我們嘗試再次重新部署:

合約還是成功部署了:

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

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

Cannotdeserializethecontractstate.

具體的transaction見:

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

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

3.3?Migrate升級智能合約

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

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

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

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

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

4.合約升級的安全考量

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

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

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

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

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

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

Tags:USTCRUCrustNEARGlobal Digital Cluster CoCRUNCH價格crust幣最新消息near幣的未來

PEPE
BIKI:BiKing幣王交易所迎來全新升級,帶你遨游加密數字體系_KING

DeFi這一創新性的概念,極大地刷新了市場認知,伴隨著極速增長的市場份額和日新月異的發展攻勢,為中心化數字資產平臺帶來了前所未有的機遇與挑戰.

1900/1/1 0:00:00
APO:BitWell研究院——ApolloX(APX)項目解析_apx幣子

1、研究院短評 ApolloX是一個中心化與去中心化結合的加密貨幣衍生品交易所,目前已開啟交易采礦活動,平臺幣APX有通縮機制,平臺會自動回購每筆交易的1%并銷毀.

1900/1/1 0:00:00
WAVES:深度剖析Waves:「俄羅斯以太坊」敘事背后的龐氏游戲?_Binance USD

原文作者:0xHamZ 原文編譯:DeFi之道 今日,DeFi研究員0xHamZ在其個人社交媒體平臺上發布了關于Waves的看法,在他看來,Waves目前正在運行一個不可持續的龐氏游戲.

1900/1/1 0:00:00
Aztec:ZT傾聽你的聲音_GLORYD

親愛的用戶: ????爲了最大限度的加強ZTGLOBAL的安全系統和提升產品的體驗,zt將持續傾聽,期待能與您共同建設良好的社區,我們於2022年4月2日特此發聲.

1900/1/1 0:00:00
KEX:BKEX 關于\"MOONEY充值福利\"活動的公告_GLO

親愛的用戶: 為回饋廣大用戶,BKEX現開展"MOONEY充值福利"活動詳情如下: 一、活動時間 2022年4月1日17:00-4月6日17:00BKEX平臺幣BKK回購銷毀機制升級為每周銷毀:.

1900/1/1 0:00:00
OBI:Enjoy Up to 200% APY on MC with Huobi Earn_ENJ

DearValuedUsers,HuobiGlobalwillbelaunchingdepositeventsforMC.Makeyourdepositstoearnhigh-yieldinte.

1900/1/1 0:00:00
ads