以太坊区块链 POA本地搭建多节点私有链_should the precompile-addressses (0x1..oxff)be pre-程序员宅基地

前面的单个节点的设置参考其他教程搭建,这里主要针对搭建多节点相互连通的问题进行总结。

我的geth版本号是

geth -version 1.9.22-stable-c71a7e26

(一)创建测试文件夹

mkdir test_mygeth
cd test_mygeth
mkdir bootdir boot1 boot2

(二)bootnode配置

sudo bootnode --genkey boot.key
sudo bootnode --nodekey boot.key

在这里插入图片描述

(三)分别在boot1和boot2目录下创建一个新账户

sudo geth --datadir ./ account new

在这里插入图片描述
在这里插入图片描述

(四)使用puppeth创建test_genesis.json

ccczy@ccczy-virtual-machine:~/test_mygeth/boot1$ puppeth
+-----------------------------------------------------------+
| Welcome to puppeth, your Ethereum private network manager |
|                                                           |
| This tool lets you create a new Ethereum network down to  |
| the genesis block, bootnodes, miners and ethstats servers |
| without the hassle that it would normally entail.         |
|                                                           |
| Puppeth uses SSH to dial in to remote servers, and builds |
| its network components out of Docker containers using the |
| docker-compose toolset.                                   |
+-----------------------------------------------------------+

Please specify a network name to administer (no spaces, hyphens or capital letters please)
> test_genesis

Sweet, you can set this via --network=test_genesis next time!

INFO [10-11|23:36:44.845] Administering Ethereum network           name=test_genesis
WARN [10-11|23:36:44.910] No previous configurations found         path=/home/ccczy/.puppeth/test_genesis

What would you like to do? (default = stats)
 1. Show network stats
 2. Configure new genesis
 3. Track new remote server
 4. Deploy network components
> 2

What would you like to do? (default = create)
 1. Create new genesis from scratch
 2. Import already existing genesis
> 1

Which consensus engine to use? (default = clique)
 1. Ethash - proof-of-work
 2. Clique - proof-of-authority
> 2

How many seconds should blocks take? (default = 15)
> 3

Which accounts are allowed to seal? (mandatory at least one)
> 0xAC97FEf673342870bd5F466b6778B480620Ecdb9
> 0x9BC7A19cED9e2E0A3E7aFb92113f4EA814963355
> 0x

Which accounts should be pre-funded? (advisable at least one)
> 0x9BC7A19cED9e2E0A3E7aFb92113f4EA814963355
> 0xAC97FEf673342870bd5F466b6778B480620Ecdb9
> 0x

Should the precompile-addresses (0x1 .. 0xff) be pre-funded with 1 wei? (advisable yes)
> 

Specify your chain/network ID if you want an explicit one (default = random)
> 456
INFO [10-11|23:38:16.130] Configured new genesis block 

What would you like to do? (default = stats)
 1. Show network stats
 2. Manage existing genesis
 3. Track new remote server
 4. Deploy network components
> 2

 1. Modify existing configurations
 2. Export genesis configurations
 3. Remove genesis configuration
> 2

Which folder to save the genesis specs into? (default = current)
  Will create test_genesis.json, test_genesis-aleth.json, test_genesis-harmony.json, test_genesis-parity.json
> test_genesis.json
INFO [10-11|23:38:57.386] Saved native genesis chain spec          path=test_genesis.json/test_genesis.json
ERROR[10-11|23:38:57.386] Failed to create Aleth chain spec        err="unsupported consensus engine"
ERROR[10-11|23:38:57.419] Failed to create Parity chain spec       err="unsupported consensus engine"
INFO [10-11|23:38:57.420] Saved genesis chain spec                 client=harmony path=test_genesis.json/test_genesis-harmony.json

What would you like to do? (default = stats)
 1. Show network stats
 2. Manage existing genesis
 3. Track new remote server
 4. Deploy network components
> ^C
> 
ccczy@ccczy-virtual-machine:~/test_mygeth/boot1$ ls
keystore  test_genesis.json

ccczy@ccczy-virtual-machine:~/test_mygeth/boot1$ ls -l test_genesis.json
总用量 48
-rw-r--r-- 1 ccczy ccczy 21827 10月 11 23:38 test_genesis-harmony.json
-rw-r--r-- 1 ccczy ccczy 21827 10月 11 23:38 test_genesis.json

会在test_genesis.json生成两个json文件,尝试用test_genesis.json作为创世纪块文件头

test_genesis.json复制到boot1和boot2的目录下
在这里插入图片描述

(五)用同一个genesis.json进行初始化

