區塊鏈技術精華:四十種智能合約支持平臺(四)

摘要: 智能合約是以數字形式定義的承諾,控制數字資產並涵蓋合約參與者約定的權利和義務。它由計算機系統自動執行。在基於區塊鏈的智能合約中,數據管理、事務驗證和狀態處理都是在區塊鏈上完成的,區塊鏈提供完備的狀態機接受和處理各種智能合約程序。我們在此係統列舉四十種支持或是用於開發智能合約的平臺或項目,並介紹影響智能合約功能的主要因素。本文是該系列文章的第四篇,我們繼續給出餘下的11種支持平臺,其中包括著名的XTRABYTES、Universa、ETC等。

區塊鏈技術的精華:四十種智能合約支持平臺(一)
區塊鏈技術的精華:四十種智能合約支持平臺(二)
區塊鏈技術的精華:四十種智能合約支持平臺(三)

正文:

大家已經看到,區塊鏈正在改變我們的世界。

區塊鏈解決了人類一直面對的一個重大問題,信任問題。區塊鏈可爲任何需信任的事物創建一種不可更改的追溯印跡,由此解決信任的問題。

當然,該技術的強大還不止於此。

它在上述特性上繼續擴展,用以創建一經制定就必須準守的規則,其中的每個行爲都會產生相應的反應。其實,就是智能合約。

本文列出了四十種支持或是用於開發智能合約的平臺或項目,它們均在不斷的演進中。如果讀者發現本文存在任何遺漏或錯誤,希望能在評論中提出。此外,隨着本文作者對這些平臺或項目的進一步研究,本文內容將會定期更新。

原文提供在Github上,讀者可以拉取下來提出修改建議。

附: 本文對智能合約平臺/項目的評估,主要考慮的是影響智能合約功能的一些因素,而不是整體功能評估。

這篇文章花費了原作者數天時間才完成。如果讀者喜歡閱讀此類內容,想表達感謝和支持,可在此處或下面的ETH地址請作者喝杯咖啡:

           a93e64a691d5aff8f78cd63130cf23b89182d235

下面詳細列出四十種智能合約平臺/項目。本文是該系列文章的第四篇,我們繼續給出餘下的11種支持平臺,其中包括著名的XTRABYTES、Universa、ETC等。

30. XTRABYTES

智能合約語言: 無特定語言。
現狀: 不活躍。
說明:

DApp開發人員可以通過XTRABYTES的分佈式命令消息API(DICOM API,Distributed Command Message API)訪問其核心功能和數據。DICOM API使得開發人員可使用多種編程語言實現DApp代碼。我們稱此爲“代碼可感知”。開發人員只需在代碼中調用API函數。這使得各類開發人員都可快速上手XTRABYTES DApp的開發。

學習資源: XTRABYTES的Medium博客XTRABYTES™ (XBY)的Medium博客

Xtrabytes Reddit | Xtrabytes Github |Xtrabytes Telegram

31. PolkaDot

現狀: 不活躍。
說明:

可並行鏈(Parachain)是區塊鏈的一種簡化形式,它將安全付諸於由“中繼鏈”提供,而非自身提供。中繼鏈的名稱來自於它不僅爲所附着的可並行鏈提供安全,而且爲二者間的安全消息傳遞提供保證。可並行鏈的一個關鍵特性是所執行的計算是天生獨立的。在確定哪些交易間會產生“衝突”時,使用圖靈完備智能合約的完全通用系統會存在問題,這意味着那些潛在可並行的交易通常是順序執行的,進而浪費了有價值的計算時間。在可並行鏈之間劃分明顯界限,這使得我們可以全部一次性執行各鏈上的交易,而不用擔心交易間會產生衝突。如果有十條可並行鏈,那麼可以使用同一安全源執行十倍的工作。

Polkadot不僅支持直接連接鏈,而且支持完全託管但可連接鏈。可並行鏈,或是使用更多網絡共識機制獲得共識的原生支持鏈,將可從Polkadot的安全池機制中獲益。安全池還支持每個可並行鏈(以及中繼鏈)使用整個網絡的驗證者,向整個網絡提供安全。這意味着每個可並行鏈將從整個生態系統的網絡效應中受益。如果可並行鏈與Polkadot兼容,那麼它就可以使用Polkadot共識機制的安全。

圖片
Parachain和Bridge生態系統

對於其它具有自身狀態歷史和共識方法的現有項目,Bridge擔當支持這些鏈連接到Polkadot的連接層。Bridge實現將具有智能合約能力的區塊鏈連接到Polkadot,而無需對這些鏈的原生協議做任何修改。Parity Technologies最初的工作就聚焦於使用Bridge連接兩個類以太坊鏈。例如,它可以在以太坊的PoW鏈和以太坊的PoA鏈之間(即兩個鏈之間的賬戶)相互交換價值。

