Skip to content

Wallet cleanup brainstorming #2135

@cwgoes

Description

@cwgoes

Clean up the Namada CLI wallet, both internally and externally.

Just using the wallet, I observe some UX issues:

  • Many commands seem to require genesis files which I wouldn't expect to need them, e.g.
namada wallet key list

=>

The application panicked (crashed).
Message:  Missing genesis files:
   0: Couldn't read Validity predicates config file from /home/cwgoes/.local/share/namada/e2e-test.a23671b0c1d2dc60d75d8/validity-predicates.toml
   1: No such file or directory (os error 2)

Location:
   apps/src/lib/config/genesis/toml_utils.rs:11

Why do we need genesis files for the wallet at all? The wallet should only be dealing with its own database and configuration, in general. If we're using genesis files to look up aliases or such, this is fine, but we should gracefully degrade (perhaps with a warning) if they're not found instead of crashing.

  • The relationship between key and address generation is pretty unclear to me. I understand addresses as simply being derived from public keys - if we create a new key, we should also know the address. Why do we have a whole separate subcommand for address management (with many of the same sub-sub-commands as for keys)? Can we get rid of this, and simply make the key commands compute & store the address as well?
  • Is there a strong reason to separate MASP and regular key generation and management? I think it might be easier for users if we simply have a --masp option or such when generating a new key (and generating payment addresses only works when used with a spending key). This may require us to implement ZIP32 (but there is almost certainly a library which we can import).
  • The wallet should support an arbitrary-message sign operation which does not depend on any transaction-related code (just signs binary data with a key in the wallet).

There's probably more, but let's just start by evaluating these questions.

Metadata

Metadata

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions