智慧合約從入門到精通:用Solidity開發一個“Hello World”

區塊鏈技術發表於2018-04-21

簡介:上一章中我們聊到了智慧合約的應用場景,在瞭解區塊鏈技術目前的發展情況、智慧合約的概念以及其應用場景之後,我們將在後續的文章中共同學習智慧合約的編成語言。今天,我們就來簡單地談一談用於編寫智慧合約的語言——Solidity語言。

 

那麼,什麼是Solidity語言呢?在前面的文章中我們反覆提到過以太坊,以太坊區塊鏈2.0典型代表,Solidity以太坊中撰寫智慧合約最受歡迎的語言,因此今天我們大家介紹一下這個作為智慧合約開發中最主流的語言

 

Solidity是執行Ethereum虛擬機器(EVM)上的一種智慧合約高階語言。的語法Javascript相似,是一種物件導向的語言。但作為一種真正意義於網路上執行中的去中心合約,它又有著各種各樣的特別之處,以下我們列舉了其中的一部分,以便大家能夠更直觀地去理解Solidity語言的特點。

 

1. Solidity語言中,以太坊的底層構造是基於帳戶而非UTXO的,所以它有一個特殊的Address的型別,用於使用者、合約以及合約程式碼的定位合約本身也是一個帳戶)。

 

2. Solidity語言具備語言內嵌框架支援支付的特點提供了一系列諸如payable的關鍵字,可以在語言層面直接進行支付,在運用上快捷簡便

 

3. 儲存。Solidity語言的儲存使用的是網路上現有的區塊鏈,資料的每一個階段、狀態都可以得到永久儲存,所以需要明確變數使用記憶體還是區塊鏈。

 

4. 關於Solidity的執行環境,其執行環境建立在去中心化的網路上,強調的是合約或函式執行的呼叫的方式。因為原來一個簡單的函式呼叫變為了一個網路節點的程式碼執行,有著分散式的特點

 

5.最後Solidity語言有著一個十分特殊的異常處理機制。在過程中一旦出現任何異常,所有的執行都將會被強制回撤,這一機制有效避免中間狀態突然出現資料不一致的情況,從而保證合約執行的原子性

 

Hello World作為在《The C Programme Language》中使用的第一個演示程式,在程式設計的世界裡聽起來也許非常高階,但實際上想要上手玩轉其實非常地簡單:

 

pragma solidity ^0.4.0;

contract HelloWorld{

    uint balance;

    function update(uint amount) returns (address, uint){

        balance += amount;

        return (msg.sender, balance);

    }

}

 

如上所示,通過讀取引數輸入的新值,並將其累加至合約的變數中,返回傳送人的地址,和最終的累計值。

 

最後,在這裡給大家介紹一款瀏覽器編譯器——Remix。

 

瀏覽器編譯器Remix可謂稱得上是Solidity語言的開發神器,是一個無需安裝即可使用的線上編譯器。只需開啟其網址,即可線上使用並看到具體效果。開啟後,如下圖所示:


輸入上述程式碼,點選Create按鈕,就能在瀏覽器中建立能呼叫函式的按鈕。在update按鈕旁輸入入參,點選就能執行函式呼叫並列印出函式返回的結果了。


如果出現錯誤,可以等待瀏覽器資源載入完成,或強制重新整理後再試。

 

除了Remix今天我們介紹一款國內的編譯器JIDE

 

JIDE是JUICE開放服務平臺提供用來編寫智慧合約及DApp的免費開發工具,JIDE整合了JUICE底層測試鏈、編輯器和Solidity執行時環境,使用者無需搭建任何環境就可以快速地編寫、編譯、部署、執行智慧合約

 

Remix相同JIDE是一個無需安裝即可使用的線上編譯器。只需開啟其網址,即可線上使用並看到具體效果。http://open.juzix.net

 

JIDE提供了完整了中文開發文件,對於初學者來講,這是非常方便

Solidity的完整語法,敬請期待後續文章。

部分資料來源:http://www.tryblockchain.org/


相關文章