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

feat(docs): Add aztec-wallet proving #10847

Merged
merged 6 commits into from
Dec 23, 2024
Merged
Show file tree
Hide file tree
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
48 changes: 40 additions & 8 deletions docs/docs/guides/developer_guides/local_env/sandbox_proving.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,28 @@ tags: [sandbox, PXE]

The Sandbox does not have client-side proving in the PXE enabled by default. This reduces testing times and increases development speed by allowing for rapid iteration.

You may want to enable client-side proving in the Sandbox to better understand how long it takes to execute Aztec transactions.
You may want to enable client-side proving in the Sandbox to better understand how long it takes to execute Aztec transactions. There are 2 ways of doing this:
1. Run the sandbox in proving mode (every transaction wil be proved) or
2. Use `aztec-wallet` cli to prove a one-off transaction

:::note

Running the sandbox with client-side proving is much slower and should only be used sparingly to analyze real proving times of executing private functions of a contract.

Proving is much slower and should only be used sparingly to analyze real proving times of executing private functions of a contract.
:::

## Config
## Sandbox in Proving Mode
Here every transaction, contract deployment will be proved. If you want to just prove a single transaction, follow [proving with aztec-wallet cli](#proving-with-aztec-wallet).

### Config

To enable client-side proving, update the docker compose file found at `~/.aztec/docker-compose.sandbox.yml` and add the following configuration settings under the `aztec:environment` scope.

```yml
BB_BINARY_PATH: /usr/src/barretenberg/cpp/build/bin/bb
PXE_PROVER_ENABLED: 1
BB_WORKING_DIRECTORY: ~/bb-temp #any temp directory for writing circuit artifacts
BB_WORKING_DIRECTORY: ~/bb-temp #any temp directory for writing circuit artifacts
```

## Usage

### Usage
Once the `docker-compose.sandbox.yml` has been updated, restart the sandbox with:

```bash
Expand All @@ -36,3 +38,33 @@ The sandbox will take much longer to start. The first time it starts, it will ne
The sandbox will also deploy 3 Schnorr account contracts on startup. The sandbox will need to generate transaction proofs for deployment, which will take additional time.

Once everything has been set up, you will see that the PXE is listening on `localhost:8080` as you would see with the sandbox running in the default mode. At this point you can use the sandbox as you would without client-side proving enabled.

## Proving with `aztec-wallet`
You can enable proving on a per-transaction basis using the `aztec-wallet` CLI.

### Config
Open `~/.aztec/bin/aztec-wallet` and update the `ENV_VARS_TO_INJECT` variable to:

```bash
# ~/.aztec/bin/aztec-wallet
export ENV_VARS_TO_INJECT="WALLET_DATA_DIRECTORY SSH_AUTH_SOCK BB_BINARY_PATH PXE_PROVER_ENABLED BB_WORKING_DIRECTORY"
```

Export the following envnironment variables in the terminal where you will run `aztec-wallet` commands:

```bash
export BB_BINARY_PATH=/usr/src/barretenberg/cpp/build/bin/bb
export PXE_PROVER_ENABLED=1
export BB_WORKING_DIRECTORY=~/bb-temp
```

### Usage
Now send transactions from `aztec-wallet`, and proving will be enabled. Check the [Quickstart](../../getting_started.md) for a refresher on how to send transactions using `aztec-wallet` or check the [reference here](../../../reference/developer_references/cli_wallet_reference.md)

Note that you do not need to restart the sandbox in order to start sending proven transactions. You can optionally set this for 1 off transactions.

If this is the first time you are sending transactions with proving enabled, you will have to download the CRS (which is several GBs).

::: note
You can also profile your transactions to get gate count, if you don't want to prove your transactions but check how many constraints it is. Follow [reference here](../../../reference/developer_references/cli_wallet_reference.md#profile)
:::
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ For development, it may be useful to deploy, transact, or create notes in a non-
- Pushing arbitrary [notes](../../guides/developer_guides/smart_contracts/writing_contracts/notes/index.md) to your PXE
- Creating [authwits](../../guides/developer_guides/smart_contracts/writing_contracts/authwit.md)
- Aliasing info and secrets for further usage
- Proving your transactions and profile gate counts

:::info

Expand Down Expand Up @@ -164,3 +165,6 @@ It expects `name` and `storageFieldName`. For example, if the `#[storage]` struc
```bash
aztec-wallet add-note JediMember available_members -a master_yoda -ca jedi_order -h 0x00000
```

## Proving
You can prove a transaction using the aztec-wallet with a running sandbox. Follow the guide [here](../../guides/developer_guides/local_env/sandbox_proving.md#proving-with-aztec-wallet)
Loading