智慧合約從入門到精通:用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語言的開發神器,是一個無需安裝即可使用的線上編譯器。只需開啟其網址,即可線上使用並看到具體效果。開啟後,如下圖所示:

智慧合約從入門到精通:用Solidity開發一個“Hello World”
輸入上述程式碼,點選Create按鈕,就能在瀏覽器中建立能呼叫函式的按鈕。在update按鈕旁輸入入參,點選就能執行函式呼叫並列印出函式返回的結果了。

智慧合約從入門到精通:用Solidity開發一個“Hello World”
(如果出現錯誤,可以等待瀏覽器資源載入完成,或強制重新整理後再試。)

除了Remix,今天我們還將介紹一款國內的編譯器:JIDE。

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

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

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

智慧合約從入門到精通:用Solidity開發一個“Hello World”
Solidity的完整語法,敬請期待後續文章。 部分資料來源:http://www.tryblockchain.org/

相關文章