环境
- go环境
- gcc、gcc-c++
yum install gcc gcc-c++ -y
安装geth单节点(第一个节点)
- 下载geth
- 解压&重命名
tar zxvf go-ethereum-1.9.6.tar.gz
mv go-ethereum-1.9.6 go-ethereum
- 编译&配置环境变量
cd go-ethereum/
make all
echo "export PATH=$PATH:/root/go-ethereum/build/bin" >> /etc/profile
source /etc/profile
- 编写创世区块
cd ~
mkdir eth
cd eth/
vim genesis.json
创世区块信息
{
"nonce": "0x0000000000000042",
"timestamp": "0x00",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x00",
"gasLimit": "0x80000000",
"difficulty": "0x1",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x2D356ee3F5b8718d8690AFCD31Fe2CB5E602677e",
"alloc": {},
"config": {
"chainId": 15, \\
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
}
}
- 创建区块文件夹
mkdir data1 \\第一个区块的文件夹命名为data1
- 初始化geth
geth --datadir data1 init genesis.json
- 启动geth控制台并创建日志文件:
–networkid需要与chainId相同
geth --networkid 15 --nodiscover --datadir data1 --rpc --rpccorsdomain "*" --rpcapi "db,eth,net,web3,miner,personal" --rpcaddr "0.0.0.0" --allow-insecure-unlock console 2>>data1/geth.log
–networkid value 网络ID(value与创世区块中的chainId value相同)
–nodiscover 禁用节点发现机制(手动添加节点)
–datadir “xxx” 数据库和keystore密钥的数据目录(刚才创建的data1)
–rpc 启用HTTP-RPC服务器
–rpccorsdomain “*” 设置请求ip白名单 * 为所有
–rpcapi value 基于HTTP-RPC接口提供的API
–rpcaddr value HTTP-RPC服务器接口地址(默认值:“localhost”)
–rpcport value HTTP-RPC服务器监听端口(默认值:8545)
–port value 网卡监听端口(默认值:30303)
- geth控制台操作
i. 创建geth账户密码为123456
personal.newAccount("123456")
ii. 启动以太坊开始挖矿(第一次创建可能需要较长时间)
miner.start(1)
第二个geth节点
- 按照前面安装geth单节点(第一个节点)方法一样从7步开始的data1文件替换为data2文件,
–networkid与第一个节点–networkid相同
geth --networkid 15 --nodiscover --datadir data2 --port 30302 --rpcapi net,eth,web3,personal --rpc --rpcport 8542 console 2>> data2/geth.log
(因为需要通过remix部署合约所以data1跟data2的启动代码不太一样,data2的启动代码外部通过remix不知为何无法连接,部署data3的时候可以参照删除先的内容对照data2进行修改)
因为在同一台主机下安装所以–port(默认30303)和–rpcport(默认8545)需要修改一下防止端口冲突。
连接两个节点
在data1 geth控制台中输入 admin.nodeInfo.enode
查询一下endode
复制enode://8f1343cf1f36b837dc84ead5526e9576daeda51ea87af99f5c60e1b64f5488c3ca9218c979ca4e34024eefcf3ffee4489803d2858146f2e1f45680ccad90c2bc@192.168.1.3:30301
打开data2的geth 控制台输入
admin.addPeer("enode://8f1343cf1f36b837dc84ead5526e9576daeda51ea87af99f5c60e1b64f5488c3ca9218c979ca4e34024eefcf3ffee4489803d2858146f2e1f45680ccad90c2bc@localhost:30301")
因为在同一台电脑上所以将IP:192.168.1.3换为localhost 否则可能需要开启相应的端口
输入net.peerCount
查看geth链接节点个数
admin.peers
查看通信节点详细信息