# [−][src]Crate r1cs

This is a rust library for building R1CS gadgets over prime fields, which are useful in SNARKs and other argument systems.

See the readme for more information and examples.

## Re-exports

`pub use num;` |

## Macros

binary_unsigned_values | Creates an instance of |

boolean_values | Creates an instance of |

values | Creates an instance of |

## Structs

BinaryExpression | A |

BinaryWire | A "binary wire" which is comprised of several bits, each one being a boolean wire. |

Bls12_381 | The BLS12-381 curve. |

Bn128 | The BN128 curve. |

BooleanExpression | An |

BooleanWire | A |

Constraint | An rank-1 constraint of the form a * b = c, where a, b, and c are linear combinations of wires. |

DaviesMeyer | The additive variant of Davies-Meyer, which creates a one-way compression function from a block cipher. |

EdwardsPoint | An embedded Edwards curve point defined over the same base field as the constraint system, with affine coordinates as elements. |

EdwardsPointExpression | An embedded Edwards curve point defined over the same base field as the field used in the constraint system, with affine coordinates as expressions. |

Element | An element of a prime field. |

ElementMatrix | A matrix of prime field elements. |

Expression | A linear combination of wires. |

Gadget | An R1CS gadget. |

GadgetBuilder | |

InversePermutation | The permutation |

JubJub | |

LCG | A simple linear congruential generator, with parameters taken from Numerical Recipes. |

MdsMatrix | A Maximum Distance Separable matrix. |

MerkleDamgard | A hash function based on the Merkle–Damgård construction. |

MerklePath | The path from a leaf to the root of a binary Merkle tree. |

MiMCBlockCipher | The MiMC block cipher. |

MiMCPermutation | The MiMC permutation, which is equivalent to MiMC encryption with a key of zero. |

MiyaguchiPreneel | The additive variant of Miyaguchi-Preneel, which creates a one-way compression function from a block cipher. |

MonomialPermutation | The permutation |

MontgomeryPointExpression | An embedded Montgomery curve point defined over the same base field as the field used in the constraint system, with affine coordinates as expressions. |

NumberOfRounds | The number of full and partial rounds to use in an instance of Poseidon. |

Poseidon | The Poseidon permutation. |

PoseidonBuilder | Builds a |

ProjWeierstrassPointExpression | An embedded Weierstrass curve point defined over the same base field as the field used in the constraint system, with projective coordinates as expressions. |

Rescue | The Rescue permutation. |

RescueBuilder | Builds a |

Sponge | A sponge function. |

WeierstrassPointExpression | An embedded Weierstrass curve point defined over the same base field as the field used in the constraint system, with affine coordinates as expressions. |

Wire | A wire represents a witness element. |

WireValues | An assignment of wire values, where each value is an element of the field |

WitnessGenerator | Generates some elements of the witness. |

## Enums

PoseidonSbox | An S-Box that can be used with Poseidon. |

## Traits

BlockCipher | A symmetric-key block cipher. |

CompressionFunction | A function which compresses two field elements into one, and is intended to be one-way. |

Curve | |

CurvePoint | |

EdwardsCurve | An embedded twisted Edwards curve defined over the same base field as the field used in the constraint system |

Field | A prime order field. |

HashFunction | A function which hashes a sequence of field elements, outputting a single field element. |

MultiPermutation | A permutation whose inputs and outputs consist of multiple field elements. |

Permutation | A permutation of single field elements. |