本期我們分享來自本體技術團隊的一篇文章的第一部分,關于Substrate的合約機制分析。
01
概要
Substrate把整個程序邏輯分為Host和Runtime部分,Host功能是固定的,偏向于底層,是采用原生執行的方式,而Runtime部分是動態的,偏上層業務,編譯成Wasm字節碼,這樣可以隨時升級,其執行在Wasm虛擬機中。合約功能作為上層業務,放置在runtime中,由contractpallet模塊負責。通過分析本文主要要搞清楚兩個問題:
1.合約設計的經濟模型:交易執行收費和存儲租金機制;
俄羅斯將禁止銀行使用Telegram等通訊工具聯系客戶:12月25日消息,當地媒體透露,俄羅斯的金融機構將無法通過設在國外的即時通訊工具與客戶溝通。此外,一項新法律還禁止銀行使用聊天工具發送個人數據和支付文件。雖然聯邦通信、信息技術和大眾媒體監管局尚未公布受影響的應用程序列表,但Telegram、Whatsapp、Viber等符合描述。[2022/12/25 22:06:43]
2.合約的執行機制:本身跑在Wasm虛擬機里的runtime里是怎么跑用戶Wasm合約的。
Runtime的contractpallet擴展了Currencytrait的賬戶系統,因此可以和其他基于Currency實現賬戶系統的模塊一起使用。擴展的合約賬戶具有實例化合約和調用其他合約和非合約賬戶的功能。
安全團隊:NFT項目Flippin Rabbits的Discord服務器被入侵:8月28日消息, 據安全團隊CertiK監測,NFT 項目 Flippin Rabbits 的 Discord 服務器已被入侵,提醒用戶不要點擊鏈接、鑄造或批準任何交易。[2022/8/28 12:53:43]
為了合約代碼的復用,將合約代碼的上傳部署和合約賬戶的實例化分成兩部分,多個合約賬戶可以從同一份上傳的code進行實例化。
02
合約的經濟模型
為了避免垃圾交易和惡意合約占用計算和存儲資源,合約的設計考慮了交易執行收費和合約存儲收費邏輯。當合約賬戶的余額不夠支付存儲租金時,合約的存儲會被清理并進入tombstone狀態。
安全團隊:NFTCrossChain已被確認為惡意欺詐項目:金色財經消息,CertiK監測到NFTCrossChain項目的代幣$CRC價格驟然下跌超過99%。經CertiK安全團隊調查,已確認該項目為惡意欺詐項目。截至目前,被盜資金約為44,052美元。[2022/8/26 12:50:31]
合約的生命周期
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聯絡我們。
來源:金色財經
截止今天BTC橫盤震蕩了整整23個工作日,心跳嗎?煎熬嗎?隨著大盤上下震蕩,你被割了嗎?這都不算什么,接下來幾天內會有驚喜.
1900/1/1 0:00:00這兩天CME期貨凈空頭飆升,19500上方積壓了大量空單。阿空昨天在芥末圈聊到過,這種行情下,只有多頭快速放量,才會把空軍當成燃料,完成爆空拉升,但如果沒有有效進攻,就會進入探底走勢,回踩179.
1900/1/1 0:00:00??導語:面對金融市場,有人盆滿缽滿,那就自然有人血本無歸。這就是市場上所謂的二八定律,投資本身就是有風險的,所以做這個一定要理性,雖然賺錢很容易但是虧錢一樣很容易.
1900/1/1 0:00:00?????好花盛開,就該盡先摘,慎莫待美景難再,否則一瞬間,它就要凋零萎謝,落在塵埃帶著曾經的夢中幻想,告別昨日的緊張彷徨,新的一天要大踏步邁向前方,別為過去的失去駐足不前.
1900/1/1 0:00:00在協議實驗室的規劃中,Filecoin未來將會和IPFS集成,兩者之間協同發展。作為個人,我們在使用市面上所謂的存儲應用時,有很多我們認為是理所當然的事情.
1900/1/1 0:00:00BTC行情分析: BTC4小時級別:4小時級別的燭型圖已經跌破了重要支撐144線,目前最新的燭型圖在18000附近徘徊震蕩,如果一旦被18000的壓力打壓的話,整體盤面還是會繼續向下.
1900/1/1 0:00:00