VMware+Centos7 搭建以太坊私链+连接私链

标题


前言

使用私链搭建在VMware上,请保证VMware网络配置完成(可以上网、可以ping通物理机!!!!!!)

搭建以太坊私链使用的是Geth1.11.6版本(后序版本进行了修改,没找到详细教程)

使用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

可以通过go version 来验证安装是否成功

安装GETH

下载geth源码

cd /usr/local/
git clone https://github.com/ethereum/go-ethereum.git

这里下载的是最新的代码,需要的可以使用git命令切换版本。
commit id 可以在geth的github中去对应的release查找
1.11.6的commit id 是ea9e62ca3db5c33aa7438ebf39c189afd53c6bf8

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.创建私链

创建目录,后续的私链相关文件都会存在这个文件里面

mkdir myChain
cd myChain

创建genesis.json文件,这个文件用于定义创世区块,或者可以理解为这个私链的配置,我的文件内容如下

{
  "config": {
    "chainId": 1314,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "petersburgBlock": 0,
    "ethash": {}
  },
  "alloc": {},
  "coinbase": "0x0000000000000000000000000000000000000000",
  "difficulty": "0x20000",
  "extraData": "",
  "gasLimit": "0xFFFFFFFF",
  "nonce": "0x0000000000000042",
  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp": "0x00"
}

之后使用下面命令开始初始化私链

geth --datadir db init genesis.json

其中的db为私链数据的存储目录(没有的话会自动创建一个)

创建开发者账号

geth --datadir db -dev account new 

输入这个命令之后会要求输入密码。

2.启动私链

在 /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.enabledeprecatedpersonalpersonal命令已经弃用(但是我觉得好用)加这个参数可以继续使用这个命令
–nodiscover指定是一个私链,不会被公网上发现
console启动命令行模式
2>>eth_output.log会把日志打印到eth_output.log文件中,可以用putty再开个界面用 taill -f eth_output.log 实时查看日志
-dev以开发者模式启动
–dev.period 1挖矿模式,0代表有交易上来才挖矿 1表示一直挖
–password密码

输入上述指令后会进入控制台,可以使用如下指令创建账户

web3.personal.newAccount("<password>")

可以使用以下命令查看当前的账户

web3.eth.accounts

同时还可以将他作为数组使用,如查看账户余额时可以使用

web3.eth.getBalance(eth.accounts[0])

3.开始挖

首先需要设置币基账户(接收收益的账户)

miner.setEtherbase(<账户地址>)

可以使用如下命令查看当前的币基账户

eth.coinbase

解锁账号,这样账号才能挖(但是我在使用的时候不解锁也可以挖)

personal.unlockAccount(eth.coinbase)

开始挖

miner.start(1)

参数1代表使用一个线程挖
开始后通过查看账户余额或者当前的区块高度来验证是否开始挖

eth.getBalance(eth.coinbase)
eth.blockNumber

二、外部连接私链

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中的一致
–http.addr 192.168.106.3$私链节点的地址(虚拟机的IP地址)
–http.port 8545RPC端口
–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智能合约开发技术与实战》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值