-
Notifications
You must be signed in to change notification settings - Fork 19
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #39 from Davidson-Souza/add-readme
Add readme and cargo.toml required keys
- Loading branch information
Showing
2 changed files
with
48 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,6 +3,11 @@ name = "rustreexo" | |
version = "0.1.0" | ||
authors = ["Calvin Kim <[email protected]>"] | ||
edition = "2018" | ||
description = "A Rust implementation of Utreexo" | ||
license = "MIT" | ||
repository = "https://github.com/mit-dci/rustreexo" | ||
readme = "README.md" | ||
homepage = "https://github.com/mit-dci/rustreexo" | ||
|
||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html | ||
[dependencies] | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,44 @@ | ||
# rustreexo - Utreexo in rust | ||
# rustreexo - Utreexo in rust | ||
|
||
This is an on-going library to implement/port the golang Utreexo code to Rust. | ||
![Build Status](https://github.com/mit-dci/rustreexo/actions/workflows/rust.yml/badge.svg) | ||
![License](https://img.shields.io/crates/l/rustreexo) | ||
![Version](https://img.shields.io/crates/v/rustreexo) | ||
![Downloads](https://img.shields.io/crates/d/rustreexo) | ||
|
||
Utreexo is a dynamic hash-based accumulator designed to be used as a set membership proof system and it is used in the Bitcoin network to compress the UTXO set. This is a pure-rust implementation of the accumulator, allowing proving and verifying set membership proofs. | ||
|
||
## Usage | ||
|
||
Rustreexo provides two basic data structures to represent the accumulator, `Stump` and `Pollard`. `Stump` is a lightweight version of the accumulator that only keeps the roots, and therefore only uses `O(log n)` space. `Pollard` is a more complete version of the accumulator that keeps the full tree, and therefore uses `O(n)` space. However, both data structures implements the same algorithms, so a proof generated by a `Pollard` is meant to be verified by a `Stump`. Here's how to use the `Stump`: | ||
|
||
```rust | ||
use rustreexo::accumulator::stump::Stump; | ||
|
||
let stump = Stump::new(); | ||
// Modify the accumulator, adding UTXOs and removing STXOs, that are proved by del_proof | ||
let (stump, _) = stump.modify(utxos, stxos, del_proof).unwrap(); | ||
// Verify a proof for a UTXO | ||
assert!(stump.verify(utxo_proof).unwrap()); | ||
``` | ||
|
||
for a complete example, see `examples/`. | ||
|
||
## Testing | ||
|
||
This library contains an exhaustive test suite that covers all the algorithms implemented. To run the tests, simply run `cargo test`. We test for internal code sanity and cross-test with values generated by the [utreexo](https://github.com/utreexo/utreexo) lib. | ||
|
||
## License | ||
|
||
rustreexo is released under the terms of the MIT license. See [LICENSE](LICENSE) for more | ||
information or see https://opensource.org/licenses/MIT. | ||
|
||
## References | ||
|
||
- [Utreexo: A dynamic hash-based accumulator optimized for the Bitcoin UTXO set](https://eprint.iacr.org/2019/611.pdf) | ||
- [Dev++ 03-09-EN | Acumulator Based Cryptography & UTreexo](https://www.youtube.com/watch?v=xlKQP9J88uA) | ||
- [What is UTreeXO? with Calvin Kim](https://www.youtube.com/watch?v=IcHW6RsZR7o) | ||
- [Rustreexo](https://blog.dlsouza.lol/bitcoin/utreexo/2023/07/07/rustreexo.html) | ||
|
||
## Contributing | ||
|
||
Contributions are welcome! Please feel free to submit a Pull Request. |