智能合約從入門到精通:用Solidity開發一個「Hello World」

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

那麼,什麼是Solidity語言呢?在前面的文章中咱們反覆提到過以太坊,以太坊作區塊鏈2.0的典型表明,Solidity在以太坊中是撰寫智能合約最受歡迎的語言,所以今天咱們就和你們介紹一下這個做爲智能合約開發中最主流的語言。瀏覽器

Solidity是運行於Ethereum虛擬機(EVM)上的一種智能合約高級語言。它的語法與Javascript類似,是一種面向對象的語言。但其做爲一種真正意義於網絡上運行中的去中心合約,它又有着各類各樣的特別之處,如下咱們列舉了其中的一部分,以便你們可以更直觀地去理解Solidity語言的特色。bash

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);
    }
}
複製代碼

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

最後,在這裏給你們介紹一款瀏覽器編譯器——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/
相關文章
相關標籤/搜索