-
Notifications
You must be signed in to change notification settings - Fork 107
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
Epic: Zebra as a lightwalletd backend #3134
Comments
I removed tonic and tonic-rpc as the preferred option, because they provide gRPC encoded as JSON, not JSON-RPC. Other async JSON-RPC alternatives are:
But they are harder to use, because they declare RPC methods as closures. |
@ftm1000 this is the big pile of tasks that are related to The essential tasks are listed in the ticket, so we should create a new epic with just those tasks. We also left some security issues until the lightwalletd work. But we should create a separate epic for them, so it's easier to see the essential tasks. |
We're trying to reduce the number of Epics we have so we can just clean up this one and move the non-essential tasks to a github tracking issue instead. For the security issues I'm not sure that these should be an Epic unless we are planning to schedule them in the roadmap as a high level goal to complete over a number of sprints after the lightwalletd work. For anything that doesn't have a discrete start and end date we should probably just use github tracking issues instead, i.e a task list of issues as in #3125. |
That sounds good. We should decide which security issues represent a large risk for lightwalletd servers, and schedule them in an epic after lightwalletd is feature-complete. (I expect there might be 1-5 of these.) And if any of the fixes will change the API or performance, we might want to put them in the lightwalletd epic itself. (I expect there might be 0-2 of these.) |
Closing this one!!! Great job everyone! 👏 🎉 |
We want to enable Zebra to act as a lightwalletd backend. In order to do this we will need to expose the minimal subset of JSON-RPC methods required by a lightwalletd server.
This epic will be used to keep track of the items we need to implement to achieve that goal.
Getting started
zcashd's JSON-RPC interface is mainly JSON-RPC-v1. We plan to use the
jsonrpc_core
Rust crate, because it's compatible with both v1 and v2.RPC listener port
We need to:
zcashd
's RPC port has a lot of features, but they are out of scope for Zebra.Fixed Value RPC method
Other Light Wallet RPC methods
The following
zcashd
JSON-RPC calls are used bylightwalletd
. There is a list of RPC methods in thelightwalletd
README.We also need to create acceptance tests for each RPC method.
State RPC Methods
Block Chain RPC methods
Transparent output address index RPC methods
These tickets use the database changes in #3150, but if they aren't finished, we can just return an empty list:
State & Mempool Transaction RPC methods
Mempool-Only RPC methods
Internal Zebra Changes
The current database design is:
The draft database design was merged in:
Make transaction database more efficient
To get good
lightwalletd
performance, we need to make some changes to our database:This is needed to:
Add transparent output address database index
We also need to add extra indexes for transparent output addresses:
Add chain tip estimate calculations to zebra-state
Infrastructure / Testing
Optional Changes
We don't know if these changes are required yet.
Further Performance Improvements
Handling user-generated transactions
PushTransaction
requests to multiple peers #3242, if needed to improve reliability (we could just put the transaction in our mempool instead)Out of Scope
These changes are not required, because the fields are not used by
lightwalletd
:The text was updated successfully, but these errors were encountered: