以太幣交易所 以太幣交易所
Ctrl+D 以太幣交易所
ads

本體技術視點 | 一文讀懂Substrate的合約機制(一)_STO

Author:

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

本期我們分享來自本體技術團隊的一篇文章的第一部分,關于Substrate的合約機制分析。

01

概要

Substrate把整個程序邏輯分為Host和Runtime部分,Host功能是固定的,偏向于底層,是采用原生執行的方式,而Runtime部分是動態的,偏上層業務,編譯成Wasm字節碼,這樣可以隨時升級,其執行在Wasm虛擬機中。合約功能作為上層業務,放置在runtime中,由contractpallet模塊負責。通過分析本文主要要搞清楚兩個問題:

1.合約設計的經濟模型:交易執行收費和存儲租金機制;

美媒:馬斯克曾試圖就推特問題與FTC主席會面,但遭到拒絕:金色財經報道,馬斯克曾要求與美國聯邦貿易委員會(FTC)主席莉娜·可汗(Lina Khan)會面,但遭到了拒絕。該委員會一直在調查推特的隱私和數據操作。一位知情人士表示,馬斯克是在去年年底做出這一嘗試的。馬斯克試圖與FTC聯系,表明了該機構對推特調查的嚴重性。該機構調查的重點是,在馬斯克去年收購這家社交媒體公司并解雇了數千名員工之后,這家公司是否有足夠的資源保護用戶的隱私。據悉該機構曾單獨尋求就調查與馬斯克面談,但一位知情人士說,會談尚未進行。[2023/3/31 13:36:33]

2.合約的執行機制:本身跑在Wasm虛擬機里的runtime里是怎么跑用戶Wasm合約的。

The Sandbox宣布即將發布戈登-拉姆塞\"地獄廚房\"阿凡達系列NFT:金色財經報道,NFT 游戲平臺The Sandbox宣布即將發布戈登-拉姆塞\"地獄廚房\"阿凡達系列NFT。該系列包含 2,333 個頭像,其外觀靈感來自這位著名廚師本人。這些頭像讓粉絲們能夠以時尚的方式展示他們對 Ramsay 和 The Sandbox 的熱愛。此外,The Sandbox 將于 3 月 14 日發布該系列。[2023/3/10 12:53:11]

Runtime的contractpallet擴展了Currencytrait的賬戶系統,因此可以和其他基于Currency實現賬戶系統的模塊一起使用。擴展的合約賬戶具有實例化合約和調用其他合約和非合約賬戶的功能。

BNB市值超越USDC:11月9日消息,據CMC最新數據顯示,當前BNB市值已經超過USDC,成為市值第四大加密貨幣。截止目前,BNB市值約為48,854,477,284美元,過去1小時漲幅2.13%,USDC市值約為42,744,012,045。[2022/11/9 12:39:23]

為了合約代碼的復用,將合約代碼的上傳部署和合約賬戶的實例化分成兩部分,多個合約賬戶可以從同一份上傳的code進行實例化。

02

合約的經濟模型

為了避免垃圾交易和惡意合約占用計算和存儲資源,合約的設計考慮了交易執行收費和合約存儲收費邏輯。當合約賬戶的余額不夠支付存儲租金時,合約的存儲會被清理并進入tombstone狀態。

合約的生命周期

alive狀態的合約信息

當合約處于正常工作狀態,其主要有以下信息:

tombstone狀態的合約信息

當合約進入tombstone狀態后,合約的所有存儲都會被清理,合約信息里只有一個對storage_root+code_hash進行hash的值。

合約的復活

合約進入tombstone狀態后,技術上是可以進行恢復的。首先需要準備一本新臨時合約T,往T合約的存儲中插入原合約中的key-value對,使storageroot和原合約完全一致,然后調用restore_to合約接口,這個接口會檢查當前合約的storageroot是否和要恢復的tombstone一致,如果滿足要求那么就使原合約復活,并且將當前的臨時合約的資產轉移到復活合約,并銷毀當前臨時合約。

執行合約的Gas收費

交易的sender必須在每個call中指定gaslimit,未使用完的gas會在調用結束后返還。當到達了指定的gaslimit后,那么所有的call和相關的狀態變更只會在當前調用的合約層進行回滾,比如,合約A調用B,并且B執行時gas不夠,那么所有B的調用將被回滾。如果A能對錯誤進行正確處理,那么A的其他調用和狀態變更依然可以進行持久存儲。初看起來這樣做是一個極大的限制,但其實是底層增加了靈活性,因為并不是所有的調用都是災難性的,因此給了調用方可以進行合理的判斷和處理的機會;如果想要其他鏈那種出錯就完全回滾的方式,那么可以在調用B出錯后A也直接報錯回滾A的變更。

對于Wasm的每一個指令和host函數都設置了對應的InstructionWeight。

runtime會準備一個gas(amount:u32)的計費函數,在Wasm合約上傳后,立刻會對Wasm中的每一個函數進行計費函數的插入生成新的code。后續合約的執行都以新的code為準。

下一期我們將繼續圍繞Substrate的合約存儲的收租機制、Wasm合約限制、合約對外部交易的接口等方面展開。

如有任何疑問,可通過research@ont.io聯絡我們。

來源:金色財經

Tags:STOBSTASMWASstos幣最新消息ABSTPhantasma EnergyWasdaq Finance

萊特幣最新價格
炒幣教父:別把投資當成了游戲 誰游戲了市場 市場就懲罰誰_比特幣

??炒幣教父的粉絲們大家下午好,今天是12月10日,在這里還是先將心態和行情分享給大家。 消息面: 摩根大通稱,比特幣牛市行情并未結束,將加碼看多比特幣.

1900/1/1 0:00:00
馬云:加速落地“三分鐘講透經典”讓醫生、消費者更了解中醫藥_BOI

11月28日,在鄭州舉行的“左歸丸治療少弱精子癥真實世界研究項目啟動會”上,仲景宛西制藥營銷總經理馬云接受醫藥經濟報采訪:在醫改深入推進下,醫藥營銷模式面臨變革,企業也在積極向學術推廣轉型.

1900/1/1 0:00:00
胖哥說幣:12.9ETH午間行情分析_GMX

知足之人,雖臥地方,猶為安樂。不知足者,雖處天堂,亦不稱意。人性本身導致了跌市的恐慌和升市的貪婪.

1900/1/1 0:00:00
BTC信托份額占比超80% ETH信托份額明顯上升_BTC

BTC信托份額占比超80%,ETH信托份額明顯上升6月以來,灰度BTCTrust的資管規模從6月1日的約34.03億美元擴大至12月4日的約104.69億美元,漲幅約為207.66%.

1900/1/1 0:00:00
馮鴻運:12.11黃金白銀T+D價格行情分析及操作建議.外匯黃金短線布局解套_AGA

  黃金技術分析:      黃金昨日行情白盤階段雖然經歷較為猛烈的下跌,但是成功打破1848-1852區間,前期價格在此區域形成多次頂底轉換,是市場最為主要的支撐位置,此位置已經被跌破.

1900/1/1 0:00:00
幣在研究院:波卡平行鏈 PLO 競拍經濟模型探究_DOT

1.概覽 BitZ幣在研究院一直密切關注波卡生態及其PLO競拍,在波卡平行鏈競拍即將開始之前,我們把對波卡平行鏈競拍規則、競拍的經濟模型測算等研究成果向大家分享.

1900/1/1 0:00:00
ads