1掖举、搭建私有鏈,創(chuàng)建自己的創(chuàng)始區(qū)塊
建立私鏈根目錄
$makedir geth-private-chain
$cd get-private-chain
創(chuàng)始區(qū)塊的配置寫在json文件中娜庇,我們需要將下面文件的內(nèi)容保存為一個json文件
ps:下面所有操作的根目錄都為: get-private-chain
{
"config": {
"chainId": 10,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc" : {},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x20000",
"extraData" : "",
"gasLimit" : "0x2fefd8",
"nonce" : "0x0000000000000042",
"mixhash" :"0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00"
}
KEY | |
---|---|
mixhash | 與nonce配合用于挖礦塔次,由上一個區(qū)塊的一部分生成的hash。注意他和nonce的設(shè)置需要滿足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章節(jié)所描述的條件思灌。 |
nonce | nonce就是一個64位隨機數(shù)俺叭,用于挖礦恭取,注意他和mixhash的設(shè)置需要滿足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章節(jié)所描述的條件泰偿。 |
difficulty | 設(shè)置當前區(qū)塊的難度,如果難度過大蜈垮,cpu挖礦就很難耗跛,這里設(shè)置較小難度 |
alloc | 用來預置賬號以及賬號的以太幣數(shù)量,因為私有鏈挖礦比較容易攒发,所以我們不需要預置有幣的賬號调塌,需要的時候自己創(chuàng)建即可以。 |
coinbase | 礦工的賬號惠猿,隨便填 |
timestamp | 設(shè)置創(chuàng)世塊的時間戳 |
parentHash | 上一個區(qū)塊的hash值羔砾,因為是創(chuàng)世塊,所以這個值是0 |
extraData | 附加信息偶妖,隨便填姜凄,可以填你的個性信息 |
gasLimit | 該值設(shè)置對GAS的消耗總量限制,用來限制區(qū)塊能包含的交易信息總和趾访,因為我們是私有鏈态秧,所以填最大。 |
此文件可以從官網(wǎng)直接復制扼鞋,原始的chainId為0申鱼,但有可能在部署合約時出現(xiàn)問題愤诱,建議修改為10或其他數(shù)字
建立存放區(qū)塊數(shù)據(jù)的目錄
$makedir data0
目錄結(jié)構(gòu)為
geth-private-chain
|-----data0
|-----genesis.json
$ ls
data0 genesis.json
初始化以太坊私鏈數(shù)據(jù)
$ geth init genesis.json --datadir data0
geth是命令,init是命令選項捐友,genesis.json 是init的參數(shù)淫半,表示按照配置文件進行初始化。--datadir data0楚殿,指定區(qū)塊鏈的數(shù)據(jù)存放目錄為data0撮慨。
運行命令,執(zhí)行的結(jié)果如下脆粥,表示初始化成功:
INFO [03-12|14:36:52] Maximum peer count ETH=25 LES=0 total=25
INFO [03-12|14:36:52] Allocated cache and file handles database=/Users/HaoZai/geth-private-chian/data0/geth/chaindata cache=16 handles=16
INFO [03-12|14:36:52] Writing custom genesis block
INFO [03-12|14:36:52] Persisted trie from memory database nodes=0 size=0.00B time=136.941μs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [03-12|14:36:52] Successfully wrote genesis state database=chaindata hash=5e1fc7…d790e0
INFO [03-12|14:36:52] Allocated cache and file handles database=/Users/HaoZai/geth-private-chian/data0/geth/lightchaindata cache=16 handles=16
INFO [03-12|14:36:52] Writing custom genesis block
INFO [03-12|14:36:52] Persisted trie from memory database nodes=0 size=0.00B time=1.775μs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [03-12|14:36:52] Successfully wrote genesis state database=lightchaindata hash=5e1fc7…d790e0
初始化成功后砌溺,會生成如下的目錄結(jié)構(gòu)
geth-private-chian/
|----data0/
| |----geth/
| | |---chaindata/ //存放數(shù)據(jù)區(qū)塊的目錄
| | | |---000001.log
| | | |---LOG
| | | |---CURRENT
| | | |---LOCK
| | | |---MANIFEST-000000
| | |----lightchaindata/
| |----keystore/ //存放用戶信息的目錄,此時為空变隔,剛初始化规伐,還未創(chuàng)建任何用戶
|----genesise.json
Haozai-Macbook:geth-private-chian HaoZai$ geth --datadir data0 --networkid 1108 console
INFO [03-12|14:41:23] Maximum peer count ETH=25 LES=0 total=25
INFO [03-12|14:41:23] Starting peer-to-peer node instance=Geth/v1.8.2-stable/darwin-amd64/go1.10
INFO [03-12|14:41:23] Allocated cache and file handles database=/Users/HaoZai/geth-private-chian/data0/geth/chaindata cache=768 handles=128
WARN [03-12|14:41:23] Upgrading database to use lookup entries
INFO [03-12|14:41:23] Database deduplication successful deduped=0
INFO [03-12|14:41:23] Initialised chain configuration config="{ChainID: 10 Homestead: 0 DAO: <nil> DAOSupport: false EIP150: <nil> EIP155: 0 EIP158: 0 Byzantium: <nil> Constantinople: <nil> Engine: unknown}"
INFO [03-12|14:41:23] Disk storage enabled for ethash caches dir=/Users/HaoZai/geth-private-chian/data0/geth/ethash count=3
INFO [03-12|14:41:23] Disk storage enabled for ethash DAGs dir=/Users/HaoZai/.ethash count=2
INFO [03-12|14:41:23] Initialising Ethereum protocol versions="[63 62]" network=1108
INFO [03-12|14:41:23] Loaded most recent local header number=0 hash=5e1fc7…d790e0 td=131072
INFO [03-12|14:41:23] Loaded most recent local full block number=0 hash=5e1fc7…d790e0 td=131072
INFO [03-12|14:41:23] Loaded most recent local fast block number=0 hash=5e1fc7…d790e0 td=131072
INFO [03-12|14:41:23] Regenerated local transaction journal transactions=0 accounts=0
INFO [03-12|14:41:23] Starting P2P networking
INFO [03-12|14:41:25] UDP listener up self=enode://43e1647742e194501c44f2b765e06366d3ede47355e3c158c642e22a1a1c13288b492e6c02d27554ee26d9dcb91a032a09e6aeebac01fe98bbcc212296fa1ca8@[::]:30303
INFO [03-12|14:41:25] RLPx listener up self=enode://43e1647742e194501c44f2b765e06366d3ede47355e3c158c642e22a1a1c13288b492e6c02d27554ee26d9dcb91a032a09e6aeebac01fe98bbcc212296fa1ca8@[::]:30303
INFO [03-12|14:41:25] IPC endpoint opened url=/Users/HaoZai/geth-private-chian/data0/geth.ipc
Welcome to the Geth JavaScript console!
instance: Geth/v1.8.2-stable/darwin-amd64/go1.10
modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0
>
- 查看私鏈下的賬戶
> eth.accounts
[]
PS:初始化不會創(chuàng)建賬戶,keystore目錄為空匣缘,還不存在任何賬戶
- 新建賬戶猖闪,兩種方式
> personal.newAccount() //通過密碼形式創(chuàng)建張華
Passphrase:
Repeat passphrase:
"0xe2d463c53f5b4b8c48420304965af10db7290b65"
>
> personal.newAccount('1111') //把密碼作為參數(shù)創(chuàng)建賬戶
"0xf7cd6aee057409e8ecfa88a8e5b18033d456ff05"
> eth.accounts
["0xe2d463c53f5b4b8c48420304965af10db7290b65", "0xf7cd6aee057409e8ecfa88a8e5b18033d456ff05"]
再次運行查看賬戶命令,以數(shù)組形式返回剛才創(chuàng)建的兩個賬戶
- 查看每個賬戶下的以太幣數(shù)量
> u0=eth.accounts[0]
"0xe2d463c53f5b4b8c48420304965af10db7290b65"
> u1=eth.accounts[1]
"0xf7cd6aee057409e8ecfa88a8e5b18033d456ff05"
> eth.getBalance(u0)
0
> eth.getBalance(u1)
0
PS:只是創(chuàng)建了賬戶肌厨,還未經(jīng)過任何交易或挖礦獎勵培慌,因此這里每個賬戶的比特幣數(shù)量都是0,
- 啟動挖礦命令
>miner.start(2) //這里的參數(shù)2柑爸,指啟動兩個現(xiàn)成進行挖礦
返回如下結(jié)果(忽略其中很多無用的輸出吵护,檢出重點)
INFO [03-12|14:55:37] Updated mining threads threads=2 //線程數(shù)為 2
INFO [03-12|14:55:37] Transaction pool price threshold updated price=18000000000
INFO [03-12|14:55:37] Etherbase automatically configured address=0xE2D463c53f5b4b8c48420304965af10Db7290B65 //自動設(shè)置第一個賬戶為礦機賬號
INFO [03-12|14:55:37] Starting mining operation
null //此處為start命令返回的結(jié)果,按道理應(yīng)該是 true表鳍,為什么是 null馅而?
//第 1 個區(qū)塊
INFO [03-12|14:55:37] Commit new mining work number=1 txs=0 uncles=0 elapsed=423.284μs
INFO [03-12|14:58:27] Successfully sealed new block number=1 hash=516d22…7b94ac
INFO [03-12|14:58:27] mined potential block number=1 hash=516d22…7b94ac
//第 2 個區(qū)塊
INFO [03-12|14:58:27] Commit new mining work number=2 txs=0 uncles=0 elapsed=131.175μs
INFO [03-12|14:58:29] Successfully sealed new block number=2 hash=700256…f3f9c4
INFO [03-12|14:58:29] ?? mined potential block number=2 hash=700256…f3f9c4
//第 3 個區(qū)塊
INFO [03-12|14:58:29] Commit new mining work number=3 txs=0 uncles=0 elapsed=123.273μs
INFO [03-12|14:58:29] Successfully sealed new block number=3 hash=93f7de…005bdc
INFO [03-12|14:58:29] ?? mined potential block number=3 hash=93f7de…005bdc
INFO [03-12|14:58:29] Commit new mining work number=4 txs=0 uncles=0 elapsed=161.181μs
INFO [03-12|14:58:32] Successfully sealed new block number=4 hash=c056e9…5e0b12
INFO [03-12|14:58:32] ?? mined potential block number=4 hash=c056e9…5e0b12
INFO [03-12|14:58:32] Commit new mining work number=5 txs=0 uncles=0 elapsed=136.386μs
INFO [03-12|14:58:34] Successfully sealed new block number=5 hash=dd22e3…b04d54
INFO [03-12|14:58:34] ?? mined potential block number=5 hash=dd22e3…b04d54
INFO [03-12|14:58:34] Commit new mining work number=6 txs=0 uncles=0 elapsed=170.81μs
INFO [03-12|14:58:43] Successfully sealed new block number=6 hash=4b2f3f…910609
INFO [03-12|14:58:43] ?? mined potential block number=6 hash=4b2f3f…910609
INFO [03-12|14:58:43] Commit new mining work number=7 txs=0 uncles=0 elapsed=119.437μs
INFO [03-12|14:58:43] Successfully sealed new block number=7 hash=e40528…354748
INFO [03-12|14:58:43] ?? block reached canonical chain number=2 hash=700256…f3f9c4
INFO [03-12|14:58:43] ?? mined potential block number=7 hash=e40528…354748
//第 8 個區(qū)塊
INFO [03-12|14:58:43] Commit new mining work number=8 txs=0 uncles=0 elapsed=248.772μs
INFO [03-12|14:58:46] Successfully sealed new block number=8 hash=4fad7c…5e318e
INFO [03-12|14:58:46] ?? block reached canonical chain number=3 hash=93f7de…005bdc
INFO [03-12|14:58:46] ?? mined potential block number=8 hash=4fad7c…5e318e
//提交第 9 個區(qū)塊的挖礦操作
INFO [03-12|14:58:46] Commit new mining work number=9 txs=0 uncles=0 elapsed=139.52μs
//第9區(qū)塊還未返回結(jié)果,停止挖礦任務(wù)
> miner.stop()
true
查看當前每個賬戶的以太幣數(shù)量
> eth.getBalance(u0)
40000000000000000000
> eth.getBalance(u1)
0
PS:因為是以第一個賬戶為礦工譬圣,所以只有 u0 獲得了獎勵瓮恭,每挖出一個區(qū)塊獎勵5個以太幣,這里顯示的單位是wei厘熟,1eth=10的18次冪
查看當前挖礦的狀態(tài)屯蹦,返回 false
> eth.mining
false
- 打印基礎(chǔ)賬戶,等于第一個賬戶的地址
> eth.coinbase
"0xe2d463c53f5b4b8c48420304965af10db7290b65"
> u0
"0xe2d463c53f5b4b8c48420304965af10db7290b65"
> u1
"0xf7cd6aee057409e8ecfa88a8e5b18033d456ff05"
- 換算成以太幣
> web3.fromWei(eth.getBalance(u0),'ether')
40
- 查看當前區(qū)塊的數(shù)量
> eth.blockNumber
8
- Wei 與 Eth 互轉(zhuǎn)操作
> acmount=web3.fromWei(1,'ether')
"0.000000000000000001"
> acmount=web3.toWei(1,'ether')
"1000000000000000000"
- 查看 eth 對象
> eth
{
accounts:["0xe2d463c53f5b4b8c48420304965af10db7290b65","0xf7cd6aee057409e8ecfa88a8e5b18033d456ff05"], //當前賬戶
blockNumber: 8, //區(qū)塊數(shù)量
coinbase: "0xe2d463c53f5b4b8c48420304965af10db7290b65", //基礎(chǔ)賬戶
compile: {
lll: function(),
serpent: function(),
solidity: function()
},
defaultAccount: undefined,
defaultBlock: "latest",
gasPrice: 18000000000,
hashrate: 0,
mining: false, // 因為已經(jīng)停止挖礦绳姨,所以這里為 false
pendingTransactions: [],
protocolVersion: "0x3f",
syncing: false,
call: function(),
contract: function(abi),
estimateGas: function(),
filter: function(options, callback, filterCreationErrorCallback),
getAccounts: function(callback),
getBalance: function(),
getBlock: function(),
getBlockNumber: function(callback),
getBlockTransactionCount: function(),
getBlockUncleCount: function(),
getCode: function(),
getCoinbase: function(callback),
getCompilers: function(),
getGasPrice: function(callback),
getHashrate: function(callback),
getMining: function(callback),
getPendingTransactions: function(callback),
getProtocolVersion: function(callback),
getRawTransaction: function(),
getRawTransactionFromBlock: function(),
getStorageAt: function(),
getSyncing: function(callback),
getTransaction: function(),
getTransactionCount: function(),
getTransactionFromBlock: function(),
getTransactionReceipt: function(),
getUncle: function(),
getWork: function(),
iban: function(iban),
icapNamereg: function(),
isSyncing: function(callback),
namereg: function(),
resend: function(),
sendIBANTransaction: function(),
sendRawTransaction: function(),
sendTransaction: function(),
sign: function(),
signTransaction: function(),
submitTransaction: function(),
submitWork: function()
}
- 以太幣交易操作
> amount=web3.toWei(1,'ether')
"1000000000000000000"
> eth.sendTransaction({from:u0,to:u1,value:amount})
Error: authentication needed: password or unlock
at web3.js:3143:20
at web3.js:6347:15
at web3.js:5081:36
at <anonymous>:1:1
PS:這里提示需要密碼認證登澜,賬戶每隔一段時間就會自動上鎖,因此需要創(chuàng)建用戶時的密碼解鎖
> personal.unlockAccount(u0)
Unlock account 0xe2d463c53f5b4b8c48420304965af10db7290b65
Passphrase:
true
輸入密碼就缆,解鎖用戶帖渠,再重新發(fā)起交易
> eth.sendTransaction({from:u0,to:u1,value:amount})
INFO [03-12|23:23:03] Submitted transaction fullhash=0x039235641128e2192883802594f6de746459fc9154cad7ce17ba4342c9c2b027 recipient=0xf7cd6Aee057409E8eCfa88A8e5b18033d456ff05
"0x039235641128e2192883802594f6de746459fc9154cad7ce17ba4342c9c2b027"
ps:交易已經(jīng)提交,是否成功了呢竭宰?No,交易的確認空郊,這里僅僅是提交了交易任務(wù)
> txpool.status
{
pending: 1,
queued: 0
}
ps: pending=1份招,表示有一條交易,但還未被處理
我們再次提交一條交易狞甚,轉(zhuǎn)賬 2 比特幣
> amount=web3.toWei(2,'ether')
"2000000000000000000"
> eth.sendTransaction({from:u0,to:u1,value:amount})
INFO [03-12|23:23:56] Submitted transaction fullhash=0x991ea03c44915d2383863ce31d7e61015e066e58d81bff352f10dbf68ca1ec17 recipient=0xf7cd6Aee057409E8eCfa88A8e5b18033d456ff05
"0x991ea03c44915d2383863ce31d7e61015e066e58d81bff352f10dbf68ca1ec17"
再次查看交易池的狀態(tài)
> txpool.status
{
pending: 2, //這里的pending 變成了 2锁摔,兩個任務(wù)提交后還未被處理
queued: 0
}
要使交易被處理,必須挖礦哼审,獲得新的區(qū)塊記錄交易數(shù)據(jù)谐腰。
- 啟動挖礦,獲取下一個區(qū)塊涩盾,就停止挖礦操作
> miner.start(1);admin.sleepBlocks(1);miner.stop();
INFO [03-12|23:26:06] Updated mining threads threads=1
INFO [03-12|23:26:06] Transaction pool price threshold updated price=18000000000
INFO [03-12|23:26:06] Starting mining operation
INFO [03-12|23:26:06] Commit new mining work number=9 txs=2 uncles=0 elapsed=1.970ms
INFO [03-12|23:26:19] Successfully sealed new block number=9 hash=31655d…7cec9b
INFO [03-12|23:26:19] ?? mined potential block number=9 hash=31655d…7cec9b
再次查看交易池對象的狀態(tài)
> txpool.status
{
pending: 0, //兩個任務(wù)都被提交并處理十气,此處的 pending 值變成了 0
queued: 0
}
- 查看兩個賬戶的余額,分別是42春霍, 3砸西。
> web3.fromWei(eth.getBalance(u0),'ether')
42
> web3.fromWei(eth.getBalance(u1))
3
ps:賬戶u1因為是礦工賬號,每挖一個區(qū)塊就獲得5個比特幣址儒,因此40-3+5=42
- 查詢交易芹枷,根據(jù)交易返回的哈希值,可以查詢該交易的數(shù)據(jù)內(nèi)容
查詢第一筆交易內(nèi)容
> eth.getTransaction('0x039235641128e2192883802594f6de746459fc9154cad7ce17ba4342c9c2b027')
{
blockHash: "0x31655d1b7b60001e851849db4734742c24374f5ca82313cfb2b32fb0f27cec9b",
blockNumber: 9, //該條交易被記錄在第 9 區(qū)塊
from: "0xe2d463c53f5b4b8c48420304965af10db7290b65",//該筆交易的發(fā)起賬號地址
gas: 90000,
gasPrice: 18000000000,
hash: "0x039235641128e2192883802594f6de746459fc9154cad7ce17ba4342c9c2b027",
input: "0x",
nonce: 0,
r: "0xfb0a7541c5ada67a1c34dde394178fb154401f28300659d86b9c4f2bf3cf4028",
s: "0x263f46bcef9bbff8f24de845fce5bf80f2a22511d0f69f00b052ac140689c93c",
to: "0xf7cd6aee057409e8ecfa88a8e5b18033d456ff05", //該筆交易的接收賬號地址
transactionIndex: 0, //第 0 條交易
v: "0x38",
value: 1000000000000000000 //交易額度
}
查詢第二筆交易內(nèi)容
> eth.getTransaction('0x991ea03c44915d2383863ce31d7e61015e066e58d81bff352f10dbf68ca1ec17')
{
blockHash: "0x31655d1b7b60001e851849db4734742c24374f5ca82313cfb2b32fb0f27cec9b",
blockNumber: 9, //該條交易被記錄在第 9 區(qū)塊
from: "0xe2d463c53f5b4b8c48420304965af10db7290b65", //該筆交易的發(fā)起賬號地址
gas: 90000,
gasPrice: 18000000000,
hash: "0x991ea03c44915d2383863ce31d7e61015e066e58d81bff352f10dbf68ca1ec17",
input: "0x",
nonce: 1,
r: "0x5867dbfa40f1ea43b7b791b4306fb78948992289509af3ef07a23d4e4376bc9e",
s: "0x78c71836cce53bcb1c81fe9b7e6efae7d4d1d9e483485a0a977292350381477f",
to: "0xf7cd6aee057409e8ecfa88a8e5b18033d456ff05", //該筆交易的接收賬號地址
transactionIndex: 1, //第 1 條交易
v: "0x37",
value: 2000000000000000000 //交易額度
}
- 查看區(qū)塊內(nèi)容莲趣,這里查詢第9區(qū)塊內(nèi)容鸳慈,驗證上述兩筆交易是否存在
> eth.getBlock(9)
{
difficulty: 131072,
extraData: "0xd783010802846765746886676f312e31308664617277696e",
gasLimit: 3169294,
gasUsed: 42000,
hash: "0x31655d1b7b60001e851849db4734742c24374f5ca82313cfb2b32fb0f27cec9b",
logsBloom:"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
miner: "0xe2d463c53f5b4b8c48420304965af10db7290b65", //礦工賬號地址,獎勵會發(fā)放到次礦工
mixHash: "0xaed7970963913fbef04fd92d341bd01c802e3a17a897d0666918d6c1e6f836cf",
nonce: "0x4f52ee328ec62233",
number: 9, //區(qū)塊號
parentHash: "0x4fad7ce8e03b0b1f58b691e019e2e45b8db08db9176d0603832f99b2015e318e",
receiptsRoot: "0x87c123b7108d5f4cff435404a984c52842c71f0d9fffb8a41744d2f80d18585d",
sha3Uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
size: 760,
stateRoot: "0x2cfe64cf081483fea64ead3639bb2e352a13b11b21779107eaef8683f085e10a",
timestamp: 1520868366,
totalDifficulty: 1312064,
transactions: ["0x039235641128e2192883802594f6de746459fc9154cad7ce17ba4342c9c2b027", "0x991ea03c44915d2383863ce31d7e61015e066e58d81bff352f10dbf68ca1ec17"], //上面兩筆交易的哈希值
transactionsRoot: "0x54f42a4444125c2e369b075442bb2d3b46756fe215a5332dd869bae56621cb4f",
uncles: []
}
- 退出以太控制臺
> exit
INFO [03-13|10:01:26] IPC endpoint closed endpoint=/Users/HaoZai/geth-private-chian/data0/geth.ipc
INFO [03-13|10:01:26] Writing cached state to disk block=27 hash=2f5509…334855 root=9b2193…ff92ca
INFO [03-13|10:01:26] Persisted trie from memory database nodes=3 size=514.00B time=841.642μs gcnodes=0 gcsize=0.00B gctime=0s livenodes=45 livesize=5.92kB
INFO [03-13|10:01:26] Writing cached state to disk block=26 hash=6cb0e7…2abfa6 root=7bb30d…895aa7
INFO [03-13|10:01:26] Persisted trie from memory database nodes=2 size=263.00B time=39.712μs gcnodes=0 gcsize=0.00B gctime=0s livenodes=43 livesize=5.66kB
INFO [03-13|10:01:26] Blockchain manager stopped
INFO [03-13|10:01:26] Stopping Ethereum protocol
INFO [03-13|10:01:26] Ethereum protocol stopped
INFO [03-13|10:01:26] Transaction pool stopped
INFO [03-13|10:01:26] Database closed database=/Users/HaoZai/geth-private-chian/data0/geth/chaindata