Add compact block filter client via Kyoto #591
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Adds a compact block filter backend via Kyoto. Should remain a draft PR until we have an official release for
bdk_kyoto
Notes to the reviewers
I will need help writing tests, although I am not sure we need to test the node syncs, only that the node can be built and ran for a couple seconds.
Architectural notes:
Most of these decisions are a product of either
kyoto
orbdk_kyoto
and passed through the bindings:LightClient
andLightNode
with a namespace level function that takes node configurations.LightNode
in the background. I expose an method on the namespace level function calledrun_node
that moves the process to a different OS thread and returns immediatelyLightClient
simply returns a walletUpdate
when callingupdate
. This can be applied directly to the wallet.LightClient
may broadcast a transactionLightClient
may shutdown the nodeLightClient
may also add more addresses (scripts) to watch withwatch_address
. When a user reveals a new address, it should be added to the node. Most of the time, however, the node will already be aware of the script, asbdk_kyoto
peeks ahead of the last revealed index.NodeMessageHandler
trait. The idea is the application will define arbitrary behavior, from writing to a log file to updating user interface components.Changelog notice
Checklists
All Submissions:
cargo fmt
andcargo clippy
before committingNew Features:
Bugfixes: