Rename Direct Keymanager to Imported (#7549)

* rename direct to imported

* km

* fix more refs

* rename all instances appropriately

* rename instances of nonhd
This commit is contained in:
Raul Jordan
2020-10-16 13:45:14 -05:00
committed by GitHub
parent 9a0d579607
commit 7e44d1eec7
58 changed files with 523 additions and 555 deletions

View File

@@ -39,7 +39,7 @@ go_library(
"//validator/flags:go_default_library",
"//validator/keymanager:go_default_library",
"//validator/keymanager/derived:go_default_library",
"//validator/keymanager/direct:go_default_library",
"//validator/keymanager/imported:go_default_library",
"//validator/keymanager/remote:go_default_library",
"@com_github_google_uuid//:go_default_library",
"@com_github_logrusorgru_aurora//:go_default_library",
@@ -86,7 +86,7 @@ go_test(
"//validator/flags:go_default_library",
"//validator/keymanager:go_default_library",
"//validator/keymanager/derived:go_default_library",
"//validator/keymanager/direct:go_default_library",
"//validator/keymanager/imported:go_default_library",
"//validator/keymanager/remote:go_default_library",
"@com_github_gogo_protobuf//types:go_default_library",
"@com_github_golang_mock//gomock:go_default_library",

View File

@@ -22,7 +22,7 @@ import (
"github.com/prysmaticlabs/prysm/validator/flags"
"github.com/prysmaticlabs/prysm/validator/keymanager"
"github.com/prysmaticlabs/prysm/validator/keymanager/derived"
"github.com/prysmaticlabs/prysm/validator/keymanager/direct"
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
"github.com/urfave/cli/v2"
)
@@ -95,14 +95,14 @@ func BackupAccountsCli(cliCtx *cli.Context) error {
var keystoresToBackup []*keymanager.Keystore
switch w.KeymanagerKind() {
case keymanager.Direct:
km, ok := km.(*direct.Keymanager)
case keymanager.Imported:
km, ok := km.(*imported.Keymanager)
if !ok {
return errors.New("could not assert keymanager interface to concrete type")
}
keystoresToBackup, err = km.ExtractKeystores(cliCtx.Context, filteredPubKeys, backupsPassword)
if err != nil {
return errors.Wrap(err, "could not backup accounts for direct keymanager")
return errors.Wrap(err, "could not backup accounts for imported keymanager")
}
case keymanager.Derived:
km, ok := km.(*derived.Keymanager)

View File

@@ -139,7 +139,7 @@ func TestBackupAccounts_Noninteractive_Derived(t *testing.T) {
assert.DeepEqual(t, unzippedPublicKeys, generatedPubKeys)
}
func TestBackupAccounts_Noninteractive_Direct(t *testing.T) {
func TestBackupAccounts_Noninteractive_Imported(t *testing.T) {
walletDir, _, passwordFilePath := setupWalletAndPasswordsDir(t)
randPath, err := rand.Int(rand.Reader, big.NewInt(1000000))
require.NoError(t, err, "Could not generate random file path")
@@ -172,11 +172,11 @@ func TestBackupAccounts_Noninteractive_Direct(t *testing.T) {
)
require.NoError(t, err)
// We initialize a wallet with a direct keymanager.
// We initialize a wallet with a imported keymanager.
cliCtx := setupWalletCtx(t, &testWalletConfig{
// Wallet configuration flags.
walletDir: walletDir,
keymanagerKind: keymanager.Direct,
keymanagerKind: keymanager.Imported,
walletPasswordFile: passwordFilePath,
accountPasswordFile: passwordFilePath,
// Flags required for ImportAccounts to work.
@@ -189,7 +189,7 @@ func TestBackupAccounts_Noninteractive_Direct(t *testing.T) {
w, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
WalletCfg: &wallet.Config{
WalletDir: walletDir,
KeymanagerKind: keymanager.Direct,
KeymanagerKind: keymanager.Imported,
WalletPassword: password,
},
})

View File

@@ -13,7 +13,7 @@ import (
"github.com/prysmaticlabs/prysm/validator/flags"
"github.com/prysmaticlabs/prysm/validator/keymanager"
"github.com/prysmaticlabs/prysm/validator/keymanager/derived"
"github.com/prysmaticlabs/prysm/validator/keymanager/direct"
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
"github.com/sirupsen/logrus"
"github.com/urfave/cli/v2"
)
@@ -55,10 +55,10 @@ func CreateAccount(ctx context.Context, cfg *CreateAccountConfig) error {
switch cfg.Wallet.KeymanagerKind() {
case keymanager.Remote:
return errors.New("cannot create a new account for a remote keymanager")
case keymanager.Direct:
km, ok := km.(*direct.Keymanager)
case keymanager.Imported:
km, ok := km.(*imported.Keymanager)
if !ok {
return errors.New("not a direct keymanager")
return errors.New("not a imported keymanager")
}
// Create a new validator account using the specified keymanager.
if _, _, err := km.CreateAccount(ctx); err != nil {

View File

@@ -80,8 +80,8 @@ func (p *passwordReader) passwordReaderFunc(_ *os.File) ([]byte, error) {
return []byte(p.password), nil
}
// Test_KeysConsistency_Direct checks that the password does not change due to account creation in a Direct wallet
func Test_KeysConsistency_Direct(t *testing.T) {
// Test_KeysConsistency_Imported checks that the password does not change due to account creation in a Imported wallet
func Test_KeysConsistency_Imported(t *testing.T) {
walletDir, passwordsDir, walletPasswordFile := setupWalletAndPasswordsDir(t)
// Specify the 'initial'/correct password locally to this file for convenience.
@@ -90,7 +90,7 @@ func Test_KeysConsistency_Direct(t *testing.T) {
cliCtx := setupWalletCtx(t, &testWalletConfig{
walletDir: walletDir,
passwordsDir: passwordsDir,
keymanagerKind: keymanager.Direct,
keymanagerKind: keymanager.Imported,
walletPasswordFile: walletPasswordFile,
})

View File

@@ -13,7 +13,7 @@ import (
"github.com/prysmaticlabs/prysm/validator/accounts/wallet"
"github.com/prysmaticlabs/prysm/validator/flags"
"github.com/prysmaticlabs/prysm/validator/keymanager"
"github.com/prysmaticlabs/prysm/validator/keymanager/direct"
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
"github.com/urfave/cli/v2"
)
@@ -109,10 +109,10 @@ func DeleteAccount(ctx context.Context, cfg *DeleteAccountConfig) error {
switch cfg.Wallet.KeymanagerKind() {
case keymanager.Remote:
return errors.New("cannot delete accounts for a remote keymanager")
case keymanager.Direct:
km, ok := cfg.Keymanager.(*direct.Keymanager)
case keymanager.Imported:
km, ok := cfg.Keymanager.(*imported.Keymanager)
if !ok {
return errors.New("not a direct keymanager")
return errors.New("not a imported keymanager")
}
if len(cfg.PublicKeys) == 1 {
log.Info("Deleting account...")

View File

@@ -16,8 +16,8 @@ import (
"github.com/prysmaticlabs/prysm/shared/testutil/assert"
"github.com/prysmaticlabs/prysm/shared/testutil/require"
"github.com/prysmaticlabs/prysm/validator/accounts/wallet"
keymanager "github.com/prysmaticlabs/prysm/validator/keymanager"
"github.com/prysmaticlabs/prysm/validator/keymanager/direct"
"github.com/prysmaticlabs/prysm/validator/keymanager"
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
)
func TestDeleteAccounts_Noninteractive(t *testing.T) {
@@ -39,11 +39,11 @@ func TestDeleteAccounts_Noninteractive(t *testing.T) {
// Only delete keys 0 and 1.
deletePublicKeys := strings.Join(generatedPubKeys[0:2], ",")
// We initialize a wallet with a direct keymanager.
// We initialize a wallet with a imported keymanager.
cliCtx := setupWalletCtx(t, &testWalletConfig{
// Wallet configuration flags.
walletDir: walletDir,
keymanagerKind: keymanager.Direct,
keymanagerKind: keymanager.Imported,
walletPasswordFile: passwordFilePath,
accountPasswordFile: passwordFilePath,
// Flags required for ImportAccounts to work.
@@ -54,7 +54,7 @@ func TestDeleteAccounts_Noninteractive(t *testing.T) {
w, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
WalletCfg: &wallet.Config{
WalletDir: walletDir,
KeymanagerKind: keymanager.Direct,
KeymanagerKind: keymanager.Imported,
WalletPassword: password,
},
})
@@ -67,11 +67,11 @@ func TestDeleteAccounts_Noninteractive(t *testing.T) {
// We attempt to delete the accounts specified.
require.NoError(t, DeleteAccountCli(cliCtx))
keymanager, err := direct.NewKeymanager(
keymanager, err := imported.NewKeymanager(
cliCtx.Context,
&direct.SetupConfig{
&imported.SetupConfig{
Wallet: w,
Opts: direct.DefaultKeymanagerOpts(),
Opts: imported.DefaultKeymanagerOpts(),
},
)
require.NoError(t, err)

View File

@@ -19,7 +19,7 @@ import (
"github.com/prysmaticlabs/prysm/shared/testutil/require"
"github.com/prysmaticlabs/prysm/validator/accounts/wallet"
"github.com/prysmaticlabs/prysm/validator/keymanager"
"github.com/prysmaticlabs/prysm/validator/keymanager/direct"
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
)
func TestExitAccountsCli_Ok(t *testing.T) {
@@ -60,11 +60,11 @@ func TestExitAccountsCli_Ok(t *testing.T) {
keystore, _ := createKeystore(t, keysDir)
time.Sleep(time.Second)
// We initialize a wallet with a direct keymanager.
// We initialize a wallet with a imported keymanager.
cliCtx := setupWalletCtx(t, &testWalletConfig{
// Wallet configuration flags.
walletDir: walletDir,
keymanagerKind: keymanager.Direct,
keymanagerKind: keymanager.Imported,
walletPasswordFile: passwordFilePath,
accountPasswordFile: passwordFilePath,
// Flag required for ImportAccounts to work.
@@ -75,7 +75,7 @@ func TestExitAccountsCli_Ok(t *testing.T) {
w, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
WalletCfg: &wallet.Config{
WalletDir: walletDir,
KeymanagerKind: keymanager.Direct,
KeymanagerKind: keymanager.Imported,
WalletPassword: password,
},
})
@@ -111,18 +111,18 @@ func TestExitAccountsCli_Ok(t *testing.T) {
}
func TestPrepareWallet_EmptyWalletReturnsError(t *testing.T) {
direct.ResetCaches()
imported.ResetCaches()
walletDir, _, passwordFilePath := setupWalletAndPasswordsDir(t)
cliCtx := setupWalletCtx(t, &testWalletConfig{
walletDir: walletDir,
keymanagerKind: keymanager.Direct,
keymanagerKind: keymanager.Imported,
walletPasswordFile: passwordFilePath,
accountPasswordFile: passwordFilePath,
})
_, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
WalletCfg: &wallet.Config{
WalletDir: walletDir,
KeymanagerKind: keymanager.Direct,
KeymanagerKind: keymanager.Imported,
WalletPassword: "Passwordz0320$",
},
})

View File

@@ -22,7 +22,7 @@ import (
"github.com/prysmaticlabs/prysm/validator/accounts/wallet"
"github.com/prysmaticlabs/prysm/validator/flags"
"github.com/prysmaticlabs/prysm/validator/keymanager"
"github.com/prysmaticlabs/prysm/validator/keymanager/direct"
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
"github.com/urfave/cli/v2"
keystorev4 "github.com/wealdtech/go-eth2-wallet-encryptor-keystorev4"
)
@@ -69,7 +69,7 @@ func (fileNames byDerivationPath) Swap(i, j int) {
// ImportAccountsConfig defines values to run the import accounts function.
type ImportAccountsConfig struct {
Keystores []*keymanager.Keystore
Keymanager *direct.Keymanager
Keymanager *imported.Keymanager
AccountPassword string
}
@@ -78,7 +78,7 @@ type ImportAccountsConfig struct {
// values necessary to run the function.
func ImportAccountsCli(cliCtx *cli.Context) error {
w, err := wallet.OpenWalletOrElseCli(cliCtx, func(cliCtx *cli.Context) (*wallet.Wallet, error) {
cfg, err := extractWalletCreationConfigFromCli(cliCtx, keymanager.Direct)
cfg, err := extractWalletCreationConfigFromCli(cliCtx, keymanager.Imported)
if err != nil {
return nil, err
}
@@ -87,7 +87,7 @@ func ImportAccountsCli(cliCtx *cli.Context) error {
WalletDir: cfg.WalletCfg.WalletDir,
WalletPassword: cfg.WalletCfg.WalletPassword,
})
if err = createDirectKeymanagerWallet(cliCtx.Context, w); err != nil {
if err = createImportedKeymanagerWallet(cliCtx.Context, w); err != nil {
return nil, errors.Wrap(err, "could not create keymanager")
}
// We store the hashed password to disk.
@@ -107,9 +107,9 @@ func ImportAccountsCli(cliCtx *cli.Context) error {
if err != nil {
return err
}
k, ok := km.(*direct.Keymanager)
k, ok := km.(*imported.Keymanager)
if !ok {
return errors.Wrap(err, "Only non-HD wallets can import keystores")
return errors.Wrap(err, "Only imported wallets can import more keystores")
}
// Check if the user wishes to import a one-off, private key directly
@@ -206,7 +206,7 @@ func ImportAccounts(ctx context.Context, cfg *ImportAccountsConfig) error {
// Imports a one-off file containing a private key as a hex string into
// the Prysm validator's accounts.
func importPrivateKeyAsAccount(cliCtx *cli.Context, wallet *wallet.Wallet, km *direct.Keymanager) error {
func importPrivateKeyAsAccount(cliCtx *cli.Context, wallet *wallet.Wallet, km *imported.Keymanager) error {
privKeyFile := cliCtx.String(flags.ImportPrivateKeyFileFlag.Name)
fullPath, err := fileutil.ExpandPath(privKeyFile)
if err != nil {

View File

@@ -23,12 +23,12 @@ import (
"github.com/prysmaticlabs/prysm/shared/timeutils"
"github.com/prysmaticlabs/prysm/validator/accounts/wallet"
"github.com/prysmaticlabs/prysm/validator/keymanager"
"github.com/prysmaticlabs/prysm/validator/keymanager/direct"
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
keystorev4 "github.com/wealdtech/go-eth2-wallet-encryptor-keystorev4"
)
func TestImport_Noninteractive(t *testing.T) {
direct.ResetCaches()
imported.ResetCaches()
walletDir, passwordsDir, passwordFilePath := setupWalletAndPasswordsDir(t)
randPath, err := rand.Int(rand.Reader, big.NewInt(1000000))
require.NoError(t, err, "Could not generate random file path")
@@ -42,24 +42,24 @@ func TestImport_Noninteractive(t *testing.T) {
walletDir: walletDir,
passwordsDir: passwordsDir,
keysDir: keysDir,
keymanagerKind: keymanager.Direct,
keymanagerKind: keymanager.Imported,
walletPasswordFile: passwordFilePath,
accountPasswordFile: passwordFilePath,
})
w, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
WalletCfg: &wallet.Config{
WalletDir: walletDir,
KeymanagerKind: keymanager.Direct,
KeymanagerKind: keymanager.Imported,
WalletPassword: password,
},
})
require.NoError(t, err)
require.NoError(t, w.SaveHashedPassword(context.Background()))
keymanager, err := direct.NewKeymanager(
keymanager, err := imported.NewKeymanager(
cliCtx.Context,
&direct.SetupConfig{
&imported.SetupConfig{
Wallet: w,
Opts: direct.DefaultKeymanagerOpts(),
Opts: imported.DefaultKeymanagerOpts(),
},
)
require.NoError(t, err)
@@ -90,7 +90,7 @@ func TestImport_Noninteractive(t *testing.T) {
}
func TestImport_Noninteractive_RandomName(t *testing.T) {
direct.ResetCaches()
imported.ResetCaches()
walletDir, passwordsDir, passwordFilePath := setupWalletAndPasswordsDir(t)
randPath, err := rand.Int(rand.Reader, big.NewInt(1000000))
require.NoError(t, err, "Could not generate random file path")
@@ -104,24 +104,24 @@ func TestImport_Noninteractive_RandomName(t *testing.T) {
walletDir: walletDir,
passwordsDir: passwordsDir,
keysDir: keysDir,
keymanagerKind: keymanager.Direct,
keymanagerKind: keymanager.Imported,
walletPasswordFile: passwordFilePath,
accountPasswordFile: passwordFilePath,
})
w, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
WalletCfg: &wallet.Config{
WalletDir: walletDir,
KeymanagerKind: keymanager.Direct,
KeymanagerKind: keymanager.Imported,
WalletPassword: password,
},
})
require.NoError(t, err)
require.NoError(t, w.SaveHashedPassword(context.Background()))
keymanager, err := direct.NewKeymanager(
keymanager, err := imported.NewKeymanager(
cliCtx.Context,
&direct.SetupConfig{
&imported.SetupConfig{
Wallet: w,
Opts: direct.DefaultKeymanagerOpts(),
Opts: imported.DefaultKeymanagerOpts(),
},
)
require.NoError(t, err)
@@ -152,7 +152,7 @@ func TestImport_Noninteractive_RandomName(t *testing.T) {
}
func TestImport_Noninteractive_Filepath(t *testing.T) {
direct.ResetCaches()
imported.ResetCaches()
walletDir, passwordsDir, passwordFilePath := setupWalletAndPasswordsDir(t)
randPath, err := rand.Int(rand.Reader, big.NewInt(1000000))
require.NoError(t, err, "Could not generate random file path")
@@ -167,24 +167,24 @@ func TestImport_Noninteractive_Filepath(t *testing.T) {
walletDir: walletDir,
passwordsDir: passwordsDir,
keysDir: keystorePath,
keymanagerKind: keymanager.Direct,
keymanagerKind: keymanager.Imported,
walletPasswordFile: passwordFilePath,
accountPasswordFile: passwordFilePath,
})
w, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
WalletCfg: &wallet.Config{
WalletDir: walletDir,
KeymanagerKind: keymanager.Direct,
KeymanagerKind: keymanager.Imported,
WalletPassword: password,
},
})
require.NoError(t, err)
require.NoError(t, w.SaveHashedPassword(context.Background()))
keymanager, err := direct.NewKeymanager(
keymanager, err := imported.NewKeymanager(
cliCtx.Context,
&direct.SetupConfig{
&imported.SetupConfig{
Wallet: w,
Opts: direct.DefaultKeymanagerOpts(),
Opts: imported.DefaultKeymanagerOpts(),
},
)
require.NoError(t, err)
@@ -210,7 +210,7 @@ func TestImport_Noninteractive_Filepath(t *testing.T) {
}
func TestImport_SortByDerivationPath(t *testing.T) {
direct.ResetCaches()
imported.ResetCaches()
type test struct {
name string
input []string
@@ -293,7 +293,7 @@ func Test_importPrivateKeyAsAccount(t *testing.T) {
// We instantiate a new wallet from a cli context.
cliCtx := setupWalletCtx(t, &testWalletConfig{
walletDir: walletDir,
keymanagerKind: keymanager.Direct,
keymanagerKind: keymanager.Imported,
walletPasswordFile: passwordFilePath,
privateKeyFile: privKeyFileName,
})
@@ -301,28 +301,28 @@ func Test_importPrivateKeyAsAccount(t *testing.T) {
wallet, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
WalletCfg: &wallet.Config{
WalletDir: walletDir,
KeymanagerKind: keymanager.Direct,
KeymanagerKind: keymanager.Imported,
WalletPassword: walletPass,
},
})
require.NoError(t, err)
require.NoError(t, wallet.SaveHashedPassword(context.Background()))
keymanager, err := direct.NewKeymanager(
keymanager, err := imported.NewKeymanager(
cliCtx.Context,
&direct.SetupConfig{
&imported.SetupConfig{
Wallet: wallet,
Opts: direct.DefaultKeymanagerOpts(),
Opts: imported.DefaultKeymanagerOpts(),
},
)
require.NoError(t, err)
assert.NoError(t, importPrivateKeyAsAccount(cliCtx, wallet, keymanager))
// We re-instantiate the keymanager and check we now have 1 public key.
keymanager, err = direct.NewKeymanager(
keymanager, err = imported.NewKeymanager(
cliCtx.Context,
&direct.SetupConfig{
&imported.SetupConfig{
Wallet: wallet,
Opts: direct.DefaultKeymanagerOpts(),
Opts: imported.DefaultKeymanagerOpts(),
},
)
require.NoError(t, err)
@@ -351,7 +351,7 @@ func createKeystore(t *testing.T, path string) (*keymanager.Keystore, string) {
require.NoError(t, err)
// Write the encoded keystore to disk with the timestamp appended
createdAt := timeutils.Now().Unix()
fullPath := filepath.Join(path, fmt.Sprintf(direct.KeystoreFileNameFormat, createdAt))
fullPath := filepath.Join(path, fmt.Sprintf(imported.KeystoreFileNameFormat, createdAt))
require.NoError(t, ioutil.WriteFile(fullPath, encoded, os.ModePerm))
return keystoreFile, fullPath
}

View File

@@ -13,7 +13,7 @@ import (
"github.com/prysmaticlabs/prysm/validator/flags"
"github.com/prysmaticlabs/prysm/validator/keymanager"
"github.com/prysmaticlabs/prysm/validator/keymanager/derived"
"github.com/prysmaticlabs/prysm/validator/keymanager/direct"
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
"github.com/prysmaticlabs/prysm/validator/keymanager/remote"
"github.com/urfave/cli/v2"
)
@@ -38,13 +38,13 @@ func ListAccountsCli(cliCtx *cli.Context) error {
showDepositData := cliCtx.Bool(flags.ShowDepositDataFlag.Name)
showPrivateKeys := cliCtx.Bool(flags.ShowPrivateKeysFlag.Name)
switch w.KeymanagerKind() {
case keymanager.Direct:
km, ok := km.(*direct.Keymanager)
case keymanager.Imported:
km, ok := km.(*imported.Keymanager)
if !ok {
return errors.New("could not assert keymanager interface to concrete type")
}
if err := listDirectKeymanagerAccounts(cliCtx.Context, showDepositData, showPrivateKeys, km); err != nil {
return errors.Wrap(err, "could not list validator accounts with direct keymanager")
if err := listImportedKeymanagerAccounts(cliCtx.Context, showDepositData, showPrivateKeys, km); err != nil {
return errors.Wrap(err, "could not list validator accounts with imported keymanager")
}
case keymanager.Derived:
km, ok := km.(*derived.Keymanager)
@@ -68,11 +68,11 @@ func ListAccountsCli(cliCtx *cli.Context) error {
return nil
}
func listDirectKeymanagerAccounts(
func listImportedKeymanagerAccounts(
ctx context.Context,
showDepositData,
showPrivateKeys bool,
keymanager *direct.Keymanager,
keymanager *imported.Keymanager,
) error {
// We initialize the wallet's keymanager.
accountNames, err := keymanager.ValidatingAccountNames()
@@ -80,7 +80,7 @@ func listDirectKeymanagerAccounts(
return errors.Wrap(err, "could not fetch account names")
}
numAccounts := au.BrightYellow(len(accountNames))
fmt.Printf("(keymanager kind) %s\n", au.BrightGreen("non-HD wallet").Bold())
fmt.Printf("(keymanager kind) %s\n", au.BrightGreen("imported wallet").Bold())
fmt.Println("")
if len(accountNames) == 1 {
fmt.Printf("Showing %d validator account\n", numAccounts)

View File

@@ -18,7 +18,7 @@ import (
"github.com/prysmaticlabs/prysm/validator/accounts/wallet"
"github.com/prysmaticlabs/prysm/validator/keymanager"
"github.com/prysmaticlabs/prysm/validator/keymanager/derived"
"github.com/prysmaticlabs/prysm/validator/keymanager/direct"
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
"github.com/prysmaticlabs/prysm/validator/keymanager/remote"
)
@@ -35,27 +35,27 @@ func (m *mockRemoteKeymanager) Sign(context.Context, *validatorpb.SignRequest) (
return nil, nil
}
func TestListAccounts_DirectKeymanager(t *testing.T) {
func TestListAccounts_ImportedKeymanager(t *testing.T) {
walletDir, passwordsDir, walletPasswordFile := setupWalletAndPasswordsDir(t)
cliCtx := setupWalletCtx(t, &testWalletConfig{
walletDir: walletDir,
passwordsDir: passwordsDir,
keymanagerKind: keymanager.Direct,
keymanagerKind: keymanager.Imported,
walletPasswordFile: walletPasswordFile,
})
w, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
WalletCfg: &wallet.Config{
WalletDir: walletDir,
KeymanagerKind: keymanager.Direct,
KeymanagerKind: keymanager.Imported,
WalletPassword: "Passwordz0320$",
},
})
require.NoError(t, err)
keymanager, err := direct.NewKeymanager(
keymanager, err := imported.NewKeymanager(
cliCtx.Context,
&direct.SetupConfig{
&imported.SetupConfig{
Wallet: w,
Opts: direct.DefaultKeymanagerOpts(),
Opts: imported.DefaultKeymanagerOpts(),
},
)
require.NoError(t, err)
@@ -70,8 +70,8 @@ func TestListAccounts_DirectKeymanager(t *testing.T) {
require.NoError(t, err)
os.Stdout = writer
// We call the list direct keymanager accounts function.
require.NoError(t, listDirectKeymanagerAccounts(context.Background(), true /* show deposit data */, true /*show private keys */, keymanager))
// We call the list imported keymanager accounts function.
require.NoError(t, listImportedKeymanagerAccounts(context.Background(), true /* show deposit data */, true /*show private keys */, keymanager))
require.NoError(t, writer.Close())
out, err := ioutil.ReadAll(r)
@@ -84,7 +84,7 @@ func TestListAccounts_DirectKeymanager(t *testing.T) {
// Expected output example:
/*
(keymanager kind) non-HD wallet
(keymanager kind) imported wallet
Showing 5 validator accounts
View the eth1 deposit transaction data for your accounts by running `validator accounts list --show-deposit-data
@@ -135,7 +135,7 @@ func TestListAccounts_DirectKeymanager(t *testing.T) {
require.Equal(t, lineCount, len(lines))
// Assert the keymanager kind is printed on the first line.
kindString := "non-HD"
kindString := "imported"
kindFound := strings.Contains(lines[0], kindString)
assert.Equal(t, true, kindFound, "Keymanager Kind %s not found on the first line", kindString)
@@ -220,7 +220,7 @@ func TestListAccounts_DerivedKeymanager(t *testing.T) {
require.NoError(t, err)
os.Stdout = writer
// We call the list direct keymanager accounts function.
// We call the list imported keymanager accounts function.
require.NoError(t, listDerivedKeymanagerAccounts(cliCtx.Context, true /* show deposit data */, true /*show private keys */, keymanager))
require.NoError(t, writer.Close())

View File

@@ -18,7 +18,7 @@ var AccountCommands = &cli.Command{
{
Name: "create",
Description: `creates a new validator account for eth2. If no wallet exists at the given wallet path, creates a new wallet for a user based on
specified input, capable of creating a direct, derived, or remote wallet.
specified input, capable of creating a imported, derived, or remote wallet.
this command outputs a deposit data string which is required to become a validator in eth2.`,
Flags: cmd.WrapFlags([]cli.Flag{
flags.WalletDirFlag,

View File

@@ -15,7 +15,7 @@ var WalletCommands = &cli.Command{
{
Name: "create",
Usage: "creates a new wallet with a desired type of keymanager: " +
"either on-disk (direct), derived, or using remote credentials",
"either on-disk (imported), derived, or using remote credentials",
Flags: []cli.Flag{
flags.WalletDirFlag,
flags.KeymanagerKindFlag,

View File

@@ -1,5 +1,5 @@
// Package v2 defines a new model for accounts management in Prysm, using best
// practices for user security, UX, and extensibility via different wallet types
// including HD wallets, non-HD wallets, and remote-signing capable configurations. This model
// including HD wallets, imported (non-HD) wallets, and remote-signing capable configurations. This model
// is compliant with the EIP-2333, EIP-2334, and EIP-2335 standards for key management in eth2.
package accounts

View File

@@ -14,7 +14,7 @@ go_library(
"//validator/flags:go_default_library",
"//validator/keymanager:go_default_library",
"//validator/keymanager/derived:go_default_library",
"//validator/keymanager/direct:go_default_library",
"//validator/keymanager/imported:go_default_library",
"//validator/keymanager/remote:go_default_library",
"@com_github_gofrs_flock//:go_default_library",
"@com_github_pkg_errors//:go_default_library",

View File

@@ -18,7 +18,7 @@ import (
"github.com/prysmaticlabs/prysm/validator/flags"
"github.com/prysmaticlabs/prysm/validator/keymanager"
"github.com/prysmaticlabs/prysm/validator/keymanager/derived"
"github.com/prysmaticlabs/prysm/validator/keymanager/direct"
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
"github.com/prysmaticlabs/prysm/validator/keymanager/remote"
"github.com/sirupsen/logrus"
"github.com/urfave/cli/v2"
@@ -28,7 +28,7 @@ import (
var log = logrus.WithField("prefix", "wallet")
const (
// KeymanagerConfigFileName for the keymanager used by the wallet: direct, derived, or remote.
// KeymanagerConfigFileName for the keymanager used by the wallet: imported, derived, or remote.
KeymanagerConfigFileName = "keymanageropts.json"
// HashedPasswordFileName for the wallet.
HashedPasswordFileName = "hash"
@@ -56,9 +56,9 @@ var (
)
// KeymanagerKindSelections as friendly text.
KeymanagerKindSelections = map[keymanager.Kind]string{
keymanager.Direct: "Non-HD Wallet (Recommended)",
keymanager.Derived: "HD Wallet (Least secure)",
keymanager.Remote: "Remote Signing Wallet (Advanced)",
keymanager.Imported: "Imported Wallet (Recommended)",
keymanager.Derived: "HD Wallet (Least secure)",
keymanager.Remote: "Remote Signing Wallet (Advanced)",
}
// ValidateExistingPass checks that an input cannot be empty.
ValidateExistingPass = func(input string) error {
@@ -79,7 +79,7 @@ type Config struct {
// Wallet is a primitive in Prysm's account management which
// has the capability of creating new accounts, reading existing accounts,
// and providing secure access to eth2 secrets depending on an
// associated keymanager (either direct, derived, or remote signing enabled).
// associated keymanager (either imported, derived, or remote signing enabled).
type Wallet struct {
walletDir string
accountsPath string
@@ -115,7 +115,7 @@ func Exists(walletDir string) (bool, error) {
return dirExists && isValid, nil
}
// IsValid checks if a folder contains a single key directory such as `derived`, `remote` or `direct`.
// IsValid checks if a folder contains a single key directory such as `derived`, `remote` or `imported`.
// Returns true if one of those subdirectories exist, false otherwise.
func IsValid(walletDir string) (bool, error) {
expanded, err := fileutil.ExpandPath(walletDir)
@@ -147,7 +147,7 @@ func IsValid(walletDir string) (bool, error) {
// Count how many wallet types we have in the directory
numWalletTypes := 0
for _, name := range names {
// Nil error means input name is `derived`, `remote` or `direct`
// Nil error means input name is `derived`, `remote` or `imported`
_, err = keymanager.ParseKind(name)
if err == nil {
numWalletTypes++
@@ -283,17 +283,17 @@ func (w *Wallet) InitializeKeymanager(
}
var km keymanager.IKeymanager
switch w.KeymanagerKind() {
case keymanager.Direct:
opts, err := direct.UnmarshalOptionsFile(configFile)
case keymanager.Imported:
opts, err := imported.UnmarshalOptionsFile(configFile)
if err != nil {
return nil, errors.Wrap(err, "could not unmarshal keymanageropts file")
}
km, err = direct.NewKeymanager(ctx, &direct.SetupConfig{
km, err = imported.NewKeymanager(ctx, &imported.SetupConfig{
Wallet: w,
Opts: opts,
})
if err != nil {
return nil, errors.Wrap(err, "could not initialize direct keymanager")
return nil, errors.Wrap(err, "could not initialize imported keymanager")
}
if !fileutil.FileExists(filepath.Join(w.walletDir, HashedPasswordFileName)) {
keys, err := km.FetchValidatingPublicKeys(ctx)
@@ -506,7 +506,7 @@ func readKeymanagerKindFromWalletPath(walletPath string) (keymanager.Kind, error
return keymanagerKind, nil
}
}
return 0, errors.New("no keymanager folder, 'direct', 'remote', nor 'derived' found in wallet path")
return 0, errors.New("no keymanager folder, 'imported', 'remote', nor 'derived' found in wallet path")
}
func inputPassword(

View File

@@ -12,7 +12,7 @@ import (
"github.com/prysmaticlabs/prysm/validator/flags"
"github.com/prysmaticlabs/prysm/validator/keymanager"
"github.com/prysmaticlabs/prysm/validator/keymanager/derived"
"github.com/prysmaticlabs/prysm/validator/keymanager/direct"
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
"github.com/prysmaticlabs/prysm/validator/keymanager/remote"
"github.com/urfave/cli/v2"
)
@@ -67,9 +67,9 @@ func CreateWalletWithKeymanager(ctx context.Context, cfg *CreateWalletConfig) (*
})
var err error
switch w.KeymanagerKind() {
case keymanager.Direct:
if err = createDirectKeymanagerWallet(ctx, w); err != nil {
return nil, errors.Wrap(err, "could not initialize wallet with direct keymanager")
case keymanager.Imported:
if err = createImportedKeymanagerWallet(ctx, w); err != nil {
return nil, errors.Wrap(err, "could not initialize wallet with imported keymanager")
}
log.WithField("--wallet-dir", cfg.WalletCfg.WalletDir).Info(
"Successfully created wallet with on-disk keymanager configuration. " +
@@ -135,15 +135,15 @@ func extractWalletCreationConfigFromCli(cliCtx *cli.Context, keymanagerKind keym
return createWalletConfig, nil
}
func createDirectKeymanagerWallet(ctx context.Context, wallet *wallet.Wallet) error {
func createImportedKeymanagerWallet(ctx context.Context, wallet *wallet.Wallet) error {
if wallet == nil {
return errors.New("nil wallet")
}
if err := wallet.SaveWallet(); err != nil {
return errors.Wrap(err, "could not save wallet to disk")
}
defaultOpts := direct.DefaultKeymanagerOpts()
keymanagerConfig, err := direct.MarshalOptionsFile(ctx, defaultOpts)
defaultOpts := imported.DefaultKeymanagerOpts()
keymanagerConfig, err := imported.MarshalOptionsFile(ctx, defaultOpts)
if err != nil {
return errors.Wrap(err, "could not marshal keymanager config file")
}
@@ -192,14 +192,14 @@ func inputKeymanagerKind(cliCtx *cli.Context) (keymanager.Kind, error) {
promptSelect := promptui.Select{
Label: "Select a type of wallet",
Items: []string{
wallet.KeymanagerKindSelections[keymanager.Direct],
wallet.KeymanagerKindSelections[keymanager.Imported],
wallet.KeymanagerKindSelections[keymanager.Derived],
wallet.KeymanagerKindSelections[keymanager.Remote],
},
}
selection, _, err := promptSelect.Run()
if err != nil {
return keymanager.Direct, fmt.Errorf("could not select wallet type: %v", prompt.FormatPromptError(err))
return keymanager.Imported, fmt.Errorf("could not select wallet type: %v", prompt.FormatPromptError(err))
}
return keymanager.Kind(selection), nil
}

View File

@@ -21,7 +21,7 @@ import (
"github.com/prysmaticlabs/prysm/validator/flags"
"github.com/prysmaticlabs/prysm/validator/keymanager"
"github.com/prysmaticlabs/prysm/validator/keymanager/derived"
"github.com/prysmaticlabs/prysm/validator/keymanager/direct"
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
"github.com/prysmaticlabs/prysm/validator/keymanager/remote"
"github.com/sirupsen/logrus"
logTest "github.com/sirupsen/logrus/hooks/test"
@@ -122,11 +122,11 @@ func TestCreateOrOpenWallet(t *testing.T) {
cliCtx := setupWalletCtx(t, &testWalletConfig{
walletDir: walletDir,
passwordsDir: passwordsDir,
keymanagerKind: keymanager.Direct,
keymanagerKind: keymanager.Imported,
walletPasswordFile: walletPasswordFile,
})
createDirectWallet := func(cliCtx *cli.Context) (*wallet.Wallet, error) {
cfg, err := extractWalletCreationConfigFromCli(cliCtx, keymanager.Direct)
createImportedWallet := func(cliCtx *cli.Context) (*wallet.Wallet, error) {
cfg, err := extractWalletCreationConfigFromCli(cliCtx, keymanager.Imported)
if err != nil {
return nil, err
}
@@ -135,7 +135,7 @@ func TestCreateOrOpenWallet(t *testing.T) {
WalletDir: cfg.WalletCfg.WalletDir,
WalletPassword: cfg.WalletCfg.WalletPassword,
})
if err = createDirectKeymanagerWallet(cliCtx.Context, w); err != nil {
if err = createImportedKeymanagerWallet(cliCtx.Context, w); err != nil {
return nil, errors.Wrap(err, "could not create keymanager")
}
log.WithField("wallet-path", cfg.WalletCfg.WalletDir).Info(
@@ -143,22 +143,22 @@ func TestCreateOrOpenWallet(t *testing.T) {
)
return w, nil
}
createdWallet, err := wallet.OpenWalletOrElseCli(cliCtx, createDirectWallet)
createdWallet, err := wallet.OpenWalletOrElseCli(cliCtx, createImportedWallet)
require.NoError(t, err)
require.LogsContain(t, hook, "Successfully created new wallet")
openedWallet, err := wallet.OpenWalletOrElseCli(cliCtx, createDirectWallet)
openedWallet, err := wallet.OpenWalletOrElseCli(cliCtx, createImportedWallet)
require.NoError(t, err)
assert.Equal(t, createdWallet.KeymanagerKind(), openedWallet.KeymanagerKind())
assert.Equal(t, createdWallet.AccountsDir(), openedWallet.AccountsDir())
}
func TestCreateWallet_Direct(t *testing.T) {
func TestCreateWallet_Imported(t *testing.T) {
walletDir, passwordsDir, walletPasswordFile := setupWalletAndPasswordsDir(t)
cliCtx := setupWalletCtx(t, &testWalletConfig{
walletDir: walletDir,
passwordsDir: passwordsDir,
keymanagerKind: keymanager.Direct,
keymanagerKind: keymanager.Imported,
walletPasswordFile: walletPasswordFile,
})
@@ -175,11 +175,11 @@ func TestCreateWallet_Direct(t *testing.T) {
// We read the keymanager config for the newly created wallet.
encoded, err := w.ReadKeymanagerConfigFromDisk(cliCtx.Context)
assert.NoError(t, err)
cfg, err := direct.UnmarshalOptionsFile(encoded)
cfg, err := imported.UnmarshalOptionsFile(encoded)
assert.NoError(t, err)
// We assert the created configuration was as desired.
wantedCfg := direct.DefaultKeymanagerOpts()
wantedCfg := imported.DefaultKeymanagerOpts()
assert.DeepEqual(t, wantedCfg, cfg)
}
@@ -235,7 +235,7 @@ func TestCreateWallet_WalletAlreadyExists(t *testing.T) {
walletDir: walletDir,
passwordsDir: passwordsDir,
walletPasswordFile: passwordFile,
keymanagerKind: keymanager.Direct,
keymanagerKind: keymanager.Imported,
})
// We attempt to create another wallet of different type at the same location. We expect an error.

View File

@@ -24,8 +24,8 @@ func EditWalletConfigurationCli(cliCtx *cli.Context) error {
return errors.Wrap(err, "could not open wallet")
}
switch w.KeymanagerKind() {
case keymanager.Direct:
return errors.New("not possible to edit direct keymanager configuration")
case keymanager.Imported:
return errors.New("not possible to edit imported keymanager configuration")
case keymanager.Derived:
return errors.New("derived keymanager is not yet supported")
case keymanager.Remote: