目录
3.将解压后的文件夹,放到自己平常的安装包位置,并设置0777权限
10.这里的位置需要填写你的 go-ethereum 下载时存放的位置,路径改为自己的
一、在云服务器搭建自己的私链
(15条消息) Ubuntu 中搭建以太坊区块链私有链(一)ubuntu搭建以太坊私链sanrenhe-zjut的博客-CSDN博客
1.安装go(下载版本至少1.9以上的go)
本地下载上传服务器
scp ./go1.14.4.linux-amd64.tar.gz cc@自己的服务器地址:/home/cc
2.解压压缩文件
tar -zxvf go1.16.2.linux-arm64.tar.gz
3.将解压后的文件夹,放到自己平常的安装包位置,并设置0777权限
sudo cp -rf go /usr/local cd /usr/local sudo chmod -R 0777 go
4.配置环境变量
创建工作目录,我选择创建在/home/cc目录下
mkdir GOPATH sudo chmod -R 0777 GOPATH
使用sudo gedit ~/.bashrc
命令修改环境变量,在弹出的记事本中添加以下内容。同时也在GOPATH目录下创建src和bin目录
export GOROOT=/usr/local/go #GOROOT是系统上安装Go软件包的位置。 export GOPATH=/home/cc/GOPATH #GOPATH是工作目录的位置。 export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
source ~/.bashrc go version # 检测有效性
5.更改go的代理
go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,direct
6.创建go文件夹将go-ethereum源文件放入
cd ~ mkdir go
7.克隆git
git clone https://gitee.com/gitee-chao/go-ethereum.git
8.编译以太坊
cd go-ethereum make geth
9.增加geth目录到环境变量
vi /etc/profile
10.这里的位置需要填写你的 go-ethereum 下载时存放的位置,路径改为自己的
export PATH=$PATH:~/go/go-ethereum/build/bin
11.环境载入
source /etc/profile
12.创世块genesis.json
{
"config": {
"chainId": 3584,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"ethash": {}
},
"difficulty": "1",
"gasLimit": "8000000",
"alloc": {
"0x42b080f8158F9481f0Ad2642FdD5164c7DB400De":{"balance":"10000000000000000000000"}
}
}
chainID: 创建新的 EVM 链时,需要在 genesis 文件中指定 ChainId。这个 ChainId 最好不要和现有任何已经在公开运行的 EVM 链的 ChainId 相同,否则可以一个配置失误就误花掉一笔钱。下面是一个 genesis 文件配置示例。已经被占用的 ChainId 可以通过这个列表查看。
13.在创世块文件目录下初始化创世块
geth --datadir ./data init genesis.json
14.启动私链
geth --datadir ./data --port 30303 --networkid 3584 console --http --http.addr 172.26.6.43 --http.port 8545 console --allow-insecure-unlock
172.26.6.43:代表你自己云服务器的内网ip地址(云服务器上查看)
NetworkID 3584 : 以太坊中networkID在节点握手
的时候会判断,主网,测试网使用不同的配置,从而达到网络隔离。
2>output.txt:使输出存在output.txt里面
启动成功界面:
关于chainID和networkID的关系:
-
ChainId 是用来防止交易在不同的以太坊同构网络进行交易重放的。主要在交易签名和验证的时候使用;
-
NetworkId 是用来标识区块链网络的。主要在节点之间握手并相互检验的时候使用;
-
ChainId 需要在 genesis 文件中指定,NetworkId 需要在启动参数中指定;
-
ChainId 和 NetworkId 的值不需要相同。但最好一致,以免我们记忆混乱。