一、Geth Console
Geth Console一個交互式的 JavaScript 執行環境,其中 > 是命令提示符。在這個環境裏也內置了一些用來操作以太坊的 JavaScript 對象,可以直接使用這些對象。這些對象主要包括:
- eth:包含一些跟操作區塊鏈相關的方法;
- net:包含一些查看p2p網絡狀態的方法;
- admin:包含一些與管理節點相關的方法;
- miner:包含啓動&停止挖礦的一些方法;
- personal:主要包含一些管理賬戶的方法;
- txpool:包含一些查看交易內存池的方法;
- web3:包含了以上對象,還包含一些單位換算的方法。
二、Geth 安裝
官方安裝文檔:https://geth.ethereum.org/install/
環境:ubuntu 18
下載包:https://geth.ethereum.org/downloads/
## 以下爲linux安裝
wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.9.6-bd059680.tar.gz // 下載
tar -zxvf geth-linux-amd64-1.9.6-bd059680.tar.gz ## 解壓
sudo cp geth-linux-amd64-1.9.6-bd059680/geth /usr/bin/ ## 複製到bin目錄
geth version ## 驗證是否安裝成功
## 以下爲輸出結果,輸出版本信息即安裝成功
Geth
Version: 1.9.6-stable
Git Commit: bd05968077f27f7eb083404dd8448157996a8788
Git Commit Date: 20191003
Architecture: amd64
Protocol Versions: [63]
Network Id: 1
Go Version: go1.13.1
Operating System: linux
GOPATH=
GOROOT=/home/travis/.gimme/versions/go1.13.1.linux.amd64
三、搭建私鏈
1、 建立目錄和並在目錄內創建genesis.json
mkdir tmpPrivate ## 創建目錄
cd tmpPrivate ## 進入tmpPrivate
vim genesis.json ## 創建並編輯genesis.json,vim使用網上很多教程,此處不再贅述
## 以下爲寫入genesis.json內容
{
"nonce": "0x0000000000000042",
"timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x",
"gasLimit": "0x8000000",
"difficulty": "0x400",
"config": {},
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x3333333333333333333333333333333333333333", "alloc": { }
}
2、執行命令,創建創世區塊
geth --datadir "./" init genesis.json
- --datadir 代表文件夾地址
以下爲執行後的效果:
3、創建私有鏈
geth --datadir "./" --nodiscover console 2>>geth.log
- --datadir 代表文件夾地址,
- --nodiscover 代表該鏈條不希望被其他節點發現,
- console >> geth.log 代表將控制檯輸出到文件geth.log中去
執行結果:
4、創建用戶
剛開始私鏈是沒有用戶的,需要創建用戶。
personal.newAccount('abc') ##創建用戶,用戶密碼是abc,得到用戶地址
eth.accounts ## 查看當前私有鏈中的用戶
執行結果:
5、查看用戶當前以太幣數量
##查看主賬戶的以太幣數量
acc0 = eth.accounts[0]
eth.getBalance(acc0) ## 新用戶以太幣數量爲0
執行結果:
6、挖礦
##開始挖礦 & 停止挖礦
miner.start() ##開始挖礦
tail -f geth.log ##查看日誌,再開一個終端看,挖礦時日誌是動態的
miner.stop() ##停止挖礦
eth.getBalance(acc0) ## 查看用戶以太幣數量
執行結果:
開始挖礦:
結束挖礦後查看賬戶以太幣數量(系統默認將挖到的幣存入第一個賬戶)
6、相關操作
##查看geth版本
geth version
##切換回命令行,執行命令,製造創世區塊
geth --datadir "./" init genesis.json
##執行一條最簡單的geth命令,來創建自己的私有鏈條
##console 2>> geth.log
##代表將控制檯的一部分輸出,輸出到文件geth.log上去
--datadir 代表文件夾地址,
--nodiscover 代表該鏈條不希望被其他節點發現,
-console >> geth.log 代表將控制檯輸出到文件geth.log中去
geth --datadir "./" --nodiscover console 2>>geth.log
##私有鏈的全部賬戶
eth.accounts
##該命令將創造一個新的用戶,該用戶的密碼是xxx.
##當然用戶也可以將xxx 改爲123,或者123456,或者任意密碼
personal.newAccount("abc")
##打開另一個終端,找到geth.log的所在目錄,執行命令從而持續的輸出以太坊的日誌
tail -f geth.log
##查看主賬戶的以太幣數量
acc0 = eth.accounts[0]
eth.getBalance(acc0)
##如何獲取賬戶的以太幣餘額
eth.getBalance("0xbcf5b841303bc08026ce2d3b8f83498ffe42c12f")
##如何在兩個賬戶之間進行以太幣轉換
acc0 = eth.accounts[0]
"0xbcf5b841303bc08026ce2d3b8f83498ffe42c12f"
##acc1 = eth.accounts[1]
"0xb8b12a801b610176935a15321f77b48dd5c0c448"
##amount = web3.toWei(0.01)
"10000000000000000"
##從acc0轉移到acc1中(),交易記錄只有等再次挖礦提交後才能看到變動。
eth.sendTransaction({from: acc0, to: acc1, value: amount})
##轉賬之前大概率會有自動鎖定,需要解鎖
personal.unlockAccount(acc0) 後輸入密碼,然後需要重新執行上面的轉賬命令
##開始挖礦 & 停止挖礦
miner.start() //開始挖礦
miner.stop() //停止挖礦
參考文檔:
https://note.youdao.com/ynoteshare1/index.html?id=d267c1e9e7d9248cf2bbcb3665b5b4fa&type=note