草庐IT

PoA以太私链搭建

凌霄不胜寒 2024-04-19 原文

文章目录


前言

学习记录


一、启动PoA节点

1. 下载并安装geth

根据需要下载相应版本的geth。

这里我用的是64位Windows版本,也就是图片上第三个。下载完成后,点开,在电脑上完成安装,并根据需要进行环境变量的配置。

2. 启动节点

(1)验证geth是否安装完成

win+R打开cmd窗口,输入

geth version

如果安装成功,就会出现如下显示

(2)创建账户

由于我们运用PoA共识算法,先在四个节点文件夹中创建账户:
(这个操作同时会建立节点文件)

geth account new --datadir node0/keystore
geth account new --datadir node1/keystore
geth account new --datadir node2/keystore
geth account new --datadir node3/keystore

输入命令后,会要求输入密码,此时输入内容不会显示,输完回车即可,一个节点的新账户建立完成,如下图所示:

完成四个节点的新账户建立,会出现4个节点文件夹:

(3)准备创世块

这里创建基于PoA(活动证明)共识算法的创世块,我们首先要创建genesis.json 文件。(可以直接讲下述文本复制,打开记事本粘贴,然后重命名文件)

{
  "config": {
    "chainId": 12400,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "petersburgBlock": 0,
    "clique": {
      "period": 5,
      "epoch": 3000
    }
  },
  "difficulty": "1",
  "gasLimit": "8000000",
  "extradata": "0x0000000000000000000000000000000000000000000000000000000000000000e866857a657ecd01ed11157cacb5373c0093d5d1afabbf959166556bef72af10887d2a3fd7133c6cc332c083987ce8c80874c79ab8be5aa6d073ba29ea80dc20355278107e4364a59af7d5f4805ab1660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
  "alloc": {
    "565eDb916c178419A413977dcC18CE82A3A2d4C9": { "balance": "300000000000000000000000000" }
  }
}
  • 默认的验证者是在 extradata 中, extradata 是以64个0开头,130个0结尾,中间是验证者的地址(去除地址前的0x),将创建4个账户时,出现的账户地址依次复制粘贴到下述“validator”的位置。
   > 0x000....(32bytes)<validator1><validator2><validator3><validator4>000...(65bytes) 
  • 这里可以和PoW的创世块做个对比。
  • 注意chain ID(懒得说了,看PoW的那篇)

(4)初始化创世块

打开控制台,cd到 genesis.json 所在目录,键入命令

datadir node init genesis.json

这里我使用四个节点node0、node1、nede2、node3:

(5)启动节点

此时我们要启动四个节点:

  • 命令如下:
geth --datadir node0 --networkid 981027 --ipcdisable --http.port 8545 --ws.port 8546 --port 30303 console

因为节点内及节点之间要通信,就必须打开端口。

  • 节点2可能会出现报错:Fatal: Error starting protocol stack: Access is denied.这是因为开启了2个进程,只需要在启动命令中的console前加 –ipcdisable 即可。

……
于是启动了四个节点,如下所示

2.区块打包

(1)节点地址

节点启动后,会进入geth控制台,在控制台中键入admin.nodeInfo.enode会打印出节点信息。并在各个节点文件夹下,新建一个建一个static-nodes.json的文件,将各个节点信息按下图所示写入文件中:

(2)区块打包

断开各个节点(CTRL+D),按如下命令重新启动节点,节点之间即可互通,并开始创建区块。

geth --datadir node0 --networkid 981027 --ipcdisable  --miner.etherbase 0x1901300c3e828d84651c2ba9caa21db60195c2f4 --unlock 0x1901300c3e828d84651c2ba9caa21db60195c2f4   --mine --http.port 8545 --http --http.api "admin,eth,txpool,personal,web3" --ws.port 8546 --port 30303 --allow-insecure-unlock console

因为创世块中默认设置了四个验证者,需要启动三个节点挖矿,区块才会打包。

(3)添加验证者

启动 node3 ,将node3加入到验证者,node3中的 eth.accounts[0] 地址为 ea80dc20355278107e4364a59af7d5f4805ab166

只要在任意一个节点的geth控制台中键入 clique.propose(0xea80dc20355278107e4364a59af7d5f4805ab166,true) 即可发起一个提议,只需默认验证中51%以上的地址投票通过, ea80dc20355278107e4364a59af7d5f4805ab166 账户即可成为新的验证者

在当前节点键入 clique.proposals 可以查看当前节点发起的提议;

投票:在其他验证者节点键入clique.propose(0xea80dc20355278107e4364a59af7d5f4805ab166,true)

总结

大概写完了

有关PoA以太私链搭建的更多相关文章

  1. 玩以太坊链上项目的必备技能(初识智能合约语言-Solidity之旅一) - 2

    前面一篇关于智能合约翻译文讲到了,是一种计算机程序,既然是程序,那就可以使用程序语言去编写智能合约了。而若想玩区块链上的项目,大部分区块链项目都是开源的,能看得懂智能合约代码,或找出其中的漏洞,那么,学习Solidity这门高级的智能合约语言是有必要的,当然,这都得在公链``````以太坊上,毕竟国内的联盟链有些是不兼容Solidity。Solidity是一种面向对象的高级语言,用于实现智能合约。智能合约是管理以太坊状态下的账户行为的程序。Solidity是运行在以太坊(Ethereum)虚拟机(EVM)上,其语法受到了c++、python、javascript影响。Solidity是静态类型

  2. LinuxGUI自动化测试框架搭建(二十二)-框架主入口main.py设计&log日志调用 - 2

    (二十二)-框架主入口main.py设计&log日志调用和生成1测试目的2测试需求3需求分析4详细设计4.1新建存放日志目录log4.1.1配置config.py中写入log的目录4.2`baseInfo.py`中加入日志4.3`test_gedit.py`中加入日志4.4主函数入口main.py中调用日志5调用日志主函数main.py源码6`baseInfo.py`源码7`test_gedit.py`源码8运行效果9目前框架结构1测试目的组织运行所有的测试用例,并调用日志模块,便于问题定位。

  3. 基于ActiveMQ搭建MQTT服务备忘(二):webapp集成 - 2

    (1)为什么写这个话题(Why)读万卷书不如行千里路。这次搭建MQTT服务,遇到了一些误解,特此记录备忘。主要包括:(1)服务(Broker)的账户管理与网页管理平台的账户(2)与web应用的集成(Spring系)(2)ActiveMQ版本选择因为JAVA环境是JDK8,所以按兼容性考虑选择了ActiveMQ5.15的最后版本5.15.15。如果你是JDK11则可考虑ActiveMQ的最新版本5.17或5.18。ActiveMQ支持MQTTv3.1.1andv3.1。(3)ActiveMQ与web应用的集成主要介绍与Spring系的webapp集成(SpringBoot和SpringMVC)。

  4. 【微服务笔记23】使用Spring Cloud微服务组件从0到1搭建一个微服务工程 - 2

    这篇文章,主要介绍如何使用SpringCloud微服务组件从0到1搭建一个微服务工程。目录一、从0到1搭建微服务工程1.1、基础环境说明(1)使用组件(2)微服务依赖1.2、搭建注册中心(1)引入依赖(2)配置文件(3)启动类1.3、搭建配置中心(1)引入依赖(2)配置文件(3)启动类1.4、搭建API网关(1)引入依赖(2)配置文件(3)启动类1.5、搭建服务提供者(1)引入依赖(2)配置文件(3)启动类1.6、搭建服务消费者(1)引入依赖(2)配置文件(3)启动类1.7、运行测试一、从0到1搭建微服务工程1.1、基础环境说明(1)使用组件这里主要是使用的SpringCloudNetflix

  5. ruby-on-rails - 搭建Ruby开发环境 - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我目前正在尝试搭建一个学习Ruby的开发环境。环境主要是为了掌握这门语言,但我很可能会在很长一段时间后转向使用Rails进行开发。以Web开发为目标,我想了解首选的Web服务器和数据库。我打算在虚拟机上设置环境,所以我不担心把它弄坏。因此,我愿意使用Linux发行版、OSX或Windows作为操作系统。我正从C#转向,所以我想在一定程度上被迫采用Ruby的

  6. geth下载安装配置环境及联盟链的搭建 - 2

    以太坊概论考察课更具课堂教学讲解,参考开放资料。使用所学的知识,创建项目并完成要求的内容。包含的功能和要求具体如下:一:安装并运行geth客户端1、下载安装geth首先下载geth:https://geth.ethereum.org/downloads/​选择路径↓2、配置环境变量3、运行geth如下命令所示:查看geth命令。使用gethversion查看geth版本号,判断geth是否成功安装。如下命令所示:`gethversion`可以通过geth--help查看geth工具所支持的命令和相关参数,方便后期关于geth的操作。如下命令所示:geth--help运行结果如下:二:搭建get

  7. 五-1、elasticsearch集群搭建(ES集群搭建) - 2

    目录一、下载Elasticsearch1.选择你要下载的Elasticsearch版本二、采用通用搭建集群的方法三、配置三台es1.上传压缩包到任意一台虚拟机中2.解压并修改配置文件(配置单台es)3.配置三台es集群4.设置后台启动和开机自启(可选)一、下载Elasticsearch1.选择你要下载的Elasticsearch版本es下载地址这里我下载的是二、采用通用搭建集群的方法集群搭建方法三、配置三台es1.上传压缩包到任意一台虚拟机中上传方式有两种第一种:使用xftp上传直接拖动过去就可以了。第二种:使用lrzsz先安装yum-yinstalllrzsz切换到要上传的位置cd/opt/

  8. 【Element UI通用后台管理系统】(一)项目搭建 - 2

    一、使用Yarn作为项目的包管理工具1、Yarn是什么?“Yarn是由Facebook、Google、Exponent和Tilde联合推出了一个新的JS包管理工具,正如官方文档中写的,Yarn是为了弥补npm的一些缺陷而出现的。”这句话让我想起了使用npm时的坑:npminstall的时候非常慢,特别是新的项目拉下来要等半天,删除node_modules,重新install的时候依旧如此。同一个项目,安装的时候无法保持一致性。由于package.json文件中版本号的特点,下面三个版本号在安装的时候代表的含义不同。 "5.0.3"   表示:安装指定的5.0.3版本"~5.0.3"  表示:安

  9. 手把手教你搭建SpringCloud Alibaba之生产者与消费者 - 2

      SpringCloudAlibaba全集文章目录:零、手把手教你搭建SpringCloudAlibaba项目一、手把手教你搭建SpringCloudAlibaba之生产者与消费者二、手把手教你搭建SpringCloudAlibaba之Nacos服务注册中心三、手把手教你搭建SpringCloudAlibaba之Nacos服务配置中心四、手把手教你搭建SpringCloudAlibaba之Nacos服务集群配置五、手把手教你搭建SpringCloudAlibaba之Nacos服务持久化配置六、手把手教你搭建SpringCloudAlibaba之Sentinel实现流量实时监控七、手把手教你搭

  10. 【保姆级】python最新版3.11.1开发环境搭建,看这一篇就够了 - 2

    【保姆级】Python最新版开发环境搭建,看这一篇就够了(适用于Python3.11.2安装)文章目录【保姆级】Python最新版开发环境搭建,看这一篇就够了(适用于Python3.11.2安装)一、Python解释器安装Windows安装步骤环境变量配置(非必要)MacOS安装步骤Linux安装步骤二、PyCharm安装三、创建Python工程工欲善其事必先利其器,在使用Python开发程序之前,在计算机上搭建Python开发环境是必不可少的环节,目前Python最新稳定版本是3.11.1,且支持到2027年,如下图所示本文手把手带你从0到1搭建Python最新版3.11.1开发环境,堪称保

随机推荐