[项目实战]EOS多节点部署
文章总览:YuanDaiMa2048博客文章总览
EOS多节点部署
- (一)环境设计
- (二)节点配置
- (三)区块信息同步
- (四)启动节点并验证同步
- EOS单节点的环境如何配置
(一)环境设计
在搭建EOS区块链网络时,设置了包括一个主节点(eosiomain)和三个生产节点(producer1、producer2、producer3)。主节点的IP地址为192.168.239.155,而生产节点的IP地址分别为192.168.239.156、192.168.239.157和192.168.239.158。我们使用的虚拟机版本是Ubuntu20.04,每个虚拟机上的EOS开发环境版本为2.1,CDT版本是1.7。
- 主节点eosiomain:192.168.239.155
- 生产节点 producer1:192.168.239.156
- 生产节点 producer2:192.168.239.157
- 生产节点 producer3:192.168.239.158
- 虚拟机版本:Ubuntu20.04
(二)节点配置
在搭建EOS网络的过程中,首先需要在每个虚拟机上配置EOS环境。这包括创建钱包、生成密钥对、导入私钥以及启动keosd和nodeos服务。通过这些步骤,确保每个节点都具备了必要的工具和环境,以便顺利地参与到EOS网络中。
随后,在已经配置了EOS环境的四台机子上,开始设置节点。首先,设置了主节点eosiomain,确保其配置文件(config.ini)中正确设置了节点名称和网络参数,并添加了其他生产节点和主节点的对等地址,以建立网络连接。
eosiomain主节点配置文件
# 主节点eosiomain配置文件 config.ini
# Network configurations
p2p-listen-endpoint = 0.0.0.0:9876
http-server-address = 0.0.0.0:8888
# 添加其他生产节点和主节点的对等地址
# 主节点 producer1 的地址
p2p-peer-address = 192.168.239.156:9876
# 生产节点 producer2 的地址
p2p-peer-address = 192.168.239.157:9876
# 生产节点 producer3 的地址
p2p-peer-address = 192.168.239.158:9876
接着,分别设置了三个生产节点producer1、producer2和producer3。在每个生产节点的配置文件中,我们设置了节点名称、签名密钥等信息,并添加了其他节点的对等地址,以确保节点之间能够互相通信和同步。这里以producer1的配置文件为例展示,其他两个节点类似,需要修改生产者名称以及密钥还有连接的节点IP地址。
其他节点配置文件
# 生产节点 producer1 配置文件 config.ini
# 设置生产者名称为 producer1
producer-name = producer1
# 指定签名提供者为 producer1 的签名密钥
signature-provider = [换成自己给producer1创建的公私钥对中的私钥]
# 允许生成过期区块,确保不会跳过 producer1 的轮次
enable-stale-production = true
# 设置生产区块的线程数量
producer-threads = 1
# Network configurations
p2p-listen-endpoint = 0.0.0.0:9876
http-server-address = 0.0.0.0:8888
# 添加其他生产节点和主节点的对等地址
# 主节点 eosiomain 的地址
p2p-peer-address = 192.168.239.155:9876
# 生产节点 producer2 的地址
p2p-peer-address = 192.168.239.157:9876
# 生产节点 producer3 的地址
p2p-peer-address = 192.168.239.158:9876
(三)区块信息同步
在进行了上面两个步骤之后,开启了Nodes和Keosd服务,然后查看区块信息,虽然四个节点确实可以连接,但是发现生产的区块信息独立的,并不是同步的。为了解决这个问题,进行了相关信息查阅,发现需要将创世区块信息同步到各个节点。于是通过以下几步来同步区块信息:
- 生成 genesis.json 文件
在主节点(192.168.239.155)上生成 genesis.json 文件:
genesis.json 文件实例
nodeos --extract-genesis-json /home/eosio/genesis.json
# 内容
{
"initial_timestamp": "2018-06-01T12:00:00.000",
"initial_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV",
"initial_configuration": {"max_block_net_usage": 1048576,"target_block_net_usage_pct": 1000,"max_transaction_net_usage": 524288,"base_per_transaction_net_usage": 12,"net_usage_leeway": 500,"context_free_discount_net_usage_num": 20,"context_free_discount_net_usage_den": 100,"max_block_cpu_usage": 200000,"target_block_cpu_usage_pct": 1000,"max_transaction_cpu_usage": 150000,"min_transaction_cpu_usage": 100,"max_transaction_lifetime": 3600,"deferred_trx_expiration_window": 600,"max_transaction_delay": 3888000,"max_inline_action_size": 524288,"max_inline_action_depth": 4,"max_authority_depth": 6}
}
- 分发 genesis.json 文件
将生成的 genesis.json 文件从主节点分发到其他节点,将在主节点生成的gensis.json文件复制到其余三台虚拟机上,路径为/home/eosio/genesis.json(可自定义设置不同位置)。在后续启动Nodeos时候利用参数设置确保每个节点启动时都使用相同的 genesis.json 文件路径。
(四)启动节点并验证同步
在进行了上述三个步骤之后,重新启动四个节点的EOS服务,其中启动Nodeos命令如下所示,其中需要指明genesis.json文件的位置从而同步创世区块信息。
启动Nodeos命令
nodeos -e -p eosio \
--plugin eosio::producer_plugin \
--plugin eosio::producer_api_plugin \
--plugin eosio::chain_api_plugin \
--plugin eosio::http_plugin \
--plugin eosio::history_plugin \
--plugin eosio::history_api_plugin \
--filter-on="*" \
--access-control-allow-origin='*' \
--http-server-address=0.0.0.0:8888 \
--contracts-console \
--http-validate-host=false \
--verbose-http-errors \
--genesis-json /home/zqy/eosio/genesis.json >> nodeos.log 2>&1 &
之后,可以看到四台虚拟机成功连接并实现区块信息同步。
区块信息同步(节点连接)

