Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: enhance README.md with TOC, examples and contributing guidelines #918

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 58 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,27 @@
<a href="https://discord.gg/UNtS7QXyPk"><img src="https://img.shields.io/discord/908465643727253524?label=Discord&logo=discord"></a>
</p>

The arkworks ecosystem consist of Rust libraries for designing and working with *zero knowledge succinct non-interactive arguments (zkSNARKs)*. This repository contains efficient implementations of the key algebraic components underlying zkSNARKs: finite fields, elliptic curves, and polynomials.
The arkworks ecosystem consists of Rust libraries for designing and working with *zero knowledge succinct non-interactive arguments (zkSNARKs)*. This repository contains efficient implementations of the key algebraic components underlying zkSNARKs: finite fields, elliptic curves, and polynomials.

## Table of Contents
- [Overview](#overview)
- [Directory Structure](#directory-structure)
- [Installation](#build-guide)
- [Usage Examples](#usage-examples)
- [Tests](#tests)
- [Benchmarks](#benchmarks)
- [Assembly Backend](#assembly-backend-for-field-arithmetic)
- [Contributing](#contributing)
- [License](#license)
- [Acknowledgements](#acknowledgements)

## Overview

This library is released under the MIT License and the Apache v2 License (see [License](#license)).

**WARNING:** This is an academic proof-of-concept prototype, and in particular has not received careful code review. This implementation is NOT ready for production use.

## Directory structure
## Directory Structure

This repository contains several Rust crates:

Expand All @@ -25,7 +39,29 @@ This repository contains several Rust crates:

In addition, the [`curves`](https://github.com/arkworks-rs/algebra/tree/master/curves) repository contains concrete implementations of popular elliptic curves; see [here](https://github.com/arkworks-rs/algebra/blob/master/curves/README.md) for details.

## Build guide
## Usage Examples

Here are some basic examples of how to use the library:

```rust
use ark_ff::Field;
use ark_ec::Group;

// Example 1: Working with finite fields
use ark_test_curves::bls12_381::Fr;
let a = Fr::from(2u64);
let b = Fr::from(3u64);
let c = a + b; // Field addition

// Example 2: Working with elliptic curves
use ark_test_curves::BLS12_381;
let generator = BLS12_381::generator();
let point = generator.double(); // Point doubling
```

For more examples, please check the `tests` directory in each crate.

## Build Guide

The library compiles on the `stable` toolchain of the Rust compiler (v 1.51+). To install the latest version of Rust, first install `rustup` by following the instructions [here](https://rustup.rs/), or via your platform's package manager. Once `rustup` is installed, install the Rust toolchain by invoking:

Expand Down Expand Up @@ -73,6 +109,25 @@ ark-ff = { version = "0.4", features = [ "asm" ] }

Note that because inline assembly support in Rust is currently unstable, using this backend requires using the Nightly compiler at the moment.

## Contributing

We welcome contributions to arkworks! Please follow these steps to contribute:

1. Fork the repository
2. Create a new branch for your feature
3. Implement your changes
4. Add tests if applicable
5. Run the test suite with `cargo test --all`
6. Submit a pull request

Before submitting your PR, please:
- Format your code with `cargo fmt`
- Ensure your code passes `cargo clippy`
- Add documentation for new features
- Update the README if necessary

For more detailed guidelines, check our [Contributing Guide](CONTRIBUTING.md).

## License

The crates in this repository are licensed under either of the following licenses, at your discretion.
Expand Down
Loading