搭建私有链

news2025/4/7 13:00:18

文章目录

  • 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控制台操作

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

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

相关文章

游戏AI实现-寻路算法(BFS)

广度优先搜索算法(英语:Breadth-first search,缩写:BFS),又译作宽度优先搜索,或横向优先搜索,是一种图形搜索算法。 寻路地图搭建: 游戏AI实现-寻路地图搭建-CSDN博客 …

k-均值聚类(k-Means Clustering)详解

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

复合机器人为生产提供精准的建议和决策支持

在现代化生产的浪潮中,智能复合机器人以其卓越的性能和高度智能化特点,正成为保障生产安全与可靠性的重要力量。 智能复合机器人具备精确的感知、判断和决策能力,能够在复杂的生产环境中自主导航、精确操作,避免了人为因素可能导致…

AI前沿分析:Github Copilot 推出免费版本,AI + 编程更高效!

名人说:莫听穿林打叶声,何妨吟啸且徐行。—— 苏轼 Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、GitHub Copilot:AI编程的“革命性”助力二、免费版本上线:AI编程的普及时代&…

git使用教程(超详细)-透彻理解git

一.核心基础 核心概念有六个 首先请把与svn有关的一切概念暂时从你的脑海中移除掉,我们要重新认识本文所讲述的所有概念。这非常重要。 1.worktree worktree是一个目录,你在这里对文件进行增加、删除、修改。也就是我们常说的工作区。在git中worktree…

【优选算法---分治】快速排序三路划分(颜色分类、快速排序、数组第K大的元素、数组中最小的K个元素)

一、颜色分类 题目链接: 75. 颜色分类 - 力扣(LeetCode) 题目介绍: 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地 对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序…

第六周作业

完成的作业: 1、自建yum仓库,分别为网络源和本地源 执行步骤:将光盘挂载到目录设置为本地源。 再将光盘挂载到http目录下实现ip访问,实现网络源。 编辑/etc/yum.repos.d/rocky.repo修改源 [base] namecd baseurlfile:///mnt/cd/…

PHP木马编写

一、最简单的一句话木马 <?php eval($_REQUEST[cmd]); ?> 1. <?php 和 ?> <?php 和 ?> 是 PHP 代码的开始和结束标记&#xff0c;表示 PHP 代码块的范围。 2. eval() eval() 是 PHP 中的一个内建函数&#xff0c;用来执行字符串类型的 PHP 代码。…

面试题整理3----nc命令的常见用法

面试题整理3----nc命令的常见用法 1. NC是什么2. NC的常用参数2.1 开启指定端口TCP监听(-l小写的L)2.2 测试端口是否能访问(-v)2.3 开启指定端口UDP监听(-u)2.4 端口扫描(-z)2.5 指定超时时间(-w)2.6 指定本地端口号连接(-p)2.7 指定的命令(-e) 1. NC是什么 nc&#xff08;Net…

智源大模型通用算子库FlagGems四大能力升级 持续赋能AI系统开源生态

FlagGems是由智源研究院于2024年6月推出的面向多种AI芯片的开源大模型通用算子库。FlagGems使用Triton语言开发&#xff0c;在Triton生态开源开放的基础上&#xff0c;为多种AI芯片提供开源、统一、高效的算子层生态接入方案。FlagGems沿着统一的中间语言、统一的算子接口和统一…

每天40分玩转Django:Django部署

Django部署 一、今日学习内容概述 学习模块重要程度主要内容生产环境配置⭐⭐⭐⭐⭐settings配置、环境变量WSGI服务器⭐⭐⭐⭐⭐Gunicorn配置、性能优化Nginx配置⭐⭐⭐⭐反向代理、静态文件安全设置⭐⭐⭐⭐⭐SSL证书、安全选项 二、生产环境配置 2.1 项目结构调整 mypr…

JDK21执行java -jar xxx.jar 文件时 “An unexpected error occurred” 问题处理

背景介绍&#xff1a;因langchain4j最新版本&#xff08;>0.36.0&#xff09;&#xff08;Min JDK version has been upgraded to 17&#xff09;需JDK17起&#xff0c;故直接使用Amazon Corretto JDK 21作为基础镜像。 在使用 JDK21 进行开发或运行相关应用时&#xff0c;有…

人工智能:人机交互和用户体验:相关学点、两者关系、未来趋势

目录 相关学点 HCI 与 UX 的关系 当前趋势和未来展望 人机交互&#xff08;Human-Computer Interaction, HCI&#xff09;和用户体验&#xff08;User Experience, UX&#xff09;是现代设计和工程领域的重要概念&#xff0c;尤其在软件开发、网站设计和产品设计中起着关键作…

docker(wsl)命令 帮助文档

WSL wsl使用教程 wsl -l -v 列出所有已安装的 Linux 发行版 wsl -t Ubuntu-22.04 --shutdown 关闭所有正在运行的WSL发行版。如果你只想关闭特定的发行版 wsl -d Ubuntu-22.04 登录到Ubuntu环境 wsl --list --running 查看正在wsl中运行的linux发行版 wsl --unregister (系统名…

2024年09月机器人一级理论真题答案及解析

一、单选题 1、如图&#xff0c;下列哪个选项是机器人? &#xff08; &#xff09; A、a B、b C、c D、d 解析&#xff1a; 根据提供的图片和选项&#xff0c;选项B&#xff08;b&#xff09;与图片中显示的机器人外观相符&#xff0c;因此B是正确答案。 2、智能机器人属…

Web开发 -前端部分-CSS

CSS CSS&#xff08;Cascading Style Sheet&#xff09;:层叠样式表&#xff0c;用于控制页面的样式&#xff08;表现&#xff09;。 一 基础知识 1 标题格式 标题格式一&#xff1a; 行内样式 <!DOCTYPE html> <html lang"en"><head><meta…

【数据集】车内视角拍摄道路路面缺陷数据集1075张3类标签YOLO+VOC格式

数据集格式&#xff1a;VOC格式YOLO格式 压缩包内含&#xff1a;3个文件夹&#xff0c;分别存储图片、xml、txt文件 JPEGImages文件夹中jpg图片总计&#xff1a;1075 Annotations文件夹中xml文件总计&#xff1a;1075 labels文件夹中txt文件总计&#xff1a;1075 标签种类数&am…

vue3使用axios请求接口,先报错301,然后报错404

一、问题描述 在开发项目需求的时候&#xff0c;碰到一个奇怪的错误&#xff0c;先报错301&#xff0c;然后报错404&#xff0c;如上图所示。但是项目的其他接口请求都是正常的。 二、错误原因及解决方法 接口url的末尾缺少斜杠 /&#xff0c;加上就好了。 原url&#xff1a;…

当我用影刀AI Power做了一个旅游攻略小助手

在线体验地址&#xff1a;旅游攻略小助手https://power.yingdao.com/assistant/ca1dfe1c-9451-450e-a5f1-d270e938a3ad/share 运行效果图展示&#xff1a; 话不多说一起看下效果图&#xff1a; 智能体的截图&#xff1a; 工作流截图&#xff1a; 搭建逻辑&#xff1a; 其实这…

.NET 技术 | 调用系统API创建Windows服务

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…