从头到尾使用Geth的说明-2-cli可用命令-有2个地方标红,之后查查源码后看看能不能解决...
geth - the go-ethereum command line interface 以太坊命令行接口
格式:
geth [options] command [command options] [arguments...]
支持的命令:
account管理账户 attach启动交互式JavaScript环境(连接到节点) bug上报bug Issues console启动交互式JavaScript环境 copydb从目标chaindata文件夹创建本地链 dumpDump(分析)一个特定的块存储 dumpconfig 显示配置值 export导出区块链到文件 import导入一个区块链文件 init启动并初始化一个新的创世纪块 js执行指定的JavaScript文件(多个) license显示许可信息 makecache生成ethash验证缓存(用于测试) makedag生成ethash 挖矿DAG(用于测试) monitor监控和可视化节点指标 removedb删除区块链和状态数据库 version打印版本号 wallet管理Ethereum预售钱包 help,h显示一个命令或帮助一个命令列表
geth命令说明:
1.account
管理账户,列举所有已存在的账户信息,导入一个私钥来生成一个新账户,创建新账户或更新存在的账户
它支持交互模式(即当提示输入密码时)和非交互模式(通过给定密码文件提供密码。非交互模式仅用于在测试网络或已知的安全环境中进行脚本化使用。
确保您在创建新帐户(使用新帐户或导入帐户)时记住您给出的密码。没有它,你就不能解锁你的账户。
注意,不支持以未加密格式导出密钥。
密钥存储在/keystore下。通过简单的复制,在ethereum节点之间传输整个目录或其中的单个键是安全的。
确保你定期备份你的钥匙。
userdeMacBook-Pro:~ user$ geth account -h NAME: geth account - USAGE: geth account command [command options] [arguments...]COMMANDS: listPrint summary of existing accounts 打印现有账户摘要 newCreate a new account 创建新账户 updateUpdate an existing account 更新现有账户 importImport a private key into a new account 将私钥导入生成新帐户 OPTIONS: --help, -h show help
1> list
格式:
list [command options] [arguments...]
选项:
userdeMacBook-Pro:~ user$ geth account list -hETHEREUM OPTIONS: --datadir "/Users/user/Library/Ethereum"Data directory for the databases and keystore 指明数据库和密钥存储文件的数据目录 --keystore Directory for the keystore (default = inside the datadir) 密钥存储文件的数据目录(默认在--datadir参数指定的目录下)
打印所有帐户的简短摘要
举例:
userdeMacBook-Pro:~ user$ geth account list --datadir './today2/data0' INFO [12-29|17:49:51] Maximum peer count ETH=25 LES=0 total=25 Account #0: {3b896fb3e31fc9b91921d19b8c7271d1c3af5b35} keystore:///Users/user/today2/data0/keystore/UTC--2018-07-12T06-48-20.253726408Z--3b896fb3e31fc9b91921d19b8c7271d1c3af5b35 Account #1: {39f03934f1d9afbff39a395364416e71eae375cd} keystore:///Users/user/today2/data0/keystore/UTC--2018-09-25T09-15-10.502888824Z--39f03934f1d9afbff39a395364416e71eae375cd
打印的是部署在./today2/data0目录下的所有账户信息
2>new
格式:
geth account new [command options] [arguments...]
选项:
userdeMacBook-Pro:~ user$ geth account new -hETHEREUM OPTIONS: 以太坊选项 --datadir "/Users/user/Library/Ethereum"Data directory for the databases and keystore 指明数据库和密钥存储文件的数据目录 --keystore Directory for the keystore (default = inside the datadir) 密钥存储文件的数据目录(默认在--datadir参数指定的目录下) --lightkdf Reduce key-derivation RAM & CPU usage at some expense of KDF strength 以牺牲KDF的强度为代价,减少键派生中RAM和CPU的使用 ACCOUNT OPTIONS:账户选项 --password value Password file to use for non-interactive password input 非交互式密码输入中使用的密码文件
创建一个新帐户并打印地址,帐户将以加密格式(即得到个UTC文件)保存,提示您输入密码。你必须记住这个密码才能在将来解锁你的账户。
对于非交互式使用,可以使用--password标记直接指定密码:
??注意,这仅用于测试,将密码保存为文件或以任何其他方式公开是一个坏主意。
举例:
一开始在本地环境中有两个账户,如图:
文章图片
然后现在我们使用上面的命令生成一个新的账户:
userdeMBP:today2 user$ geth account new --datadir ./data0 --password ./password INFO [01-10|16:09:36] Maximum peer count ETH=25 LES=0 total=25 Address: {d3f19f6c7cb02787c06792456351851f242a935b}
--datadir指定你是通过连接当前目录下的/data0/geth.ipc来连接这个geth客户端的,--password指定你密码存储的文件
然后可见成功生成了一个新的账户:
文章图片
3>import
格式:
geth account import [options]
选项:
userdeMacBook-Pro:~ user$ geth account import -hETHEREUM OPTIONS: 以太坊选项 --datadir "/Users/user/Library/Ethereum"Data directory for the databases and keystore 指明数据库和密钥存储文件的数据目录 --keystore Directory for the keystore (default = inside the datadir) 密钥存储文件的数据目录(默认在--datadir参数指定的目录下) --lightkdf Reduce key-derivation RAM & CPU usage at some expense of KDF strength 以牺牲KDF的强度为代价,减少键派生中RAM和CPU的使用 ACCOUNT OPTIONS:账户选项 --password value Password file to use for non-interactive password input 非交互式密码输入中使用的密码文件
导入一个未加密的私钥,并创建一个新帐户,并打印的地址。
假设
??你必须记住这个密码才能在将来解锁你的账户。
举例说明:
geth account import --datadir '/Users/geth-environment/data0/' --password '/Users/geth-environment/password' /Users/user/geth-environment/coinbase.key
该命令的意思就是导入并生成一个账户的UTC文件到--datadir参数指定的geth客户端的目录的/keystore中,其密码从--password参数指定的文件夹中读取,/Users/user/geth-environment/coinbase.key文件中记录着该账户的私钥,然后你就能看见在/Users/geth-environment/data0/keystore文件夹中生成了对应的一个UTC文件
也可以不使用--password参数,然后他就会进行进入交互模式,终端提示输入密码
4>update
格式:
update [command options] [arguments...]geth account update
选项:
ETHEREUM OPTIONS: 以太坊选项 --datadir "/Users/user/Library/Ethereum"Data directory for the databases and keystore 指明数据库和密钥存储文件的数据目录 --keystore Directory for the keystore (default = inside the datadir) 密钥存储文件的数据目录(默认在--datadir参数指定的目录下) --lightkdf Reduce key-derivation RAM & CPU usage at some expense of KDF strength 以牺牲KDF的强度为代价,减少键派生中RAM和CPU的使用
更新现有帐户。
该帐户以加密格式保存在最新版本中,提示您输入一个密码来解锁该帐户,另一个密码来保存更新后的文件。
因此,可以使用相同的命令将弃用的格式的帐户迁移到最新的格式或更改帐户的密码。
对于非交互式使用,可以使用--password标志指定密码:
geth account update [options]
由于只能给出一个密码,因此只能执行格式更新,因此只能交互式地更改密码。所以update不使用--password参数
举例:
更改上面生成的新账户:
userdeMBP:today2 user$ geth account update --datadir ./data0 d3f19f6c7cb02787c06792456351851f242a935b INFO [01-10|16:27:31] Maximum peer count ETH=25 LES=0 total=25 Unlocking account d3f19f6c7cb02787c06792456351851f242a935b | Attempt 1/3 Passphrase: //旧的密码 INFO [01-10|16:27:38] Unlocked account address=0xd3F19F6C7cB02787C06792456351851f242a935B Please give a new password. Do not forget this password. Passphrase: //新的设置的密码 Repeat passphrase:
2.attach
格式:
geth attach [command options] [arguments...]
选项:
ETHEREUM OPTIONS: --datadir "/Users/user/Library/Ethereum"数据库和keystore的数据目录API AND CONSOLE OPTIONS: --jspath loadScriptloadScript命令调用的JavaScript根路径 (默认为: ".") --exec value要执行JavaScript语句 --preload value要预加载到控制台的JavaScript文件的逗号分隔列表
该命令允许在运行的geth节点上打开控制台
Geth控制台是一个在JavaScript运行环境中的交互式shell,用于暴露节点管理界面以及Dapp JavaScript API。
详情见https://github.com/ethereum/go-ethereum/wiki/JavaScript-Console。
首先你要已经将geth运行起来了,geth.toml中的配置可见从头到尾使用Geth的说明-3-geth参数说明和环境配置:
userdeMBP:today2 user$ geth --config geth.toml 2>>geth.log
然后查看日志信息:
userdeMBP:today2 user$ tail -f geth.log INFO [01-10|17:08:10] Regenerated local transaction journaltransactions=0 accounts=0 WARN [01-10|17:08:10] Blockchain not empty, fast sync disabled INFO [01-10|17:08:10] Starting P2P networking INFO [01-10|17:08:11] UDP listener upself=enode://14a6c2c3c78951126326bbaa11f1c863347567f66273ffe663d1b351ebb96f2b315d4603f4ce13cc664a5ace0b290909c0e69c394114018a64b040ff2f4cdb10@10.240.100.98:61911 INFO [01-10|17:08:11] RLPx listener upself=enode://14a6c2c3c78951126326bbaa11f1c863347567f66273ffe663d1b351ebb96f2b315d4603f4ce13cc664a5ace0b290909c0e69c394114018a64b040ff2f4cdb10@10.240.100.98:61911 INFO [01-10|17:08:11] IPC endpoint openedurl=/Users/user/today2/data0/geth.ipc INFO [01-10|17:08:11] HTTP endpoint openedurl=http://127.0.0.1:8202cors=* vhosts=localhost INFO [01-10|17:08:11] WebSocket endpoint openedurl=ws://127.0.0.1:8546 INFO [01-10|17:08:11] Mapped network portproto=udp extport=61911 intport=61911 interface=NAT-PMP(192.168.199.1) INFO [01-10|17:08:11] Mapped network portproto=tcp extport=61911 intport=61911 interface=NAT-PMP(192.168.199.1)
可见已经成功启动,然后就能够使用attach来连接这个geth客户端了
1)geth attach有http\ws\ipc三种方式连接,看你配置geth.toml开启了哪种方式,如:
$ geth attach ipc:/some/custom/path $ geth attach http://191.168.1.1:8545 $ geth attach ws://191.168.1.1:8546
下面使用ipc连接:
userdeMBP:today2 user$ geth attach --datadir ./data0 Welcome to the Geth JavaScript console!instance: Geth/v1.8.3-stable/darwin-amd64/go1.10.1 coinbase: 0x3b896fb3e31fc9b91921d19b8c7271d1c3af5b35 at block: 6486 (Thu, 10 Jan 2019 11:37:33 CST) datadir: /Users/user/today2/data0 modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0>
--datadir指明geth所在目录,将会自动连接当前目录的/data0/geth.ipc,然后进入控制台
2)如果你只是想要执行某个命令,并不想要进入控制台的话,可以使用--exec:
userdeMBP:today2 user$ geth attach --datadir ./data0 --exec "eth.accounts" ["0x3b896fb3e31fc9b91921d19b8c7271d1c3af5b35", "0x39f03934f1d9afbff39a395364416e71eae375cd", "0xd3f19f6c7cb02787c06792456351851f242a935b"]
可见上面的例子得到了所有账户address的信息
3)--preload用于将定制的JavaScript文件下载到控制台中,它可以将经常使用的函数下载进去,用于建立合约等,如:
geth --preload "/my/scripts/folder/utils.js,/my/scripts/folder/contracts.js" console
然后你就能够在geth控制台调用文件的函数了
或者你也可以使用
--jspath
和--exec
结合实现类似上面的功能,如:$ geth --jspath "/tmp" --exec 'loadScript("checkbalances.js")' attach http://123.123.123.123:8545
--jspath指定文件所在的目录,--exec执行loadScript("js脚本文件"),然后该文件就下载到了geth客户端
或者:
geth --exec “personal.newAccount(‘password’)“ attach rpc:http://127.0.0.1:61911
该命令的意思就是attach通过rpc接口连接某个正在打开的区块链,并在区块链中运行语句personal.newAccount(‘password’)
3.bug
格式:
geth bug [arguments...]
上报bug
举例:
在终端运行:
userdeMBP:today2 user$ geth bug
然后就会在浏览器中弹出下面的界面,用于填写你遇见的bug,并发布:
文章图片
4.copydb
格式:
geth copydb [command options] [arguments...]
选项:
ETHEREUM OPTIONS: --datadir "/Users/user/Library/Ethereum"数据库和keystore的数据目录 --syncmode "fast"区块链同步模式 ("fast", "full", or "light") --testnet说明连接的是Ropsten network: 预配置的工作量证明的测试网络 --rinkeby说明连接的是Rinkeby network: 预配置的股权证明的测试网络PERFORMANCE TUNING OPTIONS:性能调优选项 --cache value分配给内部缓存的内存的兆字节 (默认值为: 1024)LOGGING AND DEBUGGING OPTIONS:日志记录和调试选项 --fakepow禁用工作量证明验证
第一个参数必须是包含要从其中下载的区块链的目录,如我本地的geth区块链目录
举例:
首先再建一个要将复制得到的数据存放的新区块链目录:
userdeMBP:~ user$ mkdir testCopy userdeMBP:~ user$ cd testCopy/ userdeMBP:testCopy user$ mkdir data0
要先初始化创世区块:
userdeMBP:testCopy user$ geth --datadir ./data0 init genesis.json INFO [01-11|11:04:14] Maximum peer countETH=25 LES=0 total=25 INFO [01-11|11:04:14] Allocated cache and file handlesdatabase=/Users/user/testCopy/data0/geth/chaindata cache=16 handles=16 INFO [01-11|11:04:14] Writing custom genesis block INFO [01-11|11:04:14] Persisted trie from memory databasenodes=0 size=0.00B time=8.482μs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B INFO [01-11|11:04:14] Successfully wrote genesis statedatabase=chaindatahash=a0e580…a5e82e INFO [01-11|11:04:14] Allocated cache and file handlesdatabase=/Users/user/testCopy/data0/geth/lightchaindata cache=16 handles=16 INFO [01-11|11:04:14] Writing custom genesis block INFO [01-11|11:04:14] Persisted trie from memory databasenodes=0 size=0.00B time=1.893μs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B INFO [01-11|11:04:14] Successfully wrote genesis statedatabase=lightchaindatahash=a0e580…a5e82e
然后复制today1的数据:
userdeMBP:testCopy user$ geth --datadir ./data0 copydb /Users/user/geth/data0/
会得到下面的错误:
Genesis not found in chain
这是因为复制的区块链目录写错了,应该改成:
userdeMBP:testCopy user$ geth --datadir ./data0 copydb /Users/user/geth/data0/geth/chaindata INFO [01-11|11:04:19] Maximum peer countETH=25 LES=0 total=25 INFO [01-11|11:04:19] Allocated cache and file handlesdatabase=/Users/user/testCopy/data0/geth/chaindata cache=768 handles=1024 INFO [01-11|11:04:19] Disk storage enabled for ethash cachesdir=/Users/user/testCopy/data0/geth/ethash count=3 INFO [01-11|11:04:19] Disk storage enabled for ethash DAGsdir=/Users/user/.ethashcount=2 INFO [01-11|11:04:19] Loaded most recent local headernumber=0 hash=a0e580…a5e82e td=262144 INFO [01-11|11:04:19] Loaded most recent local full blocknumber=0 hash=a0e580…a5e82e td=262144 INFO [01-11|11:04:19] Loaded most recent local fast blocknumber=0 hash=a0e580…a5e82e td=262144 INFO [01-11|11:04:19] Allocated cache and file handlesdatabase=/Users/user/today1/data0/geth/chaindatacache=1024 handles=256 INFO [01-11|11:04:19] Block synchronisation started INFO [01-11|11:04:20] Imported new chain segmentblocks=7 txs=0 mgas=0.000 elapsed=1.055s mgasps=0.000 number=7 hash=5462f1…94d464 cache=1.09kB INFO [01-11|11:04:22] Imported new chain segmentblocks=1484 txs=186 mgas=50.173 elapsed=1.808s mgasps=27.745 number=1491 hash=6af9a8…27f4f1 cache=279.71kB Database copy done in 2.989308101s Compacting entire database... Compaction done in 30.029904ms.
然后就能够看见geth下的data0/geth/chaindata数据下载到了/Users/user/testCopy/data0/目录下:
然后去两边的控制台中查看可见两边的数据已经成功同步,eth.blockNumber的数量都为3,详细比较eth.getBlock(1)等区块中的数据也是相同的:
??这个过程并不是直接复制过去的,而是通过
downloader
模块里的 NewFakePeer
创建一个虚拟对等节点,然后再进行数据同步完成的。中间还有这样的错误:
resource temporarily unavailable
这可能是因为你要复制的区块链还在运行,记得停止运行,否则不能复制它的数据
还有这样的错误:
ERROR[01-11|10:58:40] ########## BAD BLOCK ######### Chain config: {ChainID: 1 Homestead: 1150000 DAO: 1920000 DAOSupport: true EIP150: 2463000 EIP155: 2675000 EIP158: 2675000 Byzantium: 4370000 Constantinople:Engine: ethash}Number: 1 Hash: 0xb1c860c895da7d1e912bba497d163e8f5e775362588520c1d6054b67dcfafd94Error: unknown ancestor ############################## WARN [01-11|10:58:40] Synchronisation failed, dropping peerpeer=local err="retrieved hash chain is invalid" WARN [01-11|10:58:40] Downloader wants to drop peer, but peerdrop-function is not set peer=local retrieved hash chain is invalid
这是因为你必须先初始化你自己的创世区块,然后再去复制别人的chaindata
5.dump
格式:
geth dump [ | ]
选项:
ETHEREUM OPTIONS: --datadir "/Users/user/Library/Ethereum"指明数据库和密钥存储文件的数据目录PERFORMANCE TUNING OPTIONS: 性能调优选项 --cache value分配给内部缓存的内存的兆字节 (默认值为: 1024)
参数被解释为块号或块hash。
使用“ethereum dump 0”来得到genesis创世块。输出区块的信息
举例:
有一个本地环境如下:
userdeMBP:testCopy user$ geth --datadir ./data0 console 2>>geth.log Welcome to the Geth JavaScript console!instance: Geth/v1.8.3-stable/darwin-amd64/go1.10.1 coinbase: 0xe4029d8e973c6e61ece8f9ce03abb002fe4f29ba at block: 2 (Fri, 11 Jan 2019 11:33:58 CST) datadir: /Users/user/testCopy/data0 modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0> eth.blockNumber 2 > exit
输出第二个区块的信息:
userdeMBP:testCopy user$ geth --datadir ./data0 dump 2 INFO [01-11|11:41:52] Maximum peer countETH=25 LES=0 total=25 INFO [01-11|11:41:52] Allocated cache and file handlesdatabase=/Users/user/testCopy/data0/geth/chaindata cache=768 handles=1024 INFO [01-11|11:41:52] Disk storage enabled for ethash cachesdir=/Users/user/testCopy/data0/geth/ethash count=3 INFO [01-11|11:41:52] Disk storage enabled for ethash DAGsdir=/Users/user/.ethashcount=2 INFO [01-11|11:41:52] Loaded most recent local headernumber=2 hash=84d34d…36d579 td=761209 INFO [01-11|11:41:52] Loaded most recent local full blocknumber=2 hash=84d34d…36d579 td=761209 INFO [01-11|11:41:52] Loaded most recent local fast blocknumber=2 hash=84d34d…36d579 td=761209 { "root": "09eaf04aa8f7683f10f6e936300a60ef9c18b0fbd80319a9e99e872c64f3682e", "accounts": { "e4029d8e973c6e61ece8f9ce03abb002fe4f29ba": { "balance": "6000000000000000000", "nonce": 0, "root": "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "codeHash": "c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "code": "", "storage": {} } } } INFO [01-11|11:41:52] Database closeddatabase=/Users/user/testCopy/data0/geth/chaindata
如果是一个不存在的区块,会报错:
userdeMBP:testCopy user$ geth --datadir ./data0 dump 1492 INFO [01-11|16:42:52] Maximum peer countETH=25 LES=0 total=25 INFO [01-11|16:42:52] Allocated cache and file handlesdatabase=/Users/user/testCopy/data0/geth/chaindata cache=768 handles=1024 INFO [01-11|16:42:52] Disk storage enabled for ethash cachesdir=/Users/user/testCopy/data0/geth/ethash count=3 INFO [01-11|16:42:52] Disk storage enabled for ethash DAGsdir=/Users/user/.ethashcount=2 INFO [01-11|16:42:52] Loaded most recent local headernumber=2 hash=fdf89d…d6af3b td=761209 INFO [01-11|16:42:52] Loaded most recent local full blocknumber=1491 hash=6af9a8…27f4f1 td=216562781 INFO [01-11|16:42:52] Loaded most recent local fast blocknumber=2hash=fdf89d…d6af3b td=761209 {} Fatal: block not found
但是中间有报另一个错:
userdeMBP:testCopy user$ geth --datadir ./data0 dump 10 INFO [01-11|11:46:30] Maximum peer countETH=25 LES=0 total=25 INFO [01-11|11:46:30] Allocated cache and file handlesdatabase=/Users/user/testCopy/data0/geth/chaindata cache=768 handles=1024 INFO [01-11|11:46:30] Disk storage enabled for ethash cachesdir=/Users/user/testCopy/data0/geth/ethash count=3 INFO [01-11|11:46:30] Disk storage enabled for ethash DAGsdir=/Users/user/.ethashcount=2 INFO [01-11|11:46:30] Loaded most recent local headernumber=2 hash=84d34d…36d579 td=761209 INFO [01-11|11:46:30] Loaded most recent local full blocknumber=2 hash=84d34d…36d579 td=761209 INFO [01-11|11:46:30] Loaded most recent local fast blocknumber=2 hash=84d34d…36d579 td=761209 Fatal: could not create new state: missing trie node af696276bd40988db6e69cb43231b378a6e802ff4230c8f79ed56e98ef94bc73 (path )
这个的对应代码是:
state, err := state.New(block.Root(), state.NewDatabase(chainDb)) if err != nil { utils.Fatalf("could not create new state: %v", err)
好像是在区块验证过程中出现了错误
6.dumpconfig
格式:
geth dumpconfig [command options] [arguments...]
显示配置信息
选项:基本就是geth的所有选项,这些选项可以改变配置的对应值的信息
举例:
得到所有的配置信息
userdeMBP:testCopy user$ geth --datadir ./data0 dumpconfig INFO [01-11|14:17:13] Maximum peer countETH=25 LES=0 total=25 [Eth] NetworkId = 1 SyncMode = "fast" LightPeers = 100 DatabaseCache = 768 GasPrice = 18000000000 EnablePreimageRecording = false[Eth.Ethash] CacheDir = "ethash" CachesInMem = 2 CachesOnDisk = 3 DatasetDir = "/Users/user/.ethash" DatasetsInMem = 1 DatasetsOnDisk = 2 PowMode = 0[Eth.TxPool] NoLocals = false Journal = "transactions.rlp" Rejournal = 3600000000000 PriceLimit = 1 PriceBump = 10 AccountSlots = 16 GlobalSlots = 4096 AccountQueue = 64 GlobalQueue = 1024 Lifetime = 10800000000000[Eth.GPO] Blocks = 20 Percentile = 60[Shh] MaxMessageSize = 1048576 MinimumAcceptedPOW = 2e-01[Node] DataDir = "data0" IPCPath = "geth.ipc" HTTPPort = 8545 HTTPVirtualHosts = ["localhost"] HTTPModules = ["net", "web3", "eth", "shh"] WSPort = 8546 WSModules = ["net", "web3", "eth", "shh"][Node.P2P] MaxPeers = 25 NoDiscovery = false BootstrapNodes = ["enode://a979fb575495b8d6db44f750317d0f4622bf4c2aa3365d6af7c284339968eef29b69ad0dce72a4d8db5ebb4968de0e3bec910127f134779fbcb0cb6d3331163c@52.16.188.185:30303", "enode://3f1d12044546b76342d59d4a05532c14b85aa669704bfe1f864fe079415aa2c02d743e03218e57a33fb94523adb54032871a6c51b2cc5514cb7c7e35b3ed0a99@13.93.211.84:30303", "enode://78de8a0916848093c73790ead81d1928bec737d565119932b98c6b100d944b7a95e94f847f689fc723399d2e31129d182f7ef3863f2b4c820abbf3ab2722344d@191.235.84.50:30303", "enode://158f8aab45f6d19c6cbf4a089c2670541a8da11978a2f90dbf6a502a4a3bab80d288afdbeb7ec0ef6d92de563767f3b1ea9e8e334ca711e9f8e2df5a0385e8e6@13.75.154.138:30303", "enode://1118980bf48b0a3640bdba04e0fe78b1add18e1cd99bf22d53daac1fd9972ad650df52176e7c7d89d1114cfef2bc23a2959aa54998a46afcf7d91809f0855082@52.74.57.123:30303", "enode://979b7fa28feeb35a4741660a16076f1943202cb72b6af70d327f053e248bab9ba81760f39d0701ef1d8f89cc1fbd2cacba0710a12cd5314d5e0c9021aa3637f9@5.1.83.226:30303"] BootstrapNodesV5 = ["enode://06051a5573c81934c9554ef2898eb13b33a34b94cf36b202b69fde139ca17a85051979867720d4bdae4323d4943ddf9aeeb6643633aa656e0be843659795007a@35.177.226.168:30303", "enode://0cc5f5ffb5d9098c8b8c62325f3797f56509bff942704687b6530992ac706e2cb946b90a34f1f19548cd3c7baccbcaea354531e5983c7d1bc0dee16ce4b6440b@40.118.3.223:30304", "enode://1c7a64d76c0334b0418c004af2f67c50e36a3be60b5e4790bdac0439d21603469a85fad36f2473c9a80eb043ae60936df905fa28f1ff614c3e5dc34f15dcd2dc@40.118.3.223:30306", "enode://85c85d7143ae8bb96924f2b54f1b3e70d8c4d367af305325d30a61385a432f247d2c75c45c6b4a60335060d072d7f5b35dd1d4c45f76941f62a4f83b6e75daaf@40.118.3.223:30307"] StaticNodes = [] TrustedNodes = [] ListenAddr = ":30303" EnableMsgEvents = false[Dashboard] Host = "localhost" Port = 8080 Refresh = 5000000000
比如使用了--networkid 1500,对应的配置信息也会变化:
userdeMBP:testCopy user$ geth --datadir ./data0 --networkid 1500 dumpconfig INFO [01-11|14:23:19] Maximum peer countETH=25 LES=0 total=25 [Eth] NetworkId = 1500 SyncMode = "fast"
7.export
格式:
geth export [command options] [arguments...]
选项:
ETHEREUM OPTIONS: --datadir "/Users/user/Library/Ethereum"数据库和keystore的数据目录PERFORMANCE TUNING OPTIONS:性能调优选项 --cache value分配给内部缓存的内存的兆字节 (默认值为: 1024)DEPRECATED OPTIONS:弃用选项 --light启用轻客户模式
用来导出一个区块链文件,即所有区块数据
举例:
userdeMBP:testCopy user$ geth --datadir ./data0 export Fatal: This command requires an argument.//后面要有参数,我猜测是导出文件的名字,这里命名为exportFile1 userdeMBP:testCopy user$ geth --datadir ./data0 export exportFile1 INFO [01-11|14:30:14] Maximum peer countETH=25 LES=0 total=25 INFO [01-11|14:30:14] Allocated cache and file handlesdatabase=/Users/user/testCopy/data0/geth/chaindata cache=768 handles=1024 INFO [01-11|14:30:14] Disk storage enabled for ethash cachesdir=/Users/user/testCopy/data0/geth/ethash count=3 INFO [01-11|14:30:14] Disk storage enabled for ethash DAGsdir=/Users/user/.ethashcount=2 INFO [01-11|14:30:14] Loaded most recent local headernumber=2 hash=84d34d…36d579 td=761209 INFO [01-11|14:30:14] Loaded most recent local full blocknumber=2 hash=84d34d…36d579 td=761209 INFO [01-11|14:30:14] Loaded most recent local fast blocknumber=2 hash=84d34d…36d579 td=761209 INFO [01-11|14:30:14] Exporting blockchainfile=exportFile1 INFO [01-11|14:30:14] Exporting batch of blockscount=3 INFO [01-11|14:30:14] Exported blockchainfile=exportFile1 Export done in 409.624μs
然后就能在当前目录中看见生成了一个exportFile1可执行文件,里面内容为:
f901 f9f9 01f4 a000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 00a0 1dcc 4de8 dec7 5d7a ab85 b567 b6cc d41a d312 451b 948a 7413 f0a1 42fd 40d4 9347 9400 0000 0000 0000 0000 0000 0000 0000 0000 0000 00a0 56e8 1f17 1bcc 55a6 ff83 45e6 92c0 f86e 5b48 e01b 996c adc0 0162 2fb5 e363 b421 a056 e81f 171b cc55 a6ff 8345 e692 c0f8 6e5b 48e0 1b99 6cad c001 622f b5e3 63b4 21a0 56e8 1f17 1bcc 55a6 ff83 45e6 92c0 f86e 5b48 e01b 996c adc0 0162 2fb5 e363 b421 b901 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ...
8.export-preimages
格式:
export-preimages [command options] [arguments...]
选项:
ETHEREUM OPTIONS: --datadir "/Users/user/Library/Ethereum"数据库和keystore的数据目录PERFORMANCE TUNING OPTIONS:性能调优选项 --cache value分配给内部缓存的内存的兆字节 (默认值为: 1024)DEPRECATED OPTIONS:弃用选项 --light启用轻客户模式
将hash预镜像导出到RLP编码的流
举例:
userdeMBP:testCopy user$ geth --datadir ./data0 export-preimages exportPreImage INFO [01-11|14:38:14] Maximum peer countETH=25 LES=0 total=25 INFO [01-11|14:38:14] Allocated cache and file handlesdatabase=/Users/user/testCopy/data0/geth/chaindata cache=768 handles=1024 INFO [01-11|14:38:14] Exporting preimagesfile=exportPreImage INFO [01-11|14:38:14] Exported preimagesfile=exportPreImage Export done in 4.128379ms
然后就能在当前目录中看见生成了一个exportPreImage可执行文件,里面内容为:
”??—
9.import
格式:
geth import [command options] [arguments...]
选项:
ETHEREUM OPTIONS: --datadir "/Users/user/Library/Ethereum"数据库和keystore的数据目录 --gcmode value区块链垃圾收集模式 ("full", "archive") (default: "full")PERFORMANCE TUNING OPTIONS:性能调优选项 --cache value分配给内部缓存的内存的兆字节 (默认值为: 1024) --cache.database value用于数据库io的缓存内存预留百分比 (default: 75) --cache.gc value用于trie修剪的缓存内存预留百分比 (default: 25)DEPRECATED OPTIONS:弃用选项 --light启用轻客户模式
import命令从rlp编码的表单导入块。表单可以是一个包含几个rlp编码块的文件,也可以使用多个文件。
如果只使用一个文件,导入错误将导致失败。如果使用多个文件,即使出现单独的rlp文件导入失败,处理也将继续。
用来导入一个区块链文件,基本上相当于同步操作
举例,导入刚刚导出的数据:
userdeMBP:testCopy user$ geth --datadir ./data0 import exportFile1 INFO [01-11|14:43:09] Maximum peer countETH=25 LES=0 total=25 INFO [01-11|14:43:09] Allocated cache and file handlesdatabase=/Users/user/testCopy/data0/geth/chaindata cache=768 handles=1024 INFO [01-11|14:43:09] Disk storage enabled for ethash cachesdir=/Users/user/testCopy/data0/geth/ethash count=3 INFO [01-11|14:43:09] Disk storage enabled for ethash DAGsdir=/Users/user/.ethashcount=2 INFO [01-11|14:43:09] Loaded most recent local headernumber=2 hash=84d34d…36d579 td=761209 INFO [01-11|14:43:09] Loaded most recent local full blocknumber=2 hash=84d34d…36d579 td=761209 INFO [01-11|14:43:09] Loaded most recent local fast blocknumber=2 hash=84d34d…36d579 td=761209 INFO [01-11|14:43:09] Importing blockchainfile=exportFile1 INFO [01-11|14:43:09] Skipping batch as all blocks presentbatch=0 first=309fc9…1b7bde last=84d34d…36d579 INFO [01-11|14:43:09] Writing cached state to diskblock=2 hash=84d34d…36d579 root=09eaf0…f3682e INFO [01-11|14:43:09] Persisted trie from memory databasenodes=0 size=0.00B time=33.291μs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B INFO [01-11|14:43:09] Writing cached state to diskblock=1 hash=309fc9…1b7bde root=a5122d…57851e INFO [01-11|14:43:09] Persisted trie from memory databasenodes=0 size=0.00B time=1.068μsgcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B INFO [01-11|14:43:09] Blockchain manager stopped Import done in 849.233μs.Compactions Level |Tables|Size(MB)|Time(sec)|Read(MB)|Write(MB) -------+------------+---------------+---------------+---------------+--------------- 0|5 |0.00108 |0.00000 |0.00000 |0.00000 1|1 |0.61511 |0.00000 |0.00000 |0.00000Read(MB):0.15649 Write(MB):0.10170 Trie cache misses:0 Trie cache unloads: 0Object memory: 194.334 MB current, 194.111 MB peak System memory: 405.694 MB current, 405.444 MB peak Allocations:0.017 million GC pause:305.935μsCompacting entire database... Compaction done in 152.183203ms.Compactions Level |Tables|Size(MB)|Time(sec)|Read(MB)|Write(MB) -------+------------+---------------+---------------+---------------+--------------- 0|0 |0.00000 |0.00119 |0.00000 |0.00021 1|1 |0.61511 |0.15276 |1.23150 |1.23021Read(MB):1.23723 Write(MB):1.23117 INFO [01-11|14:43:09] Database closeddatabase=/Users/user/testCopy/data0/geth/chaindata
10.import-preimages
格式:
geth import-preimages [command options] [arguments...]
选项:
ETHEREUM OPTIONS: --datadir "/Users/user/Library/Ethereum"数据库和keystore的数据目录PERFORMANCE TUNING OPTIONS:性能调优选项 --cache value分配给内部缓存的内存的兆字节 (默认值为: 1024)DEPRECATED OPTIONS:弃用选项 --light启用轻客户模式
从RLP编码的流导入hash预镜像
结合
import和export其实是结合起来使用的用于同步两个区块的数据
比如一开始我的testCopy目录中的数据只同步了2个区块,today1目录下的区块有1491个区块,同步两边区块的方法就是使用export导出today1下的区块链文件,然后将该区块链文件导入testCopy中,同步就完成了,执行如下:
1)首先export出today1的区块链文件:
userdeMBP:~ user$ cd today1 userdeMBP:today1 user$ geth --datadir ./data0 export exportFile INFO [01-11|14:56:34] Maximum peer countETH=25 LES=0 total=25 INFO [01-11|14:56:34] Allocated cache and file handlesdatabase=/Users/user/today1/data0/geth/chaindata cache=768 handles=1024 INFO [01-11|14:56:34] Disk storage enabled for ethash cachesdir=/Users/user/today1/data0/geth/ethash count=3 INFO [01-11|14:56:34] Disk storage enabled for ethash DAGsdir=/Users/user/.ethashcount=2 INFO [01-11|14:56:34] Loaded most recent local headernumber=1491 hash=6af9a8…27f4f1 td=216562781 INFO [01-11|14:56:34] Loaded most recent local full blocknumber=1491 hash=6af9a8…27f4f1 td=216562781 INFO [01-11|14:56:34] Loaded most recent local fast blocknumber=1491 hash=6af9a8…27f4f1 td=216562781 INFO [01-11|14:56:34] Exporting blockchainfile=exportFile INFO [01-11|14:56:34] Exporting batch of blockscount=1492 INFO [01-11|14:56:34] Exported blockchainfile=exportFile Export done in 222.88291ms
2)然后将导出的exportFile文件放到testCopy目录下,然后import:
userdeMBP:today1 user$ cd .. userdeMBP:~ user$ cd testCopy/ userdeMBP:testCopy user$ geth --datadir ./data0 import exportFile INFO [01-11|14:58:56] Maximum peer countETH=25 LES=0 total=25 INFO [01-11|14:58:56] Allocated cache and file handlesdatabase=/Users/user/testCopy/data0/geth/chaindata cache=768 handles=1024 INFO [01-11|14:58:56] Disk storage enabled for ethash cachesdir=/Users/user/testCopy/data0/geth/ethash count=3 INFO [01-11|14:58:56] Disk storage enabled for ethash DAGsdir=/Users/user/.ethashcount=2 INFO [01-11|14:58:56] Loaded most recent local headernumber=2 hash=84d34d…36d579 td=761209 INFO [01-11|14:58:56] Loaded most recent local full blocknumber=2 hash=84d34d…36d579 td=761209 INFO [01-11|14:58:56] Loaded most recent local fast blocknumber=2 hash=84d34d…36d579 td=761209 INFO [01-11|14:58:56] Importing blockchainfile=exportFile INFO [01-11|14:58:56] Imported new chain segmentblocks=1 txs=0 mgas=0.000 elapsed=2.528ms mgasps=0.000 number=1 hash=b1c860…fafd94 cache=200.00B INFO [01-11|14:58:56] Imported new chain segmentblocks=1490 txs=186 mgas=50.173 elapsed=494.983ms mgasps=101.362 number=1491 hash=6af9a8…27f4f1 cache=279.71kB INFO [01-11|14:58:56] Writing cached state to diskblock=1491 hash=6af9a8…27f4f1 root=ff8472…04736e INFO [01-11|14:58:56] Persisted trie from memory databasenodes=401 size=160.91kB time=1.697075ms gcnodes=4361 gcsize=829.44kB gctime=7.321206ms livenodes=632 livesize=118.81kB INFO [01-11|14:58:56] Writing cached state to diskblock=1490 hash=ea103c…e25dda root=036ca7…ab9892 INFO [01-11|14:58:56] Persisted trie from memory databasenodes=4size=766.00Btime=55.975μsgcnodes=0gcsize=0.00Bgctime=0slivenodes=628 livesize=118.04kB INFO [01-11|14:58:56] Writing cached state to diskblock=1364 hash=2a246d…f79e6c root=86c771…0d678a INFO [01-11|14:58:56] Persisted trie from memory databasenodes=32size=4.73kBtime=163.8μsgcnodes=0gcsize=0.00Bgctime=0slivenodes=596 livesize=113.31kB INFO [01-11|14:58:56] Blockchain manager stopped Import done in 516.917879ms.Compactions Level |Tables|Size(MB)|Time(sec)|Read(MB)|Write(MB) -------+------------+---------------+---------------+---------------+--------------- 0|1 |0.00023 |0.00000 |0.00000 |0.00000 1|1 |0.61511 |0.00000 |0.00000 |0.00000Read(MB):0.47825 Write(MB):1.77525 Trie cache misses:0 Trie cache unloads: 0Object memory: 205.098 MB current, 194.027 MB peak System memory: 408.772 MB current, 404.944 MB peak Allocations:1.389 million GC pause:770.634μsCompacting entire database... Compaction done in 40.568772ms.Compactions Level |Tables|Size(MB)|Time(sec)|Read(MB)|Write(MB) -------+------------+---------------+---------------+---------------+--------------- 0|0 |0.00000 |0.01313 |0.00000 |0.77336 1|1 |0.70644 |0.01905 |1.38869 |0.70644Read(MB):1.37347 Write(MB):3.25529 INFO [01-11|14:58:56] Database closeddatabase=/Users/user/testCopy/data0/geth/chaindata
3)这个时候去查看testCopy控制台的区块数,果然变成了:
> eth.blockNumber 1491
4)这时候再导出testCopy的区块链文件,可以发现和today1的区块链文件的值是相同的L:
userdeMBP:testCopy user$ geth --datadir ./data0 export exportFile2 INFO [01-11|14:59:16] Maximum peer countETH=25 LES=0 total=25 INFO [01-11|14:59:16] Allocated cache and file handlesdatabase=/Users/user/testCopy/data0/geth/chaindata cache=768 handles=1024 INFO [01-11|14:59:16] Disk storage enabled for ethash cachesdir=/Users/user/testCopy/data0/geth/ethash count=3 INFO [01-11|14:59:16] Disk storage enabled for ethash DAGsdir=/Users/user/.ethashcount=2 INFO [01-11|14:59:16] Loaded most recent local headernumber=2 hash=fdf89d…d6af3b td=761209 INFO [01-11|14:59:16] Loaded most recent local full blocknumber=1491 hash=6af9a8…27f4f1 td=216562781 INFO [01-11|14:59:16] Loaded most recent local fast blocknumber=2hash=fdf89d…d6af3b td=761209 INFO [01-11|14:59:16] Exporting blockchainfile=exportFile2 INFO [01-11|14:59:16] Exporting batch of blockscount=1492 INFO [01-11|14:59:16] Exported blockchainfile=exportFile2 Export done in 130.764885ms
??import和export运行的比较慢,因为区块上的所有交易都会被检查
11.init
格式:
geth init [command options] [arguments...]
选项:
ETHEREUM OPTIONS: --datadir "/Users/user/Library/Ethereum"数据库和keystore的数据目录DEPRECATED OPTIONS:弃用选项 --light启用轻客户模式
init命令初始化网络的新genesis块和定义。
这是一个破坏性的行为,会改变你所参与的网络。
它希望将genesis.json文件作为参数。
举例:
userdeMBP:testCopy user$ geth --datadir ./data0 init genesis.json INFO [01-11|11:04:14] Maximum peer countETH=25 LES=0 total=25 INFO [01-11|11:04:14] Allocated cache and file handlesdatabase=/Users/user/testCopy/data0/geth/chaindata cache=16 handles=16 INFO [01-11|11:04:14] Writing custom genesis block INFO [01-11|11:04:14] Persisted trie from memory databasenodes=0 size=0.00B time=8.482μs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B INFO [01-11|11:04:14] Successfully wrote genesis statedatabase=chaindatahash=a0e580…a5e82e INFO [01-11|11:04:14] Allocated cache and file handlesdatabase=/Users/user/testCopy/data0/geth/lightchaindata cache=16 handles=16 INFO [01-11|11:04:14] Writing custom genesis block INFO [01-11|11:04:14] Persisted trie from memory databasenodes=0 size=0.00B time=1.893μs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B INFO [01-11|11:04:14] Successfully wrote genesis statedatabase=lightchaindatahash=a0e580…a5e82e
genesis.json类似:
{ "config": { "chainId": 1500, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0, "ByzantiumBlock": 0 }, "coinbase" : "0x0000000000000000000000000000000000000000", "difficulty" : "0x40000", "extraData" : "", "gasLimit" : "0xffffffff", "nonce" : "0x0000000000000042", "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "timestamp" : "0x00", "alloc": {} }
12.js
格式:
geth js
[jsfile...]
选项:基本就是geth的所有选项
JavaScript VM暴露节点管理界面以及Dapp JavaScript API。参见https://github.com/ethereum/go-ethereum/wiki/JavaScript-Console
执行指定的JavaScript文件(可以为多个文件)
举例:
生成一个test.js文件:
console.log("hello")
然后运行:
userdeMBP:today2 user$ geth js test.js INFO [01-11|15:35:10] Maximum peer countETH=25 LES=0 total=25 INFO [01-11|15:35:10] Starting peer-to-peer nodeinstance=Geth/v1.8.3-stable/darwin-amd64/go1.10.1 INFO [01-11|15:35:10] Allocated cache and file handlesdatabase=/Users/user/Library/Ethereum/geth/chaindata cache=768 handles=128 INFO [01-11|15:35:10] Initialised chain configurationconfig="{ChainID: 1 Homestead: 1150000 DAO: 1920000 DAOSupport: true EIP150: 2463000 EIP155: 2675000 EIP158: 2675000 Byzantium: 4370000 Constantinople:Engine: ethash}" INFO [01-11|15:35:10] Disk storage enabled for ethash cachesdir=/Users/user/Library/Ethereum/geth/ethash count=3 INFO [01-11|15:35:10] Disk storage enabled for ethash DAGsdir=/Users/user/.ethashcount=2 INFO [01-11|15:35:10] Initialising Ethereum protocolversions="[63 62]" network=1 INFO [01-11|15:35:10] Loaded most recent local headernumber=654395 hash=410ec3…d5895e td=3904096205036238619 INFO [01-11|15:35:10] Loaded most recent local full blocknumber=0hash=d4e567…cb8fa3 td=17179869184 INFO [01-11|15:35:10] Loaded most recent local fast blocknumber=652112 hash=18a7ea…21dbcf td=3886518230582438446 INFO [01-11|15:35:10] Loaded local transaction journaltransactions=0 dropped=0 INFO [01-11|15:35:10] Regenerated local transaction journaltransactions=0 accounts=0 INFO [01-11|15:35:10] Starting P2P networking INFO [01-11|15:35:10] UDP listener upself=enode://0a6a3338224c1e12308ca3084b99f2661ef94f8ad228ce8d82879feb6eadb0fbc1d0fc8ca909342f3a68d66c94879888546bbdb638a51b0f9526e36b40333914@10.240.100.98:30303 INFO [01-11|15:35:10] RLPx listener upself=enode://0a6a3338224c1e12308ca3084b99f2661ef94f8ad228ce8d82879feb6eadb0fbc1d0fc8ca909342f3a68d66c94879888546bbdb638a51b0f9526e36b40333914@10.240.100.98:30303 INFO [01-11|15:35:10] IPC endpoint openedurl=/Users/user/Library/Ethereum/geth.ipc hello INFO [01-11|15:35:10] IPC endpoint closedendpoint=/Users/user/Library/Ethereum/geth.ipc INFO [01-11|15:35:10] Blockchain manager stopped INFO [01-11|15:35:10] Stopping Ethereum protocol INFO [01-11|15:35:10] Ethereum protocol stopped INFO [01-11|15:35:10] Transaction pool stopped INFO [01-11|15:35:10] Database closeddatabase=/Users/user/Library/Ethereum/geth/chaindata INFO [01-11|15:35:10] Mapped network portproto=udp extport=30303 intport=30303 interface=NAT-PMP(192.168.199.1) INFO [01-11|15:35:11] Mapped network portproto=tcp extport=30303 intport=30303 interface=NAT-PMP(192.168.199.1)
目的是为了干啥??????
如果运行复杂一点的内容:
var ethers = require('ethers'); var customHttpProvider = new ethers.providers.JsonRpcProvider("http://localhost:8202"); console.log(customHttpProvider.getBalance("0x39f03934f1d9afbff39a395364416e71eae375cd"));
会报错:
Fatal: Failed to execute test.js: Error: Cannot find module 'ethers'
但是这个模块命名安装在today2目录里面,不懂??????
13.license
格式:
geth license
举例:
userdeMBP:~ user$ geth license Geth is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.Geth is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.You should have received a copy of the GNU General Public License along with geth. If not, see .
14.makecache
格式:
geth makecache
makecache命令在中生成一个ethash验证缓存。
此命令用于在支持系统测试项目。
普通用户不需要执行它。
举例,对区块1生成ethash缓存:
userdeMBP:testCopy user$ geth --datadir data0 makecache 1 .
结果就是在当前目录下生成了一个如下图所示的cache-R23-0000000000000000文件:
文章图片
15.makedag
格式:
geth makedag
makedag命令在中生成挖矿需要的 DAG 数据集。
此命令用于支持系统测试项目。
普通用户不需要执行它。
??Ethash是PoW系统,它需要一个大约1GB的数据集,它就是DAG。这通常需要几个小时才能生成,所以我们倾向于在硬盘中存储它
举例:
userdeMBP:testCopy user$ geth --datadir data0 makedag 1 . INFO [01-11|16:01:19] Generating DAG in progressepoch=0 percentage=0 elapsed=1.322s INFO [01-11|16:01:20] Generating DAG in progressepoch=0 percentage=1 elapsed=2.422s INFO [01-11|16:01:21] Generating DAG in progressepoch=0 percentage=2 elapsed=3.490s INFO [01-11|16:01:22] Generating DAG in progressepoch=0 percentage=3 elapsed=4.554s INFO [01-11|16:01:23] Generating DAG in progressepoch=0 percentage=4 elapsed=5.692s INFO [01-11|16:01:25] Generating DAG in progressepoch=0 percentage=5 elapsed=6.718s INFO [01-11|16:01:26] Generating DAG in progressepoch=0 percentage=6 elapsed=7.752s ... INFO [01-11|16:03:22] Generating DAG in progressepoch=0 percentage=98 elapsed=2m4.000s INFO [01-11|16:03:24] Generating DAG in progressepoch=0 percentage=99 elapsed=2m5.783s INFO [01-11|16:03:24] Generated ethash verification cacheepoch=0 elapsed=2m5.786s
然后会在当前目录下生成full-R23-0000000000000000文件
??一般我们在新生成一个私有网络时,当我们运行miner.start()要开始挖矿之前,都会先生成挖矿需要使用的DAG数据集,它是用于以太坊工作量证明PoW算法的数据集
16.monitor
格式:
geth monitor [command options] [arguments...]
选项:
MISC OPTIONS: --attach value连接的API端点(default: "/Users/user/Library/Ethereum/geth.ipc") --rows value图表网格中的最大行数(default: 5) --refresh value刷新间隔(秒)(default: 3)
Geth monitor是一种工具,用于收集和可视化节点收集的各种内部指标,支持不同的图表类型以及同时显示多个指标的能力。
举例:
userdeMBP:today2 user$ geth --datadir data0 monitor --attach=/Users/user/today2/data0/geth.ipc Fatal: Unable to attach to geth node: dial unix /Users/user/today2/data0/geth.ipc: connect: connection refused
错误因为没有打开today2控制台
userdeMBP:today2 user$ geth --datadir data0 monitor --attach=/Users/user/today2/data0/geth.ipc Fatal: No metrics specified.Available: - chain/inserts/AvgRate01Min - chain/inserts/AvgRate05Min - chain/inserts/AvgRate15Min - chain/inserts/MeanRate ... - txpool/queued/discard/Overall - txpool/queued/nofunds/Overall - txpool/queued/ratelimit/Overall - txpool/queued/replace/Overall - txpool/underpriced/Overall
有错:
Fatal: No metrics specified.
并不懂,可能是需要什么参数??????
17.removedb
格式:
geth removedb
选项:
ETHEREUM OPTIONS: --datadir "/Users/user/Library/Ethereum"数据库和keystore的数据目录DEPRECATED OPTIONS:弃用选项 --light启用轻客户模式
移除区块链和状态数据库,其实就是把"chaindata", "lightchaindata"两个文件夹中的数据删除
userdeMBP:testCopy user$ geth --datadir data0 removedb INFO [01-11|17:00:17] Maximum peer countETH=25 LES=0 total=25 /Users/user/testCopy/data0/geth/chaindata Remove this database? [y/N] y Remove this database? [y/N] y INFO [01-11|17:00:21] Database successfully deleteddatabase=chaindata elapsed=6.990ms /Users/user/testCopy/data0/geth/lightchaindata Remove this database? [y/N] y Remove this database? [y/N] y INFO [01-11|17:00:31] Database successfully deleteddatabase=lightchaindata elapsed=574.6μs userdeMBP:testCopy user$
然后就可以看见对应目录下的这两个文件就没了:
文章图片
18.version
举例:
userdeMBP:today2 user$ geth version Geth Version: 1.8.3-stable Architecture: amd64 Protocol Versions: [63 62] Network Id: 1 Go Version: go1.10.1 Operating System: darwin GOPATH=/Users/user/go GOROOT=/usr/local/opt/go/libexec
这个命令的输出应该是机器可读的
19.wallet
举例:
geth wallet import /path/to/my/presale.wallet
将提示您的密码,并导入您的以太预售帐户。
它可以与--password选项非交互式地使用,该选项将passwordfile作为参数,其中包含明文形式的钱包密码。
20.console
Geth控制台是一个交互式shell的JavaScript运行时环境暴露节点管理界面以及Dapp JavaScript API。
见https://github.com/ethereum/go-ethereum/wiki/JavaScript-Console。
//将配置信息写入geth.toml文件中 userdeMBP:today2 user$geth --datadir data0 --networkid 1500 --port 61911 --rpc --rpcapi 'eth,net,web3,admin,personal,miner,debug' --rpccorsdomain '*' --rpcport 8202 dumpconfig > ./geth.toml //然后使用--config指向配置文件来运行控制台,并将日志写到geth.log文件中 userdeMBP:today2 user$ geth --config geth.toml console 2>>geth.log Welcome to the Geth JavaScript console!instance: Geth/v1.8.3-stable/darwin-amd64/go1.10.1 coinbase: 0x3b896fb3e31fc9b91921d19b8c7271d1c3af5b35 at block: 6486 (Thu, 10 Jan 2019 11:37:33 CST) datadir: /Users/user/today2/data0 modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0>
【从头到尾使用Geth的说明-2-cli可用命令-有2个地方标红,之后查查源码后看看能不能解决...】转载于:https://www.cnblogs.com/wanghui-garcia/p/10252260.html
推荐阅读
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- iOS中的Block
- Linux下面如何查看tomcat已经使用多少线程
- 使用composer自动加载类文件
- android|android studio中ndk的使用
- 使用协程爬取网页,计算网页数据大小