Skip to content

Commit

Permalink
feat(docs): Add aztec-wallet proving (#10847)
Browse files Browse the repository at this point in the history
Adds a section to the sandbox proving info about doing proving with
aztec-wallet.

---------

Co-authored-by: Rahul Kothari <rahul.kothari.201@gmail.com>
  • Loading branch information
critesjosh and rahul-kothari authored Dec 23, 2024
1 parent ee568ff commit 3efae86
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 8 deletions.
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)

0 comments on commit 3efae86

Please sign in to comment.