區塊鏈入門如何選擇開發語言?

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。區塊鏈技術入門,涉及那些程式設計語言?在本文中,將介紹比特幣、超級賬本Fabric和以太坊這三種區塊鏈中,分別使用什麼開發語言來進行智能合約編程,並提供你進一步學習的資源連結。## 比特幣比特幣是第一個真正意義上的區塊鏈,不過,從嚴格意義上來講,它對智能合約的開發人員是不友好的。可以用一種低門檻的程式設計語言[Bitcoin Script](https://en.bitcoin.it/wiki/Script)在比特幣系統上編寫智能合約。每個比特幣地址都對應著一個Bitcoin Script程式。看起來是這樣:```IF 2 <Alices' pubkey> <Bob's pubkey> <Escrow's pubkey> 3 CHECKMULTISIGELSE "30d" CHECKSEQUENCEVERIFY DROP <Alices' pubkey> CHECKSIGENDIF```另一種較進階別的語言是Ivy,它可以編譯成Bitcoin Script。Ivy能夠協助你編寫自訂的比特幣地址,這種地址與隔離見證(SegWit)相容,在比特幣協議(包括簽名檢查、hash特徵值(commitment)和時間鎖)的支援下,可以執行任意條件組合。例如:```contract EscrowWithDeplay{ sender: PublicKey recipient: PublicKey, escrow: PublicKey, delay: Duration, val: Value}{ clause transfer(sig1: Signature, sig2: Signature){ verify checkMultiSig([sender, recipient, escrow],[sig1, sig2]) unlock val } clause timeout(sig: Signature){ verify checkSig(sender, sig) verify older(delay) unlock val }}```Ivy的github地址:https://github.com/ivy-lang/ivy-bitcoin比特幣“虛擬機器”——協議中負責執行Bitcoin Script程式的一部分——與以太坊或者Chain Protocol等其它智能合約平台的虛擬機器相比(功能)更加有限,其指令系統甚至不是圖靈完備的。但Bitcoin Script的確提供了一組很有用的基礎原語(primitives)——簽名校正、雜湊計算以及相對和絕對的時間鎖——另外還能對這些原語進行自由組合。## 超級賬本fabricfabric是超級賬本大家庭中最成熟的一個區塊鏈項目,主要用於行業鏈、聯盟聯或私人鏈,它不需要通過挖礦來形成共識,因此可以達到很高的交易速度。在fabric中,智能合約被稱為鏈碼(Chaincode),實質上是控制區塊鏈網路中的不同實體或相關方如何相互互動或交易的商務邏輯。簡言之,鏈代碼將業務網路交易封裝在代碼中。可以調用鏈代碼來設定和擷取賬本或 world state。超級賬本可以使用go、java或者nodejs來開發智能合約,不過支援最好的還是go語言。下面是使用go開發的一個簡單地fabric智能合約:```package main import "fmt"import "github.com/hyperledger/fabric/core/chaincode/shim" type SampleChaincode struct {} func (t *SampleChaincode) Init(stub shim.ChaincodeStubInterface, function string, args []string) ([]byte, error) { return nil, nil} func (t *SampleChaincode) Query(stub shim.ChaincodeStubInterface, function string, args []string) ([]byte, error) { return nil, nil} func (t *SampleChaincode) Invoke(stub shim.ChaincodeStubInterface, function string, args []string) ([]byte, error) { return nil, nil} func main() { err := shim.Start(new(SampleChaincode)) if err != nil { fmt.Println("Could not start SampleChaincode") } else { fmt.Println("SampleChaincode successfully started") } }```frabric的智能合約可以使用一個go中的類實現,它必須要實現約定的借口Init和Query。Init 方法 在鏈代碼首次部署到區塊鏈網路時調用,將由部署自己的鏈代碼執行個體的每個對等節點執行。而只要在區塊鏈狀態上執行任何讀取/擷取/查詢操作,就會調用 Query 方法。訪問這裡瞭解更多關於fabric的智能合約開發的相關資訊:[Fabric Chaincode](http://hyperledger-fabric.readthedocs.io/en/release-1.1/chaincode.html)## 以太坊以太坊是第一個提供完善的智能合約開發架構的區塊鏈,因此它也被稱為區塊鏈2.0的代表。事實上,目前絕大多數的區塊鏈應用,包括ICO代幣發行,都是基於以太坊來實現的智能合約應用。以太坊有四種專用語言可以用來開發智能合約:- Solidity ,受JavaScript 啟發- Serpent ,受Python啟發- Mutan,受Go 啟發- LLL 受Lisp 啟發這四種語言都是為面向合約編程而從底層開始設計的語言,但從目前的發展來看,Solidity已經稱為以太坊智能合約開發當之無愧的慣用語言。Solidity的文法類似於JavaScript,這降低了學習門檻,易於被掌握和使用,因為JavaScript是Web開發人員的常用語言。例如,下面是一個使用Solidity開發的簡單但完整的智能合約:```pragma solidity ^0.4.21;contract HelloWorld { string hello = "Hello World!!!"; event say(string _value); function sayHello() public { emit say(hello); } }```合約代碼第一行指定該合約使用的Solidity版本為0.4.21,不支援高於0.4.21版本的Solidity特性。在Solidity中,contract關鍵字包含的程式碼片段即表示一個智能合約,它擁有一些成員變數和函數,看起來非常類似於傳統的物件導向開發中的類。> 如果你希望馬上開始學習以太坊智能合約和應用開發,可以訪問匯智網提供的出色的線上互動教程:>- [以太坊智能合約與應用實戰開發入門](http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=go7878)>- [以太坊去中心化電商應用實戰開發](http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6?affid=go7878)655 次點擊  ∙  1 贊  
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.