docker 部署以太坊私链v1.10.16版本
source link: https://learnblockchain.cn/article/3606
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
docker 部署以太坊私链v1.10.16版本
docker 部署以太坊私链v1.10.16版本
一. 以太坊私链镜像生成
1.1 下载以太坊基础镜像
docker pull ethereum/client-go:v1.10.16
1.2 编写Dockerfile
# 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
1.3 新建存放目录—bin
mkdir /opt/docker/images/geth-1.10.16/bin
1.4 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:允许解锁账户
1.5 为文件赋予执行权限
chmod +x /opt/docker/images/geth-1.10.16/bin/start.sh
1.6 生成以太坊私链镜像
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
二.以太坊私链容器生成
2.1 所需文件准备
- 预先创建一个账户地址
使用MetaMask或者其他工具预先创建一个账户地址,并保存好私钥,后面这个地址需要作为启动挖矿的coinbase地址
- 新建需要映射给容器存放数据的目录,此目录下存放着的是所有在此链上的交易信息
mkdir -p /opt/docker/eth/data/chain/
- 创建矿工地址keystore存放文件夹,并将预先生成地址的keystore文件放进去
mkdir /opt/docker/eth/data/chain/keystore
- 新建需要映射给容器存放DAG数据的目录,必须创建,不然每次启动容器都会先生成DAG数据
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、为了创建我们的私有区块链,我们将创建一个创世块。为此,...
剩余50%的内容购买后可查看
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。
- 发表于 1天前
- 阅读 ( 59 )
- 学分 ( 2 )
- 分类:以太坊
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK