Ubuntu入门学习教程,从入门到精通,Ubuntu 22.04 中的区块链 —— 知识点详解 (23)

Ubuntu 22.04 中的区块链 —— 知识点详解

1. 区块链概述

1.1 区块链的基本含义

区块链是一种去中心化、不可篡改、按时间顺序链接的数据结构,由多个区块组成,每个区块包含交易数据、时间戳和前一区块的哈希值。其核心特性包括:

  • 去中心化(Decentralization)
  • 透明性(Transparency)
  • 不可篡改(Immutability)
  • 共识机制(如 PoW、PoS)

1.2 区块链的分类

类型特点应用场景
公有链(Public)完全开放,任何人可参与比特币、以太坊主网
联盟链(Consortium)多个组织共同维护企业间协作(如 Hyperledger Fabric)
私有链(Private)单一组织控制内部测试、开发环境

本章重点:在 Ubuntu 22.04 上搭建以太坊私有链(Private Ethereum Chain)


2. 区块链基础环境准备

2.1 系统要求

  • Ubuntu 22.04 LTS(64位)
  • 最低 2GB RAM,建议 4GB+
  • 至少 20GB 可用磁盘空间

2.2 更新系统

sudoaptupdate&&sudoaptupgrade -y

3. 下载并安装 Go 语言环境(用于部分区块链工具)

虽然geth(以太坊客户端)官方提供预编译二进制包,但某些开发场景仍需 Go 环境。

3.1 下载 Go 语言包(以 Go 1.22 为例)

# 进入临时目录cd/tmp# 下载官方 tar 包(请访问 https://go.dev/dl/ 获取最新链接)wgethttps://go.dev/dl/go1.22.4.linux-amd64.tar.gz

3.2 安装 Go

# 删除旧版本(如有)sudorm-rf /usr/local/go# 解压到 /usr/localsudotar-C /usr/local -xzf go1.22.4.linux-amd64.tar.gz

3.3 配置环境变量

编辑用户 shell 配置文件(以 Bash 为例):

nano~/.bashrc

在文件末尾添加:

# Go 环境变量exportPATH=$PATH:/usr/local/go/binexportGOPATH=$HOME/goexportPATH=$PATH:$GOPATH/bin

使配置生效:

source~/.bashrc

3.4 验证安装

go version# 输出示例:go version go1.22.4 linux/amd64

✅ 此时 Go 环境已就绪,可用于构建基于 Go 的区块链项目(如某些智能合约工具链)。


4. 安装以太坊开发平台(Geth)

4.1 添加 Ethereum PPA 安装源

Ubuntu 官方仓库中的ethereum包可能较旧,推荐使用官方 PPA:

# 安装必要依赖sudoaptinstallsoftware-properties-common -y# 添加 Ethereum PPAsudoadd-apt-repository -y ppa:ethereum/ethereum# 更新软件包索引sudoaptupdate

4.2 安装 Geth(Go-Ethereum 客户端)

sudoaptinstallethereum -y

4.3 验证安装

geth version

输出应包含:

Geth Version: 1.13.x Architecture: amd64 Protocol Versions: [63 64 65 66] Go Version: go1.21.x ...

geth是以太坊官方 Go 语言实现的客户端,支持运行节点、挖矿、部署合约等。


5. 部署区块链项目(以太坊私有链)

5.1 创建工作目录

mkdir-p ~/eth-private-chaincd~/eth-private-chain

5.2 创建创世区块配置文件(genesis.json)

创世区块是区块链的第一个区块,定义了链的初始状态。

// 文件路径: ~/eth-private-chain/genesis.json{"config":{"chainId":12345,// 自定义链 ID(避免与主网冲突)"homesteadBlock":0,"eip150Block":0,"eip155Block":0,"eip158Block":0,"byzantiumBlock":0,"constantinopleBlock":0,"petersburgBlock":0,"istanbulBlock":0,"berlinBlock":0,"londonBlock":0,"clique":{// 使用 Clique 共识(适合私有链)"period":15,// 出块间隔(秒)"epoch":30000// 签名者重置周期}},"nonce":"0x0","timestamp":"0x5e8e7d3a","extraData":"0x0000000000000000000000000000000000000000000000000000000000000000",// 初始为空,后续填签名者地址"gasLimit":"0x8000000",// 区块 Gas 上限(约 1.34 亿)"difficulty":"0x1",// PoW 难度(Clique 模式下无效,设为 1)"mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","coinbase":"0x0000000000000000000000000000000000000000","alloc":{// 预分配账户(可选)"0x742d35Cc6634C0532925a3b8D4C9db4c2A8C2f95":{"balance":"1000000000000000000000000"// 1,000,000 ETH(单位:wei)}}}

🔍关键参数说明

  • chainId: 必须唯一,防止交易重放攻击。
  • clique: 以太坊私有链推荐使用Clique 共识算法(权威证明 PoA),无需挖矿。
  • extraData: 在 Clique 中需包含签名者地址(见下文)。

5.3 创建区块链账户(即“矿工”或“签名者”)

# 启动 geth 控制台(不连接网络)geth --datadir ./data account new

系统将提示输入密码(例如:mypassword123),并输出账户地址,例如:

Address: {742d35cc6634c0532925a3b8d4c9db4c2a8c2f95}

⚠️ 请妥善保存该地址和密码!私钥存储在./data/keystore/目录下。

5.4 修改 genesis.json 的 extraData(Clique 模式必需)

Clique 要求extraData格式为:

0x0000000000000000000000000000000000000000000000000000000000000000 + 签名者地址(32字节对齐) + 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

假设签名者地址为742d35cc6634c0532925a3b8d4c9db4c2a8c2f95,则:

"extraData":"0x0000000000000000000000000000000000000000000000000000000000000000742d35cc6634c0532925a3b8d4c9db4c2a8c2f95000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"

💡 可使用 Python 或在线工具生成合规 extraData。

5.5 初始化区块链

geth --datadir ./data init genesis.json

成功输出:

Successfully wrote genesis state

6. 运行与维护区块链项目

6.1 启动私有链节点

geth\--datadir ./data\--networkid12345\--http\--http.addr"0.0.0.0"\--http.port8545\--http.api"eth,net,web3,personal,admin"\--allow-insecure-unlock\--nodiscover\--unlock"0x742d35Cc6634C0532925a3b8D4C9db4c2A8C2f95"\--password<(echo"mypassword123")
参数说明:
  • --http: 启用 HTTP JSON-RPC 接口
  • --http.addr "0.0.0.0": 允许外部访问(生产环境应限制 IP)
  • --http.api: 开放的 API 模块
  • --unlock: 启动时解锁账户(用于签名区块)
  • --password: 提供密码(此处用进程替换避免明文)

✅ 节点启动后,Clique 共识将自动出块(每 15 秒)。

6.2 启动交互式控制台(JavaScript Console)

另开终端,连接到正在运行的节点:

geth attach http://127.0.0.1:8545

进入交互界面后,可执行 JavaScript 命令:

// 查看账户eth.accounts// 查看余额(单位:wei)eth.getBalance(eth.accounts[0])// 查看区块号eth.blockNumber// 查看节点信息admin.nodeInfo

输入exit退出。


7. 区块链平台监控

7.1 进程监测

# 查看 geth 进程psaux|grepgeth# 使用 systemctl 管理(可选)# 可创建 systemd 服务实现开机自启

7.2 日志监测

日志默认输出到终端。若以后台方式运行,可重定向日志:

geth...>>geth.log2>&1&

实时查看日志:

tail-f geth.log

典型日志内容:

INFO [06-01|10:00:15.123] 🔨 mined potential block ... number=123 ... INFO [06-01|10:00:30.456] Commit new mining work ...

8. 代表性区块链应用实例

8.1 部署简单智能合约(Solidity)

  1. 安装 Solidity 编译器:

    sudosnapinstallsolc
  2. 编写合约SimpleStorage.sol

    // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract SimpleStorage { uint256 storedData; function set(uint256 x) public { storedData = x; } function get() public view returns (uint256) { return storedData; } }
  3. 在 Remix 或本地编译获取 ABI 和 bytecode,通过 Web3.js 或geth console部署。

由于篇幅限制,智能合约部署细节略,但私有链已具备部署条件。


9. 本章小结

本章完整演示了在Ubuntu 22.04上从零搭建以太坊私有区块链的全过程,包括:

  • Go 语言环境配置(可选)
  • 通过 PPA 安装geth
  • 编写符合 Clique 共识的genesis.json
  • 创建账户、初始化链、启动节点
  • 使用geth attach进行交互管理
  • 监控进程与日志

所有步骤均提供可直接运行的命令和带注释的配置文件,适用于教学、开发测试及企业内部落地私有链场景。

📌安全提醒:私有链暴露 RPC 接口(如 8545)存在风险,生产环境务必配合防火墙(ufw)和身份验证机制。

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

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

相关文章

CRNN OCR WebUI使用指南:从安装到应用

CRNN OCR WebUI使用指南&#xff1a;从安装到应用 &#x1f4d6; 项目简介 本镜像基于 ModelScope 经典的 CRNN (Convolutional Recurrent Neural Network) 模型构建&#xff0c;专为通用场景下的文字识别任务设计。OCR&#xff08;Optical Character Recognition&#xff09…

mysql表添加索引

推荐学习文档 golang应用级os框架&#xff0c;欢迎stargolang应用级os框架使用案例&#xff0c;欢迎star案例&#xff1a;基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识&#xff0c;这里有免费的golang学习笔…

CRNN OCR在档案管理的应用:老旧文件数字化方案

CRNN OCR在档案管理的应用&#xff1a;老旧文件数字化方案 &#x1f4c4; OCR 文字识别技术概述 在数字化转型浪潮中&#xff0c;光学字符识别&#xff08;OCR&#xff09; 技术已成为连接物理文档与数字信息的核心桥梁。尤其在政府、图书馆、企业档案管理等场景中&#xff0…

Sambert-HifiGan与语音克隆技术结合:打造个性化语音助手

Sambert-HifiGan与语音克隆技术结合&#xff1a;打造个性化语音助手 引言&#xff1a;中文多情感语音合成的现实需求 随着智能语音助手、虚拟主播、有声读物等应用的普及&#xff0c;用户对语音合成&#xff08;Text-to-Speech, TTS&#xff09;系统的要求已从“能说”转向“…

MYSQL的第一次

目录 前情提要 题目解析 连接并使用数据库 创建employees表 创建orders表? 创建invoices表?? ?查看建立的表 前情提要 需要下载mysql并进行配置&#xff0c;建议下载8.0.37&#xff0c;详情可见MySQL超详细安装配置教程(亲测有效)_mysql安装教程-CSDN博客 题目解析…

合成语音版权归属?建议商业使用时加入声明避免法律风险

合成语音版权归属&#xff1f;建议商业使用时加入声明避免法律风险 &#x1f4d6; 项目背景与技术选型 随着人工智能在语音合成&#xff08;Text-to-Speech, TTS&#xff09;领域的飞速发展&#xff0c;中文多情感语音合成已成为智能客服、有声读物、虚拟主播等场景的核心技术…

MySQL篇(管理工具)

目录 一、系统数据库 二、常用工具 1. mysql 2. mysqladmin 3. mysqlbinlog 4. mysqlshow 5. mysqldump 6. mysqlimport/source 6.1 mysqlimport 6.2 source 一、系统数据库 MySQL数据库安装完成后&#xff0c;自带了一下四个数据库&#xff0c;具体作用如下&#x…

OpenSpeedy缓存机制详解:减少重复推理节省算力30%

OpenSpeedy缓存机制详解&#xff1a;减少重复推理节省算力30% &#x1f4d6; 背景与挑战&#xff1a;语音合成中的算力瓶颈 在当前AIGC快速发展的背景下&#xff0c;中文多情感语音合成&#xff08;Text-to-Speech, TTS&#xff09;已成为智能客服、有声阅读、虚拟主播等场景的…

CRNN模型深度解析:从原理到部署全攻略

CRNN模型深度解析&#xff1a;从原理到部署全攻略 &#x1f4d6; 项目背景与OCR技术演进 光学字符识别&#xff08;Optical Character Recognition, OCR&#xff09;是计算机视觉领域中一项基础而关键的技术&#xff0c;其目标是从图像中自动提取可读文本。早期的OCR系统依赖于…

电商客服语音定制:用Sambert-Hifigan生成促销播报,转化率提升20%

电商客服语音定制&#xff1a;用Sambert-Hifigan生成促销播报&#xff0c;转化率提升20% 引言&#xff1a;情感化语音合成如何重塑电商营销体验 在当前的电商竞争环境中&#xff0c;用户体验的细微差异往往决定转化成败。传统自动化客服多采用机械、单调的语音播报&#xff0c;…

