Compare commits

...

6 Commits

Author SHA1 Message Date
Jim McDonald
e1ce81c81d Bump version 2020-05-28 07:59:14 +01:00
Jim McDonald
bd67ba0307 Do not use local copy of wallet store when creating HD wallet 2020-05-28 07:50:04 +01:00
Jim McDonald
12bb5a7ab8 Merge pull request #8 from olegshmuelov/patch-2
consistency
2020-05-26 06:50:54 +01:00
Jim McDonald
d57dbbf104 Merge pull request #9 from olegshmuelov/patch-1
consistency
2020-05-26 06:50:43 +01:00
olegshmuelov
6482b4add6 consistency
--wallet flag
2020-05-25 18:35:18 +03:00
olegshmuelov
b672e83470 consistency
--wallet flag
2020-05-25 18:34:06 +03:00
5 changed files with 33 additions and 20 deletions

View File

@@ -57,6 +57,9 @@ var rootStorePassphrase string
var rootWalletPassphrase string
var rootAccountPassphrase string
// Store for wallet actions.
var store wtypes.Store
// Remote connection.
var remote bool
var remoteAddr string
@@ -124,7 +127,6 @@ func persistentPreRun(cmd *cobra.Command, args []string) {
if viper.GetString("remote") == "" {
// Set up our wallet store
var store wtypes.Store
switch rootStore {
case "s3":
assert(rootBaseDir == "", "--basedir does not apply for the s3 store")

View File

@@ -30,7 +30,7 @@ var versionCmd = &cobra.Command{
ethdo version.`,
Run: func(cmd *cobra.Command, args []string) {
fmt.Println("1.4.12")
fmt.Println("1.4.15")
if viper.GetBool("verbose") {
buildInfo, ok := dbg.ReadBuildInfo()
if ok {

View File

@@ -32,7 +32,7 @@ var walletAccountsCmd = &cobra.Command{
In quiet mode this will return 0 if the wallet holds any addresses, otherwise 1.`,
Run: func(cmd *cobra.Command, args []string) {
assert(walletWallet != "", "wallet is required")
assert(walletWallet != "", "--wallet is required")
hasAccounts := false

View File

@@ -21,7 +21,6 @@ import (
wallet "github.com/wealdtech/go-eth2-wallet"
keystorev4 "github.com/wealdtech/go-eth2-wallet-encryptor-keystorev4"
hd "github.com/wealdtech/go-eth2-wallet-hd/v2"
filesystem "github.com/wealdtech/go-eth2-wallet-store-filesystem"
)
var walletCreateType string
@@ -44,23 +43,10 @@ In quiet mode this will return 0 if the wallet is created successfully, otherwis
switch strings.ToLower(walletCreateType) {
case "non-deterministic", "nd":
assert(walletCreateSeed == "", "--seed is not allowed with non-deterministic wallets")
_, err = wallet.CreateWallet(walletWallet, wallet.WithType("nd"))
err = walletCreateND(walletWallet)
case "hierarchical deterministic", "hd":
assert(rootWalletPassphrase != "", "--walletpassphrase is required for hierarchical deterministic wallets")
store := filesystem.New()
encryptor := keystorev4.New()
if walletCreateSeed != "" {
// Creating wallet from a seed.
var seed []byte
seed, err = bip39.MnemonicToByteArray(walletCreateSeed)
errCheck(err, "Failed to decode seed")
// Strip checksum; last byte
seed = seed[:len(seed)-1]
assert(len(seed) == 32, "Seed must have 24 words")
_, err = hd.CreateWalletFromSeed(walletWallet, []byte(rootWalletPassphrase), store, encryptor, seed)
} else {
_, err = hd.CreateWallet(walletWallet, []byte(rootWalletPassphrase), store, encryptor)
}
err = walletCreateHD(walletWallet, rootWalletPassphrase, walletCreateSeed)
default:
die("unknown wallet type")
}
@@ -68,6 +54,31 @@ In quiet mode this will return 0 if the wallet is created successfully, otherwis
},
}
// walletCreateND creates a non-deterministic wallet.
func walletCreateND(name string) error {
_, err := wallet.CreateWallet(name, wallet.WithType("nd"))
return err
}
// walletCreateND creates a hierarchical-deterministic wallet.
func walletCreateHD(name string, passphrase string, seedPhrase string) error {
encryptor := keystorev4.New()
if seedPhrase != "" {
// Create wallet from a user-supplied seed.
var seed []byte
seed, err := bip39.MnemonicToByteArray(seedPhrase)
errCheck(err, "Failed to decode seed")
// Strip checksum; last byte.
seed = seed[:len(seed)-1]
assert(len(seed) == 32, "Seed must have 24 words")
_, err = hd.CreateWalletFromSeed(name, []byte(passphrase), store, encryptor, seed)
return err
}
// Create wallet with a random seed.
_, err := hd.CreateWallet(name, []byte(passphrase), store, encryptor)
return err
}
func init() {
walletCmd.AddCommand(walletCreateCmd)
walletFlags(walletCreateCmd)

View File

@@ -32,7 +32,7 @@ var walletInfoCmd = &cobra.Command{
In quiet mode this will return 0 if the wallet exists, otherwise 1.`,
Run: func(cmd *cobra.Command, args []string) {
assert(!remote, "wallet info not available with remote wallets")
assert(walletWallet != "", "Wallet is required")
assert(walletWallet != "", "--wallet is required")
wallet, err := walletFromPath(walletWallet)
errCheck(err, "unknown wallet")