-
Notifications
You must be signed in to change notification settings - Fork 39
Open
Description
I'm trying to get my head around how I can use the ECC accumulator to effectively create membership verifications. I've added the following test
#[test]
fn test_membership() {
let mut rng = StdRng::seed_from_u64(0u64);
let params = SetupParams::<Bls12_381>::generate_using_rng(&mut rng);
let keypair = Keypair::<Bls12_381>::generate_using_rng(&mut rng, ¶ms);
let mut accumulator = PositiveAccumulator::initialize(¶ms);
let elems = [
Fr::from(1),
Fr::from(2),
Fr::from(3),
Fr::from(4),
];
for elem in elems {
accumulator.0 = accumulator.compute_new_post_add(&elem, &keypair.secret_key);
};
// verify membership
let verification_accumulator = PositiveAccumulator::from_accumulated(*accumulator.value());
let member = &Fr::from(100);
let wtns = verification_accumulator.compute_membership_witness(member, &keypair.secret_key);
assert!(verification_accumulator.verify_membership(
member,
&wtns,
&keypair.public_key,
¶ms
));
}My assumption here is the verify_membership should fails since value 100 is not part of the elems that generate the accumulator. However, the above test simply passes. As a matter of fact it passes using an arbitrary member value.
Apparently my assumption is wrong 😆. Nonetheless, it would be nice to know if I can use this cryptographic tool to use prove membership. IBasically, want to use it instead of a Merkle Tree
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels