Skip to content
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

Implement client state #34

Closed
hdevalence opened this issue Sep 7, 2021 · 0 comments · Fixed by #103
Closed

Implement client state #34

hdevalence opened this issue Sep 7, 2021 · 0 comments · Fixed by #103
Labels
A-client Area: Design and implementation for client functionality C-enhancement Category: an enhancement to the codebase E-easy Effort: Easy
Projects

Comments

@hdevalence
Copy link
Member

As explained in the first part of #28, the state on a shielded blockchain like Penumbra is shaped differently than on a public one:

On a shielded blockchain, however, the state is fragmented across all users of the application, as each user has a view only of their "local" portion of the application state. Transactions update a user's state privately, and use a zero-knowledge proof to prove to all other participants that the update was allowed by the application rules.

This means that the client library has to maintain client state. This probably looks like:

  • a set of viewing keys
  • a record of how much of the chain has been scanned with each viewing key
  • a set of live notes under the user's control
  • a record of transactions they have visibility into

Some questions:

  • what should back this data store? ideally, it'd be something that's storage-agnostic, so it could just as easily work for pcli as any other environment that allows blob storage.
@hdevalence hdevalence added A-client Area: Design and implementation for client functionality E-easy Effort: Easy S-paused labels Sep 7, 2021
@hdevalence hdevalence added the C-enhancement Category: an enhancement to the codebase label Sep 7, 2021
@hdevalence hdevalence added this to the TN1 milestone Sep 8, 2021
@hdevalence hdevalence added this to Paused in MVP1 Sep 8, 2021
@hdevalence hdevalence removed this from the MVP1 milestone Sep 8, 2021
@redshiftzero redshiftzero moved this from Paused to Next in MVP1 Oct 27, 2021
@redshiftzero redshiftzero moved this from Next to In progress in MVP1 Oct 27, 2021
MVP1 automation moved this from In progress to Done Nov 1, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-client Area: Design and implementation for client functionality C-enhancement Category: an enhancement to the codebase E-easy Effort: Easy
Projects
MVP1
  
Done
Development

Successfully merging a pull request may close this issue.

1 participant