搭建私有链

文章目录

  • 1. 准备工作
  • 2. 创建创世区块配置文件
    • 2.1 创建数据目录
    • 2.2 创建创世区块配置文件
      • 1. “config”部分
      • 2. “alloc”部分
      • 3. “coinbase”
      • 4. “difficulty”
      • 5. “extraData”
      • 6. “gasLimit”
      • 7. “nonce”
      • 8. “mixhash”
      • 9. “parentHash”
      • 10. “timestamp”
  • 3. 初始化:将创世区块信息写入区块链
  • 4. 启动私有节点
  • 5. Geth的JavaScript控制台操作

1. 准备工作

  • 准备工作指安装Geth客户端
  • 查看Geth版本,执行命令:geth version
    在这里插入图片描述

2. 创建创世区块配置文件

2.1 创建数据目录

  • 执行命令:sudo mkdir -p /private_chain/nodedata
    在这里插入图片描述

2.2 创建创世区块配置文件

  • 进入private_chain目录
    在这里插入图片描述

  • 执行命令:sudo vim genesis.json
    在这里插入图片描述

{
  "config": {
    "chainId": 12345,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "petersburgBlock": 0,
    "istanbulBlock": 0
  },
  "alloc": {},
  "coinbase": "0x0000000000000000000000000000000000000000",
  "difficulty": "0x20000",
  "extraData": "",
  "gasLimit": "0xffffffff",
  "nonce": "0x0000000000000042",
  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp": "0x00"
}

1. “config”部分

这是定义区块链网络配置相关参数的对象。

  • chainId:值为 12345,用于唯一标识该私有链网络,区别于其他以太坊网络(如主网或测试网),防止网络冲突。
  • homesteadBlockeip150Block 等:都设为 0,表示对应的以太坊硬分叉升级相关的起始区块高度设定在此私有链初始就是生效状态,用于控制网络协议的迭代逻辑。

2. “alloc”部分

这是一个空对象 {},通常用于预分配以太坊账户的初始余额。格式为以账户地址为键,对应账户初始余额等配置为值。此处为空则意味着初始没有预分配资金的账户,后续需自行创建并获取资金。

3. “coinbase”

其值 0x0000000000000000000000000000000000000000 设定了挖矿奖励的接收地址,也就是挖到新区块后,奖励的以太币等会发送到该地址。

4. “difficulty”

"0x20000" 这个值定义了挖矿的难度系数。难度决定了矿工找到符合要求的新区块哈希的难易程度,较低难度意味着相对更容易挖到矿,可根据私有链的实际需求和运行环境等进行调整。

5. “extraData”

为空字符串 "",这里可以存放一些额外的自定义数据,比如节点相关的描述信息等,若无需添加额外信息则为空。

6. “gasLimit”

"0xffffffff" 用于限定每个区块中可消耗的最大 “gas” 量。“gas” 用于衡量在以太坊网络上执行交易或智能合约等操作的计算资源开销,该参数控制了单个区块能容纳的计算资源总量。

7. “nonce”

"0x0000000000000042" 是一个随机数,主要用于挖矿等操作中确保区块哈希的唯一性等,与挖矿过程中的计算相关。

8. “mixhash”

全零的值 0x0000000000000000000000000000000000000000000000000000000000000000 ,在挖矿验证等环节参与计算,与区块哈希等相关,帮助保证区块链的安全性和一致性。

9. “parentHash”

同样全零 0x0000000000000000000000000000000000000000000000000000000000000000 ,代表该私有链创世区块的父区块哈希(创世区块无父区块,所以是全零),用于构建区块链的链式结构基础。

10. “timestamp”

"0x00" 表示创世区块的时间戳,通常初始设为 0,后续区块的时间戳会依次递增,以此来体现区块产生的时间顺序等信息。

总体来说,这份 genesis.json 文件为以太坊私有链定义好了初始状态的各项关键参数,后续可基于它使用相关命令(如 geth init 命令)去初始化并启动私有链。

初始化参数作用
chainId唯一标识私有链网络,避免与其他以太坊网络(主网、测试网等)混淆,用于区分不同的区块链网络。
homesteadBlockeip150Block定义对应的以太坊硬分叉升级相关的起始区块高度,用于控制网络协议在私有链中的迭代逻辑,0表示初始就生效。
alloc用于预先分配以太坊账户的初始余额。空对象表示初始没有预分配资金的账户,后续需要自行创建账户获取资金。
coinbase指定挖矿奖励的接收地址,挖到新区块后,奖励的以太币会发送到该地址。
difficulty定义挖矿的难度系数,决定矿工找到符合要求的新区块哈希的难易程度,可根据私有链实际需求和运行环境调整。
extraData可存放一些额外的自定义数据,如节点相关描述信息等。为空字符串时表示无额外信息添加。
gasLimit限定每个区块中可消耗的最大“gas”量。“gas”用于衡量在以太坊网络上执行交易或智能合约等操作的计算资源开销,控制单个区块能容纳的计算资源总量。
nonce用于挖矿等操作中确保区块哈希的唯一性,与挖矿过程中的计算相关。
mixhash在挖矿验证等环节参与计算,与区块哈希等相关,帮助保证区块链的安全性和一致性。
parentHash代表私有链创世区块的父区块哈希(创世区块无父区块,所以初始为全零),用于构建区块链的链式结构基础。
timestamp表示创世区块的时间戳,初始设为0,后续区块的时间戳依次递增,用于体现区块产生的时间顺序。

3. 初始化:将创世区块信息写入区块链

  • 准备号创世区块配置文件后,需要初始化区块链,将上面的创世区块信息写入区块链。

  • 准备好目录存放区块链数据
    在这里插入图片描述

  • 执行命令:sudo chmod -R 777 /private_chain,将/private_chain目录及其内部的所有子目录和文件的权限都设置为所有人(所有者、所属组和其他用户)都具有读、写和执行权限。
    在这里插入图片描述

  • 执行命令:cd /private_chain
    在这里插入图片描述

  • 执行命令:sudo geth --datadir nodedata init genesis.json
    在这里插入图片描述

  • 第一次执行,报一个错误,第二次执行就OK,看到Successfully wrote genesis state,表明初始化成功。

  • 查看私有链目录结构,执行命令:sudo tree /private_chain
    在这里插入图片描述

/private_chain
├── genesis.json
└── nodedata
    ├── geth
    │   ├── chaindata
    │   │   ├── 000004.sst
    │   │   ├── 000008.log
    │   │   ├── ancient
    │   │   │   ├── chain
    │   │   │   │   ├── bodies.0000.cdat
    │   │   │   │   ├── bodies.cidx
    │   │   │   │   ├── bodies.meta
    │   │   │   │   ├── diffs.0000.rdat
    │   │   │   │   ├── diffs.meta
    │   │   │   │   ├── diffs.ridx
    │   │   │   │   ├── FLOCK
    │   │   │   │   ├── hashes.0000.rdat
    │   │   │   │   ├── hashes.meta
    │   │   │   │   ├── hashes.ridx
    │   │   │   │   ├── headers.0000.cdat
    │   │   │   │   ├── headers.cidx
    │   │   │   │   ├── headers.meta
    │   │   │   │   ├── receipts.0000.cdat
    │   │   │   │   ├── receipts.cidx
    │   │   │   │   └── receipts.meta
    │   │   │   └── state
    │   │   │       ├── account.data.0000.cdat
    │   │   │       ├── account.data.cidx
    │   │   │       ├── account.data.meta
    │   │   │       ├── account.index.0000.cdat
    │   │   │       ├── account.index.cidx
    │   │   │       ├── account.index.meta
    │   │   │       ├── FLOCK
    │   │   │       ├── history.meta.0000.rdat
    │   │   │       ├── history.meta.meta
    │   │   │       ├── history.meta.ridx
    │   │   │       ├── storage.data.0000.cdat
    │   │   │       ├── storage.data.cidx
    │   │   │       ├── storage.data.meta
    │   │   │       ├── storage.index.0000.cdat
    │   │   │       ├── storage.index.cidx
    │   │   │       └── storage.index.meta
    │   │   ├── CURRENT
    │   │   ├── LOCK
    │   │   ├── MANIFEST-000006
    │   │   ├── MANIFEST-000009
    │   │   └── OPTIONS-000010
    │   ├── LOCK
    │   └── nodekey
    └── keystore

7 directories, 42 files
  • geth/chaindata中存放的是区块数据,keystore中存放的是账户数据

4. 启动私有节点

5. Geth的JavaScript控制台操作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/939850.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

国标GB28181平台EasyGBS在安防视频监控中的信号传输(电源/视频/音频)特性及差异

在现代安防视频监控系统中,国标GB28181协议作为公共安全视频监控联网系统的国家标准,该协议不仅规范了视频监控系统的信息传输、交换和控制技术要求,还为不同厂商设备之间的互联互通提供了统一的框架。EasyGBS平台基于GB28181协议&#xff0c…

详细解读TISAX认证的意义

详细解读TISAX认证的意义,犹如揭开信息安全领域的一颗璀璨明珠,它不仅代表了企业在信息安全管理方面的卓越成就,更是通往全球汽车供应链信任桥梁的关键一环。TISAX,即“Trusted Information Security Assessment Exchange”&#…

Pytorch | 从零构建AlexNet对CIFAR10进行分类

Pytorch | 从零构建AlexNet对CIFAR10进行分类 CIFAR10数据集AlexNet网络结构技术创新点性能表现影响和意义 AlexNet结构代码详解结构代码代码详解特征提取层 self.features分类部分self.classifier前向传播forward 训练过程和测试结果代码汇总alexnet.pytrain.pytest.py CIFAR1…

初学stm32 --- 系统时钟配置

众所周知,时钟系统是 CPU 的脉搏,就像人的心跳一样。所以时钟系统的重要性就不言而喻了。 STM32 的时钟系统比较复杂,不像简单的 51 单片机一个系统时钟就可以解决一切。于是有人要问,采用一个系统时钟不是很简单吗?为…

进程间通信方式---System V IPC信号量

进程间通信方式—System V IPC信号量 文章目录 进程间通信方式---System V IPC信号量信号量1.信号量原语2.semget 系统调用参数返回值 3.semop 系统调用参数返回值 4.semctl 系统调用5.特殊键值 IPC_PRIVATE6.信号量实现进程间通信1. 数据结构定义2. 信号量操作相关部分3. 生产…

深入理解Kafka:核心设计与实践原理读书笔记

目录 初识Kafka基本概念安装与配置ZooKeeper安装与配置Kafka的安装与配置 生产与消费服务端参数配置 生产者客户端开发消息对象 ProducerRecord必要的参数配置发送消息序列化分区器生产者拦截器 原理分析整体架构元数据的更新 重要的生产者参数acksmax.request.sizeretries和re…

electron 顶部的元素点不中,点击事件不生效

electron 顶部的元素点不中,点击事件不生效

Excel设置生日自动智能提醒,公式可直接套用!

大家好,我是小鱼。 今天跟大家分享一个WPS表格中根据出生日期,设置生日提醒,并且根据距离生日天数自动标记数据颜色。简单又实用,一个公式轻松搞定! 接下来我们先学习一下需要使用到的函数,然后再根据实例让…

全域数据集成平台ETL

全域数据集成平台ETL Restcloud 工作原理 RestCloud数据集成平台采用SpringCloud微服务架构技术开发,底层基于纯Java语言采用前后端分离架构,前端采用React技术进行开发。 RestCloud数据集成平台是基于数据流工作流引擎的架构进行研发的,底…

Spring(一)---IOC(控制权反转)

目录 引入 1.什么叫IOC(Inversion of Control)控制权反转? 2.什么叫AOP(Aspect-Oriented Programming)面向切面编程(涉及Java代理)? 3.简单谈一下Java怎么实现ICO? Spring框架的介绍 1. Spring框架的概述 2. Spring框架的优点 Spring IOC容器介绍…

【GESP】C++二级考试大纲知识点梳理, (4)流程图

GESP C二级官方考试大纲中,共有9条考点,本文针对C(4)号知识点进行总结梳理。 (4)了解流程图的概念及基本表示符号,掌握绘制流程图的方法,能正确使用流程图描述程序设计的三种基本结构…

scala中正则表达式的使用

正则表达式: 基本概念 在 Scala 中,正则表达式是用于处理文本模式匹配的强大工具。它通过java.util.regex.Pattern和java.util.regex.Matcher这两个 Java 类来实现(因为 Scala 运行在 Java 虚拟机上,可以无缝使用 Java 类库&…

使用VSCode Debugger 调试 React项目

一般我们调试代码时,用的最多的应该就是console.log方式了,还有的是使用Chrome DevTools 通过在对应的 sourcemap代码位置打断点进行调试,除了上面两种方式外还有一种更好用的调试方式: VSCode Debugger。 VSCode Debugger可以直…

微信小程序实现上传图片自定义水印功能、放大缩小旋转删除、自定义字号颜色位置、图片导出下载、图像预览裁剪、Canvas绘制 开箱即用

目录 功能实现画布绘制上传图片并渲染图片操作事件添加文字水印canvas解析微信小程序中 canvas 的应用场景canvas 与 2D 上下文、webgl 上下文的关系图像的加载与绘制总结说明功能实现 画布绘制 在wxml添加canvas标签并在在当前页面的 data 对象中,创建一个 Canvas 上下文(c…

用.Net Core框架创建一个Web API接口服务器

我们选择一个Web Api类型的项目创建一个解决方案为解决方案取一个名称我们这里选择的是。Net 8.0框架 注意,需要勾选的项。 我们找到appsetting.json配置文件 appsettings.json配置文件内容如下 {"Logging": {"LogLevel": {"Default&quo…

[创业之路-199]:《华为战略管理法-DSTE实战体系》- 3 - 价值转移理论与利润区理论

目录 一、价值转移理论 1.1. 什么是价值? 1.2. 什么价值创造 (1)、定义 (2)、影响价值创造的因素 (3)、价值创造的三个过程 (4)、价值创造的实践 (5&…

【阅读记录-章节6】Build a Large Language Model (From Scratch)

文章目录 6. Fine-tuning for classification6.1 Different categories of fine-tuning6.2 Preparing the dataset第一步:下载并解压数据集第二步:检查类别标签分布第三步:创建平衡数据集第四步:数据集拆分 6.3 Creating data loa…

[搜广推]王树森推荐系统——矩阵补充最近邻查找

矩阵补充(工业界不常用) 模型结构 embedding可以把 用户ID 或者 物品ID 映射成向量输入用户ID 和 物品ID,输出向量的内积(一个实数),内积越大说明用户对这个物品越感兴趣模型中的两个embedding层不共享参…

【优选算法篇】揭秘快速排序:分治算法如何突破性能瓶颈

文章目录 须知 💬 欢迎讨论:如果你在学习过程中有任何问题或想法,欢迎在评论区留言,我们一起交流学习。你的支持是我继续创作的动力! 👍 点赞、收藏与分享:觉得这篇文章对你有帮助吗&#xff1…

建投数据与腾讯云数据库TDSQL完成产品兼容性互认证

近日,经与腾讯云联合测试,建投数据自主研发的人力资源信息管理系统V3.0、招聘管理系统V3.0、绩效管理系统V2.0、培训管理系统V3.0通过腾讯云数据库TDSQL的技术认证,符合腾讯企业标准的要求,产品兼容性良好,性能卓越。 …