创建两个账号,用来挖矿
mkidr node1 && mkidr node2 && mkdir bootnode
geth --datadir=node1 account new
geth --datadir=node2 account new
创建genesis.json
文件,在alloc
中将上面创建的两个地址写入
{
"config": {
"chainId": 12345,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0,
"berlinBlock": 0,
"ethash": {}
},
"difficulty": "0",
"gasLimit": "0",
"alloc": {
"16377128c9d0770b38Af7E13F1cBb03684969B62": { "balance": "10000000000000" },
"7393355d3CE4DEC885f0E370C91D7A08F4902A32": { "balance": "10000000000000" }
}
}
初始化节点
geth --datadir=node1 init config/genesis.json
geth --datadir=node2 init config/genesis.json
创建启动节点
bootnode --genkey=bootnode/boot.key
# 需要先启动一下,拿到enode地址
bootnode --nodekey=bootnode/boot.key
通过
bootnode --nodekey=/root/boot.key
可以得到一个地址,传入到下面的--bootnodes
参数中,如enode://fd600f37d41648934cacbf827a223c3877804e777e963230ae614efe212d0e9537fbf397ece3e583af9258e578a37069127428d27410494671c7fc950497037d@127.0.0.1:0?discport=30301
,需要把其中的IP地址替换成正常的bootnode的IP地址
创建docker-compose.yaml文件
version: '3'
services:
eth-elb:
image: nginx:1.21.5
container_name: eth-elb
restart: always
privileged: true
ports:
- 9315:9315
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/log:/var/log/nginx
networks:
woneth_net:
ipv4_address: 172.25.0.10
bootnode:
image: ethereum/client-go:alltools-stable
container_name: bootnode
restart: always
privileged: true
volumes:
- ./bootnode:/root
command: bootnode -addr=172.25.0.3:30301 --nodekey=/root/boot.key
networks:
woneth_net:
ipv4_address: 172.25.0.3
eth01:
image: ethereum/client-go:alltools-stable
container_name: eth01
restart: always
privileged: true
volumes:
- ./node1:/data
command: geth --datadir=/data --networkid=1024 --http --http.addr 0.0.0.0 --http.port 8546 --http.api admin,eth,miner,net,txpool,personal,web3,debug --http.corsdomain '*' --bootnodes=enode://fd600f37d41648934cacbf827a223c3877804e777e963230ae614efe212d0e9537fbf397ece3e583af9258e578a37069127428d27410494671c7fc950497037d@172.25.0.3:30303?discport=30301
networks:
woneth_net:
ipv4_address: 172.25.0.2
eth02:
image: ethereum/client-go:alltools-stable
container_name: eth02
restart: always
privileged: true
volumes:
- ./node2:/data
command: geth --datadir=/data --networkid=1024 --mine --miner.etherbase '0x7393355d3CE4DEC885f0E370C91D7A08F4902A32' --miner.gasprice 0 --miner.gastarget 470000000000 --http --http.addr 0.0.0.0 --http.port 8546 --http.api admin,eth,miner,net,txpool,personal,web3,debug --http.corsdomain '*' --bootnodes=enode://fd600f37d41648934cacbf827a223c3877804e777e963230ae614efe212d0e9537fbf397ece3e583af9258e578a37069127428d27410494671c7fc950497037d@172.25.0.3:30303?discport=30301
networks:
woneth_net:
ipv4_address: 172.25.0.5
networks:
woneth_net:
driver: bridge
ipam:
config:
- subnet: 172.25.0.0/16
nginx 配置信息
upstream eth_http_elb {
server 172.25.0.5:8545;
server 172.25.0.2:8545 ;
}
upstream eth_ws_elb {
server 172.25.0.5:8546;
server 172.25.0.2:8546 ;
}
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 9315;
location / {
proxy_set_header Host $host;
proxy_pass http://eth_http_elb;
}
}
server {
listen 9316;
location / {
proxy_set_header Host $host;
proxy_pass http://eth_ws_elb;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
链浏览器器
docker run --rm -p 5000:80 --name otterscan -d --env ERIGON_URL="http://127.0.0.1:9315" otterscan/otterscan