本地部署一套以太坊私链,使用适用于联盟链的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)相关推荐

  1. 使用Helm在k8s集群上部署以太坊私有链

    一.概述 二.部署流程 三.问题记录 四.部署检查 五.参考 一.概述 使用k8s官方的包管理工具helm部署以太坊私有链并启动三类节点和一个前端服务: bootnode: used for Geth ...

  2. 搭建以太坊私有链(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 ...

  3. 以太坊私有链POA模式

    1.创建目录 mkdir devnet cd devnet mkdir node1 node2 2.创建账户 geth --datadir node1/ account new geth --data ...

  4. 如何搭建以太坊私有链

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 如何搭建以太坊私有链1 今天讲一下如何搭建以太坊私有连,当然了在你阅读这篇文章的时候,最好是有一定基础,比如知道什么是以 ...

  5. 区块链开发之搭建以太坊私有链

    (一)区块链开发之搭建以太坊私有链 本文链接:https://blog.csdn.net/rwdxll/article/details/82929417 1.安装ethereum/Go client( ...

  6. 【手把手】如何在10分钟内搭建一个以太坊私有链?

    在开发以太坊时,很多时候需要搭建一条以太坊私有链,这篇来自作者熊丽兵的文章,手把手教你10分钟内如何在Mac上进行搭建. 作者 | 熊丽兵 整理 | 科科 阅读本文前,你应该对以太坊语言有所了解,如果 ...

  7. 以太坊 私有链搭建 Geth+Mist钱包

    近期在区块链的热潮推动下,我开始研究区块链技术,尤其是智能合约.可编程式的智能合约龙头老大非以太坊莫属了,其他的合约平台如 hyperledger,EOS 相对来说没以太坊成熟,以后陆续在研究.好了, ...

  8. 区块链,使用 Go-Ethereum 搭建以太坊私有链

    1.什么是Ethereum(以太坊) 以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约.开源的底层系统,以太坊从诞生到2017年5月,短短3年半时间,全球已有200多个以太 ...

  9. 在Ubuntu下成功搭建以太坊私有链挖矿并转账

    前言 最近老师布置了一个任务,让我学习区块链的知识.刚开始乖乖的拿一本书看概念,有时候看书真的很无聊,我都睡过去好几回了.前几天老师说,你要是感觉看概念太无聊,就先尝试着搭一个以太坊私有链试一试.哇, ...

最新文章

  1. mysql临时开启二进制_关于MySQL二进制日志Binlog的认识
  2. 251f与ips屏显示器对比_1千多元预算,2020年PS平面设计/摄影后期显示器推荐/选购指南(2k+高色域屏)...
  3. elasticsearch手动创建和删除索引
  4. 大爱jQuery,10美女模特有用jQuery/CSS3插入(集成点免费下载)
  5. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1050:骑车与走路
  6. P2240 【深基12.例1】部分背包问题
  7. C#创建无数据源水晶报表极简教程
  8. 一个简单的登录注册页面html代码
  9. Nvidia GPU Architecture--Fermi架构笔记
  10. 爱的历史摘录(西蒙·梅)
  11. python视频课程百度云分享_Python开发视频百度云分享
  12. Windows开启卓越性能模式,一键睿频
  13. win10网上邻居无法显示计算机,win10网上邻居看不到别的共享电脑怎么办
  14. 后台运行命令nohup、job 等
  15. 计算机课程 图层关系认识 课件,PhotoShop系列视频讲座(八讲)
  16. win11打不开菜单怎么办?win11打不开开始菜单的9种解决方法
  17. STM32自学笔记ADC多通道扫描
  18. 直播画面已被主播锁定!输入正确的密码后可解锁画面。斗鱼直播主播锁定画面解锁方法(网页版)
  19. 以红酒数据集分类为例做决策树的可视化
  20. JVM——内存管理和垃圾回收

热门文章

  1. 线性特征与非线性特征、线性模型与非线性模型
  2. 【Mac 环境配置】-- 配置JAVA环境
  3. 获取32位整型变量中某一位的bit值
  4. 腾讯音乐收购懒人听书:后者已实现盈利,阅文集团获10亿元现金
  5. Perl常用模块使用例子
  6. 不用全局plugin,项目在哭泣
  7. 寄售转拍系统/拍卖系统/竞拍系统/转拍系统/字画拍卖转拍/委托转售系统
  8. SpringBoot 异常后更改响应状态码
  9. ★ SMILES与分子图像的转换代码【及后续操作:识别、指标评估】
  10. Unity3D中Isometric Tilemap功能实践