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


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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM