深入学习 Go-Ethereum : 010. CMD 模块 - Geth -consolecmd.go

《深入学习 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.go

consolecmd 主要功能是创建一个可以交互的Javascript环境(本地节点、远程节点、临时执行js文件的节点),代码主要包含了 3 个子命令 jsattachconsole 及实现相应功能的4个函数。

consolecmd.go代码结构
consolecmd.go代码结构

⬇️ localConsole 方法:

1.创建环境,准备全节点

2.通过stack.Attach 创建rpc客户端(通过ipc通信。

3.根据参数获取配置信息后,创建console对象,生成js交互环境。并开启goroutine等待statck信息。

localCache 对应 console 命令
localCache 对应 console 命令

⬇️ remoteConsole 方法:

1.解析参数,判断是 RPC 还是 IPC,如果是IPC ,判断是什么网络(主网、Ropsten、Rinkeby等)。

2.调用 dialRPC 方法,创建 endpoint 的 RPC 客户端。

3.根据参数获取配置信息后,创建console对象,生成js交互环境。并开启goroutine等待statck信息。

remoteConsole 对应 attach 命令
remoteConsole 对应 attach 命令

⬇️ dialRPC 方法:

如果参数为空,默认开启 IPC 连接,否则创建 RPC 客户端

内部方法,创建RPC endpoint
内部方法,创建RPC endpoint

⬇️ ephemeralConsole 方法:

1.创建一个全节点服务。

2.goroutine 异步等待。

3.遍历参数中的js文件,执行完毕后,关闭console。

ephemeralConsole  对应 js 命令
ephemeralConsole 对应 js 命令
Subscribe to OutOfToken
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.