概述
在安装好了Geth之后,我们需要知道如何启动它。
无论是主网、测试网还是私网,都可以使用Geth来启动。Geth直接运行,默认连接的就是以太坊主网,如果想要连接测试网可以连接Ropsten或rinkeby:
// Ropsten 测试网络
geth --testnet --fast --cache=512 console
// Rinkeby 测试网络
geth --rinkeby --fast --cache=512 console
创世块文件说明
将如下内容保存为genesis.json文件
{
"config": {
"chainId": 18,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc" : {},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x2",
"extraData" : "",
"gasLimit" : "0xffffffff",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00"
}
创世块文件的部分内容,我们可以简单了解一下:
- coinbase 挖矿后获得奖励的账户地址
- difficulty 挖矿难度
- gasLimit 一个区块所能容纳gas的上限
- nonce 随机值
- mixhash 一个256位的哈希证明,与nonce相结合,验证本块的有效性
- extraData 附加信息,随意填写
- parentHash 前一块的hash值,由于是创世块,所以为0
Geth搭建私网
1.利用创世块文件初始化
[root@192 install]# geth init genesis.json --datadir ./data
INFO [02-11|18:17:57.325] Maximum peer count ETH=50 LES=0 total=50
INFO [02-11|18:17:57.325] Smartcard socket not found, disabling err="stat /run/pcscd/pcscd.comm: no such file or directory"
INFO [02-11|18:17:57.326] Allocated cache and file handles database=/root/install/data/geth/chaindata cache=16.00MiB handles=16
INFO [02-11|18:17:57.343] Writing custom genesis block
INFO [02-11|18:17:57.343] Persisted trie from memory database nodes=0 size=0.00B time=12.012µs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [02-11|18:17:57.344] Successfully wrote genesis state database=chaindata hash=c1d47d…d9ea3e
INFO [02-11|18:17:57.344] Allocated cache and file handles database=/root/install/data/geth/lightchaindata cache=16.00MiB handles=16
INFO [02-11|18:17:57.364] Writing custom genesis block
INFO [02-11|18:17:57.365] Persisted trie from memory database nodes=0 size=0.00B time=155.78µs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [02-11|18:17:57.370] Successfully wrote genesis state database=lightchaindata hash=c1d47d…d9ea3e
此步骤主要是利用创世块进行文件初始化,指定一个数据目录,当看到类似上面的结果代表初始化成功。
[root@192 install]# tree data/
data/
|-- geth
| |-- chaindata
| | |-- 000002.ldb
| | |-- 000003.log
| | |-- ancient
| | | |-- bodies.0000.cdat
| | | |-- bodies.cidx
| | | |-- diffs.0000.rdat
| | | |-- diffs.ridx
| | | |-- FLOCK
| | | |-- hashes.0000.rdat
| | | |-- hashes.ridx
| | | |-- headers.0000.cdat
| | | |-- headers.cidx
| | | |-- receipts.0000.cdat
| | | `-- receipts.cidx
| | |-- CURRENT
| | |-- CURRENT.bak
| | |-- LOCK
| | |-- LOG
| | `-- MANIFEST-000004
| |-- lightchaindata
| | |-- 000001.log
| | |-- CURRENT
| | |-- LOCK
| | |-- LOG
| | `-- MANIFEST-000000
| |-- LOCK
| |-- nodekey
| |-- nodes
| | |-- 000001.log
| | |-- CURRENT
| | |-- LOCK
| | |-- LOG
| | `-- MANIFEST-000000
| `-- transactions.rlp
|-- geth.ipc
`-- keystore
启动Geth节点
geth --datadir ./data --networkid 18 --port 30303 --rpc --rpcport 8545 --rpcapi 'db,net,eth,web3,personal' --rpccorsdomain "*" --gasprice 0 --allow-insecure-unlock console 2> 1.log
这个命令的启动参数比较长,我们也需要针对参数进行介绍:
- datadir 指定之前初始化的数据目录文件
- networkid 配置成与配置文件config内的chainId相同值,代表加入哪个网络,私链就自己随意编号即可
- port 传说中的p2p端口,也就是节点之间互相通信的端口
- rpc 代表开启远程调用服务,这对我们很重要
- rpcport 远程服务的端口,默认是8545
- rpcapi 远程服务提供的远程调用函数集
- rpccorsdomain 指定可以接收请求来源的域名列表(浏览器访问,必须开启)
- gasprice gas的单价
- allow-insecure-unlock 新版本增加的选项,允许在Geth命令窗口解锁账户
- console 进入管理台
- 2> 1.log Unix系统下的重定向,将Geth产生的日志输出都重定向到1.log中,以免刷日志影响操作
连接
启动后,将看到类似下面的结果:
[root@192 ~]# geth attach --datadir ./data/
Welcome to the Geth JavaScript console!
instance: Geth/v1.9.10-stable-58cf5686/linux-amd64/go1.13.6
at block: 0 (Thu, 01 Jan 1970 08:00:00 CST)
datadir: /root/data
modules: admin:1.0 debug:1.0 eth:1.0 ethash:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0
>
网友评论