Qtum研究院:區塊鏈虛擬機器——可程式設計商業經濟技術基石

買賣虛擬貨幣
2019年作為比特幣發展十週年,隨著區塊鏈知識和技術不斷普及,區塊鏈技術在不斷尋找著超乎金融領域之外的更多商業探索,其中區塊鏈的基礎設施作為可程式設計商業經濟的基石,在不斷探索中前進。區塊鏈技術領域基礎設施——虛擬機器,是實現智慧合約系統最為關鍵和核心的技術。智慧合約不僅是業務邏輯的載體,同時又紮紮實實地落在了技術實現的層面。由此可見,虛擬機器是區塊鏈技術落地的基石,在如今技術快速發展乃至未來,區塊鏈技術都將離不開虛擬機器的重要支撐。Qtum 量子鏈正是認識到區塊鏈虛擬機器的重要性和未來的趨勢,早在2016年《Qtum 量子鏈技術白皮書 v0.7》第三章完整闡述了新一代主流語言程式設計的Qtum-x86虛擬機器,作為支援未來區塊鏈商業經濟實際落地的基礎設施。
到底什麼是虛擬機器?普通的虛擬機器和區塊鏈虛擬機器的差別是什麼?以及為什麼智慧合約需要區塊鏈虛擬機器? Qtum-x86 虛擬機器具有哪些獨特的優勢?什麼是虛擬機器想徹底理解虛擬機器,首先應該理解“虛擬化”這個抽象化的詞,也就進一步會理解普通虛擬機器和區塊鏈虛擬機器之間的區別。維基百科對其定義:“在計算領域,虛擬化是一個寬泛的術語,指的是對計算機資源的抽象。虛擬化對其使用者,不管是應用程式還是終端使用者,隱去了計算資源的物理特性。這包括使一個單一的物理資源(比如一個伺服器,一個作業系統,一個應用,或是一個儲存裝置)表現為多個虛擬資源執行;也包括多個物理資源(比如儲存裝置或多臺伺服器)表現為一個單一的虛擬資源...”
再精煉一些來說就是:· 由一個物理資源建立多個虛擬化資源· 由一個或多個物理資源建立一個虛擬化資源日常中網路、儲存、硬體都會頻繁用於表達某些特定概念。在這一領域的早期成果有 Christopher Strachey 的論文“大型高速計算機的時分系統”。IBM 對虛擬化的探索始於其 CP-40 and M44/44X 研究系統。作為回報,這又促成了其商業產品 CP-67/CMS 。虛擬機器的概念使使用者隔離開,併為每個使用者單獨模擬出一套的完整的系統。IBM 模型的一個主要特徵就是透過分割計算機資源和完全隔離程式來使程式共享同樣的硬體。 大型計算機在當時的資源非常稀缺因此多為共用,因此把虛擬機器計算時間切割成許多共享使用者的私人計算時間。服務端虛擬化

服務端虛擬化顧名思義為伺服器“虛擬化”,以 VMware,Microsoft,以及 Citrix 等公司為代表。運用伺服器虛擬技術,一個物理的機器可以被分成多個虛擬的機器。在這種虛擬化技術的背後,其核心是 hypervisor(虛擬機器監視器)的概念。Hypervisor  雖是很小的一層,它可以攔截作業系統對硬體的呼叫。

並且憑藉著這一層的 hypervisor 可以做到:

1. 提升硬體利用率:節省硬體,節約成本
2. 安全:乾淨的映象可用來重建受損的系統,可以提供沙盒和隔離來限制可能的攻擊。
3. 開發:除錯和效能監控的用例能夠以可重複的方式方便的搭建起來
4. 統一:實現各環境與運算元據的統一性

為什麼區塊鏈需要虛擬機器

理解了“虛擬化”的不同場景的含義後,那區塊鏈為什麼還需要虛擬機器,它需要哪些虛擬化特性的部分?

這與區塊鏈的獨特性相關,區塊鏈系統需要共識機制,保證每一個人輸出的計算結果是一致的。以比特幣舉例A將BTC傳送至B,為了實現智慧合約,將自動交易轉化成程式碼。區塊鏈虛擬機器所承擔的主要任務是執行智慧合約。本質上,區塊鏈虛擬機器就是一個程式碼的執行環境。從而保證區塊鏈網路中分散式節點的一致性。

從安全性考慮,越是功能強大的智慧合約,就越是邏輯複雜,也越容易出現邏輯上的漏洞。在區塊鏈中,虛擬機器如果是從安全性方面考慮的話一方面是為了防止因為不法分子或者程式設計師的編寫程式碼錯誤而影響到了整個主鏈,更重要的是防止執行智慧合約的裝置遭受攻擊,如果直接執行在裝置系統上,可能會有安全隱患。因為每個節點都要執行智慧合約進行驗證,但如果不用虛擬機器,而是在機器上直接執行,當智慧合約開發者疏忽或測試不充分,而造成智慧合約的程式碼有漏洞的話,就非常容易被駭客利用並攻擊,這與上文中伺服器虛擬機器安全性有著共通性。

