深入学习 Go-Ethereum : 007. CMD 模块 - Geth - accountcmd.go

《深入学习 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 源码概览
accountcmd.go 源码概览

accountcmd.go 包含了 accountwallet 两个子命令。

geth 子命令 account 和 wallet
geth 子命令 account 和 wallet

两个命令分别是 wallet(预售钱包) 和 account 的管理功能。

例如:列出当前节点中创建或者导入的账号

⬇️ geth account list

geth account list
geth account list

⬇️ geth account new

geth account new
geth account new

geth wallet import :用来导入 presale(预售) 账户钱包


account 相关源码

accountList
accountList

⬆️ accountList 方法,主要是获取当前节点可管理账号信息列表(包含了本地创建、导入的账号)。

代码逻辑是通过 ctx 上下文获取 Node 对象的stack实例,然后获取账户管理器,查询节点的所有钱包信息。然后进行遍历,打印 Account 的地址和 keystore 存储 url 地址。

accountCreate
accountCreate

⬆️ accountCreate 方法,根据用户输入的密码,创建一个账号,控制台打印创建用户对应的公开地址 和 keystore 文件存储路径。具体代码可查看 StoreKey 函数。

accountUpdate
accountUpdate

⬆️ accountUpdate 方法,输入参数是账号地址,可以对账号的格式进行更新,也可以对账号进行解锁(修改账号的密码,使用 unlockAccount 方法)。

unlockAccount
unlockAccount

⬆️ unlockAccount 方法, 对指定账号进行解锁。调用 keystore 的 unlock 方法。如果解锁失败,则进行模糊地址(可能存在一个地址对应了多个 keystore 文件)恢复。

ambiguousAddrRecovery
ambiguousAddrRecovery

⬆️ ambiguousAddrRecovery 方法,修复单一账户对应多个keystore 文件问题。🤔️ 什么情况会出现此现象❓

accountImport
accountImport

⬆️ accountImport 方法, keystore.go 使用 ImportECDSA 导入账号信息,这里操作导入的参数是私钥数据所在的文件路径

例如 7b2905d895b6a0e5ba976cff63bb80ac1600c8811f59f74e29919c46e6053dbe 存储在 /Users/zhangyu/z.txt(MacOS) 文件中,使用 geth account import /Users/zhangyu/z.txt 即可。输入密码后,账号导入成功 🎉

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