ethereum-geth常用操作
前言
eth已经2.0了,但是1.0除了挖矿之外大部分功能都还是一样的。
geth 能做什么
- 与eth链交互:console
- 查看区块链状态
- 管理账号: personal
- 发送交易:
- 挖矿 miner
交互操作: console
通过console启动,可以进行一系统的操作。
1.连接eth主网
默认连接最新的主网。
--datadir
: 数据存放目录,不指定默认:/home/$user/.ethereum
1 | geth --datadir /data/geth --goerli console |
2.连接eth测试网
--goerli
: 加入 goerli测试网--rpcapi
: 开启rpc服务,开启后才可以进行操作
1 | geth --datadir "/data/geth" --rpc --rpcport 8545 --rpcapi "personal,eth,net,web3,admin" --rpccorsdomain "*" --goerli console |
节点管理: admin
自己搭建节点,第一步是要能使用,如果不是私链,那就需要连接上以太坊的主网或者测试网进行操作。
1.添加节点 admin.addPeer
1 | admin.addPeer("enode://19d3655aba7ef72065412365d95a66a10fcf0518f21594d0746b0177467c4d650b726a3e9612792e6dcb9716814498dc6826e3b47ab6e6270d85113d4bc7d6a1@135.181.82.60:30303") |
2.查看当前连接节点 admin.peers
下面这个是我连接的节点,是芬兰的一个节点。
1 | [{ |
查看节点信息 admin.nodeInfo
查询节点自身信息。
enode
: 自身的节点地址enr
:discovery
: 节点发现服务端口listener
: 连接监听端口protocols
: 协议信息
1 | { |
账号管理 personal
1.创建账号 personal.newAccount()
创建账号可以创建多个账号。
1 | personal.newAccount("password") |
结果:
INFO [12-09|23:28:39.162] Your new key was generated address=0x6C5d3DafE18B5108a0C02B5663f6963EBf9f4CfA
WARN [12-09|23:28:39.191] Please backup your key file! path=/data/geth/keystore/UTC--2022-12-09T15-28-34.293134840Z--6c5d3dafe18b5108a0c02b5663f6963ebf9f4cfa
WARN [12-09|23:28:39.191] Please remember your password!
"0x6c5d3dafe18b5108a0c02b5663f6963ebf9f4cfa"
生成一个keystore
文件,路径是启动时候我设定的路径: /data/geth/keystore
。keystore
文件是相关于密钥,签署交易的以太坊私钥的加密文件。如果你丢失了这个文件,你就丢失了私钥。
简单的说keystore
就是你加密过后的私钥,要有私钥和你的密码,才能使用你的账号,这样就是双重保险。
几乎每条链都有keystore
文件这种形式。
查看一下keystore
文件内容:
cipher: 对称加密,用对称加密是因为使用到密码,需要解密。
cipherparams: 是 cipher 算法需要的参数。
iv: 是加密算法需要的初始化向量。
kdf: scrypt
密钥生成函数,用于让你用密码加密 keystore 文件。
kdfparams: kdf
算法需要的参数(scrypt函数需要的参数)。
1 | { |
2.交互模式 personal.newAccount
执行命令:
1 | personal.newAccount() |
结果:
Passphrase: #输入密码
Repeat passphrase: #确认密码
INFO [12-09|23:41:31.682] Your new key was generated address=0x1d774CdA456C0f7cC84484b0316A4E959c206E14
WARN [12-09|23:41:31.682] Please backup your key file! path=/data/geth/keystore/UTC--2022-12-09T15-41-30.670272653Z--1d774cda456c0f7cc84484b0316a4e959c206e14
WARN [12-09|23:41:31.682] Please remember your password!
"0x1d774cda456c0f7cc84484b0316a4e959c206e14"
链治理:eth
1.查询所有账号 eth.accounts
1 | eth.accounts |
["0x6c5d3dafe18b5108a0c02b5663f6963ebf9f4cfa", "0x1d774cda456c0f7cc84484b0316a4e959c206e14"]
这是我刚生成的两个账号
选择其中一个:
1 | eth.accounts[0] |
"0x6c5d3dafe18b5108a0c02b5663f6963ebf9f4cfa"
2.查看余额 eth.getBalance
1 | eth.getBalance(eth.accounts[1]) |
挖矿 miner
1.开启挖矿
需要区块同步完成,否则无法挖矿
1 | miner.start(10) |
10表示挖矿线程数。
如果没有同步完成就开启挖矿会报错:
Block sealing failed err="unauthorized signer"
Block synchronisation started
Mining aborted due to sync
2.停止挖矿 miner.stop
1 | miner.stop() |