1. 程式人生 > >Windows平臺上Geth實戰之hello world

Windows平臺上Geth實戰之hello world

geth是一個以太坊客戶端,現在利用geth啟動一個以太坊(開發者)網路節點。

geth --datadir testNet --dev console 2>> test.log

 命令引數說明(更多命令詳解可閱讀Geth命令用法-引數詳解篇):
–dev 啟用開發者網路(模式),開發者網路會使用POA共識,預設預分配一個開發者賬戶並且會自動開啟挖礦。
–datadir 後面的引數是區塊資料及祕鑰存放目錄。
第一次輸入命令後,它會放在當前目錄下新建一個testNet目錄來存放資料。
console 進入控制檯
2>> test.log

 表示把控制檯日誌輸出到test.log檔案

準備賬戶

部署智慧合約需要一個外部賬戶,我們先來看看分配的開發者賬戶,在控制檯使用以下命令檢視賬戶:

eth.accounts

看一下賬戶裡的餘額,使用一下命令:

eth.getBalance(eth.accounts[0])

 

建立賬戶

使用以下命令建立賬戶:

personal.newAccount("noone")

這時我們檢視賬戶列表:

eth.accounts

 

給新賬戶轉賬

我們知道沒有餘額的賬戶是沒法部署合約的,那我們就從預設賬戶轉1以太幣給新賬戶,使用以下命令(請使用你自己eth.accounts對應輸出的賬戶

):

eth.sendTransaction({from: '0x4e6ad3724486be3e12f3ac1589bed2b435531e77', to: '0xfdb14a499dd54b96785d5d21249d63ca664b8874', value: web3.toWei(1, "ether")})

 檢視餘額

解鎖賬戶

在部署合約前需要先解鎖賬戶(就像銀行轉賬要輸入密碼一樣),使用以下命令:

 personal.unlockAccount(eth.accounts[1],"noone");

 

編寫合約程式碼

現在我們來開始編寫第一個智慧合約程式碼,solidity程式碼如下(這是最新的solidity版本

,網上的程式碼solidity版本都很老,比如0.4.18在remix中有很多版本,我也不知道是哪個,試了半天也編譯不過):

pragma solidity >=0.4.22 <0.6.0;
contract helloworld {
    string greeting;//="helloworld";
    
    function hello(string memory _greeting) public {
        greeting = _greeting;
    }

    function say()   public returns (string memory) {
        return greeting;
    }
}

 

 

簡單解釋下,我們定義了一個名為helloworld的合約,在合約初始化時儲存了一個字串,每次呼叫say返回字串。
把這段程式碼寫(拷貝)到Browser-Solidity,如果沒有錯誤,點選Details獲取部署程式碼,如:

 把程式碼貼上到geth命令列中

看到contract mined說明部署成功了,

檢視餘額,發現餘額少了

但是當我輸入

 helloworld.say()

一直沒有出現helloworld,這個問題我還沒有解決,如果誰知道,麻煩告知一下,謝謝

總結:雖然沒有出現“helloworld",但區塊鏈開發的基本流程瞭解了,畢竟合同部署成功了

參考資料:https://learnblockchain.cn/2017/11/24/init-env/