搭建私有链

文章目录

  • 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└── keystore7 directories, 42 files
  • geth/chaindata中存放的是区块数据,keystore中存放的是账户数据

4. 启动私有节点

5. Geth的JavaScript控制台操作

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI Alignment: A Comprehensive Survey---治理

治理 除了技术解决方案之外,治理(规则的制定和执行)对于确保人工智能系统的安全开发和部署也是必不可少的。在本节中,我们将通过探索人工智能治理的作用、利益相关者在治理人工智能方面的功能和关系以及有效人工智能治理面临的若干…

CNN、RNN、LSTM和Transformer之间的区别和联系

文章目录 CNN、RNN、LSTM和Transformer之间的区别和联系前言CNN(卷积神经网络)RNN(循环神经网络)LSTM(长短期记忆网络)Transformer四者之间的联系与区别Yolo算法简介Yolo和CNN的关系YOLO各版本 CNN、RNN、L…

深度学习之超分辨率算法——FRCNN

– 对之前SRCNN算法的改进 输出层采用转置卷积层放大尺寸,这样可以直接将低分辨率图片输入模型中,解决了输入尺度问题。改变特征维数,使用更小的卷积核和使用更多的映射层。卷积核更小,加入了更多的激活层。共享其中的映射层&…

小程序UI自动化测试实践:Minium+PageObject !

小程序架构上分为渲染层和逻辑层,尽管各平台的运行环境十分相似,但是还是有些许的区别(如下图),比如说JavaScript 语法和 API 支持不一致,WXSS 渲染表现也有不同,所以不论是手工测试&#xff0c…

堆的深度剖析及使用

目录 1.堆的创建1.1初始化1.2销毁 2.堆的使用2.1数据插入2.2堆顶元素2.3数据删除 3.堆的难点3.1向上调整3.1.1视频分析向上调整3.1.2 代码分析 3.2向下调整3.2.1视频分析向下调整3.2.2代码分析 1.堆的创建 堆的物理储存方式其实是一个数组,而逻辑储存方式其实是一个…

Hu矩原理 | cv2中基于Hu矩计算图像轮廓相似度差异的函数cv2.matchShapes【小白记笔记】

Hu 矩(Hu Moments) 是一种用于描述轮廓形状的 不变特征。它基于图像的矩提取,经过数学变换得到 7 个不变矩,这些不变矩在图像 平移、旋转和缩放等几何变换下保持不变,适合用来衡量轮廓或形状的相似度差异。 1、图像矩…

计算无人机俯拍图像的地面采样距离(GSD)矩阵

引言 在无人机遥感、测绘和精细农业等领域,地面采样距离(Ground Sampling Distance,简称 GSD)是一个非常重要的指标。GSD 是指图像中每个像素在地面上实际代表的物理距离,通常以米或厘米为单位。GSD 决定了图像的空间…

浅谈怎样系统的准备前端面试

前言 创业梦碎,回归现实,7 月底毅然裸辞,苦战两个月,拿到了美团和字节跳动的 offer,这算是从业以来第一次真正意义的面试,遇到蛮多问题,比如一开始具体的面试过程我都不懂,基本一直是…

2009 ~ 2019 年 408【数据结构】大题解析

2009 年 讲解视频推荐:【BOK408真题讲解-2009年(催更就退网版)】 1. 图的应用(10’) 带权图(权值非负, 表示边连接的两顶点间的距离)的最短路径问题是找出从初始顶点到目标顶点之间…

时空AI赋能低空智能科技创新

随着人工智能技术的不断进步,时空人工智能(Spatio-Temporal AI,简称时空AI)正在逐渐成为推动低空经济发展的新引擎。时空AI结合了地理空间智能、城市空间智能和时空大数据智能,为低空智能科技创新提供了强大的数据支持…

Python读取Excel批量写入到PPT生成词卡

一、问题的提出 有网友想把Excel表中的三列数据,分别是:单词、音标和释义分别写入到PPT当中,每一张PPT写一个单词的内容。这种批量操作是python的强项,尤其是在办公领域,它能较好地解放双手,读取Excel表后…

Proteus(8.15)仿真下载安装过程(附详细安装过程图)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、Proteus是什么? 二、下载链接 三、下安装步骤 1.解压,有键管理员运行 2.点击Next,进行下一步 3.勾选I accept…&#…

动态导出word文件支持转pdf

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、功能说明二、使用步骤1.controller2.工具类 DocumentUtil 导出样式 前言 提示:这里可以添加本文要记录的大概内容: 例如&#xff…

紧固件设计之——开槽六角头防脱出杆螺栓仿真APP

按照产品形态分类,紧固件通常包括以下12类:螺栓、螺柱、螺钉、螺母、自攻螺钉、木螺钉、垫圈、挡圈、销、铆钉、焊钉、组合件与连接副,是一类用于连接和固定各种构件和零部件的重要机械零件,可确保机械装置或设备结构的牢固和稳定…

mysql中与并发相关的问题?

今天我们来聊聊 MySQL 中与并发相关的一些问题。作为一名资深 Python 开发工程师,我觉得这些问题不仅关乎数据库的稳定性和数据的一致性,更与我们的代码实现和业务逻辑密切相关。 尤其是在高并发环境下,如何保证数据的一致性,如何…

使用k6进行kafka负载测试

1.安装环境 kafka环境 参考Docker搭建kafka环境-CSDN博客 xk6-kafka环境 ./xk6 build --with github.com/mostafa/xk6-kafkalatest 查看安装情况 2.编写脚本 test_kafka.js // Either import the module object import * as kafka from "k6/x/kafka";// Or in…

[机器学习]XGBoost(3)——确定树的结构

XGBoost的目标函数详见[机器学习]XGBoost(2)——目标函数(公式详解) 确定树的结构 之前在关于目标函数的计算中,均假设树的结构是确定的,但实际上,当划分条件不同时,叶子节点包含的…

springboot444新冠物资管理系统的设计与实现(论文+源码)_kaic

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装新冠物资管理系统软件来发挥其高效地信息处理的作用&#x…

Javascript-web API-day02

文章目录 01-事件监听02-点击关闭广告03-随机点名案例04-鼠标经过或离开事件05-可点击的轮播图06-小米搜索框07-键盘类型事件08-键盘事件-发布评论案例09-focus选择器10-评论回车发布11-事件对象12-trim方法13-环境对象14-回调函数15-tab栏切换 01-事件监听 <!DOCTYPE html…

使用xjar 对Spring-Boot JAR 包加密运行

1 Xjar 介绍 Spring Boot JAR 安全加密运行工具&#xff0c;同时支持的原生JAR。 基于对JAR包内资源的加密以及拓展ClassLoader来构建的一套程序加密启动&#xff0c;动态解密运行的方案&#xff0c;避免源码泄露或反编译。 功能特性 无需侵入代码&#xff0c;只需要把编译好的…