『0004』- 基於Ethereum Wallet的Solidity HelloWorld智慧合約(Smart Contract)

NO IMAGE

孔壹學院:國內區塊鏈職業教育領先品牌
作者:黎躍春,區塊鏈、高可用架構工程師
微信:liyc1215 QQ群:348924182 部落格:http://liyuechun.org

相信大家都有學習各種開發語言的經歷,一般學習任何一門語言都會先從最簡單的HelloWorld開始,所以本篇文章,我們將編寫一個最基本的合約程式碼,並且一步步講解如何通過Ethereum Wallet將合約部署到區塊鏈,同時我們將通過本demo的演示如何通過傳送資料和接收資料和合約進行互動。

Solidity合約的語法和麵向物件程式語言非常相似,一個合約有我們能夠呼叫的方法(函式)和能夠儲存資料和讀取資料的屬性(狀態變數)

Counter合約原始碼

我們的Counter合約將increment方法被呼叫的次數儲存到count屬性中。並且每個人都可以通過getCount方法獲取區塊鏈上count的值。

pragma solidity ^0.4.4;
contract Counter {
/* 定義一個uint型別的count變數 */
uint count = 0;
/* 當這個方法被呼叫時count的值會加1 */
function increment() public {
count = count   1;
}
/* 讀取count資料 */
function getCount() constant returns (uint) {
return count;
}
}

Counter合約部署

  • 要想釋出我們的合約到區塊鏈,開啟Ethereum Wallet然後點選Contracts

  • 點選部署一個新合約。

  • 將我們的Counter合約程式碼拷貝到Ethereum Wallet程式碼區域。

  • 選擇Counter合約,然後點選DEPLOY按鈕。

  • 輸入當前部署的錢包的密碼,然後點選SEND TRANSACTION按鈕。

  • 檢視最新交易。

  • 檢視交易資訊。

和Counter合約互動

  • 因為我們部署的合約是部署在Account 2上的,所以我們可以點選Account 2檢視最新的交易記錄。

  • 點選Counter按鈕,進入互動介面。

  • 選擇IncrementAccount 2,然後點選EXECUTE按鈕。

  • 輸入密碼,點選SEND TRANSACTION按鈕。

  • 交易執行完成後,count會自動加1


小結

部署合約時,因為要往區塊鏈寫入資料,需要礦工進行驗證,所以需要花費一些gas獎勵給礦工,還有當我們每次呼叫increment方法時,也屬於寫入資料,同樣需要花費gas,但是呼叫getCount方法時只是從區塊鏈讀取資料,無需驗證,讀取資料無須花費gas。

技術交流

  • 區塊鏈技術交流QQ群:348924182

  • 「區塊鏈部落」官方公眾號