《深入学习 Go-Ethereum : 006. CMD模块-Geth》 中梳理了启动流程,下面开始梳理同目录下其他子命令。
⬇️以下是 cmd/geth包中其他代码的介绍:
├── accountcmd.go 🔫
├── chaincmd.go
├── config.go
├── consolecmd.go
├── dbcmd.go
├── misccmd.go
├── snapshot.go
├── usage.go
└── version_check.go
⬇️accountcmd.go
accountcmd.go
包含了 account
和 wallet
两个子命令。
两个命令分别是 wallet(预售钱包) 和 account 的管理功能。
例如:列出当前节点中创建或者导入的账号
⬇️ geth account list
⬇️ geth account new
geth wallet import
:用来导入 presale(预售)
账户钱包
account
相关源码
⬆️ accountList 方法,主要是获取当前节点可管理账号信息列表(包含了本地创建、导入的账号)。
代码逻辑是通过 ctx 上下文获取 Node 对象的stack实例,然后获取账户管理器,查询节点的所有钱包信息。然后进行遍历,打印 Account 的地址和 keystore 存储 url 地址。
⬆️ accountCreate 方法,根据用户输入的密码,创建一个账号,控制台打印创建用户对应的公开地址
和 keystore 文件存储路径。具体代码可查看 StoreKey 函数。
⬆️ accountUpdate 方法,输入参数是账号地址,可以对账号的格式进行更新,也可以对账号进行解锁(修改账号的密码,使用 unlockAccount 方法)。
⬆️ unlockAccount 方法, 对指定账号进行解锁。调用 keystore 的 unlock 方法。如果解锁失败,则进行模糊地址(可能存在一个地址对应了多个 keystore 文件)恢复。
⬆️ ambiguousAddrRecovery 方法,修复单一账户对应多个keystore 文件问题。🤔️ 什么情况会出现此现象❓
⬆️ accountImport 方法, keystore.go
使用 ImportECDSA 导入账号信息,这里操作导入的参数是私钥数据所在的文件路径
例如 7b2905d895b6a0e5ba976cff63bb80ac1600c8811f59f74e29919c46e6053dbe
存储在 /Users/zhangyu/z.txt(MacOS)
文件中,使用 geth account import /Users/zhangyu/z.txt
即可。输入密码后,账号导入成功 🎉