開發者福利!不學Solidity也能在迅雷鏈開發智慧合約了

鄭小峰發表於2019-04-11

Solidity作為智慧合約程式設計的高階語言讓很多想轉型區塊鏈開發的程式設計師們望而卻步。尤其是作為一個初學者,在部署的時候會經常失敗,也找不到原因,區塊同步又非常緩慢,實在是不太好用。 如果能用大家熟悉的c, c++語言寫區塊鏈應用程式碼了,無疑成為很多開發者夢寐以求的事,畢竟這可以大大降低開發人員的學習成本。在這裡,就不得不提 Web Assembly(WASM)了。 WASM有什麼來頭呢?它是谷歌、蘋果、微軟三大競爭公司同時支援的一種中間程式碼(位元組碼), 是瀏覽器都支援的一種程式碼。所有其他語言(c, c++, java)編寫的程式都可以程式設計成WASM位元組碼的程式。 而開發者們夢寐以求的事就真的來了,迅雷鏈在原來相容EVM的基礎上,推出支援WASM,也就是同時支援雙虛擬機器,不僅在開發語言上具備了更多的可選擇性,而且在應用升級上做了大幅改善。 本文將從幾個重要的大環節深入淺出的剖析這個問題,包括區塊鏈虛擬機器到底什麼作用?為什麼虛擬機器那麼重要?虛擬機器三個階段的競爭,主流虛擬機器對比,還有最重要的,迅雷鏈對WASM的改進,這個決定了開發成本真的變得很低,讓你輕鬆開發智慧合約,不再是夢。 從區塊鏈虛擬機器是什麼開始說起 區塊鏈虛擬機器是區塊鏈智慧合約的執行環境,可把它看作是軟體模擬的可執行合約指令的虛擬計算機(包含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能夠利用出色的優化和除錯工具。所有這些特點都將有助於加速和簡化開發程式。 下面是對幾個主流公鏈的虛擬機器對比:

開發者福利!不學Solidity也能在迅雷鏈開發智慧合約了
比特幣的程式非常簡單,由解鎖指令碼和鎖定指令碼構,是非圖靈完備的,只能完成簡單邏輯的轉賬操作。以太坊有智慧合約,有圖靈完備的虛擬機器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門檻,提高開發者的在應用開發過程中的使用體驗。 效能優越+操作簡易,這足以解釋為什麼很多企業和個人開發者都選擇基於迅雷鏈進行應用開發。據悉,迅雷區塊鏈技術已經和中國版權保護中心、來電科技、南方新媒體、壹基金等多個企業合作,落地版權保護、商品溯源、公益、醫療等十餘個行業領域。而只有在多種多樣的實際應用中,區塊鏈技術才能真正發揮其應有的價值,或許這才是迅雷鏈不遺餘力為開發者和企業提供便捷高效的產品體驗的初衷。 只要萬千開發者都願意參與進來,「用區塊鏈技術推進社會發展」的想法,就不再是空中樓閣了,不是嗎? 馬上體驗史上最方便的智慧合約開發,點選原文連結吧。 open.onethingcloud.com/

相關文章