-
Notifications
You must be signed in to change notification settings - Fork 139
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
✨ introduce: Libplanet.Store.Remote #3688
✨ introduce: Libplanet.Store.Remote #3688
Conversation
a654cdd
to
264c739
Compare
0cd4a6e
to
d56b073
Compare
This PR has Quantification details
Why proper sizing of changes matters
Optimal pull request sizes drive a better predictable PR flow as they strike a
What can I do to optimize my changes
How to interpret the change counts in git diff output
Was this comment helpful? 👍 :ok_hand: :thumbsdown: (Email) |
da6ffe4
to
894292b
Compare
This PR has Quantification details
Why proper sizing of changes matters
Optimal pull request sizes drive a better predictable PR flow as they strike a
What can I do to optimize my changes
How to interpret the change counts in git diff output
Was this comment helpful? 👍 :ok_hand: :thumbsdown: (Email) |
This PR has Quantification details
Why proper sizing of changes matters
Optimal pull request sizes drive a better predictable PR flow as they strike a
What can I do to optimize my changes
How to interpret the change counts in git diff output
Was this comment helpful? 👍 :ok_hand: :thumbsdown: (Email) |
Context
Since
Libplanet 4.0
, we decided to use theTrie
base state machine. As a side-effect,ActionEvaluator
hasStateStore
, andBlockChain
asks if it wants someState
.It makes the
Libplanet
architecture clear, but some 2nd party services which dependent onBlockChainStates
. EspeciallyRemoteBlockChainStates
.So, we make
Libplanet.Store.Remote
, to support remote state machines.Rationale
In
Libplanet.Store.Remote
, have one server and one client. it shares.proto
schema for communicating as agRPC
.RemoteKeyValueStore
.RemoteKeyValueStore
.Run
Server
First, we need to make a server project.
Then you can test with any other gRPC client tool.
Client
Just use any project if you want to use the remote store.
Async example:
Sync example: