-
Notifications
You must be signed in to change notification settings - Fork 111
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: Blockchain Scanning #7728
Comments
@oxarbitrage I've created a new section for the minimum viable product work and renamed the "Implementation" section to "Future iterations". Can you please move any issues that should be part of the MVP to this new section to help me with scheduling? |
There's a discussion for the MVP here: #7975 |
We aren't running the scanner task in CI yet, so I added this task to the MVP:
zebra/.github/workflows/ci-unit-tests-docker.yml Lines 133 to 135 in 1708f9d
It takes less than a minute to enable it, but I wanted to check with the team first. |
We've done all we're going to do here |
Motivation
We want zebra to be able to scan shielded transactions using viewing keys. This issue will track the steps and work necessary in order for zebra to implement blockchain scanning.
Scope
Feature: De-couple zebra-scan from zebrad
ReadStateService::init
method: Add aninit
function for a standalone ReadStateService #8520ChainTipChange
so we can use it inzebra_scanner::spawn_init
: Add acurrent_tip()
or similar toReadState
#8580zebra-scanner
#8581zebra-scanner
binary #8585,zebrad
#8593zebra-scanner
binary #8586Non finalized state:
Future Iterations
RPC Interface improvements
ScanService
RequestsStatus
scan service to get information related to a key #8226Auth
scan service request for authorizing access to a set of keys and their scan results #8202getresults
grpc #8233scans_for_new_key
test #8236Key and scanning results database
zebra-state
#7926zebra-db
crate #7937Scanner
AccountID
s #8229Integration with zebrad
Security
User Testing / Experimental Builds
scan
is configured but the scanning feature is not enabled, rather than panickingexperimental
build #7892Performance Improvements
sapling_note_commitment_tree
and a new separate index for sapling spends): https://github.com/ZcashFoundation/zebra/blob/main/book/src/dev/state-db-upgrades.md#current-state-database-formatorchard_note_commitment_tree
): https://github.com/ZcashFoundation/zebra/blob/main/book/src/dev/state-db-upgrades.md#current-state-database-format[ ] Batch multiple keys efficiently by scanning all keys, then repeatedly split the keys in half, and discard any unsuccessful keys, until we have all the keys that decrypt at least one noteBroadcast channel
Implemented
Feature: RPC Interface - ✅
Issues
- [x] #8153 - [x] Implement `ScanService` Requests - [x] #8203 - [x] #8220 - [x] #8204 - [x] #8205 - [x] #8206 - [x] #8207 - [x] Implement RPCs - [x] #8161 - [x] #8162 - [x] #8163 - [x] #8176 - [x] #8235 - [x] #8242 - [x] #8244 - [x] #8256 - [x] #8285 - [x] #8286 - [x] #8259PoC - ✅
Issues
- [x] #7727 - [x] #7903MVP (v0.1) - ✅
For the MVP, let's assume the following:
Issues
Key and scanning results database
ldb
tool to the Docker image, so technical users can query the database #8051Scanner
scan_block
function to use across scanning tasks #7947Integration with zebrad
Testing & Validation
Documentation
Security
Lower Priority Tests
scan_start_where_left
test to CI #8085References
zcash_client_backend
crate:scan_block
: Returns a vector of transactions that matches the provided key, for the provided block.scan_cached_blocks
: Scan an amount of blocks from the Block Source:zcash_client_sqllite
crate:zcash_client_sqlite
contains complete SQLite-based implementations of the WalletRead, WalletWrite, and BlockSource traits from the zcash_client_backend crate. In combination with zcash_client_backend, it provides a full implementation of a SQLite-backed client for the Zcash network.Related work
The text was updated successfully, but these errors were encountered: