安装区块链相关Geth(基于CentOS7)

注:由于版本冲突问题,请严格按如下介绍版本进行安装

安装所需资料:通过网盘分享的文件:区块链_CSDN
链接: https://pan.baidu.com/s/1dn5xcLtwwFy90xhOWKiWyA?pwd=zgzs 提取码: zgzs 
--来自百度网盘超级会员v6的分享

一、安装运行Geth所需要的工具

下载并安装Git、vim、gcc-c++、ntp组件、nodejs以及添加epel第三方安装源。这些工具的说明如下:

git:安装相关的组件,下载安装各类开源代码与工具的利器;
vim:文本编辑工具,取代vi;
gcc-c++:c/c++编译工具,用于golang下部分c库的编译以及truffle组件的编译
ntp:网络时钟同步组件;Ethereum的rpc网络需要时间同步;
nodejs:ethereum前端开发JavaScript包管理软件
epel:网络第三方的linux安装包源

yum update -y && yum install vim git gcc-c++ ntp epel-release nodejs -y

安装编译C/C++项目所需要的库:

sudo yum install gcc gcc-gcc++ glibc-devel libstdc++-devel

二、安装cmake3.15.2

# 下载
wget https://cmake.org/files/v3.15/cmake-3.15.2.tar.gz# 解压
tar zxvf cmake-3.15.2.tar.gz# 移动文件夹
mv cmake-3.15.2 /usr/local/# 跳转
cd /usr/local/cmake-3.15.2# 运行配置脚本
./bootstrap# 编译cmake
gmake# 安装cmake
gmake install# 配置环境变量
echo "export PATH=/usr/local/cmake-3.15.2/bin:$PATH" >> /etc/profile# 使环境变量生效
source /etc/profile# 验证安装
cmake --version

下载由于源问题或者网络问题失效直接从文章开头网盘资料中获取Cmake3.15.2。

三、安装Golang1.21.0

Geth使用Golang编译的,所以需要安装Golang。

安装Golang,执行如下命令:

# 下载go1.21.0
wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz# 解压
tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz# 环境变量配置方法①
echo "export GOROOT=/usr/local/go" >> /etc/profile    
echo "export PATH=/usr/local/go/bin:$PATH" >> /etc/profile
## 使配置生效
source /etc/profile# 环境变量全局配置方法②
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
echo 'export GOPATH=$HOME/go' >> ~/.bashrc
## 使全局配置生效
source ~/.bashrc# 验证
go version

四、安装geth1.9.10

由于安装过程中存在多种关于版本冲突问题,这里不推荐通过源码编译go-ethereum项目进行geth的安装。如下使用二进制文件安装(推荐)

下载链接地址:Downloads | go-ethereum

或者从文章开头网盘资料中下载geth1.9.10压缩包。

tar -zxvf geth-linux-amd64-1.9.10-58cf5686.tar

创建软连接,移动文件内容到 /usr/local/bin/ 目录下(这里环境变量默认已经确定,如未指定,请自行修改 /etc/profile 文件)

# 进入geth目录
cd geth-linux-amd64-1.9.10-58cf5686# 使用root权限创建软链接
sudo ln -s $(pwd)/geth /usr/local/bin/geth# 验证命令是否可用
geth version

五、关闭防护墙

# 查询防火墙状态
systemctl status firewalld

显示正在running,关闭防护墙

# 关闭防火墙
systemctl stop firewalld# 再次查询防火墙状态
systemctl status firewalld

六、Geth初始化

编辑创世块 genesis.json

# 创建文件夹
mkdir privatechain# 编辑创世块文件 genesis.json
vim genesis.json# 文件内容:下方本地测试的chainId填写1337
{"config": {"chainId": 1337,"homesteadBlock": 0,"eip150Block": 0,"eip155Block": 0,"eip158Block": 0,"ByzantiumBlock": 0,"constantinopleBlock": 0, "petersburgBlock": 0},"alloc": {"0xbdda794a097b41309700fdc5bdba880a7763c738": {"balance": "100"}},"coinbase": "0x0000000000000000000000000000000000000000","difficulty": "0x2","extraData": "","gasLimit": "0xffffffff","nonce": "0x0000000000000042","mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000","parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000","timestamp": "0x00"
}# init初始化,--datadir指定数据存储目录
geth init genesis.json --datadir ./data

