• This repository has been archived on 16/Mar/2023
  • Stars
    star
    631
  • Rank 71,222 (Top 2 %)
  • Language
    JavaScript
  • License
    GNU Lesser Genera...
  • Created almost 6 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Public repository for the AZTEC V1 protocol. For the latest zkRollup release see here https://github.com/AztecProtocol/aztec-2-bug-bounty

AZTEC is an efficient zero-knowledge privacy protocol. The protocol powers real world financial applications on Ethereum mainnet today. A complete explanation of AZTEC can be found in our white paper.

CircleCI Coverage Status Semantic Release Commitizen Friendly Twitter License: LGPL v3


Documentation πŸ“š

All AZTEC documentation is available on the documentation website: https://docs.aztecprotocol.com

This contains docs for the:

  • SDK
  • aztec.js
  • Starter kits, demos and code examples
  • Protocol specification

Packages πŸ“¦

AZTEC is maintained as a monorepo with multiple sub packages. Please find a comprehensive list below.

JavaScript Packages

Package Version Description
aztec.js npm An aggregate package combining many smaller utility packages for interacting with the AZTEC Protocol
@aztec/contract-artifacts npm AZTEC smart contract compiled artifacts
@aztec/contract-addresses npm A tiny utility library for getting known deployed contract addresses for a particular network
@aztec/dev-utils npm Dev utils to be shared across AZTEC projects and packages

Solidity Packages

Package Version Description
@aztec/protocol npm AZTEC solidity smart contracts & tests

Private Packages

Package Description
@aztec/monorepo-scripts Scripts for managing the monorepo

Usage βš’οΈ

To create AZTEC notes and construct zero-knowledge proofs:

$ yarn add aztec.js

Other goodies:

$ yarn add @aztec/contract-artifacts
$ yarn add @aztec/contract-addresses
$ yarn add @aztec/dev-utils

To see a demo, head to this tutorial.

For more information, check out our documentation.

Contributing πŸ™‹β€β™€οΈ

Requirements

  • node >=8.3
  • yarn >=1.15.2
  • solidity >=0.5.0 <0.6.0

Pre Requisites

Make sure you are using Yarn >= 1.15.2. To install using brew:

brew install yarn

Then install dependencies:

yarn install

Build

To build all packages:

$ yarn build

To build a specific package:

$ PKG=aztec.js yarn build

Watch

To re-build all packages on change:

$ yarn watch

Clean

To clean all packages:

$ yarn clean

To clean a specific package:

$ PKG=aztec.js yarn clean

Lint

To lint all packages:

$ yarn lint

To lint a specific package:

$ PKG=aztec.js yarn lint

Test

To run all tests:

$ yarn test

To run tests in a specific package:

$ PKG=aztec.js yarn test

FAQ ❓

What is the AZTEC Protocol?

The protocol enables transactions of value, where the values of the transaction are encrypted. The AZTEC protocol smart contract validator, AZTEC.sol, validates a unique zero-knowledge proof that determines the legitimacy of a transaction via a combination of homomorphic encryption and range proofs.

What is encrypted 'value'?

Instead of balances, the protocol uses AZTEC notes. A note encrypts a number that represents a value (for example a number of ERC-20 tokens). Each note has an owner, defined via an Ethereum address. In order to spend a note the owner must provide a valid ECDSA signature attesting to this.

What does this enable?

Confidential representations of ERC20-tokens

The AZTEC protocol can enable confidential transactions for any generic digital asset on Ethereum, including existing assets. Our first deployed asset enables zkDai.

Fully confidential digital assets

The AZTEC protocol can be utilized as a stand-alone confidential token, with value transfers described entirely through AZTEC join-split transactions

How much gas do these transactions cost?

The gas costs scale with the number of input and output notes in a join-split transaction. For a fully confidential transfer, with 2 input notes and 2 output notes, the gas cost is approximately 300,000 gas.

Where can I see this in action?

The AZTEC protocol is live today on the Ethereum main-net. Here is an example AZTEC join-split transaction.

Range proofs you say? How does that work?

Read the AZTEC paper here. The unique AZTEC commitment function enables the efficient construction and verification of range proofs. The protocol requires a trusted setup protocol, that generates a dataset that is required to construct AZTEC zero-knowledge proofs

The Trusted Setup

AZTEC ran Ignition, an MPC ceremony to generate a CRS for our privacy network and other zero-knowledge systems like PLONK from October 25th 2019 to the January 2nd 2020. 176 individuals and institutions took part, each generating randomness and adding it to the previous participant's contribution. If even one participant acts honestly and destroys the randomness they generated, the CRS can be trusted. You can see a recap of Ignition here.

Are AZTEC transactions anonymous as well as confidential?

The AZTEC protocol currently only supports confidentiality of amounts. We will be adding User privacy and Code privacy to the protocol and SDK.

This sounds interesting! How can I get involved?

Anybody wishing to become early members of the AZTEC network please get in touch at [email protected]

More Repositories

1

aztec-connect

aztec connect repository
TypeScript
430
star
2

huff

Repository for Huff - an EVM programming language
JavaScript
232
star
3

aztec-connect-bridges

Solidity
229
star
4

aztec-packages

C++
192
star
5

noir-starter

Solidity
168
star
6

barretenberg

C++
140
star
7

aztec-2.0

C++ elliptic curve library
C++
134
star
8

weierstrudel

Huff implementation of the bn254 curve, for Ethereum smart contracts
JavaScript
111
star
9

aztec-nr

Noir
105
star
10

interview-test

TypeScript
80
star
11

dev-rel

All of Aztec's workshops, resources, tutorials, ideas, and useful tools
TypeScript
44
star
12

aztec-v1-loan-dapp

A kitchen sink example of how to build private dApps using AZTEC
JavaScript
35
star
13

aztec-v1-specification

AZTEC protocol specification
31
star
14

Setup

AZTEC protocol trusted setup MPC
TypeScript
31
star
15

aztec-verifier-contracts

Solidity
28
star
16

awesome-aztec

28
star
17

interview-tests

C++
23
star
18

consolerr

Solidity error logging
Solidity
23
star
19

aztec-2-bug-bounty

C++
17
star
20

plonk-with-lookups

TeX
17
star
21

aztec-starter

A simple aztec contract + test to get started.
Rust
15
star
22

Oliver

Huff implementation of the BabyJubJub curve
JavaScript
13
star
23

aztec3-circuits

Circuit infrastructure for Aztec 3.0
C++
12
star
24

ignition-verification

Repository to verify contributions to the AZTEC Ignition ceremony
JavaScript
12
star
25

aztec-security

Security contacts and disclosure reports
12
star
26

rollup-encoder

I'm encoooderrrring
Solidity
11
star
27

sandbox-version-manager

Tool to manage sandbox versions
Rust
10
star
28

aztec3-l1-contracts

L1 contracts for Aztec3
Solidity
9
star
29

docs

Aztec docs site
JavaScript
8
star
30

zk-money

TypeScript
8
star
31

engineering-designs

Internal engineering designs
Jupyter Notebook
6
star
32

aztec-connect-explorer

TypeScript
5
star
33

polaris

4
star
34

snark-benchmarks

basic Groth16 benchmarks
Rust
4
star
35

aztec-connect-contracts

Aztec Connect Rollup's Solidity Smart Contracts
Solidity
4
star
36

stackproofs

TeX
3
star
37

build-system

Shell
3
star
38

foundation

TypeScript
3
star
39

ab2

Alpha Build 2 project repository.
3
star
40

msgpack-c

Fork of msgpack-c repo with a few more safety checks
C++
2
star
41

aztec-connect-cpp

C++
2
star
42

dev-bb.js

JavaScript
2
star
43

protocol-specs-pdf

2
star
44

git-metadata

Currently used for https://github.com/ben-z/gh-action-mutex
1
star
45

wallet-ui

WalletConnect-based secure wallet for Aztec Connect
TypeScript
1
star
46

dev-connect-workshop

JavaScript
1
star
47

AZIPs

An AZIP is a design document providing information to the Aztec community, or describing a new feature for Aztec or its processes or environment.
1
star