This package contains the source code and the Aztec ABIs for the example contracts used in tests.
Please note that any example contract set out herein is provided solely for informational purposes only and does not constitute any inducement to use or deploy. Any implementation of any such contract with an interface or any other infrastructure should be used in accordance with applicable laws and regulations.
An essential tool for managing noir versions is noirup.
- Install noirup
curl -L https://raw.githubusercontent.com/noir-lang/noirup/main/install | bash
Currently we all work from a single aztec
tagged noir release. This release updates independently from noir's regular cadence to allow us to rapidly prototype new features.
It has prebuilt binaries and is super easy to install using noirup
- Install noirup
curl -L https://raw.githubusercontent.com/noir-lang/noirup/main/install | bash
- Install
aztec
tagged nargonoirup -v aztec
Pinning Aztec flavoured noir releases
Aztec noir is released with semver alongside noir. If you would like to pin to a specific version you can run:noirup -v <noir-version>-aztec.<patch version>e.g
noirup -v 0.11.1-aztec.0
-
Install noirup
curl -L https://raw.githubusercontent.com/noir-lang/noirup/main/install | bash
-
Nix is already globally installed but path to this installation needs to be added in $HOME/.zshenv so correct configuration can be found by VSCode, do so with:
echo -e '\n# Nix path set globally\nexport PATH="$HOME/.nix-profile/bin:/nix/var/nix/profiles/default/bin:$PATH"' >> $HOME/.zshenv
-
Enable nix flake command in ~/.config/nix/nix.conf with commands:
mkdir -p $HOME/.config/nix && echo -e '\nexperimental-features = nix-command\nextra-experimental-features = flakes' >> $HOME/.config/nix/nix.conf
-
Install direnv into your Nix profile by running:
nix profile install nixpkgs#direnv
-
Add direnv to your shell following their guide
echo -e '\n# Adds direnv initialization\neval "$(direnv hook zsh)"' >> $HOME/.zshenv
-
VSCode needs to be restarted so direnv plugin can notice env changes with:
kill -9 ps aux | grep $(whoami)/.vscode-server | awk '{print $2}'
-
Restart shell
-
Clone noir repo:
git clone https://github.com/noir-lang/noir.git
-
Checkout your target noir branch
cd noir git checkout <branch>
-
Enable direnv
direnv allow
-
Restart shell
-
Go to the noir dir and install Noir:
cd noir noirup -p ./
-
In the aztec-packages repository, go to the directory yarn-project/noir-contracts
-
Use the
noir:build:all
script to compile the contracts you want and prepare the ABI for consumptionyarn noir:build:all
Alternatively you can run
yarn noir:build CONTRACT1 CONTRACT2...
to build a subset of contracts:yarn noir:build private_token public_token
To view compilation output, including errors, run with the
VERBOSE=1
flag:VERBOSE=1 yarn noir:build private_token public_token
-
Go to
src/contracts
folder. -
Create a new package whose name has to end with _contract. E.g.:
nargo new --contract example_contract
-
Add the aztec dependency to
nargo.toml
:[package] authors = [""] compiler_version = "0>=.18.0" [dependencies] aztec = { path = "../../../../aztec-nr/aztec" }
-
Replace the content of the generated
example_contract/src/main.nr
file with your contract code. -
Go to
noir-contracts
root folder and runyarn noir:build example
to compile the contract. -
Export the abi in
src/artifacts/index.ts
to be able to use the contract in the rest of the project:import ExampleContractJson from './example_contract.json' assert { type: 'json' }; export const ExampleContractArtifact = ExampleContractJson as ContractArtifact;