深入学习 Go-Ethereum : 014. CMD 模块 - Geth -usage.go&version_check.go

⬇️以下是 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.go

usage 主要定义了众多flag相关信息,并对帮助信息进行打印。其中使用helper.go中相关方法和结构体完成主要功能。

👇定义了命令的名称和使用说明

⬇️ version_check.go

主要功能是进行 geth 对应版本的漏洞检查,使用命令 geth version_check (命令定义在 misccmd.go ),如果不传入参数,默认请求的校验地址是version_check_url

👇JSON数据如图,包含了name、uid、CVE编号等等信息。

👇核心代码结构

version_check.go
version_check.go

使用效果如图:

截止到此, geth 中相关的主要代码已经了解大概,后续穿插了解记录关于 cmd 模块中其他命令的主要代码。后续规划了解 geth 的业务核心代码 (列表如下👇):

  1. 基础组件(密码学、数据序列化/反序列化、数据存储):
    1. 🔖 rlp - 以太坊序列化-递归线性前缀(Recursive Linear Prefix)模块
    2. 🔖 trie - 改进的默克尔+前缀树 MPT(Merkle Patricia Tries)
    3. ❇️ ethdb - 以太坊堆数据库的操作代码,包含了levelDB和内存数据库
    4. ❇️ common - 公用工具,如:debug、数学相关、bit工具等
    5. ❇️ internal - 项目内部使用工具代码,如构建、debug、调用服务API、测试指南、测试日志、web3js扩展等
  2. 网络层(p2p、rpc):
    1. 🔖 p2p - 点对点网络协议相关实现
    2. 🔖 rpc - 以太坊RPC服务
  3. 业务层(账户体系、交易、共识机制、gas、evm等):
    1. 🔖 accounts - 以太坊的钱包、地址、账号系统,不同于 Bitcoin 的 UTXO 模式
    2. 🔖consensus - 共识机制,实现不同的以太坊共识机制引擎
    3. ❇️ core - 系统核心的数据结构和基础模块,如 虚拟机 、状态模块、批量数据的布隆过滤器 、RawDB、汇编模块
    4. ❇️ eth - 以太坊协议的核心模块,包含了节点发现、全节点数据下载、eth配置、数据获取(base header、交易、区块)、协议(广播、点对点等)、gas模块
    5. 🔖miner - 提供以太坊的区块创建和挖矿

❇️ : 穿插在其他模块了解、分析代码。

🔖 :主入口,顺序为 rlptrieaccountsconsensusminerp2prpc

Subscribe to OutOfToken
Receive the latest updates directly to your inbox.
Verification
This entry has been permanently stored onchain and signed by its creator.