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

資訊專(zhuān)欄INFORMATION COLUMN

追求極致的設(shè)計(jì)理念!用 RISC-V 從頭設(shè)計(jì) CKB 虛擬機(jī)

he_xd / 3279人閱讀

摘要:目前,比特幣使用的是來(lái)進(jìn)行交易簽名,并且在共識(shí)協(xié)議中使用了哈希算法。盡管的實(shí)現(xiàn)提供的是最流行的加密算法,但我們鼓勵(lì)社區(qū)提供更優(yōu)化的加密算法實(shí)現(xiàn)以減少運(yùn)行時(shí)開(kāi)銷(xiāo)。

Nervos 底層公鏈 CKB 的虛擬機(jī)(CKB-VM)是基于 RISC-V 指令集打造的區(qū)塊鏈虛擬機(jī)。在上一堂分享中,我們簡(jiǎn)單介紹了區(qū)塊鏈虛擬機(jī),以及我們理想中的區(qū)塊鏈虛擬機(jī)的樣子。在本篇文章中,CKB-VM 設(shè)計(jì)者將詳細(xì)的介紹 CKB 虛擬機(jī)的設(shè)計(jì)理念,以及選擇 RISC-V 指令集背后的思考邏輯。

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


CKB-VM 的設(shè)計(jì)理念

CKB 是 Nervos Network 的基礎(chǔ)層,其目標(biāo)是 為上層應(yīng)用提供足夠的安全性和去中心化 。在調(diào)研 CKB-VM 選型的過(guò)程中,我們反復(fù)思考:CKB-VM 應(yīng)該要有哪些特性?顯然,對(duì)于一個(gè)在區(qū)塊鏈上使用的虛擬機(jī),有兩個(gè)關(guān)鍵特性在任何情況下都必須滿足:

確定性 :對(duì)于固定程序和輸入,虛擬機(jī)必須始終返回固定的輸出結(jié)果,結(jié)果不會(huì)由于時(shí)間、運(yùn)行環(huán)境等其他外部條件而改變;

安全性 :執(zhí)行虛擬機(jī)時(shí)不會(huì)影響到平臺(tái)本身的運(yùn)行。

但是這些條件僅僅是強(qiáng)制性條件,我們希望設(shè)計(jì)出一個(gè)虛擬機(jī),能夠更好地服務(wù)于 CKB 的目標(biāo)。經(jīng)過(guò)深思熟慮,我們認(rèn)為這樣的虛擬機(jī)應(yīng)該 滿足如下特性:

靈活性

我們的目標(biāo)是設(shè)計(jì)出一個(gè)足夠靈活,能夠長(zhǎng)期運(yùn)轉(zhuǎn)的虛擬機(jī),從而使得 CKB 能夠與密碼學(xué)的發(fā)展攜手并進(jìn)。密碼學(xué)的歷史是一段「執(zhí)劍」和「破壁」的永恒之戰(zhàn):數(shù)千年的密碼學(xué)發(fā)展史,加密與解密是一場(chǎng)沒(méi)有終點(diǎn)的智力角逐,過(guò)往如此,未來(lái)亦然。一些適用于今天的加密算法,比如 secp256k1,將來(lái)可能會(huì)被淘汰;未來(lái)還會(huì)有更多有價(jià)值的新算法和技術(shù)(如 Schnorr 或后量子簽名等)不斷涌現(xiàn)。在區(qū)塊鏈的虛擬機(jī)上運(yùn)行的程序,應(yīng)該能夠更自由便捷地使用新的算法,同時(shí)那些已經(jīng)被過(guò)時(shí)的算法應(yīng)該能夠自然地被淘汰。

為了方便理解,我們用比特幣來(lái)舉例。目前,比特幣使用的是 SIGHASH 1 來(lái)進(jìn)行交易簽名,并且在共識(shí)協(xié)議中使用了 SHA-256 哈希算法。那么我們能夠確保幾年后比特幣用的這種 SIGHASH 方式仍然是最好的選擇嗎?或者說(shuō),伴隨著日益增長(zhǎng)的算力,SHA-256 仍然適合作為穩(wěn)定的哈希算法嗎?而目前我們研究的所有區(qū)塊鏈協(xié)議,若需要升級(jí)加密算法,則則不可避免地需要硬分叉。 在設(shè)計(jì) CKB 時(shí),我們希望探索如何通過(guò) VM 的設(shè)計(jì)來(lái)降低硬分叉的可能性。

我們?cè)谒伎?,虛擬機(jī)是否可以允許升級(jí)加密算法?或者說(shuō),是否能夠向 VM 添加新的交易驗(yàn)證邏輯?比如,在仍然使用 secp256k1 的情況下,如果有經(jīng)濟(jì)激勵(lì)的驅(qū)動(dòng),或者出現(xiàn)更新算法的需求,我們是否可以在不分叉的前提下實(shí)現(xiàn)更高效的簽名驗(yàn)證算法?又或,如果有人找到了在 CKB 上實(shí)現(xiàn)更好算法的途徑,或者需要引入一個(gè)新的加密算法,那么我們是否能夠確保他/她自由的實(shí)現(xiàn)?

我們希望 CKB-VM 能夠給大家提供更多的實(shí)現(xiàn)空間,最大限度地提供靈活性,并且可以讓用戶無(wú)需等待硬分叉即可使用新的加密算法。

運(yùn)行透明性

在對(duì)當(dāng)前這一代區(qū)塊鏈 VM 進(jìn)行研究后,我們注意到了一個(gè)問(wèn)題,還是以比特幣為例:比特幣的 VM 層提供的僅僅是一個(gè)堆棧,并且執(zhí)行時(shí)堆棧無(wú)法知曉可以存儲(chǔ)在堆棧上的數(shù)據(jù)大小,或堆棧深度,其它所有以堆棧模式實(shí)現(xiàn)的 VM 都有同樣的問(wèn)題,雖然共識(shí)層可以提供堆棧深度的定義或間接提供堆棧深度(基于指令長(zhǎng)度或 gas 限制)。這會(huì)讓 VM 上的程序開(kāi)發(fā)者必須要去猜測(cè)程序運(yùn)行時(shí)的狀態(tài),這種類(lèi)型的 VM 讓程序無(wú)法充分發(fā)揮 VM 的全部潛能。

基于這個(gè)問(wèn)題,我們認(rèn)為應(yīng)該優(yōu)先定義 VM 操作期間所有資源的限制,包括 gas 限制和堆??臻g大小,并讓在 VM 上運(yùn)行的程序能夠查詢(xún)資源的使用情況, 這將使得在 VM 上運(yùn)行的程序可以根據(jù)資源可用性來(lái)采用不同的算法 。通過(guò)這種設(shè)計(jì),程序可以充分發(fā)揮 VM 的潛能。并且在以下場(chǎng)景中,我們能夠看到 VM 更多的靈活性:

可以根據(jù)用戶在 CKB 上可用的存儲(chǔ)空間(Cell Capacity)為存儲(chǔ)數(shù)據(jù)的智能合約選擇不同的策略。當(dāng) Cell Capacity 充足時(shí),程序可以直接存儲(chǔ)數(shù)據(jù)以減少使用的 CPU cycle(CPU 要執(zhí)行一條機(jī)器指令經(jīng)過(guò)的步驟)數(shù)量;當(dāng) Cell Capacity 受限時(shí),程序可以壓縮數(shù)據(jù)以適應(yīng)較小的 Capacity,使用更多的 CPU cycle。

可以根據(jù)用戶存儲(chǔ)的數(shù)據(jù)(Cell Data)的總量和剩余內(nèi)存的大小為智能合約選擇不同的處理機(jī)制。當(dāng)存在少量 Cell Data 或大量剩余內(nèi)存時(shí),所有的 Cell Data 都可以被讀取到內(nèi)存中進(jìn)行處理。當(dāng)存在大量 Cell Data 或剩余內(nèi)存很少時(shí),每個(gè)操作可以?xún)H讀取部分內(nèi)存,類(lèi)似于交換內(nèi)存的操作。

對(duì)于一些常見(jiàn)的合約,比如哈希算法,可以根據(jù)用戶提供的 CPU cycle 數(shù)選擇不同的處理方法。例如,SHA3-256 的安全性已經(jīng)足以滿足大多數(shù)場(chǎng)景的需求,但是,合約可以通過(guò)使用更多的 CPU cycles 來(lái)利用 SHA3-512算法以滿足更高的安全要求。

運(yùn)行期開(kāi)銷(xiāo)

以太坊虛擬機(jī)(EVM)中的 Gas 機(jī)制是一個(gè)非常天才的設(shè)計(jì),它優(yōu)雅地解決了區(qū)塊鏈應(yīng)用場(chǎng)景下的停機(jī)問(wèn)題(因?yàn)橐蕴皇菆D靈完備的,所以允許循環(huán)語(yǔ)句,但是無(wú)限循環(huán)語(yǔ)句容易導(dǎo)致停機(jī)問(wèn)題,Gas 機(jī)制限定了一個(gè)區(qū)塊的最大計(jì)算量,從而避免了這個(gè)問(wèn)題),并允許程序在完全去中心化的虛擬機(jī)上進(jìn)行計(jì)算。但是我們發(fā)現(xiàn),在 EVM 中針對(duì)不同的 Opcode(操作符)設(shè)計(jì)一個(gè)合理的 Gas 計(jì)算方式是一件非常難的事情,EVM 幾乎在每次版本更新時(shí)都要調(diào)整 Gas 計(jì)算機(jī)制(EVM 的抽象層級(jí)相對(duì)較高,一條 EVM 指令可能對(duì)應(yīng)若干條底層硬件指令,在執(zhí)行程序時(shí),處理的數(shù)據(jù)量和計(jì)算復(fù)雜度都只能通過(guò)估算來(lái)定價(jià),所以 EVM 需要不斷的調(diào)整 Gas 計(jì)算機(jī)制)。

因此我們?cè)O(shè)想:能不能通過(guò) VM 的設(shè)計(jì)來(lái)確保程序運(yùn)行時(shí)資源消耗的計(jì)算方式更加合理準(zhǔn)確?

我們希望能夠找到一個(gè)提供上述所有功能的 VM 設(shè)計(jì),但是發(fā)現(xiàn)并沒(méi)有現(xiàn)成的解決方案可以實(shí)現(xiàn)我們對(duì) CKB 的愿景。于是,我們決定重新設(shè)計(jì)一個(gè)能滿足上述所有特性的 VM,以更好的實(shí)現(xiàn) CKB 的愿景。

解決方案:RISC-V

RISC-V 是由加州大學(xué)伯克利分校的教授于 2010 年設(shè)計(jì)的開(kāi)源 RISC 指令集架構(gòu)(ISA)。RISC-V 的目標(biāo)是提供一個(gè)通用的 CPU 指令集架構(gòu),以支持下一代系統(tǒng)架構(gòu)開(kāi)發(fā),并在未來(lái)數(shù)十年中不會(huì)產(chǎn)生遺留架構(gòu)問(wèn)題所帶來(lái)的負(fù)擔(dān)。

RISC-V 可以滿足從低功耗小型微處理器,到高性能數(shù)據(jù)中心(DC)處理器的實(shí)現(xiàn)要求 。與其他 CPU 指令集相比,RISC-V 指令集具有以下優(yōu)點(diǎn):

透明性

RISC-V 的核心設(shè)計(jì)和實(shí)現(xiàn)均遵照 BSD 許可協(xié)議(自由軟件中使用最廣泛的許可協(xié)議之一)。任何公司和機(jī)構(gòu)都可以使用 RISC-V 指令集,并可以不受限制地創(chuàng)造新的軟 / 硬件。

精簡(jiǎn)性

RISC-V 的 32 位整數(shù)核心指令集只有 41 條指令,即使支持 64 位整數(shù),也只有 50 條指令左右。在提供同樣功能的前提下,RISC-V 指令集比起有上千條指令的 x86 指令集,實(shí)現(xiàn)起來(lái)更容易也更能避免 Bug (x86 指令集手冊(cè)有 2000 余頁(yè),并會(huì)不斷的增加,而 RISC-V 指令集手冊(cè)僅 100 余頁(yè))。

模塊化

RISC-V 采用簡(jiǎn)化的內(nèi)核,使用模塊化機(jī)制以提供更多擴(kuò)展指令集設(shè)置。例如,CKB 可能會(huì)選擇實(shí)現(xiàn) RISC-V 內(nèi)核中定義的 V extension 來(lái)支持向量計(jì)算或?yàn)?256 位整數(shù)計(jì)算添加擴(kuò)展指令集,從而為高性能加密算法提供可能性。

支持的廣泛性

GCC 和 LLVM 等編譯器都支持 RISC-V 指令集,Go 針對(duì) RISC-V 的后端也在開(kāi)發(fā)中。CKB-VM 的實(shí)現(xiàn)使用的是廣泛的 ELF 格式,也就是說(shuō), 任何可以編譯成 RISC-V 指令集的語(yǔ)言均可以直接用來(lái)為 CKB 開(kāi)發(fā)智能合約。

成熟性

RISC-V 核心指令集已經(jīng)得到了最終的確認(rèn)和固定,未來(lái)所有 RISC-V 的實(shí)現(xiàn)都需要向后兼容。所以當(dāng)更新 VM 指令時(shí),CKB 不會(huì)因此出現(xiàn)硬分叉。另外,RISC-V 指令集已經(jīng)有了硬件實(shí)現(xiàn),并在真實(shí)的應(yīng)用場(chǎng)景中驗(yàn)證過(guò),且不會(huì)存在一些存在于其他支持較少的指令集中的潛在風(fēng)險(xiǎn)。

雖然其他指令集可能也具備上述特性中的一部分特性,但根據(jù)我們的評(píng)估,RISC-V 指令集是 唯一一個(gè)具備所有上述特性的指令集 。因此,我們選擇使用 RISC-V 指令集來(lái)實(shí)現(xiàn) CKB-VM,另外,智能合約將使用 ELF 格式以確保更廣泛的語(yǔ)言支持。

此外,我們將為 CKB-VM 添加動(dòng)態(tài)鏈接以確保 Cell Sharing。盡管 CKB 的實(shí)現(xiàn)提供的是最流行的加密算法,但我們鼓勵(lì)社區(qū)提供更優(yōu)化的加密算法實(shí)現(xiàn)以減少運(yùn)行時(shí)開(kāi)銷(xiāo)(CPU cycles)。

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

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

相關(guān)文章

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

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

    joywek 評(píng)論0 收藏0
  • 當(dāng)區(qū)塊鏈遇見(jiàn) RISC-V

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

    Tychio 評(píng)論0 收藏0
  • 使符合 CKB 虛擬機(jī)當(dāng)前系統(tǒng)架構(gòu)真實(shí) CPU 指令集來(lái)構(gòu)建自己虛擬機(jī)

    摘要:于是我們想為什么不使用符合虛擬機(jī)當(dāng)前系統(tǒng)架構(gòu)的真實(shí)指令集來(lái)構(gòu)建自己的虛擬機(jī)這樣一來(lái),我們不會(huì)丟失任何添加靜態(tài)驗(yàn)證高級(jí)數(shù)據(jù)結(jié)構(gòu)或是加密算法的可能性,并且無(wú)論我們?cè)谥刑峁┰鯓拥臄?shù)據(jù)結(jié)構(gòu)或算法,都可以最大化的靈活性。 Nervos 底層公鏈 CKB 的虛擬機(jī)(CKB-VM)是基于 RISC-V 打造的區(qū)塊鏈虛擬機(jī)。在前兩期中,我們介紹了 CKB 虛擬機(jī)的設(shè)計(jì)理念,以及基于 RISC-V 指令...

    張紅新 評(píng)論0 收藏0
  • Hello CKB!

    摘要:模塊鏈的共識(shí)配置,該配置會(huì)寫(xiě)入創(chuàng)世塊。主要指責(zé)是記錄和更新本地累計(jì)工作量最高的鏈,并維護(hù)鏈上數(shù)據(jù)的索引。消息使用序列化。協(xié)議是節(jié)點(diǎn)之間用來(lái)處理廣播和轉(zhuǎn)發(fā)新的交易。 by Nervos CKB Team 在 2017 年底,我們感到心里的一些想法,包括分層的網(wǎng)絡(luò)以及一個(gè)作為共同知識(shí)庫(kù)(Common Knowledge Base)的區(qū)塊鏈,都已經(jīng)成熟。因此 2018 年元旦一過(guò)我們就迫不及...

    Kerr1Gan 評(píng)論0 收藏0
  • Hello,CKB:構(gòu)建加密經(jīng)濟(jì)網(wǎng)絡(luò)重要里程碑

    摘要:年,包括分層的網(wǎng)絡(luò)以及一個(gè)作為共同知識(shí)庫(kù)的區(qū)塊鏈,都已經(jīng)成熟。是一個(gè)在設(shè)計(jì)上非常不同的公有鏈協(xié)議,也是網(wǎng)絡(luò)中的基礎(chǔ)層,是整個(gè)加密經(jīng)濟(jì)網(wǎng)絡(luò)的信任引擎。主要指責(zé)是記錄和更新本地累計(jì)工作量最高的鏈,并維護(hù)鏈上數(shù)據(jù)的索引。 說(shuō)到猿起,這些心里的想法能追溯到 2016 年,甚至更早。2017 年,包括分層的網(wǎng)絡(luò)以及一個(gè)作為共同知識(shí)庫(kù)(Common Knowledge Base)的區(qū)塊鏈,都已經(jīng)成...

    fou7 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<