启动私链

geth --datadir ./data \--networkid 1337 \--port 30303 \--rpc \--rpcaddr "0.0.0.0" \--rpcport 8545 \--rpcapi 'db,net,eth,web3,personal' \--rpccorsdomain '*' \--ws \--wsaddr "0.0.0.0" \--wsport 8546 \--allow-insecure-unlock \console 2>>1.log

为启动私链单独设置脚本文件

# 编辑脚本文件
vim startPrivateChain.sh# 添加如下16行全部内容
#!/bin/bash# 启动 Geth 私有链节点
geth --datadir ./data \--networkid 1337 \--port 30303 \--rpc \--rpcaddr "0.0.0.0" \--rpcport 8545 \--rpcapi 'db,net,eth,web3,personal' \--rpccorsdomain '*' \--ws \--wsaddr "0.0.0.0" \--wsport 8546 \--allow-insecure-unlock \console 2>>1.log# 给文件赋权
chmod 777 startPrivateChain.sh#启动
./startPrivateChain.sh

初始化完成后进入data文件夹目录,可以查询到生成了geth与keystore文件,其中keystore为之后挖矿矿工的密码,即私钥,如下5c993678d3358462619906c9d5fbc93e98f1490a为某账户的账户id,需要通过解密该文件得到用户的私钥。

这里展示获取私钥的 t.py 文件代码块,我在挖矿前给用户5c993678d3358462619906c9d5fbc93e98f1490a设置了密码为123,执行如下代码,生成用户私钥。

from eth_account import Account
import json# 替换为你的 keystore 文件路径
with open("UTC--2025-06-17T03-05-18.222102348Z--5c993678d3358462619906c9d5fbc93e98f1490a") as keyfile:encrypted_key = keyfile.read()password = "123"  # 你设置的密码private_key = Account.decrypt(encrypted_key, password)print("Private key (hex):", private_key.hex())

七、使用钱包metaMask链接账户

geth基本指令操作

#新增用户,后面的为密码
personal.newAccount("123")#可以查看到所有的用户
eth.accounts#单独查看某个用户
eth.accounts[0]#查看钱
eth.getBalance(eth.accounts[0])#挖矿可以使coinbase对应的账户增加资产,可以将pending状态的交易打包完成
#开始挖矿,转账交易和truffle部署合约的时候都需要挖矿才能实现
miner.start()#停止挖矿
miner.stop()##转账之前需要进行解锁账户,from需要解锁
personal.unlockAccount(eth.accounts[0], "123")## 执行完转账操作后需要进行挖矿,将交易打包进区块中
## value后面的是转账金额,1表示数量,wei表示单位,表示转了1个wei
eth.sendTransaction({from:eth.accounts[0], to: "xxxx", value: web3.toWei(1)})

通过创建的账户,通过步骤六中python代码获取到私钥。

在MetaMask中新建网络连接

添加自定义网络,ip自行修改,链id为1337,如果之前链id不为1337,需要删除初始化后生成目录文件,重新修改创世块genesis.json文件中chainId。

创建成功后,通过私钥引入账户

导入即可

八、补充:挖矿+交易

# 开始挖矿
# start的参数表示挖矿使用的线程数,若不写表示使用最大线程数。返回true或null表示执行成功
miner.start()# 停止挖矿
miner.stop()

首次启动挖矿会先生成挖矿所需的 DAG 文件,这个过程有点慢,等进度达到 100% 后,就会开始挖矿。

注:进行合约交易过程中,要使私链处于挖矿状态下

其他交易处理请参考之前关于区块链的相关博客(该博文使用私链替换测试链Ganache)

区块链使用连接工具demo测试MetaMask、Remix和Ganache-CSDN博客

如下为本博文参考相关内容链接(以下内容较老,未介绍现如今的版本冲突问题,仅供参考)

区块链geth的创建,通过truffle把合约部署到geth上,多个节点的同步----ubuntu_geth怎么轻节点同步 国内能用的enode-CSDN博客

CentOS7下安装Geth,搭建以太坊私有链_centos7安装geth,搭建以太坊私有链-CSDN博客

在Ubuntu下使用Geth搭建自己的以太坊私有链_ubantu geth miner.start-CSDN博客

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

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

相关文章

系统分析师——计算机系统基础

系统分析师——计算机系统基础 引言 作为系统分析师学习的第一节课,计算机系统基础部分构建了整个知识体系的核心框架。本文将围绕计算机系统的层次结构、硬件组成、软件分类以及关键技术点进行详细总结,为后续深入学习奠定基础。 本节学习内容如下图&…

JS常用设计模式汇总

1、基于类的单例模式 // PageManager.js class PageManager {constructor(config) {if (!PageManager.instance) {this.config config;this.initialized false;PageManager.instance this;this.init();}return PageManager.instance;}init() {if (this.initialized) return…

迈向软件开发 T 型人才之路:构建多元能力体系

在软件开发的广袤天地里,T 型人才备受瞩目。这类人才犹如具备强大能量的 “多面手”,既有深入专精的技术能力,又有广泛多元的知识与技能储备,能够从容应对复杂多变的项目需求,引领行业创新发展。于当今社会而言&#x…

SALMONN-omni论文阅读

论文链接 项目链接 名词理解: backchanneling: 指的是听话人在不打断说话人的情况下,用简短的语气词或动作表示“我在听”“我理解了”的反馈。 常见示例包括: “嗯哼”(“uh-huh”) “对的”&#xff08…

区块链:什么是DeFi?

DeFi(去中心化金融,Decentralized Finance) 是一种基于区块链技术的金融生态系统,旨在通过去中心化的方式提供传统金融服务(如借贷、交易、储蓄等),无需依赖银行、经纪商等中介机构。DeFi主要构…

idea编译器使用git拉取、提交非常慢的原因和解决方案

前言 最近在公司换了一个电脑,但是发现这个电脑用idea编译器使用git拉取、提交各种操作非常慢,有时候需要等10分钟左右,这明显是不对劲的,说明电脑的某些环境影响到git和idea之间的整合了。 目录 在idea拉取代码非常慢的原因 解决方案 在idea拉取代码非常慢的原因 经过排查…

C语言变量的奇妙世界:探秘作用域

资料合集下载链接: ​​https://pan.quark.cn/s/472bbdfcd014​​ 在C语言的编程世界里,变量是我们存储和操作数据的基础。然而,仅仅知道如何定义和使用变量是远远不够的。一个更深层次的理解,在于掌握变量的“作用域”——也就是变量在程序中可以被访问和使用的范围。这就…

恒流源和直流稳压电源 电路

目录 前言一、恒流源电路1.低端反馈2.低端反馈注意事项注意1:电阻Rx注意2:三极管和运放的限制 3.高端反馈注意:自激振荡方案二 二、直流稳压电源电流1.带反馈2.不带反馈3.区别 前言 基础知识可以看个人笔记:个人笔记 一、恒流源…

那些年,曾经辉煌过的数据库

滚滚长江东逝水,浪花淘尽英雄! 数据库的演进史,正是这样一部“英雄迭代”的壮阔史诗。从早期数据模型的拓荒者,到关系型数据库的商业巨头;从桌面应用的普及者,再到开源与大数据时代的弄潮儿;每…

2D曲线点云平滑去噪

2D曲线点云,含许多噪声,采用类似移动最小二乘的方法(MLS)分段拟合抛物线并投影至抛物线,进行点云平滑去噪。 更通俗的说法是让有一定宽度的曲线点云,变成一条细曲线上的点。 分两种情况进行讨论: 1&#…

【平面波导外腔激光器专题系列】用于精密测量的平面波导外腔激光器特性

----翻译自Kenji Numata等人的文章 摘要 1542 nm平面波导外腔激光器PW-ECL具有足够低的噪声非常适合精密测量应用。与 0.1mHz至100kHz 之间,其频率和强度噪声与非平面环形振荡器 NPRO和光纤激光器相当或更好。通过将 PW-ECL 的频率稳定在乙炔(13C2H2&a…

文件时间修改器

文件时间修改器是一款帮助用户修改文件创建时间的软件,支持毫秒级时间的修改,包括文件的创建时间、修改时间、访问时间等时间都支持修改,可以批量处理文件。 飞猫云下载 | 备用下载1 |备用下载2 基本简介 本软件主要为批量修改文件的创建时…

仓颉语言实战:MQTT物联网开发

目录 引言 mqtt4cj库的使用 申请仓颉编程语言内测 下载STDX 测试程序 结束语 引言 最近一直在学习仓颉语言,由于我对物联网比较感兴趣,自然想到写一个MQTT的程序,好在找到了mqtt4cj库,今天分享一下学习心得。 mqtt4cj库的…

OpenCV CUDA模块设备层-----用于在 CUDA 核函数中访问纹理数据的一个封装类TexturePtr()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 TexturePtr<T, R> 是 OpenCV 的 opencv_cudev 模块中用于在 CUDA 核函数中访问纹理数据的一个封装类。它主要用于将一个已创建好的 cudaTe…

Spring Boot的自动装配和自动配置

Spring Boot的自动装配&#xff08;Auto Wiring&#xff09;和自动配置&#xff08;Auto Configuration&#xff09;是两个不同的概念&#xff0c;它们在Spring框架中各自有不同的作用和用途。下面我将详细解释它们的区别和联系。 自动装配&#xff08;Auto Wiring&#xff09…

如何用 vue-office 快速搭建文档在线预览服务

1. 什么是 vue-office 1.1 vue-office 简介 vue-office 是一个基于 Vue 的组件库,用于在 Web 应用中快速集成 Office 文档的在线预览功能。它支持 Word、Excel 和 PowerPoint 等多种格式,并提供了简洁的 API 接口和丰富的自定义选项。 1.2 支持的文档类型与核心特性 支持的…

Python爬虫(六):Scrapy框架

"Scrapy到底该怎么学&#xff1f;"今天&#xff0c;我将用这篇万字长文&#xff0c;带你从零开始掌握Scrapy框架的核心用法&#xff0c;并分享我在实际项目中的实战经验&#xff01;建议收藏⭐&#xff01; 一、Scrapy简介&#xff1a;为什么选择它&#xff1f; 1.…

Linux中关闭swap分区

在 Linux 系统中关闭 swap 分区&#xff08;或交换文件&#xff09;的步骤如下&#xff0c;请务必在操作前保存所有数据&#xff0c;以免丢失&#xff1a; &#x1f4cc; 完整操作步骤&#xff1a; 1. 查看当前 swap 使用情况 free -h swapon --show # 查看活跃的 swap 设…

RPGMZ游戏引擎之如何设计每小时开启一次的副本

本文知识点 1. 获取时间 2. 时间格式要正确 3. 事件内如何设计 正文开始 1. 获取时间 首先获取当前时间 然后保存在 事件内的变量里面 后需要判断时间是否相等 function 获取当前日期(){const now new Date();return now.toISOString();}; 2. 时间格式要正确 now.toI…

学习路之uniapp--uniapp扩展uni-ui

这里写目录标题 一、新建项目二、下载导入插件三、直接创建uni-ui项目 一、新建项目 二、下载导入插件 三、直接创建uni-ui项目 创建uniapp项目时&#xff0c;直接创建uni-ui项目