This repo is meant to be a starting point for writing Aztec contracts and tests on the Aztec sandbox (local development environment).
You can find the Easy Private Voting contract in ./src/main.nr. A simple integration test is in ./src/test/index.test.ts.
The corresponding tutorial can be found in the Aztec docs here.
If you are interested in trying out this repo with the testnet, try the testnet branch. The testnet branch is more suitable for simple interactions with the testnet via script, or as a reference to see how to do something against a live, remote network. The main branch should be used for getting started with writing contracts and rapid, local testing.
Use Node.js version 18.19.0.
Start your codespace from the codespace dropdown.
Get the sandbox, aztec-cli, and other tooling with this command:
bash -i <(curl -s https://install.aztec.network)Install the correct version of the toolkit with:
aztec-up 0.86.0Start the sandbox with:
aztec start --sandboxWe need to ignore node version warnings (a temporary fix):
YARN_IGNORE_ENGINES=true yarn installaztec-nargo compileor
yarn compileGenerate the contract artifact JSON and TypeScript interface:
yarn codegen./store directory. If you restart the sandbox, you will need to delete the ./store directory to avoid errors.
Make sure the sandbox is running before running tests.
aztec start --sandboxThen test with:
yarn testTesting will run the TypeScript tests defined in index.test.ts inside ./src/test, as well as the Aztec Testing eXecution Environment (TXE) tests defined in first.nr (imported in the contract file with mod test;).
Note: The Typescript tests spawn an instance of the sandbox to test against, and close it once the TS tests are complete.
You can find a handful of scripts in the ./scripts folder.
./scripts/deploy-accounts.tsis an example of how to deploy a schnorr account../scripts/deploy.tsis an example of how to deploy a contract../scripts/fees.tsis an example of how to pay for a contract deployment using various fee payment methods../scripts/multiple_pxe.tsis an example of how to deploy a contract from one PXE instance and interact with it from another.
./store directory. If you restart the sandbox, you will need to delete the ./store directory to avoid errors.
yarn updateGet the contract code from the monorepo. The script will look at the versions defined in ./Nargo.toml and fetch that version of the code from the monorepo.
yarn updateYou may need to update permissions with:
chmod +x update_contract.sh