diff --git a/docs/docs/guides/developer_guides/local_env/sandbox_proving.md b/docs/docs/guides/developer_guides/local_env/sandbox_proving.md index 1dc5149c42d..528d94561d8 100644 --- a/docs/docs/guides/developer_guides/local_env/sandbox_proving.md +++ b/docs/docs/guides/developer_guides/local_env/sandbox_proving.md @@ -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 @@ -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) +::: diff --git a/docs/docs/reference/developer_references/cli_wallet_reference.md b/docs/docs/reference/developer_references/cli_wallet_reference.md index 22c1e67e892..f19293d8648 100644 --- a/docs/docs/reference/developer_references/cli_wallet_reference.md +++ b/docs/docs/reference/developer_references/cli_wallet_reference.md @@ -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 @@ -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)