以太坊 geth 本地測(cè)試節(jié)點(diǎn)
開發(fā)和測(cè)試 dapp 的合約有很多現(xiàn)成的節(jié)點(diǎn)方案比如 hardhat
等等平夜,沒(méi)有好壞之分蝶棋,只是習(xí)慣不同。本人習(xí)慣自己搭建忽妒,那么開發(fā)和調(diào)試合約就必須要有一個(gè)本地的低能耗節(jié)點(diǎn)了玩裙,以太坊的 clique
共識(shí)模塊提供的 POA
共識(shí)很符合開發(fā)需求,言歸正傳直接上攻略
下載并編譯 geth
省略安裝配置 golang
編譯環(huán)境段直,如果不喜歡編譯吃溅,其實(shí)可以跳過(guò)這一步直接下載編譯好的 bin
git clone git@github.com:ethereum/go-ethereum.git
cd go-ethereum
make geth
build/bin/geth --help
編譯成功后建議將 build/bin/geth 鏈接到 PATH 對(duì)應(yīng)的目錄中,例如 /usr/local/bin 等
制作 genesis.json
1鸯檬、創(chuàng)建賬戶
geth --datadir ./data account new
echo 1 > pwd.txt
此處假設(shè)賬戶 b0ab1f54bd403f8cd360b39c3c45ee2055a0aaa0
, 密碼 1
2决侈、制作 genesis.json
手動(dòng)創(chuàng)建即可,復(fù)制內(nèi)容如下并保存為 genesis.json
:
{
"config": {
"chainId": 12345,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0,
"berlinBlock": 0,
"clique": {
"period": 5,
"epoch": 30000
}
},
"difficulty": "1",
"gasLimit": "8000000",
"extradata": "0x0000000000000000000000000000000000000000000000000000000000000000b0ab1f54bd403f8cd360b39c3c45ee2055a0aaa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"alloc": {
"b0ab1f54bd403f8cd360b39c3c45ee2055a0aaa0": { "balance": "999999999000000000000000000" }
}
}
需要注意的是 clique
共識(shí)的第一個(gè)簽名出塊節(jié)點(diǎn)是在 extradata
中指定的喧务,替換其中的簽名節(jié)點(diǎn)為你自己的 account
地址
3赖歌、初始化節(jié)點(diǎn)
geth --datadir ./data init ./genesis.json
在當(dāng)前目錄中初始化創(chuàng)世區(qū)塊
4枉圃、啟動(dòng)節(jié)點(diǎn)并出塊
geth --datadir=./data --networkid 12345 --mine --miner.etherbase=b0ab1f54bd403f8cd360b39c3c45ee2055a0aaa0 --nodiscover --unlock b0ab1f54bd403f8cd360b39c3c45ee2055a0aaa0 --password $./pwd.txt console
進(jìn)入控制臺(tái)后可以看到已經(jīng)在按照配置 5
秒一個(gè)塊了
copy : https://github.com/cc14514/notes/blob/main/web3/geth_private_clique.md