後悔! 曾經敲不出的代碼, 如今竟如此簡單, 都是因為不知道這個..

​Solidity作為智能合約編程的高級語言讓很多想轉型區塊鏈開發的程序員們望而卻步。尤其是作為一個初學者,在部署的時候會經常失敗,也找不到原因,區塊同步又非常緩慢,實在是不太好用。 ​

如果能用大家熟悉的c, c++語言寫區塊鏈應用代碼了,無疑成為很多開發者夢寐以求的事,畢竟這可以大大降低開發人員的學習成本。在這裡,就不得不提到WASM。

Web Assembly(WASM)有什麼來頭呢?它是谷歌、蘋果、微軟三大競爭公司同時支持的一種中間代碼(字節碼), 是瀏覽器都支持的一種代碼。所有其他語言(c, c++, java)編寫的程序都可以編程成WASM字節碼的程序。

而開發者們夢寐以求的事就真的來了,迅雷鏈在原來兼容EVM的基礎上,推出支持WASM,也就是同時支持雙虛擬機,不僅在開發語言上具備了更多的可選擇性,而且在應用升級上做了大幅改善。

本文將從幾個重要的大環節深入淺出的剖析這個問題,包括區塊鏈虛擬機到底什麼作用?為什麼虛擬機那麼重要?虛擬機三個階段的競爭,主流虛擬機對比,還有最重要的,迅雷鏈對WASM的改進,這個決定了開發成本真的變得很低,全文4053字,大約消耗15分鐘,讓你輕鬆開發智能合約,不再是夢。

從區塊鏈虛擬機是什麼開始說起

區塊鏈虛擬機是區塊鏈智能合約的運行環境,可把它看作是軟件模擬的可執行合約指令的虛擬計算機(包含CPU、內存、存儲)。類似於CPU可以執行彙編指令,區塊鏈虛擬機可以執行合約指令。

後悔! 曾經敲不出的代碼, 如今竟如此簡單, 都是因為不知道這個..

每個參與到區塊鏈網絡的節點,都會運行一個虛擬機。向區塊鏈網絡發送一筆調用合約的合法交易,會觸發每個節點的虛擬機執行該合約代碼,並將執行結果記錄下來。

區塊鏈有共識機制,必須保證所有人的計算結果是一樣的,如果某個節點的計算結果與其他節點不一樣,將無法達成共識。

由於運行區塊鏈服務的計算機可能支持不同的CPU指令集,並且有的操作系統是32位,有的是64位,不同機器對相同數據類型的表示也不一樣,這樣很難確保所有機器運行的結果一致。

這時候虛擬機的存在就非常有必要性。

虛擬是指通過軟件模擬的具有完整硬件系統功能的、運行在一個完全環境中的完整計算機系統。區塊鏈虛擬機有一套自己特有的指令集,能確保在不同的操作系統,不同CPU環境下,執行同樣的運算指令,得到完全相同的結果。

區塊鏈技術離不開虛擬機的支撐

虛擬機是區塊鏈技術領域的基礎設施,是構建智能合約系統最為關鍵和核心的技術。智能合約承載了複雜的業務邏輯,同時是連接實體業務與區塊鏈技術的橋樑。

區塊鏈虛擬機作為區塊鏈上面的代碼運行平臺,需要考慮很多安全性的問題。為了防止因程序員的編寫代碼錯誤而影響到了整個鏈,同時更重要的是防止運行智能合約的設備遭受攻擊,如果直接運行在設備系統上,可能會有安全隱患。

後悔! 曾經敲不出的代碼, 如今竟如此簡單, 都是因為不知道這個..

每個節點都要執行智能合約,但如果不用虛擬機,而是在機器上直接運行,此時如果智能合約開發者疏忽或測試不充分,而造成智能合約的代碼有漏洞的話,就非常容易被黑客利用並攻擊。

由此可見,區塊鏈虛擬機屬於區塊鏈的核心技術,虛擬機是區塊鏈技術落地的基礎,是智能合約的安全保護屏障,在今天乃至未來,區塊鏈技術都離不開虛擬機的重要支撐。

區塊鏈上虛擬機技術的激烈競爭

