成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

使用符合 CKB 虛擬機當前系統(tǒng)架構(gòu)的真實 CPU 指令集來構(gòu)建自己的虛擬機

張紅新 / 615人閱讀

摘要:于是我們想為什么不使用符合虛擬機當前系統(tǒng)架構(gòu)的真實指令集來構(gòu)建自己的虛擬機這樣一來,我們不會丟失任何添加靜態(tài)驗證高級數(shù)據(jù)結(jié)構(gòu)或是加密算法的可能性,并且無論我們在中提供怎樣的數(shù)據(jù)結(jié)構(gòu)或算法,都可以最大化的靈活性。

Nervos 底層公鏈 CKB 的虛擬機(CKB-VM)是基于 RISC-V 打造的區(qū)塊鏈虛擬機。在前兩期中,我們介紹了 CKB 虛擬機的設(shè)計理念,以及基于 RISC-V 指令集打造的選擇邏輯。那么再往前推一步,我們?yōu)槭裁磿x擇基于真實 CPU 指令集來構(gòu)建 CKB-VM 呢?在本篇文章中,CKB-VM 設(shè)計者將和我們繼續(xù)討論 CKB-VM 的設(shè)計靈感、設(shè)計以及基于真實 CPU 指令集來構(gòu)建 CKB-VM 的額外優(yōu)勢。

秘猿科技區(qū)塊鏈小課堂第 24 期


靈感與設(shè)計

在設(shè)計 CKB-VM 之前,我們發(fā)現(xiàn)很多區(qū)塊鏈項目并不是用真實的 CPU 指令集來構(gòu)造自己的虛擬機。我們熟知的以太坊下一代虛擬機 EWASM、EOS 以及 Dfinity 等都選擇了 WASM(WebAssembly,一種編碼格式)來構(gòu)造自己的虛擬機。我們也完全可以設(shè)計出一個具有高級語言特性的 VM,比如可以用于靜態(tài)驗證,或是可以直接支持高級數(shù)據(jù)結(jié)構(gòu),或是支持各種加密算法的 VM。

但是我們發(fā)現(xiàn),雖然帶有高級語言特性的虛擬機能夠提供更多的便利,比如能夠支持語法各異的編程語言,但同時也會出現(xiàn)其他一些問題:任何復雜的、帶有高級語言功能的 VM,無論多么靈活,都不可避免的會在設(shè)計層面引入一些語義約束,出于性能的原因,不同的語言在底層幾乎需要共享相同的語義(帶有高級語言特性的虛擬機需要綁定密碼學原語,若未來現(xiàn)有的原語被攻破,或者需要更換一套密碼學原語時,需要通過分叉來實現(xiàn))。這樣一來, VM 自身的靈活性就會受到限制,這和 CKB 作為加密經(jīng)濟底層基礎(chǔ)設(shè)施的愿景并不相符。

與此同時,一個帶有高級語言功能的 VM 通常會包含某些高級的數(shù)據(jù)結(jié)構(gòu)與算法,這樣任何在 VM 中嵌入的高級數(shù)據(jù)結(jié)構(gòu)與算法都可能只適合于某一類應(yīng)用的開發(fā),卻不適用于其它應(yīng)用程序的開發(fā)。并且,我們無法預設(shè)所有可能的使用方式,這些嵌入 VM 本身的數(shù)據(jù)結(jié)構(gòu)或算法除了兼容性之外沒有任何作用,隨著時間的推移,甚至會成為負擔。

另外我們還發(fā)現(xiàn),所有的區(qū)塊鏈項目都要在馮·諾伊曼 CPU 架構(gòu)(x86,x86_64,ARM 等架構(gòu))下才能運行,并且所有高級的 VM 特性都必須映射到現(xiàn)代體系架構(gòu)的 CPU 匯編指令。

舉個例子,雖然 V8 引擎(由 Google 開發(fā)的開源 JavaScript 引擎,用于 Google Chrome 及 Chromium 中)看上去可以有無限量的內(nèi)存,但是其內(nèi)部實現(xiàn)依然需要依靠一個十分復雜的垃圾回收算法,才能在有限的內(nèi)存空間中模擬出無限的內(nèi)存空間。

類似的,Haskell (一種標準化的,通用的純函數(shù)編程語言)或是 Idris(一個通用的依賴類型純函數(shù)式編程語言) 可能具有先進的靜態(tài)類型檢查模式(在某種程度上)來證明軟件運行的正確性,但在完成類型檢查之后,還是需要通過一個翻譯層把靜態(tài)驗證后的代碼轉(zhuǎn)換成未驗證的原生 x86_64 匯編指令。

這里的關(guān)鍵在于無論我們?nèi)绾卧O(shè)計 VM,都沒有辦法太過偏離當前的體系結(jié)構(gòu)。換句話說,在任何 VM 的最底層,都需要將操作轉(zhuǎn)變成原始的匯編指令來執(zhí)行。

于是我們想: 為什么不使用符合 CKB 虛擬機當前系統(tǒng)架構(gòu)的真實 CPU 指令集來構(gòu)建自己的虛擬機?

這樣一來,我們不會丟失任何添加靜態(tài)驗證、高級數(shù)據(jù)結(jié)構(gòu)、或是加密算法的可能性,并且無論我們在 VM 中提供怎樣的數(shù)據(jù)結(jié)構(gòu)或算法,都可以 最大化 VM 的靈活性 。此外,通過真實的 CPU 指令集,我們可以最大限度的讓開發(fā)者寫出任何滿足要求的合約。

額外的優(yōu)勢

除了 靈活性 之外,基于真實 CPU 指令集的 VM 還有其它額外的優(yōu)勢:

穩(wěn)定性

為硬件設(shè)計的 CPU 指令集一旦最終確定并在芯片中使用,就難以修改,所以與通常是軟件實現(xiàn)的 VM 指令集相比,硬件指令集顯得非常穩(wěn)定。這個屬性與 Layer 1 區(qū)塊鏈 VM 的訴求非常契合,因為穩(wěn)定的指令集意味著較少的硬分叉,且不會犧牲靈活性。

運行期透明性

物理 CPU 在運行時僅需要依靠寄存器和一段內(nèi)存,在使用堆棧的操作過程中,通常內(nèi)存中的空間是指定的。這樣一來,我們可以在程序執(zhí)行期間根據(jù) VM 中的堆棧指針來獲取堆棧空間的使用情況,從而最大限度地提高運行時狀態(tài)的可見性。

CKB-VM 可以調(diào)整堆棧指針、更改內(nèi)存中的區(qū)域分配,甚至根據(jù)需要擴大或縮小堆棧區(qū)域大小,從而提高 VM 的靈活性。當前 CPU 指令集還可以提供過去周期的計數(shù),從而允許查詢 VM 的運行開銷狀態(tài)。

運行期開銷

具有真實 CPU 指令集的 VM 可以輕松管理運行期的開銷,每個指令執(zhí)行時所需的 cycle 數(shù)(不考慮流水線)是固定的。 我們可以根據(jù)真實 CPU 指令集的這個特性來設(shè)計 CKB-VM 運行時的開銷計算機制,這樣一來,當我們應(yīng)用新算法時,也可以準確地計算出所需的開銷。

但是,與通過操作碼或本機 VM 指令集實現(xiàn)加密算法的 VM 相比,使用真實 CPU 指令集存在一個關(guān)鍵的缺點: 性能 。

不過,根據(jù)研究和測試結(jié)果,我們可以通過適當?shù)膬?yōu)化和即時(Just-In-Time,JIT)編譯器實現(xiàn)來優(yōu)化基于真實 CPU 指令集在 VM 上運行的加密算法,從而滿足 CKB 應(yīng)用程序的需求。在處理即時性時,我們是基于底層指令集進行處理,而不是基于像 JavaScript 這樣的高級語言上處理,這樣會使得 VM 具備更低的工作負載和更好的性能。

Why Not WASM?

也許有人會問:在區(qū)塊鏈社區(qū)對 WebAssembly 有著強烈興趣和廣泛關(guān)注的情況下, CKB 為什么不直接使用 WebAssembly 呢?

WebAssembly 是一個偉大的項目,并且我們非常希望它最后能夠成功。一個擁有廣泛支持的沙盒環(huán)境,對于整個區(qū)塊鏈行業(yè),甚至整個軟件業(yè)來說都是件夢寐以求的事。從長遠來看,WebAssembly 也有潛力實現(xiàn) CKB 所需的大部分特性,但是它并不能提供我們在《CKB-VM 誕生記(一) 1》中提到的 RISC-V 能為 CKB-VM 帶來的所有好處,比如,目前 WebAssembly 還全都是 JIT 實現(xiàn),缺少一個合理的運行期開銷計算模型。

另外,RISC-V 從 2010 年開始設(shè)計,在 2011 年發(fā)布第一版規(guī)范,2012 年出現(xiàn)基于 RISC-V 構(gòu)建的硬件;而 WebAssembly 出現(xiàn)于 2015 年,2017 年發(fā)布 MVP,相對來說,RISC-V 會比 WebAssembly 更加的成熟,所以至少在目前階段,我們覺得使用 WebAssembly 并不是 CKB-VM 最好的選擇。

