mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-01-09 23:48:06 -05:00
Rename imported keymanager to local. (#10155)
* imported -> local
* reverting to the state of the PR at eb1e3c3d1
* use changes from develop
* del
* rem patch
* patch
* rename to local
* gazelle
* add back build
* imported rename
* gaz
* local
* merge fix + remove proto changes
* comment revert
* build
* gofmt and one new reference
* gofmt pt2
* Update validator/accounts/wallet_edit.go
Co-authored-by: Preston Van Loon <preston@prysmaticlabs.com>
* Update validator/rpc/accounts.go
* rename
* gaz
Co-authored-by: Raul Jordan <raul@prysmaticlabs.com>
Co-authored-by: Preston Van Loon <preston@prysmaticlabs.com>
Co-authored-by: james-prysm <90280386+james-prysm@users.noreply.github.com>
This commit is contained in:
@@ -168,7 +168,7 @@ service Auth {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Type of key manager for the wallet, either direct, derived, or remote.
|
// Type of key manager for the wallet, either derived, imported, or remote.
|
||||||
enum KeymanagerKind {
|
enum KeymanagerKind {
|
||||||
DERIVED = 0;
|
DERIVED = 0;
|
||||||
IMPORTED = 1;
|
IMPORTED = 1;
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ go_library(
|
|||||||
"//validator/accounts/wallet:go_default_library",
|
"//validator/accounts/wallet:go_default_library",
|
||||||
"//validator/keymanager:go_default_library",
|
"//validator/keymanager:go_default_library",
|
||||||
"//validator/keymanager/derived:go_default_library",
|
"//validator/keymanager/derived:go_default_library",
|
||||||
"//validator/keymanager/imported:go_default_library",
|
"//validator/keymanager/local:go_default_library",
|
||||||
"@com_github_tyler_smith_go_bip39//:go_default_library",
|
"@com_github_tyler_smith_go_bip39//:go_default_library",
|
||||||
"@com_github_wealdtech_go_eth2_util//:go_default_library",
|
"@com_github_wealdtech_go_eth2_util//:go_default_library",
|
||||||
],
|
],
|
||||||
@@ -31,6 +31,6 @@ go_test(
|
|||||||
"//testing/require:go_default_library",
|
"//testing/require:go_default_library",
|
||||||
"//validator/accounts/wallet:go_default_library",
|
"//validator/accounts/wallet:go_default_library",
|
||||||
"//validator/keymanager:go_default_library",
|
"//validator/keymanager:go_default_library",
|
||||||
"//validator/keymanager/imported:go_default_library",
|
"//validator/keymanager/local:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import (
|
|||||||
"github.com/prysmaticlabs/prysm/validator/accounts/wallet"
|
"github.com/prysmaticlabs/prysm/validator/accounts/wallet"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/derived"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/derived"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/local"
|
||||||
"github.com/tyler-smith/go-bip39"
|
"github.com/tyler-smith/go-bip39"
|
||||||
util "github.com/wealdtech/go-eth2-util"
|
util "github.com/wealdtech/go-eth2-util"
|
||||||
)
|
)
|
||||||
@@ -62,7 +62,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
keysPerWallet := len(privKeys) / *numberOfWalletsFlag
|
keysPerWallet := len(privKeys) / *numberOfWalletsFlag
|
||||||
if err := spreadKeysAcrossImportedWallets(
|
if err := spreadKeysAcrossLocalWallets(
|
||||||
pubKeys,
|
pubKeys,
|
||||||
privKeys,
|
privKeys,
|
||||||
*numberOfWalletsFlag,
|
*numberOfWalletsFlag,
|
||||||
@@ -113,7 +113,7 @@ func generateKeysFromMnemonicList(mnemonicListFile *bufio.Scanner, keysPerMnemon
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func spreadKeysAcrossImportedWallets(
|
func spreadKeysAcrossLocalWallets(
|
||||||
pubKeys,
|
pubKeys,
|
||||||
privKeys [][]byte,
|
privKeys [][]byte,
|
||||||
numWallets,
|
numWallets,
|
||||||
@@ -125,10 +125,10 @@ func spreadKeysAcrossImportedWallets(
|
|||||||
for i := 0; i < numWallets; i++ {
|
for i := 0; i < numWallets; i++ {
|
||||||
w := wallet.New(&wallet.Config{
|
w := wallet.New(&wallet.Config{
|
||||||
WalletDir: path.Join(walletOutputDir, fmt.Sprintf("wallet_%d", i)),
|
WalletDir: path.Join(walletOutputDir, fmt.Sprintf("wallet_%d", i)),
|
||||||
KeymanagerKind: keymanager.Imported,
|
KeymanagerKind: keymanager.Local,
|
||||||
WalletPassword: walletPassword,
|
WalletPassword: walletPassword,
|
||||||
})
|
})
|
||||||
km, err := imported.NewKeymanager(ctx, &imported.SetupConfig{
|
km, err := local.NewKeymanager(ctx, &local.SetupConfig{
|
||||||
Wallet: w,
|
Wallet: w,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import (
|
|||||||
"github.com/prysmaticlabs/prysm/testing/require"
|
"github.com/prysmaticlabs/prysm/testing/require"
|
||||||
"github.com/prysmaticlabs/prysm/validator/accounts/wallet"
|
"github.com/prysmaticlabs/prysm/validator/accounts/wallet"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/local"
|
||||||
)
|
)
|
||||||
|
|
||||||
const testMnemonic = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about"
|
const testMnemonic = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about"
|
||||||
@@ -64,7 +64,7 @@ func Test_spreadKeysAcrossImportedWallets(t *testing.T) {
|
|||||||
// key per wallet stored on disk.
|
// key per wallet stored on disk.
|
||||||
numWallets := 5
|
numWallets := 5
|
||||||
keysPerWallet := 1
|
keysPerWallet := 1
|
||||||
err := spreadKeysAcrossImportedWallets(
|
err := spreadKeysAcrossLocalWallets(
|
||||||
testPubKeys,
|
testPubKeys,
|
||||||
testPrivKeys,
|
testPrivKeys,
|
||||||
numWallets,
|
numWallets,
|
||||||
@@ -77,11 +77,11 @@ func Test_spreadKeysAcrossImportedWallets(t *testing.T) {
|
|||||||
for i := 0; i < numWallets; i++ {
|
for i := 0; i < numWallets; i++ {
|
||||||
w, err := wallet.OpenWallet(ctx, &wallet.Config{
|
w, err := wallet.OpenWallet(ctx, &wallet.Config{
|
||||||
WalletDir: filepath.Join(tmpDir, fmt.Sprintf("wallet_%d", i)),
|
WalletDir: filepath.Join(tmpDir, fmt.Sprintf("wallet_%d", i)),
|
||||||
KeymanagerKind: keymanager.Imported,
|
KeymanagerKind: keymanager.Local,
|
||||||
WalletPassword: walletPassword,
|
WalletPassword: walletPassword,
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
km, err := imported.NewKeymanager(ctx, &imported.SetupConfig{
|
km, err := local.NewKeymanager(ctx, &local.SetupConfig{
|
||||||
Wallet: w,
|
Wallet: w,
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ go_library(
|
|||||||
"//validator/client:go_default_library",
|
"//validator/client:go_default_library",
|
||||||
"//validator/keymanager:go_default_library",
|
"//validator/keymanager:go_default_library",
|
||||||
"//validator/keymanager/derived:go_default_library",
|
"//validator/keymanager/derived:go_default_library",
|
||||||
"//validator/keymanager/imported:go_default_library",
|
"//validator/keymanager/local:go_default_library",
|
||||||
"//validator/keymanager/remote:go_default_library",
|
"//validator/keymanager/remote:go_default_library",
|
||||||
"//validator/keymanager/remote-web3signer:go_default_library",
|
"//validator/keymanager/remote-web3signer:go_default_library",
|
||||||
"@com_github_ethereum_go_ethereum//common/hexutil:go_default_library",
|
"@com_github_ethereum_go_ethereum//common/hexutil:go_default_library",
|
||||||
@@ -92,7 +92,7 @@ go_test(
|
|||||||
"//validator/accounts/wallet:go_default_library",
|
"//validator/accounts/wallet:go_default_library",
|
||||||
"//validator/keymanager:go_default_library",
|
"//validator/keymanager:go_default_library",
|
||||||
"//validator/keymanager/derived:go_default_library",
|
"//validator/keymanager/derived:go_default_library",
|
||||||
"//validator/keymanager/imported:go_default_library",
|
"//validator/keymanager/local:go_default_library",
|
||||||
"//validator/keymanager/remote:go_default_library",
|
"//validator/keymanager/remote:go_default_library",
|
||||||
"//validator/testing:go_default_library",
|
"//validator/testing:go_default_library",
|
||||||
"@com_github_golang_mock//gomock:go_default_library",
|
"@com_github_golang_mock//gomock:go_default_library",
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import (
|
|||||||
"github.com/prysmaticlabs/prysm/validator/accounts/wallet"
|
"github.com/prysmaticlabs/prysm/validator/accounts/wallet"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/derived"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/derived"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/local"
|
||||||
"github.com/urfave/cli/v2"
|
"github.com/urfave/cli/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -96,14 +96,14 @@ func BackupAccountsCli(cliCtx *cli.Context) error {
|
|||||||
|
|
||||||
var keystoresToBackup []*keymanager.Keystore
|
var keystoresToBackup []*keymanager.Keystore
|
||||||
switch w.KeymanagerKind() {
|
switch w.KeymanagerKind() {
|
||||||
case keymanager.Imported:
|
case keymanager.Local:
|
||||||
km, ok := km.(*imported.Keymanager)
|
km, ok := km.(*local.Keymanager)
|
||||||
if !ok {
|
if !ok {
|
||||||
return errors.New("could not assert keymanager interface to concrete type")
|
return errors.New("could not assert keymanager interface to concrete type")
|
||||||
}
|
}
|
||||||
keystoresToBackup, err = km.ExtractKeystores(cliCtx.Context, filteredPubKeys, backupsPassword)
|
keystoresToBackup, err = km.ExtractKeystores(cliCtx.Context, filteredPubKeys, backupsPassword)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "could not backup accounts for imported keymanager")
|
return errors.Wrap(err, "could not backup accounts for local keymanager")
|
||||||
}
|
}
|
||||||
case keymanager.Derived:
|
case keymanager.Derived:
|
||||||
km, ok := km.(*derived.Keymanager)
|
km, ok := km.(*derived.Keymanager)
|
||||||
|
|||||||
@@ -159,7 +159,7 @@ func TestBackupAccounts_Noninteractive_Imported(t *testing.T) {
|
|||||||
cliCtx := setupWalletCtx(t, &testWalletConfig{
|
cliCtx := setupWalletCtx(t, &testWalletConfig{
|
||||||
// Wallet configuration flags.
|
// Wallet configuration flags.
|
||||||
walletDir: walletDir,
|
walletDir: walletDir,
|
||||||
keymanagerKind: keymanager.Imported,
|
keymanagerKind: keymanager.Local,
|
||||||
walletPasswordFile: passwordFilePath,
|
walletPasswordFile: passwordFilePath,
|
||||||
accountPasswordFile: passwordFilePath,
|
accountPasswordFile: passwordFilePath,
|
||||||
// Flags required for ImportAccounts to work.
|
// Flags required for ImportAccounts to work.
|
||||||
@@ -172,7 +172,7 @@ func TestBackupAccounts_Noninteractive_Imported(t *testing.T) {
|
|||||||
_, err = CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
|
_, err = CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
|
||||||
WalletCfg: &wallet.Config{
|
WalletCfg: &wallet.Config{
|
||||||
WalletDir: walletDir,
|
WalletDir: walletDir,
|
||||||
KeymanagerKind: keymanager.Imported,
|
KeymanagerKind: keymanager.Local,
|
||||||
WalletPassword: password,
|
WalletPassword: password,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import (
|
|||||||
"github.com/prysmaticlabs/prysm/testing/require"
|
"github.com/prysmaticlabs/prysm/testing/require"
|
||||||
"github.com/prysmaticlabs/prysm/validator/accounts/wallet"
|
"github.com/prysmaticlabs/prysm/validator/accounts/wallet"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/local"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestDeleteAccounts_Noninteractive(t *testing.T) {
|
func TestDeleteAccounts_Noninteractive(t *testing.T) {
|
||||||
@@ -33,11 +33,11 @@ func TestDeleteAccounts_Noninteractive(t *testing.T) {
|
|||||||
// Only delete keys 0 and 1.
|
// Only delete keys 0 and 1.
|
||||||
deletePublicKeys := strings.Join(generatedPubKeys[0:2], ",")
|
deletePublicKeys := strings.Join(generatedPubKeys[0:2], ",")
|
||||||
|
|
||||||
// We initialize a wallet with a imported keymanager.
|
// We initialize a wallet with a local keymanager.
|
||||||
cliCtx := setupWalletCtx(t, &testWalletConfig{
|
cliCtx := setupWalletCtx(t, &testWalletConfig{
|
||||||
// Wallet configuration flags.
|
// Wallet configuration flags.
|
||||||
walletDir: walletDir,
|
walletDir: walletDir,
|
||||||
keymanagerKind: keymanager.Imported,
|
keymanagerKind: keymanager.Local,
|
||||||
walletPasswordFile: passwordFilePath,
|
walletPasswordFile: passwordFilePath,
|
||||||
accountPasswordFile: passwordFilePath,
|
accountPasswordFile: passwordFilePath,
|
||||||
// Flags required for ImportAccounts to work.
|
// Flags required for ImportAccounts to work.
|
||||||
@@ -48,7 +48,7 @@ func TestDeleteAccounts_Noninteractive(t *testing.T) {
|
|||||||
w, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
|
w, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
|
||||||
WalletCfg: &wallet.Config{
|
WalletCfg: &wallet.Config{
|
||||||
WalletDir: walletDir,
|
WalletDir: walletDir,
|
||||||
KeymanagerKind: keymanager.Imported,
|
KeymanagerKind: keymanager.Local,
|
||||||
WalletPassword: password,
|
WalletPassword: password,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@@ -60,9 +60,9 @@ func TestDeleteAccounts_Noninteractive(t *testing.T) {
|
|||||||
// We attempt to delete the accounts specified.
|
// We attempt to delete the accounts specified.
|
||||||
require.NoError(t, DeleteAccountCli(cliCtx))
|
require.NoError(t, DeleteAccountCli(cliCtx))
|
||||||
|
|
||||||
keymanager, err := imported.NewKeymanager(
|
keymanager, err := local.NewKeymanager(
|
||||||
cliCtx.Context,
|
cliCtx.Context,
|
||||||
&imported.SetupConfig{
|
&local.SetupConfig{
|
||||||
Wallet: w,
|
Wallet: w,
|
||||||
ListenForChanges: false,
|
ListenForChanges: false,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import (
|
|||||||
"github.com/prysmaticlabs/prysm/testing/require"
|
"github.com/prysmaticlabs/prysm/testing/require"
|
||||||
"github.com/prysmaticlabs/prysm/validator/accounts/wallet"
|
"github.com/prysmaticlabs/prysm/validator/accounts/wallet"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/local"
|
||||||
"github.com/sirupsen/logrus/hooks/test"
|
"github.com/sirupsen/logrus/hooks/test"
|
||||||
"google.golang.org/grpc/metadata"
|
"google.golang.org/grpc/metadata"
|
||||||
"google.golang.org/protobuf/types/known/timestamppb"
|
"google.golang.org/protobuf/types/known/timestamppb"
|
||||||
@@ -59,11 +59,11 @@ func TestExitAccountsCli_OK(t *testing.T) {
|
|||||||
keystore, _ := createKeystore(t, keysDir)
|
keystore, _ := createKeystore(t, keysDir)
|
||||||
time.Sleep(time.Second)
|
time.Sleep(time.Second)
|
||||||
|
|
||||||
// We initialize a wallet with a imported keymanager.
|
// We initialize a wallet with a local keymanager.
|
||||||
cliCtx := setupWalletCtx(t, &testWalletConfig{
|
cliCtx := setupWalletCtx(t, &testWalletConfig{
|
||||||
// Wallet configuration flags.
|
// Wallet configuration flags.
|
||||||
walletDir: walletDir,
|
walletDir: walletDir,
|
||||||
keymanagerKind: keymanager.Imported,
|
keymanagerKind: keymanager.Local,
|
||||||
walletPasswordFile: passwordFilePath,
|
walletPasswordFile: passwordFilePath,
|
||||||
accountPasswordFile: passwordFilePath,
|
accountPasswordFile: passwordFilePath,
|
||||||
// Flag required for ImportAccounts to work.
|
// Flag required for ImportAccounts to work.
|
||||||
@@ -74,7 +74,7 @@ func TestExitAccountsCli_OK(t *testing.T) {
|
|||||||
_, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
|
_, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
|
||||||
WalletCfg: &wallet.Config{
|
WalletCfg: &wallet.Config{
|
||||||
WalletDir: walletDir,
|
WalletDir: walletDir,
|
||||||
KeymanagerKind: keymanager.Imported,
|
KeymanagerKind: keymanager.Local,
|
||||||
WalletPassword: password,
|
WalletPassword: password,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@@ -154,11 +154,11 @@ func TestExitAccountsCli_OK_AllPublicKeys(t *testing.T) {
|
|||||||
keystore2, _ := createKeystore(t, keysDir)
|
keystore2, _ := createKeystore(t, keysDir)
|
||||||
time.Sleep(time.Second)
|
time.Sleep(time.Second)
|
||||||
|
|
||||||
// We initialize a wallet with a imported keymanager.
|
// We initialize a wallet with a local keymanager.
|
||||||
cliCtx := setupWalletCtx(t, &testWalletConfig{
|
cliCtx := setupWalletCtx(t, &testWalletConfig{
|
||||||
// Wallet configuration flags.
|
// Wallet configuration flags.
|
||||||
walletDir: walletDir,
|
walletDir: walletDir,
|
||||||
keymanagerKind: keymanager.Imported,
|
keymanagerKind: keymanager.Local,
|
||||||
walletPasswordFile: passwordFilePath,
|
walletPasswordFile: passwordFilePath,
|
||||||
accountPasswordFile: passwordFilePath,
|
accountPasswordFile: passwordFilePath,
|
||||||
// Flag required for ImportAccounts to work.
|
// Flag required for ImportAccounts to work.
|
||||||
@@ -169,7 +169,7 @@ func TestExitAccountsCli_OK_AllPublicKeys(t *testing.T) {
|
|||||||
_, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
|
_, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
|
||||||
WalletCfg: &wallet.Config{
|
WalletCfg: &wallet.Config{
|
||||||
WalletDir: walletDir,
|
WalletDir: walletDir,
|
||||||
KeymanagerKind: keymanager.Imported,
|
KeymanagerKind: keymanager.Local,
|
||||||
WalletPassword: password,
|
WalletPassword: password,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@@ -211,18 +211,18 @@ func TestExitAccountsCli_OK_AllPublicKeys(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestPrepareWallet_EmptyWalletReturnsError(t *testing.T) {
|
func TestPrepareWallet_EmptyWalletReturnsError(t *testing.T) {
|
||||||
imported.ResetCaches()
|
local.ResetCaches()
|
||||||
walletDir, _, passwordFilePath := setupWalletAndPasswordsDir(t)
|
walletDir, _, passwordFilePath := setupWalletAndPasswordsDir(t)
|
||||||
cliCtx := setupWalletCtx(t, &testWalletConfig{
|
cliCtx := setupWalletCtx(t, &testWalletConfig{
|
||||||
walletDir: walletDir,
|
walletDir: walletDir,
|
||||||
keymanagerKind: keymanager.Imported,
|
keymanagerKind: keymanager.Local,
|
||||||
walletPasswordFile: passwordFilePath,
|
walletPasswordFile: passwordFilePath,
|
||||||
accountPasswordFile: passwordFilePath,
|
accountPasswordFile: passwordFilePath,
|
||||||
})
|
})
|
||||||
_, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
|
_, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
|
||||||
WalletCfg: &wallet.Config{
|
WalletCfg: &wallet.Config{
|
||||||
WalletDir: walletDir,
|
WalletDir: walletDir,
|
||||||
KeymanagerKind: keymanager.Imported,
|
KeymanagerKind: keymanager.Local,
|
||||||
WalletPassword: password,
|
WalletPassword: password,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@@ -232,11 +232,11 @@ func TestPrepareWallet_EmptyWalletReturnsError(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestPrepareClients_AddsGRPCHeaders(t *testing.T) {
|
func TestPrepareClients_AddsGRPCHeaders(t *testing.T) {
|
||||||
imported.ResetCaches()
|
local.ResetCaches()
|
||||||
walletDir, _, passwordFilePath := setupWalletAndPasswordsDir(t)
|
walletDir, _, passwordFilePath := setupWalletAndPasswordsDir(t)
|
||||||
cliCtx := setupWalletCtx(t, &testWalletConfig{
|
cliCtx := setupWalletCtx(t, &testWalletConfig{
|
||||||
walletDir: walletDir,
|
walletDir: walletDir,
|
||||||
keymanagerKind: keymanager.Imported,
|
keymanagerKind: keymanager.Local,
|
||||||
walletPasswordFile: passwordFilePath,
|
walletPasswordFile: passwordFilePath,
|
||||||
accountPasswordFile: passwordFilePath,
|
accountPasswordFile: passwordFilePath,
|
||||||
grpcHeaders: "Authorization=Basic some-token,Some-Other-Header=some-value",
|
grpcHeaders: "Authorization=Basic some-token,Some-Other-Header=some-value",
|
||||||
@@ -244,7 +244,7 @@ func TestPrepareClients_AddsGRPCHeaders(t *testing.T) {
|
|||||||
_, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
|
_, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
|
||||||
WalletCfg: &wallet.Config{
|
WalletCfg: &wallet.Config{
|
||||||
WalletDir: walletDir,
|
WalletDir: walletDir,
|
||||||
KeymanagerKind: keymanager.Imported,
|
KeymanagerKind: keymanager.Local,
|
||||||
WalletPassword: password,
|
WalletPassword: password,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ func ImportAccountsCli(cliCtx *cli.Context) error {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
cfg, err := extractWalletCreationConfigFromCli(cliCtx, keymanager.Imported)
|
cfg, err := extractWalletCreationConfigFromCli(cliCtx, keymanager.Local)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -124,7 +124,7 @@ func ImportAccountsCli(cliCtx *cli.Context) error {
|
|||||||
WalletDir: cfg.WalletCfg.WalletDir,
|
WalletDir: cfg.WalletCfg.WalletDir,
|
||||||
WalletPassword: cfg.WalletCfg.WalletPassword,
|
WalletPassword: cfg.WalletCfg.WalletPassword,
|
||||||
})
|
})
|
||||||
if err = createImportedKeymanagerWallet(cliCtx.Context, w); err != nil {
|
if err = createLocalKeymanagerWallet(cliCtx.Context, w); err != nil {
|
||||||
return nil, errors.Wrap(err, "could not create keymanager")
|
return nil, errors.Wrap(err, "could not create keymanager")
|
||||||
}
|
}
|
||||||
log.WithField("wallet-path", cfg.WalletCfg.WalletDir).Info(
|
log.WithField("wallet-path", cfg.WalletCfg.WalletDir).Info(
|
||||||
|
|||||||
@@ -22,12 +22,12 @@ import (
|
|||||||
"github.com/prysmaticlabs/prysm/validator/accounts/iface"
|
"github.com/prysmaticlabs/prysm/validator/accounts/iface"
|
||||||
"github.com/prysmaticlabs/prysm/validator/accounts/wallet"
|
"github.com/prysmaticlabs/prysm/validator/accounts/wallet"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/local"
|
||||||
keystorev4 "github.com/wealdtech/go-eth2-wallet-encryptor-keystorev4"
|
keystorev4 "github.com/wealdtech/go-eth2-wallet-encryptor-keystorev4"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestImport_Noninteractive(t *testing.T) {
|
func TestImport_Noninteractive(t *testing.T) {
|
||||||
imported.ResetCaches()
|
local.ResetCaches()
|
||||||
walletDir, passwordsDir, passwordFilePath := setupWalletAndPasswordsDir(t)
|
walletDir, passwordsDir, passwordFilePath := setupWalletAndPasswordsDir(t)
|
||||||
keysDir := filepath.Join(t.TempDir(), "keysDir")
|
keysDir := filepath.Join(t.TempDir(), "keysDir")
|
||||||
require.NoError(t, os.MkdirAll(keysDir, os.ModePerm))
|
require.NoError(t, os.MkdirAll(keysDir, os.ModePerm))
|
||||||
@@ -36,21 +36,21 @@ func TestImport_Noninteractive(t *testing.T) {
|
|||||||
walletDir: walletDir,
|
walletDir: walletDir,
|
||||||
passwordsDir: passwordsDir,
|
passwordsDir: passwordsDir,
|
||||||
keysDir: keysDir,
|
keysDir: keysDir,
|
||||||
keymanagerKind: keymanager.Imported,
|
keymanagerKind: keymanager.Local,
|
||||||
walletPasswordFile: passwordFilePath,
|
walletPasswordFile: passwordFilePath,
|
||||||
accountPasswordFile: passwordFilePath,
|
accountPasswordFile: passwordFilePath,
|
||||||
})
|
})
|
||||||
w, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
|
w, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
|
||||||
WalletCfg: &wallet.Config{
|
WalletCfg: &wallet.Config{
|
||||||
WalletDir: walletDir,
|
WalletDir: walletDir,
|
||||||
KeymanagerKind: keymanager.Imported,
|
KeymanagerKind: keymanager.Local,
|
||||||
WalletPassword: password,
|
WalletPassword: password,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
keymanager, err := imported.NewKeymanager(
|
keymanager, err := local.NewKeymanager(
|
||||||
cliCtx.Context,
|
cliCtx.Context,
|
||||||
&imported.SetupConfig{
|
&local.SetupConfig{
|
||||||
Wallet: w,
|
Wallet: w,
|
||||||
ListenForChanges: false,
|
ListenForChanges: false,
|
||||||
},
|
},
|
||||||
@@ -84,7 +84,7 @@ func TestImport_Noninteractive(t *testing.T) {
|
|||||||
|
|
||||||
// TestImport_DuplicateKeys is a regression test that ensures correction function if duplicate keys are being imported
|
// TestImport_DuplicateKeys is a regression test that ensures correction function if duplicate keys are being imported
|
||||||
func TestImport_DuplicateKeys(t *testing.T) {
|
func TestImport_DuplicateKeys(t *testing.T) {
|
||||||
imported.ResetCaches()
|
local.ResetCaches()
|
||||||
walletDir, passwordsDir, passwordFilePath := setupWalletAndPasswordsDir(t)
|
walletDir, passwordsDir, passwordFilePath := setupWalletAndPasswordsDir(t)
|
||||||
keysDir := filepath.Join(t.TempDir(), "keysDir")
|
keysDir := filepath.Join(t.TempDir(), "keysDir")
|
||||||
require.NoError(t, os.MkdirAll(keysDir, os.ModePerm))
|
require.NoError(t, os.MkdirAll(keysDir, os.ModePerm))
|
||||||
@@ -93,14 +93,14 @@ func TestImport_DuplicateKeys(t *testing.T) {
|
|||||||
walletDir: walletDir,
|
walletDir: walletDir,
|
||||||
passwordsDir: passwordsDir,
|
passwordsDir: passwordsDir,
|
||||||
keysDir: keysDir,
|
keysDir: keysDir,
|
||||||
keymanagerKind: keymanager.Imported,
|
keymanagerKind: keymanager.Local,
|
||||||
walletPasswordFile: passwordFilePath,
|
walletPasswordFile: passwordFilePath,
|
||||||
accountPasswordFile: passwordFilePath,
|
accountPasswordFile: passwordFilePath,
|
||||||
})
|
})
|
||||||
w, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
|
w, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
|
||||||
WalletCfg: &wallet.Config{
|
WalletCfg: &wallet.Config{
|
||||||
WalletDir: walletDir,
|
WalletDir: walletDir,
|
||||||
KeymanagerKind: keymanager.Imported,
|
KeymanagerKind: keymanager.Local,
|
||||||
WalletPassword: password,
|
WalletPassword: password,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@@ -132,7 +132,7 @@ func TestImport_DuplicateKeys(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestImport_Noninteractive_RandomName(t *testing.T) {
|
func TestImport_Noninteractive_RandomName(t *testing.T) {
|
||||||
imported.ResetCaches()
|
local.ResetCaches()
|
||||||
walletDir, passwordsDir, passwordFilePath := setupWalletAndPasswordsDir(t)
|
walletDir, passwordsDir, passwordFilePath := setupWalletAndPasswordsDir(t)
|
||||||
keysDir := filepath.Join(t.TempDir(), "keysDir")
|
keysDir := filepath.Join(t.TempDir(), "keysDir")
|
||||||
require.NoError(t, os.MkdirAll(keysDir, os.ModePerm))
|
require.NoError(t, os.MkdirAll(keysDir, os.ModePerm))
|
||||||
@@ -141,21 +141,21 @@ func TestImport_Noninteractive_RandomName(t *testing.T) {
|
|||||||
walletDir: walletDir,
|
walletDir: walletDir,
|
||||||
passwordsDir: passwordsDir,
|
passwordsDir: passwordsDir,
|
||||||
keysDir: keysDir,
|
keysDir: keysDir,
|
||||||
keymanagerKind: keymanager.Imported,
|
keymanagerKind: keymanager.Local,
|
||||||
walletPasswordFile: passwordFilePath,
|
walletPasswordFile: passwordFilePath,
|
||||||
accountPasswordFile: passwordFilePath,
|
accountPasswordFile: passwordFilePath,
|
||||||
})
|
})
|
||||||
w, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
|
w, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
|
||||||
WalletCfg: &wallet.Config{
|
WalletCfg: &wallet.Config{
|
||||||
WalletDir: walletDir,
|
WalletDir: walletDir,
|
||||||
KeymanagerKind: keymanager.Imported,
|
KeymanagerKind: keymanager.Local,
|
||||||
WalletPassword: password,
|
WalletPassword: password,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
keymanager, err := imported.NewKeymanager(
|
keymanager, err := local.NewKeymanager(
|
||||||
cliCtx.Context,
|
cliCtx.Context,
|
||||||
&imported.SetupConfig{
|
&local.SetupConfig{
|
||||||
Wallet: w,
|
Wallet: w,
|
||||||
ListenForChanges: false,
|
ListenForChanges: false,
|
||||||
},
|
},
|
||||||
@@ -188,7 +188,7 @@ func TestImport_Noninteractive_RandomName(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestImport_Noninteractive_Filepath(t *testing.T) {
|
func TestImport_Noninteractive_Filepath(t *testing.T) {
|
||||||
imported.ResetCaches()
|
local.ResetCaches()
|
||||||
walletDir, passwordsDir, passwordFilePath := setupWalletAndPasswordsDir(t)
|
walletDir, passwordsDir, passwordFilePath := setupWalletAndPasswordsDir(t)
|
||||||
keysDir := filepath.Join(t.TempDir(), "keysDir")
|
keysDir := filepath.Join(t.TempDir(), "keysDir")
|
||||||
require.NoError(t, os.MkdirAll(keysDir, os.ModePerm))
|
require.NoError(t, os.MkdirAll(keysDir, os.ModePerm))
|
||||||
@@ -198,21 +198,21 @@ func TestImport_Noninteractive_Filepath(t *testing.T) {
|
|||||||
walletDir: walletDir,
|
walletDir: walletDir,
|
||||||
passwordsDir: passwordsDir,
|
passwordsDir: passwordsDir,
|
||||||
keysDir: keystorePath,
|
keysDir: keystorePath,
|
||||||
keymanagerKind: keymanager.Imported,
|
keymanagerKind: keymanager.Local,
|
||||||
walletPasswordFile: passwordFilePath,
|
walletPasswordFile: passwordFilePath,
|
||||||
accountPasswordFile: passwordFilePath,
|
accountPasswordFile: passwordFilePath,
|
||||||
})
|
})
|
||||||
w, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
|
w, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
|
||||||
WalletCfg: &wallet.Config{
|
WalletCfg: &wallet.Config{
|
||||||
WalletDir: walletDir,
|
WalletDir: walletDir,
|
||||||
KeymanagerKind: keymanager.Imported,
|
KeymanagerKind: keymanager.Local,
|
||||||
WalletPassword: password,
|
WalletPassword: password,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
keymanager, err := imported.NewKeymanager(
|
keymanager, err := local.NewKeymanager(
|
||||||
cliCtx.Context,
|
cliCtx.Context,
|
||||||
&imported.SetupConfig{
|
&local.SetupConfig{
|
||||||
Wallet: w,
|
Wallet: w,
|
||||||
ListenForChanges: false,
|
ListenForChanges: false,
|
||||||
},
|
},
|
||||||
@@ -240,7 +240,7 @@ func TestImport_Noninteractive_Filepath(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestImport_SortByDerivationPath(t *testing.T) {
|
func TestImport_SortByDerivationPath(t *testing.T) {
|
||||||
imported.ResetCaches()
|
local.ResetCaches()
|
||||||
type test struct {
|
type test struct {
|
||||||
name string
|
name string
|
||||||
input []string
|
input []string
|
||||||
@@ -319,7 +319,7 @@ func Test_importPrivateKeyAsAccount(t *testing.T) {
|
|||||||
// We instantiate a new wallet from a cli context.
|
// We instantiate a new wallet from a cli context.
|
||||||
cliCtx := setupWalletCtx(t, &testWalletConfig{
|
cliCtx := setupWalletCtx(t, &testWalletConfig{
|
||||||
walletDir: walletDir,
|
walletDir: walletDir,
|
||||||
keymanagerKind: keymanager.Imported,
|
keymanagerKind: keymanager.Local,
|
||||||
walletPasswordFile: passwordFilePath,
|
walletPasswordFile: passwordFilePath,
|
||||||
privateKeyFile: privKeyFileName,
|
privateKeyFile: privKeyFileName,
|
||||||
})
|
})
|
||||||
@@ -327,14 +327,14 @@ func Test_importPrivateKeyAsAccount(t *testing.T) {
|
|||||||
wallet, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
|
wallet, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
|
||||||
WalletCfg: &wallet.Config{
|
WalletCfg: &wallet.Config{
|
||||||
WalletDir: walletDir,
|
WalletDir: walletDir,
|
||||||
KeymanagerKind: keymanager.Imported,
|
KeymanagerKind: keymanager.Local,
|
||||||
WalletPassword: walletPass,
|
WalletPassword: walletPass,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
keymanager, err := imported.NewKeymanager(
|
keymanager, err := local.NewKeymanager(
|
||||||
cliCtx.Context,
|
cliCtx.Context,
|
||||||
&imported.SetupConfig{
|
&local.SetupConfig{
|
||||||
Wallet: wallet,
|
Wallet: wallet,
|
||||||
ListenForChanges: false,
|
ListenForChanges: false,
|
||||||
},
|
},
|
||||||
@@ -343,9 +343,9 @@ func Test_importPrivateKeyAsAccount(t *testing.T) {
|
|||||||
assert.NoError(t, importPrivateKeyAsAccount(cliCtx, wallet, keymanager))
|
assert.NoError(t, importPrivateKeyAsAccount(cliCtx, wallet, keymanager))
|
||||||
|
|
||||||
// We re-instantiate the keymanager and check we now have 1 public key.
|
// We re-instantiate the keymanager and check we now have 1 public key.
|
||||||
keymanager, err = imported.NewKeymanager(
|
keymanager, err = local.NewKeymanager(
|
||||||
cliCtx.Context,
|
cliCtx.Context,
|
||||||
&imported.SetupConfig{
|
&local.SetupConfig{
|
||||||
Wallet: wallet,
|
Wallet: wallet,
|
||||||
ListenForChanges: false,
|
ListenForChanges: false,
|
||||||
},
|
},
|
||||||
@@ -377,7 +377,7 @@ func createKeystore(t *testing.T, path string) (*keymanager.Keystore, string) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
// Write the encoded keystore to disk with the timestamp appended
|
// Write the encoded keystore to disk with the timestamp appended
|
||||||
createdAt := prysmTime.Now().Unix()
|
createdAt := prysmTime.Now().Unix()
|
||||||
fullPath := filepath.Join(path, fmt.Sprintf(imported.KeystoreFileNameFormat, createdAt))
|
fullPath := filepath.Join(path, fmt.Sprintf(local.KeystoreFileNameFormat, createdAt))
|
||||||
require.NoError(t, ioutil.WriteFile(fullPath, encoded, os.ModePerm))
|
require.NoError(t, ioutil.WriteFile(fullPath, encoded, os.ModePerm))
|
||||||
return keystoreFile, fullPath
|
return keystoreFile, fullPath
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import (
|
|||||||
"github.com/prysmaticlabs/prysm/validator/accounts/wallet"
|
"github.com/prysmaticlabs/prysm/validator/accounts/wallet"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/derived"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/derived"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/local"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/remote"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/remote"
|
||||||
remote_web3signer "github.com/prysmaticlabs/prysm/validator/keymanager/remote-web3signer"
|
remote_web3signer "github.com/prysmaticlabs/prysm/validator/keymanager/remote-web3signer"
|
||||||
"github.com/urfave/cli/v2"
|
"github.com/urfave/cli/v2"
|
||||||
@@ -52,13 +52,13 @@ func ListAccountsCli(cliCtx *cli.Context) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch w.KeymanagerKind() {
|
switch w.KeymanagerKind() {
|
||||||
case keymanager.Imported:
|
case keymanager.Local:
|
||||||
km, ok := km.(*imported.Keymanager)
|
km, ok := km.(*local.Keymanager)
|
||||||
if !ok {
|
if !ok {
|
||||||
return errors.New("could not assert keymanager interface to concrete type")
|
return errors.New("could not assert keymanager interface to concrete type")
|
||||||
}
|
}
|
||||||
if err := listImportedKeymanagerAccounts(cliCtx.Context, showDepositData, showPrivateKeys, km); err != nil {
|
if err := listLocalKeymanagerAccounts(cliCtx.Context, showDepositData, showPrivateKeys, km); err != nil {
|
||||||
return errors.Wrap(err, "could not list validator accounts with imported keymanager")
|
return errors.Wrap(err, "could not list validator accounts with local keymanager")
|
||||||
}
|
}
|
||||||
case keymanager.Derived:
|
case keymanager.Derived:
|
||||||
km, ok := km.(*derived.Keymanager)
|
km, ok := km.(*derived.Keymanager)
|
||||||
@@ -91,11 +91,11 @@ func ListAccountsCli(cliCtx *cli.Context) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func listImportedKeymanagerAccounts(
|
func listLocalKeymanagerAccounts(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
showDepositData,
|
showDepositData,
|
||||||
showPrivateKeys bool,
|
showPrivateKeys bool,
|
||||||
keymanager *imported.Keymanager,
|
keymanager *local.Keymanager,
|
||||||
) error {
|
) error {
|
||||||
// We initialize the wallet's keymanager.
|
// We initialize the wallet's keymanager.
|
||||||
accountNames, err := keymanager.ValidatingAccountNames()
|
accountNames, err := keymanager.ValidatingAccountNames()
|
||||||
@@ -103,7 +103,7 @@ func listImportedKeymanagerAccounts(
|
|||||||
return errors.Wrap(err, "could not fetch account names")
|
return errors.Wrap(err, "could not fetch account names")
|
||||||
}
|
}
|
||||||
numAccounts := au.BrightYellow(len(accountNames))
|
numAccounts := au.BrightYellow(len(accountNames))
|
||||||
fmt.Printf("(keymanager kind) %s\n", au.BrightGreen("imported wallet").Bold())
|
fmt.Printf("(keymanager kind) %s\n", au.BrightGreen("local wallet").Bold())
|
||||||
fmt.Println("")
|
fmt.Println("")
|
||||||
if len(accountNames) == 1 {
|
if len(accountNames) == 1 {
|
||||||
fmt.Printf("Showing %d validator account\n", numAccounts)
|
fmt.Printf("Showing %d validator account\n", numAccounts)
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ import (
|
|||||||
"github.com/prysmaticlabs/prysm/validator/accounts/wallet"
|
"github.com/prysmaticlabs/prysm/validator/accounts/wallet"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/derived"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/derived"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/local"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/remote"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/remote"
|
||||||
constant "github.com/prysmaticlabs/prysm/validator/testing"
|
constant "github.com/prysmaticlabs/prysm/validator/testing"
|
||||||
keystorev4 "github.com/wealdtech/go-eth2-wallet-encryptor-keystorev4"
|
keystorev4 "github.com/wealdtech/go-eth2-wallet-encryptor-keystorev4"
|
||||||
@@ -67,25 +67,25 @@ func createRandomKeystore(t testing.TB, password string) *keymanager.Keystore {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestListAccounts_ImportedKeymanager(t *testing.T) {
|
func TestListAccounts_LocalKeymanager(t *testing.T) {
|
||||||
walletDir, passwordsDir, walletPasswordFile := setupWalletAndPasswordsDir(t)
|
walletDir, passwordsDir, walletPasswordFile := setupWalletAndPasswordsDir(t)
|
||||||
cliCtx := setupWalletCtx(t, &testWalletConfig{
|
cliCtx := setupWalletCtx(t, &testWalletConfig{
|
||||||
walletDir: walletDir,
|
walletDir: walletDir,
|
||||||
passwordsDir: passwordsDir,
|
passwordsDir: passwordsDir,
|
||||||
keymanagerKind: keymanager.Imported,
|
keymanagerKind: keymanager.Local,
|
||||||
walletPasswordFile: walletPasswordFile,
|
walletPasswordFile: walletPasswordFile,
|
||||||
})
|
})
|
||||||
w, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
|
w, err := CreateWalletWithKeymanager(cliCtx.Context, &CreateWalletConfig{
|
||||||
WalletCfg: &wallet.Config{
|
WalletCfg: &wallet.Config{
|
||||||
WalletDir: walletDir,
|
WalletDir: walletDir,
|
||||||
KeymanagerKind: keymanager.Imported,
|
KeymanagerKind: keymanager.Local,
|
||||||
WalletPassword: "Passwordz0320$",
|
WalletPassword: "Passwordz0320$",
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
km, err := imported.NewKeymanager(
|
km, err := local.NewKeymanager(
|
||||||
cliCtx.Context,
|
cliCtx.Context,
|
||||||
&imported.SetupConfig{
|
&local.SetupConfig{
|
||||||
Wallet: w,
|
Wallet: w,
|
||||||
ListenForChanges: false,
|
ListenForChanges: false,
|
||||||
},
|
},
|
||||||
@@ -107,10 +107,10 @@ func TestListAccounts_ImportedKeymanager(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
os.Stdout = writer
|
os.Stdout = writer
|
||||||
|
|
||||||
// We call the list imported keymanager accounts function.
|
// We call the list local keymanager accounts function.
|
||||||
require.NoError(
|
require.NoError(
|
||||||
t,
|
t,
|
||||||
listImportedKeymanagerAccounts(
|
listLocalKeymanagerAccounts(
|
||||||
context.Background(),
|
context.Background(),
|
||||||
true, /* show deposit data */
|
true, /* show deposit data */
|
||||||
true, /*show private keys */
|
true, /*show private keys */
|
||||||
@@ -129,7 +129,7 @@ func TestListAccounts_ImportedKeymanager(t *testing.T) {
|
|||||||
|
|
||||||
// Expected output example:
|
// Expected output example:
|
||||||
/*
|
/*
|
||||||
(keymanager kind) imported wallet
|
(keymanager kind) local wallet
|
||||||
|
|
||||||
Showing 5 validator accounts
|
Showing 5 validator accounts
|
||||||
View the eth1 deposit transaction data for your accounts by running `validator accounts list --show-deposit-data
|
View the eth1 deposit transaction data for your accounts by running `validator accounts list --show-deposit-data
|
||||||
@@ -180,7 +180,7 @@ func TestListAccounts_ImportedKeymanager(t *testing.T) {
|
|||||||
require.Equal(t, lineCount, len(lines))
|
require.Equal(t, lineCount, len(lines))
|
||||||
|
|
||||||
// Assert the keymanager kind is printed on the first line.
|
// Assert the keymanager kind is printed on the first line.
|
||||||
kindString := "imported"
|
kindString := "local"
|
||||||
kindFound := strings.Contains(lines[0], kindString)
|
kindFound := strings.Contains(lines[0], kindString)
|
||||||
assert.Equal(t, true, kindFound, "Keymanager Kind %s not found on the first line", kindString)
|
assert.Equal(t, true, kindFound, "Keymanager Kind %s not found on the first line", kindString)
|
||||||
|
|
||||||
@@ -258,7 +258,7 @@ func TestListAccounts_DerivedKeymanager(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
os.Stdout = writer
|
os.Stdout = writer
|
||||||
|
|
||||||
// We call the list imported keymanager accounts function.
|
// We call the list local keymanager accounts function.
|
||||||
require.NoError(t, listDerivedKeymanagerAccounts(cliCtx.Context, true, keymanager))
|
require.NoError(t, listDerivedKeymanagerAccounts(cliCtx.Context, true, keymanager))
|
||||||
|
|
||||||
require.NoError(t, writer.Close())
|
require.NoError(t, writer.Close())
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ go_library(
|
|||||||
"//validator/accounts/userprompt:go_default_library",
|
"//validator/accounts/userprompt:go_default_library",
|
||||||
"//validator/keymanager:go_default_library",
|
"//validator/keymanager:go_default_library",
|
||||||
"//validator/keymanager/derived:go_default_library",
|
"//validator/keymanager/derived:go_default_library",
|
||||||
"//validator/keymanager/imported:go_default_library",
|
"//validator/keymanager/local:go_default_library",
|
||||||
"//validator/keymanager/remote:go_default_library",
|
"//validator/keymanager/remote:go_default_library",
|
||||||
"//validator/keymanager/remote-web3signer:go_default_library",
|
"//validator/keymanager/remote-web3signer:go_default_library",
|
||||||
"@com_github_pkg_errors//:go_default_library",
|
"@com_github_pkg_errors//:go_default_library",
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ import (
|
|||||||
accountsprompt "github.com/prysmaticlabs/prysm/validator/accounts/userprompt"
|
accountsprompt "github.com/prysmaticlabs/prysm/validator/accounts/userprompt"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/derived"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/derived"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/local"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/remote"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/remote"
|
||||||
remote_web3signer "github.com/prysmaticlabs/prysm/validator/keymanager/remote-web3signer"
|
remote_web3signer "github.com/prysmaticlabs/prysm/validator/keymanager/remote-web3signer"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
@@ -54,7 +54,7 @@ var (
|
|||||||
)
|
)
|
||||||
// KeymanagerKindSelections as friendly text.
|
// KeymanagerKindSelections as friendly text.
|
||||||
KeymanagerKindSelections = map[keymanager.Kind]string{
|
KeymanagerKindSelections = map[keymanager.Kind]string{
|
||||||
keymanager.Imported: "Imported Wallet (Recommended)",
|
keymanager.Local: "Imported Wallet (Recommended)",
|
||||||
keymanager.Derived: "HD Wallet",
|
keymanager.Derived: "HD Wallet",
|
||||||
keymanager.Remote: "Remote Signing Wallet (Advanced)",
|
keymanager.Remote: "Remote Signing Wallet (Advanced)",
|
||||||
keymanager.Web3Signer: "Consensys Web3Signer (Advanced)",
|
keymanager.Web3Signer: "Consensys Web3Signer (Advanced)",
|
||||||
@@ -272,8 +272,8 @@ func (w *Wallet) InitializeKeymanager(ctx context.Context, cfg iface.InitKeymana
|
|||||||
var km keymanager.IKeymanager
|
var km keymanager.IKeymanager
|
||||||
var err error
|
var err error
|
||||||
switch w.KeymanagerKind() {
|
switch w.KeymanagerKind() {
|
||||||
case keymanager.Imported:
|
case keymanager.Local:
|
||||||
km, err = imported.NewKeymanager(ctx, &imported.SetupConfig{
|
km, err = local.NewKeymanager(ctx, &local.SetupConfig{
|
||||||
Wallet: w,
|
Wallet: w,
|
||||||
ListenForChanges: cfg.ListenForChanges,
|
ListenForChanges: cfg.ListenForChanges,
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import (
|
|||||||
"github.com/prysmaticlabs/prysm/validator/accounts/wallet"
|
"github.com/prysmaticlabs/prysm/validator/accounts/wallet"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/derived"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/derived"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/local"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/remote"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/remote"
|
||||||
remote_web3signer "github.com/prysmaticlabs/prysm/validator/keymanager/remote-web3signer"
|
remote_web3signer "github.com/prysmaticlabs/prysm/validator/keymanager/remote-web3signer"
|
||||||
"github.com/urfave/cli/v2"
|
"github.com/urfave/cli/v2"
|
||||||
@@ -71,8 +71,8 @@ func CreateWalletWithKeymanager(ctx context.Context, cfg *CreateWalletConfig) (*
|
|||||||
})
|
})
|
||||||
var err error
|
var err error
|
||||||
switch w.KeymanagerKind() {
|
switch w.KeymanagerKind() {
|
||||||
case keymanager.Imported:
|
case keymanager.Local:
|
||||||
if err = createImportedKeymanagerWallet(ctx, w); err != nil {
|
if err = createLocalKeymanagerWallet(ctx, w); err != nil {
|
||||||
return nil, errors.Wrap(err, "could not initialize wallet")
|
return nil, errors.Wrap(err, "could not initialize wallet")
|
||||||
}
|
}
|
||||||
// TODO(#9883) - Remove this when we have a better way to handle this. should be safe to use for now.
|
// TODO(#9883) - Remove this when we have a better way to handle this. should be safe to use for now.
|
||||||
@@ -80,11 +80,11 @@ func CreateWalletWithKeymanager(ctx context.Context, cfg *CreateWalletConfig) (*
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, ErrCouldNotInitializeKeymanager)
|
return nil, errors.Wrap(err, ErrCouldNotInitializeKeymanager)
|
||||||
}
|
}
|
||||||
importedKm, ok := km.(*imported.Keymanager)
|
localKm, ok := km.(*local.Keymanager)
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, errors.Wrap(err, ErrCouldNotInitializeKeymanager)
|
return nil, errors.Wrap(err, ErrCouldNotInitializeKeymanager)
|
||||||
}
|
}
|
||||||
accountsKeystore, err := importedKm.CreateAccountsKeystore(ctx, make([][]byte, 0), make([][]byte, 0))
|
accountsKeystore, err := localKm.CreateAccountsKeystore(ctx, make([][]byte, 0), make([][]byte, 0))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -92,7 +92,7 @@ func CreateWalletWithKeymanager(ctx context.Context, cfg *CreateWalletConfig) (*
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if err = w.WriteFileAtPath(ctx, imported.AccountsPath, imported.AccountsKeystoreFileName, encodedAccounts); err != nil {
|
if err = w.WriteFileAtPath(ctx, local.AccountsPath, local.AccountsKeystoreFileName, encodedAccounts); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -204,7 +204,7 @@ func extractWalletCreationConfigFromCli(cliCtx *cli.Context, keymanagerKind keym
|
|||||||
return createWalletConfig, nil
|
return createWalletConfig, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func createImportedKeymanagerWallet(_ context.Context, wallet *wallet.Wallet) error {
|
func createLocalKeymanagerWallet(_ context.Context, wallet *wallet.Wallet) error {
|
||||||
if wallet == nil {
|
if wallet == nil {
|
||||||
return errors.New("nil wallet")
|
return errors.New("nil wallet")
|
||||||
}
|
}
|
||||||
@@ -265,7 +265,7 @@ func inputKeymanagerKind(cliCtx *cli.Context) (keymanager.Kind, error) {
|
|||||||
promptSelect := promptui.Select{
|
promptSelect := promptui.Select{
|
||||||
Label: "Select a type of wallet",
|
Label: "Select a type of wallet",
|
||||||
Items: []string{
|
Items: []string{
|
||||||
wallet.KeymanagerKindSelections[keymanager.Imported],
|
wallet.KeymanagerKindSelections[keymanager.Local],
|
||||||
wallet.KeymanagerKindSelections[keymanager.Derived],
|
wallet.KeymanagerKindSelections[keymanager.Derived],
|
||||||
wallet.KeymanagerKindSelections[keymanager.Remote],
|
wallet.KeymanagerKindSelections[keymanager.Remote],
|
||||||
wallet.KeymanagerKindSelections[keymanager.Web3Signer],
|
wallet.KeymanagerKindSelections[keymanager.Web3Signer],
|
||||||
@@ -273,7 +273,7 @@ func inputKeymanagerKind(cliCtx *cli.Context) (keymanager.Kind, error) {
|
|||||||
}
|
}
|
||||||
selection, _, err := promptSelect.Run()
|
selection, _, err := promptSelect.Run()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return keymanager.Imported, fmt.Errorf("could not select wallet type: %w", userprompt.FormatPromptError(err))
|
return keymanager.Local, fmt.Errorf("could not select wallet type: %w", userprompt.FormatPromptError(err))
|
||||||
}
|
}
|
||||||
return keymanager.Kind(selection), nil
|
return keymanager.Kind(selection), nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import (
|
|||||||
"github.com/prysmaticlabs/prysm/testing/require"
|
"github.com/prysmaticlabs/prysm/testing/require"
|
||||||
"github.com/prysmaticlabs/prysm/validator/accounts/wallet"
|
"github.com/prysmaticlabs/prysm/validator/accounts/wallet"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/local"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/remote"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/remote"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
logTest "github.com/sirupsen/logrus/hooks/test"
|
logTest "github.com/sirupsen/logrus/hooks/test"
|
||||||
@@ -115,11 +115,11 @@ func TestCreateOrOpenWallet(t *testing.T) {
|
|||||||
cliCtx := setupWalletCtx(t, &testWalletConfig{
|
cliCtx := setupWalletCtx(t, &testWalletConfig{
|
||||||
walletDir: walletDir,
|
walletDir: walletDir,
|
||||||
passwordsDir: passwordsDir,
|
passwordsDir: passwordsDir,
|
||||||
keymanagerKind: keymanager.Imported,
|
keymanagerKind: keymanager.Local,
|
||||||
walletPasswordFile: walletPasswordFile,
|
walletPasswordFile: walletPasswordFile,
|
||||||
})
|
})
|
||||||
createImportedWallet := func(cliCtx *cli.Context) (*wallet.Wallet, error) {
|
createLocalWallet := func(cliCtx *cli.Context) (*wallet.Wallet, error) {
|
||||||
cfg, err := extractWalletCreationConfigFromCli(cliCtx, keymanager.Imported)
|
cfg, err := extractWalletCreationConfigFromCli(cliCtx, keymanager.Local)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -128,7 +128,7 @@ func TestCreateOrOpenWallet(t *testing.T) {
|
|||||||
WalletDir: cfg.WalletCfg.WalletDir,
|
WalletDir: cfg.WalletCfg.WalletDir,
|
||||||
WalletPassword: cfg.WalletCfg.WalletPassword,
|
WalletPassword: cfg.WalletCfg.WalletPassword,
|
||||||
})
|
})
|
||||||
if err = createImportedKeymanagerWallet(cliCtx.Context, w); err != nil {
|
if err = createLocalKeymanagerWallet(cliCtx.Context, w); err != nil {
|
||||||
return nil, errors.Wrap(err, "could not create keymanager")
|
return nil, errors.Wrap(err, "could not create keymanager")
|
||||||
}
|
}
|
||||||
log.WithField("wallet-path", cfg.WalletCfg.WalletDir).Info(
|
log.WithField("wallet-path", cfg.WalletCfg.WalletDir).Info(
|
||||||
@@ -136,22 +136,22 @@ func TestCreateOrOpenWallet(t *testing.T) {
|
|||||||
)
|
)
|
||||||
return w, nil
|
return w, nil
|
||||||
}
|
}
|
||||||
createdWallet, err := wallet.OpenWalletOrElseCli(cliCtx, createImportedWallet)
|
createdWallet, err := wallet.OpenWalletOrElseCli(cliCtx, createLocalWallet)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.LogsContain(t, hook, "Successfully created new wallet")
|
require.LogsContain(t, hook, "Successfully created new wallet")
|
||||||
|
|
||||||
openedWallet, err := wallet.OpenWalletOrElseCli(cliCtx, createImportedWallet)
|
openedWallet, err := wallet.OpenWalletOrElseCli(cliCtx, createLocalWallet)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, createdWallet.KeymanagerKind(), openedWallet.KeymanagerKind())
|
assert.Equal(t, createdWallet.KeymanagerKind(), openedWallet.KeymanagerKind())
|
||||||
assert.Equal(t, createdWallet.AccountsDir(), openedWallet.AccountsDir())
|
assert.Equal(t, createdWallet.AccountsDir(), openedWallet.AccountsDir())
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestCreateWallet_Imported(t *testing.T) {
|
func TestCreateWallet_Local(t *testing.T) {
|
||||||
walletDir, passwordsDir, walletPasswordFile := setupWalletAndPasswordsDir(t)
|
walletDir, passwordsDir, walletPasswordFile := setupWalletAndPasswordsDir(t)
|
||||||
cliCtx := setupWalletCtx(t, &testWalletConfig{
|
cliCtx := setupWalletCtx(t, &testWalletConfig{
|
||||||
walletDir: walletDir,
|
walletDir: walletDir,
|
||||||
passwordsDir: passwordsDir,
|
passwordsDir: passwordsDir,
|
||||||
keymanagerKind: keymanager.Imported,
|
keymanagerKind: keymanager.Local,
|
||||||
walletPasswordFile: walletPasswordFile,
|
walletPasswordFile: walletPasswordFile,
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -164,7 +164,7 @@ func TestCreateWallet_Imported(t *testing.T) {
|
|||||||
WalletDir: walletDir,
|
WalletDir: walletDir,
|
||||||
})
|
})
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
_, err = w.ReadFileAtPath(cliCtx.Context, imported.AccountsPath, imported.AccountsKeystoreFileName)
|
_, err = w.ReadFileAtPath(cliCtx.Context, local.AccountsPath, local.AccountsKeystoreFileName)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -212,7 +212,7 @@ func TestCreateWallet_WalletAlreadyExists(t *testing.T) {
|
|||||||
walletDir: walletDir,
|
walletDir: walletDir,
|
||||||
passwordsDir: passwordsDir,
|
passwordsDir: passwordsDir,
|
||||||
walletPasswordFile: passwordFile,
|
walletPasswordFile: passwordFile,
|
||||||
keymanagerKind: keymanager.Imported,
|
keymanagerKind: keymanager.Local,
|
||||||
})
|
})
|
||||||
|
|
||||||
// We attempt to create another wallet of different type at the same location. We expect an error.
|
// We attempt to create another wallet of different type at the same location. We expect an error.
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ func EditWalletConfigurationCli(cliCtx *cli.Context) error {
|
|||||||
return errors.Wrap(err, "could not open wallet")
|
return errors.Wrap(err, "could not open wallet")
|
||||||
}
|
}
|
||||||
switch w.KeymanagerKind() {
|
switch w.KeymanagerKind() {
|
||||||
case keymanager.Imported:
|
case keymanager.Local:
|
||||||
return errors.New("not possible to edit imported keymanager configuration")
|
return errors.New("not possible to edit local keymanager configuration")
|
||||||
case keymanager.Derived:
|
case keymanager.Derived:
|
||||||
return errors.New("derived keymanager is not yet supported")
|
return errors.New("derived keymanager is not yet supported")
|
||||||
case keymanager.Remote:
|
case keymanager.Remote:
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ go_library(
|
|||||||
"//validator/db/kv:go_default_library",
|
"//validator/db/kv:go_default_library",
|
||||||
"//validator/graffiti:go_default_library",
|
"//validator/graffiti:go_default_library",
|
||||||
"//validator/keymanager:go_default_library",
|
"//validator/keymanager:go_default_library",
|
||||||
"//validator/keymanager/imported:go_default_library",
|
"//validator/keymanager/local:go_default_library",
|
||||||
"//validator/keymanager/remote:go_default_library",
|
"//validator/keymanager/remote:go_default_library",
|
||||||
"//validator/keymanager/remote-web3signer:go_default_library",
|
"//validator/keymanager/remote-web3signer:go_default_library",
|
||||||
"@com_github_dgraph_io_ristretto//:go_default_library",
|
"@com_github_dgraph_io_ristretto//:go_default_library",
|
||||||
@@ -132,7 +132,7 @@ go_test(
|
|||||||
"//validator/graffiti:go_default_library",
|
"//validator/graffiti:go_default_library",
|
||||||
"//validator/keymanager:go_default_library",
|
"//validator/keymanager:go_default_library",
|
||||||
"//validator/keymanager/derived:go_default_library",
|
"//validator/keymanager/derived:go_default_library",
|
||||||
"//validator/keymanager/imported:go_default_library",
|
"//validator/keymanager/local:go_default_library",
|
||||||
"//validator/keymanager/remote-web3signer:go_default_library",
|
"//validator/keymanager/remote-web3signer:go_default_library",
|
||||||
"//validator/keymanager/remote/mock:go_default_library",
|
"//validator/keymanager/remote/mock:go_default_library",
|
||||||
"//validator/slashing-protection-history:go_default_library",
|
"//validator/slashing-protection-history:go_default_library",
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import (
|
|||||||
"github.com/prysmaticlabs/prysm/validator/db"
|
"github.com/prysmaticlabs/prysm/validator/db"
|
||||||
"github.com/prysmaticlabs/prysm/validator/graffiti"
|
"github.com/prysmaticlabs/prysm/validator/graffiti"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/local"
|
||||||
remote_web3signer "github.com/prysmaticlabs/prysm/validator/keymanager/remote-web3signer"
|
remote_web3signer "github.com/prysmaticlabs/prysm/validator/keymanager/remote-web3signer"
|
||||||
"go.opencensus.io/plugin/ocgrpc"
|
"go.opencensus.io/plugin/ocgrpc"
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
@@ -51,7 +51,7 @@ type ValidatorService struct {
|
|||||||
emitAccountMetrics bool
|
emitAccountMetrics bool
|
||||||
logValidatorBalances bool
|
logValidatorBalances bool
|
||||||
logDutyCountDown bool
|
logDutyCountDown bool
|
||||||
interopKeysConfig *imported.InteropKeymanagerConfig
|
interopKeysConfig *local.InteropKeymanagerConfig
|
||||||
conn *grpc.ClientConn
|
conn *grpc.ClientConn
|
||||||
grpcRetryDelay time.Duration
|
grpcRetryDelay time.Duration
|
||||||
grpcRetries uint
|
grpcRetries uint
|
||||||
@@ -77,7 +77,7 @@ type Config struct {
|
|||||||
LogValidatorBalances bool
|
LogValidatorBalances bool
|
||||||
EmitAccountMetrics bool
|
EmitAccountMetrics bool
|
||||||
LogDutyCountDown bool
|
LogDutyCountDown bool
|
||||||
InteropKeysConfig *imported.InteropKeymanagerConfig
|
InteropKeysConfig *local.InteropKeymanagerConfig
|
||||||
Wallet *wallet.Wallet
|
Wallet *wallet.Wallet
|
||||||
WalletInitializedFeed *event.Feed
|
WalletInitializedFeed *event.Feed
|
||||||
GrpcRetriesFlag uint
|
GrpcRetriesFlag uint
|
||||||
@@ -235,7 +235,7 @@ func (v *ValidatorService) Status() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// UseInteropKeys returns the useInteropKeys flag.
|
// UseInteropKeys returns the useInteropKeys flag.
|
||||||
func (v *ValidatorService) InteropKeysConfig() *imported.InteropKeymanagerConfig {
|
func (v *ValidatorService) InteropKeysConfig() *local.InteropKeymanagerConfig {
|
||||||
return v.interopKeysConfig
|
return v.interopKeysConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ import (
|
|||||||
"github.com/prysmaticlabs/prysm/validator/db/kv"
|
"github.com/prysmaticlabs/prysm/validator/db/kv"
|
||||||
"github.com/prysmaticlabs/prysm/validator/graffiti"
|
"github.com/prysmaticlabs/prysm/validator/graffiti"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/local"
|
||||||
remote_web3signer "github.com/prysmaticlabs/prysm/validator/keymanager/remote-web3signer"
|
remote_web3signer "github.com/prysmaticlabs/prysm/validator/keymanager/remote-web3signer"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
"go.opencensus.io/trace"
|
"go.opencensus.io/trace"
|
||||||
@@ -77,7 +77,7 @@ type validator struct {
|
|||||||
highestValidSlot types.Slot
|
highestValidSlot types.Slot
|
||||||
genesisTime uint64
|
genesisTime uint64
|
||||||
blockFeed *event.Feed
|
blockFeed *event.Feed
|
||||||
interopKeysConfig *imported.InteropKeymanagerConfig
|
interopKeysConfig *local.InteropKeymanagerConfig
|
||||||
wallet *wallet.Wallet
|
wallet *wallet.Wallet
|
||||||
graffitiStruct *graffiti.Graffiti
|
graffitiStruct *graffiti.Graffiti
|
||||||
node ethpb.NodeClient
|
node ethpb.NodeClient
|
||||||
@@ -120,7 +120,7 @@ func (v *validator) WaitForKeymanagerInitialization(ctx context.Context) error {
|
|||||||
v.keyManager = km
|
v.keyManager = km
|
||||||
} else {
|
} else {
|
||||||
if v.interopKeysConfig != nil {
|
if v.interopKeysConfig != nil {
|
||||||
keyManager, err := imported.NewInteropKeymanager(ctx, v.interopKeysConfig.Offset, v.interopKeysConfig.NumValidatorKeys)
|
keyManager, err := local.NewInteropKeymanager(ctx, v.interopKeysConfig.Offset, v.interopKeysConfig.NumValidatorKeys)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "could not generate interop keys for key manager")
|
return errors.Wrap(err, "could not generate interop keys for key manager")
|
||||||
}
|
}
|
||||||
@@ -190,7 +190,7 @@ func recheckKeys(ctx context.Context, valDB vdb.Database, keyManager keymanager.
|
|||||||
// to accounts changes in the keymanager, then updates those keys'
|
// to accounts changes in the keymanager, then updates those keys'
|
||||||
// buckets in bolt DB if a bucket for a key does not exist.
|
// buckets in bolt DB if a bucket for a key does not exist.
|
||||||
func recheckValidatingKeysBucket(ctx context.Context, valDB vdb.Database, km keymanager.IKeymanager) {
|
func recheckValidatingKeysBucket(ctx context.Context, valDB vdb.Database, km keymanager.IKeymanager) {
|
||||||
importedKeymanager, ok := km.(*imported.Keymanager)
|
importedKeymanager, ok := km.(*local.Keymanager)
|
||||||
if !ok {
|
if !ok {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ import (
|
|||||||
"github.com/prysmaticlabs/prysm/validator/client/iface"
|
"github.com/prysmaticlabs/prysm/validator/client/iface"
|
||||||
dbTest "github.com/prysmaticlabs/prysm/validator/db/testing"
|
dbTest "github.com/prysmaticlabs/prysm/validator/db/testing"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/local"
|
||||||
remote_web3signer "github.com/prysmaticlabs/prysm/validator/keymanager/remote-web3signer"
|
remote_web3signer "github.com/prysmaticlabs/prysm/validator/keymanager/remote-web3signer"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
logTest "github.com/sirupsen/logrus/hooks/test"
|
logTest "github.com/sirupsen/logrus/hooks/test"
|
||||||
@@ -1385,7 +1385,7 @@ func TestValidator_WaitForKeymanagerInitialization_Web(t *testing.T) {
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
walletChan <- wallet.New(&wallet.Config{
|
walletChan <- wallet.New(&wallet.Config{
|
||||||
KeymanagerKind: keymanager.Imported,
|
KeymanagerKind: keymanager.Local,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1399,7 +1399,7 @@ func TestValidator_WaitForKeymanagerInitialization_Interop(t *testing.T) {
|
|||||||
v := validator{
|
v := validator{
|
||||||
db: db,
|
db: db,
|
||||||
useWeb: false,
|
useWeb: false,
|
||||||
interopKeysConfig: &imported.InteropKeymanagerConfig{
|
interopKeysConfig: &local.InteropKeymanagerConfig{
|
||||||
NumValidatorKeys: 2,
|
NumValidatorKeys: 2,
|
||||||
Offset: 1,
|
Offset: 1,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ go_test(
|
|||||||
deps = [
|
deps = [
|
||||||
":go_default_library",
|
":go_default_library",
|
||||||
"//validator/keymanager/derived:go_default_library",
|
"//validator/keymanager/derived:go_default_library",
|
||||||
"//validator/keymanager/imported:go_default_library",
|
"//validator/keymanager/local:go_default_library",
|
||||||
"//validator/keymanager/remote:go_default_library",
|
"//validator/keymanager/remote:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ go_library(
|
|||||||
"//proto/prysm/v1alpha1/validator-client:go_default_library",
|
"//proto/prysm/v1alpha1/validator-client:go_default_library",
|
||||||
"//validator/accounts/iface:go_default_library",
|
"//validator/accounts/iface:go_default_library",
|
||||||
"//validator/keymanager:go_default_library",
|
"//validator/keymanager:go_default_library",
|
||||||
"//validator/keymanager/imported:go_default_library",
|
"//validator/keymanager/local:go_default_library",
|
||||||
"@com_github_pkg_errors//:go_default_library",
|
"@com_github_pkg_errors//:go_default_library",
|
||||||
"@com_github_sirupsen_logrus//:go_default_library",
|
"@com_github_sirupsen_logrus//:go_default_library",
|
||||||
"@com_github_tyler_smith_go_bip39//:go_default_library",
|
"@com_github_tyler_smith_go_bip39//:go_default_library",
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import (
|
|||||||
validatorpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1/validator-client"
|
validatorpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1/validator-client"
|
||||||
"github.com/prysmaticlabs/prysm/validator/accounts/iface"
|
"github.com/prysmaticlabs/prysm/validator/accounts/iface"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/local"
|
||||||
util "github.com/wealdtech/go-eth2-util"
|
util "github.com/wealdtech/go-eth2-util"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -34,7 +34,7 @@ type SetupConfig struct {
|
|||||||
|
|
||||||
// Keymanager implementation for derived, HD keymanager using EIP-2333 and EIP-2334.
|
// Keymanager implementation for derived, HD keymanager using EIP-2333 and EIP-2334.
|
||||||
type Keymanager struct {
|
type Keymanager struct {
|
||||||
importedKM *imported.Keymanager
|
localKM *local.Keymanager
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewKeymanager instantiates a new derived keymanager from configuration options.
|
// NewKeymanager instantiates a new derived keymanager from configuration options.
|
||||||
@@ -42,7 +42,7 @@ func NewKeymanager(
|
|||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
cfg *SetupConfig,
|
cfg *SetupConfig,
|
||||||
) (*Keymanager, error) {
|
) (*Keymanager, error) {
|
||||||
importedKM, err := imported.NewKeymanager(ctx, &imported.SetupConfig{
|
localKM, err := local.NewKeymanager(ctx, &local.SetupConfig{
|
||||||
Wallet: cfg.Wallet,
|
Wallet: cfg.Wallet,
|
||||||
ListenForChanges: cfg.ListenForChanges,
|
ListenForChanges: cfg.ListenForChanges,
|
||||||
})
|
})
|
||||||
@@ -50,7 +50,7 @@ func NewKeymanager(
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return &Keymanager{
|
return &Keymanager{
|
||||||
importedKM: importedKM,
|
localKM: localKM,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -76,7 +76,7 @@ func (km *Keymanager) RecoverAccountsFromMnemonic(
|
|||||||
privKeys[i] = privKey.Marshal()
|
privKeys[i] = privKey.Marshal()
|
||||||
pubKeys[i] = privKey.PublicKey().Marshal()
|
pubKeys[i] = privKey.PublicKey().Marshal()
|
||||||
}
|
}
|
||||||
return km.importedKM.ImportKeypairs(ctx, privKeys, pubKeys)
|
return km.localKM.ImportKeypairs(ctx, privKeys, pubKeys)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ExtractKeystores retrieves the secret keys for specified public keys
|
// ExtractKeystores retrieves the secret keys for specified public keys
|
||||||
@@ -85,46 +85,46 @@ func (km *Keymanager) RecoverAccountsFromMnemonic(
|
|||||||
func (km *Keymanager) ExtractKeystores(
|
func (km *Keymanager) ExtractKeystores(
|
||||||
ctx context.Context, publicKeys []bls.PublicKey, password string,
|
ctx context.Context, publicKeys []bls.PublicKey, password string,
|
||||||
) ([]*keymanager.Keystore, error) {
|
) ([]*keymanager.Keystore, error) {
|
||||||
return km.importedKM.ExtractKeystores(ctx, publicKeys, password)
|
return km.localKM.ExtractKeystores(ctx, publicKeys, password)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ValidatingAccountNames for the derived keymanager.
|
// ValidatingAccountNames for the derived keymanager.
|
||||||
func (km *Keymanager) ValidatingAccountNames(_ context.Context) ([]string, error) {
|
func (km *Keymanager) ValidatingAccountNames(_ context.Context) ([]string, error) {
|
||||||
return km.importedKM.ValidatingAccountNames()
|
return km.localKM.ValidatingAccountNames()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sign signs a message using a validator key.
|
// Sign signs a message using a validator key.
|
||||||
func (km *Keymanager) Sign(ctx context.Context, req *validatorpb.SignRequest) (bls.Signature, error) {
|
func (km *Keymanager) Sign(ctx context.Context, req *validatorpb.SignRequest) (bls.Signature, error) {
|
||||||
return km.importedKM.Sign(ctx, req)
|
return km.localKM.Sign(ctx, req)
|
||||||
}
|
}
|
||||||
|
|
||||||
// FetchValidatingPublicKeys fetches the list of validating public keys from the keymanager.
|
// FetchValidatingPublicKeys fetches the list of validating public keys from the keymanager.
|
||||||
func (km *Keymanager) FetchValidatingPublicKeys(ctx context.Context) ([][fieldparams.BLSPubkeyLength]byte, error) {
|
func (km *Keymanager) FetchValidatingPublicKeys(ctx context.Context) ([][fieldparams.BLSPubkeyLength]byte, error) {
|
||||||
return km.importedKM.FetchValidatingPublicKeys(ctx)
|
return km.localKM.FetchValidatingPublicKeys(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
// FetchValidatingPrivateKeys fetches the list of validating private keys from the keymanager.
|
// FetchValidatingPrivateKeys fetches the list of validating private keys from the keymanager.
|
||||||
func (km *Keymanager) FetchValidatingPrivateKeys(ctx context.Context) ([][32]byte, error) {
|
func (km *Keymanager) FetchValidatingPrivateKeys(ctx context.Context) ([][32]byte, error) {
|
||||||
return km.importedKM.FetchValidatingPrivateKeys(ctx)
|
return km.localKM.FetchValidatingPrivateKeys(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ImportKeystores for a derived keymanager.
|
// ImportKeystores for a derived keymanager.
|
||||||
func (km *Keymanager) ImportKeystores(
|
func (km *Keymanager) ImportKeystores(
|
||||||
ctx context.Context, keystores []*keymanager.Keystore, passwords []string,
|
ctx context.Context, keystores []*keymanager.Keystore, passwords []string,
|
||||||
) ([]*ethpbservice.ImportedKeystoreStatus, error) {
|
) ([]*ethpbservice.ImportedKeystoreStatus, error) {
|
||||||
return km.importedKM.ImportKeystores(ctx, keystores, passwords)
|
return km.localKM.ImportKeystores(ctx, keystores, passwords)
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteKeystores for a derived keymanager.
|
// DeleteKeystores for a derived keymanager.
|
||||||
func (km *Keymanager) DeleteKeystores(
|
func (km *Keymanager) DeleteKeystores(
|
||||||
ctx context.Context, publicKeys [][]byte,
|
ctx context.Context, publicKeys [][]byte,
|
||||||
) ([]*ethpbservice.DeletedKeystoreStatus, error) {
|
) ([]*ethpbservice.DeletedKeystoreStatus, error) {
|
||||||
return km.importedKM.DeleteKeystores(ctx, publicKeys)
|
return km.localKM.DeleteKeystores(ctx, publicKeys)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SubscribeAccountChanges creates an event subscription for a channel
|
// SubscribeAccountChanges creates an event subscription for a channel
|
||||||
// to listen for public key changes at runtime, such as when new validator accounts
|
// to listen for public key changes at runtime, such as when new validator accounts
|
||||||
// are imported into the keymanager while the validator process is running.
|
// are imported into the keymanager while the validator process is running.
|
||||||
func (km *Keymanager) SubscribeAccountChanges(pubKeysChan chan [][fieldparams.BLSPubkeyLength]byte) event.Subscription {
|
func (km *Keymanager) SubscribeAccountChanges(pubKeysChan chan [][fieldparams.BLSPubkeyLength]byte) event.Subscription {
|
||||||
return km.importedKM.SubscribeAccountChanges(pubKeysChan)
|
return km.localKM.SubscribeAccountChanges(pubKeysChan)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
package imported
|
|
||||||
|
|
||||||
import "github.com/sirupsen/logrus"
|
|
||||||
|
|
||||||
var log = logrus.WithField("prefix", "imported-keymanager")
|
|
||||||
@@ -11,7 +11,7 @@ go_library(
|
|||||||
"log.go",
|
"log.go",
|
||||||
"refresh.go",
|
"refresh.go",
|
||||||
],
|
],
|
||||||
importpath = "github.com/prysmaticlabs/prysm/validator/keymanager/imported",
|
importpath = "github.com/prysmaticlabs/prysm/validator/keymanager/local",
|
||||||
visibility = [
|
visibility = [
|
||||||
"//tools:__subpackages__",
|
"//tools:__subpackages__",
|
||||||
"//validator:__pkg__",
|
"//validator:__pkg__",
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package imported
|
package local
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package imported
|
package local
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
@@ -12,7 +12,7 @@ import (
|
|||||||
"github.com/prysmaticlabs/prysm/testing/require"
|
"github.com/prysmaticlabs/prysm/testing/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestImportedKeymanager_ExtractKeystores(t *testing.T) {
|
func TestLocalKeymanager_ExtractKeystores(t *testing.T) {
|
||||||
secretKeysCache = make(map[[fieldparams.BLSPubkeyLength]byte]bls.SecretKey)
|
secretKeysCache = make(map[[fieldparams.BLSPubkeyLength]byte]bls.SecretKey)
|
||||||
dr := &Keymanager{}
|
dr := &Keymanager{}
|
||||||
validatingKeys := make([]bls.SecretKey, 10)
|
validatingKeys := make([]bls.SecretKey, 10)
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package imported
|
package local
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package imported
|
package local
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
@@ -17,7 +17,7 @@ import (
|
|||||||
keystorev4 "github.com/wealdtech/go-eth2-wallet-encryptor-keystorev4"
|
keystorev4 "github.com/wealdtech/go-eth2-wallet-encryptor-keystorev4"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestImportedKeymanager_DeleteKeystores(t *testing.T) {
|
func TestLocalKeymanager_DeleteKeystores(t *testing.T) {
|
||||||
hook := logTest.NewGlobal()
|
hook := logTest.NewGlobal()
|
||||||
wallet := &mock.Wallet{
|
wallet := &mock.Wallet{
|
||||||
Files: make(map[string]map[string][]byte),
|
Files: make(map[string]map[string][]byte),
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
Package imported defines an implementation of an on-disk, EIP-2335 keystore.json
|
Package local defines an implementation of an on-disk, EIP-2335 keystore.json
|
||||||
approach towards defining validator accounts in Prysm. A validating private key is
|
approach towards defining validator accounts in Prysm. A validating private key is
|
||||||
encrypted using a passphrase and its resulting encrypted file is stored as a
|
encrypted using a passphrase and its resulting encrypted file is stored as a
|
||||||
keystore.json file under a unique, human-readable, account namespace. This imported keymanager approach
|
keystore.json file under a unique, human-readable, account namespace. This local keymanager approach
|
||||||
relies on storing account information on-disk, making it trivial to import, backup and
|
relies on storing account information on-disk, making it trivial to import, backup and
|
||||||
list all associated accounts for a user.
|
list all associated accounts for a user.
|
||||||
|
|
||||||
@@ -13,4 +13,4 @@ support for KECCAK-256. Passwords utilized for key encryptions are strings of ar
|
|||||||
The password is first converted to its NFKD representation, stripped of control codes specified
|
The password is first converted to its NFKD representation, stripped of control codes specified
|
||||||
in the EIP link above, and finally the password is UTF-8 encoded.
|
in the EIP link above, and finally the password is UTF-8 encoded.
|
||||||
*/
|
*/
|
||||||
package imported
|
package local
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package imported
|
package local
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
@@ -16,7 +16,7 @@ import (
|
|||||||
keystorev4 "github.com/wealdtech/go-eth2-wallet-encryptor-keystorev4"
|
keystorev4 "github.com/wealdtech/go-eth2-wallet-encryptor-keystorev4"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ImportKeystores into the imported keymanager from an external source.
|
// ImportKeystores into the local keymanager from an external source.
|
||||||
func (km *Keymanager) ImportKeystores(
|
func (km *Keymanager) ImportKeystores(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
keystores []*keymanager.Keystore,
|
keystores []*keymanager.Keystore,
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package imported
|
package local
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
@@ -36,7 +36,7 @@ func createRandomKeystore(t testing.TB, password string) *keymanager.Keystore {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestImportedKeymanager_NoDuplicates(t *testing.T) {
|
func TestLocalKeymanager_NoDuplicates(t *testing.T) {
|
||||||
numKeys := 50
|
numKeys := 50
|
||||||
pubKeys := make([][]byte, numKeys)
|
pubKeys := make([][]byte, numKeys)
|
||||||
privKeys := make([][]byte, numKeys)
|
privKeys := make([][]byte, numKeys)
|
||||||
@@ -93,7 +93,7 @@ func TestImportedKeymanager_NoDuplicates(t *testing.T) {
|
|||||||
require.Equal(t, numKeys+1, len(dr.accountsStore.PrivateKeys))
|
require.Equal(t, numKeys+1, len(dr.accountsStore.PrivateKeys))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestImportedKeymanager_ImportKeystores(t *testing.T) {
|
func TestLocalKeymanager_ImportKeystores(t *testing.T) {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
// Setup the keymanager.
|
// Setup the keymanager.
|
||||||
wallet := &mock.Wallet{
|
wallet := &mock.Wallet{
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package imported
|
package local
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
@@ -31,13 +31,13 @@ var (
|
|||||||
const (
|
const (
|
||||||
// KeystoreFileNameFormat exposes the filename the keystore should be formatted in.
|
// KeystoreFileNameFormat exposes the filename the keystore should be formatted in.
|
||||||
KeystoreFileNameFormat = "keystore-%d.json"
|
KeystoreFileNameFormat = "keystore-%d.json"
|
||||||
// AccountsPath where all imported keymanager keystores are kept.
|
// AccountsPath where all local keymanager keystores are kept.
|
||||||
AccountsPath = "accounts"
|
AccountsPath = "accounts"
|
||||||
// AccountsKeystoreFileName exposes the name of the keystore file.
|
// AccountsKeystoreFileName exposes the name of the keystore file.
|
||||||
AccountsKeystoreFileName = "all-accounts.keystore.json"
|
AccountsKeystoreFileName = "all-accounts.keystore.json"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Keymanager implementation for imported keystores utilizing EIP-2335.
|
// Keymanager implementation for local keystores utilizing EIP-2335.
|
||||||
type Keymanager struct {
|
type Keymanager struct {
|
||||||
wallet iface.Wallet
|
wallet iface.Wallet
|
||||||
accountsStore *accountStore
|
accountsStore *accountStore
|
||||||
@@ -75,7 +75,7 @@ func ResetCaches() {
|
|||||||
lock.Unlock()
|
lock.Unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewKeymanager instantiates a new imported keymanager from configuration options.
|
// NewKeymanager instantiates a new local keymanager from configuration options.
|
||||||
func NewKeymanager(ctx context.Context, cfg *SetupConfig) (*Keymanager, error) {
|
func NewKeymanager(ctx context.Context, cfg *SetupConfig) (*Keymanager, error) {
|
||||||
k := &Keymanager{
|
k := &Keymanager{
|
||||||
wallet: cfg.Wallet,
|
wallet: cfg.Wallet,
|
||||||
@@ -134,7 +134,7 @@ func (km *Keymanager) SubscribeAccountChanges(pubKeysChan chan [][fieldparams.BL
|
|||||||
return km.accountsChangedFeed.Subscribe(pubKeysChan)
|
return km.accountsChangedFeed.Subscribe(pubKeysChan)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ValidatingAccountNames for a imported keymanager.
|
// ValidatingAccountNames for a local keymanager.
|
||||||
func (_ *Keymanager) ValidatingAccountNames() ([]string, error) {
|
func (_ *Keymanager) ValidatingAccountNames() ([]string, error) {
|
||||||
lock.RLock()
|
lock.RLock()
|
||||||
names := make([]string, len(orderedPublicKeys))
|
names := make([]string, len(orderedPublicKeys))
|
||||||
@@ -165,7 +165,7 @@ func (km *Keymanager) initializeKeysCachesFromKeystore() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// FetchValidatingPublicKeys fetches the list of active public keys from the imported account keystores.
|
// FetchValidatingPublicKeys fetches the list of active public keys from the local account keystores.
|
||||||
func (_ *Keymanager) FetchValidatingPublicKeys(ctx context.Context) ([][fieldparams.BLSPubkeyLength]byte, error) {
|
func (_ *Keymanager) FetchValidatingPublicKeys(ctx context.Context) ([][fieldparams.BLSPubkeyLength]byte, error) {
|
||||||
_, span := trace.StartSpan(ctx, "keymanager.FetchValidatingPublicKeys")
|
_, span := trace.StartSpan(ctx, "keymanager.FetchValidatingPublicKeys")
|
||||||
defer span.End()
|
defer span.End()
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package imported
|
package local
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
@@ -17,7 +17,7 @@ import (
|
|||||||
keystorev4 "github.com/wealdtech/go-eth2-wallet-encryptor-keystorev4"
|
keystorev4 "github.com/wealdtech/go-eth2-wallet-encryptor-keystorev4"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestImportedKeymanager_FetchValidatingPublicKeys(t *testing.T) {
|
func TestLocalKeymanager_FetchValidatingPublicKeys(t *testing.T) {
|
||||||
wallet := &mock.Wallet{
|
wallet := &mock.Wallet{
|
||||||
Files: make(map[string]map[string][]byte),
|
Files: make(map[string]map[string][]byte),
|
||||||
WalletPassword: password,
|
WalletPassword: password,
|
||||||
@@ -49,7 +49,7 @@ func TestImportedKeymanager_FetchValidatingPublicKeys(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestImportedKeymanager_FetchValidatingPrivateKeys(t *testing.T) {
|
func TestLocalKeymanager_FetchValidatingPrivateKeys(t *testing.T) {
|
||||||
wallet := &mock.Wallet{
|
wallet := &mock.Wallet{
|
||||||
Files: make(map[string]map[string][]byte),
|
Files: make(map[string]map[string][]byte),
|
||||||
WalletPassword: password,
|
WalletPassword: password,
|
||||||
@@ -82,7 +82,7 @@ func TestImportedKeymanager_FetchValidatingPrivateKeys(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestImportedKeymanager_Sign(t *testing.T) {
|
func TestLocalKeymanager_Sign(t *testing.T) {
|
||||||
wallet := &mock.Wallet{
|
wallet := &mock.Wallet{
|
||||||
Files: make(map[string]map[string][]byte),
|
Files: make(map[string]map[string][]byte),
|
||||||
AccountPasswords: make(map[string]string),
|
AccountPasswords: make(map[string]string),
|
||||||
@@ -150,7 +150,7 @@ func TestImportedKeymanager_Sign(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestImportedKeymanager_Sign_NoPublicKeySpecified(t *testing.T) {
|
func TestLocalKeymanager_Sign_NoPublicKeySpecified(t *testing.T) {
|
||||||
req := &validatorpb.SignRequest{
|
req := &validatorpb.SignRequest{
|
||||||
PublicKey: nil,
|
PublicKey: nil,
|
||||||
}
|
}
|
||||||
@@ -159,7 +159,7 @@ func TestImportedKeymanager_Sign_NoPublicKeySpecified(t *testing.T) {
|
|||||||
assert.ErrorContains(t, "nil public key", err)
|
assert.ErrorContains(t, "nil public key", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestImportedKeymanager_Sign_NoPublicKeyInCache(t *testing.T) {
|
func TestLocalKeymanager_Sign_NoPublicKeyInCache(t *testing.T) {
|
||||||
req := &validatorpb.SignRequest{
|
req := &validatorpb.SignRequest{
|
||||||
PublicKey: []byte("hello world"),
|
PublicKey: []byte("hello world"),
|
||||||
}
|
}
|
||||||
5
validator/keymanager/local/log.go
Normal file
5
validator/keymanager/local/log.go
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
package local
|
||||||
|
|
||||||
|
import "github.com/sirupsen/logrus"
|
||||||
|
|
||||||
|
var log = logrus.WithField("prefix", "local-keymanager")
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package imported
|
package local
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
@@ -92,7 +92,7 @@ func (km *Keymanager) listenForAccountChanges(ctx context.Context) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Replaces the accounts store struct in the imported keymanager with
|
// Replaces the accounts store struct in the local keymanager with
|
||||||
// the contents of a keystore file by decrypting it with the accounts password.
|
// the contents of a keystore file by decrypting it with the accounts password.
|
||||||
func (km *Keymanager) reloadAccountsFromKeystore(keystore *AccountsKeystoreRepresentation) error {
|
func (km *Keymanager) reloadAccountsFromKeystore(keystore *AccountsKeystoreRepresentation) error {
|
||||||
decryptor := keystorev4.New()
|
decryptor := keystorev4.New()
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package imported
|
package local
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
@@ -15,7 +15,7 @@ import (
|
|||||||
keystorev4 "github.com/wealdtech/go-eth2-wallet-encryptor-keystorev4"
|
keystorev4 "github.com/wealdtech/go-eth2-wallet-encryptor-keystorev4"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestImportedKeymanager_reloadAccountsFromKeystore_MismatchedNumKeys(t *testing.T) {
|
func TestLocalKeymanager_reloadAccountsFromKeystore_MismatchedNumKeys(t *testing.T) {
|
||||||
password := "Passw03rdz293**%#2"
|
password := "Passw03rdz293**%#2"
|
||||||
wallet := &mock.Wallet{
|
wallet := &mock.Wallet{
|
||||||
Files: make(map[string]map[string][]byte),
|
Files: make(map[string]map[string][]byte),
|
||||||
@@ -46,7 +46,7 @@ func TestImportedKeymanager_reloadAccountsFromKeystore_MismatchedNumKeys(t *test
|
|||||||
assert.ErrorContains(t, "do not match", err)
|
assert.ErrorContains(t, "do not match", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestImportedKeymanager_reloadAccountsFromKeystore(t *testing.T) {
|
func TestLocalKeymanager_reloadAccountsFromKeystore(t *testing.T) {
|
||||||
password := "Passw03rdz293**%#2"
|
password := "Passw03rdz293**%#2"
|
||||||
wallet := &mock.Wallet{
|
wallet := &mock.Wallet{
|
||||||
Files: make(map[string]map[string][]byte),
|
Files: make(map[string]map[string][]byte),
|
||||||
@@ -60,13 +60,13 @@ type Keystore struct {
|
|||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Kind defines an enum for either imported, derived, or remote-signing
|
// Kind defines an enum for either local, derived, or remote-signing
|
||||||
// keystores for Prysm wallets.
|
// keystores for Prysm wallets.
|
||||||
type Kind int
|
type Kind int
|
||||||
|
|
||||||
const (
|
const (
|
||||||
// Imported keymanager defines an on-disk, encrypted keystore-capable store.
|
// Local keymanager defines an on-disk, encrypted keystore-capable store.
|
||||||
Imported Kind = iota
|
Local Kind = iota
|
||||||
// Derived keymanager using a hierarchical-deterministic algorithm.
|
// Derived keymanager using a hierarchical-deterministic algorithm.
|
||||||
Derived
|
Derived
|
||||||
// Remote keymanager capable of remote-signing data.
|
// Remote keymanager capable of remote-signing data.
|
||||||
@@ -84,7 +84,7 @@ func (k Kind) String() string {
|
|||||||
switch k {
|
switch k {
|
||||||
case Derived:
|
case Derived:
|
||||||
return "derived"
|
return "derived"
|
||||||
case Imported:
|
case Local:
|
||||||
return "direct"
|
return "direct"
|
||||||
case Remote:
|
case Remote:
|
||||||
return "remote"
|
return "remote"
|
||||||
@@ -101,7 +101,7 @@ func ParseKind(k string) (Kind, error) {
|
|||||||
case "derived":
|
case "derived":
|
||||||
return Derived, nil
|
return Derived, nil
|
||||||
case "direct":
|
case "direct":
|
||||||
return Imported, nil
|
return Local, nil
|
||||||
case "remote":
|
case "remote":
|
||||||
return Remote, nil
|
return Remote, nil
|
||||||
case "web3signer":
|
case "web3signer":
|
||||||
|
|||||||
@@ -3,20 +3,20 @@ package keymanager_test
|
|||||||
import (
|
import (
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/derived"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/derived"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/local"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/remote"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/remote"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
_ = keymanager.IKeymanager(&imported.Keymanager{})
|
_ = keymanager.IKeymanager(&local.Keymanager{})
|
||||||
_ = keymanager.IKeymanager(&derived.Keymanager{})
|
_ = keymanager.IKeymanager(&derived.Keymanager{})
|
||||||
_ = keymanager.IKeymanager(&remote.Keymanager{})
|
_ = keymanager.IKeymanager(&remote.Keymanager{})
|
||||||
|
|
||||||
// More granular assertions.
|
// More granular assertions.
|
||||||
_ = keymanager.KeysFetcher(&imported.Keymanager{})
|
_ = keymanager.KeysFetcher(&local.Keymanager{})
|
||||||
_ = keymanager.KeysFetcher(&derived.Keymanager{})
|
_ = keymanager.KeysFetcher(&derived.Keymanager{})
|
||||||
_ = keymanager.Importer(&imported.Keymanager{})
|
_ = keymanager.Importer(&local.Keymanager{})
|
||||||
_ = keymanager.Importer(&derived.Keymanager{})
|
_ = keymanager.Importer(&derived.Keymanager{})
|
||||||
_ = keymanager.Deleter(&imported.Keymanager{})
|
_ = keymanager.Deleter(&local.Keymanager{})
|
||||||
_ = keymanager.Deleter(&derived.Keymanager{})
|
_ = keymanager.Deleter(&derived.Keymanager{})
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ go_library(
|
|||||||
"//validator/client:go_default_library",
|
"//validator/client:go_default_library",
|
||||||
"//validator/db/kv:go_default_library",
|
"//validator/db/kv:go_default_library",
|
||||||
"//validator/graffiti:go_default_library",
|
"//validator/graffiti:go_default_library",
|
||||||
"//validator/keymanager/imported:go_default_library",
|
"//validator/keymanager/local:go_default_library",
|
||||||
"//validator/keymanager/remote-web3signer:go_default_library",
|
"//validator/keymanager/remote-web3signer:go_default_library",
|
||||||
"//validator/rpc:go_default_library",
|
"//validator/rpc:go_default_library",
|
||||||
"//validator/rpc/apimiddleware:go_default_library",
|
"//validator/rpc/apimiddleware:go_default_library",
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ import (
|
|||||||
"github.com/prysmaticlabs/prysm/validator/client"
|
"github.com/prysmaticlabs/prysm/validator/client"
|
||||||
"github.com/prysmaticlabs/prysm/validator/db/kv"
|
"github.com/prysmaticlabs/prysm/validator/db/kv"
|
||||||
g "github.com/prysmaticlabs/prysm/validator/graffiti"
|
g "github.com/prysmaticlabs/prysm/validator/graffiti"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/local"
|
||||||
remote_web3signer "github.com/prysmaticlabs/prysm/validator/keymanager/remote-web3signer"
|
remote_web3signer "github.com/prysmaticlabs/prysm/validator/keymanager/remote-web3signer"
|
||||||
"github.com/prysmaticlabs/prysm/validator/rpc"
|
"github.com/prysmaticlabs/prysm/validator/rpc"
|
||||||
validatorMiddleware "github.com/prysmaticlabs/prysm/validator/rpc/apimiddleware"
|
validatorMiddleware "github.com/prysmaticlabs/prysm/validator/rpc/apimiddleware"
|
||||||
@@ -374,9 +374,9 @@ func (c *ValidatorClient) registerValidatorService(cliCtx *cli.Context) error {
|
|||||||
maxCallRecvMsgSize := c.cliCtx.Int(cmd.GrpcMaxCallRecvMsgSizeFlag.Name)
|
maxCallRecvMsgSize := c.cliCtx.Int(cmd.GrpcMaxCallRecvMsgSizeFlag.Name)
|
||||||
grpcRetries := c.cliCtx.Uint(flags.GrpcRetriesFlag.Name)
|
grpcRetries := c.cliCtx.Uint(flags.GrpcRetriesFlag.Name)
|
||||||
grpcRetryDelay := c.cliCtx.Duration(flags.GrpcRetryDelayFlag.Name)
|
grpcRetryDelay := c.cliCtx.Duration(flags.GrpcRetryDelayFlag.Name)
|
||||||
var interopKeysConfig *imported.InteropKeymanagerConfig
|
var interopKeysConfig *local.InteropKeymanagerConfig
|
||||||
if c.cliCtx.IsSet(flags.InteropNumValidators.Name) {
|
if c.cliCtx.IsSet(flags.InteropNumValidators.Name) {
|
||||||
interopKeysConfig = &imported.InteropKeymanagerConfig{
|
interopKeysConfig = &local.InteropKeymanagerConfig{
|
||||||
Offset: cliCtx.Uint64(flags.InteropStartIndex.Name),
|
Offset: cliCtx.Uint64(flags.InteropStartIndex.Name),
|
||||||
NumValidatorKeys: cliCtx.Uint64(flags.InteropNumValidators.Name),
|
NumValidatorKeys: cliCtx.Uint64(flags.InteropNumValidators.Name),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ func TestNode_Builds(t *testing.T) {
|
|||||||
_, err := accounts.CreateWalletWithKeymanager(context.Context, &accounts.CreateWalletConfig{
|
_, err := accounts.CreateWalletWithKeymanager(context.Context, &accounts.CreateWalletConfig{
|
||||||
WalletCfg: &wallet.Config{
|
WalletCfg: &wallet.Config{
|
||||||
WalletDir: dir,
|
WalletDir: dir,
|
||||||
KeymanagerKind: keymanager.Imported,
|
KeymanagerKind: keymanager.Local,
|
||||||
WalletPassword: walletPassword,
|
WalletPassword: walletPassword,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ go_library(
|
|||||||
"//validator/db:go_default_library",
|
"//validator/db:go_default_library",
|
||||||
"//validator/keymanager:go_default_library",
|
"//validator/keymanager:go_default_library",
|
||||||
"//validator/keymanager/derived:go_default_library",
|
"//validator/keymanager/derived:go_default_library",
|
||||||
"//validator/keymanager/imported:go_default_library",
|
"//validator/keymanager/local:go_default_library",
|
||||||
"//validator/slashing-protection-history:go_default_library",
|
"//validator/slashing-protection-history:go_default_library",
|
||||||
"//validator/slashing-protection-history/format:go_default_library",
|
"//validator/slashing-protection-history/format:go_default_library",
|
||||||
"@com_github_fsnotify_fsnotify//:go_default_library",
|
"@com_github_fsnotify_fsnotify//:go_default_library",
|
||||||
@@ -108,7 +108,7 @@ go_test(
|
|||||||
"//validator/db/kv:go_default_library",
|
"//validator/db/kv:go_default_library",
|
||||||
"//validator/keymanager:go_default_library",
|
"//validator/keymanager:go_default_library",
|
||||||
"//validator/keymanager/derived:go_default_library",
|
"//validator/keymanager/derived:go_default_library",
|
||||||
"//validator/keymanager/imported:go_default_library",
|
"//validator/keymanager/local:go_default_library",
|
||||||
"//validator/slashing-protection-history/format:go_default_library",
|
"//validator/slashing-protection-history/format:go_default_library",
|
||||||
"//validator/testing:go_default_library",
|
"//validator/testing:go_default_library",
|
||||||
"@com_github_golang_jwt_jwt//:go_default_library",
|
"@com_github_golang_jwt_jwt//:go_default_library",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import (
|
|||||||
"github.com/prysmaticlabs/prysm/validator/accounts/petnames"
|
"github.com/prysmaticlabs/prysm/validator/accounts/petnames"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/derived"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/derived"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/local"
|
||||||
"google.golang.org/grpc/codes"
|
"google.golang.org/grpc/codes"
|
||||||
"google.golang.org/grpc/status"
|
"google.golang.org/grpc/status"
|
||||||
)
|
)
|
||||||
@@ -107,10 +107,10 @@ func (s *Server) BackupAccounts(
|
|||||||
|
|
||||||
var keystoresToBackup []*keymanager.Keystore
|
var keystoresToBackup []*keymanager.Keystore
|
||||||
switch km := km.(type) {
|
switch km := km.(type) {
|
||||||
case *imported.Keymanager:
|
case *local.Keymanager:
|
||||||
keystoresToBackup, err = km.ExtractKeystores(ctx, pubKeys, req.BackupPassword)
|
keystoresToBackup, err = km.ExtractKeystores(ctx, pubKeys, req.BackupPassword)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, status.Errorf(codes.Internal, "Could not backup accounts for imported keymanager: %v", err)
|
return nil, status.Errorf(codes.Internal, "Could not backup accounts for local keymanager: %v", err)
|
||||||
}
|
}
|
||||||
case *derived.Keymanager:
|
case *derived.Keymanager:
|
||||||
keystoresToBackup, err = km.ExtractKeystores(ctx, pubKeys, req.BackupPassword)
|
keystoresToBackup, err = km.ExtractKeystores(ctx, pubKeys, req.BackupPassword)
|
||||||
@@ -173,6 +173,9 @@ func (s *Server) DeleteAccounts(
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
if s.wallet.KeymanagerKind() != keymanager.Local && s.wallet.KeymanagerKind() != keymanager.Derived {
|
||||||
|
return nil, status.Error(codes.FailedPrecondition, "Only Imported or Derived wallets can delete accounts")
|
||||||
|
}
|
||||||
if err := accounts.DeleteAccount(ctx, &accounts.Config{
|
if err := accounts.DeleteAccount(ctx, &accounts.Config{
|
||||||
Wallet: s.wallet,
|
Wallet: s.wallet,
|
||||||
Keymanager: km,
|
Keymanager: km,
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ func TestImportSlashingProtection_Preconditions(t *testing.T) {
|
|||||||
w, err := accounts.CreateWalletWithKeymanager(ctx, &accounts.CreateWalletConfig{
|
w, err := accounts.CreateWalletWithKeymanager(ctx, &accounts.CreateWalletConfig{
|
||||||
WalletCfg: &wallet.Config{
|
WalletCfg: &wallet.Config{
|
||||||
WalletDir: defaultWalletPath,
|
WalletDir: defaultWalletPath,
|
||||||
KeymanagerKind: keymanager.Imported,
|
KeymanagerKind: keymanager.Local,
|
||||||
WalletPassword: strongPass,
|
WalletPassword: strongPass,
|
||||||
},
|
},
|
||||||
SkipMnemonicConfirm: true,
|
SkipMnemonicConfirm: true,
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ func (s *Server) CreateWallet(ctx context.Context, req *pb.CreateWalletRequest)
|
|||||||
_, err := accounts.CreateWalletWithKeymanager(ctx, &accounts.CreateWalletConfig{
|
_, err := accounts.CreateWalletWithKeymanager(ctx, &accounts.CreateWalletConfig{
|
||||||
WalletCfg: &wallet.Config{
|
WalletCfg: &wallet.Config{
|
||||||
WalletDir: walletDir,
|
WalletDir: walletDir,
|
||||||
KeymanagerKind: keymanager.Imported,
|
KeymanagerKind: keymanager.Local,
|
||||||
WalletPassword: req.WalletPassword,
|
WalletPassword: req.WalletPassword,
|
||||||
},
|
},
|
||||||
SkipMnemonicConfirm: true,
|
SkipMnemonicConfirm: true,
|
||||||
@@ -79,7 +79,7 @@ func (s *Server) CreateWallet(ctx context.Context, req *pb.CreateWalletRequest)
|
|||||||
}
|
}
|
||||||
if err := s.initializeWallet(ctx, &wallet.Config{
|
if err := s.initializeWallet(ctx, &wallet.Config{
|
||||||
WalletDir: walletDir,
|
WalletDir: walletDir,
|
||||||
KeymanagerKind: keymanager.Imported,
|
KeymanagerKind: keymanager.Local,
|
||||||
WalletPassword: req.WalletPassword,
|
WalletPassword: req.WalletPassword,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -126,7 +126,7 @@ func (s *Server) WalletConfig(_ context.Context, _ *empty.Empty) (*pb.WalletResp
|
|||||||
switch s.wallet.KeymanagerKind() {
|
switch s.wallet.KeymanagerKind() {
|
||||||
case keymanager.Derived:
|
case keymanager.Derived:
|
||||||
keymanagerKind = pb.KeymanagerKind_DERIVED
|
keymanagerKind = pb.KeymanagerKind_DERIVED
|
||||||
case keymanager.Imported:
|
case keymanager.Local:
|
||||||
keymanagerKind = pb.KeymanagerKind_IMPORTED
|
keymanagerKind = pb.KeymanagerKind_IMPORTED
|
||||||
case keymanager.Remote:
|
case keymanager.Remote:
|
||||||
keymanagerKind = pb.KeymanagerKind_REMOTE
|
keymanagerKind = pb.KeymanagerKind_REMOTE
|
||||||
|
|||||||
@@ -24,14 +24,14 @@ import (
|
|||||||
"github.com/prysmaticlabs/prysm/validator/accounts/wallet"
|
"github.com/prysmaticlabs/prysm/validator/accounts/wallet"
|
||||||
"github.com/prysmaticlabs/prysm/validator/client"
|
"github.com/prysmaticlabs/prysm/validator/client"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
||||||
"github.com/prysmaticlabs/prysm/validator/keymanager/imported"
|
"github.com/prysmaticlabs/prysm/validator/keymanager/local"
|
||||||
"github.com/tyler-smith/go-bip39"
|
"github.com/tyler-smith/go-bip39"
|
||||||
keystorev4 "github.com/wealdtech/go-eth2-wallet-encryptor-keystorev4"
|
keystorev4 "github.com/wealdtech/go-eth2-wallet-encryptor-keystorev4"
|
||||||
)
|
)
|
||||||
|
|
||||||
const strongPass = "29384283xasjasd32%%&*@*#*"
|
const strongPass = "29384283xasjasd32%%&*@*#*"
|
||||||
|
|
||||||
func TestServer_CreateWallet_Imported(t *testing.T) {
|
func TestServer_CreateWallet_Local(t *testing.T) {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
localWalletDir := setupWalletDir(t)
|
localWalletDir := setupWalletDir(t)
|
||||||
defaultWalletPath = localWalletDir
|
defaultWalletPath = localWalletDir
|
||||||
@@ -101,7 +101,7 @@ func TestServer_CreateWallet_Imported(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestServer_CreateWallet_Imported_PasswordTooWeak(t *testing.T) {
|
func TestServer_CreateWallet_Local_PasswordTooWeak(t *testing.T) {
|
||||||
localWalletDir := setupWalletDir(t)
|
localWalletDir := setupWalletDir(t)
|
||||||
defaultWalletPath = localWalletDir
|
defaultWalletPath = localWalletDir
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
@@ -313,7 +313,7 @@ func TestServer_WalletConfig(t *testing.T) {
|
|||||||
w, err := accounts.CreateWalletWithKeymanager(ctx, &accounts.CreateWalletConfig{
|
w, err := accounts.CreateWalletWithKeymanager(ctx, &accounts.CreateWalletConfig{
|
||||||
WalletCfg: &wallet.Config{
|
WalletCfg: &wallet.Config{
|
||||||
WalletDir: defaultWalletPath,
|
WalletDir: defaultWalletPath,
|
||||||
KeymanagerKind: keymanager.Imported,
|
KeymanagerKind: keymanager.Local,
|
||||||
WalletPassword: strongPass,
|
WalletPassword: strongPass,
|
||||||
},
|
},
|
||||||
SkipMnemonicConfirm: true,
|
SkipMnemonicConfirm: true,
|
||||||
@@ -346,7 +346,7 @@ func TestServer_ImportAccounts_FailedPreconditions(t *testing.T) {
|
|||||||
w, err := accounts.CreateWalletWithKeymanager(ctx, &accounts.CreateWalletConfig{
|
w, err := accounts.CreateWalletWithKeymanager(ctx, &accounts.CreateWalletConfig{
|
||||||
WalletCfg: &wallet.Config{
|
WalletCfg: &wallet.Config{
|
||||||
WalletDir: defaultWalletPath,
|
WalletDir: defaultWalletPath,
|
||||||
KeymanagerKind: keymanager.Imported,
|
KeymanagerKind: keymanager.Local,
|
||||||
WalletPassword: strongPass,
|
WalletPassword: strongPass,
|
||||||
},
|
},
|
||||||
SkipMnemonicConfirm: true,
|
SkipMnemonicConfirm: true,
|
||||||
@@ -381,14 +381,14 @@ func TestServer_ImportAccounts_FailedPreconditions(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestServer_ImportAccounts_OK(t *testing.T) {
|
func TestServer_ImportAccounts_OK(t *testing.T) {
|
||||||
imported.ResetCaches()
|
local.ResetCaches()
|
||||||
localWalletDir := setupWalletDir(t)
|
localWalletDir := setupWalletDir(t)
|
||||||
defaultWalletPath = localWalletDir
|
defaultWalletPath = localWalletDir
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
w, err := accounts.CreateWalletWithKeymanager(ctx, &accounts.CreateWalletConfig{
|
w, err := accounts.CreateWalletWithKeymanager(ctx, &accounts.CreateWalletConfig{
|
||||||
WalletCfg: &wallet.Config{
|
WalletCfg: &wallet.Config{
|
||||||
WalletDir: defaultWalletPath,
|
WalletDir: defaultWalletPath,
|
||||||
KeymanagerKind: keymanager.Imported,
|
KeymanagerKind: keymanager.Local,
|
||||||
WalletPassword: strongPass,
|
WalletPassword: strongPass,
|
||||||
},
|
},
|
||||||
SkipMnemonicConfirm: true,
|
SkipMnemonicConfirm: true,
|
||||||
@@ -490,7 +490,7 @@ func createImportedWalletWithAccounts(t testing.TB, numAccounts int) (*Server, [
|
|||||||
w, err := accounts.CreateWalletWithKeymanager(ctx, &accounts.CreateWalletConfig{
|
w, err := accounts.CreateWalletWithKeymanager(ctx, &accounts.CreateWalletConfig{
|
||||||
WalletCfg: &wallet.Config{
|
WalletCfg: &wallet.Config{
|
||||||
WalletDir: defaultWalletPath,
|
WalletDir: defaultWalletPath,
|
||||||
KeymanagerKind: keymanager.Imported,
|
KeymanagerKind: keymanager.Local,
|
||||||
WalletPassword: strongPass,
|
WalletPassword: strongPass,
|
||||||
},
|
},
|
||||||
SkipMnemonicConfirm: true,
|
SkipMnemonicConfirm: true,
|
||||||
|
|||||||
Reference in New Issue
Block a user