部署环境
go ethereum – How to view latest block number of a geth node in the console? – Ethereum Stack Exchange
新鲜出炉的以太坊开发环境搭建及私链搭建指南💥💥💥 – 掘金
ethereum/go-ethereum: Official Go implementation of the Ethereum protocol
Beginners guide to Ethereum (2) — run multiple nodes on a private network in 5 lines
go ethereum – geth connectivity behind a firewall – Ethereum Stack Exchange
系统 Ubuntu18.04,网络 node-01: 172.17.15.155, node-02: 172.17.15.156,部署路径 /data/ethereum
Geth Version: 1.10.25-stable
node-01 && node-02
cat > genesis.json <<EOF
{
"config": {
"chainId": 0,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0,
"berlinBlock": 0,
"londonBlock": 0
},
"alloc": {},
"coinbase": "0x0000000000000000000000000000000000000000",
"difficulty": "0x20000",
"extraData": "",
"gasLimit": "0x2fefd8",
"nonce": "0x0000000000000042",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp": "0x00"
}
EOF
geth --datadir data init genesis.json
geth --datadir "./data" console 2>>tail.log
node-02
admin.nodeInfo.enode
node-01
> admin.addPeer("enode://c70dxxxxxxxxxx40ba@<node-01 ip address>:30303")
true
> personal.newAccount()
Passphrase: [ENTER]
Repeat passphrase: [ENTER]
"0xe9b2cc8372728da6067453cfa67f7aacbb0ba8dd"
> miner.setEtherbase(eth.accounts[0])
true
> miner.start()
null
> eth.blockNumber
2100
部署文档(旧版,废弃)
节点 1 搭建步骤
安装 geth 程序:
apt-get install -y software-properties-common
add-apt-repository -y ppa:ethereum/ethereum \
&& apt-get update && apt-get install ethereum
创建网络的创世状态
cat > genesis.json << EOF
{
"config":{
"chainId":10,
"homesteadBlock":0,
"eip155Block":0,
"eip158Block":0,
"eip150Block":0,
"eip150Hash":"0x0000000000000000000000000000000000000000000000000000000000000000"
},
"alloc":{
"bd2d69e3e68e1ab3944a865b3e566ca5c48740da":{
"balance":"9000000000000000000000000000000"
}
},
"nonce":"0x0000000000000042",
"difficulty":"0x080000",
"mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase":"0x0000000000000000000000000000000000000000",
"timestamp":"0x00",
"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData":"0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa",
"gasLimit":"0x4c4b40"
}
EOF
初始化创世块:
geth --datadir /data/ethereum/data --networkid 31415926 \
--rpc --rpcapi "eth,web3,miner,admin,personal,net" \
--rpc --rpccorsdomain "*" --rpcaddr "0.0.0.0" --allow-insecure-unlock \
init ./genesis.json
导入创世块中的用户keystore
cd /data/eth/ethereum/keystore
cat > UTC--2021-03-18T06-41-06.161625000Z--bd2d69e3e68e1ab3944a865b3e566ca5c48740da << EOF
> {"address":"bd2d69e3e68e1ab3944a865b3e566ca5c48740da","crypto":{"cipher":"aes-128-ctr","ciphertext":"caf1b6673e7397f60e1051fcede6bb248d041a546156b3a358542c0fb30668be","cipherparams":{"iv":"de310935dc3d83ae74db842c3e6f8ffa"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"4e705e65cde0a9167b1021854b6d1d3c73933487f504aecea9234d1ee084b4a0"},"mac":"435fc1d22313248d66ae513f49c031ce27ce83b5ed2d11d432de8eb20199ee56"},"id":"acfa723b-c658-4672-ae29-d2c17125a998","version":3}
> EOF
启动
cd /data/ethnohup geth --rpc --rpccorsdomain "*" --datadir /data/eth/ethereum --port "30303" --rpcport "30000" --rpcaddr "0.0.0.0" --rpc --rpcapi "db,eth,web3,miner,admin,personal,net" --networkid 31415926 --allow-insecure-unlock &
进入控制台开启挖矿
geth attach http://127.0.0.1:8545 > miner.start(1) #起一个线程挖矿
节点2搭建步骤:
下载安装 geth 同节点1
创建网络的”创世”状态同节点1
导入创世块中的用户keystore 同节点1
启动(创世块要与节点1相同)
cd /data/eth
nohup geth –rpc –rpccorsdomain “*” –datadir /data/eth/ethereum –port “30303” –rpcport “30000” –rpcaddr “0.0.0.0” –rpc –rpcapi “db,eth,web3,miner,admin,personal,net” –networkid 31415926 –nodiscover –allow-insecure-unlock &
注意加上–nodiscover 代表该链条不希望被其他节点发现,networkid 要和节点1一样,如果都部署在同一机器上rpcport和port 不要冲突
5.进入节点2控制台
#端口为启动脚本的rpcport
geth attach http://127.0.0.1:30000 #进入控制台后查询node信息(会得到”enode://d4c1xxxxxxx3e30@127.0.0.1:30303?discport=0″等示例信息把IP换成可访问的IP或局域网IP)
> admin.nodeInfo.enode
将节点2与节点1互通
将步骤5中的信息拷贝再节点1的控制台执行如下
admin.addPeer(“enode://f6235b2de8256d4c132e30@192.168.10.119:30303?discport=0″)
#执行查看数量(成功为1)
net.peerCount
进入节点2控制台开启挖矿
#起一个线程挖矿miner.start(1)