比特幣腳本和EVM這類模型的核心設計目標是互操作性,但是使用這類模型的系統要爲其實現的方方面面付出不斷增長的執行成本 ,而不僅僅是讓運行於同一網絡的其他系統可以訪問而已。與之相對比,Polkadot的可並行鏈通過異步消息傳遞實現相互通信,這樣只需在可並行鏈的接觸邊界上支付數據唯一性的代價。

注意,創建一種提供完全通用、圖靈完備智能合約框架的可並行鏈是完全可能的。一個簡單的例子是EVM提供的可並行鏈。出於上述原因,在該可並行鏈上實現的合約不僅將受益於以太坊智能合約的通用性和互操作性,而且也會受限於這些特性。首要差異在於它完全是選擇性加入(opt-in)的。Polkadot的最強大的特性之一,就是在考慮了具備集成一些關注解決方案的能力的同時,保持了完全通用框架的可選擇性。

學習資源: PolkaDot的Medium博客, Polkadot

Polkadot Reddit | Polkadot GitHub | Pokadot Telegram

32. Radix

智能合約語言: JavaScript,TypeScript。
現狀: 不活躍。
說明:

Scrypto是一種狀態機,它爲運行於其上的虛擬機提供安全和功能抽象。如可能,Scrypto將爲虛擬機提供接口,進而執行任何語言編寫的腳本。

規劃實現的JavaScript模塊,是一種與Scrypto狀態機交互的虛擬機。

學習資源: Radix開發人員入門Radix DLT的Medium博客
Radix Reddit | Radix Github | Radix Telegram

33. Exonum

智能合約語言: Rust,並正在考慮與Java的綁定。
現狀: 活躍。
說明:

“服務”(Service)實現了指定用於Exonum應用的業務邏輯。服務是Exonum框架的主要擴展點,它具有與其它區塊鏈中智能合約同樣的作用。

圖片
Exonum服務的架構

開發Exonum服務類似於Web或企業平臺中的開發服務,二者具有相同的主要組件,分別爲:

端點(Endpoints)

一個服務包括了一組實現爲REST API的端點。服務使用端點與外部世界交流。Exonum框架擔當中間件,在服務間分發請求,並對服務開發人員提供抽象的數據序列化/去序列化、訪問控制以及其它常見中間件任務。

Exonmu具有三種類型的服務端點:

  • 對應於REST中PUT/POST請求的交易;
  • 對應於REST中GET請求的讀取請求;
  • 代幣管理和維護端點的私有API,通常外部世界不可訪問。

Exonum智能合約與區塊鏈使用的其它模型的關鍵區別如下:

  • 受限的環境:Exonum只執行預定義的請求類型,不允許執行從客戶接收的非信任代碼。這導致更受控的環境,易於實現智能合約的安全性。
  • 無隔離:請求處理與系統核心在同一執行環境中處理。這對於提高性能非常有好處,但存在一定的安全危險。
  • 本地狀態。Exonum服務可能會定義特定於運行服務節點的本地狀態。本地狀態可用於管理一些保密信息,例如私鑰等。本地狀態可使用私有服務端點管理。通過使用本地狀態,服務比其它區塊鏈中的服務更加活躍。例如,錨點服務使用本地狀態完全自動化錨點交易簽名。
  • 交易分割處理。交易驗證是交易處理中的一個獨立步驟。它是在接收到交易後並在交易應用到區塊鏈狀態之前立刻執行。驗證可能包括認證檢查(例如,驗證交易簽名),以及其它對交易內容的結構檢查。同時,交易驗證不能訪問當前區塊鏈狀態。

學習資源: Exonum官方文檔Bitfury團隊的Medium博客

Exonum GitHub | Exonum Reddit | Exonum Telegram

34. Universa

智能合約語言: Javascript。
現狀: 活躍。
說明:
爲了理解Universa智能合約的工作機制,下面我們分各個部分介紹。

參與方(Party)

Universa的每位參與者稱爲“參與方”(Party)。參與方可以完全匿名,或者是標識的實體。有多種方法標識一個參與方。在根合約中,參與方可如下標識:

  • 使用合約內容中的公鑰。例如,發佈者或屬主。
  • 使用匿名公鑰ID,支持識別參與方的公鑰,並在首次使用之前無需公開。例如,匿名購買。

參與方可以在合約記錄中添加自身的其它細節,例如名字、暱稱、社會保險或護照號碼等。

合約內容

