以太坊開發 -- geth 使用篇(二)

1 Geth 是什麼

Go-Ethereum簡稱Geth,用golang語言實現。Geth是以太坊協議的官方實現。

  • Geth可以當客戶端來使用
    打開Geth,用戶可以創建自己的以太坊私有鏈、管理賬戶、挖礦、交易、部署執行智能合約等,用戶還可以下載以太坊主鏈、解析主鏈上任意交易數據等。

  • Geth可以當服務器來使用 Geth提供很多服務和豐富的API,用戶可以開發程序通過調用Geth服務,實現自己想要的功能,比如獲取一段時間內以太幣的所有交易賬戶。

2 Geth 搭建及賬戶管理

我目前測試搭建的是基於 mac 操作系統,目標實現一個多節點集羣,並且可以互相發現和互相交易。

  1. 啓動第一個節點
geth --datadir data0 --rpc --dev console
  • --dev 啓用開發者網絡(模式),使用此模式後啓動的node就不會去同步公有鏈上的區塊,公有鏈的數據量幾十個G太大了,共識速度也比較慢。開發者網絡會使用 POA 共識,默認預分配一個開發者賬戶並且會自動開啓挖礦。
  • --datadir 後面的參數是區塊數據及祕鑰存放目錄。
  • 第一次輸入命令後,它會放在當前目錄下新建一個 data0 目錄來存放數據。
  • --rpc 啓用HTTP-RPC服務器
  • console 進入控制檯
// 獲取節點實例
admin.nodeInfo.enode

  1. 賬戶
// 查看賬戶,默認分配了一個開發者賬戶
eth.accounts

// 創建賬戶,‘mumu’是新賬戶的密碼
personal.newAccount('mumu')
// 通過以下命令可以分別查看默認開發賬戶和新創建賬戶的賬戶餘額
eth.getBalance(eth.accounts[0])
eth.getBalance(eth.accounts[1])


可以看到默認開發賬戶分配有很多餘額。

  1. 轉賬
    我們將從默認開發者賬戶中轉入1個以太幣給新賬戶
eth.sendTransaction({from:'0xb479c7bfe4fac4e191c345a3916859730320d3aa', to:'0xdac7beb12af3139f4b07b3727ac1787f1d039b84', value: web3.toWei(1,'ether')})


轉賬成功!

  1. 解鎖賬戶
    在部署合約前需要先解鎖賬戶
personal.unlockAccount(eth.accounts[1])


解鎖成功後,賬戶準備好了,接下來可以編寫合約代碼了。

3. 與 metamask 連接

  • metamask 先選擇連接 localhost 8545,連接的前置條件是 Geth 的啓動必須已經開啓的 rpc 連接。
  • 創建好賬戶後,點擊賬戶詳情,導出私鑰。
  • 將私鑰複製到一個 txt 文件中,例如 slash.txt
  • 在 Geth 中輸入命令
geth account import <私鑰文件路徑>

提示輸入密碼,這個密碼是 metamask 上的賬戶密碼。

// 查看 geth 賬戶列表
geth account list

賬戶導入成功!
這種方法同樣適用於任何已知私鑰的外部賬戶導入geth

  • 這時候在 metamask 賬戶之間進行交易,在 Geth 中都可以通過命令查看到了,反之亦然。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章