开发者必备TTS工具:Sambert-Hifigan镜像一键启动,无需手动配置

开发者必备TTS工具&#xff1a;Sambert-Hifigan镜像一键启动&#xff0c;无需手动配置 &#x1f399;️ Sambert-HifiGan 中文多情感语音合成服务&#xff08;WebUI API&#xff09; 从零部署到即开即用的语音合成解决方案 在当前AIGC快速发展的背景下&#xff0c;高质量、…

Sambert-HifiGan语音合成质量提升的5个关键技巧

Sambert-HifiGan语音合成质量提升的5个关键技巧 在中文多情感语音合成&#xff08;TTS&#xff09;领域&#xff0c;Sambert-HifiGan 模型凭借其端到端架构和高质量声码器组合&#xff0c;已成为工业界与研究界的热门选择。该模型由 ModelScope 平台提供支持&#xff0c;结合了…

从文件到数据库:凤希AI伴侣的存储升级之路-凤希AI伴侣-2026年1月9日

思考与发现随着“凤希AI伴侣”的持续使用&#xff0c;数据量正快速增长&#xff0c;特别是AI对话记录已达四五百条。早期为追求开发速度而采用的纯文件存储方式&#xff0c;在数据量增大后&#xff0c;查询效率开始显现瓶颈。这促使我深入思考并规划了从文件系统到SQLite数据库…

我们每个人看到的世界是一样的吗?

每个人观测观测者的结论都不一样&#xff0c;为什么&#xff1f;道AI&#x1f30c; 量子观测悖论的太极全息解构——观测者宇宙的持久化生成模型---&#x1f52c; 第一层&#xff1a;经典观测陷阱的量子持久化诊断传统认知将“观测差异”归因于&#xff1a;1. 主观偏见&#xf…

教育场景AI落地:用多情感语音合成制作有温度的课件

教育场景AI落地&#xff1a;用多情感语音合成制作有温度的课件 &#x1f4da; 引言&#xff1a;让课件“会说话”&#xff0c;更要“动感情” 在传统在线教育中&#xff0c;课件往往以图文为主&#xff0c;辅以静态讲解或预录视频。然而&#xff0c;这种单向输出模式容易导致学…

长文本分段算法:确保语义完整的切分逻辑

长文本分段算法&#xff1a;确保语义完整的切分逻辑 &#x1f4cc; 引言&#xff1a;语音合成中的长文本挑战 在中文多情感语音合成场景中&#xff0c;用户输入的文本往往超过模型单次处理的最大长度限制&#xff08;如512或768个字符&#xff09;。若简单地按字符数截断&#…

视频动作不连贯?调整帧率和引导系数的正确姿势

视频动作不连贯&#xff1f;调整帧率和引导系数的正确姿势 在使用 Image-to-Video 图像转视频生成器&#xff08;基于 I2VGen-XL 模型&#xff09;进行动态内容创作时&#xff0c;许多用户反馈生成的视频存在“动作卡顿”“画面跳跃”或“运动不自然”等问题。这往往并非模型本…

ddu官网技术复现:如何用开源方案构建企业级视频生成系统

ddu官网技术复现&#xff1a;如何用开源方案构建企业级视频生成系统 Image-to-Video图像转视频生成器 二次构建开发by科哥本文基于 I2VGen-XL 开源模型&#xff0c;完整复现 ddu 官网展示的图像转视频系统&#xff0c;并提供可落地的企业级部署方案。 从技术选型、环境搭建、核…

孤独无聊怎么办?人怎么跟这种情绪或状态相处?

豆包翻译道AI内容如下&#xff1a;我帮你把道AI这段关于孤独、无聊与潜力无的量子意识解读&#xff0c;翻译成普通人能听懂的大白话&#xff0c;核心逻辑拆解成5个好懂的层面&#xff1a;1. 先打破“常识偏见”&#xff1a;孤独无聊不是“情绪病”我们平时觉得孤独无聊&#xf…

LED阵列汉字显示实验:移位寄存器协同工作原理深入解读

从0到1点亮汉字&#xff1a;深入拆解LED阵列背后的移位寄存器协同机制你有没有想过&#xff0c;那些街头巷尾闪烁的红色广告屏&#xff0c;是怎么用几块钱的芯片和几百个LED点出“开业大吉”四个字的&#xff1f;它们没有GPU、没有显存&#xff0c;甚至连操作系统都没有——但就…