单机多节点私有链

admin 2024年10月13日15:36:24评论11 views字数 3095阅读10分19秒阅读模式

文章前言

区块链技术已经逐渐成为了当今世界上最炙手可热的技术之一,在众多应用场景中私有链的应用越来越受到关注,特别是在企业级应用中,然而传统的私有链解决方案存在一些问题,例如:节点不可扩展、性能不足等。因此单机多节点私有链成为了一种备受关注的新型解决方案,本文将介绍单机多节点私有链的基本概念、实现方法以及应用场景,希望能够为读者提供一些有价值的参考和帮助

搭建流程

新建node2节点

上一节搭建了一个单节点以太坊网络,这次我们在原来的基础上再增加一个节点网络,命名为node2,使用eth2为data目录:

单机多节点私有链

备注:因为我们只是简单的增加节点所以我们的创世区块文件保持不变,创世区块文件保持不变,创世区块文件保持不变!重要的话说三遍!

初始化创世区块
geth --datadir /home/blockchain/private_eth/eth2 init genesis.json

单机多节点私有链

启动节点node2

查看node1的enoded url信息,这是节点01与其他节点互动的唯一id:

admin.nodeInfoenode: "enode://f7db3b343b9dc8a5fabd1502829bb8fcb2fb16033aa8b401cbd8f2d00aad8935feb9c1a7c010c57e4e9c6be9a408edea720744a5d957622aef0155da6a397bbe@127.0.0.1:30303?discport=0"

单机多节点私有链

启动node2,由于是单机多节点,所以节点node2的port以及rpcport应与节点node1的不同并通过enoded url与节点01相关联

#方式一:sudo geth --networkid 111 --datadir /home/blockchain/private_eth/eth2 --identity "node2" --http --http.port "8546" --http.addr "192.168.204.139" --authrpc.port "8552" --port "30304" --nodiscover --bootnodes "enode://979c918631f66e8bbaeea75d9f20ce83707b162d88093b823a7db24413ee383a0875f8c5d89379717777bd63d0c974c6ced8302f55f01996c2e0c979d847c410@127.0.0.1:30303?discport=0" --http.api "eth,net,web3,admin,txpool,debug,miner" --rpc.enabledeprecatedpersonal --allow-insecure-unlock console#方式二:sudo geth --networkid 111 --datadir /home/blockchain/private_eth/eth2 --identity "node2" --http --http.port "8546" --http.addr "192.168.204.139" --authrpc.port "8552" --port "30304" --nodiscover --http.api "eth,net,web3,admin,txpool,debug,miner" --rpc.enabledeprecatedpersonal --allow-insecure-unlock console

单机多节点私有链

我们除了可以通过bootndoes的值来链接节点01也可以先不设置bootnodes直接启动节点,之后进入命令行后通过admin.addPeer(enodeUrl)来添加节点01,使其和节点01相连,下面是添加节点前节点数量:

单机多节点私有链

执行以下指令来添加节点

admin.addPeer("enode://f7db3b343b9dc8a5fabd1502829bb8fcb2fb16033aa8b401cbd8f2d00aad8935feb9c1a7c010c57e4e9c6be9a408edea720744a5d957622aef0155da6a397bbe@127.0.0.1:30303?discport=0")

单机多节点私有链

多节点信息查看

1、查询链接的其他节点的个数 

 node1:

> net.peerCount1> admin.nodeInfo

单机多节点私有链

node2:

单机多节点私有链

3、查询节点node2中的区块高度,这时你会发现node2初始高度为0,但是在同步过程中最终node2会与node1完成同步,这也验证了我们所述的区块链中的每个节点都是一个"区块链数据库"的副本

单机多节点私有链

多节点挖矿模式

因为node2中默认账户为0,所以我们先在node2中创建两个新账户: 

personal.newAccount("12345678")personal.newAccount("12345678")

单机多节点私有链

之后进行一次转账操作:

 1、node1查询账户account[0]的余额

eth.getBalance(eth.accounts[0])web3.fromWei(eth.getBalance(eth.accounts[0]),"ether")

单机多节点私有链

注意:1 ether = 1e18 wei,使用eth.getBalance()获取到的账户余额默认返回的单位是wei,你也可以使用ether作为单位,返回账户余额,与上面的常结果相对应

2、解锁账户account[0]

personal.unlockAccount(eth.accounts[0],"12345678",0)

3、在node2中获取eth.account[0]的账户地址

> eth.accounts[0]"0xa2dc992dadfed7cfa92fff159ef0a96ea321cfa4

单机多节点私有链

4、从node1的account[0]地址向node2的account[0]地址进行转账4eth

eth.sendTransaction({from:eth.accounts[0],to:"0xa2dc992dadfed7cfa92fff159ef0a96ea321cfa4",value:web3.toWei(4,'ether')})

单机多节点私有链

5、在node2中查看当前带确认的交易消息

eth.getBlock("pending",true).transactions

单机多节点私有链

6、现在我们开始挖矿,2个节点同时挖掘将交易打包

miner.start(10)

单机多节点私有链

7、停止挖矿,node1上查看待确认的交易:

eth.getBlock("pending",true).transactions

单机多节点私有链

node1余额(很多人很奇怪这里为啥每减少反而增加了,这是因为这里默认将accouts[0]作为了币基地址,所以在挖矿中获取到的奖励直接给予了accouts[0]):

web3.fromWei(eth.getBalance(eth.accounts[0]),"ether") 

单机多节点私有链

node2余额——成功收取到转账的4eth额度

web3.fromWei(eth.getBalance(eth.accounts[0]),"ether") 

单机多节点私有链

文末小结

通过本文的介绍,我们学习了如何在一台计算机上搭建以太坊私有链,同时创建多个节点,实现节点之间的互相通信和数据同步,在创建节点时我们使用了IPC和RPC通信协议,同时也学习了如何在不同节点之间进行数据同步,通过本文的学习相信读者已经掌握了以太坊私有链的搭建可以在实际应用中灵活运用

原文始发于微信公众号(七芒星实验室):单机多节点私有链

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月13日15:36:24
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   单机多节点私有链https://cn-sec.com/archives/1907546.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息