Facebook Move 語言虛擬機器 VM 簡介

2021-09-24 19:55:18 字數 850 閱讀 4705

move vm 執行以 move 位元組碼表示的交易。它有兩個核心包:核心 vm 和 vm 執行時。vm 核心包含 vm 的低階資料型別——主要是檔案格式及其抽象。此處還定義了燃氣計量(gas metering???)邏輯抽象。

movevm 是具有靜態型別系統的堆疊機。 movevm 從幾個方面來約束 move 語言規範,包括混合檔案格式、驗證(可參閱驗證器 readme)和執行時的約束。檔案格式的結構允許定義模組,型別(資源和非限制型別)和函式。**通過位元組碼指令表示,位元組碼指令可以引用外部函式和型別。檔案格式還強加了語言的某些不確定量,例如 opaque 型別和私有字段。根據檔案格式的定義,我們知道可以通過模組(modules)來定義函式或型別的作用域(scope)或者說命名空間(namespaces,譯註:就是包名)。如果所有欄位都是私有的,則型別是不透明的,並且型別不帶任何函式或方法。

libra / language / vm / src / file_format.rs 中的 compiledmodule 和 compiledscript 定義分別是 move module 或 transaction script 的頂級結構。這些結構提供了對檔案格式的簡單抽象。此外還定義了一組檢視,以便輕鬆瀏覽 compiledmodules/compiledscripts。

├──cost_synthesis   #天然氣成本合成基礎設施

├──src # vm 核心檔案

├──測試 #proptests

├──vm_genesis # 幫助生成乙個創世塊,即區塊鏈的初始狀態

└──vm_runtime # 直譯器和執行時資料型別(參見該資料夾中的 readme)

譯自

Facebook Move 語言簡介

move 是一種新型程式語言,旨在為 libra 區塊鏈提供安全及可程式設計的基礎。move 語言的目錄一般由五個部分組成 libra 核心元件通過 vm 與 move 元件互動。具體說,就是保證在接納元件的控制下,只有通過了 vm 清理那些無效的交易之後才能進入記憶體池 mempool 進行協商 ...

C 語言基礎 例程 虛函式

賀老師的教學鏈結 本課講解 指向基類的指標,為何只能訪問來自基類成員?include include using namespace std 宣告基類student class student student類成員函式的實現 student student int n,string nam,floa...

C 語言基礎 12 虛函式

1.只需要在虛函式的宣告處加上 virtual 關鍵字,函式定義處可以加也可以不加。2.為了方便,你可以只將基類中的函式宣告為虛函式,這樣所有子類中具有遮蔽 覆蓋 關係的同名函式都將自動成為虛函式。3.當在基類中定義了虛函式時,如果派生類沒有定義新的函式來遮蔽此函式,那麼將使用基類的虛函式。4.只有...