本文介绍geth常用的命令和选项,geth有十几个命令和几十个选项,本文只介绍一些最常用的命令和选项,解释它们的用法和用途以及可能存在的误区。
一、geth命令格式
geth命令行的通用格式如下:
geth [options] command [command options] [arguments...]
其中options是geth的启动参数,它是以--开头指定的一些可选的选项,如--datadir --rpc等。command是geth运行的命令,如init console等,命令可以带有自己可选的选项和参数,如geth init genesis.json中的genesis.json就是init命令的参数。
二、常用命令
初始化 init
init命令用来初始化创世区块,也就是创建一条链。它需要一个参数:json格式的创世区块配置文件。一般的格式是:
geth --datadir init
如:
geth --datadir "yourdatadir" init genesis.json
会在yourdatadir目录下生成geth/chaindata目录,并在这个目录中写入创世区块。如果不指定--datadir选项,会使用默认的datadir,具体请看下文关于--datadir的说明。
管理账户 account
account命令用来管理账户,它有四个子命令:
list 打印本地所有账户地址
new 创建一个账户
update 更新一个已有账户
import 导入私钥生成一个账户
创建一个新账户,一般格式是:
geth --datadir account new
如:
geth --datadir "yourdatadir" account new
会提示你设置账户密码,然后会生成一个新账户,账户存储在yourdatadir/keystore目录中,每个账户对应一个文件。
查看账户:
geth --datadir "yourdatadir" account list
会打印yourdatadir/keystore中的所有账户和它们的存储位置。
更新账户,一般格式是:
geth --datadir account update
如:
geth --datadir "yourdatadir" account update "a364b52f9f8a0c851dd63ec14ddf691018e842fb"
会提示你输入账户密码,之后再输入一个新密码。update用来将账户的存储格式升级到最新,另外一个功能,就是用来修改密码。
导入私钥,一般格式是:
geth --datadir import
是一个文本文件,里面的内容是要导入的私钥明文。注意不要泄漏你的私钥。
进入控制台 console
console命令会启动节点并进入交互式JavaScript环境:
geth --datadir "yourdatadir" console
在这里可以使用geth内置的所有JavaScript API。
连接到节点 attach
有没有遇到过这样的问题:在geth console中执行miner.start(),然后就被挖矿输出刷屏了,想要再输入其他命令怎么办?可以输入,但是输入还是被刷屏,体验不好。可以打开两个窗口,一个窗口挖矿,另一个窗口还可以正常输入命令吗?可以,这就是attach命令的用途。
attach命令会进入交互式JavaScript环境,与console命令不同的是,attach不会启动新的节点,它只会连接到一个正在运行的节点。就像可以通过终端远程登录Linux系统一样,attach相当于一个终端,通过它可以“登录”到一个geth节点,之后的操作就是操作那个节点。 attach支持三种协议:ipc、http、websocket。在Linux中可以使用ipc方式,如:
geth attach ipc:yourdatadir/geth.ipc
如果启动节点时使用了--rpc选项,也可以使用http方式,如:
geth attach http://localhost:8545
删除数据 removedb
想要删除区块数据?删除就好了,但是这样连keystore也删了,也就是账户也没了。如果想保留账户,安全地删除区块数据,最好使用removedb:
geth --datadir "yourdatadir" removedb
这会删除yourdatadir/geth/chaindata,其他东西都不会动。
获取帮助 help
geth help会列出geth命令行所有可用的命令和选项。想要查看某个命令的帮助,输入:
geth help
如:
geth help account
查看account命令的帮助。
如果想查看某个命令的子命令的帮助也可以,如
geth account help new
会显示account new的帮助。
三、常用选项
指定数据目录 --datadir