區塊鏈要落地到實體經濟中,必須依靠不斷豐富的DApp應用,但是DApp必須運行在可靠的區塊鏈虛擬機上面。目前各家區塊鏈的技術競爭,更是演變成了區塊鏈虛擬機技術的競爭。

區塊鏈虛擬機1.0

比特幣作為區塊鏈1.0時代主要的應用代表,其直到今天依舊被公認為區塊鏈技術的傑出代表。作為一種P2P數字經濟生態的承載,比特幣設計上就要考慮提供針對不同交易活動的內部支持。在比特幣中,這種的設計和實現被稱為腳本。比特幣中的腳本擴展了傳統交易的語義,同時保證了交易的合法性和安全性。

從開發的角度上講,比特幣中的腳本提供給用戶一種可以編程的簡單接口。比特幣中對腳本的解釋例程,我們把它定義為比特幣中的虛擬機,其可以看做是區塊鏈虛擬機技術1.0的代表。

然而比特幣的腳本定義上為非圖靈完備,這也從本質上決定了解釋器的設計的複雜性。比特幣中的腳本解釋器雖然還不能看做是一個完善的執行智能合約的虛擬機,但是我們在這個階段已經看出虛擬機技術在區塊鏈技術中的生命力。

區塊鏈虛擬機2.0

以太坊作為區塊鏈2.0時代主要的應用代表,其為用戶提供了一套完整的智能合約運行環境,這包括完整智能合約描述語言以及圖靈完備的虛擬機。以太坊智能合約官方語言為Solidity,利用Solidity實現智能合約邏輯後,通過編譯器編譯成字節碼,最後發佈到以太坊上。

以太坊虛擬機(EVM)本質上依然是一個基於棧的解釋器。以太坊虛擬機的設計和實現體現了一個精簡標準的虛擬機模型,相對於比特幣中的腳本解釋器,EVM已經有了質的飛越。

以太坊支持圖靈完備的智能合約。智能合約的完善,加上圖靈完備的智能合約運行支持,讓區塊鏈虛擬機在區塊鏈技術體系中的位置愈加的重要。

迅雷鏈首創支持雙虛擬機-區塊鏈虛擬機3.0

隨著區塊鏈應用對虛擬機以及智能合約的要求的增多,區塊鏈虛擬機在技術上也在逐漸的進行完善,在以迅雷鏈為代表的區塊鏈3.0中,虛擬機主要在以下幾個方面有所發展:

智能合約多語言的支持

更快的運行速度

更加豐富的系統工具支持

虛擬機更安全

迅雷鏈首創對雙虛擬機的支持,同時支持EVM虛擬機和WASM虛擬機。開發人員可在迅雷鏈開放平臺上更加便捷的構建非常豐富的生態應用。

WASM具有如下優點:

在速度和性能方面的提升;

支持C、C++,以後將支持更多的編程語言,比如go,pytho,java,php等。

這就意味著擁有其他語言經驗的開發者可以快速開始在迅雷鏈上編程,而不需要為了創建一個智能合約去學習一門新的語言,比如Solidity。

更進一步,這意味著當在迅雷鏈上編程時,開發者可以使用所有為這些語言構建的工具和軟件庫;使用WASM能夠利用出色的優化和調試工具。所有這些特點都將有助於加速和簡化開發進程。

下面是對幾個主流公鏈的虛擬機對比:

後悔! 曾經敲不出的代碼, 如今竟如此簡單, 都是因為不知道這個..

比特幣的程序非常簡單,由解鎖腳本和鎖定腳本構,是非圖靈完備的,只能完成簡單邏輯的轉賬操作。以太坊有智能合約,有圖靈完備的虛擬機EVM,但是指令也相對簡單,且自成一套。

這兩種程序本質上都是腳本程序,即由程序翻譯指令並執行,而不是由本地機器CPU讀取指令並執行,效率不高。

EOS支持WASM合約虛擬機,但是EOS缺乏友好的合約開發工具,開發者編譯合約需要下載安裝編譯工具,測試合約需要啟動EOS測試節點。

迅雷鏈推出的catalyst合約開發平臺,集成了solidity與C/C++合約開發工具集,只有開發者打開瀏覽器,就可以進行合約的開發與測試,不需要單獨下載編譯工具等,為開發者提供了最便捷的開發環境。