ccczy@ccczy-virtual-machine:~/test_mygeth/boot1$ sudo geth --datadir ./ init test_genesis.json 
ccczy@ccczy-virtual-machine:~/test_mygeth/boot2$ sudo geth --datadir ./ init test_genesis.json 

(六)启动节点

sudo geth --datadir ./ --port 30321 --networkid 456 --rpc --rpcaddr 0.0.0.0 --rpcapi net,web3,eth,personal --rpcport 8110 --bootnodes "enode://45c611ce644da6f08214ca45a4ca6f4f6d5075a76fa2d57febb898a40bfb141b7eaf69cecc7984fdaca15838026c8967e026ab2cad46237bae86db35f958f32d@127.0.0.1:30301"  --unlock "0x9BC7A19cED9e2E0A3E7aFb92113f4EA814963355" --allow-insecure-unlock --syncmode "full" console
sudo geth --datadir ./ --port 30322 --networkid 456 --rpc --rpcaddr 0.0.0.0 --rpcapi net,web3,eth,personal --rpcport 8111 --bootnodes "enode://45c611ce644da6f08214ca45a4ca6f4f6d5075a76fa2d57febb898a40bfb141b7eaf69cecc7984fdaca15838026c8967e026ab2cad46237bae86db35f958f32d@127.0.0.1:30301"  --unlock " 0xAC97FEf673342870bd5F466b6778B480620Ecdb9" --allow-insecure-unlock --syncmode "full" console
  • -networkid 要与上面自己在puppeth时填写的一致,我这里填写的是456
  • 注意-port , -rpcport在两个节点的值要设置成不一样的,否则会提示端口占用的问题。

(七)节点设置

启动节点后在boot1和boot2开启挖矿

miner.start(1)

使用add.Peer将节点二加入到节点一中

admin.addPeer("enode://071dbf222dba7385efe622930f3c5438d52c710b07fda41999eab0259f8c78c8ed1ec3a500e9270435fff75560d23ed0bc642b1174ce00b034773cbd49933117@127.0.0.1:30322")
  • 节点的enode信息在启动节点后可以找到

在这里插入图片描述

# 使用net.peerCount 测试节点是否连接
net.peerCount

在这里插入图片描述

配置成功!

上述测试:主要参考大佬的方法 geth基于PoA共识机制构建联盟链

总结
1.测试了一下,在启动节点可以不使用--bootnode "enode:......也可以完成节点的连接, 在启动后使用命令 admin.addPeer("enode:.......")即可
2.enode尾部的信息形式为@127.0.0.1:30322样式
3.在两个节点中networkid 一致,port、pcport需要不同

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_45469783/article/details/109019277

智能推荐

一个简单的温度上下限报警器_温度上下限报警电路-程序员宅基地

文章浏览阅读7.4k次,点赞14次,收藏52次。效果:默认状态下,两灯熄灭。 温度升高到一定值,红色LED亮,绿色LED不亮,表示温度过高。 温度降低到一定值,绿色LED亮,红色LED不亮,表示温度过低。 原理:首先该电路图关键在于PTC(正温度系数电阻)会随着温度的升高而阻值增大。而高温报警(上面)的反相输入端电压大小固定;而低温报警器(下面)的同向输入端电压大小固定。输出受PTC电阻的..._温度上下限报警电路

Maven Maven的概述_httpcomponents maven-程序员宅基地

文章浏览阅读366次。随着我们使用越来越多的框架,或者框架封装程度越来越高,项目中使用的jar包也越来越多。项目中, 一个模块里面用到上百个jar包是非常正常的。_httpcomponents maven

altium生成PCB的BOM时comment下的字excel2003无法完全显示及解决办法_ad从bill of materials中导出到excel表格数据不全-程序员宅基地

文章浏览阅读2.3k次。altium下绘制好PCB后需要生成PCB下的BOM:Reports--->Bill of Materails在左侧All Columns下的show下列框中打钩可选相关显示要素,之后点击OK确定(在OK确定后才有效),然后重新打开Bill of Materails,EXport你需要的BOM,BOM格式在File Format下面可选,一般选择xls格式,即excel表的格式,但是有_ad从bill of materials中导出到excel表格数据不全

CSS实现显示几行文字,超出部分用省略号显示_css4行省略号-程序员宅基地

文章浏览阅读996次。一、div内显示一行,超出部分用省略号显示white-space: nowrap;overflow: hidden;text-overflow: ellipsis;二、div内显示四行,超出部分用省略号显示overflow: hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 4;(行数)-webkit-box-orient: vertical;..._css4行省略号

UItableviewCell 自动设置Cell高度(UITableViewAutomaticDimension)-程序员宅基地

文章浏览阅读8.4k次。我们之前在tableview中,经常要设置行高,如果设置了一个固定的高度,就达不到“数据驱动UI”了效果了。接下来,我写了一个demo,看看效果:ViewController:#import "ViewController.h"#import "TestCell.h"#import "TestModel.h"@interface ViewController ()<UITableV..._uitableviewautomaticdimension

opencv自动裁切_[原]opencv图像裁剪-程序员宅基地

文章浏览阅读663次。在图像处理中,我们经常根据需要截取图像中某一区域做处理,而不是针对整幅图像,这样会提高运算速度。当然,opencv有现成的截取函数供我们调用,但是考虑的运行平台不同(DSP芯片移植等),直接调用函数不现实。小生针对这一情况做了以下工作,不调用相关函数,截取到指定位置指定大小的图像,希望大家批评指正。c++代码:#include "stdafx.h"#include "cv.h"#include "..._opencvsharp 自动裁剪

随便推点

svn更新出现乱码,请执行清理_svn更新出现乱码,请执行清理-程序员宅基地

文章浏览阅读2.5w次,点赞8次,收藏16次。问题出现背景:作为一个刚入行的it行业小白,上传svn文件时出现错误,然后想把目录删了之后再更新,没想到更新也失败了,出现乱码,提示请执行清理,于是到网上寻找解决办法。尝试1:解决办法:svn根目录下有个wc.db文件,里面有个work_queue(表?),里面有东西的话把东西删了就好了。工具:sqlite3.exe https://www.sqlite.org/download.ht..._svn更新出现乱码,请执行清理

【Python】设置pip install 软件源-程序员宅基地

文章浏览阅读5.4k次。Python自带的pip软件源速度极慢,而且经常下载失败,好在可以更换国内的软件源。已知的软件源http://pypi.douban.com/ 豆瓣http://pypi.hustunique.com/ 华中理工大学http://pypi.sdutlinux.org/ 山东理工大学http://pypi.mirrors.ustc.edu.cn/ 中国科学技术大学临时更换方法使用 -i 选项

C/C++内存问题检查利器—Purify (五)_wpr定位内存泄漏-程序员宅基地

文章浏览阅读1.2k次。十、 设置WatchPoint你可以在你的程序中,对你所想监控的程序设置一些WatchPoint,以方便于你对程序进行调试,或更容易找出问题的原因。就像我前面说,Purify可以找到你的内存泄露,但其不能找到内存泄露的原因,你可以通过设置WatchPoint来跟踪一块内存,以找到在程序执行过程中该内存的访问情况。 Purify的WatchPoint可以产生下_wpr定位内存泄漏

面试题目汇总——html、css基础知识部分_1.(2.0分)以下哪项不是浮动引起的问题()父元素设置为固定高度,但不能完全显示-程序员宅基地

文章浏览阅读976次,点赞2次,收藏4次。一、html1.常用浏览器及内核trident内核:IE浏览器及国产浏览器webkit:谷歌浏览器、Safari及国产双核浏览器Gecko:FirefoxBlink:opera、chrome2.前端页面构成html:超文本标记语言css:层叠样式表javaScript:脚本语言3.什么是HTMLhtml是超文本标记语言html是使用标记来描述网页的一种语言html是一种语法简单、结构清晰的语言4.<!doctype> 的作用​ 告诉浏览器该文档的一个版_1.(2.0分)以下哪项不是浮动引起的问题()父元素设置为固定高度,但不能完全显示

强化学习中的Q-learning算法和Sarsa算法的区别_sarsa和q-learnig的区别在于“在相同策略下产生动作at+1”,如下图。请修改程序对-程序员宅基地

文章浏览阅读7.5k次,点赞4次,收藏18次。欢迎点击参观我的 ——&amp;gt; 个人学习网站 Q-learning算法描述: Sarsa算法描述: 假设我们的 Q(s, a) 是一个 Q table ,如下图所示,该表格表示共有三个 state (状态): s1s1s_{1} 、s2s2s_{2}、s3s3s_{3} ,每个状态都有三个可选 action (动作) :a1a1a_{1}、a2a2a_{2}、a3a..._sarsa和q-learnig的区别在于“在相同策略下产生动作at+1”,如下图。请修改程序对

C++ int long long double 等数据范围!_c++long double和long long int哪个大-程序员宅基地

文章浏览阅读1.9w次,点赞4次,收藏10次。由于机型的不同,确实存在int到底是几个字节的问题。具体见下表:现在给一种姿势,看看到底其数据范围是多少,在ACM竞赛中,经常会遇到数据溢出的问题,这里我们来看看int, long long的最大值是多少位的即10的多少次方,并以此我们大概能估计应该给变量定义什么样的类型或者怎样对算式进行恒等变形(运算顺序等)而有效预防溢出问题。_c++long double和long long int哪个大