Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
93806d7
fix(drive): skip the ranked offset by counting instead of walking
shumkov Aug 13, 2026
0d504f2
chore(deps): re-pin grovedb to cc7b3997 for the feature-gate fix
shumkov Aug 13, 2026
0f44e70
docs(drive): stop calling the unproved skip attested, and drop the na…
shumkov Aug 13, 2026
7091b33
chore(deps): re-pin grovedb to c4ceac67, the rev that tested green
shumkov Aug 13, 2026
6f70cc5
fix(drive): re-pin grovedb for snapshot-consistent counted reads
shumkov Aug 13, 2026
ad8f553
fix(drive): re-pin grovedb so root-key discovery shares the read snap…
shumkov Aug 14, 2026
8fd1c36
docs: describe the ranked offset skip as counted, attested only when …
shumkov Aug 14, 2026
c1b8601
docs: say the offset cost is bounded, not that every offset costs the…
shumkov Aug 14, 2026
7e005a4
Merge remote-tracking branch 'origin/v4.2-dev' into fix/ranked-unprov…
shumkov Aug 19, 2026
764de73
fix(drive): re-pin grovedb to the landed counted-skip merge commit
shumkov Aug 19, 2026
626a62b
Merge remote-tracking branch 'origin/v4.2-dev' into fix/ranked-unprov…
QuantumExplorer Aug 21, 2026
c6098c5
fix(drive): align the startsAt cursor query's direction before merging
QuantumExplorer Aug 21, 2026
de94b9c
chore(drive): bump grovedb to develop head fe17045a
QuantumExplorer Aug 21, 2026
e18e45c
fix(sdk): name grovedb's PrivateDocumentStore element in the FFI and …
QuantumExplorer Aug 21, 2026
67f5d78
fix(wasm-sdk): export the private-document-store element names in the…
QuantumExplorer Aug 22, 2026
71d49c7
fix(drive): read ranked and having pages through keys-only indexed-ax…
QuantumExplorer Aug 22, 2026
570459d
test(drive): hold the pool-paid shielded fee floors to the amortized …
QuantumExplorer Aug 22, 2026
3159614
fix(drive-abci)!: admit ShieldFromAssetLock on its flat pool fee at P…
QuantumExplorer Aug 22, 2026
c5b348f
style(platform-version): rustfmt module order for drive_abci_method_v…
QuantumExplorer Aug 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 51 additions & 32 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions book/src/drive/ranked-index-examples.md
Original file line number Diff line number Diff line change
Expand Up @@ -321,11 +321,11 @@ The response carries the skip back in `RankedEntries.skipped` (see [The Response

Three properties worth stating plainly:

- **The skip is attested, not walked.** grovedb proves the skipped region from the counted subtree commitments (`HashWithCount` / `HashWithCountAndSum`) rather than by traversing it. Both the prover's work and the proof's size stay `O(log n + k)` **at any offset**.
- **There is therefore no offset ceiling.** An offset of 4 and an offset of four billion cost the same, so there is no denial-of-service lever a cap would close and a cap would only stop honest deep pagination.
- **An offset past the end is a positive answer.** `entries` comes back empty and `skipped` is the ranking's *entire attested population*. "There are only 12 groups" is more information than a bare empty list.
- **The skip is counted, not walked.** grovedb descends the secondary reading each subtree's aggregate count and collapses any subtree that fits entirely inside the remaining offset, instead of stepping through it. Both paths do this: the prover attests the skipped region from the counted subtree commitments (`HashWithCount` / `HashWithCountAndSum`), and the unproven read performs the same counted descent without building a proof. Work and proof size stay `O(log n + k)` **at any offset**.
- **There is therefore no offset ceiling.** An offset of 4 and an offset of four billion cost the same order of work — on either path, the deeper one in fact cheaper, since a tree that fits entirely inside the offset collapses at the root. There is no denial-of-service lever a cap would close, and a cap would only stop honest deep pagination.
- **An offset past the end is a positive answer.** `entries` comes back empty and `skipped` is the ranking's *entire reported population*. "There are only 12 groups" is more information than a bare empty list.

On the **unproven** read there is nothing to attest and grovedb's read API does not report a short walk, so `skipped` simply echoes the requested offset. The proved and unproven paths therefore disagree in exactly one case — an offset past the end, where the unproven read reports the request and the proved one reports the truth. **Callers who need the population must prove.**
Both paths report the same `skipped`: the offset you asked for when the skip succeeded, and the ranking's total population when the walk ran out of groups first. What differs is the warrant, not the value. On the proved path it is cryptographically attested, re-derived by the verifier from the counted commitments. On the unproven path it is an **unverified claim, exactly like the entries beside it** — equal to the attested value on an honest node, with nothing forcing a node to be honest. **Callers who need to trust the population, rather than merely receive it, must still prove.**

## The Response

Expand Down
Loading
Loading