目前的智能合約基本都是運行在以太坊上。本文將經過一個簡單而具體的智能合約實例來幫助你們理解智能合約的編寫、部署與調用。這個例子很簡單,但經過它你能夠了解開發一個以太坊的智能合約的完整過程。 在以後的教程中,咱們將結合不一樣的場景案例,分別舉出不一樣的例子例如投票、衆籌、拍賣、ERC20/ERC721代幣發行等,並實現相應的solidity示例代碼。咱們但願你能在實踐中逐步理解學習智能合約的開發語言solidity,理解智能合約的運行原理,並掌握必要的以太坊智能合約編程技能。編程
若是你但願立刻開始學習以太坊DApp開發,能夠訪問匯智網提供的出色的在線互動教程:瀏覽器
目前智能合約最受歡迎的編程語言爲Solidity,可是並不僅有Solidity。做爲初學者,編寫Solidity代碼,咱們可使用Remix,它是一個基於瀏覽器的Soldity IDE,網址爲:http://remix.ethereum.org/ 。Remix支持編寫、測試和部署智能合約。編程語言
學一門語言的第一個程序毋庸置疑都是HelloWorld,那麼咱們就來寫一個HelloWorld的智能合約吧。合約代碼以下。ide
pragma solidity ^0.4.21; contract HelloWorld { string hello = "Hello World!!!"; event say(string _value); function sayHello() public { emit say(hello); } }
合約代碼第一行指定該合約使用的Solidity版本爲0.4.21,不支持高於0.4.21版本的Solidity特性。學習
在Solidity中,contract關鍵字包含的代碼段即表示一個智能合約,它擁有一些成員變量,表示該合約的數據,如咱們的HelloWorld中的hello,咱們能夠修改操做這些成員。同時它擁有一些function,能夠被他人調用。區塊鏈
event是Solidity提供的一種事件和訂閱機制,智能合約可以發出一些event,合約調用者可以監聽這些事件並做出相應的反應。測試
這個合約沒有作不少事情,它只會在有人調用它的sayHello方法時,發出一個say事件。接下來讓咱們來部署和執行它。3d
首先咱們須要編譯這段代碼,在Remix的右邊有一個Compile的tab,點擊Start to compile,編譯成功,若是失敗會有錯誤提示,改正便可。code
而後咱們須要將其部署到區塊鏈上,切換tab到Run。教程
Remix支持三種環境運行合約。其中若是爲JavaScript VM,則合約會在瀏覽器JavaScript沙箱區塊鏈中被執行,能夠理解爲Remix使用了瀏覽器的JS環境虛擬了一個區塊鏈虛擬機。若是爲Injected Provider,則Remix將會連接Matamask或者Mist這些區塊鏈錢包,經過它們來間接部署和調用合約。最後爲Web3 Provider,Remix會連接Geth等遠程區款連節點,來部署和調用合約。
簡單起見,咱們將使用JavaScript VM,它將爲咱們初始化出五個區塊鏈帳號,使用默認帳號便可。將Environment設置爲JavaScript VM。
上圖除了Environment和Account依次往下,咱們將可以看到Gas Limit,這是執行一個Transaction咱們可以接受的最大代價。Value表示下一次調用咱們將向合約帳戶轉帳多少ether。
接下來的HelloWorld表示咱們將建立的合約。點擊Create既可以建立這個合約。
咱們能夠點擊sayHello調用。能夠看到已經調用成功,在logs中打印出了咱們發出的event。
在本文中,咱們編寫了一個最簡單的智能合約,並部署和運行了該合約。咱們並無將合約部署到實際的鏈上,只是在JS 沙箱虛擬機中執行了它。後面的文章中咱們將會繼續講解如何將合約部署到鏈上。