Skip to content

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature Request]: Keys Management #415

Closed
Bidon15 opened this issue Feb 8, 2022 · 16 comments
Closed

[Feature Request]: Keys Management #415

Bidon15 opened this issue Feb 8, 2022 · 16 comments
Labels
area:core_and_app Relationship with Core node and Celestia-App area:node Node enhancement New feature or request kind:discussion

Comments

@Bidon15
Copy link
Member

Bidon15 commented Feb 8, 2022

Summary

Celestia Node can CRUD keys

Impact on users

It will be beneficial to produce a feature that allows Celestia Node to do CRUD on keys as this can allow signing Txs.

Currently, we have a merged ADR #369 that is proposing a state interaction for Celestia Node and a respective PR #411

Implementation ideas

As we are already using RPC approach lately, we can use it for this feature

Urgency

Medium

@Bidon15 Bidon15 added enhancement New feature or request area:node Node area:core_and_app Relationship with Core node and Celestia-App labels Feb 8, 2022
@Bidon15 Bidon15 moved this to TODO in Celestia Node Feb 8, 2022
@liamsi
Copy link
Member

liamsi commented Feb 8, 2022

The cosmos-sdk uses this for key storage: https://github.com/cosmos/cosmos-sdk/blob/master/crypto/keyring/doc.go
And this is also what lens uses under the hood I think.

@renaynay
Copy link
Member

renaynay commented Feb 8, 2022

Yes @liamsi. I suggest if we continue w/ using lens, we should be consistent and use SDK's keyring.

@liamsi
Copy link
Member

liamsi commented Feb 25, 2022

I think independent of lens we should be consistent and use SDK's keyring.

@renaynay
Copy link
Member

We already do with #420

@Wondertan
Copy link
Member

While reviewing #420 I went deeper into SDK's keyring. My observations are:

  • They have some custom migration logic for amino and stuff that we don't need
  • They introduce a keyring interface that is overloaded, not ergonomic and can be simplified
    • They treat Ledger as something that needs additional methods rather than an implementation detail
    • SupportedAlgorithms() (SigningAlgoList, SigningAlgoList) two lists instead of one?
    • Exporter interface whose responsibility is only ASCII armoring shouldn't really be an interface.
      • There can be only GetPubKey and GetPrivKey methods with armoring as separate utility functions and not an interface.
      • These getters will also remove the need for an Unsafe interface.
      • Importers could also use generic setters/writers with armoring treated elsewhere. Basically, armoring is a (de)serialization format that should not be a part of the interface.
    • Methods for migration
    • Multisig special methods can be implementation details
    • Why wallets are indexed by bother uid and address? Why only address or uid is not enough?
      • There might be a good reason for this, but it seems like a legacy
  • They use github.com/99designs/keyring which looks sane.
    • The SDK's Keyring interface does not look sane and long term we should write our own generic wallet management which may wrap 99designs/keyring
    • We should look deeper into extending 99designs/keyring backend implementations with Ledger as a backend and possibly other hardware wallets. If its Keyring interface allows us to do so then we can remove our own Keystore interface, If not we should look for other generic wallets and/or improve on our Keystore

cc @liamsi @renaynay

@Wondertan
Copy link
Member

Wondertan commented Mar 4, 2022

I believe that all the Celestia wallets(like Kepler) should be super/light clients by default, so celestia-node(which implements those) has to contain first-class wallet support.

@renaynay
Copy link
Member

renaynay commented Mar 26, 2022

Another requirement: when constructing keyring, allow users to pass custom userInput.

Ref: #420

@Wondertan
Copy link
Member

Wondertan commented Mar 26, 2022

@renaynay, this shouldn't be a requirement, but optional feature that tightens security for users. As otherwise, before sending any the user would need to write the password. But it can be undesirable:

  • User has OS-level data encryption and he enters a similar purpose password every time he enters his PC
  • User can have a desirable level of security just by entering the password to unlock his PR through a login screen. This does not involve encryption of the store private keys, but it is ok for the majority of users, IMO

Personally, I would like to have this feature, but I would not call this a requirement.

@renaynay
Copy link
Member

"Allow users to specify a custom key name we should also allow custom path to the keyring, not necessary under store/keys, so that users can access keyrings elsewhere"

@tzdybal
Copy link
Member

tzdybal commented May 19, 2022

Any estimates on delivery of this feature?

@renaynay
Copy link
Member

Allow users to indicate whether they want the mnemonic for generated key to be logged.

@renaynay
Copy link
Member

Any estimates on delivery of this feature?

@tzdybal we already have a basic key utility that is taken from cosmos-sdk. It can be accessed via celestia <node_type> keys --help

@Bidon15
Copy link
Member Author

Bidon15 commented Nov 15, 2022

Grooming 16/11/2022:

This issue is touching org wide decision making and we need help to understand how to resolve this org wise
cc: @MSevey

@MSevey
Copy link
Member

MSevey commented Nov 15, 2022

is this a blocker for incentivized testnet or mainnet?

@Wondertan
Copy link
Member

Not a blocker. We can live with what CosmosSDK provides for now and for mainnet

@MSevey MSevey removed their assignment Nov 15, 2022
@MSevey
Copy link
Member

MSevey commented Nov 15, 2022

ok, removing my assignment then

@celestiaorg celestiaorg locked and limited conversation to collaborators Dec 20, 2023
@ramin ramin converted this issue into discussion #3022 Dec 20, 2023
@github-project-automation github-project-automation bot moved this from TODO to Done in Celestia Node Dec 20, 2023

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

Labels
area:core_and_app Relationship with Core node and Celestia-App area:node Node enhancement New feature or request kind:discussion
Projects
No open projects
Archived in project
Development

No branches or pull requests

7 participants