區塊鏈技術是現目前最前沿的互聯網技術,那區塊鏈技術到底涉及哪些編程語言呢?咱們要編寫不一樣的區塊鏈編程語言又是否相同呢?下面爲你們分享三大主流區塊鏈:比特幣、超級帳本Fabric和以太坊中,分別使用什麼編程語言來編寫智能合約,一塊兒來看看吧。java
比特幣node
比特幣是第一個真正意義上的區塊鏈,不過,從嚴格意義上來說,它對智能合約的開發者是不友好的。編程
能夠用一種低門檻的編程語言Bitcoin Script在比特幣系統上編寫智能合約。每一個比特幣地址都對應着一個Bitcoin Script程序。看起來是這樣:網絡
另外一種較高級別的語言是Ivy,它能夠編譯成Bitcoin Script。Ivy可以幫助你編寫自定義的比特幣地址,這種地址與隔離見證(SegWit)兼容,在比特幣協議(包括簽名檢查、hash特徵值(commitment)和時間鎖)的支持下,能夠執行任意條件組合。例如:框架
比特幣「虛擬機」——協議中負責執行Bitcoin Script程序的一部分——與以太坊或者Chain Protocol等其它智能合約平臺的虛擬機相比(功能)更加有限,其指令系統甚至不是圖靈完備的。但Bitcoin Script的確提供了一組頗有用的基礎原語(primitives)——簽名校驗、哈希計算以及相對和絕對的時間鎖——另外還能對這些原語進行自由組合。編程語言
超級帳本fabric函數
fabric是超級帳本你們庭中最成熟的一個區塊鏈項目,主要用於行業鏈、聯盟聯或私有鏈,它不須要經過挖礦來造成共識,所以能夠達到很高的交易速度。學習
在fabric中,智能合約被稱爲鏈碼(Chaincode),實質上是控制區塊鏈網絡中的不一樣實體或相關方如何相互交互或交易的業務邏輯。簡言之,鏈代碼將業務網絡交易封裝在代碼中。能夠調用鏈代碼來設置和獲取帳本或 world state。區塊鏈
超級帳本可使用go、java或者nodejs來開發智能合約,不過支持最好的仍是go語言。下面是使用go開發的一個簡單地fabric智能合約:spa
frabric的智能合約可使用一個go中的類實現,它必需要實現約定的藉口Init和Query。
Init 方法 在鏈代碼首次部署到區塊鏈網絡時調用,將由部署本身的鏈代碼實例的每一個對等節點執行。而只要在區塊鏈狀態上執行任何讀取/獲取/查詢操做,就會調用 Query 方法。
以太坊
以太坊是第一個提供完善的智能合約開發框架的區塊鏈,所以它也被稱爲區塊鏈2.0的表明。事實上,目前絕大多數的區塊鏈應用,包括ICO代幣發行,都是基於以太坊來實現的智能合約應用。
以太坊有四種專用語言能夠用來開發智能合約:
· Solidity ,受JavaScript 啓發
· Serpent ,受Python啓發
· Mutan,受Go 啓發
· LLL 受Lisp 啓發
這四種語言都是爲面向合約編程而從底層開始設計的語言,但從目前的發展來看,Solidity已經稱爲以太坊智能合約開發當之無愧的首選語言。
Solidity的語法相似於JavaScript,這下降了學習門檻,易於被掌握和使用,由於JavaScript是Web開發者的經常使用語言。例如,下面是一個使用Solidity開發的簡單但完整的智能合約:
合約代碼第一行指定該合約使用的Solidity版本爲0.4.21,不支持高於0.4.21版本的Solidity特性。
在Solidity中,contract關鍵字包含的代碼段即表示一個智能合約,它擁有一些成員變量和函數,看起來很是相似於傳統的面向對象開發中的類。