在geth 1.11+中,创建一个不使用bootnode的三节点私链,您可以按照以下步骤操作:
第1步:准备Genesis文件 创建一个名为genesis.json
的文件,其中包含以下内容:
{ "config": { "chainId": 12345, "homesteadBlock": 0, "eip150Block": 0, "eip155Block": 0, "eip158Block": 0, "byzantiumBlock": 0, "constantinopleBlock": 0, "petersburgBlock": 0, "istanbulBlock": 0 }, "difficulty": "200", "gasLimit": "8000000", "alloc": {} }
这是一个简单的genesis文件,您可以根据需求修改其中的参数。
第2步:为每个节点创建数据目录 在文件系统中为每个节点创建一个单独的数据目录。例如:
node1 node2 node3
第3步:初始化每个节点 为每个节点使用刚刚创建的genesis.json
文件进行初始化。在终端中运行以下命令:
geth --datadir node1 init genesis.json geth --datadir node2 init genesis.json geth --datadir node3 init genesis.json
第4步:启动每个节点 为每个节点分别启动geth实例。请确保为每个节点分配不同的端口。例如:
geth --datadir node1 --networkid 12345 --port 30301 --rpc --rpcport 8545 --rpcaddr "localhost" --rpccorsdomain "*" --rpcapi "eth,net,web3,personal,miner" --allow-insecure-unlock --nodiscover console geth --datadir node2 --networkid 12345 --port 30302 --rpc --rpcport 8546 --rpcaddr "localhost" --rpccorsdomain "*" --rpcapi "eth,net,web3,personal,miner" --allow-insecure-unlock --nodiscover console geth --datadir node3 --networkid 12345 --port 30303 --rpc --rpcport 8547 --rpcaddr "localhost" --rpccorsdomain "*" --rpcapi "eth,net,web3,personal,miner" --allow-insecure-unlock --nodiscover console
第5步:获取节点的enode URL 在每个节点的控制台中,分别运行以下命令获取enode URL:
admin.nodeInfo.enode
第6步:连接节点 在每个节点的控制台中,使用admin.addPeer()
方法将其他节点的enode URL添加到已知节点列表中。例如,在节点1的控制台中运行:
admin.addPeer("enode://node2_enode_URL") admin.addPeer("enode://node3_enode_URL")
以此类推,将其他节点连接到一起。
第7步:创建并解锁账户 在每个节点上创建一个新账户,并解锁它以便进行挖矿。例如,在节点1上:
personal.newAccount("your_password") personal.unlockAccount(eth.accounts[0], "your_password", 0)
在其他节点上重复此过程。
第8步:开始挖矿 在每个节点上启动挖矿进程。例如,在节点1上:
miner.start()
在其他节点上重复此过程。
按照这些步骤,您应该能够成功地创建一个不使用bootnode的三节点以太坊私链,并实现节点之间的互联。在实际操作过程中,您可能需要根据实际情况对某些步骤进行调整。