rust-clacc

Crates.iorust-clacc
lib.rsrust-clacc
version3.6.0
sourcesrc
created_at2020-07-16 11:08:47.391869
updated_at2023-10-13 21:09:45.907213
descriptionRust implementanion of a CL universal accumulator
homepage
repositoryhttps://github.com/johnoliverdriscoll/rust-clacc
max_upload_size
id265726
size46,907
John Driscoll (johnoliverdriscoll)

documentation

https://docs.rs/rust-clacc

README

Crates.io Build Status Docs.rs

rust-clacc

This is a Rust implementanion of a CL universal accumulator as described in Efficient oblivious transfer with membership verification.

An accumulation is a fixed size digest that, along with the witness of an element's addition, can be used to prove an element is a member of a set. The drawback to this solution is that any state changes to the accumulation invalidate the witneses of the other elements in the set, requiring computational resources to update them.

The benefit of CL accumulators is that they support efficient untrusted witness updates. The resource intensive task of updating witnesses can be outsourced to an untrusted party without sacrificing the integrity of the accumulator.

This project is focused on a use case where a central authority is both memory- and processing-constrained. The authority controls the private key and is able to add and delete elements while untrusted workers are able to recalculate witnesses provided they have access to the previous witnesses, the current state of the accumulator, and its public key.

Backends

This crate is built with a modular integer type backend. Integer types must implement the [BigInt] trait.

Optional Features

  • bigint (default): Enable this feature to support [::num_bigint::BigInt] as an integer type. [::num_bigint] is a pure Rust big integer library.
  • gmp: Enable this feature to support [::gmp::mpz::Mpz] as an integer type. [::gmp] is not a pure Rust library, but it is currently more performant than [::num_bigint].
Commit count: 147

cargo fmt