Skip to content
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

[WIP] implement range proof verification #693

Draft
wants to merge 52 commits into
base: main
Choose a base branch
from
Draft
Changes from 1 commit
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
9aa1af6
WIP: Initial stab at new-node-store-interface
rkuris Mar 31, 2024
910f983
WIP: more implementation of LinearStore
rkuris Apr 2, 2024
2425fe6
Beginnings of test framework
rkuris Apr 2, 2024
9354971
Lints
rkuris Apr 3, 2024
fe9080d
Merge branch 'main' into rkuris/new-node-store-interface
rkuris Apr 3, 2024
b753eda
Complete read path implementation for proposals
rkuris Apr 3, 2024
05310d5
WIP: Increase visibility of some members
rkuris Apr 5, 2024
19a810f
rename DiskAddress to LinearAddress (#627)
Apr 5, 2024
f746256
Appease linter
rkuris Apr 5, 2024
e4057e0
Merge branch 'rkuris/new-node-store-interface' of github.com:ava-labs…
rkuris Apr 5, 2024
d90e3be
Fix bug: offset_within not getting updated
rkuris Apr 5, 2024
4c27f59
Finish implementation of linear store write
rkuris Apr 8, 2024
7a79ad0
Linter
rkuris Apr 8, 2024
e6b88ea
Lint fixes, along with code cleanups
rkuris Apr 8, 2024
5f6518e
Merge branch 'rkuris/new-node-store-interface' of github.com:ava-labs…
rkuris Apr 8, 2024
e5a1914
Super simple benchmark
rkuris Apr 10, 2024
3a5a6c1
async part 1
rkuris Apr 12, 2024
9cd1749
Revert "async part 1"
rkuris Apr 17, 2024
aafd6e5
implement `ReadLinearStore` for `Historical` (#632)
Apr 18, 2024
ab36ec8
appease clippy and docs
Apr 18, 2024
d8ed821
appease clippy
Apr 18, 2024
8f554d8
Refactor linear storage types (#633)
Apr 22, 2024
65b0ef5
Remove shale (#635)
Aug 2, 2024
78f9038
move range proof definition to range_proof.rs
Aug 9, 2024
6b85b78
update _range_proof implementation
Aug 9, 2024
8a1e5cf
appease clippy
Aug 9, 2024
1e58d69
uncomment test
Aug 9, 2024
79b68fd
make RangeProof parameterize on Box not Vec
Aug 10, 2024
3d321c4
nits
Aug 10, 2024
56eda2c
nit
Aug 10, 2024
15eb1a1
into_boxed_slice() --> into()
Aug 10, 2024
f1a343a
first pass of verification
Aug 10, 2024
960185c
comments
Aug 10, 2024
02010b1
WIP implement RangeProof::verify
Aug 13, 2024
fa44490
Implement range proof generation (#698)
Aug 13, 2024
1b5ba03
Add helper method to get a node (#699)
Aug 13, 2024
3f04744
Merge remote-tracking branch 'origin/rkuris/new-node-store-interface'…
Aug 13, 2024
0d2e602
Merge remote-tracking branch 'origin/main' into implement-range-proof
Aug 13, 2024
67299ec
WIP implement RangeProof::verify
Aug 13, 2024
a3a7437
nit
Aug 13, 2024
8b0b952
WIP implement RangeProof::verify
Aug 13, 2024
eac65af
add (failing) test
Aug 14, 2024
da0d2f4
make range proof generation match merkledb
Aug 14, 2024
43243e3
Merge branch 'fix-range-proof-generation' into implement-range-proof
Aug 14, 2024
e5256b4
add to test
Aug 14, 2024
41bc69c
Merge branch 'main' into implement-range-proof
rkuris Aug 19, 2024
241cd62
Merge branch 'main' into implement-range-proof
rkuris Oct 11, 2024
bb711a3
Merge branch 'main' into implement-range-proof
rkuris Jan 17, 2025
732db01
Merge branch 'main' into implement-range-proof
rkuris Jan 24, 2025
f720f5e
Merge branch 'main' into implement-range-proof
rkuris Feb 19, 2025
f90be77
Merge conflict cleanups
rkuris Feb 19, 2025
ca7dd13
Fix tests and remove warnings
rkuris Feb 20, 2025
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
Prev Previous commit
Next Next commit
nits
Dan Laine committed Aug 10, 2024
commit 3d321c4ed1248eb6ae69f6450aabd66a63ecf231
5 changes: 4 additions & 1 deletion firewood/src/merkle.rs
Original file line number Diff line number Diff line change
@@ -239,11 +239,12 @@ impl<T: TrieReader> Merkle<T> {
// transpose the Option<Result<T, E>> to Result<Option<T>, E>
// If this is an error, the ? operator will return it
let Some((first_key, first_value)) = first_result.transpose()? else {
// The trie is empty.
if start_key.is_none() && end_key.is_none() {
// The caller requested a range proof over an empty trie.
return Err(api::Error::RangeProofOnEmptyTrie);
}

// The trie is empty.
let start_proof = start_key
.map(|start_key| self.prove(start_key))
.transpose()?;
@@ -292,6 +293,8 @@ impl<T: TrieReader> Merkle<T> {
.map(|(largest_key, _)| self.prove(largest_key))
.transpose()?;

debug_assert!(end_proof.is_some());

Ok(RangeProof {
_start_proof: Some(start_proof),
_key_values: key_values.into_boxed_slice(),