Crates.io | twenty-first |

lib.rs | twenty-first |

version | 0.42.0-alpha.3 |

source | src |

created_at | 2022-08-04 11:40:58.57486 |

updated_at | 2024-06-05 08:33:12.891501 |

description | Collection of mathematics routines and cryptography for the twenty-first century. |

homepage | https://github.com/Neptune-Crypto/twenty-first |

repository | https://github.com/Neptune-Crypto/twenty-first |

max_upload_size | |

id | 638691 |

size | 735,497 |

https://github.com/Neptune-Crypto/twenty-first

A collection of cryptography primitives written in Rust.

This library contains primarily the following cryptographic primitives:

- The Tip5 hash function
- Lattice-crypto
- arithmetic for the quotient ring $\mathbb{F}_ p[X] / \langle X^{64} + 1 \rangle$
- arithmetic for modules over this quotient ring
- a IND-CCA2-secure key encapsulation mechanism
- Lattice-Based Cryptography in Miden VM

`BFieldElement`

,`XFieldElement`

- The prime-field type $\mathbb{F}_p$ where $p = 2^{64} - 2^{32} + 1$
- The extension field $\mathbb{F}_p[x]/(x^3 - x + 1)$
- A codec trait for encoding and decoding structs as
`Vec`

s of`BFieldElement`

- An efficient prime for number-theoretic transforms

- NTT
- Number Theoretic Transform (discrete Fast Fourier Transform)
- Anatomy of a STARK, Part 6: Speeding Things Up

- Univariate and multivariate polynomials
- Merkle Trees
- Merkle Mountain Ranges

While twenty-first's version is `0.x.y`

, releasing a new version:

- Is the release backwards-compatible?
Then the new version is
`0.x.y+1`

. Otherwise the new version is`0.x+1.0`

. - Checkout the last commit on Mjolnir, and run
`make bench-publish`

. Save the benchmark's result and verify that there is no performance degredation. - Create a commit that increases
`version = "0.x.y"`

in twenty-first/Cargo.toml. The commit message should give a one-line summary of each release change. Include the benchmark result at the bottom. - Have a
`v0.x.y`

git tag on this commit created. (`git tag v0.x.y [sha]`

,`git push upstream --tags`

) - Have this commit
`cargo publish`

ed on crates.io and in GitHub tags.

If you do not have the privilege to create git tags or run `cargo publish`

, submit a PR and the merger will take care of these.

This crate depends on the rs-leveldb crate which wraps the C++ implementation of leveldb. As such, `snappy`

and `leveldb`

must be installed. Eg, on Ubuntu:

```
sudo apt-get install libleveldb-dev libsnappy-dev
```

For more detailed buildings instructions, see the description in `HACKING.md`

.