1.組成部分

  • 定義。定義在修改中是不可變的,其中包括髮布者、發佈時間戳、許可(一些許可也可以更改狀態)和創建者希望不可更改的所有內容。
  • 狀態。狀態是在修改中可以更改的可變部分,其中包括修改編號、創建者、時間戳、指向前後修改的引用、可更改角色,在一些情況下還包括許可和任何可變客戶數據。
  • 附件。在定義或狀態中醫簽名引用形式提及的所有文件。

Universa網絡知道定義和狀態,其餘部分從不發送到網絡。附件是非常重要的部分,其中常常包含敏感的私有信息。儘管該信息在合約狀態和定義中被簽名引用,因此受到很好的保護,但是最好的保護方式是不將附件傳遞到Universa網絡中。

由此,合約整體只在各涉及的參與方間交換,可使用任何適用的傳遞方式,例如電子郵件、聊天軟件、雲、USB Flash等。附件的不可變性由合約中的簽名引用保證,進而被參與方簽名,並在網絡上驗證通過。

信任鏈的工作機制爲:

  1. Universa網絡批准合約的修改,提供註冊時間,確保狀態和定義的不可變性。
  2. 對修改簽名的參與方通過簽名確認狀態和定義的正確性,處理所有提及的附件並確認同意。
  3. 狀態和定義中的經簽名的引用確保了存儲在客戶存儲某次中的相應附件的不可變性。
  4. 腳本

沒有腳本,就無法體現智能合約的智能。Universa智能合約支持以附件形式添加JavaScript腳本。腳本可以完全自動化地實現客戶需要執行的操作、生成新的合約並處理事件。第三代Universa客戶甚至可以使用GUI客戶端運行自治Web服務或Web應用,以GUI應用方式與用戶接口一併執行工作流自動化。Universa的目標是藉助於集成Universa平臺和服務,支持智能合約實現全功能應用。

Universa也可使用Coffeescript等其它一些可編譯爲純JavaScript的語言,甚至可作爲附件集成到合約中。但是在執行時,只會使用經簽名的編譯後JavaScript集合。

腳本被客戶軟件在客戶環境中執行。Universa網絡甚至看不到腳本,但是它總是會檢查結果,以確認與合約定義和狀態的一致性。這意味着,即便腳本會執行一些禁止行爲,網絡也不會接受執行結果。通常,更簡單的方法並非嘗試檢查腳本源中隱含的漏洞,而是在知道一些許可和條件的情況下限制所允許執行的操作。相比腳本而言,許可DSL更乾淨並直接。由Univerda遠程執行的許可檢查也不會被腳本所跳過,檢查是本地執行的,不會被傳遞到Univerda節點上。

腳本的一般執行循環爲:腳本被用戶或一些事件激活,或是在服務器環境中激活,例如輸入合約,或集成比特幣服務的支付通知等。進而執行腳本,修改其狀態(每個腳本具有可操作的本地存儲,並可以訪問合約鏈),創建新的Universa修改並批准,生成合約。如果有必要,合約將通過任何連接通信工具發送到網絡。事實上,腳本允許使用HTTPS API連接任何網絡。

  1. 表示

智能合約是對象(數據結構或哈希)的一種樹結構,可使用任何現代格式存儲,例如JSON、YAML、XML、BOSS等任何可保存數組、結構、字符串和數字的格式。基於YAML的DSL表示通常用於新合約模板。在網絡中,合約通常以BOSS格式序列化,因爲這種方式是保存二進制數據的最好方式,在Universa中的鍵、簽名和二進制ID等中廣泛使用。

膠囊(capsule)

每個智能合約被打包爲一種受嚴格保護的、經簽名的容器,稱爲“膠囊”(Capsule)。膠囊由膠囊體和一組擴展簽名組成。膠囊體中打包了二進制合約內容,以及一組擴展簽名。每個擴展簽名對膠囊體和屬主類型、指紋和時間戳做簽名,可以使用很多電子簽名類型。相應的公鑰(或其匿名ID)通常在合約體中,這樣系統可以檢查所提及的密鑰是否用於對合約簽名。

合約的膠囊包含了加密數據,以此作爲Universa網絡所知道的合約部分。膠囊數據中不應該包括任何敏感的私有數據,並必須作爲經簽名的引用附在合約中(例如,保存在外部文件中),永遠不會傳遞到Univerda網絡上。這種設計不僅降低了無必要的網絡流量,而且保護了私有信息。

學習資源: Universa官方文檔Universa的Medium博客

Universa Reddit | Universa GitHub | Universa Telegram

35. Urbit

智能合約語言: Hoon。
現狀: 活躍
說明:

Urbit是個人服務器的一種端到端的安全網絡,構建於一種完全重建(clean-slate)的系統軟件堆棧之上。它使用以太坊實現其功能。

可以將Urbit簡單地看成是一種“個人區塊鏈”。和區塊鏈一樣,Urbit也是一種確定性的虛擬計算機。其語義定義爲將其事件歷史映射爲當前狀態的生命週期凍結函數。不同於區塊鏈,Urbit實例是一個用於單用戶的私有計算機,而非所有人均可使用的公有記錄。

Urbit的生命週期函數實現爲:一個稱爲“Nock”的微解釋器(nano-interpreter)將一種稱爲“Hoon”的函數式類型語言編譯爲Nock。使用Hoon編寫一種事件驅動的操作系統Arvo。Nock上的所有事物均可在Urbit自身的中繼包網絡Ames上升級。在使用測試密鑰的情況下,Ames是活躍並穩定的。

Urbit解釋器可運行於任何Unix系統上。Urbit服務器是一種單層存儲,它可以是數據庫,也可以是應用引擎。每個Urbit事件是一個交易。Urbit在語義上是凍結的,不能調用Unix。

用戶的Urbit實例就是用戶的個人服務器。Urbit最終將包含並管理整個數字化生命週期。基於安全或隱私上的權衡考慮,用戶可以選擇是在家,還是在雲上計算。但是,Urbit的形式化語義使得交付比遷移更爲棘手,因此用戶不應鎖定於使用某個計算提供商。

學習資源: Urbit官方文檔Urbit主頁

Urbit GitHub | Urbit Reddit | Urbit Telegram

36. Soil

優點:
與以太坊一致。
不足:
與以太坊一致。
智能合約語言: Solidity。
現狀: 活躍。

說明: SOILCoin是一種與以太坊並行的加密貨幣,它使用了智能合約和DApp,運行在由使用Dagger算法的區塊鏈技術提供安全的“全球計算網絡”上。這種EVM是由一種稱爲“SOIL”的數字代幣推動的。SOIL通過PoW挖礦獲得,並充當在SOIL幣網絡上運行計算過程的瓦斯氣體。

學習資源: Soil文檔

37. Expanse

優點:
與以太坊一致。
不足:
與以太坊一致。
智能合約語言: Solidity。
現狀: 活躍。
說明:

Expanse被認爲是以太坊的首個穩定分支實現,其智能合約實現與以太坊相同。

學習資源: CryptoZombiesSolidity文檔OpenZeppelin

38. Ubiq

優點:
與以太坊一致。
不足:
與以太坊一致。
智能合約語言: Solidity,
現狀: 活躍,
說明: Ubiq是以太坊的一個分支實現,並做了部分改進。這些改進並未影響以太坊的智能合約實現。
學習資源: CryptoZombiesSolidity文檔OpenZeppelinAlex Sterk的Medium博客

39. Ethereum Classic

優點:
與以太坊一致。
不足:
與以太坊一致。
智能合約語言: Solidity。
現狀: 活躍。
說明: Ethereum Classic是以太坊的一個分支實現,其智能合約與以太坊相同。
學習資源: CryptoZombiesSolidity文檔OpenZeppelin

40. Monax

優點:
與以太坊一致。
不足:
與以太坊一致。
智能合約語言: Solidity
現狀: 活躍
說明: Monax重新實現了EVM,並提供了SDK。
學習資源: Monax docs

其它一些智能合約平臺

其中還包括OmniLayer(dexx)、Ardor等。本文不再一一列舉。

結束語

智能合約是以數字形式定義的承諾,控制數字資產並涵蓋合約參與者約定的權利和義務。它由計算機系統自動執行。在基於區塊鏈的智能合約中,數據管理、事務驗證和狀態處理都是在區塊鏈上完成的,區塊鏈提供完備的狀態機接受和處理各種智能合約程序。該系列文章將列舉四十種支持或是用於開發智能合約的平臺或項目,並介紹影響智能合約功能的主要因素。本篇是該系列文章的第四篇。

內容到此爲止。如果讀者發現其中有所遺漏,或是存在錯誤,歡迎在評論中留言。

感謝閱讀。

作者簡介Vaibhav Saini是一家由MIT Cambridge 創新中心孵化的初創企業TowardsBlockchain的聯合創始人。Saini也是一名高級區塊鏈開發人員,具有Ethereum、Quorum、EOS、Nano、Hashgraph、IOTA等多種區塊鏈平臺的開發經驗。他目前是德里印度理工學院(IIT Delhi)的一名大二學生。

查看英文原文: ContractPedia: An Encyclopedia of 40 Smart Contract Platforms A Complete List of all Smart Contract supportive Platforms

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章