Skip to content

Commit 0ea105d

Browse files
authored
Revert "cmd/geth: make account commands not require datadir lock (ethereum#27084)"
This reverts commit 59a8a24.
1 parent 0cc1174 commit 0ea105d

File tree

4 files changed

+33
-53
lines changed

4 files changed

+33
-53
lines changed

cmd/geth/accountcmd.go

Lines changed: 22 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -188,34 +188,15 @@ nodes.
188188
}
189189
)
190190

191-
// makeAccountManager creates an account manager with backends
192-
func makeAccountManager(ctx *cli.Context) *accounts.Manager {
193-
cfg := loadBaseConfig(ctx)
194-
am := accounts.NewManager(&accounts.Config{InsecureUnlockAllowed: cfg.Node.InsecureUnlockAllowed})
195-
keydir, isEphemeral, err := cfg.Node.GetKeyStoreDir()
196-
if err != nil {
197-
utils.Fatalf("Failed to get the keystore directory: %v", err)
198-
}
199-
if isEphemeral {
200-
utils.Fatalf("Can't use ephemeral directory as keystore path")
201-
}
202-
203-
if err := setAccountManagerBackends(&cfg.Node, am, keydir); err != nil {
204-
utils.Fatalf("Failed to set account manager backends: %v", err)
205-
}
206-
return am
207-
}
208-
209191
func accountList(ctx *cli.Context) error {
210-
am := makeAccountManager(ctx)
192+
stack, _ := makeConfigNode(ctx)
211193
var index int
212-
for _, wallet := range am.Wallets() {
194+
for _, wallet := range stack.AccountManager().Wallets() {
213195
for _, account := range wallet.Accounts() {
214196
fmt.Printf("Account #%d: {%x} %s\n", index, account.Address, &account.URL)
215197
index++
216198
}
217199
}
218-
219200
return nil
220201
}
221202

@@ -277,13 +258,17 @@ func ambiguousAddrRecovery(ks *keystore.KeyStore, err *keystore.AmbiguousAddrErr
277258

278259
// accountCreate creates a new account into the keystore defined by the CLI flags.
279260
func accountCreate(ctx *cli.Context) error {
280-
cfg := loadBaseConfig(ctx)
281-
keydir, isEphemeral, err := cfg.Node.GetKeyStoreDir()
282-
if err != nil {
283-
utils.Fatalf("Failed to get the keystore directory: %v", err)
261+
cfg := gethConfig{Node: defaultNodeConfig()}
262+
// Load config file.
263+
if file := ctx.String(configFileFlag.Name); file != "" {
264+
if err := loadConfig(file, &cfg); err != nil {
265+
utils.Fatalf("%v", err)
266+
}
284267
}
285-
if isEphemeral {
286-
utils.Fatalf("Can't use ephemeral directory as keystore path")
268+
utils.SetNodeConfig(ctx, &cfg.Node)
269+
keydir, err := cfg.Node.KeyDirConfig()
270+
if err != nil {
271+
utils.Fatalf("Failed to read configuration: %v", err)
287272
}
288273
scryptN := keystore.StandardScryptN
289274
scryptP := keystore.StandardScryptP
@@ -315,8 +300,8 @@ func accountUpdate(ctx *cli.Context) error {
315300
if ctx.Args().Len() == 0 {
316301
utils.Fatalf("No accounts specified to update")
317302
}
318-
am := makeAccountManager(ctx)
319-
backends := am.Backends(keystore.KeyStoreType)
303+
stack, _ := makeConfigNode(ctx)
304+
backends := stack.AccountManager().Backends(keystore.KeyStoreType)
320305
if len(backends) == 0 {
321306
utils.Fatalf("Keystore is not available")
322307
}
@@ -342,14 +327,14 @@ func importWallet(ctx *cli.Context) error {
342327
utils.Fatalf("Could not read wallet file: %v", err)
343328
}
344329

345-
am := makeAccountManager(ctx)
346-
backends := am.Backends(keystore.KeyStoreType)
330+
stack, _ := makeConfigNode(ctx)
331+
passphrase := utils.GetPassPhraseWithList("", false, 0, utils.MakePasswordList(ctx))
332+
333+
backends := stack.AccountManager().Backends(keystore.KeyStoreType)
347334
if len(backends) == 0 {
348335
utils.Fatalf("Keystore is not available")
349336
}
350337
ks := backends[0].(*keystore.KeyStore)
351-
passphrase := utils.GetPassPhraseWithList("", false, 0, utils.MakePasswordList(ctx))
352-
353338
acct, err := ks.ImportPreSaleKey(keyJSON, passphrase)
354339
if err != nil {
355340
utils.Fatalf("%v", err)
@@ -367,14 +352,14 @@ func accountImport(ctx *cli.Context) error {
367352
if err != nil {
368353
utils.Fatalf("Failed to load the private key: %v", err)
369354
}
370-
am := makeAccountManager(ctx)
371-
backends := am.Backends(keystore.KeyStoreType)
355+
stack, _ := makeConfigNode(ctx)
356+
passphrase := utils.GetPassPhraseWithList("Your new account is locked with a password. Please give a password. Do not forget this password.", true, 0, utils.MakePasswordList(ctx))
357+
358+
backends := stack.AccountManager().Backends(keystore.KeyStoreType)
372359
if len(backends) == 0 {
373360
utils.Fatalf("Keystore is not available")
374361
}
375362
ks := backends[0].(*keystore.KeyStore)
376-
passphrase := utils.GetPassPhraseWithList("Your new account is locked with a password. Please give a password. Do not forget this password.", true, 0, utils.MakePasswordList(ctx))
377-
378363
acct, err := ks.ImportECDSA(key, passphrase)
379364
if err != nil {
380365
utils.Fatalf("Could not create the account: %v", err)

cmd/geth/config.go

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import (
2626

2727
"github.com/urfave/cli/v2"
2828

29-
"github.com/ethereum/go-ethereum/accounts"
3029
"github.com/ethereum/go-ethereum/accounts/external"
3130
"github.com/ethereum/go-ethereum/accounts/keystore"
3231
"github.com/ethereum/go-ethereum/accounts/scwallet"
@@ -120,9 +119,8 @@ func defaultNodeConfig() node.Config {
120119
return cfg
121120
}
122121

123-
// loadBaseConfig loads the gethConfig based on the given command line
124-
// parameters and config file.
125-
func loadBaseConfig(ctx *cli.Context) gethConfig {
122+
// makeConfigNode loads geth configuration and creates a blank node instance.
123+
func makeConfigNode(ctx *cli.Context) (*node.Node, gethConfig) {
126124
// Load defaults.
127125
cfg := gethConfig{
128126
Eth: ethconfig.Defaults,
@@ -139,18 +137,12 @@ func loadBaseConfig(ctx *cli.Context) gethConfig {
139137

140138
// Apply flags.
141139
utils.SetNodeConfig(ctx, &cfg.Node)
142-
return cfg
143-
}
144-
145-
// makeConfigNode loads geth configuration and creates a blank node instance.
146-
func makeConfigNode(ctx *cli.Context) (*node.Node, gethConfig) {
147-
cfg := loadBaseConfig(ctx)
148140
stack, err := node.New(&cfg.Node)
149141
if err != nil {
150142
utils.Fatalf("Failed to create the protocol stack: %v", err)
151143
}
152144
// Node doesn't by default populate account manager backends
153-
if err := setAccountManagerBackends(stack.Config(), stack.AccountManager(), stack.KeyStoreDir()); err != nil {
145+
if err := setAccountManagerBackends(stack); err != nil {
154146
utils.Fatalf("Failed to set account manager backends: %v", err)
155147
}
156148

@@ -277,7 +269,10 @@ func deprecated(field string) bool {
277269
}
278270
}
279271

280-
func setAccountManagerBackends(conf *node.Config, am *accounts.Manager, keydir string) error {
272+
func setAccountManagerBackends(stack *node.Node) error {
273+
conf := stack.Config()
274+
am := stack.AccountManager()
275+
keydir := stack.KeyStoreDir()
281276
scryptN := keystore.StandardScryptN
282277
scryptP := keystore.StandardScryptP
283278
if conf.UseLightweightKDF {

node/config.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -448,10 +448,10 @@ func (c *Config) KeyDirConfig() (string, error) {
448448
return keydir, err
449449
}
450450

451-
// GetKeyStoreDir retrieves the key directory and will create
451+
// getKeyStoreDir retrieves the key directory and will create
452452
// and ephemeral one if necessary.
453-
func (c *Config) GetKeyStoreDir() (string, bool, error) {
454-
keydir, err := c.KeyDirConfig()
453+
func getKeyStoreDir(conf *Config) (string, bool, error) {
454+
keydir, err := conf.KeyDirConfig()
455455
if err != nil {
456456
return "", false, err
457457
}

node/node.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ func New(conf *Config) (*Node, error) {
119119
if err := node.openDataDir(); err != nil {
120120
return nil, err
121121
}
122-
keyDir, isEphem, err := conf.GetKeyStoreDir()
122+
keyDir, isEphem, err := getKeyStoreDir(conf)
123123
if err != nil {
124124
return nil, err
125125
}

0 commit comments

Comments
 (0)