《深入学习 Go-Ethereum : 009. CMD 模块 - Geth - config.go》中罗列了 config
主要源码,接下来描述下关于 consolecmd.go
中的代码功能
⬇️以下是 cmd/geth 包中其他代码的介绍:
├── accountcmd.go
├── chaincmd.go
├── config.go
├── consolecmd.go 🔫
├── dbcmd.go
├── misccmd.go
├── snapshot.go
├── usage.go
└── version_check.go
consolecmd 主要功能是创建一个可以交互的Javascript环境(本地节点、远程节点、临时执行js文件的节点),代码主要包含了 3 个子命令 js
、 attach
、console
及实现相应功能的4个函数。
1.创建环境,准备全节点
。
2.通过stack.Attach 创建rpc客户端(通过ipc通信。
3.根据参数获取配置信息后,创建console对象,生成js交互环境。并开启goroutine等待statck信息。
1.解析参数,判断是 RPC 还是 IPC
,如果是IPC ,判断是什么网络(主网、Ropsten、Rinkeby等)。
2.调用 dialRPC 方法,创建 endpoint 的 RPC 客户端。
3.根据参数获取配置信息后,创建console对象,生成js交互环境。并开启goroutine等待statck信息。
如果参数为空,默认开启 IPC 连接,否则创建 RPC 客户端
1.创建一个全节点服务。
2.goroutine 异步等待。
3.遍历参数中的js文件,执行完毕后,关闭console。