2018年4月, BEC 因整數溢位編寫漏洞,被駭客批次轉走了近50% token,然而這個錯誤本應是語言層面的基本常識。以太坊的智慧合約多次出現漏洞,業界普遍認為與底層系統有關,在此 Qtum量子鏈出的虛擬機器技術連載(一)中分析過由於它的設計比較非主流,很難有主流的程式語言能夠移植到 EVM 上。這種設計可以說對於近50年來的大多數程式設計範例來說都不易相容,因此不夠友好。

為了將區塊鏈的開發推向更加主流的階段,Qtum 量子鏈選用x86指令集。x86指令集發展已超過40年,時至今日,x86 架構的相容性也越發強大,生態體系越發完善,成就佔有率超過90%的市場。今天的 x86 CPU 中已融入瞭解碼的功能,其將長度不定的 x86 指令轉換為長度固定的類似於 RISC 指令,然後將其交給 RISC 核心進行處理。解碼包括了硬體解碼和微解碼兩種,簡單的 x86 指令採用硬體解碼速度較快,而複雜的指令則需要微解碼,將其分成若干條簡單指令後才進行執行。目前,x86 架構的優勢在於單條指令功能強大,指令數少速度較快;而由於指令數少,高頻率執行時也不需要很大的寬頻佔用往 CPU 傳輸指令。

比特幣:比特幣的區塊鏈技術主要是為數字貨幣交易提供簡單的技術支援。
以太坊:以太坊開發智慧合約以及圖靈完備的EVM為標誌。
Qtum量子鏈:以 Qtum-x86 為代表的區塊鏈基礎設施建設逐步落地,推動區塊鏈商業經濟快速發展。

在 QTUM 技術實驗室釋出的 為何 Qtum 量子鏈要設計X86虛擬機器?Qtum-x86 設計時計劃實現多種語言編寫智慧合約。因為EVM 開發需要學習solidity,增加學習成本的同時穩定性不強,如果區塊鏈虛擬機器支援多種程式語言可以變得更加安全。以 Rust 為例,Rust 相對於其他新型編寫語言中非常高效、輕量級的程式語言,最重要的是,它的安全性較高,能夠降低因程式設計師在程式設計中出現的錯誤而導致被攻擊的風險。 

目前以太坊的開發費用還是非常高昂,並由於沒有標準庫,也使得佔用了大量的記憶體Qtum-x86 為這些標準程式庫函式提供特殊的內部程式碼,類似於以太坊的預編譯合約。這種功能可以不需要為新的預編譯合約新增特殊支援,即可使用,使得在不影響其他共識等變數之下,更加的高效、便捷和節省記憶體。

Qtum 量子鏈開發團隊設計的初衷是能夠支援多種虛擬機器,以太坊虛擬機器作為第一個支援的虛擬機器,但目前AAL的功能受到EVM的極大限制,而 Qtum-x86 虛擬機器就將不再受到這些限制。

Qtum-x86 虛擬機器的大記憶體空間,以及它高效的操作程式碼集,可以實現完整的區塊鏈資料進行智慧合約分析,這在以太坊虛擬機器上是無法實現的。在未來有可能支援基於ai的智慧合約自動監控區塊鏈,成為潛在的 oracle,允許智慧合約對自身進行動態調整,以便在當前的網路條件下儘可能高效地執行。這些區塊鏈資料可以包括完整交易資料以及節點的統計資料(共識相關)。由於這些資料都是常量,且只需要佔用極少的記憶體空間,所以公開這些資料沒有什麼弊端。

目前,以太坊虛擬機器強制每個使用者都使用指向32-bytekey指向32-byte資料。開發人員管理起來可能會相當複雜,尤其是考慮到儲存空間碎片化和維護的問題。因此,在Qtum-x86虛擬機器上,會給智慧合約新增一個通用的key-value儲存。這樣以來,使用者就可以使用任何從1位元組到更長位元組的key,並將其指向相同長度的變數值。目前,Qtum 開發團隊提出的gas模型首先對讀/寫該資料庫的操作收取固定費用,之後再根據實際操作的位元組數進行按字計價收費。當然,這個功能也會被計入stateRootHash中,這樣SPV錢包就可以使用這個資料庫與智慧合約進行互動。

Qtum 開發團隊另一個設計目標是使智慧合約的依賴關係變得明確且不可變。這僅僅是一種opt-in功能,所以仍然可以允許呼叫未知合約。對於那些確切知道它們依賴關係的智慧合約,可以在某些特定情況下並行執行,有助於降低的gas成本,同時還有其他一些好處。這將是基於Qtum-x86虛擬機器的智慧合約的一個主要的擴充套件優勢。

一同回看,Qtum-x86開發工程師Howard現場演示影片。分別在Qtum-x86虛擬機器上以C、C++、Rust這三種主流開發語言呼叫API,展示了未來開發者用這些主流開發語言編寫智慧合約的範例。


更多區塊鏈資訊:www.qukuaiwang.com.cn/news

免責聲明:

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

推荐阅读

;