blockchain - 以太坊 geth 无法连接到 bootnode 以访问私有以太坊网络
问题描述
以下docker-compose.yml
用于启动以太坊geth
节点,该节点需要连接到引导节点才能访问私有以太坊网络。
version: '2'
geth:
image: ethereum/client-go:latest
volumes:
- ./node:/root/.ethereum
- ./files/genesis.json:/root/genesis.json:ro
ports:
- "30303:30303"
- "30303:30303/udp"
- 8543:8545
command: --rpc --rpcaddr 0.0.0.0 --networkid 13377331 --bootnodes="enode://692b8eda368ffc427fc1a047850557536a0ef0bfa3b66f998e03e8b83c3fd8f786e3c2b710a20e2e821a9eff34fc7b34ffa326a8a5fbcf3634b55b44596ada43@159.999.999.999:30303" --nodiscover
但是运行后docker-compose up
,我们看到回显的链配置是默认配置,而不是引导节点正在使用的配置
初始化链配置 config="{ChainID: 1 Homestead: 1150000 DAO: 1920000 DAOSupport: true EIP150: 2463000 EIP155: 2675000 EIP158: 2675000 Byzantium: 4370000 Constantinople: Engine: ethash}"
问题:为什么geth
不连接到引导节点并且不使用引导节点中的配置genesis.json
?
码头工人撰写输出:
geth_1 | WARN [07-15|00:48:33.310] Sanitizing cache to Go's GC limits provided=1024 updated=666
geth_1 | INFO [07-15|00:48:33.310] Maximum peer count ETH=25 LES=0 total=25
geth_1 | INFO [07-15|00:48:33.317] Starting peer-to-peer node instance=Geth/v1.8.13-unstable-2e0391ea/linux-amd64/go1.10.3
geth_1 | INFO [07-15|00:48:33.317] Allocated cache and file handles database=/root/.ethereum/geth/chaindata cache=499 handles=1024
geth_1 | INFO [07-15|00:48:33.331] Writing default main-net genesis block
geth_1 | INFO [07-15|00:48:33.632] Persisted trie from memory database nodes=12356 size=1.88mB time=84.3549ms gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
geth_1 | INFO [07-15|00:48:33.636] Initialised chain configuration config="{ChainID: 1 Homestead: 1150000 DAO: 1920000 DAOSupport: true EIP150: 2463000 EIP155: 2675000 EIP158: 2675000 Byzantium: 4370000 Constantinople: <nil> Engine: ethash}"
geth_1 | INFO [07-15|00:48:33.636] Disk storage enabled for ethash caches dir=/root/.ethereum/geth/ethash count=3
geth_1 | INFO [07-15|00:48:33.636] Disk storage enabled for ethash DAGs dir=/root/.ethash count=2
geth_1 | INFO [07-15|00:48:33.636] Initialising Ethereum protocol versions="[63 62]" network=1
geth_1 | INFO [07-15|00:48:33.637] Loaded most recent local header number=0 hash=d4e567…cb8fa3 td=17179869184
geth_1 | INFO [07-15|00:48:33.637] Loaded most recent local full block number=0 hash=d4e567…cb8fa3 td=17179869184
geth_1 | INFO [07-15|00:48:33.637] Loaded most recent local fast block number=0 hash=d4e567…cb8fa3 td=17179869184
geth_1 | INFO [07-15|00:48:33.640] Regenerated local transaction journal transactions=0 accounts=0
geth_1 | INFO [07-15|00:48:33.640] Starting P2P networking
geth_1 | INFO [07-15|00:48:33.641] RLPx listener up self="enode://27175216e04387fb93e87a4069021b640fc6f87f985c86940e3297103a2b5e348bdecec4eea98af6ee2f106890fd28b49e1d983b6c5b8ce9ae1571c032bf2d5c@[::]:30303?discport=0"
geth_1 | INFO [07-15|00:48:33.644] IPC endpoint opened url=/root/.ethereum/geth.ipc
geth_1 | INFO [07-15|00:48:33.645] HTTP endpoint opened url=http://0.0.0.0:8545 cors= vhosts=localhost
创世纪.json
{
"config": {
"chainId": 13377331,
"homesteadBlock": 1,
"eip150Block": 2,
"eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"eip155Block": 3,
"eip158Block": 3,
"byzantiumBlock": 4,
"clique": {
"period": 15,
"epoch": 30000
}
},
....
解决方案
似乎您使用的是默认数据目录,而不是使用 genesis.json 初始化的私有数据目录。结果,geth 使用默认的 datadir 作为主网络节点启动(参见输出中的database=/root/.ethereum/geth/chaindata
和versions="[63 62]" network=1
)。
要启动您的私有节点,请尝试以下步骤:
使用 genesis.json 初始化你的 geth 数据目录。例如:
geth --datadir path/to/custom/data/folder init genesis.json
使用 datadir 和 networkid 启动你的 geth。例如:
geth --datadir path/to/custom/data/folder --networkid 13377331
请注意,这些步骤使用--datadir
选项。
有关详细信息,请参阅geth wiki。
推荐阅读
- kubernetes - 为什么这么多流行的 Helm 图表的安全等级很低?有关系吗?
- python - Odoo13 - PDF 打印的差异 - 丢失页码
- .net-core - 无法将 github 操作成功添加到 azure 应用服务
- javascript - 如何使用 selectsize.js 制作分隔符?
- java - 使用 Spring Boot 在每个 Cucumber 场景后回滚事务
- python - 为什么这个函数返回不同的值?
- python - 将 txt 文件传递到 pandas 数据帧
- postgresql - 无法从 Tableau srv 连接到 PostgreSQL srv
- php - Symfony 4.4 Auth0 如何从应用程序中完全注销用户
- covariance-matrix - rmvnorm 警告消息:sigma 在数值上不是半正定的