以太坊私链搭建

212 阅读2分钟

一、搭建私链

docker搭建

网络

创建以太坊网络

docker network create --driver bridge --subnet 172.19.3.0/16 --gateway 172.19.3.1 eth

配置文件

私链初始化配置文件,挂载到容器。( 文件名:genesis.json )

{
  "config": {
    "chainId": 666,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "petersburgBlock": 0,
    "istanbulBlock": 0,
    "berlinBlock": 0,
    "londonBlock": 0
  },
  "alloc": {
    "0x0000000000000000000000000000000000000001": {
      "balance": "100000000"
    },
    "0x0000000000000000000000000000000000000002": {
      "balance": "200000000"
    }
  },
  "coinbase": "0x0000000000000000000000000000000000000000",
  "difficulty": "0x20000",
  "extraData": "",
  "gasLimit": "0x2fefd8",
  "nonce": "0x0000000000000042",
  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp": "0x00"
}

节点一

1.创建并进入容器

docker run -it --name eth1 --network eth --ip 172.19.3.10 -v D:/docker/eth1:/vczs -p 8545:8545 -p 30303:30303 --entrypoint /bin/sh ethereum/client-go:v1.10.16

2.初始化私链

geth --datadir /vczs/data init /vczs/genesis.json

3.启动私链

geth --datadir /vczs/data --networkid 666 --port 30303 --http --http.addr 172.19.3.10 --http.port 8545 --http.api "eth,web3,personal,net" --nodiscover --allow-insecure-unlock console

4.查看私链信息

admin.nodeInfo

5.重新进入私链控制台

geth --datadir /vczs/data console

节点二

1.创建并进入容器

docker run -it --name eth2 --network eth --ip 172.19.3.11 -v D:/docker/eth2:/vczs -p 8546:8545 -p 30304:30303 --entrypoint /bin/sh ethereum/client-go:v1.10.16

2.初始化私链

geth --datadir /vczs/data init /vczs/genesis.json

3.启动私链

geth --datadir /vczs/data --networkid 666 --port 30303 --http --http.addr 172.19.3.11 --http.port 8545 --http.api "eth,web3,personal,net" --nodiscover --allow-insecure-unlock console

4.互联节点一

admin.addPeer("节点一 私链信息 返回的enode值")

5.重新进入私链控制台

geth --datadir /vczs/data console

测试互联

1.节点一开始挖矿

miner.start()

2.节点二查看区块高度

eth.blockNumber

3.如果节点一挖矿影响到节点二的区块高度,说明节点互联成功;后续新增节点相同操作以此类推。

4.停止挖矿

miner.stop()