Comments (4)
Resolved with #155
from akd.
We're still seeing this issue with small trees (e.g. 2 nodes). The following is a minimal repro test case (commented out in directory.rs)
// Test coverage on issue #144, verification failures with small trees (<4 nodes)
#[tokio::test]
async fn test_simple_lookup_for_small_tree() -> Result<(), AkdError> {
let db = AsyncInMemoryDatabase::new();
let vrf = HardCodedAkdVRF {};
// epoch 0
let akd = Directory::<_, _>::new::<Blake3>(&db, &vrf, false).await?;
let mut updates = vec![];
for i in 0..1 {
updates.push((
AkdLabel(format!("hello{}", i).as_bytes().to_vec()),
AkdValue(format!("hello{}", i).as_bytes().to_vec()),
));
}
akd.publish::<Blake3>(updates).await?;
let target_label = AkdLabel(format!("hello{}", 0).as_bytes().to_vec());
// retrieve the lookup proof
let lookup_proof = akd.lookup(target_label.clone()).await?;
// retrieve the root hash
let current_azks = akd.retrieve_current_azks().await?;
let root_hash = akd.get_root_hash::<Blake3>(¤t_azks).await?;
let vrf_pk = vrf.get_vrf_public_key().await?;
// perform the "traditional" AKD verification
let akd_result = crate::client::lookup_verify::<Blake3>(
&vrf_pk,
root_hash,
target_label.clone(),
lookup_proof,
);
// check the two results to make sure they both verify
assert!(matches!(akd_result, Ok(())));
Ok(())
}
from akd.
I have added this fix to the TODO list for the optimized AZKS. cc @Jasleen1
from akd.
#206 fixes this and includes passing tests using the reproduction above. FYI the issue was that the get_longest_common_prefix
function didn't account for EMPTY_LABEL
, which should be treated as NULL
.
from akd.
Related Issues (20)
- Add Functionality to Send Unsigned Requests to AWS for Auditing HOT 1
- Lincense terms are unclear HOT 4
- Crypto Configuration / CipherSuite Trait
- Unused epoch parameter in append_only_zks::get_membership_proof
- Create a directory organization table in the README.md
- Comments for a lot of public-facing items can be expanded on for more detail
- Adding more examples for usage
- Improving the "Overview" documentation to specify what AKD does not support
- Adding tests for auditor.rs
- Rename public-tests to public_tests HOT 1
- Extend test fixture generation to include lookup proofs, history proofs, and audit proofs HOT 1
- Features should be additive, don't use nostd feature, but use an std one instead HOT 1
- akd_client also needs a key_history_verify() function HOT 1
- Remove tools/sync_fork.sh HOT 1
- Consider dropping support for the akd_client library HOT 1
- Lookup and key history verification need to ensure that the versions returned do not exceed the current epoch number
- VRF draft update to RFC 9381 plus fixes
- Confusing behavior for NodeLabels and the get_bit_at() function based on label length
- Update configuration documentation for some cryptographic functions
- Eliminate stale markers
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from akd.