美文网首页
想要搭建多节点私有以太坊网络?看完这个你就会了!

想要搭建多节点私有以太坊网络?看完这个你就会了!

作者: 柏链教育 | 来源:发表于2019-07-29 17:48 被阅读0次

    在局域网内搭建多节点私有以太坊网络

    局域网内组建多节点以太坊网络实验,实验环境需要至少2台主机,如果没有,也可以尝试在本机开启2个geth进程,需要注意的是同一主机上做实验时,需要关闭ipc服务,否则可能存在问题。

    实验步骤如下:

    1. 在主机一上初始化并启动geth

    注意事项:最好找一个空目录,拷贝genesis.json拷贝到该目录进行实验!

    • 1.1 初始化
    geth init genesis.json --datadir ./data
    
    
    • 1.2 启动
    geth --datadir ./data --networkid 18 --port 30303 --rpc  --rpcport 8545 --rpcapi 'db,net,eth,web3,personal' --rpccorsdomain '*' --gasprice 0  console 2> 1.log
    
    
    • 1.3 查看节点信息
    > admin.nodeInfo
    {
      enode: "enode://63692c0e2ed5a7f8c176e5381ff98c25710190d871e526925eab7230068225b70018f8ad702845963e16649f0028edf816764325911acd051e1de41edb2529ad@[::]:30303",
      id: "29b9cf5002270863aabaef41cf28b51a6a42d4622b59ae3abeefb390ce2c65cf",
      ip: "::",
      listenAddr: "[::]:30303",
      name: "Geth/v1.8.17-stable-8bbe7207/linux-amd64/go1.10",
      ports: {
        discovery: 30303,
        listener: 30303
      },
      protocols: {
        eth: {
          config: {
            chainId: 18,
            eip150Hash: "0x0000000000000000000000000000000000000000000000000000000000000000",
            eip155Block: 0,
            eip158Block: 0,
            homesteadBlock: 0
          },
          difficulty: 2,
          genesis: "0xc1d47d80957422239f97de9b123499f1e6230ddbf3bc2f2c5af1b033c9d9ea3e",
          head: "0xc1d47d80957422239f97de9b123499f1e6230ddbf3bc2f2c5af1b033c9d9ea3e",
          network: 18
        }
      }
    }
    
    
    • 1.4 查看peer节点数量
    > net.peerCount
    0
    
    
    • 1.5 创建一个账户
    > personal.newAccount("123")
    "0x5f306bccad215ed3ec9d6bec27986de23a1f5938"
    
    

    2. 在第二台主机上进行操作

    • 2.1 使用相同创世块文件初始化
    geth init genesis.json --datadir data
    
    
    • 2.2 启动geth,注意参数要增加bootnodes

    在这里指定要加入的网络是 10.211.55.3:30303 对应的网络,这其实也就是主机一上节点的网络,也可以在启动时不添加--bootnodes,而在启动后使用 admin.addPeer("enode://63692c0e2ed5a7f8c176e5381ff98c25710190d871e526925eab7230068225b70018f8ad702845963e16649f0028edf816764325911acd051e1de41edb2529ad@10.211.55.3:30303") 添加节点的方式

    geth --datadir ./data --networkid 18 --port 30303 --rpc  --rpcport 8545 --rpcapi 'db,net,eth,web3,personal' --rpccorsdomain '*'  --bootnodes "enode://63692c0e2ed5a7f8c176e5381ff98c25710190d871e526925eab7230068225b70018f8ad702845963e16649f0028edf816764325911acd051e1de41edb2529ad@10.211.55.3:30303" console 2>1.log
    
    
    • 2.3 查看网络节点情况
    > admin.peers
    [{
        caps: ["eth/63"],
        enode: "enode://63692c0e2ed5a7f8c176e5381ff98c25710190d871e526925eab7230068225b70018f8ad702845963e16649f0028edf816764325911acd051e1de41edb2529ad@10.211.55.3:30303",
        id: "29b9cf5002270863aabaef41cf28b51a6a42d4622b59ae3abeefb390ce2c65cf",
        name: "Geth/v1.8.17-stable-8bbe7207/linux-amd64/go1.10",
        network: {
          inbound: false,
          localAddress: "10.211.55.2:51517",
          remoteAddress: "10.211.55.3:30303",
          static: false,
          trusted: false
        },
        protocols: {
          eth: {
            difficulty: 2,
            head: "0xc1d47d80957422239f97de9b123499f1e6230ddbf3bc2f2c5af1b033c9d9ea3e",
            version: 63
          }
        }
    }]
    
    

    从当前结果来看,已经可以看到网络加入成功,在network内容中,可以看到两个节点ip

    • 2.4 节点2创建账户
    > personal.newAccount("123")
    "0x4f8d8b1a1a941eaf947a3a657c176a40763b2cfb"
    
    
    • 2.5 启动挖矿、查看余额
    > miner.start(1)
    null
    > eth.getBalance(eth.accounts[0])
    
    25000000000000000000
    
    
    • 2.6 转账给主机上节点的账户
    > personal.unlockAccount(eth.accounts[0], "123")
    true
    
    

    需要先解锁,然后转账4个以太,web3.toWei是转换函数,它的执行结果是将传入的值单位转换为以太,也就是说如果传入参数为4,最终结果其实是4000000000000000000.

    > eth.sendTransaction({from:eth.accounts[0],to:"0x5f306bccad215ed3ec9d6bec27986de23a1f5938", value:web3.toWei(4)})
    "0xf6bce81cfc309f1c56643217ab4f2bc7eb28f8879d99e67bbe0fa43373136d3a"
    
    
    • 2.7 在主机二的节点上查询节点1账户的余额
    > acc2="0x5f306bccad215ed3ec9d6bec27986de23a1f5938"
    "0x5f306bccad215ed3ec9d6bec27986de23a1f5938"
    > eth.getBalance(acc2)
    4000000000000000000
    
    

    3. 在主机一节点上查询账户余额

    > eth.getBalance(eth.accounts[0])
    4000000000000000000
    
    

    通过实验,我们使用多个节点共同组成一个私有网络,关键点是创世块文件要相同,大家使用相同的网络id。

    相关文章

      网友评论

          本文标题:想要搭建多节点私有以太坊网络?看完这个你就会了!

          本文链接:https://www.haomeiwen.com/subject/rllirctx.html