区块信息同步(接收区块)

EOS单节点的环境如何配置
- 参考文章:EOS单节点部署
相关文章:
[项目实战]EOS多节点部署
文章总览:YuanDaiMa2048博客文章总览 EOS多节点部署 (一)环境设计(二)节点配置(三)区块信息同步(四)启动节点并验证同步EOS单节点的环境如何配置 (一…...
setImmediate() vs setTimeout() 在 JavaScript 中的区别
setImmediate() vs setTimeout() 在 JavaScript 中的区别 在 JavaScript 中,setImmediate() 和 setTimeout() 都用于调度任务,但它们的工作方式不同。 JavaScript 的异步特性 JavaScript 以其非阻塞、异步行为而闻名,尤其是在 Node.js 环境…...
【Java文件操作】文件系统操作文件内容操作
文件系统操作 常见API 在Java中,File类是用于文件和目录路径名的抽象表示。以下是一些常见的方法: 构造方法: File(String pathname):根据给定的路径创建一个File对象。File(String parent, String child):根据父路径…...
关于若依flowable的安装
有个项目要使用工作流功能,在网上看了flowable的各种资料,最后选择用若依RuoYi-Vue-Flowable这个项目来迁移整合。 一、下载项目代码: 官方项目地址:https://gitee.com/shenzhanwang/Ruoyi-flowable/ 二、新建数据库ÿ…...
猜数字困难版(1-10000)
小游戏,通过提示每次猜高或猜低以及每次猜中的位数,10次内猜中1-10000的一个数。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthde…...
ASPICE术语表
术语来源描述活动Automotive SPICE V4.0由利益相关方或参与方执行的任务用参数Automotive SPICE V4.0应用参数是包含了在系统或软件层级可被更改的数据的软件变量,他们影响系统或软件的行为和属性。应用参数的概念有两种表达方式:规范(分别包括变量名称、值域范围、…...
Knife4j:打造优雅的SpringBoot API文档
1. 为什么需要API文档? 在现代软件开发中,API文档的重要性不言而喻。一份清晰、准确、易于理解的API文档不仅能够提高开发效率,还能降低前后端沟通成本。今天,我们要介绍的Knife4j正是这样一款强大的API文档生成工具,它专为Spring Boot项目量身打造,让API文档的生成…...
数学建模笔记—— 多目标规划
数学建模笔记—— 多目标规划 多目标规划1. 模型原理1.1 多目标规划的一般形式1.2 多目标规划的解1.3 多目标规划的求解 2. 典型例题3. matlab代码实现 多目标规划 多目标规划是数学规划的一个分支。研究多于一个的目标函数在给定区域上的最优化。又称多目标最优化。通常记为 …...
【鸿蒙HarmonyOS NEXT】页面之间相互传递参数
【鸿蒙HarmonyOS NEXT】页面之间相互传递参数 一、环境说明二、页面之间相互传参 一、环境说明 DevEco Studio 版本: API版本:以12为主 二、页面之间相互传参 说明: 页面间的导航可以通过页面路由router模块来实现。页面路由模块根据页…...
SonicWall SSL VPN曝出高危漏洞,可能导致防火墙崩溃
近日,有黑客利用 SonicWall SonicOS 防火墙设备中的一个关键安全漏洞入侵受害者的网络。 这个不当访问控制漏洞被追踪为 CVE-2024-40766,影响到第 5 代、第 6 代和第 7 代防火墙。SonicWall于8月22日对其进行了修补,并警告称其只影响防火墙的…...
关于SAP标准委外(带料外协)采购订单信息
业务背景: 业务部门提出需要将售料外协方式变更为带料外协,带料外协实际业务存在一个委外订单存在多次发料,且每次发票需要进行齐套发料,不同批次的发料涉及物料替代。在半成品收货时需要进行对发料的组件进行扣料。 需求分析&a…...
SpringBoot整合WebSocket实现消息推送或聊天功能示例
最近在做一个功能,就是需要实时给用户推送消息,所以就需要用到 websocket springboot 接入 websocket 非常简单,只需要下面几个配置即可 pom 文件 <!-- spring-boot-web启动器 --><dependency><groupId>org.springframewo…...
使用 QEMU 模拟器运行 FreeRTOS 实时操作系统
文章目录 QEMU 官网QEMU 文档QEMU 简介QEMU 安装QEMU 命令启动虚拟机串口控制台监控命令行 FreeRTOS安装编译工具FreeRTOS 源码RISC-V-Qemu-virt_GCC 示例编译 RISC-V-Qemu-virt_GCC启动虚拟机运行 FreeRTOS QEMU 官网 https://www.qemu.org/ QEMU 文档 https://www.qemu.or…...
Oracle EBS中AR模块的财务流程概览
应收账款 (AR) 模块是Oracle E-Business Suite (EBS) 中另一个重要的财务管理模块,主要用于管理企业销售过程中的账款回收。下面是AR模块中的一些关键财务流程及其详细说明: 1. 销售订单管理 创建销售订单:当客户下单时,销售人员…...
Minitab 的直方图结果分析解释
Minitab 的直方图结果分析解释 步骤 1:评估关键特征 检查分布的尖峰和散布。评估样本数量对直方图外观的影响。 标识尖峰(即,条的最高聚类): 尖峰表示样本中最常见的值。评估样本的散布以了解数据的变异程度。例如…...
AgentRE:用智能体框架提升知识图谱构建效果,重点是开源!
发布时间:2024 年 09 月 13 日 Agent应用 AgentRE: An Agent-Based Framework for Navigating Complex Information Landscapes in Relation Extraction 在复杂场景中,关系抽取 (RE) 因关系类型多样和实体间关系模糊而挑战重重,影响了传统 “…...
力扣题解2390
大家好,欢迎来到无限大的频道。 今日继续给大家带来力扣题解。 题目描述(中等): 从字符串中移除星号 给你一个包含若干星号 * 的字符串 s 。 在一步操作中,你可以: 选中 s 中的一个星号。 移除星号…...
用Python获取PDF页面的大小、方向和旋转角度
在文档管理和自动化领域,了解PDF文档的内在属性(如页面大小、方向和旋转角度)对于确保一致的文档处理和布局保真度至关重要。这些属性在内容重用、归档以及PDF无缝集成到网络环境或其他数字工作流程中起着关键作用,因为它们直接影…...
【即时通讯】轮询方式实现
技术栈 LayUI、jQuery实现前端效果。django4.2、django-ninja实现后端接口。 代码仓 - 后端 代码仓 - 前端 实现功能 首次访问页面并发送消息时需要设置昵称发送内容为空时要提示用户不能发送空消息前端定时获取消息,然后展示在页面上。 效果展示 首次发送需要…...
Flock 明牌空投教程
FLock 旨在为人工智能构建一个去中心化的隐私保护解决方案。FLock提出了一项名为联合学习区块(简称 FLocks)的研究计划,该计划使用区块链作为数据持有者之间的协调平台来进行机器学习,同时数据保持本地和隐私。通过用区块链取代收…...
PyQt5实战:用QTreeView+QStandardItemModel快速构建你的第一个树形文件浏览器(附完整代码)
PyQt5实战:用QTreeViewQStandardItemModel快速构建你的第一个树形文件浏览器 每次看到电脑资源管理器左侧那整齐的目录树,你是否好奇过它是如何实现的?今天我们就用PyQt5的QTreeView和QStandardItemModel组件,从零开始打造一个简…...
高效处理海量数据——pandas分块读取与内存管理实战
1. 为什么需要分块读取千万级数据? 第一次处理千万级CSV文件时,我盯着16GB的硬盘文件发愁——128GB内存的服务器居然加载到一半就崩溃了。这种场景在金融交易记录、物联网传感器数据、用户行为日志分析中太常见了。pandas默认的read_csv()会一次性把数据…...
Docker Desktop部署Weaviate向量数据库:从配置到生产环境全流程
在Docker Desktop上部署Weaviate向量数据库的全流程。通过Docker Compose实现容器化,涵盖持久化存储、安全认证配置及text2vec-openai集成。提供Python/Java客户端连接示例,并针对端口冲突、数据持久化等常见问题给出实用解决方案,助力快速搭…...
2000kn四柱式通用液压机设计【说明书 CAD图纸 开题报告】
2000kN四柱式通用液压机作为工业领域中重要的压力加工设备,其核心作用在于通过液压系统传递压力,实现对金属或非金属材料的冲压、拉伸、弯曲及成型等工艺。该设备采用四柱式框架结构,通过上下横梁与四根立柱构成刚性闭合框架,确保…...
Phi-3-Mini-128K技术文档翻译与润色对比:中英互译质量评估
Phi-3-Mini-128K技术文档翻译与润色对比:中英互译质量评估 最近在折腾一些开源项目,免不了要和英文技术文档打交道。对于咱们中文开发者来说,直接阅读原版文档虽然最准确,但有时候效率确实不高。机器翻译就成了一个绕不开的工具。…...
多模态交互概念展示:LFM2.5-1.2B-Thinking-GGUF如何理解并处理图像描述文本
多模态交互概念展示:LFM2.5-1.2B-Thinking-GGUF如何理解并处理图像描述文本 1. 当文本模型遇见视觉世界 你可能好奇,一个纯文本模型如何参与多模态交互?关键在于语义桥梁的搭建。LFM2.5-1.2B-Thinking-GGUF虽然不能直接处理图像,…...
3大突破!LxgwWenKai字体效率革命:从代码阅读到多场景适配全指南
3大突破!LxgwWenKai字体效率革命:从代码阅读到多场景适配全指南 【免费下载链接】LxgwWenKai LxgwWenKai: 这是一个开源的中文字体项目,提供了多种版本的字体文件,适用于不同的使用场景,包括屏幕阅读、轻便版、GB规范字…...
保姆级教程:用MQTT.fx客户端连接电信AEP物联网平台,实现设备数据上报与远程控制
从零到一:用MQTT.fx玩转电信AEP物联网平台全流程实战 在物联网开发领域,电信AEP平台作为国内主流物联网云服务平台之一,为开发者提供了从设备接入到数据管理的完整解决方案。而MQTT.fx作为轻量级MQTT客户端工具,因其简洁直观的界面…...
Ext2Read:终极Windows读取Linux分区解决方案,3分钟快速上手
Ext2Read:终极Windows读取Linux分区解决方案,3分钟快速上手 【免费下载链接】ext2read A Windows Application to read and copy Ext2/Ext3/Ext4 (With LVM) Partitions from Windows. 项目地址: https://gitcode.com/gh_mirrors/ex/ext2read 你是…...
OpenGOAL编译器实战指南:如何构建你自己的Jak游戏
OpenGOAL编译器实战指南:如何构建你自己的Jak游戏 【免费下载链接】jak-project Reviving the language that brought us the Jak & Daxter Series 项目地址: https://gitcode.com/gh_mirrors/ja/jak-project OpenGOAL编译器是一个强大的工具,…...
