欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > 安装区块链相关Geth(基于CentOS7)

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

2025/6/23 18:54:55 来源:https://blog.csdn.net/m0_54226831/article/details/148733594  浏览:    关键词:安装区块链相关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博客

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词