當然,我們并不是完全放棄使用 WebAssembly,考慮到 WebAssembly 與 RISC-V 同樣是底層 VM 的實現(xiàn)方式,而且很多設(shè)計和指令集十分相似, 我們完全有可能提供一個從 WebAssembly 到 RISC-V 的二進制轉(zhuǎn)換器,從而確保 CKB 也可以利用目前區(qū)塊鏈上基于 WebAssembly 的創(chuàng)新。 另外,CKB 上也能夠支持僅可以編譯為 WebAssembly 的語言(比如 Forest:https://github.com/forest-lan... )。

社區(qū)驅(qū)動的 CKB-VM

通過 CKB-VM 的設(shè)計,我們的目標是建立一個圍繞 CKB 的社區(qū),該社區(qū)可以自由地發(fā)展和適應(yīng)新技術(shù)的進步,并且可以最大限度地減少人工干預(例如硬分叉)。 我們相信 CKB-VM 可以實現(xiàn)這一愿景。

注: CKB-VM 與 CKB 一樣為開源項目,目前 CKB-VM 仍在開發(fā)過程中,盡管 CKB-VM 的大部分設(shè)計已經(jīng)敲定,但某些設(shè)計也可能會在將來,因為你的貢獻而有新的變動和推進。這篇文章是為了讓我們的社區(qū)更加了解 CKB-VM,這樣人人都可以在里面更好的玩耍并做出貢獻啦!

CKB-VM:https://github.com/nervosnetw...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/24719.html

相關(guān)文章

  • 不用 WASM,我們從頭造輪子!采用 RISC-V 設(shè)計區(qū)塊鏈虛擬 CKB-VM 誕生記

    摘要:在區(qū)塊鏈上,虛擬機就是智能合約的運行環(huán)境,是一個可以完全對外隔離的完整計算機體系。區(qū)塊鏈通過虛擬機來調(diào)用和執(zhí)行智能合約,并要求所有節(jié)點都達成一致。 秘猿科技使命是用技術(shù)創(chuàng)造信任,為價值網(wǎng)絡(luò)提供基礎(chǔ)設(shè)施和服務(wù)。為了實現(xiàn)這個使命,我們?nèi)陙韴猿殖跣?,步步為營打造加密經(jīng)濟網(wǎng)絡(luò)。我們想要讓互聯(lián)網(wǎng)回歸到本源,用區(qū)塊鏈技術(shù),去構(gòu)造更美好的社會,因此我們設(shè)計了 CKB 底層公鏈。我們自己造輪子,開創(chuàng)...

    joywek 評論0 收藏0
  • 當區(qū)塊鏈遇見 RISC-V

    摘要:在區(qū)塊鏈上,虛擬機就是智能合約的運行環(huán)境,是一個可以完全對外隔離的完整計算機體系。區(qū)塊鏈通過虛擬機來調(diào)用和執(zhí)行智能合約,并要求所有節(jié)點都達成一致。當區(qū)塊鏈遇見在很多科技領(lǐng)域都得到了運用,目前,也開始在區(qū)塊鏈領(lǐng)域逐漸的得以發(fā)展。 showImg(https://segmentfault.com/img/bVbsfi2?w=2779&h=1179); 區(qū)塊鏈的出現(xiàn)使得智能合約得到了更好的實...

    Tychio 評論0 收藏0
  • 追求極致設(shè)計理念!用 RISC-V 從頭設(shè)計 CKB 虛擬

    摘要:目前,比特幣使用的是來進行交易簽名,并且在共識協(xié)議中使用了哈希算法。盡管的實現(xiàn)提供的是最流行的加密算法,但我們鼓勵社區(qū)提供更優(yōu)化的加密算法實現(xiàn)以減少運行時開銷。 Nervos 底層公鏈 CKB 的虛擬機(CKB-VM)是基于 RISC-V 指令集打造的區(qū)塊鏈虛擬機。在上一堂分享中,我們簡單介紹了區(qū)塊鏈虛擬機,以及我們理想中的區(qū)塊鏈虛擬機的樣子。在本篇文章中,CKB-VM 設(shè)計者將詳細的...

    he_xd 評論0 收藏0
  • 下一代區(qū)塊鏈底層基礎(chǔ)設(shè)施是什么樣?

    摘要:會議中,來自全國各地的近千名區(qū)塊鏈愛好者齊聚一堂,共同探討最新的區(qū)塊鏈技術(shù)發(fā)展。呂國寧在開放日活動中,做了下一代區(qū)塊鏈底層基礎(chǔ)設(shè)施的主題分享。區(qū)塊鏈的核心價值是什么我們認為,區(qū)塊鏈的核心價值是提供信任。 showImg(https://segmentfault.com/img/bVbsM64?w=1080&h=720); 5 月 16 日,由杭州市金融辦指導,巴比特主辦的 2019 杭...

    huangjinnan 評論0 收藏0
  • 區(qū)塊鏈虛擬,WASM 和 RISC-V 哪個更合適?

    摘要:的開發(fā)團隊分別來自等公司,標準由組織制定,目前在以太坊下一代虛擬機以及項目中被使用。推特原文內(nèi)容摘要首先提出疑問對虛擬機用比更好表示嚴重懷疑。與此同時,選擇區(qū)塊鏈虛擬機時并不是只需要考慮高性能實現(xiàn)的難度。 showImg(https://segmentfault.com/img/bVblNDb?w=1882&h=802); Nervos 將在舊金山做一場主題為「Say Hello to...

    CocoaChina 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<