天天看點

Geth搭建Ethereum私鍊Centos7 搭建以太坊私鍊

Centos7 搭建以太坊私鍊

阿裡雲,centos7

Geth環境安裝

目錄說明

/root/opt/install-package: 存放上傳/下載下傳的安裝包
/root/opt/nodejs: node.js安裝位置
/root/opt/cmake: cmake安裝位置
/root/opt/go: golang安裝位置
/root/opt/go-ethereum: geth安裝位置
/root/opt/myChain: 私鍊存放位置
           

安裝golang

下載下傳

cd /root/opt/install-package
#下載下傳
wget https://studygolang.com/dl/golang/go1.16.3.linux-amd64.tar.gz
#解壓
tar -zxvf go1.16.3.linux-amd64.tar.gz -C /root/opt
           

配置環境變量

vim /etc/profile
export GO_HOME=/root/opt/go
export PATH=$PATH:$GO_HOME/bin

# 配置檔案生效
source /etc/profile
           

配置Golang環境變量

# 開啟mod模式
go env -w GO111MODULE=on
#配置代理
go env -w GOPROXY=https://goproxy.io,direct
           

安裝node.js

web3.js 依賴node.js

下載下傳

cd /root/opt/install-package

# 下載下傳壓縮包
wget https://nodejs.org/dist/v10.16.3/node-v10.16.3-linux-x64.tar.xz
xz -d node-v10.16.3-linux-x64.tar.xz 

#解壓
tar xvf node-v10.16.3-linux-x64.tar -C /root/opt

#目錄重命名
cd  /root/opt
mv node-v10.16.3-linux-x64/ nodejs
           

配置環境變量

#配置環境變量
vim /etc/profile
export NODE_HOME=/root/opt/nodejs
export PATH=$PATH:$NODE_HOME/bin

# 配置檔案生效
source /etc/profile

# 檢視版本
node -v
npm -v
           

npm 換源

# 檢視配置
npm config ls

#換源
# 淘寶
npm config set registry https://registry.npm.taobao.org/

# 官方
npm config set registry http://www.npmjs.org
           

安裝 gcc-c++

下載下傳

yum install gcc-c++ 
           

安裝cmake

下載下傳

cd /root/opt/install-package

#下載下傳
wget https://cmake.org/files/v3.15/cmake-3.15.2.tar.gz
tar -zxvf cmake-3.15.2.tar.gz -C /root/opt

#更改目錄名
cd /root/opt
mv cmake-3.15.2/ cmake
           

安裝

#安裝
cd /root/opt/cmake
./bootstrap
gmake
gmake install

# 檢視版本
cmake --versionS
           

安裝NTP

# 下載下傳安裝
yum install ntp

#開啟網絡時間同步(rpc需要)
systemctl enable ntpd 
systemctl start ntpd
           

安裝Geth

下載下傳官網:https://geth.ethereum.org/downloads/

下載下傳

mkdir -p  /root/opt/go-ethereum/
# 解壓到 /root/opt/go-ethereum/
tar zxvf geth-linux-amd64-1.10.8-26675454.tar.gz -C /root/opt/go-ethereum/

# 重命名
cd /root/opt/go-ethereum/
mv geth-v1_10_8 bin
           

配置環境變量

# 配置環境變量
vim /etc/profile
export GETH_HOME=/root/opt/go-ethereum/
export PATH=$PATH:$GETH_HOME/bin

# 配置檔案生效
source /etc/profile

# 檢視版本
geth version
           

搭建私鍊

POA 私鍊

資料目錄建立

#資料目錄
mkdir -p /root/opt/myChain/poa
# 日志檔案目錄
mkdir /root/opt/myChain/poa/logs
#日志檔案
touch /root/opt/myChain/poa/logs/outputs.log
           

建立私鍊并啟動

非rpc

geth --datadir /root/opt/myChain/poa --dev console 2>/root/opt/myChain/poa/logs/outputs.log
           

rpc

# 端口預設8545
geth --datadir /root/opt/myChain/poa --networkid 15 --rpc --rpcaddr 0.0.0.0 --rpcport 8545 --rpcapi "db,eth,net,web3" --dev --allow-insecure-unlock console 2>/root/opt/myChain/poa/logs/outputs.log

# --dev 沒有交易不會挖礦
# --dev.period 自動挖礦
# --dev.period value  開發者模式下挖礦周期 (0 = 有pending狀态交易時進行挖礦) (預設: 0)
#  --dev.period 1 --mine
           

檢視日志(再開一個視窗)

tail -f /root/opt/myChain/poa/logs/outputs.log
           

檢視餘額

#機關wei(poa自帶一個開發賬号,餘額有不少)
eth.getBalance(eth.accounts[0])
           

MetaMask遠端連接配接

Geth搭建Ethereum私鍊Centos7 搭建以太坊私鍊

轉賬測試

# MetaMask上有一個賬戶 0xd67c9e6183B58E256908C0627d170CF036C2A31A
# from:eth.accounts[0] 開發賬戶
eth.sendTransaction({from:eth.accounts[0], to:"0xd67c9e6183B58E256908C0627d170CF036C2A31A", value:web3.toWei(10, 'ether')})
           
Geth搭建Ethereum私鍊Centos7 搭建以太坊私鍊

POW私鍊

建立目錄

# 建立資料目錄
mkdir -p /root/opt/myChain/pow
# 建立日志目錄
mkdir /root/opt/myChain/pow/logs
# 建立日志檔案
touch /root/opt/myChain/pow/logs/outputs.log
           

建立創世資訊檔案

vi  /root/opt/myChain/pow/genesis.json
           
{
  "config": {
    "chainId": 15,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "petersburgBlock": 0,
    "ethash": {}
  },
  "difficulty": "2000",
  "gasLimit": "2100000",
  "alloc": {
        "d67c9e6183B58E256908C0627d170CF036C2A31A":{"balance":"30000000000000000000"}, 
        "9FD09364145Ef2D6b4fa8e08c6a53EE62aC2BBa9":{"balance":"30000000000000000000"}
    }
}
           
networkid: 區塊鍊id, 不要與主網,測試網相沖
alloc: 指定的賬戶
           

初始化

geth --datadir /root/opt/myChain/pow init /root/opt/myChain/pow/genesis.json
           

啟動

非rpc

# 本機啟動
geth --datadir /root/opt/myChain/pow console 2>/root/opt/myChain/pow1/outputs.log
           

htpp啟動

geth --networkid 15 --datadir /root/opt/myChain/pow --http --http.port 8545 --http.addr "0.0.0.0" --port 30303 --http.corsdomain "*" --http.api "eth,net,web3,personal,miner" console 2>/root/opt/myChain/pow/logs/outputs.log
           

rpc啟動

# network 15要和設定的一緻
geth --datadir /root/opt/myChain/pow --networkid 15 --rpc --rpcaddr 0.0.0.0 --rpcport 8545 --rpcapi "db,eth,net,web3" --allow-insecure-unlock console 2>/root/opt/myChain/pow/logs/outputs.log
           

日志檢視

tail -f /root/opt/myChain/pow/logs/outputs.log
           

rpc 測試-postman

http://ip:8545
{
    jsonrpc: "1.0",
    method: "eth_getLuck",
    params: [],
    id: 15
}
           
Geth搭建Ethereum私鍊Centos7 搭建以太坊私鍊

檢視測試:

eth.getBalance("d67c9e6183B58E256908C0627d170CF036C2A31A")
eth.getBalance("9FD09364145Ef2D6b4fa8e08c6a53EE62aC2BBa9")
           
Geth搭建Ethereum私鍊Centos7 搭建以太坊私鍊

繼續閱讀