wallet: update passphrase user experience.

For users don't want to set/manage a passphrase a default passphrase
"passphrase" will be used during wallet creation.

At startup, the wallet tries to unlock itself using the default
passphrase, or a user provided one (using -p).

Users that prefer a passphrase can override the default one at wallet
creation time using -p, or use the walletpassphrase rpc when
the wallet is running. This will prevent the wallet from auto-unlock,
and preserve the lock-by-default behavior.
This commit is contained in:
Roy Lee 2022-10-23 10:26:42 -07:00
parent 3aca0be46a
commit 1fa143fa0e
3 changed files with 9 additions and 7 deletions

View file

@ -58,7 +58,7 @@ type config struct {
DBTimeout time.Duration `long:"dbtimeout" description:"The timeout value to use when opening the wallet database."`
// Passphrase options
Passphrase string `short:"p" long:"passphrase" default-mask:"-" description:"The wallet passphrase (default: \"insecurepassphrase\")"`
Passphrase string `short:"p" long:"passphrase" default-mask:"-" description:"The wallet passphrase (default: \"passphrase\")"`
// RPC client options
RPCConnect string `short:"c" long:"rpcconnect" description:"Hostname/IP and port of lbcd RPC server to connect to (default localhost:9245, testnet: localhost:19245, regtest: localhost:29245)"`

View file

@ -85,6 +85,11 @@ func walletMain() error {
loader.RunAfterLoad(func(w *wallet.Wallet) {
startWalletRPCServices(w, legacyRPCServer)
log.Infof("Unlocking wallet with the default or specified passphrase...")
err = w.Unlock([]byte(cfg.Passphrase), nil)
if err != nil {
log.Infof("Unable to unlock wallet: %v", err)
}
})
_, err = loader.OpenExistingWallet()

View file

@ -46,12 +46,9 @@ func createWallet(cfg *config) error {
)
// Start by prompting for the passphrase.
reader := bufio.NewReader(os.Stdin)
privPass, err := prompt.Passphrase(true)
if err != nil {
return err
}
passphrase := []byte(cfg.Passphrase)
reader := bufio.NewReader(os.Stdin)
// Ascertain the wallet generation seed. This will either be an
// automatically generated value the user has already confirmed or a
// value the user has entered which has already been validated.
@ -61,7 +58,7 @@ func createWallet(cfg *config) error {
}
fmt.Println("Creating the wallet...")
w, err := loader.CreateNewWallet(privPass, seed, bday)
w, err := loader.CreateNewWallet(passphrase, seed, bday)
if err != nil {
return err
}