當區塊鏈遇見 RISC-V

買賣虛擬貨幣
區塊鏈的出現使得智慧合約得到了更好的實現和發展,而區塊鏈和智慧合約之間,還存在著一個重要的角色:虛擬機器(Virtual Machine)。虛擬機器的概念在上個世紀六十年代就被提出來,而到九十年代才開始流行。當時的網路跨越了眾多不同的作業系統、瀏覽器,如果開發者想要製作一個應用,就需要去適配所有不同的作業系統。大家知道現在 App 開發就分為安卓和蘋果系統,而當時局面更加複雜。恰好 Java 程式語言開始流行,Java 構建的虛擬機器能夠讓程式只需要寫一次,依託 Java 虛擬機器就能夠在多個平臺上執行,所以當時提出的口號就是:一處編譯、到處執行。我們知道比特幣是沒有虛擬機器的,因為比特幣就是把一段數字(也就是「比特幣」)從地址 A 轉移到地址 B,而以太坊則提出,區塊鏈上執行的為什麼不能是一套程式碼,能夠實現更多複雜多樣的東西?這就是我們所說的智慧合約平臺,所有節點執行一樣的合約程式碼得到完全一樣的結果。在區塊鏈上,虛擬機器就是智慧合約的執行環境,是一個可以完全對外隔離的完整計算機體系。區塊鏈透過虛擬機器來呼叫和執行智慧合約,並要求所有節點都達成一致。而節點用的是不同的系統,有些機器是 64 位的,有些是 32 位的,傳統的 Java 虛擬機器容忍計算結果有少量的差異,但是在區塊鏈上所有結果必須一樣,因此,一個新的、適用於區塊鏈的虛擬機器是必不可少的。理想中的區塊鏈虛擬機器每個區塊鏈專案的虛擬機器設計,都會有自身的藝術追求,在追求眾多的特性同時做不同層次上的取捨。在做了大量的研究之後,我們認為理想中的區塊鏈虛擬機器應該是這樣的:
· 執行時有足夠的確定性,在呼叫同樣的智慧合約輸入時,應該返回相同的輸出結果,輸出結果不依賴於時間、執行環境等外部的條件;· 執行時有足夠的安全性,虛擬機器的執行不會對平臺本身帶來負面影響;· 對更新足夠的靈活,讓區塊鏈不用透過硬分叉,就可以實現加密演算法的升級或新增(回想一下以太坊硬分叉升級的痛苦);· 資訊足夠的透明,可以讓虛擬機器上執行的智慧合約充分發揮虛擬機器的潛力;· 費用機制足夠的合理,能夠確保虛擬機器執行時資源消耗的計算方式更加合理準確;· 可以支援不同的語言編譯,讓開發者能夠自由地開發,將最新的科技運用其中。
在設計 Nervos CKB 虛擬機器之前,我們發現很多區塊鏈專案都不是用真實的 CPU 指令集來構造自己的虛擬機器的,他們更多的是選擇了 WASM 來構造自己的虛擬機器。而我們更傾向於採用真實的 CPU 指令集來構造自己的虛擬機器,因為在任何精巧複雜的虛擬機器的最底層,都需要將操作轉變為原始的彙編指令來執行對 CPU 的操作。另外,採用真實 CPU 指令集就不會在設計層面引入一些語義約束,束縛虛擬機器的靈活性。做一個不恰當的比喻,操作 CPU 需要有一套語言體系,使用真實的 CPU 指令集就如同能直接用這套語言體系和 CPU「說話」,那就非常方便。否則,就好像先說中文,再轉換為英文,不論多完美的翻譯水平,都會有一定的偏差和束縛。透過真實的 CPU 指令集,虛擬機器可以根據需要增加任意型別的資料結構或演算法,可以最大限度的讓開發者寫出任何滿足要求的合約。於是我們決定大膽的嘗試使用真實的 CPU 指令集來構造自己的虛擬機器 CKB-VM。在 CPU 指令集的選擇中,我們選擇了精簡的開源指令集 RISC-V。RISC-V 可以滿足從低功耗小型微處理器,到高效能資料中心(DC)處理器的實現要求,並且有著透明性、精簡性、模組化、支援的廣泛性和成熟性的特點。這些特性都和 CKB-VM 的設計需求完美契合。那麼 RISC-V 又是什麼呢?RISC-V
RISC-V 是一個清晰、簡約、開源的 CPU 指令集架構,誕生於美國加州大學伯克利分校。2010 年,由於其他商業閉源指令集的侷限性,該校的一個研究團隊在啟動一個新專案時,從零開始設計了一套全新的開源指令集。這套全新的指令集有著大量的暫存器和透明的指令執行速度,能夠幫助編譯器和組合語言程式設計師將實際的重要問題轉換為適當、高效的程式碼,並且只包含了不到 50 條指令。這套指令集就是 RISC-V。架構師們在設計 RISC-V 時,就是希望 RISC-V 在所有的計算裝置上都能夠有效工作。自 2010 年被髮明以來,RISC-V 簡潔的設計贏得了業界和學界的廣泛支援,並且獲得了社羣的喜愛。RISC-V 基金會RISC-V 指令集的發展主要由 RISC-V 基金會以及社羣推動。RISC-V 基金會創立於 2015 年,是一家非營利組織,也是首個開放、協作的軟硬體創新者社羣。RISC-V 基金會目前已經有超過 235 家成員,包括谷歌、高通、蘋果、IBM、特斯拉、華為等企業。成員可以參與制定並使用 RISC-V 指令集規範,並且參與相關軟、硬體生態系統的發展。
由於精簡、開源的設計,RISC-V 在一些學術機構中大受歡迎,如加州大學伯克利分校、麻省理工學院、普林斯頓大學、中科院計算所等。除此之外,一些政府機構,如印度政府、上海市經濟資訊委等,也大力支援基於 RISC-V 的專案開發。現有的指令集RISC-V 是一個非常年輕的指令集,那麼在此之前,主要的指令集都有哪些呢?在 PC 時代,x86 是不可動搖的霸主,x86 是 CISC(Complex Instruction Set Computer,複雜指令集),和 RISC(Reduced Instruction Set Computer,精簡指令集)不同,CISC 指令集會隨著發展不斷增多。這樣會使得成本不斷上升,效能和功耗也會受到影響。而且,CISC 指令集長度、執行時間都不固定,很難找出一條高效率的通用設計道路來完成指令的執行。智慧手機普及之後,ARM 成了移動端的寵兒。ARM 是精簡指令集(RISC)有著低功耗和低成本的特性,但是,因為要保持向後相容性,ARM 需要保留許多過時的定義,導致指令集冗餘嚴重,這使得 ARM 架構文件的複雜度越來越高。在 x86 和 ARM 壟斷的當下,RISC-V 為市場帶來了新的生機:
· 精簡經過幾十年的發展,x86 與 ARM 的架構文件已經長達數千頁,幾乎需要花掉一個工程師近一個月的閱讀時間,而閱讀 RISC-V 文件只需要花費 1-2 天的時間。這是因為 RISC-V 只將那些最常使用的指令集挑選出來,然後為其進行專門最佳化,至於不常用的指令,則可以用幾個基礎指令組合的方式完成,這樣就可以大大提高效率。舉個例子,如果我們用的是 x86,那麼就必須買下一整個超市,才能享受自身需的物品;而 RISC-V 是一家可以單買的超市,顧客們只需要挑選自己所需的物品,併為此付費即可。· 開源ARM 和 x86 都是閉源專案,且授權條款極其苛刻:英特爾不允許除 AMD 和 VIA 之外的任何一家公司使用 x86 指令集;想要獲得 ARM 指令集的授權可能需要花費上千萬美元的授權費,並且會受到而且授權到期後,需要重新談判授權事宜。
RISC-V 是一個真正意義上的開源專案,被稱為硬體領域的 Linux。事實上,發明 RISC-V 的 David Patterson 教授、Krste Asanovic 教授、Andrew Waterman 和 Yunsup Lee 的初衷就是希望 「Instruction Sets Want to be Free」,全世界任何公司、大學、研究機構與個人都可以開發相容 RISC-V 指令集的處理器,都可以融入到基於 RISC-V 構建的軟硬體生態系統。RISC-V 使用的是 BSD License 開源協議,BSD 開源協議允許使用者修改和重新發布開原始碼,也允許基於開原始碼開發商業軟體釋出和銷售。當區塊鏈遇見 RISC-VRISC-V 在很多科技領域都得到了運用,目前,也開始在區塊鏈領域逐漸的得以發展。作為僅在 CPU 上驗證過的指令集架構,將 RISC-V 應用在區塊鏈領域的確是一個大膽的嘗試,因為它在區塊鏈專案上打造的是虛擬機器,而非處理器硬體。我們不確定這樣的嘗試能否成功,但是我們有理由相信,基於開源的 RISC-V 打造的虛擬機器,可以很好的縮短硬體和軟體行業的距離,並且帶來更豐富的開發生態。關於 Nervos
Nervos Network 由 Nervos 基金會推動,透過分層設計,兼顧效能、安全以及去中心化的特性,滿足多樣化的商業場景需求,為未來加密經濟提供基礎設施。關於 CKBNervos Common Knowledge Base(CKB)是一個無需許可鏈,它是 Nervos Network 的基礎層,並在設計上提出了一些理念:· CKB 共識協議 NC-MAX 使用兩階段提交節約頻寬,並根據網路情況調整自身引數,提升了 Nakamoto Consensus 的可擴充套件性· CKB 虛擬機器採用底層 CPU 指令集架構 RISC-V 開發,提供更高的開發彈性與執行的穩定性· CKB Cell Model 是比特幣 UTXO 模型的通用化,能夠驗證和儲存任何型別的資料
· CKB 經濟模型用貨幣政策限制狀態儲存的增長,並實現智慧合約平臺的價值儲存功能

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;