Skip to content

Commit

Permalink
Move usage notes
Browse files Browse the repository at this point in the history
  • Loading branch information
cargodog committed Sep 16, 2020
1 parent d248190 commit b29c83e
Showing 1 changed file with 16 additions and 15 deletions.
31 changes: 16 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@ anonymity sets. A correct proof provides the following guarantees:
1) The transaction input and output values are hidden (aka confidential).
1) The transaction inputs and signing keys are hidden in a large anonymity set.<sup>[3](#usage-notes)</sup>

## ⚠️ Security Warning
# ⚠️ Security Warning
This crate is a work in progress and has not been independently audited!

USE AT YOUR OWN RISK!

## Documentation
# Documentation
Detailed documentation can be found [here][docs-external].

# Usage and Features
Expand All @@ -33,6 +33,20 @@ builds without `std`, but still implements `serde`:
cargo build --no-default-features --features "serde"
```

Please keep the following points in mind when building a project around this library:
1) This library does not include range proofs. To ensure no input or output value is
negative, each input and output commitment should be accompanied with a range proof, such as
[bulletproofs][bulletproofs-crate]. Failure to prevent negative inputs or outputs
could allow an attacker to create new coins (e.g. inflation bug).

2) To prevent double spends, each input's linking tag should be checked for uniqueness and
recorded in a list of spent outputs. If a tag is ever seen twice, this means that the
corresponding input has already been spent.

3) This library leaves selection of the anonymity set up to the user. Selecting a good
ring of UTXOs is essential to providing anonymity for the signer and his transaction inputs.


# Example:
```rust
use arcturus::*;
Expand Down Expand Up @@ -81,19 +95,6 @@ cargo bench
# Contributing
Please see [CONTRIBUTING.md][contributing].

# Usage notes
1) This library does not include range proofs. To ensure no input or output value is
negative, each input and output commitment should be accompanied with a range proof, such as
[bulletproofs][bulletproofs-crate]. Failure to prevent negative inputs or outputs
could allow an attacker to create new coins (e.g. inflation bug).

2) To prevent double spends, each input's linking tag should be checke for uniqueness and
recorded in a list of spent outputs. If a tag is ever seen twice, this means that the
corresponding input has already been spent.

3) This library leaves selection of the anonymity set up to the user. Selecting a good
ring of UTXOs is essential to providing anonymity for the signer and his transaction inputs.


[arcturus-paper]: https://eprint.iacr.org/2020/312
[arcturus-crate]: https://crates.io/crates/arcturus
Expand Down

0 comments on commit b29c83e

Please sign in to comment.