1. 程式人生 > >一起學智慧合約之一智慧合約的程式語言和開發環境

一起學智慧合約之一智慧合約的程式語言和開發環境

一、程式語言

智慧合約的編寫語言有好幾種:

Solidity:有點類似Javascript風格, 檔案的字尾名是.sol.。

Serpent:與Python風格類似的Serpent, 檔案的字尾名是.se。

LLL:類似Lisp,估計好多人都沒聽說過這個語言。

以膠Serpent火過一段時間,不過現在智慧合約的主流程式語言是Solidity,維護也很及時,比較比較健壯穩定。

舉一個小例子:

pragma solidity ^0.4.8;

contract Welcome

{

    function PrintWelcome() constant returns (string)

    {

        return "Welcome";

    }

}

非常簡單,返回一個固定的字串。

二、編譯

編譯使用solc,這個在以太坊github上有原始碼供分析。不過它是用c++寫的,並且涉及到了編譯連結的很多知識,如果想啃,還需要學習參考一下這兩方面的資料。

三、開發環境

智慧合約的開發環境,也有不少,包括各種測試環境和編譯工具,簡單介紹一下,(略過安裝,大家可去網上查詢相關安裝資料,都比較簡單)。

  1. 普通環境

testrpc:非常方便容易的建立測試網路的方法. Testrpc可以配置好一些帳戶讓你不必如私鏈等還得轉來轉去,它更適合測試,但是有些東西可能真正部署到鏈上會有一些問題,所以還是要引起注意。

Truffles:非常流行的開發框架,能夠在本地編譯、部署智慧合約,最初用過一段時間,現在在偶爾也用。

  1. 整合環境

整合環境也經過了幾個變化。現在在流行的是基於web的Remix,原來還有一個mix,不過因為編寫這個工具的大神從以太坊離開了。所以還是搞Remix吧。

三、部署和呼叫

部署可以通過Remix來完成,也可以用命令通過Web3j來實現,假如你有一個合約,把它拷貝到Remix上,編譯。就會得到一個部署的命令。類似於:

var welcomeContract =

web3.eth.contract([{"constant":true,……"type":"function"}]);

var welcome = welcomeContract.new(

   {

     from: web3.eth.accounts[0],

     data: '0x608060……',

     gas: '4700000'

   }, function (e, contract){

    console.log(e, contract);

 …….

    }

 })

然後把它拷貝到到geth的控制檯上,執行就可以了,如果正在挖礦的私鏈,可以很快得到結果:

Contract mined!

address: 0x096aa2dd30751f49b62f5372150984cf1cfd3124

transactionHash: 0x17c8d760a243ee8dcf2bc9f258e3290f69c4e61ad49d2eadff0eebe525a05cb5

這樣就可以使用了。使用方法:

在geth的控制檯上輸入:

welcomeContract. PrintWelcome ()

這時在控制檯上就會顯示:”Welcome”。

最後,不管是程式語言還是編譯器亦或是程式設計環境,都在不斷的變化,所以需要及時跟進。那麼,現在就可以順利的學習Solidity語言並用其開發智慧合約了。

如果對c++和區塊鏈感興趣,歡迎關注: