1. 程式人生 > >智能合約從入門到精通:用Solidity開發一個“Hello World”

智能合約從入門到精通:用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://www.juzix.net/

JIDE提供了完整了中文開發文檔,對於初學者來講,這是非常方便的。技術分享圖片
Solidity的完整語法,敬請期待後續文章。
部分資料來源: www.tryblockchain.org

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