Windows平臺上Geth實戰之hello world
阿新 • • 發佈:2018-12-20
geth是一個以太坊客戶端,現在利用geth啟動一個以太坊(開發者)網路節點。
geth --datadir testNet --dev console 2>> test.log
命令引數說明(更多命令詳解可閱讀Geth命令用法-引數詳解篇):
–dev 啟用開發者網路(模式),開發者網路會使用POA共識,預設預分配一個開發者賬戶並且會自動開啟挖礦。
–datadir 後面的引數是區塊資料及祕鑰存放目錄。
第一次輸入命令後,它會放在當前目錄下新建一個testNet目錄來存放資料。
console 進入控制檯
2>> 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版本
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",但區塊鏈開發的基本流程瞭解了,畢竟合同部署成功了