# 深入学习 Go-Ethereum : 014. CMD 模块 - Geth -usage.go&version_check.go **Published by:** [OutOfToken](https://paragraph.com/@lua/) **Published on:** 2022-07-29 **URL:** https://paragraph.com/@lua/go-ethereum-014-cmd-geth-usage-go-version-check-go ## Content ⬇️以下是 cmd/geth 包中其他代码的介绍:├── accountcmd.go ├── chaincmd.go ├── config.go ├── consolecmd.go ├── dbcmd.go ├── misccmd.go ├── snapshot.go ├── usage.go 🔫 └── version_check.go 🔫 《深入学习 Go-Ethereum : 013. CMD 模块 - Geth - snapshot.go》中罗列了 snapshot 子命令集主要源码,接下来描述下关于 usage.go&version_check.go 中的代码功能。⬇️ usage.gousage 主要定义了众多flag相关信息,并对帮助信息进行打印。其中使用helper.go中相关方法和结构体完成主要功能。 👇定义了命令的名称和使用说明⬇️ version_check.go主要功能是进行 geth 对应版本的漏洞检查,使用命令 geth version_check (命令定义在 misccmd.go ),如果不传入参数,默认请求的校验地址是version_check_url。 👇JSON数据如图,包含了name、uid、CVE编号等等信息。👇核心代码结构version_check.go使用效果如图:截止到此, geth 中相关的主要代码已经了解大概,后续穿插了解记录关于 cmd 模块中其他命令的主要代码。后续规划了解 geth 的业务核心代码 (列表如下👇):基础组件(密码学、数据序列化/反序列化、数据存储):🔖 rlp - 以太坊序列化-递归线性前缀(Recursive Linear Prefix)模块🔖 trie - 改进的默克尔+前缀树 MPT(Merkle Patricia Tries)❇️ ethdb - 以太坊堆数据库的操作代码,包含了levelDB和内存数据库❇️ common - 公用工具,如:debug、数学相关、bit工具等❇️ internal - 项目内部使用工具代码,如构建、debug、调用服务API、测试指南、测试日志、web3js扩展等网络层(p2p、rpc):🔖 p2p - 点对点网络协议相关实现🔖 rpc - 以太坊RPC服务业务层(账户体系、交易、共识机制、gas、evm等):🔖 accounts - 以太坊的钱包、地址、账号系统,不同于 Bitcoin 的 UTXO 模式🔖consensus - 共识机制,实现不同的以太坊共识机制引擎❇️ core - 系统核心的数据结构和基础模块,如 虚拟机 、状态模块、批量数据的布隆过滤器 、RawDB、汇编模块❇️ eth - 以太坊协议的核心模块,包含了节点发现、全节点数据下载、eth配置、数据获取(base header、交易、区块)、协议(广播、点对点等)、gas模块🔖miner - 提供以太坊的区块创建和挖矿❇️ : 穿插在其他模块了解、分析代码。 🔖 :主入口,顺序为 rlp → trie → accounts → consensus → miner → p2p → rpc ## Publication Information - [OutOfToken](https://paragraph.com/@lua/): Publication homepage - [All Posts](https://paragraph.com/@lua/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@lua): Subscribe to updates - [Twitter](https://twitter.com/HetaoFei): Follow on Twitter