标题
VMware+Centos7 搭建Geth开发环境
前言
在VMware上搭建开发环境,请保证VMware网络配置完成(可以上网、可以ping通物理机!!!!!!)配置过程可以参考这篇文章
使用MateMask连接环境
一、环境配置
1.基本工具下载
在后续过程中会使用到一下工具,所以事先下载
yum -y install wget
yum -y install git
如果出现cannot find a valid baseurl for repo:base/7/x86_64错误的话,是需要更换yum源。
可以参考文章yum换源
需要传送文件到虚拟机中的话可以参考这篇文章:如何在windows登录VMware Workstation Pro以及从windows向VMware Workstation Pro传输文件
2.搭建环境
安装GO
cd /usr/local
wget https://go.dev/dl/go1.20.3.linux-amd64.tar.gz
tar -zxvf go1.20.3.linux-amd64.tar.gz -C /usr/local/
创建软链接
ln -s /usr/local/go/bin/go /usr/bin/go
添加环境变量,使用vi命令在/etc/profile的最后添加以下内容
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
export GOPATH=/opt/go
export PATH=$PATH:$GOPATH/BIN
更新环境变量
source /etc/profile
可以通过go version 来验证安装是否成功
安装GETH
下载geth源码
cd /usr/local/
git clone https://github.com/ethereum/go-ethereum.git
这里下载的是最新的代码,需要的可以使用git命令切换版本。(本文使用版本是1.14.6)
commit id 可以在geth的github中去查找
git checkout <commit_id>
编译源码
cd /usr/local/go-ethereum
make all
如果失败(卡在某一步不动了),尝试修改go的代理后再编译
go env -w GOPROXY=https://goproxy.cn
创建geth的软链接
ln -s /usr/local/go-ethereum/build/bin/geth /usr/bin/geth
可以使用geth version命令验证安装是否成功
二、搭建开发环境
1.相关说明
本文使用的是GETH 1.14.5版本,这一版本可以直接开启开发者模式。
虽然没有创建账号,但是在启动后仍会显示一个包含单个地址的数组。这是“开发者”帐户。开发者地址是本地网络创始时创建的以太币总量的接收者。如果先前已经创建创建了开发者账号,需要使用 --password 来指定密码的文件(具体使用后面有实例)。
也可以使用genesis.json文件自定义配置。在开发模式下使用自定义创世区块配置。要获取兼容配置,请运行geth --dev dumpgenesis。生成的创世区块具有权益证明,并且所有预合并硬分叉均在区块 0 处激活。预编译地址已获得资助,以防止它们根据 EIP158 从状态中删除。
具体细节可以看官方文档>>链接<<
2.启动
创建目录,相关文件都会存在这个文件里面
mkdir myChain
cd myChain
创建开发者账号(会要求输入密码)
geth --datadir db -dev account new
在 /usr/local/myChain 目录下创建password.txt文件,内容为先前创建的开发者账号的密码
而后可以使用以下命令,以开发者模式启动
geth --datadir db --rpc.enabledeprecatedpersonal --nodiscover console 2>>eth_output.log --dev --dev.period 1 --password password.txt
解释一下参数
参数 | 意义 |
---|---|
–datadir | 数据目录,指定数据目录,否则在退出区块链之后状态会,先前数据将会消失 |
–rpc.enabledeprecatedpersonal | personal命令已经弃用(但是我觉得好用)加这个参数可以继续使用这个命令 |
–nodiscover | 表示私有,不会被公网上发现 |
console | 启动命令行模式 |
2>>eth_output.log | 会把日志打印到eth_output.log文件中,可以用putty再开个界面用 taill -f eth_output.log 实时查看日志 |
–dev | 以开发者模式启动 |
–dev.period 1 | 开启的模式,0代表有交易上来才产生新的块 其他数字也可:如1表示平均1秒产生一个新的块 |
–password | 密码 |
输入上述指令后会进入控制台,可以使用如下指令创建其他的测试账户
web3.personal.newAccount("<password>")
可以使用以下命令查看当前的账户
web3.eth.accounts
同时还可以将他作为数组使用,如查看账户余额时可以使用
web3.eth.getBalance(eth.accounts[0])
二、外部连接
1.启动方式
如果需要连接到的话需要再启动时添加一些参数,指令如下
geth --datadir db --networkid 1314 --rpc.enabledeprecatedpersonal --nodiscover console 2>>eth_output.log -dev --dev.period 1 --password password.txt --http.addr 192.168.106.3 --http.port 8545 --http.corsdomain "*" --http --http.api="db,eth,net,web3,persinal"
解释一下参数(之前解释过的不加赘述)
参数 | 意义 |
---|---|
–networkid 1314 | 网络id,如果有genesis.json的话需要与genesis.json中的一致 |
–http.addr 192.168.106.3 | 节点的地址(虚拟机的IP地址) |
–http.port 8545 | RPC端口 |
–http.corsdomain “*” | 接收远程RPC连接的地址的范围,*表示任意地址 |
–http | 启动RPC服务 |
–http.api=“db,eth,net,web3,persinal” | 通过RPC可以调用的API |
2.MateMask连接
在连接之前首先需要配置防火墙,我图方便直接关闭了,指令如下
sudo systemctl stop firewalld
在MateMask中通过 设置>>网络>>添加网络进入一下界面
其中网络名称与货币符号自定义,ID为先前的network,RPC URL是虚拟机的IP+启动时指定的RPC端口。
3.MateMask账号导入
首先把/usr/local/myChain/db/keystore 保存在windows上。
可以使用以下命令把db压缩打包
tar -czvf db.tar.gz db
在windows的cmd中使用scp拉取这个文件,成功之后再解压。
scp <centos的用户名>@<centos的ip>:/usr/local/mychain/db.tar.gz <windows中的路径>
在MateMask中按照如下步骤操作,之后导入keystore中的要导入的账户的对应的文件,输入创建账户时设置的密码就可以了。
参考文章
搭建(非常详细!!!)
运维系列:centos7 yum安装使用时提示 cannot find a valid baseurl for repo:base/7/x86_64 的解决方法(亲测有效☆)
在 GitHub 上克隆历史版本的代码
geth常见报错:personal已经弃用
《solidity智能合约开发技术与实战》