docker 部署以太坊私链v1.10.16版本
docker pull ethereum/client-go:v1.10.16
# vim /opt/docker/images/geth-1.10.16/Dockerfile
FROM ethereum/client-go:v1.10.16
RUN apk update && apk add bash curl
ADD bin /root/bin
RUN chmod a+x /root/bin/*
ENTRYPOINT /root/bin/start.sh
mkdir /opt/docker/images/geth-1.10.16/bin
# vim /opt/docker/images/geth-1.10.16/bin/start.sh
set -e
# Init
echo ""
echo "Init geth"
geth init "/root/files/genesis.json"
sleep 3
# Start geth
echo ""
echo "Start geth"
geth --gcmode "archive" --networkid=666666 --http --http.api "db,eth,net,web3,personal,admin,miner" --http.addr "0.0.0.0" --http.port "8545" --miner.threads 1 --mine --allow-insecure-unlock &
sleep 10
while true; do
sleep 1000000000
done
注:
注意,以上指定了一个名为networkid的参数。这标志着你的以太坊网络的身份。我们在这个例子中使用了66666,应该选择一个随机数来创建你自己的网络并防止其他人无意中连接到你的网络,此ID也最好与下文genesis.json文件中的"chainId"的ID一致
http.addr 参数,含义为指定rpc服务器地址,如果目前只有这一台矿工发服务器,必须使用0.0.0.0这个地址,不然无法在宿主机外使用curl命令调用rpc远程服务调用协议来查询用户余额
--allow-insecure-unlock:允许解锁账户
chmod +x /opt/docker/images/geth-1.10.16/bin/start.sh
docker build . -t privte-eth:v1.10.16
注:需要在与Dockerfile同一级目录下执行此命令
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
privte-eth v1.10.16 5bf38202567b 22 minutes ago 57MB
使用MetaMask或者其他工具预先创建一个账户地址,并保存好私钥,后面这个地址需要作为启动挖矿的coinbase地址
mkdir -p /opt/docker/eth/data/chain/
mkdir /opt/docker/eth/data/chain/keystore
mkdir -p /opt/docker/eth/data/ethash
# vim /opt/docker/eth/genesis.json
{
"config": {
"chainId": 666666,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0
},
"nonce": "0x0000000000000046",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"difficulty": "0x400",
"coinbase": "0x3333333333333333333333333333333333333333",
"timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x",
"gasLimit": "0x800000000000",
"alloc": {
"0x6e60F5243e1a3F0Be3F407b5AFE9e5395ee82aa2":{
"balance": "6660010000000000000000000000"
}
}
}
注:
1、为了创建我们的私有区块链,我们将创建一个创世块。为此,...
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!