体验篇 - 部署以太坊私有链 (PoA)
本地部署一套以太坊私链,使用适用于联盟链的PoA共识
如果用默认的PoW共识,请看这篇: 体验篇 - 部署以太坊私链 (PoW)
(1)bootnode
在poa目录下建立三个文件夹,分别是bootdir,node1,node2三个文件夹。
mkdir poa
cd poa
mkdir bootdir node1 node2
在bootdir文件夹中创建bootnode节点用来做p2p网络路由。
./bootnode --genkey boot.key #创建名为boot.key的key文件。
./bootnode --nodekey boot.key #启动bootnode路由节点。#回显信息如下, 之后启动node节点时会用到
UDP listener up self=enode://bde0739c7d9f213054575574d6e8e1df21147066a666bc939f29634dac947ad5c715a990d878264fe91a83c9fa0495911c824fe43329570c8d0510c8fa3243f2@[::]:30301#或者 后台运行
nohup bootnode -nodekey boot.key -verbosity 9 -addr :30301 2>> bootnode_output.log &
(2)创建账户
在node1 node2 目录下创建账户 (密码 123456)
./geth account new
0xbac5564cc4f7528ebb6150270ee63b3fa1641b17
0x8a6673dc85e544bce6d4876f63cfcdc4e5c8cc08
(3)产生创世文件
使用puppeth
来产生创世文件. puppeth是geth自带的程序,可以引导用户创建geth的创世文件。
运行puppeth在poa目录产生genesis.json文件
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 or hyphens, please)
> poaSweet, you can set this via --network=poa next time!INFO [06-23|17:10:34] Administering Ethereum network name=poa
INFO [06-23|17:10:34] No remote machines to gather stats from What would you like to do? (default = stats)1. Show network stats2. Configure new genesis3. Track new remote server4. Deploy network components
> 2Which consensus engine to use? (default = clique)1. Ethash - proof-of-work2. Clique - proof-of-authority
> 2How many seconds should blocks take? (default = 15)
> 2Which accounts are allowed to seal? (mandatory at least one)
> 0xd71ad920f80e6a1e06689a720f24b335f22d557e
> 0x8bbc43acd355be0cecc61872e13e0a0e53c700b7
> 0xWhich accounts should be pre-funded? (advisable at least one)
> 0x0xd71ad920f80e6a1e06689a720f24b335f22d557e
ERROR[06-23|17:11:33] Invalid address length, please retry
> 0xd71ad920f80e6a1e06689a720f24b335f22d557e
> 0xSpecify your chain/network ID if you want an explicit one (default = random)
> 1500
INFO [06-23|17:12:05] Configured new genesis block What would you like to do? (default = stats)1. Show network stats2. Manage existing genesis3. Track new remote server4. Deploy network components
> 21. Modify existing fork rules2. Export genesis configuration3. Remove genesis configuration
> 2Which file to save the genesis into? (default = poa.json)
> genesis.json
INFO [06-23|17:12:27] Exported existing genesis block What would you like to do? (default = stats)1. Show network stats2. Manage existing genesis3. Track new remote server4. Deploy network components> ^C
(4)初始化并启动节点
# Init node1 & node2
echo "Init node1 & node2."
geth --datadir node1 init genesis.json
geth --datadir node2 init genesis.jsonsleep 1s# Startup node1
echo "Startup node1."
nohup geth --datadir node1/ --syncmode 'full' --port 30311 --rpc --rpcaddr 0.0.0.0 --rpcport 8501 \
--rpcapi 'personal,db,eth,net,web3,txpool,miner' --rpccorsdomain "*" --ws --wsaddr 0.0.0.0 --wsport 8601 --wsapi 'personal,db,eth,net,web3,txpool,miner' --wsorigins "*" \
--bootnodes 'enode://bde0739c7d9f213054575574d6e8e1df21147066a666bc939f29634dac947ad5c715a990d878264fe91a83c9fa0495911c824fe43329570c8d0510c8fa3243f2@127.0.0.1:30301' \
--networkid 1515 --gasprice '1' -unlock '0xbac5564cc4f7528ebb6150270ee63b3fa1641b17' --password node1/password.txt --mine \
2>>node1/eth_output.log &sleep 1s# Startup node2
echo "Startup node2."
nohup geth --datadir node2/ --syncmode 'full' --port 30312 --rpc --rpcaddr 'localhost' --rpcport 8502 \--rpcapi 'personal,db,eth,net,web3,txpool,miner' --ws --wsaddr 0.0.0.0 --wsport 8602 --wsapi 'personal,db,eth,net,web3,txpool,miner' --wsorigins "*" \--bootnodes 'enode://bde0739c7d9f213054575574d6e8e1df21147066a666bc939f29634dac947ad5c715a990d878264fe91a83c9fa0495911c824fe43329570c8d0510c8fa3243f2@127.0.0.1:30301' \--networkid 1515 --gasprice '1' -unlock '0x8a6673dc85e544bce6d4876f63cfcdc4e5c8cc08' --password node2/password.txt --mine \2>>node2/eth_output.log &# Jobs command
# jobs
# kill %1
# kill %2
# kill %3
踩坑记录
(1)启动节点挖矿时,需要带上标志–syncmode “full”,否则汇报错误:
Clique : Discarded bad propagated block #1 when syncing
(2)启动节点挖矿时,需要在启动时带上 --unlock “账号”,否则会在挖矿一定时间后会报挖矿失败,需要解锁的错误。
参考
- http://www.cnblogs.com/xd502djj/p/3612131.html
- https://blog.csdn.net/fengyifei11228/article/details/5737371
- http://www.cnblogs.com/mfryf/archive/2012/05/09/2491322.html
- 往期精彩回顾:
- 区块链知识系列
- 密码学系列
- 零知识证明系列
- 共识系列
- 公链系列
- 比特币系列
- 以太坊系列
- EOS系列
- Filecoin系列
- 联盟链系列
- Fabric系列
- 智能合约系列
- Token系列
体验篇 - 部署以太坊私有链 (PoA)相关推荐
- 使用Helm在k8s集群上部署以太坊私有链
一.概述 二.部署流程 三.问题记录 四.部署检查 五.参考 一.概述 使用k8s官方的包管理工具helm部署以太坊私有链并启动三类节点和一个前端服务: bootnode: used for Geth ...
- 搭建以太坊私有链(PoA)--CentOS7.6 on 阿里云ECS、macOS Catalina on Mac、Ubuntu20.04 on Raspberry Pi 4B
使用Geth搭建以太坊PoA私有链 搭建以太坊私有链(PoA) 1 阿里云ECS上的操作步骤 1.1 准备环境 1.2 安装Geth及Tools 1.3 创建以太坊私有链的数据文件夹 1.4 用pup ...
- 以太坊私有链POA模式
1.创建目录 mkdir devnet cd devnet mkdir node1 node2 2.创建账户 geth --datadir node1/ account new geth --data ...
- 如何搭建以太坊私有链
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 如何搭建以太坊私有链1 今天讲一下如何搭建以太坊私有连,当然了在你阅读这篇文章的时候,最好是有一定基础,比如知道什么是以 ...
- 区块链开发之搭建以太坊私有链
(一)区块链开发之搭建以太坊私有链 本文链接:https://blog.csdn.net/rwdxll/article/details/82929417 1.安装ethereum/Go client( ...
- 【手把手】如何在10分钟内搭建一个以太坊私有链?
在开发以太坊时,很多时候需要搭建一条以太坊私有链,这篇来自作者熊丽兵的文章,手把手教你10分钟内如何在Mac上进行搭建. 作者 | 熊丽兵 整理 | 科科 阅读本文前,你应该对以太坊语言有所了解,如果 ...
- 以太坊 私有链搭建 Geth+Mist钱包
近期在区块链的热潮推动下,我开始研究区块链技术,尤其是智能合约.可编程式的智能合约龙头老大非以太坊莫属了,其他的合约平台如 hyperledger,EOS 相对来说没以太坊成熟,以后陆续在研究.好了, ...
- 区块链,使用 Go-Ethereum 搭建以太坊私有链
1.什么是Ethereum(以太坊) 以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约.开源的底层系统,以太坊从诞生到2017年5月,短短3年半时间,全球已有200多个以太 ...
- 在Ubuntu下成功搭建以太坊私有链挖矿并转账
前言 最近老师布置了一个任务,让我学习区块链的知识.刚开始乖乖的拿一本书看概念,有时候看书真的很无聊,我都睡过去好几回了.前几天老师说,你要是感觉看概念太无聊,就先尝试着搭一个以太坊私有链试一试.哇, ...
最新文章
- mysql临时开启二进制_关于MySQL二进制日志Binlog的认识
- 251f与ips屏显示器对比_1千多元预算,2020年PS平面设计/摄影后期显示器推荐/选购指南(2k+高色域屏)...
- elasticsearch手动创建和删除索引
- 大爱jQuery,10美女模特有用jQuery/CSS3插入(集成点免费下载)
- 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1050:骑车与走路
- P2240 【深基12.例1】部分背包问题
- C#创建无数据源水晶报表极简教程
- 一个简单的登录注册页面html代码
- Nvidia GPU Architecture--Fermi架构笔记
- 爱的历史摘录(西蒙·梅)
- python视频课程百度云分享_Python开发视频百度云分享
- Windows开启卓越性能模式,一键睿频
- win10网上邻居无法显示计算机,win10网上邻居看不到别的共享电脑怎么办
- 后台运行命令nohup、job 等
- 计算机课程 图层关系认识 课件,PhotoShop系列视频讲座(八讲)
- win11打不开菜单怎么办?win11打不开开始菜单的9种解决方法
- STM32自学笔记ADC多通道扫描
- 直播画面已被主播锁定!输入正确的密码后可解锁画面。斗鱼直播主播锁定画面解锁方法(网页版)
- 以红酒数据集分类为例做决策树的可视化
- JVM——内存管理和垃圾回收