迅雷鏈對WASM虛擬機的優化改進

為了讓WASM虛擬機能在迅雷鏈上運行,迅雷鏈對虛擬機做了如下創新改進:

1. EVM不支持合約原地升級,迅雷鏈對WASM虛擬機做了改進,支持合約升級,滿足開發對代碼升級的渴望。同時升級的合約必須設置受信任的多重簽名賬戶,防止開發者隨意升級合約。既滿足了靈活性,也考慮了安全性。

2. 增加合約調用其他合約功能。EOS的合約調用另外一個合約無法直接獲得合約地執行狀態,但是迅雷鏈可以立即獲得調用結果;

3. 提供編寫智能合約所需的語言的類庫,目前支持C/C++基礎庫,開發者可以使用第三方維護的開源庫,解決了EVM缺少公共庫的缺點,同時迅雷鏈的WASM虛擬機提供了豐富的基礎API接口供用戶靈活選擇使用;

4. 為了讓開發者集中主要精力在業務開發上,提供了基於模板與ABI接口文件自動生成合約對應的接口調用代碼,幫助開發者屏蔽了參數編解碼,與區塊鏈交互的細節問題,目前支持自動生成go或者python代碼,極大的提升了開發者的效率。

5. 提供WASM合約開發調試工具catalyst,該工具在瀏覽器中運行,用戶開發測試合約過程中不必自己搭建區塊鏈節點,也不需要安裝複雜的合約代碼編譯環境。Catalyst工具集成了EVM與WASM合約的開發、編譯、部署、合約接口測試等功能,方便開發者開發與測試合約;

6. 增加Gas機制,確保合約指令在執行有限次運算後,可以終止執行,能有效的防止無限循環攻擊;

7. 提供常用的標準TOKEN合約基礎類,方便開發者快速構建自己的TOKEN合約;

基於對WASM虛擬機的優化改造,迅雷鏈的智能合約模塊具備更高的兼容性與性能,同時擁有更強的安全性與靈活性。

以上重點講解了迅雷鏈在支持雙虛擬機上提供的改進和優化,對於想要轉型區塊鏈開發或者正在開發區塊鏈應用的程序員來說 ,使用迅雷鏈開放平臺的好處還不止於此。業內比較熟知的是,迅雷鏈是首個實現百萬TPS性能的底層主鏈,這使得區塊鏈大規模應用成為可能,再也不用擔心一個幾千人玩的DAPP就把主鏈搞崩潰了。對於那些想要打造爆款區塊鏈應用的企業和開發者來說,針對業務規模龐大、業務請求頻發的應用場景,迅雷鏈大概是最為可靠的選擇了。

在性能已經遙遙領先的同時,迅雷鏈還持續不斷推出各種對開發者友好的新功能。比如去年7月份在迅雷全球區塊鏈大賽的決賽現場,迅雷鏈發佈了專為區塊鏈而生的文件系統——TCFS,實現公開透明、不可篡改、可追溯、高可靠、安全加密、海量存儲、授權轉移等能力。 此外,迅雷鏈開放平臺發佈一年以來,持續推出了多種工具性的解決方案,包括抽獎合約工具、投票合約工具、版權類合約工具等等。

最近,迅雷鏈還全新推出了名為“Catalyst——催化劑”的web開發工具,對於開發人員來說,不需要安裝,自帶demo模板,真正實現了入門合約開發0門檻,提高開發者的在應用開發過程中的使用體驗。

性能優越+操作簡易,這足以解釋為什麼很多企業和個人開發者都選擇基於迅雷鏈進行應用開發。據悉,迅雷區塊鏈技術已經和中國版權保護中心、來電科技、南方新媒體、壹基金等多個企業合作,落地版權保護、商品溯源、公益、醫療等十餘個行業領域。而只有在多種多樣的實際應用中,區塊鏈技術才能真正發揮其應有的價值,或許這才是迅雷鏈不遺餘力為開發者和企業提供便捷高效的產品體驗的初衷。

只要萬千開發者都願意參與進來,「用區塊鏈技術推進社會發展」的想法,就不再是空中樓閣了,不是嗎?

馬上體驗史上最方便的智能合約開發,點擊原文鏈接吧。

https://open.onethingcloud.com/


分享到:


相關文章: