From 2f7061c970967f7ce1b2003581a77fa9ab75f6e6 Mon Sep 17 00:00:00 2001 From: Josh Crites Date: Wed, 10 Jun 2026 16:02:11 -0400 Subject: [PATCH 1/3] fix(docs): fable review Fix critical issues found in a full docs audit, in both the source docs and the published v4.3.1 versioned docs: - counter tutorial: add the missing 'clear the scaffold placeholder test' note (renaming Main->Counter broke aztec compile with 6 errors) - token bridge tutorial: correct artifact import paths and bytecode field for the Hardhat layout, fix the run command (npx tsx), add a note to update the @aztec/l1-contracts tag, fix a broken relative link - aztec CLI reference: write the missing 'aztec start' section - aztec-wallet CLI reference: remove leaked generator-machine defaults (/home/josh/.aztec/wallet, host.docker.internal) - sequencer governance/slashing pages: replace removed contract getters (M/N/yeaCount/proposals -> ROUND_SIZE/QUORUM_SIZE/signalCount/getProposal), correct the ejection threshold description (rollup localEjectionThreshold, not '98% / max 3 slashes'), fix 36s->72s slot math - aztec-nr docs: replace nonexistent APIs (emit_public_log -> emit_public_log_unsafe, RetrievedNote/HintedNote -> ConfirmedNote, history::contract_inclusion -> history::deployment), correct the Storage struct naming claim - outbox.md (source only): update IOutbox signatures to the checkpoint-based interface --- .../advanced/how_to_retrieve_filter_notes.md | 4 +- .../contract_structure.md | 2 +- .../framework-description/events_and_logs.md | 8 +-- .../framework-description/state_variables.md | 10 ++-- .../docs/cli/aztec_cli_reference.md | 42 ++++++++++++++++ .../docs/cli/aztec_wallet_cli_reference.md | 4 +- .../foundational-topics/contract_creation.md | 27 +++++----- .../contract_tutorials/counter_contract.md | 9 ++++ .../tutorials/js_tutorials/token_bridge.md | 29 +++++++++-- .../advanced/how_to_retrieve_filter_notes.md | 4 +- .../contract_structure.md | 2 +- .../framework-description/events_and_logs.md | 8 +-- .../framework-description/state_variables.md | 10 ++-- .../docs/cli/aztec_cli_reference.md | 42 ++++++++++++++++ .../docs/cli/aztec_wallet_cli_reference.md | 4 +- .../foundational-topics/contract_creation.md | 27 +++++----- .../ethereum-aztec-messaging/outbox.md | 49 ++++++++++--------- .../contract_tutorials/counter_contract.md | 9 ++++ .../tutorials/js_tutorials/token_bridge.md | 29 +++++++++-- .../governance-participation.md | 6 +-- .../slashing-configuration.md | 12 ++--- .../sequencer-management/useful-commands.md | 18 +++---- .../governance-participation.md | 6 +-- .../slashing-configuration.md | 12 ++--- .../sequencer-management/useful-commands.md | 18 +++---- 25 files changed, 275 insertions(+), 116 deletions(-) diff --git a/docs/developer_versioned_docs/version-v4.3.1/docs/aztec-nr/framework-description/advanced/how_to_retrieve_filter_notes.md b/docs/developer_versioned_docs/version-v4.3.1/docs/aztec-nr/framework-description/advanced/how_to_retrieve_filter_notes.md index a1dca8d826bc..d55216f9292e 100644 --- a/docs/developer_versioned_docs/version-v4.3.1/docs/aztec-nr/framework-description/advanced/how_to_retrieve_filter_notes.md +++ b/docs/developer_versioned_docs/version-v4.3.1/docs/aztec-nr/framework-description/advanced/how_to_retrieve_filter_notes.md @@ -33,8 +33,8 @@ This returns up to `MAX_NOTE_HASH_READ_REQUESTS_PER_CALL` notes without filterin ### Step 2: Retrieve notes from storage ```rust -// Returns BoundedVec, ...> -let hinted_notes = storage.my_notes.at(owner).get_notes(options); +// Returns BoundedVec, ...> +let confirmed_notes = storage.my_notes.at(owner).get_notes(options); ``` :::tip get_notes vs pop_notes diff --git a/docs/developer_versioned_docs/version-v4.3.1/docs/aztec-nr/framework-description/contract_structure.md b/docs/developer_versioned_docs/version-v4.3.1/docs/aztec-nr/framework-description/contract_structure.md index c604249bb82a..fe6b0d1eafc2 100644 --- a/docs/developer_versioned_docs/version-v4.3.1/docs/aztec-nr/framework-description/contract_structure.md +++ b/docs/developer_versioned_docs/version-v4.3.1/docs/aztec-nr/framework-description/contract_structure.md @@ -98,7 +98,7 @@ pub contract MyContract { }; use uint_note::UintNote; - // The storage struct can have any name, but is typically called `Storage`. It must have the `#[storage]` macro applied to it. + // The storage struct must be named `Storage` and must have the `#[storage]` macro applied to it. // This struct must also have a generic type called C or Context. #[storage] struct Storage { diff --git a/docs/developer_versioned_docs/version-v4.3.1/docs/aztec-nr/framework-description/events_and_logs.md b/docs/developer_versioned_docs/version-v4.3.1/docs/aztec-nr/framework-description/events_and_logs.md index 0fbe002e1fa9..6d2c5802fd3c 100644 --- a/docs/developer_versioned_docs/version-v4.3.1/docs/aztec-nr/framework-description/events_and_logs.md +++ b/docs/developer_versioned_docs/version-v4.3.1/docs/aztec-nr/framework-description/events_and_logs.md @@ -86,13 +86,15 @@ Public events are emitted as plaintext logs, similar to Solidity events. ## Emit unstructured public logs -For unstructured data, use `emit_public_log` directly on the context: +For unstructured data, use `emit_public_log_unsafe` directly on the context. It takes a tag (placed at the first field of the emitted log, which nodes use to index logs) followed by the data: ```rust -self.context.emit_public_log("My message"); -self.context.emit_public_log([1, 2, 3]); +self.context.emit_public_log_unsafe(0, "My message"); +self.context.emit_public_log_unsafe(0, [1, 2, 3]); ``` +The tag should be domain-separated to prevent collisions with unrelated log types. Prefer `self.emit(event)` where possible, which handles tagging automatically. + ## Query public logs Query public logs from offchain applications using the Aztec node: diff --git a/docs/developer_versioned_docs/version-v4.3.1/docs/aztec-nr/framework-description/state_variables.md b/docs/developer_versioned_docs/version-v4.3.1/docs/aztec-nr/framework-description/state_variables.md index f05f5d716706..d21d108dca45 100644 --- a/docs/developer_versioned_docs/version-v4.3.1/docs/aztec-nr/framework-description/state_variables.md +++ b/docs/developer_versioned_docs/version-v4.3.1/docs/aztec-nr/framework-description/state_variables.md @@ -579,7 +579,7 @@ Note: The `Owned` wrapper requires calling `.at(owner)` to access the underlying #### `get_notes` -Retrieves notes the account has access to. You can optionally provide filtering options. Returns `RetrievedNote` instances: +Retrieves notes the account has access to. You can optionally provide filtering options. Returns `ConfirmedNote` instances: ```rust title="private_set_get_notes" showLineNumbers let options = NoteGetterOptions::with_filter(filter_notes_min_sum, amount); @@ -591,7 +591,7 @@ let notes = owner_balance.get_notes(options); #### `pop_notes` -This function pops (gets, removes and returns) the notes the account has access to. Unlike `get_notes`, this immediately nullifies the notes and returns them directly (not wrapped in `RetrievedNote`): +This function pops (gets, removes and returns) the notes the account has access to. Unlike `get_notes`, this immediately nullifies the notes and returns them directly (not wrapped in `ConfirmedNote`): ```rust title="private_set_pop_notes" showLineNumbers let options = NoteGetterOptions::new().set_limit(1); @@ -602,13 +602,13 @@ let note = owner_balance.pop_notes(options).get(0); #### `remove` -Will remove a note from the `PrivateSet` if it previously has been read from storage. Takes a `RetrievedNote` as returned by `get_notes`: +Will remove a note from the `PrivateSet` if it previously has been read from storage. Takes a `ConfirmedNote` as returned by `get_notes`: ```rust let options = NoteGetterOptions::new(); -let retrieved_notes = self.storage.balances.at(owner).get_notes(options); +let confirmed_notes = self.storage.balances.at(owner).get_notes(options); // ... select a note to remove ... -self.storage.balances.at(owner).remove(retrieved_notes.get(0)); +self.storage.balances.at(owner).remove(confirmed_notes.get(0)); ``` Note that if you obtained the note via `get_notes`, it's much better to use `pop_notes`, as `pop_notes` results in significantly fewer constraints due to avoiding an extra hash and read request check. diff --git a/docs/developer_versioned_docs/version-v4.3.1/docs/cli/aztec_cli_reference.md b/docs/developer_versioned_docs/version-v4.3.1/docs/cli/aztec_cli_reference.md index 20a17165e069..8171f8461e35 100644 --- a/docs/developer_versioned_docs/version-v4.3.1/docs/cli/aztec_cli_reference.md +++ b/docs/developer_versioned_docs/version-v4.3.1/docs/cli/aztec_cli_reference.md @@ -884,6 +884,48 @@ aztec setup-protocol-contracts [options] ### aztec start +Starts Aztec infrastructure components. Module flags can be combined to run several components in a single process (e.g. `--node --archiver --sequencer`). + +**Usage:** + +```bash +aztec start [options] +``` + +**Examples:** + +```bash +# Start a complete local development network +aztec start --local-network + +# Start a full node +aztec start --node --archiver + +# Start a sequencer node +aztec start --node --archiver --sequencer +``` + +**Common options:** + +- `--network ` - Network to run Aztec on (env: NETWORK) +- `--port ` - Port to run the Aztec Services on (default: 8080, env: AZTEC_PORT) +- `--admin-port ` - Port to run admin APIs of Aztec Services on (default: 8880, env: AZTEC_ADMIN_PORT) + +**Module flags:** + +- `--local-network` - Starts the Aztec Local Network: a local Ethereum dev node (Anvil) with the full Aztec protocol deployed on top +- `--node` - Starts an Aztec Node +- `--archiver` - Starts an Aztec Archiver (syncs data from L1) +- `--sequencer` - Starts an Aztec Sequencer +- `--prover-node` - Starts an Aztec Prover Node +- `--prover-broker` - Starts an Aztec proving job broker +- `--prover-agent` - Starts an Aztec Prover Agent +- `--p2p-bootstrap` - Starts an Aztec P2P bootstrap node +- `--bot` - Starts an Aztec transaction bot +- `--txe` - Starts an Aztec TXE (test execution environment) + +Each module accepts further namespaced options (e.g. `--sequencer.coinbase`, `--local-network.testAccounts`). For the full per-module option list, see the [node operator CLI reference](/operate/operators/reference/cli-reference). + ### aztec test *No help information available for this command.* diff --git a/docs/developer_versioned_docs/version-v4.3.1/docs/cli/aztec_wallet_cli_reference.md b/docs/developer_versioned_docs/version-v4.3.1/docs/cli/aztec_wallet_cli_reference.md index 136e4b547185..5f732cea01d0 100644 --- a/docs/developer_versioned_docs/version-v4.3.1/docs/cli/aztec_wallet_cli_reference.md +++ b/docs/developer_versioned_docs/version-v4.3.1/docs/cli/aztec_wallet_cli_reference.md @@ -67,9 +67,9 @@ wallet [options] [command] **Options:** - `-V --version` - output the version number -- `-d --data-dir ` - Storage directory for wallet data (default: "/home/josh/.aztec/wallet") +- `-d --data-dir ` - Storage directory for wallet data (default: "~/.aztec/wallet") - `-p --prover ` - The type of prover the wallet uses (choices: "wasm", "native", "none", default: "native", env: PXE_PROVER) -- `-n --node-url ` - URL of the Aztec node to connect to (default: "http://host.docker.internal:8080", env: AZTEC_NODE_URL) +- `-n --node-url ` - URL of the Aztec node to connect to (default: "http://localhost:8080", env: AZTEC_NODE_URL) - `-h --help` - display help for command ### Subcommands diff --git a/docs/developer_versioned_docs/version-v4.3.1/docs/foundational-topics/contract_creation.md b/docs/developer_versioned_docs/version-v4.3.1/docs/foundational-topics/contract_creation.md index 84b643f9e8d9..2f979c207d47 100644 --- a/docs/developer_versioned_docs/version-v4.3.1/docs/foundational-topics/contract_creation.md +++ b/docs/developer_versioned_docs/version-v4.3.1/docs/foundational-topics/contract_creation.md @@ -102,24 +102,25 @@ Your contract can verify the deployment or initialization state of other contrac - Conditional logic based on initialization ```rust -use aztec::history::contract_inclusion::{ - ProveContractDeployment, - ProveContractNonDeployment, - ProveContractInitialization, - ProveContractNonInitialization, +use aztec::history::deployment::{ + assert_contract_bytecode_was_not_published_by, + assert_contract_bytecode_was_published_by, + assert_contract_was_initialized_by, + assert_contract_was_not_initialized_by, }; -// Prove a contract is deployed -header.prove_contract_deployment(contract_address); +// Prove a contract's bytecode was published by a given block +assert_contract_bytecode_was_published_by(block_header, contract_address); -// Prove a contract is NOT deployed -header.prove_contract_non_deployment(contract_address); +// Prove a contract's bytecode was NOT published by a given block +assert_contract_bytecode_was_not_published_by(block_header, contract_address); -// Prove a contract is initialized -header.prove_contract_initialization(contract_address); +// Prove a contract was initialized by a given block +// (init_hash is the contract's initialization hash, obtainable via get_contract_instance) +assert_contract_was_initialized_by(block_header, contract_address, init_hash); -// Prove a contract is NOT initialized -header.prove_contract_non_initialization(contract_address); +// Prove a contract was NOT initialized by a given block +assert_contract_was_not_initialized_by(block_header, contract_address, init_hash); ``` These functions prove inclusion or non-inclusion of the corresponding nullifiers in the nullifier tree at a given block. diff --git a/docs/developer_versioned_docs/version-v4.3.1/docs/tutorials/contract_tutorials/counter_contract.md b/docs/developer_versioned_docs/version-v4.3.1/docs/tutorials/contract_tutorials/counter_contract.md index b6faf01adbd7..f4a3a383df5d 100644 --- a/docs/developer_versioned_docs/version-v4.3.1/docs/tutorials/contract_tutorials/counter_contract.md +++ b/docs/developer_versioned_docs/version-v4.3.1/docs/tutorials/contract_tutorials/counter_contract.md @@ -65,6 +65,15 @@ pub contract Counter { This defines a contract called `Counter`. +:::note Clear the scaffold's placeholder test +The scaffolded `counter_test/src/lib.nr` imports the default contract name (`Main`) we just replaced above, so it now fails to compile. Tests aren't used in this tutorial - replace its contents with a single-line stub so `aztec compile` stays clean: + +```rust +// Tests are out of scope for this tutorial. See https://docs.aztec.network/aztec-nr/testing_contracts for examples. +``` + +::: + ## Imports We need to define some imports. diff --git a/docs/developer_versioned_docs/version-v4.3.1/docs/tutorials/js_tutorials/token_bridge.md b/docs/developer_versioned_docs/version-v4.3.1/docs/tutorials/js_tutorials/token_bridge.md index 8ed6279b5d61..b2547cc62413 100644 --- a/docs/developer_versioned_docs/version-v4.3.1/docs/tutorials/js_tutorials/token_bridge.md +++ b/docs/developer_versioned_docs/version-v4.3.1/docs/tutorials/js_tutorials/token_bridge.md @@ -39,6 +39,16 @@ cd hardhat-aztec-example yarn add @aztec/aztec.js@4.3.1 @aztec/accounts@4.3.1 @aztec/stdlib@4.3.1 @aztec/wallets@4.3.1 tsx ``` +:::note Match the `@aztec/l1-contracts` version +The starter repo pins its `@aztec/l1-contracts` dependency to an older release. In `package.json`, update the tag to match the network version used in this tutorial, then run `yarn install` again: + +```json +"@aztec/l1-contracts": "git+https://github.com/AztecProtocol/l1-contracts.git#v4.3.1" +``` + +The L1 interfaces the portal imports later in this tutorial must match the contracts deployed by your running network. +::: + Now start the local network in another terminal: ```bash @@ -274,7 +284,7 @@ aztec compile We have built the L2 NFT contract. This is the L2 representation of an NFT that is locked on the L1 bridge. -The L2 bridge is the contract that talks to the L1 bridge through cross-chain messaging. You can read more about this protocol [here](../../../docs/foundational-topics/ethereum-aztec-messaging/index.md). +The L2 bridge is the contract that talks to the L1 bridge through cross-chain messaging. You can read more about this protocol [here](../../foundational-topics/ethereum-aztec-messaging/index.md). ```mermaid graph LR @@ -667,6 +677,19 @@ const inboxAddress = nodeInfo.l1ContractAddresses.inboxAddress.toString(); > Source code: docs/examples/ts/token_bridge/index.ts#L1-L42 +:::warning Adjust the artifact imports for this project's layout +The snippet above comes from the monorepo's runnable example, and its artifact imports point at that repo's layout. In the Hardhat project used in this tutorial, replace the four artifact imports with: + +```typescript +import NFTPortal from "../artifacts/contracts/NFTPortal.sol/NFTPortal.json" with { type: "json" }; +import SimpleNFT from "../artifacts/contracts/SimpleNFT.sol/SimpleNFT.json" with { type: "json" }; +import { NFTBridgeContract } from "../contracts/aztec/artifacts/NFTBridge.js"; +import { NFTPunkContract } from "../contracts/aztec/artifacts/NFTPunk.js"; +``` + +`npx hardhat compile` writes the Solidity artifacts to `artifacts/contracts/`, and the `aztec codegen` commands from earlier wrote the TypeScript bindings to `contracts/aztec/artifacts/`. Hardhat artifacts also store the bytecode as a plain string, so in the deployment snippet below use `SimpleNFT.bytecode` and `NFTPortal.bytecode` instead of `.bytecode.object`. +::: + You now have wallets for both chains, correctly connected to their respective chains. Next, deploy the L1 contracts: ```typescript title="deploy_l1_contracts" showLineNumbers @@ -1021,8 +1044,8 @@ console.log("NFT withdrawn to L1\n"); You can now try the whole flow with: -```typescript -npx hardhat run scripts/index.ts --network localhost +```bash +npx tsx scripts/index.ts ``` ## What You Built diff --git a/docs/docs-developers/docs/aztec-nr/framework-description/advanced/how_to_retrieve_filter_notes.md b/docs/docs-developers/docs/aztec-nr/framework-description/advanced/how_to_retrieve_filter_notes.md index b0fb8969443d..3cb4f3de92da 100644 --- a/docs/docs-developers/docs/aztec-nr/framework-description/advanced/how_to_retrieve_filter_notes.md +++ b/docs/docs-developers/docs/aztec-nr/framework-description/advanced/how_to_retrieve_filter_notes.md @@ -33,8 +33,8 @@ This returns up to `MAX_NOTE_HASH_READ_REQUESTS_PER_CALL` notes without filterin ### Step 2: Retrieve notes from storage ```rust -// Returns BoundedVec, ...> -let hinted_notes = storage.my_notes.at(owner).get_notes(options); +// Returns BoundedVec, ...> +let confirmed_notes = storage.my_notes.at(owner).get_notes(options); ``` :::tip get_notes vs pop_notes diff --git a/docs/docs-developers/docs/aztec-nr/framework-description/contract_structure.md b/docs/docs-developers/docs/aztec-nr/framework-description/contract_structure.md index 326d84bff027..18f2a1020a01 100644 --- a/docs/docs-developers/docs/aztec-nr/framework-description/contract_structure.md +++ b/docs/docs-developers/docs/aztec-nr/framework-description/contract_structure.md @@ -98,7 +98,7 @@ pub contract MyContract { }; use uint_note::UintNote; - // The storage struct can have any name, but is typically called `Storage`. It must have the `#[storage]` macro applied to it. + // The storage struct must be named `Storage` and must have the `#[storage]` macro applied to it. // This struct must also have a generic type called C or Context. #[storage] struct Storage { diff --git a/docs/docs-developers/docs/aztec-nr/framework-description/events_and_logs.md b/docs/docs-developers/docs/aztec-nr/framework-description/events_and_logs.md index 4d8a25ad57b8..a92b38190876 100644 --- a/docs/docs-developers/docs/aztec-nr/framework-description/events_and_logs.md +++ b/docs/docs-developers/docs/aztec-nr/framework-description/events_and_logs.md @@ -86,13 +86,15 @@ Public events are emitted as plaintext logs, similar to Solidity events. ## Emit unstructured public logs -For unstructured data, use `emit_public_log` directly on the context: +For unstructured data, use `emit_public_log_unsafe` directly on the context. It takes a tag (placed at the first field of the emitted log, which nodes use to index logs) followed by the data: ```rust -self.context.emit_public_log("My message"); -self.context.emit_public_log([1, 2, 3]); +self.context.emit_public_log_unsafe(0, "My message"); +self.context.emit_public_log_unsafe(0, [1, 2, 3]); ``` +The tag should be domain-separated to prevent collisions with unrelated log types. Prefer `self.emit(event)` where possible, which handles tagging automatically. + ## Query public logs Query public logs from offchain applications using the Aztec node. Raw public logs are diff --git a/docs/docs-developers/docs/aztec-nr/framework-description/state_variables.md b/docs/docs-developers/docs/aztec-nr/framework-description/state_variables.md index c0a639def31e..243202538a8e 100644 --- a/docs/docs-developers/docs/aztec-nr/framework-description/state_variables.md +++ b/docs/docs-developers/docs/aztec-nr/framework-description/state_variables.md @@ -434,25 +434,25 @@ Note: The `Owned` wrapper requires calling `.at(owner)` to access the underlying #### `get_notes` -Retrieves notes the account has access to. You can optionally provide filtering options. Returns `RetrievedNote` instances: +Retrieves notes the account has access to. You can optionally provide filtering options. Returns `ConfirmedNote` instances: #include_code private_set_get_notes /noir-projects/noir-contracts/contracts/test/pending_note_hashes_contract/src/main.nr rust #### `pop_notes` -This function pops (gets, removes and returns) the notes the account has access to. Unlike `get_notes`, this immediately nullifies the notes and returns them directly (not wrapped in `RetrievedNote`): +This function pops (gets, removes and returns) the notes the account has access to. Unlike `get_notes`, this immediately nullifies the notes and returns them directly (not wrapped in `ConfirmedNote`): #include_code private_set_pop_notes /noir-projects/noir-contracts/contracts/test/pending_note_hashes_contract/src/main.nr rust #### `remove` -Will remove a note from the `PrivateSet` if it previously has been read from storage. Takes a `RetrievedNote` as returned by `get_notes`: +Will remove a note from the `PrivateSet` if it previously has been read from storage. Takes a `ConfirmedNote` as returned by `get_notes`: ```rust let options = NoteGetterOptions::new(); -let retrieved_notes = self.storage.balances.at(owner).get_notes(options); +let confirmed_notes = self.storage.balances.at(owner).get_notes(options); // ... select a note to remove ... -self.storage.balances.at(owner).remove(retrieved_notes.get(0)); +self.storage.balances.at(owner).remove(confirmed_notes.get(0)); ``` Note that if you obtained the note via `get_notes`, it's much better to use `pop_notes`, as `pop_notes` results in significantly fewer constraints due to avoiding an extra hash and read request check. diff --git a/docs/docs-developers/docs/cli/aztec_cli_reference.md b/docs/docs-developers/docs/cli/aztec_cli_reference.md index 20a17165e069..8171f8461e35 100644 --- a/docs/docs-developers/docs/cli/aztec_cli_reference.md +++ b/docs/docs-developers/docs/cli/aztec_cli_reference.md @@ -884,6 +884,48 @@ aztec setup-protocol-contracts [options] ### aztec start +Starts Aztec infrastructure components. Module flags can be combined to run several components in a single process (e.g. `--node --archiver --sequencer`). + +**Usage:** + +```bash +aztec start [options] +``` + +**Examples:** + +```bash +# Start a complete local development network +aztec start --local-network + +# Start a full node +aztec start --node --archiver + +# Start a sequencer node +aztec start --node --archiver --sequencer +``` + +**Common options:** + +- `--network ` - Network to run Aztec on (env: NETWORK) +- `--port ` - Port to run the Aztec Services on (default: 8080, env: AZTEC_PORT) +- `--admin-port ` - Port to run admin APIs of Aztec Services on (default: 8880, env: AZTEC_ADMIN_PORT) + +**Module flags:** + +- `--local-network` - Starts the Aztec Local Network: a local Ethereum dev node (Anvil) with the full Aztec protocol deployed on top +- `--node` - Starts an Aztec Node +- `--archiver` - Starts an Aztec Archiver (syncs data from L1) +- `--sequencer` - Starts an Aztec Sequencer +- `--prover-node` - Starts an Aztec Prover Node +- `--prover-broker` - Starts an Aztec proving job broker +- `--prover-agent` - Starts an Aztec Prover Agent +- `--p2p-bootstrap` - Starts an Aztec P2P bootstrap node +- `--bot` - Starts an Aztec transaction bot +- `--txe` - Starts an Aztec TXE (test execution environment) + +Each module accepts further namespaced options (e.g. `--sequencer.coinbase`, `--local-network.testAccounts`). For the full per-module option list, see the [node operator CLI reference](/operate/operators/reference/cli-reference). + ### aztec test *No help information available for this command.* diff --git a/docs/docs-developers/docs/cli/aztec_wallet_cli_reference.md b/docs/docs-developers/docs/cli/aztec_wallet_cli_reference.md index 136e4b547185..5f732cea01d0 100644 --- a/docs/docs-developers/docs/cli/aztec_wallet_cli_reference.md +++ b/docs/docs-developers/docs/cli/aztec_wallet_cli_reference.md @@ -67,9 +67,9 @@ wallet [options] [command] **Options:** - `-V --version` - output the version number -- `-d --data-dir ` - Storage directory for wallet data (default: "/home/josh/.aztec/wallet") +- `-d --data-dir ` - Storage directory for wallet data (default: "~/.aztec/wallet") - `-p --prover ` - The type of prover the wallet uses (choices: "wasm", "native", "none", default: "native", env: PXE_PROVER) -- `-n --node-url ` - URL of the Aztec node to connect to (default: "http://host.docker.internal:8080", env: AZTEC_NODE_URL) +- `-n --node-url ` - URL of the Aztec node to connect to (default: "http://localhost:8080", env: AZTEC_NODE_URL) - `-h --help` - display help for command ### Subcommands diff --git a/docs/docs-developers/docs/foundational-topics/contract_creation.md b/docs/docs-developers/docs/foundational-topics/contract_creation.md index 75eaed56069a..f2fd1929df29 100644 --- a/docs/docs-developers/docs/foundational-topics/contract_creation.md +++ b/docs/docs-developers/docs/foundational-topics/contract_creation.md @@ -103,24 +103,25 @@ Your contract can verify the deployment or initialization state of other contrac - Conditional logic based on initialization ```rust -use aztec::history::contract_inclusion::{ - ProveContractDeployment, - ProveContractNonDeployment, - ProveContractInitialization, - ProveContractNonInitialization, +use aztec::history::deployment::{ + assert_contract_bytecode_was_not_published_by, + assert_contract_bytecode_was_published_by, + assert_contract_was_initialized_by, + assert_contract_was_not_initialized_by, }; -// Prove a contract is deployed -header.prove_contract_deployment(contract_address); +// Prove a contract's bytecode was published by a given block +assert_contract_bytecode_was_published_by(block_header, contract_address); -// Prove a contract is NOT deployed -header.prove_contract_non_deployment(contract_address); +// Prove a contract's bytecode was NOT published by a given block +assert_contract_bytecode_was_not_published_by(block_header, contract_address); -// Prove a contract is initialized -header.prove_contract_initialization(contract_address); +// Prove a contract was initialized by a given block +// (init_hash is the contract's initialization hash, obtainable via get_contract_instance) +assert_contract_was_initialized_by(block_header, contract_address, init_hash); -// Prove a contract is NOT initialized -header.prove_contract_non_initialization(contract_address); +// Prove a contract was NOT initialized by a given block +assert_contract_was_not_initialized_by(block_header, contract_address, init_hash); ``` These functions prove inclusion or non-inclusion of the corresponding nullifiers in the nullifier tree at a given block. diff --git a/docs/docs-developers/docs/foundational-topics/ethereum-aztec-messaging/outbox.md b/docs/docs-developers/docs/foundational-topics/ethereum-aztec-messaging/outbox.md index b8056ceae63f..6ddd389bbfd7 100644 --- a/docs/docs-developers/docs/foundational-topics/ethereum-aztec-messaging/outbox.md +++ b/docs/docs-developers/docs/foundational-topics/ethereum-aztec-messaging/outbox.md @@ -5,20 +5,21 @@ tags: [portals, contracts] references: ["l1-contracts/src/core/interfaces/messagebridge/IOutbox.sol"] --- -The `Outbox` is a contract deployed on L1 that handles message passing from L2 to L1. Portal contracts call `consume()` to receive and process messages that were sent from L2 contracts. The Rollup contract inserts message roots via `insert()` when epochs are proven. +The `Outbox` is a contract deployed on L1 that handles message passing from L2 to L1. Portal contracts call `consume()` to receive and process messages that were sent from L2 contracts. The Rollup contract inserts message roots via `insert()` as proofs land. A proof can cover a prefix of an epoch's checkpoints (a partial proof), so an epoch can have several roots, one per number of checkpoints covered. **Links**: [Interface](https://github.com/AztecProtocol/aztec-packages/blob/#include_aztec_version/l1-contracts/src/core/interfaces/messagebridge/IOutbox.sol), [Implementation](https://github.com/AztecProtocol/aztec-packages/blob/#include_aztec_version/l1-contracts/src/core/messagebridge/Outbox.sol). ## `insert()` -Inserts the root of a merkle tree containing all of the L2 to L1 messages in an epoch. This function is only callable by the Rollup contract. +Inserts the root of a merkle tree containing all of the L2 to L1 messages in an epoch, after a proof covering the first `_numCheckpointsInEpoch` checkpoints of that epoch lands. This function is only callable by the Rollup contract. #include_code outbox_insert l1-contracts/src/core/interfaces/messagebridge/IOutbox.sol solidity -| Name | Type | Description | -| -------------- | --------- | ---------------------------------------------------------------------- | -| `_epochNumber` | `uint256` | The epoch number in which the L2 to L1 messages reside | -| `_root` | `bytes32` | The merkle root of the tree where all the L2 to L1 messages are leaves | +| Name | Type | Description | +| ------------------------ | --------- | ------------------------------------------------------------------------------------------------------------ | +| `_epoch` | `Epoch` | The epoch in which the L2 to L1 messages reside | +| `_numCheckpointsInEpoch` | `uint256` | The number of checkpoints the inserting proof covered in this epoch (in `[1, MAX_CHECKPOINTS_PER_EPOCH]`) | +| `_root` | `bytes32` | The merkle root of the tree where all the L2 to L1 messages are leaves | ### Edge cases @@ -30,12 +31,13 @@ Allows a recipient to consume a message from the `Outbox`. #include_code outbox_consume l1-contracts/src/core/interfaces/messagebridge/IOutbox.sol solidity -| Name | Type | Description | -| -------------- | ----------- | -------------------------------------------------------------------------- | -| `_message` | `L2ToL1Msg` | The L2 to L1 message to consume | -| `_epochNumber` | `uint256` | The epoch number specifying the epoch that contains the message to consume | -| `_leafIndex` | `uint256` | The index inside the merkle tree where the message is located | -| `_path` | `bytes32[]` | The sibling path used to prove inclusion of the message | +| Name | Type | Description | +| ------------------------ | ----------- | ---------------------------------------------------------------------------------------------------- | +| `_message` | `L2ToL1Msg` | The L2 to L1 message to consume | +| `_epoch` | `Epoch` | The epoch that contains the message to consume | +| `_numCheckpointsInEpoch` | `uint256` | The number of checkpoints in the partial proof whose root this consume verifies against | +| `_leafIndex` | `uint256` | The index inside the merkle tree where the message is located | +| `_path` | `bytes32[]` | The sibling path used to prove inclusion of the message (built against the tree for that proof depth) | ### Edge cases @@ -55,10 +57,10 @@ Checks if an L2 to L1 message in a specific epoch has been consumed. #include_code outbox_has_message_been_consumed_at_epoch_and_index l1-contracts/src/core/interfaces/messagebridge/IOutbox.sol solidity -| Name | Type | Description | -| -------------- | --------- | ------------------------------------------------------------------------ | -| `_epochNumber` | `uint256` | The epoch number specifying the epoch that contains the message to check | -| `_leafId` | `uint256` | The unique id of the message leaf | +| Name | Type | Description | +| --------- | --------- | ------------------------------------------------------------ | +| `_epoch` | `Epoch` | The epoch that contains the message to check | +| `_leafId` | `uint256` | The unique id of the message leaf | ### Edge cases @@ -66,17 +68,20 @@ Checks if an L2 to L1 message in a specific epoch has been consumed. ## `getRootData()` -Returns the merkle root for a given epoch number. Returns `bytes32(0)` if the epoch has not been proven. +Returns the merkle root for a given epoch and partial-proof depth. Returns `bytes32(0)` if no proof covering that number of checkpoints has been inserted. ```solidity -function getRootData(uint256 _epochNumber) external view returns (bytes32); +function getRootData(Epoch _epoch, uint256 _numCheckpointsInEpoch) external view returns (bytes32); ``` -| Name | Type | Description | -| -------------- | --------- | ------------------------------------------- | -| `_epochNumber` | `uint256` | The epoch number to fetch the root data for | +| Name | Type | Description | +| ------------------------ | --------- | -------------------------------------------------------------------- | +| `_epoch` | `Epoch` | The epoch to fetch the root data for | +| `_numCheckpointsInEpoch` | `uint256` | The number of checkpoints in the partial proof whose root to fetch | -**Returns**: The merkle root of the L2 to L1 message tree for the epoch, or `bytes32(0)` if not proven. +**Returns**: The merkle root of the L2 to L1 message tree for that epoch and proof depth, or `bytes32(0)` if not proven. + +There is also `getRoots(Epoch _epoch)`, which returns every root stored for an epoch: slot `i` of the returned array holds the root for `numCheckpointsInEpoch = i + 1`. ## Related pages diff --git a/docs/docs-developers/docs/tutorials/contract_tutorials/counter_contract.md b/docs/docs-developers/docs/tutorials/contract_tutorials/counter_contract.md index f0f959e16e89..806e2c55fba3 100644 --- a/docs/docs-developers/docs/tutorials/contract_tutorials/counter_contract.md +++ b/docs/docs-developers/docs/tutorials/contract_tutorials/counter_contract.md @@ -62,6 +62,15 @@ Go to `counter_contract/src/main.nr`, and replace the boilerplate code with this This defines a contract called `Counter`. +:::note Clear the scaffold's placeholder test +The scaffolded `counter_test/src/lib.nr` imports the default contract name (`Main`) we just replaced above, so it now fails to compile. Tests aren't used in this tutorial - replace its contents with a single-line stub so `aztec compile` stays clean: + +```rust +// Tests are out of scope for this tutorial. See https://docs.aztec.network/aztec-nr/testing_contracts for examples. +``` + +::: + ## Imports We need to define some imports. diff --git a/docs/docs-developers/docs/tutorials/js_tutorials/token_bridge.md b/docs/docs-developers/docs/tutorials/js_tutorials/token_bridge.md index ef78773f46c7..640a412bbbe4 100644 --- a/docs/docs-developers/docs/tutorials/js_tutorials/token_bridge.md +++ b/docs/docs-developers/docs/tutorials/js_tutorials/token_bridge.md @@ -39,6 +39,16 @@ cd hardhat-aztec-example yarn add @aztec/aztec.js@#include_version_without_prefix @aztec/accounts@#include_version_without_prefix @aztec/stdlib@#include_version_without_prefix @aztec/wallets@#include_version_without_prefix tsx ``` +:::note Match the `@aztec/l1-contracts` version +The starter repo pins its `@aztec/l1-contracts` dependency to an older release. In `package.json`, update the tag to match the network version used in this tutorial, then run `yarn install` again: + +```json +"@aztec/l1-contracts": "git+https://github.com/AztecProtocol/l1-contracts.git##include_aztec_version" +``` + +The L1 interfaces the portal imports later in this tutorial must match the contracts deployed by your running network. +::: + Now start the local network in another terminal: ```bash @@ -175,7 +185,7 @@ aztec compile We have built the L2 NFT contract. This is the L2 representation of an NFT that is locked on the L1 bridge. -The L2 bridge is the contract that talks to the L1 bridge through cross-chain messaging. You can read more about this protocol [here](../../../docs/foundational-topics/ethereum-aztec-messaging/index.md). +The L2 bridge is the contract that talks to the L1 bridge through cross-chain messaging. You can read more about this protocol [here](../../foundational-topics/ethereum-aztec-messaging/index.md). ```mermaid graph LR @@ -381,6 +391,19 @@ First, initialize the clients: `aztec.js` for Aztec and `viem` for Ethereum: #include_code setup /docs/examples/ts/token_bridge/index.ts typescript +:::warning Adjust the artifact imports for this project's layout +The snippet above comes from the monorepo's runnable example, and its artifact imports point at that repo's layout. In the Hardhat project used in this tutorial, replace the four artifact imports with: + +```typescript +import NFTPortal from "../artifacts/contracts/NFTPortal.sol/NFTPortal.json" with { type: "json" }; +import SimpleNFT from "../artifacts/contracts/SimpleNFT.sol/SimpleNFT.json" with { type: "json" }; +import { NFTBridgeContract } from "../contracts/aztec/artifacts/NFTBridge.js"; +import { NFTPunkContract } from "../contracts/aztec/artifacts/NFTPunk.js"; +``` + +`npx hardhat compile` writes the Solidity artifacts to `artifacts/contracts/`, and the `aztec codegen` commands from earlier wrote the TypeScript bindings to `contracts/aztec/artifacts/`. Hardhat artifacts also store the bytecode as a plain string, so in the deployment snippet below use `SimpleNFT.bytecode` and `NFTPortal.bytecode` instead of `.bytecode.object`. +::: + You now have wallets for both chains, correctly connected to their respective chains. Next, deploy the L1 contracts: #include_code deploy_l1_contracts /docs/examples/ts/token_bridge/index.ts typescript @@ -446,8 +469,8 @@ With this information, call the L1 contract and use the index and the sibling pa You can now try the whole flow with: -```typescript -npx hardhat run scripts/index.ts --network localhost +```bash +npx tsx scripts/index.ts ``` ## What You Built diff --git a/docs/docs-operate/operators/sequencer-management/governance-participation.md b/docs/docs-operate/operators/sequencer-management/governance-participation.md index f499f30f031f..99cb1252b0b5 100644 --- a/docs/docs-operate/operators/sequencer-management/governance-participation.md +++ b/docs/docs-operate/operators/sequencer-management/governance-participation.md @@ -230,11 +230,11 @@ cast call [GOVERNANCE_CONTRACT_ADDRESS] \ # Query the latest proposal (count - 1, since proposals are zero-indexed) cast call [GOVERNANCE_CONTRACT_ADDRESS] \ - "proposals(uint256)" $((PROPOSAL_COUNT - 1)) \ + "getProposal(uint256)" $((PROPOSAL_COUNT - 1)) \ --rpc-url [YOUR_RPC_URL] ``` -This returns the `CompressedProposal` struct data, which includes: +This returns the `Proposal` struct data, which includes: - The payload address - Creation timestamp - Voting start and end times @@ -390,7 +390,7 @@ Query the proposal to see the voting timeline: ```bash cast call [GOVERNANCE_CONTRACT_ADDRESS] \ - "proposals(uint256)" [PROPOSAL_ID] \ + "getProposal(uint256)" [PROPOSAL_ID] \ --rpc-url [YOUR_RPC_URL] ``` diff --git a/docs/docs-operate/operators/sequencer-management/slashing-configuration.md b/docs/docs-operate/operators/sequencer-management/slashing-configuration.md index 9004789eb74f..8d195b3b427f 100644 --- a/docs/docs-operate/operators/sequencer-management/slashing-configuration.md +++ b/docs/docs-operate/operators/sequencer-management/slashing-configuration.md @@ -42,7 +42,7 @@ Round N: Proposers vote on offenses from Round N-2 ``` **Key parameters**: -- **Round Size**: 128 L2 slots (approximately 1.28 hours at 36 seconds per slot) +- **Round Size**: 128 L2 slots (approximately 2.6 hours at 72 seconds per slot) - **Slashing Offset**: 2 rounds (proposers in round N vote on offenses from round N-2) - **Execution Delay**: 28 rounds (~3 days) - **Grace Period**: First 128 slots (configurable per node) @@ -52,7 +52,7 @@ Round N: Proposers vote on offenses from Round N-2 The L1 contract defines three fixed slashing tiers that can be configured for different offenses. These amounts are set on L1 deployment and can only be changed via governance. :::info Network Configuration -On the current network, **all offenses are currently configured to slash 2,000 tokens (1% of the Activation Threshold - the minimum stake required to join the validator set)**. With the ejection threshold at 98%, validators can be slashed a maximum of **3 times** (totaling 3% of their Activation Threshold) before being automatically ejected from the validator set. +On mainnet, **offenses are currently configured to slash 2,000 tokens for small offenses and 5,000 tokens for medium and large offenses (1% and 2.5% of the Activation Threshold - the minimum stake required to join the validator set)**. A validator is ejected when a slash would drop its stake below the rollup's local ejection threshold (190,000 tokens on mainnet, 95% of the Activation Threshold). A validator that joined at exactly the 200,000 token Activation Threshold is therefore ejected by the first slash that would push its total slashed amount above 10,000 tokens (5% of its stake). See [Ejection from the validator set](#ejection-from-the-validator-set) for details. ::: ## Slashable offenses @@ -248,7 +248,7 @@ When slashing rounds become executable (after the execution delay): The slashing vetoer is an independent security group that can pause slashing to protect validators from unfair slashing due to software bugs. -**Execution Delay**: All slashing proposals have a ~3 day execution delay (28 rounds on testnet) during which the vetoer can review and potentially block execution. +**Execution Delay**: All slashing proposals have a ~3 day execution delay (28 rounds on mainnet) during which the vetoer can review and potentially block execution. **Temporary Disable**: The vetoer can disable all slashing for up to 3 days if needed, with the ability to extend this period. @@ -256,11 +256,11 @@ The slashing vetoer is an independent security group that can pause slashing to ## Ejection from the Validator Set -If a validator's stake falls below the ejection threshold after being slashed, they are automatically exited from the validator set. +If a slash would drop a validator's stake below the rollup's **local ejection threshold**, the validator's entire remaining stake is withdrawn instead of just the slashed amount: the slash is burned and the remainder is sent to their registered withdrawer address after the exit delay. -**Ejection Threshold**: 98% of Activation Threshold +**Local Ejection Threshold**: 190,000 tokens on mainnet (95% of the 200,000 token Activation Threshold). This is a per-rollup parameter, and other networks use different values (199,000 tokens on testnet). -This means a validator can be slashed up to **3 times** (at 1% per slash, totaling 3%) before being automatically ejected. Their remaining stake is sent to their registered withdrawer address. +With mainnet's current slash amounts (2,000 tokens for small offenses, 5,000 for medium and large), a validator that joined at exactly the Activation Threshold is ejected by the first slash that would push its total slashed amount above 10,000 tokens (5% of its stake). A separate protocol-level ejection threshold (100,000 tokens, 50% of the Activation Threshold) applies to all stake withdrawals at the GSE level, but with current parameters the local ejection threshold is the one that triggers ejection from slashing. ## Monitoring Slashing Activity diff --git a/docs/docs-operate/operators/sequencer-management/useful-commands.md b/docs/docs-operate/operators/sequencer-management/useful-commands.md index fc428e5cad7c..9d3fa33b13b3 100644 --- a/docs/docs-operate/operators/sequencer-management/useful-commands.md +++ b/docs/docs-operate/operators/sequencer-management/useful-commands.md @@ -196,16 +196,16 @@ Replace `[REGISTRY_ADDRESS]` and `[GOVERNANCE_ADDRESS]` with your actual address Query the quorum parameters for the governance system: ```bash -# Get the signaling round size (in L2 blocks) -cast call [GOVERNANCE_PROPOSER_ADDRESS] "M()" --rpc-url $RPC_URL +# Get the signaling round size (in L2 slots) +cast call [GOVERNANCE_PROPOSER_ADDRESS] "ROUND_SIZE()" --rpc-url $RPC_URL # Get the number of signals required for quorum in any single round -cast call [GOVERNANCE_PROPOSER_ADDRESS] "N()" --rpc-url $RPC_URL +cast call [GOVERNANCE_PROPOSER_ADDRESS] "QUORUM_SIZE()" --rpc-url $RPC_URL ``` **What these values mean:** -- **M()** - The size of any signaling round, measured in L2 blocks (e.g., 1000 blocks) -- **N()** - The number of signals needed within a round for a payload to reach quorum (e.g., 750 signals, which is 75% of M) +- **ROUND_SIZE()** - The size of any signaling round, measured in L2 slots (e.g., 1000 slots on mainnet) +- **QUORUM_SIZE()** - The number of signals needed within a round for a payload to reach quorum (e.g., 600 signals on mainnet, which is 60% of ROUND_SIZE) ### Find the Current Round Number @@ -234,7 +234,7 @@ cast call 0x9876543210abcdef9876543210abcdef98765432 "computeRound(uint256)" 500 Check how many sequencers have signaled support for a specific payload in a given round: ```bash -cast call [GOVERNANCE_PROPOSER_ADDRESS] "yeaCount(address,uint256,address)" [ROLLUP_ADDRESS] [ROUND_NUMBER] [PAYLOAD_ADDRESS] --rpc-url $RPC_URL +cast call [GOVERNANCE_PROPOSER_ADDRESS] "signalCount(address,uint256,address)" [ROLLUP_ADDRESS] [ROUND_NUMBER] [PAYLOAD_ADDRESS] --rpc-url $RPC_URL ``` Replace: @@ -245,10 +245,10 @@ Replace: **Example:** ```bash -cast call 0x9876543210abcdef9876543210abcdef98765432 "yeaCount(address,uint256,address)" 0xabcdef1234567890abcdef1234567890abcdef12 5 0x1111111111111111111111111111111111111111 --rpc-url $RPC_URL +cast call 0x9876543210abcdef9876543210abcdef98765432 "signalCount(address,uint256,address)" 0xabcdef1234567890abcdef1234567890abcdef12 5 0x1111111111111111111111111111111111111111 --rpc-url $RPC_URL ``` -This returns the number of signals the payload has received in that round. Compare this to the quorum threshold (N) to determine if the payload can be promoted to a proposal. +This returns the number of signals the payload has received in that round. Compare this to the quorum threshold (QUORUM_SIZE) to determine if the payload can be promoted to a proposal. ### Get Current Proposal Count @@ -263,7 +263,7 @@ cast call [GOVERNANCE_CONTRACT_ADDRESS] "proposalCount()" --rpc-url $RPC_URL Get details about a specific proposal: ```bash -cast call [GOVERNANCE_CONTRACT_ADDRESS] "proposals(uint256)" [PROPOSAL_ID] --rpc-url $RPC_URL +cast call [GOVERNANCE_CONTRACT_ADDRESS] "getProposal(uint256)" [PROPOSAL_ID] --rpc-url $RPC_URL ``` Replace: diff --git a/docs/network_versioned_docs/version-v4.3.1/operators/sequencer-management/governance-participation.md b/docs/network_versioned_docs/version-v4.3.1/operators/sequencer-management/governance-participation.md index 7f4e0b7f1a9d..37274504f5dc 100644 --- a/docs/network_versioned_docs/version-v4.3.1/operators/sequencer-management/governance-participation.md +++ b/docs/network_versioned_docs/version-v4.3.1/operators/sequencer-management/governance-participation.md @@ -181,11 +181,11 @@ cast call [GOVERNANCE_CONTRACT_ADDRESS] \ # Query the latest proposal (count - 1, since proposals are zero-indexed) cast call [GOVERNANCE_CONTRACT_ADDRESS] \ - "proposals(uint256)" $((PROPOSAL_COUNT - 1)) \ + "getProposal(uint256)" $((PROPOSAL_COUNT - 1)) \ --rpc-url [YOUR_RPC_URL] ``` -This returns the `CompressedProposal` struct data, which includes: +This returns the `Proposal` struct data, which includes: - The payload address - Creation timestamp - Voting start and end times @@ -341,7 +341,7 @@ Query the proposal to see the voting timeline: ```bash cast call [GOVERNANCE_CONTRACT_ADDRESS] \ - "proposals(uint256)" [PROPOSAL_ID] \ + "getProposal(uint256)" [PROPOSAL_ID] \ --rpc-url [YOUR_RPC_URL] ``` diff --git a/docs/network_versioned_docs/version-v4.3.1/operators/sequencer-management/slashing-configuration.md b/docs/network_versioned_docs/version-v4.3.1/operators/sequencer-management/slashing-configuration.md index 7ca59950b0e9..cbe44696796a 100644 --- a/docs/network_versioned_docs/version-v4.3.1/operators/sequencer-management/slashing-configuration.md +++ b/docs/network_versioned_docs/version-v4.3.1/operators/sequencer-management/slashing-configuration.md @@ -42,7 +42,7 @@ Round N: Proposers vote on offenses from Round N-2 ``` **Key parameters**: -- **Round Size**: 128 L2 slots (approximately 1.28 hours at 36 seconds per slot) +- **Round Size**: 128 L2 slots (approximately 2.6 hours at 72 seconds per slot) - **Slashing Offset**: 2 rounds (proposers in round N vote on offenses from round N-2) - **Execution Delay**: 28 rounds (~3 days) - **Grace Period**: First 128 slots (configurable per node) @@ -52,7 +52,7 @@ Round N: Proposers vote on offenses from Round N-2 The L1 contract defines three fixed slashing tiers that can be configured for different offenses. These amounts are set on L1 deployment and can only be changed via governance. :::info Network Configuration -On the current network, **all offenses are currently configured to slash 2,000 tokens (1% of the Activation Threshold - the minimum stake required to join the validator set)**. With the ejection threshold at 98%, validators can be slashed a maximum of **3 times** (totaling 3% of their Activation Threshold) before being automatically ejected from the validator set. +On mainnet, **all offenses are currently configured to slash 2,000 tokens (1% of the Activation Threshold - the minimum stake required to join the validator set)**. A validator is ejected when a slash would drop its stake below the rollup's local ejection threshold (190,000 tokens on mainnet, 95% of the Activation Threshold). A validator that joined at exactly the 200,000 token Activation Threshold can therefore absorb **5 slashes** (totaling 5% of its stake) and is ejected by the 6th. See [Ejection from the Validator Set](#ejection-from-the-validator-set) for details. ::: ## Slashable Offenses @@ -297,7 +297,7 @@ When slashing rounds become executable (after the execution delay): The slashing vetoer is an independent security group that can pause slashing to protect validators from unfair slashing due to software bugs. -**Execution Delay**: All slashing proposals have a ~3 day execution delay (28 rounds on testnet) during which the vetoer can review and potentially block execution. +**Execution Delay**: All slashing proposals have a ~3 day execution delay (28 rounds on mainnet) during which the vetoer can review and potentially block execution. **Temporary Disable**: The vetoer can disable all slashing for up to 3 days if needed, with the ability to extend this period. @@ -305,11 +305,11 @@ The slashing vetoer is an independent security group that can pause slashing to ## Ejection from the Validator Set -If a validator's stake falls below the ejection threshold after being slashed, they are automatically exited from the validator set. +If a slash would drop a validator's stake below the rollup's **local ejection threshold**, the validator's entire remaining stake is withdrawn instead of just the slashed amount: the slash is burned and the remainder is sent to their registered withdrawer address after the exit delay. -**Ejection Threshold**: 98% of Activation Threshold +**Local Ejection Threshold**: 190,000 tokens on mainnet (95% of the 200,000 token Activation Threshold). This is a per-rollup parameter, and other networks use different values (199,000 tokens on testnet). -This means a validator can be slashed up to **3 times** (at 1% per slash, totaling 3%) before being automatically ejected. Their remaining stake is sent to their registered withdrawer address. +With mainnet's 2,000 token (1%) slash amounts, a validator that joined at exactly the Activation Threshold can absorb 5 slashes and is ejected by the 6th. A separate protocol-level ejection threshold (100,000 tokens, 50% of the Activation Threshold) applies to all stake withdrawals at the GSE level, but with current parameters the local ejection threshold is the one that triggers ejection from slashing. ## Monitoring Slashing Activity diff --git a/docs/network_versioned_docs/version-v4.3.1/operators/sequencer-management/useful-commands.md b/docs/network_versioned_docs/version-v4.3.1/operators/sequencer-management/useful-commands.md index 97ec03e878a3..a014a051194c 100644 --- a/docs/network_versioned_docs/version-v4.3.1/operators/sequencer-management/useful-commands.md +++ b/docs/network_versioned_docs/version-v4.3.1/operators/sequencer-management/useful-commands.md @@ -188,16 +188,16 @@ Replace `[REGISTRY_ADDRESS]` and `[GOVERNANCE_ADDRESS]` with your actual address Query the quorum parameters for the governance system: ```bash -# Get the signaling round size (in L2 blocks) -cast call [GOVERNANCE_PROPOSER_ADDRESS] "M()" --rpc-url $RPC_URL +# Get the signaling round size (in L2 slots) +cast call [GOVERNANCE_PROPOSER_ADDRESS] "ROUND_SIZE()" --rpc-url $RPC_URL # Get the number of signals required for quorum in any single round -cast call [GOVERNANCE_PROPOSER_ADDRESS] "N()" --rpc-url $RPC_URL +cast call [GOVERNANCE_PROPOSER_ADDRESS] "QUORUM_SIZE()" --rpc-url $RPC_URL ``` **What these values mean:** -- **M()** - The size of any signaling round, measured in L2 blocks (e.g., 1000 blocks) -- **N()** - The number of signals needed within a round for a payload to reach quorum (e.g., 750 signals, which is 75% of M) +- **ROUND_SIZE()** - The size of any signaling round, measured in L2 slots (e.g., 1000 slots on mainnet) +- **QUORUM_SIZE()** - The number of signals needed within a round for a payload to reach quorum (e.g., 600 signals on mainnet, which is 60% of ROUND_SIZE) ### Find the Current Round Number @@ -226,7 +226,7 @@ cast call 0x9876543210abcdef9876543210abcdef98765432 "computeRound(uint256)" 500 Check how many sequencers have signaled support for a specific payload in a given round: ```bash -cast call [GOVERNANCE_PROPOSER_ADDRESS] "yeaCount(address,uint256,address)" [ROLLUP_ADDRESS] [ROUND_NUMBER] [PAYLOAD_ADDRESS] --rpc-url $RPC_URL +cast call [GOVERNANCE_PROPOSER_ADDRESS] "signalCount(address,uint256,address)" [ROLLUP_ADDRESS] [ROUND_NUMBER] [PAYLOAD_ADDRESS] --rpc-url $RPC_URL ``` Replace: @@ -237,10 +237,10 @@ Replace: **Example:** ```bash -cast call 0x9876543210abcdef9876543210abcdef98765432 "yeaCount(address,uint256,address)" 0xabcdef1234567890abcdef1234567890abcdef12 5 0x1111111111111111111111111111111111111111 --rpc-url $RPC_URL +cast call 0x9876543210abcdef9876543210abcdef98765432 "signalCount(address,uint256,address)" 0xabcdef1234567890abcdef1234567890abcdef12 5 0x1111111111111111111111111111111111111111 --rpc-url $RPC_URL ``` -This returns the number of signals the payload has received in that round. Compare this to the quorum threshold (N) to determine if the payload can be promoted to a proposal. +This returns the number of signals the payload has received in that round. Compare this to the quorum threshold (QUORUM_SIZE) to determine if the payload can be promoted to a proposal. ### Get Current Proposal Count @@ -255,7 +255,7 @@ cast call [GOVERNANCE_CONTRACT_ADDRESS] "proposalCount()" --rpc-url $RPC_URL Get details about a specific proposal: ```bash -cast call [GOVERNANCE_CONTRACT_ADDRESS] "proposals(uint256)" [PROPOSAL_ID] --rpc-url $RPC_URL +cast call [GOVERNANCE_CONTRACT_ADDRESS] "getProposal(uint256)" [PROPOSAL_ID] --rpc-url $RPC_URL ``` Replace: From 4e1ad2dd06b9232704b6b7e6bd258abe1f08e49f Mon Sep 17 00:00:00 2001 From: Josh Crites Date: Wed, 10 Jun 2026 16:16:49 -0400 Subject: [PATCH 2/3] docs: correct aztec start source reference --- docs/docs-developers/docs/cli/aztec_cli_reference.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/docs-developers/docs/cli/aztec_cli_reference.md b/docs/docs-developers/docs/cli/aztec_cli_reference.md index 8171f8461e35..5017fa282165 100644 --- a/docs/docs-developers/docs/cli/aztec_cli_reference.md +++ b/docs/docs-developers/docs/cli/aztec_cli_reference.md @@ -884,7 +884,7 @@ aztec setup-protocol-contracts [options] ### aztec start -Starts Aztec infrastructure components. Module flags can be combined to run several components in a single process (e.g. `--node --archiver --sequencer`). +Starts Aztec infrastructure components. Module flags can be combined to run several components in a single process (e.g. `--node --sequencer`). **Usage:** @@ -899,10 +899,10 @@ aztec start [options] aztec start --local-network # Start a full node -aztec start --node --archiver +aztec start --node # Start a sequencer node -aztec start --node --archiver --sequencer +aztec start --node --sequencer ``` **Common options:** @@ -915,7 +915,6 @@ aztec start --node --archiver --sequencer - `--local-network` - Starts the Aztec Local Network: a local Ethereum dev node (Anvil) with the full Aztec protocol deployed on top - `--node` - Starts an Aztec Node -- `--archiver` - Starts an Aztec Archiver (syncs data from L1) - `--sequencer` - Starts an Aztec Sequencer - `--prover-node` - Starts an Aztec Prover Node - `--prover-broker` - Starts an Aztec proving job broker From 0895e45b20bb2b1e0c3748c9c28b5ba57e7ba31e Mon Sep 17 00:00:00 2001 From: Josh Crites Date: Wed, 10 Jun 2026 16:34:19 -0400 Subject: [PATCH 3/3] docs: regenerate v4.3.1 aztec cli reference --- .../docs/cli/aztec_cli_reference.md | 1409 ++++++++++++++--- 1 file changed, 1210 insertions(+), 199 deletions(-) diff --git a/docs/developer_versioned_docs/version-v4.3.1/docs/cli/aztec_cli_reference.md b/docs/developer_versioned_docs/version-v4.3.1/docs/cli/aztec_cli_reference.md index 8171f8461e35..bdbc97c37274 100644 --- a/docs/developer_versioned_docs/version-v4.3.1/docs/cli/aztec_cli_reference.md +++ b/docs/developer_versioned_docs/version-v4.3.1/docs/cli/aztec_cli_reference.md @@ -10,7 +10,7 @@ sidebar_position: 1 *This documentation is auto-generated from the `aztec` CLI help output.* -*Generated: Mon 18 May 2026 14:25:09 UTC* +*Generated: Wed 10 Jun 2026 20:29:09 UTC* *Command: `aztec`* @@ -148,17 +148,17 @@ aztec add-l1-validator [options] **Options:** -- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain identifiers +- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain identifiers localhost and testnet can be used (comma separated) (default: ["http://localhost:8545"], env: ETHEREUM_HOSTS) - `--network ` - Network to execute against (env: NETWORK) -- `-pk --private-key ` - The private key to use sending the transaction -- `-m --mnemonic ` - The mnemonic to use sending the transaction -- `-c --l1-chain-id ` - Chain ID of the ethereum host (default: 31337, +- `-pk, --private-key ` - The private key to use sending the transaction +- `-m, --mnemonic ` - The mnemonic to use sending the transaction (default: "test test test test test test test test test test test junk") +- `-c, --l1-chain-id ` - Chain ID of the ethereum host (default: 31337, env: L1_CHAIN_ID) - `--attester
` - ethereum address of the attester - `--withdrawer
` - ethereum address of the withdrawer -- `--bls-secret-key ` - The BN254 scalar field element used as a secret -- `--move-with-latest-rollup` - Whether to move with the latest rollup (default: +- `--bls-secret-key ` - The BN254 scalar field element used as a secret key for BLS signatures. Will be associated with the attester address. +- `--move-with-latest-rollup` - Whether to move with the latest rollup (default: true) - `--rollup ` - Rollup contract address -- `-h --help` - display help for command +- `-h, --help` - display help for command ### aztec advance-epoch @@ -171,9 +171,9 @@ aztec advance-epoch [options] **Options:** -- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain identifiers -- `-n --node-url ` - URL of the Aztec node (default: -- `-h --help` - display help for command +- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain identifiers localhost and testnet can be used (comma separated) (default: ["http://localhost:8545"], env: ETHEREUM_HOSTS) +- `-n, --node-url ` - URL of the Aztec node (default: "http://localhost:8080", env: AZTEC_NODE_URL) +- `-h, --help` - display help for command ### aztec block-number @@ -186,8 +186,8 @@ aztec block-number [options] **Options:** -- `-n --node-url ` - URL of the Aztec node (default: -- `-h --help` - display help for command +- `-n, --node-url ` - URL of the Aztec node (default: "http://localhost:8080", env: AZTEC_NODE_URL) +- `-h, --help` - display help for command ### aztec bridge-erc20 @@ -200,17 +200,17 @@ aztec bridge-erc20 [options] **Options:** -- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain identifiers -- `-m --mnemonic ` - The mnemonic to use for deriving the Ethereum +- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain identifiers localhost and testnet can be used (comma separated) (default: ["http://localhost:8545"], env: ETHEREUM_HOSTS) +- `-m, --mnemonic ` - The mnemonic to use for deriving the Ethereum address that will mint and bridge (default: "test test test test test test test test test test test junk") - `--mint` - Mint the tokens on L1 (default: false) -- `--private` - If the bridge should use the private flow -- `-c --l1-chain-id ` - Chain ID of the ethereum host (default: 31337, -- `-t --token ` - The address of the token to bridge -- `-p --portal ` - The address of the portal contract -- `-f --faucet ` - The address of the faucet contract (only used if +- `--private` - If the bridge should use the private flow (default: false) +- `-c, --l1-chain-id ` - Chain ID of the ethereum host (default: 31337, env: L1_CHAIN_ID) +- `-t, --token ` - The address of the token to bridge +- `-p, --portal ` - The address of the portal contract +- `-f, --faucet ` - The address of the faucet contract (only used if minting) - `--l1-private-key ` - The private key to use for deployment - `--json` - Output the claim in JSON format -- `-h --help` - display help for command +- `-h, --help` - display help for command ### aztec codegen @@ -223,30 +223,40 @@ aztec codegen [options] **Options:** -- `-o --outdir ` - Output folder for the generated code. -- `-f --force` - Force code generation even when the contract has not -- `-h --help` - display help for command +- `-o, --outdir ` - Output folder for the generated code. +- `-f, --force` - Force code generation even when the contract has not changed. +- `-h, --help` - display help for command ### aztec compile -Compile Aztec Noir contracts using nargo and postprocess them to generate +Compile Aztec Noir contracts using nargo and postprocess them to generate transpiled artifacts and verification keys. All options are forwarded to nargo compile. **Usage:** ```bash -nargo compile [OPTIONS] +aztec compile [options] [nargo-args...] ``` **Options:** -- `-h --help` - display help for command -- `--package` - <PACKAGE> -- `--debug-comptime-in-file` - <DEBUG_COMPTIME_IN_FILE> -- `--inliner-aggressiveness` - <INLINER_AGGRESSIVENESS> -- `-Z --unstable-features` - <UNSTABLE_FEATURES> +- `-h, --help` - display help for command +- `--package ` - The name of the package to run the command on. By default run on the first one found moving up along the ancestors of the current directory +- `--workspace` - Run on all packages in the workspace +- `--force` - Force a full recompilation +- `--print-acir` - Display the ACIR for compiled circuit, including the Brillig bytecode +- `--deny-warnings` - Treat all warnings as errors +- `--silence-warnings` - Suppress warnings +- `--debug-comptime-in-file ` - Enable printing results of comptime evaluation: provide a path suffix for the module to debug, e.g. "package_name/src/main.nr" +- `--skip-underconstrained-check` - Flag to turn off the compiler check for under constrained values. Warning: This can improve compilation speed but can also lead to correctness errors. This check should always be run on production code +- `--skip-brillig-constraints-check` - Flag to turn off the compiler check for missing Brillig call constraints. Warning: This can improve compilation speed but can also lead to correctness errors. This check should always be run on production code +- `--count-array-copies` - Count the number of arrays that are copied in an unconstrained context for performance debugging +- `--inliner-aggressiveness ` - Setting to decide on an inlining strategy for Brillig functions. A more aggressive inliner should generate larger programs but more optimized A less aggressive inliner should generate smaller programs [default: 9223372036854775807] +- `-Z, --unstable-features ` - Unstable features to enable for this current build. If non-empty, it disables unstable features required in crate manifests. +- `--no-unstable-features` - Disable any unstable features required in crate manifests +- `-h, --help` - Print help (see a summary with '-h') ### aztec compute-genesis-values -Computes genesis values (VK tree root, protocol contracts hash, genesis archive +Computes genesis values (VK tree root, protocol contracts hash, genesis archive root). **Usage:** ```bash @@ -255,9 +265,9 @@ aztec compute-genesis-values [options] **Options:** -- `--test-accounts ` - Include initial test accounts in genesis state -- `--sponsored-fpc ` - Include sponsored FPC contract in genesis state -- `-h --help` - display help for command +- `--test-accounts ` - Include initial test accounts in genesis state (env: TEST_ACCOUNTS) +- `--sponsored-fpc ` - Include sponsored FPC contract in genesis state (env: SPONSORED_FPC) +- `-h, --help` - display help for command ### aztec compute-selector @@ -270,7 +280,7 @@ aztec compute-selector [options] **Options:** -- `-h --help` - display help for command +- `-h, --help` - display help for command ### aztec debug-rollup @@ -283,10 +293,10 @@ aztec debug-rollup [options] **Options:** -- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain identifiers -- `-c --l1-chain-id ` - Chain ID of the ethereum host (default: 31337, +- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain identifiers localhost and testnet can be used (comma separated) (default: ["http://localhost:8545"], env: ETHEREUM_HOSTS) +- `-c, --l1-chain-id ` - Chain ID of the ethereum host (default: 31337, env: L1_CHAIN_ID) - `--rollup
` - ethereum address of the rollup contract -- `-h --help` - display help for command +- `-h, --help` - display help for command ### aztec decode-enr @@ -299,7 +309,7 @@ aztec decode-enr [options] **Options:** -- `-h --help` - display help for command +- `-h, --help` - display help for command ### aztec deploy-l1-contracts @@ -312,22 +322,22 @@ aztec deploy-l1-contracts [options] **Options:** -- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain identifiers -- `-pk --private-key ` - The private key to use for deployment +- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain identifiers localhost and testnet can be used (comma separated) (default: ["http://localhost:8545"], env: ETHEREUM_HOSTS) +- `-pk, --private-key ` - The private key to use for deployment - `--validators ` - Comma separated list of validators -- `-m --mnemonic ` - The mnemonic to use in deployment (default: -- `-i --mnemonic-index ` - The index of the mnemonic to use in deployment -- `-c --l1-chain-id ` - Chain ID of the ethereum host (default: 31337, +- `-m, --mnemonic ` - The mnemonic to use in deployment (default: "test test test test test test test test test test test junk") +- `-i, --mnemonic-index ` - The index of the mnemonic to use in deployment (default: 0) +- `-c, --l1-chain-id ` - Chain ID of the ethereum host (default: 31337, env: L1_CHAIN_ID) - `--json` - Output the contract addresses in JSON format -- `--test-accounts` - Populate genesis state with initial fee juice -- `--sponsored-fpc` - Populate genesis state with a testing +- `--test-accounts` - Populate genesis state with initial fee juice for test accounts +- `--sponsored-fpc` - Populate genesis state with a testing sponsored FPC contract - `--real-verifier` - Deploy the real verifier (default: false) - `--existing-token
` - Use an existing ERC20 for both fee and staking -- `-h --help` - display help for command +- `-h, --help` - display help for command ### aztec deploy-new-rollup -Deploys a new rollup contract and adds it to the registry (if you are the +Deploys a new rollup contract and adds it to the registry (if you are the owner). **Usage:** ```bash @@ -336,18 +346,18 @@ aztec deploy-new-rollup [options] **Options:** -- `-r --registry-address ` - The address of the registry contract -- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain -- `-pk --private-key ` - The private key to use for deployment +- `-r, --registry-address ` - The address of the registry contract +- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain identifiers localhost and testnet can be used (comma separated) (default: ["http://localhost:8545"], env: ETHEREUM_HOSTS) +- `-pk, --private-key ` - The private key to use for deployment - `--validators ` - Comma separated list of validators -- `-m --mnemonic ` - The mnemonic to use in deployment (default: -- `-i --mnemonic-index ` - The index of the mnemonic to use in -- `-c --l1-chain-id ` - Chain ID of the ethereum host (default: +- `-m, --mnemonic ` - The mnemonic to use in deployment (default: "test test test test test test test test test test test junk") +- `-i, --mnemonic-index ` - The index of the mnemonic to use in deployment (default: 0) +- `-c, --l1-chain-id ` - Chain ID of the ethereum host (default: 31337, env: L1_CHAIN_ID) - `--json` - Output the contract addresses in JSON format -- `--test-accounts` - Populate genesis state with initial fee -- `--sponsored-fpc` - Populate genesis state with a testing +- `--test-accounts` - Populate genesis state with initial fee juice for test accounts +- `--sponsored-fpc` - Populate genesis state with a testing sponsored FPC contract - `--real-verifier` - Deploy the real verifier (default: false) -- `-h --help` - display help for command +- `-h, --help` - display help for command ### aztec deposit-governance-tokens @@ -360,16 +370,16 @@ aztec deposit-governance-tokens [options] **Options:** -- `-r --registry-address ` - The address of the registry contract +- `-r, --registry-address ` - The address of the registry contract - `--recipient ` - The recipient of the tokens -- `-a --amount ` - The amount of tokens to deposit +- `-a, --amount ` - The amount of tokens to deposit - `--mint` - Mint the tokens on L1 (default: false) -- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain -- `-c --l1-chain-id ` - Chain ID of the ethereum host (default: -- `-p --private-key ` - The private key to use to deposit -- `-m --mnemonic ` - The mnemonic to use to deposit (default: -- `-i --mnemonic-index ` - The index of the mnemonic to use to deposit -- `-h --help` - display help for command +- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain identifiers localhost and testnet can be used (comma separated) (default: ["http://localhost:8545"], env: ETHEREUM_HOSTS) +- `-c, --l1-chain-id ` - Chain ID of the ethereum host (default: 31337, env: L1_CHAIN_ID) +- `-p, --private-key ` - The private key to use to deposit +- `-m, --mnemonic ` - The mnemonic to use to deposit (default: "test test test test test test test test test test test junk") +- `-i, --mnemonic-index ` - The index of the mnemonic to use to deposit (default: 0) +- `-h, --help` - display help for command ### aztec example-contracts @@ -382,7 +392,7 @@ aztec example-contracts [options] **Options:** -- `-h --help` - display help for command +- `-h, --help` - display help for command ### aztec execute-governance-proposal @@ -395,15 +405,15 @@ aztec execute-governance-proposal [options] **Options:** -- `-p --proposal-id ` - The ID of the proposal -- `-r --registry-address ` - The address of the registry contract -- `--wait ` - Whether to wait until the proposal is -- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain -- `-c --l1-chain-id ` - Chain ID of the ethereum host (default: -- `-pk --private-key ` - The private key to use to vote -- `-m --mnemonic ` - The mnemonic to use to vote (default: "test -- `-i --mnemonic-index ` - The index of the mnemonic to use to vote -- `-h --help` - display help for command +- `-p, --proposal-id ` - The ID of the proposal +- `-r, --registry-address ` - The address of the registry contract +- `--wait ` - Whether to wait until the proposal is executable +- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain identifiers localhost and testnet can be used (comma separated) (default: ["http://localhost:8545"], env: ETHEREUM_HOSTS) +- `-c, --l1-chain-id ` - Chain ID of the ethereum host (default: 31337, env: L1_CHAIN_ID) +- `-pk, --private-key ` - The private key to use to vote +- `-m, --mnemonic ` - The mnemonic to use to vote (default: "test test test test test test test test test test test junk") +- `-i, --mnemonic-index ` - The index of the mnemonic to use to vote (default: 0) +- `-h, --help` - display help for command ### aztec fast-forward-epochs @@ -421,13 +431,13 @@ aztec generate-bls-keypair [options] **Options:** - `--mnemonic ` - Mnemonic for BLS derivation -- `--ikm ` - Initial keying material for BLS (alternative to +- `--ikm ` - Initial keying material for BLS (alternative to mnemonic) - `--bls-path ` - EIP-2334 path (default m/12381/3600/0/0/0) - `--g2` - Derive on G2 subgroup - `--compressed` - Output compressed public key - `--json` - Print JSON output to stdout - `--out ` - Write output to file -- `-h --help` - display help for command +- `-h, --help` - display help for command ### aztec generate-bootnode-enr @@ -440,8 +450,8 @@ aztec generate-bootnode-enr [options] **Options:** -- `-c --l1-chain-id ` - Chain ID of the ethereum host (default: 31337, -- `-h --help` - display help for command +- `-c, --l1-chain-id ` - Chain ID of the ethereum host (default: 31337, env: L1_CHAIN_ID) +- `-h, --help` - display help for command ### aztec generate-keys @@ -455,7 +465,7 @@ aztec generate-keys [options] **Options:** - `--json` - Output the keys in JSON format -- `-h --help` - display help for command +- `-h, --help` - display help for command ### aztec generate-l1-account @@ -469,11 +479,11 @@ aztec generate-l1-account [options] **Options:** - `--json` - Output the private key in JSON format -- `-h --help` - display help for command +- `-h, --help` - display help for command ### aztec generate-p2p-private-key -Generates a private key that can be used for running a node on a LibP2P +Generates a private key that can be used for running a node on a LibP2P network. **Usage:** ```bash @@ -482,7 +492,7 @@ aztec generate-p2p-private-key [options] **Options:** -- `-h --help` - display help for command +- `-h, --help` - display help for command ### aztec generate-secret-and-hash @@ -495,7 +505,7 @@ aztec generate-secret-and-hash [options] **Options:** -- `-h --help` - display help for command +- `-h, --help` - display help for command ### aztec get-block @@ -508,12 +518,12 @@ aztec get-block [options] [blockNumber] **Options:** -- `-n --node-url ` - URL of the Aztec node (default: -- `-h --help` - display help for command +- `-n, --node-url ` - URL of the Aztec node (default: "http://localhost:8080", env: AZTEC_NODE_URL) +- `-h, --help` - display help for command ### aztec get-canonical-sponsored-fpc-address -Gets the canonical SponsoredFPC address for this any testnet running on the +Gets the canonical SponsoredFPC address for this any testnet running on the same version as this CLI **Usage:** ```bash @@ -522,7 +532,7 @@ aztec get-canonical-sponsored-fpc-address [options] **Options:** -- `-h --help` - display help for command +- `-h, --help` - display help for command ### aztec get-current-min-fee @@ -535,8 +545,8 @@ aztec get-current-min-fee [options] **Options:** -- `-n --node-url ` - URL of the Aztec node (default: -- `-h --help` - display help for command +- `-n, --node-url ` - URL of the Aztec node (default: "http://localhost:8080", env: AZTEC_NODE_URL) +- `-h, --help` - display help for command ### aztec get-l1-addresses @@ -549,12 +559,12 @@ aztec get-l1-addresses [options] **Options:** -- `-r --registry-address ` - The address of the registry contract -- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain -- `-v --rollup-version ` - The version of the rollup -- `-c --l1-chain-id ` - Chain ID of the ethereum host (default: +- `-r, --registry-address ` - The address of the registry contract +- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain identifiers localhost and testnet can be used (comma separated) (default: ["http://localhost:8545"], env: ETHEREUM_HOSTS) +- `-v, --rollup-version ` - The version of the rollup +- `-c, --l1-chain-id ` - Chain ID of the ethereum host (default: 31337, env: L1_CHAIN_ID) - `--json` - Output the addresses in JSON format -- `-h --help` - display help for command +- `-h, --help` - display help for command ### aztec get-l1-balance @@ -567,11 +577,11 @@ aztec get-l1-balance [options] **Options:** -- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain identifiers -- `-t --token ` - The address of the token to check the balance of -- `-c --l1-chain-id ` - Chain ID of the ethereum host (default: 31337, +- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain identifiers localhost and testnet can be used (comma separated) (default: ["http://localhost:8545"], env: ETHEREUM_HOSTS) +- `-t, --token ` - The address of the token to check the balance of +- `-c, --l1-chain-id ` - Chain ID of the ethereum host (default: 31337, env: L1_CHAIN_ID) - `--json` - Output the balance in JSON format -- `-h --help` - display help for command +- `-h, --help` - display help for command ### aztec get-l1-to-l2-message-witness @@ -584,11 +594,11 @@ aztec get-l1-to-l2-message-witness [options] **Options:** -- `-ca --contract-address
` - Aztec address of the contract. +- `-ca, --contract-address
` - Aztec address of the contract. - `--message-hash ` - The L1 to L2 message hash. -- `--secret ` - The secret used to claim the L1 to L2 -- `-n --node-url ` - URL of the Aztec node (default: -- `-h --help` - display help for command +- `--secret ` - The secret used to claim the L1 to L2 message +- `-n, --node-url ` - URL of the Aztec node (default: "http://localhost:8080", env: AZTEC_NODE_URL) +- `-h, --help` - display help for command ### aztec get-logs @@ -601,17 +611,17 @@ aztec get-logs [options] **Options:** -- `-tx --tx-hash ` - A transaction hash to get the receipt for. -- `-fb --from-block ` - Initial block number for getting logs -- `-tb --to-block ` - Up to which block to fetch logs (defaults -- `-ca --contract-address
` - Contract address to filter logs by. -- `-n --node-url ` - URL of the Aztec node (default: -- `--follow` - If set, will keep polling for new logs -- `-h --help` - display help for command +- `-tx, --tx-hash ` - A transaction hash to get the receipt for. +- `-fb, --from-block ` - Initial block number for getting logs (defaults to 1). +- `-tb, --to-block ` - Up to which block to fetch logs (defaults to latest). +- `-ca, --contract-address
` - Contract address to filter logs by. +- `-n, --node-url ` - URL of the Aztec node (default: "http://localhost:8080", env: AZTEC_NODE_URL) +- `--follow` - If set, will keep polling for new logs until interrupted. +- `-h, --help` - display help for command ### aztec get-node-info -Gets the information of an Aztec node from a PXE or directly from an Aztec +Gets the information of an Aztec node from a PXE or directly from an Aztec node. **Usage:** ```bash @@ -621,8 +631,8 @@ aztec get-node-info [options] **Options:** - `--json` - Emit output as json -- `-n --node-url ` - URL of the Aztec node (default: -- `-h --help` - display help for command +- `-n, --node-url ` - URL of the Aztec node (default: "http://localhost:8080", env: AZTEC_NODE_URL) +- `-h, --help` - display help for command ### aztec init @@ -635,7 +645,7 @@ aztec init **Options:** -- `-h --help` - Print help +- `-h, --help` - Print help ### aztec inspect-contract @@ -648,7 +658,7 @@ aztec inspect-contract [options] **Options:** -- `-h --help` - display help for command +- `-h, --help` - display help for command ### aztec migrate-ha-db @@ -684,7 +694,7 @@ aztec migrate-ha-db down [options] - `--database-url ` - PostgreSQL connection string - `--verbose` - Enable verbose output (default: false) -- `-h --help` - display help for command +- `-h, --help` - display help for command #### aztec migrate-ha-db up @@ -699,7 +709,7 @@ aztec migrate-ha-db up [options] - `--database-url ` - PostgreSQL connection string - `--verbose` - Enable verbose output (default: false) -- `-h --help` - display help for command +- `-h, --help` - display help for command ### aztec new @@ -712,7 +722,7 @@ aztec new **Options:** -- `-h --help` - Print help +- `-h, --help` - Print help ### aztec parse-parameter-struct @@ -725,9 +735,9 @@ aztec parse-parameter-struct [options] **Options:** -- `-c --contract-artifact ` - A compiled Aztec.nr contract's ABI in JSON format or name of a contract ABI exported by @aztec/noir-contracts.js -- `-p --parameter ` - The name of the struct parameter to decode into -- `-h --help` - display help for command +- `-c, --contract-artifact ` - A compiled Aztec.nr contract's ABI in JSON format or name of a contract ABI exported by @aztec/noir-contracts.js +- `-p, --parameter ` - The name of the struct parameter to decode into +- `-h, --help` - display help for command ### aztec preload-crs @@ -740,7 +750,7 @@ aztec preload-crs [options] **Options:** -- `-h --help` - display help for command +- `-h, --help` - display help for command ### aztec profile @@ -774,7 +784,7 @@ aztec profile flamegraph [options] **Options:** -- `-h --help` - display help for command +- `-h, --help` - display help for command #### aztec profile gates @@ -788,7 +798,7 @@ aztec profile gates [options] [target-dir] **Options:** - `--json` - Output gate counts as JSON instead of a table (default: false) -- `-h --help` - display help for command +- `-h, --help` - display help for command ### aztec propose-with-lock @@ -801,15 +811,15 @@ aztec propose-with-lock [options] **Options:** -- `-r --registry-address ` - The address of the registry contract -- `-p --payload-address ` - The address of the payload contract -- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain -- `-c --l1-chain-id ` - Chain ID of the ethereum host (default: -- `-pk --private-key ` - The private key to use to propose -- `-m --mnemonic ` - The mnemonic to use to propose (default: -- `-i --mnemonic-index ` - The index of the mnemonic to use to propose +- `-r, --registry-address ` - The address of the registry contract +- `-p, --payload-address ` - The address of the payload contract +- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain identifiers localhost and testnet can be used (comma separated) (default: ["http://localhost:8545"], env: ETHEREUM_HOSTS) +- `-c, --l1-chain-id ` - Chain ID of the ethereum host (default: 31337, env: L1_CHAIN_ID) +- `-pk, --private-key ` - The private key to use to propose +- `-m, --mnemonic ` - The mnemonic to use to propose (default: "test test test test test test test test test test test junk") +- `-i, --mnemonic-index ` - The index of the mnemonic to use to propose (default: 0) - `--json` - Output the proposal ID in JSON format -- `-h --help` - display help for command +- `-h, --help` - display help for command ### aztec prune-rollup @@ -822,12 +832,12 @@ aztec prune-rollup [options] **Options:** -- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain identifiers -- `-pk --private-key ` - The private key to use for deployment -- `-m --mnemonic ` - The mnemonic to use in deployment (default: -- `-c --l1-chain-id ` - Chain ID of the ethereum host (default: 31337, +- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain identifiers localhost and testnet can be used (comma separated) (default: ["http://localhost:8545"], env: ETHEREUM_HOSTS) +- `-pk, --private-key ` - The private key to use for deployment +- `-m, --mnemonic ` - The mnemonic to use in deployment (default: "test test test test test test test test test test test junk") +- `-c, --l1-chain-id ` - Chain ID of the ethereum host (default: 31337, env: L1_CHAIN_ID) - `--rollup
` - ethereum address of the rollup contract -- `-h --help` - display help for command +- `-h, --help` - display help for command ### aztec remove-l1-validator @@ -840,13 +850,13 @@ aztec remove-l1-validator [options] **Options:** -- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain identifiers -- `-pk --private-key ` - The private key to use for deployment -- `-m --mnemonic ` - The mnemonic to use in deployment (default: -- `-c --l1-chain-id ` - Chain ID of the ethereum host (default: 31337, +- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain identifiers localhost and testnet can be used (comma separated) (default: ["http://localhost:8545"], env: ETHEREUM_HOSTS) +- `-pk, --private-key ` - The private key to use for deployment +- `-m, --mnemonic ` - The mnemonic to use in deployment (default: "test test test test test test test test test test test junk") +- `-c, --l1-chain-id ` - Chain ID of the ethereum host (default: 31337, env: L1_CHAIN_ID) - `--validator
` - ethereum address of the validator - `--rollup
` - ethereum address of the rollup contract -- `-h --help` - display help for command +- `-h, --help` - display help for command ### aztec sequencers @@ -859,12 +869,12 @@ aztec sequencers [options] [who] **Options:** -- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain identifiers -- `-m --mnemonic ` - The mnemonic for the sender of the tx (default: +- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain identifiers localhost and testnet can be used (comma separated) (default: ["http://localhost:8545"]) +- `-m, --mnemonic ` - The mnemonic for the sender of the tx (default: "test test test test test test test test test test test junk") - `--block-number ` - Block number to query next sequencer for -- `-n --node-url ` - URL of the Aztec node (default: -- `-c --l1-chain-id ` - Chain ID of the ethereum host (default: 31337, -- `-h --help` - display help for command +- `-n, --node-url ` - URL of the Aztec node (default: "http://localhost:8080", env: AZTEC_NODE_URL) +- `-c, --l1-chain-id ` - Chain ID of the ethereum host (default: 31337, env: L1_CHAIN_ID) +- `-h, --help` - display help for command ### aztec setup-protocol-contracts @@ -877,58 +887,1059 @@ aztec setup-protocol-contracts [options] **Options:** -- `-n --node-url ` - URL of the Aztec node (default: +- `-n, --node-url ` - URL of the Aztec node (default: "http://localhost:8080", env: AZTEC_NODE_URL) - `--testAccounts` - Deploy funded test accounts. - `--json` - Output the contract addresses in JSON format -- `-h --help` - display help for command +- `-h, --help` - display help for command ### aztec start -Starts Aztec infrastructure components. Module flags can be combined to run several components in a single process (e.g. `--node --archiver --sequencer`). +**MISC** -**Usage:** +- `--network ` + Network to run Aztec on + *Environment: `$NETWORK`* -```bash -aztec start [options] -``` +- `--enable-version-check` (default: `true`) + Check if the node is running the latest version and is following the latest rollup + *Environment: `$ENABLE_VERSION_CHECK`* -**Examples:** +- `--sync-mode ` (default: `snapshot`) + Set sync mode to `full` to always sync via L1, `snapshot` to download a snapshot if there is no local data, `force-snapshot` to download even if there is local data. + *Environment: `$SYNC_MODE`* -```bash -# Start a complete local development network -aztec start --local-network +- `--snapshots-urls ` + Base URLs for snapshots index, comma-separated. + *Environment: `$SYNC_SNAPSHOTS_URLS`* -# Start a full node -aztec start --node --archiver +- `--fisherman-mode` + Whether to run in fisherman mode. + *Environment: `$FISHERMAN_MODE`* -# Start a sequencer node -aztec start --node --archiver --sequencer -``` +- `--local-network` + Starts Aztec Local Network + +- `--local-network.l1Mnemonic ` (default: `test test test test test test test test test test test junk`) + Mnemonic for L1 accounts. Will be used + *Environment: `$MNEMONIC`* + +- `--local-network.testAccounts` (default: `true`) + Deploy test accounts on local network start + *Environment: `$TEST_ACCOUNTS`* + +**API** + +- `--port ` (default: `8080`) + Port to run the Aztec Services on + *Environment: `$AZTEC_PORT`* + +- `--admin-port ` (default: `8880`) + Port to run admin APIs of Aztec Services on + *Environment: `$AZTEC_ADMIN_PORT`* + +- `--admin-api-key-hash ` + SHA-256 hex hash of a pre-generated admin API key. When set, the node uses this hash for authentication instead of auto-generating a key. + *Environment: `$AZTEC_ADMIN_API_KEY_HASH`* + +- `--disable-admin-api-key` + Disable API key authentication on the admin RPC endpoint. By default, a key is auto-generated, displayed once, and its hash is persisted. + *Environment: `$AZTEC_DISABLE_ADMIN_API_KEY`* + +- `--reset-admin-api-key` + Force-generate a new admin API key, replacing any previously persisted key hash. The new key is displayed once at startup. + *Environment: `$AZTEC_RESET_ADMIN_API_KEY`* + +- `--node-debug` + Expose debug endpoints (e.g. mineBlock) on the main RPC port + *Environment: `$AZTEC_NODE_DEBUG`* + +- `--api-prefix ` + Prefix for API routes on any service that is started + *Environment: `$API_PREFIX`* + +- `--rpcMaxBatchSize ` (default: `100`) + Maximum allowed batch size for JSON RPC batch requests. + *Environment: `$RPC_MAX_BATCH_SIZE`* + +- `--rpcMaxBodySize ` (default: `1mb`) + Maximum allowed batch size for JSON RPC batch requests. + *Environment: `$RPC_MAX_BODY_SIZE`* + +**ETHEREUM** + +- `--l1-chain-id ` + The chain ID of the ethereum host. + *Environment: `$L1_CHAIN_ID`* + +- `--l1-rpc-urls ` + List of URLs of Ethereum RPC nodes that services will connect to (comma separated). + *Environment: `$ETHEREUM_HOSTS`* + +- `--l1-consensus-host-urls ` + List of URLs of the Ethereum consensus nodes that services will connect to (comma separated) + *Environment: `$L1_CONSENSUS_HOST_URLS`* + +- `--l1-consensus-host-api-keys ` + List of API keys for the corresponding L1 consensus clients, if needed. Added to the end of the corresponding URL as "?key=<api-key>" unless a header is defined + *Environment: `$L1_CONSENSUS_HOST_API_KEYS`* + +- `--l1-consensus-host-api-key-headers ` + List of header names for the corresponding L1 consensus client API keys, if needed. Added to the corresponding request as "<api-key-header>: <api-key>" + *Environment: `$L1_CONSENSUS_HOST_API_KEY_HEADERS`* + +- `--registry-address ` + The deployed L1 registry contract address. + *Environment: `$REGISTRY_CONTRACT_ADDRESS`* + +- `--rollup-version ` + The version of the rollup. + *Environment: `$ROLLUP_VERSION`* + +**STORAGE** + +- `--data-directory ` + Optional dir to store data. If omitted will store in memory. + *Environment: `$DATA_DIRECTORY`* + +- `--data-store-map-size-kb ` (default: `134217728`) + The maximum possible size of a data store DB in KB. Can be overridden by component-specific options. + *Environment: `$DATA_STORE_MAP_SIZE_KB`* + +**WORLD STATE** + +- `--world-state-data-directory ` + Optional directory for the world state database + *Environment: `$WS_DATA_DIRECTORY`* + +- `--world-state-db-map-size-kb ` + The maximum possible size of the world state DB in KB. Overwrites the general dataStoreMapSizeKb. + *Environment: `$WS_DB_MAP_SIZE_KB`* + +- `--world-state-checkpoint-history ` (default: `64`) + The number of historic checkpoints worth of blocks to maintain. Values less than 1 mean all history is maintained + *Environment: `$WS_NUM_HISTORIC_CHECKPOINTS`* + +**AZTEC NODE** + +- `--node` + Starts Aztec Node with options + +**ARCHIVER** + +- `--archiver` + Starts Aztec Archiver with options + +- `--archiver.blobSinkMapSizeKb ` + The maximum possible size of the blob sink DB in KB. Overwrites the general dataStoreMapSizeKb. + *Environment: `$BLOB_SINK_MAP_SIZE_KB`* + +- `--archiver.blobAllowEmptySources ` + Whether to allow having no blob sources configured during startup + *Environment: `$BLOB_ALLOW_EMPTY_SOURCES`* + +- `--archiver.blobFileStoreUrls ` + URLs for filestore blob archive, comma-separated. Tried in order until blobs are found. + *Environment: `$BLOB_FILE_STORE_URLS`* + +- `--archiver.blobFileStoreUploadUrl ` + URL for uploading blobs to filestore (s3://, gs://, file://) + *Environment: `$BLOB_FILE_STORE_UPLOAD_URL`* + +- `--archiver.blobHealthcheckUploadIntervalMinutes ` + Interval in minutes for uploading healthcheck file to file store (default: 60 = 1 hour) + *Environment: `$BLOB_HEALTHCHECK_UPLOAD_INTERVAL_MINUTES`* + +- `--archiver.archiveApiUrl ` + The URL of the archive API + *Environment: `$BLOB_ARCHIVE_API_URL`* + +- `--archiver.archiverPollingIntervalMS ` (default: `500`) + The polling interval in ms for retrieving new L2 blocks and encrypted logs. + *Environment: `$ARCHIVER_POLLING_INTERVAL_MS`* + +- `--archiver.archiverBatchSize ` (default: `100`) + The number of L2 blocks the archiver will attempt to download at a time. + *Environment: `$ARCHIVER_BATCH_SIZE`* + +- `--archiver.maxLogs ` (default: `1000`) + The max number of logs that can be obtained in 1 "getPublicLogs" call. + *Environment: `$ARCHIVER_MAX_LOGS`* + +- `--archiver.archiverStoreMapSizeKb ` + The maximum possible size of the archiver DB in KB. Overwrites the general dataStoreMapSizeKb. + *Environment: `$ARCHIVER_STORE_MAP_SIZE_KB`* + +- `--archiver.skipValidateCheckpointAttestations ` + Skip validating checkpoint attestations (for testing purposes only) + +- `--archiver.maxAllowedEthClientDriftSeconds ` (default: `300`) + Maximum allowed drift in seconds between the Ethereum client and current time. + *Environment: `$MAX_ALLOWED_ETH_CLIENT_DRIFT_SECONDS`* + +- `--archiver.ethereumAllowNoDebugHosts ` (default: `true`) + Whether to allow starting the archiver without debug/trace method support on Ethereum hosts + *Environment: `$ETHEREUM_ALLOW_NO_DEBUG_HOSTS`* + +**SEQUENCER** + +- `--sequencer` + Starts Aztec Sequencer with options + +- `--sequencer.validatorPrivateKeys ` (default: `[Redacted]`) + List of private keys of the validators participating in attestation duties + *Environment: `$VALIDATOR_PRIVATE_KEYS`* + +- `--sequencer.validatorAddresses ` + List of addresses of the validators to use with remote signers + *Environment: `$VALIDATOR_ADDRESSES`* + +- `--sequencer.disableValidator ` + Do not run the validator + *Environment: `$VALIDATOR_DISABLED`* + +- `--sequencer.disabledValidators ` + Temporarily disable these specific validator addresses + +- `--sequencer.attestationPollingIntervalMs ` (default: `200`) + Interval between polling for new attestations + *Environment: `$VALIDATOR_ATTESTATIONS_POLLING_INTERVAL_MS`* + +- `--sequencer.validatorReexecute ` (default: `true`) + Re-execute transactions before attesting + *Environment: `$VALIDATOR_REEXECUTE`* + +- `--sequencer.alwaysReexecuteBlockProposals ` (default: `true`) + Whether to always reexecute block proposals, even for non-validator nodes (useful for monitoring network status). + +- `--sequencer.skipCheckpointProposalValidation ` + Skip checkpoint proposal validation and always attest (default: false) + +- `--sequencer.skipPushProposedBlocksToArchiver ` + Skip pushing proposed blocks to archiver (default: true) + +- `--sequencer.attestToEquivocatedProposals ` + Agree to attest to equivocated checkpoint proposals (for testing purposes only) + +- `--sequencer.validateMaxL2BlockGas ` + Maximum L2 block gas for validation. Proposals exceeding this limit are rejected. + *Environment: `$VALIDATOR_MAX_L2_BLOCK_GAS`* + +- `--sequencer.validateMaxDABlockGas ` + Maximum DA block gas for validation. Proposals exceeding this limit are rejected. + *Environment: `$VALIDATOR_MAX_DA_BLOCK_GAS`* + +- `--sequencer.validateMaxTxsPerBlock ` + Maximum transactions per block for validation. Proposals exceeding this limit are rejected. + *Environment: `$VALIDATOR_MAX_TX_PER_BLOCK`* + +- `--sequencer.validateMaxTxsPerCheckpoint ` + Maximum transactions per checkpoint for validation. Proposals exceeding this limit are rejected. + *Environment: `$VALIDATOR_MAX_TX_PER_CHECKPOINT`* + +- `--sequencer.haSigningEnabled ` + Whether HA signing / slashing protection is enabled + *Environment: `$VALIDATOR_HA_SIGNING_ENABLED`* + +- `--sequencer.nodeId ` + The unique identifier for this node + *Environment: `$VALIDATOR_HA_NODE_ID`* + +- `--sequencer.pollingIntervalMs ` (default: `100`) + The number of ms to wait between polls when a duty is being signed + *Environment: `$VALIDATOR_HA_POLLING_INTERVAL_MS`* + +- `--sequencer.signingTimeoutMs ` (default: `3000`) + The maximum time to wait for a duty being signed to complete + *Environment: `$VALIDATOR_HA_SIGNING_TIMEOUT_MS`* + +- `--sequencer.maxStuckDutiesAgeMs ` + The maximum age of a stuck duty in ms (defaults to 2x Aztec slot duration) + *Environment: `$VALIDATOR_HA_MAX_STUCK_DUTIES_AGE_MS`* + +- `--sequencer.cleanupOldDutiesAfterHours ` + Optional: clean up old duties after this many hours (disabled if not set) + *Environment: `$VALIDATOR_HA_OLD_DUTIES_MAX_AGE_H`* + +- `--sequencer.databaseUrl ` + PostgreSQL connection string for validator HA signer (format: postgresql://user:password@host:port/database) + *Environment: `$VALIDATOR_HA_DATABASE_URL`* + +- `--sequencer.poolMaxCount ` (default: `10`) + Maximum number of clients in the pool + *Environment: `$VALIDATOR_HA_POOL_MAX`* + +- `--sequencer.poolMinCount ` + Minimum number of clients in the pool + *Environment: `$VALIDATOR_HA_POOL_MIN`* + +- `--sequencer.poolIdleTimeoutMs ` (default: `10000`) + Idle timeout in milliseconds + *Environment: `$VALIDATOR_HA_POOL_IDLE_TIMEOUT_MS`* + +- `--sequencer.poolConnectionTimeoutMs ` + Connection timeout in milliseconds (0 means no timeout) + *Environment: `$VALIDATOR_HA_POOL_CONNECTION_TIMEOUT_MS`* + +- `--sequencer.sequencerPollingIntervalMS ` (default: `500`) + The number of ms to wait between polling for checking to build on the next slot. + *Environment: `$SEQ_POLLING_INTERVAL_MS`* + +- `--sequencer.maxTxsPerCheckpoint ` + The maximum number of txs across all blocks in a checkpoint. + *Environment: `$SEQ_MAX_TX_PER_CHECKPOINT`* + +- `--sequencer.minTxsPerBlock ` (default: `1`) + The minimum number of txs to include in a block. + *Environment: `$SEQ_MIN_TX_PER_BLOCK`* + +- `--sequencer.minValidTxsPerBlock ` + The minimum number of valid txs (after execution) to include in a block. If not set, falls back to minTxsPerBlock. + +- `--sequencer.publishTxsWithProposals ` + Whether to publish txs with proposals. + *Environment: `$SEQ_PUBLISH_TXS_WITH_PROPOSALS`* + +- `--sequencer.maxL2BlockGas ` + The maximum L2 block gas. + *Environment: `$SEQ_MAX_L2_BLOCK_GAS`* + +- `--sequencer.maxDABlockGas ` + The maximum DA block gas. + *Environment: `$SEQ_MAX_DA_BLOCK_GAS`* + +- `--sequencer.perBlockAllocationMultiplier ` (default: `1.2`) + Per-block gas budget multiplier for both L2 and DA gas. Budget per block is (checkpointLimit / maxBlocks) * multiplier. Values greater than one allow early blocks to use more than their even share, relying on checkpoint-level capping for later blocks. + *Environment: `$SEQ_PER_BLOCK_ALLOCATION_MULTIPLIER`* + +- `--sequencer.redistributeCheckpointBudget ` (default: `true`) + Redistribute remaining checkpoint budget evenly across remaining blocks instead of allowing a single block to consume the entire remaining budget. + *Environment: `$SEQ_REDISTRIBUTE_CHECKPOINT_BUDGET`* + +- `--sequencer.coinbase ` + Recipient of block reward. + *Environment: `$COINBASE`* + +- `--sequencer.feeRecipient ` + Address to receive fees. + *Environment: `$FEE_RECIPIENT`* + +- `--sequencer.acvmWorkingDirectory ` + The working directory to use for simulation/proving + *Environment: `$ACVM_WORKING_DIRECTORY`* + +- `--sequencer.acvmBinaryPath ` + The path to the ACVM binary + *Environment: `$ACVM_BINARY_PATH`* + +- `--sequencer.enforceTimeTable ` (default: `true`) + Whether to enforce the time table when building blocks + *Environment: `$SEQ_ENFORCE_TIME_TABLE`* + +- `--sequencer.governanceProposerPayload ` + The address of the payload for the governanceProposer + *Environment: `$GOVERNANCE_PROPOSER_PAYLOAD_ADDRESS`* + +- `--sequencer.l1PublishingTime ` + How much time (in seconds) we allow in the slot for publishing the L1 tx (defaults to 1 L1 slot). + *Environment: `$SEQ_L1_PUBLISHING_TIME_ALLOWANCE_IN_SLOT`* + +- `--sequencer.attestationPropagationTime ` (default: `2`) + How many seconds it takes for proposals and attestations to travel across the p2p layer (one-way) + *Environment: `$SEQ_ATTESTATION_PROPAGATION_TIME`* + +- `--sequencer.secondsBeforeInvalidatingBlockAsCommitteeMember ` (default: `144`) + How many seconds to wait before trying to invalidate a block from the pending chain as a committee member (zero to never invalidate). The next proposer is expected to invalidate, so the committee acts as a fallback. + *Environment: `$SEQ_SECONDS_BEFORE_INVALIDATING_BLOCK_AS_COMMITTEE_MEMBER`* + +- `--sequencer.secondsBeforeInvalidatingBlockAsNonCommitteeMember ` (default: `432`) + How many seconds to wait before trying to invalidate a block from the pending chain as a non-committee member (zero to never invalidate). The next proposer is expected to invalidate, then the committee, so other sequencers act as a fallback. + *Environment: `$SEQ_SECONDS_BEFORE_INVALIDATING_BLOCK_AS_NON_COMMITTEE_MEMBER`* + +- `--sequencer.broadcastInvalidBlockProposal ` + Broadcast invalid block proposals with corrupted state (for testing only) + +- `--sequencer.injectFakeAttestation ` + Inject a fake attestation (for testing only) + +- `--sequencer.injectHighSValueAttestation ` + Inject a malleable attestation with a high-s value (for testing only) + +- `--sequencer.injectUnrecoverableSignatureAttestation ` + Inject an attestation with an unrecoverable signature (for testing only) + +- `--sequencer.shuffleAttestationOrdering ` + Shuffle attestation ordering to create invalid ordering (for testing only) + +- `--sequencer.blockDurationMs ` + Duration per block in milliseconds when building multiple blocks per slot. If undefined (default), builds a single block per slot using the full slot duration. + *Environment: `$SEQ_BLOCK_DURATION_MS`* + +- `--sequencer.expectedBlockProposalsPerSlot ` + Expected number of block proposals per slot for P2P peer scoring. 0 (default) disables block proposal scoring. Set to a positive value to enable. + *Environment: `$SEQ_EXPECTED_BLOCK_PROPOSALS_PER_SLOT`* + +- `--sequencer.maxTxsPerBlock ` + The maximum number of txs to include in a block. + *Environment: `$SEQ_MAX_TX_PER_BLOCK`* + +- `--sequencer.buildCheckpointIfEmpty ` + Have sequencer build and publish an empty checkpoint if there are no txs + *Environment: `$SEQ_BUILD_CHECKPOINT_IF_EMPTY`* + +- `--sequencer.minBlocksForCheckpoint ` + Minimum number of blocks required for a checkpoint proposal (test only) + +- `--sequencer.skipPublishingCheckpointsPercent ` + Percent probability (0 - 100) of sequencer skipping checkpoint publishing (testing only) + *Environment: `$SEQ_SKIP_CHECKPOINT_PUBLISH_PERCENT`* + +- `--sequencer.txPublicSetupAllowListExtend ` + Additional entries to extend the default setup allow list. Format: I:address:selector[:flags],C:classId:selector[:flags]. Flags: os (onlySelf), rn (rejectNullMsgSender), cl=N (calldataLength), joined with +. + *Environment: `$TX_PUBLIC_SETUP_ALLOWLIST`* + +- `--sequencer.keyStoreDirectory ` + Location of key store directory + *Environment: `$KEY_STORE_DIRECTORY`* + +- `--sequencer.sequencerPublisherPrivateKeys ` + The private keys to be used by the sequencer publisher. + *Environment: `$SEQ_PUBLISHER_PRIVATE_KEYS`* + +- `--sequencer.sequencerPublisherAddresses ` + The addresses of the publishers to use with remote signers + *Environment: `$SEQ_PUBLISHER_ADDRESSES`* + +- `--sequencer.blobAllowEmptySources ` + Whether to allow having no blob sources configured during startup + *Environment: `$BLOB_ALLOW_EMPTY_SOURCES`* + +- `--sequencer.blobFileStoreUrls ` + URLs for filestore blob archive, comma-separated. Tried in order until blobs are found. + *Environment: `$BLOB_FILE_STORE_URLS`* + +- `--sequencer.blobFileStoreUploadUrl ` + URL for uploading blobs to filestore (s3://, gs://, file://) + *Environment: `$BLOB_FILE_STORE_UPLOAD_URL`* + +- `--sequencer.blobHealthcheckUploadIntervalMinutes ` + Interval in minutes for uploading healthcheck file to file store (default: 60 = 1 hour) + *Environment: `$BLOB_HEALTHCHECK_UPLOAD_INTERVAL_MINUTES`* -**Common options:** +- `--sequencer.archiveApiUrl ` + The URL of the archive API + *Environment: `$BLOB_ARCHIVE_API_URL`* -- `--network ` - Network to run Aztec on (env: NETWORK) -- `--port ` - Port to run the Aztec Services on (default: 8080, env: AZTEC_PORT) -- `--admin-port ` - Port to run admin APIs of Aztec Services on (default: 8880, env: AZTEC_ADMIN_PORT) +- `--sequencer.sequencerPublisherAllowInvalidStates ` (default: `true`) + True to use publishers in invalid states (timed out, cancelled, etc) if no other is available + *Environment: `$SEQ_PUBLISHER_ALLOW_INVALID_STATES`* -**Module flags:** +- `--sequencer.sequencerPublisherForwarderAddress ` + Address of the forwarder contract to wrap all L1 transactions through (for testing purposes only) + *Environment: `$SEQ_PUBLISHER_FORWARDER_ADDRESS`* -- `--local-network` - Starts the Aztec Local Network: a local Ethereum dev node (Anvil) with the full Aztec protocol deployed on top -- `--node` - Starts an Aztec Node -- `--archiver` - Starts an Aztec Archiver (syncs data from L1) -- `--sequencer` - Starts an Aztec Sequencer -- `--prover-node` - Starts an Aztec Prover Node -- `--prover-broker` - Starts an Aztec proving job broker -- `--prover-agent` - Starts an Aztec Prover Agent -- `--p2p-bootstrap` - Starts an Aztec P2P bootstrap node -- `--bot` - Starts an Aztec transaction bot -- `--txe` - Starts an Aztec TXE (test execution environment) +**PROVER NODE** -Each module accepts further namespaced options (e.g. `--sequencer.coinbase`, `--local-network.testAccounts`). For the full per-module option list, see the [node operator CLI reference](/operate/operators/reference/cli-reference). +- `--prover-node` + Starts Aztec Prover Node with options + +- `--proverNode.keyStoreDirectory ` + Location of key store directory + *Environment: `$KEY_STORE_DIRECTORY`* + +- `--proverNode.acvmWorkingDirectory ` + The working directory to use for simulation/proving + *Environment: `$ACVM_WORKING_DIRECTORY`* + +- `--proverNode.acvmBinaryPath ` + The path to the ACVM binary + *Environment: `$ACVM_BINARY_PATH`* + +- `--proverNode.bbWorkingDirectory ` + The working directory to use for proving + *Environment: `$BB_WORKING_DIRECTORY`* + +- `--proverNode.bbBinaryPath ` + The path to the bb binary + *Environment: `$BB_BINARY_PATH`* + +- `--proverNode.bbSkipCleanup ` + Whether to skip cleanup of bb temporary files + *Environment: `$BB_SKIP_CLEANUP`* + +- `--proverNode.numConcurrentIVCVerifiers ` (default: `8`) + Max number of chonk verifiers to run concurrently + *Environment: `$BB_NUM_IVC_VERIFIERS`* + +- `--proverNode.bbIVCConcurrency ` (default: `1`) + Number of threads to use for IVC verification + *Environment: `$BB_IVC_CONCURRENCY`* + +- `--proverNode.nodeUrl ` + The URL to the Aztec node to take proving jobs from + *Environment: `$AZTEC_NODE_URL`* + +- `--proverNode.proverId ` + Hex value that identifies the prover. Defaults to the address used for submitting proofs if not set. + *Environment: `$PROVER_ID`* + +- `--proverNode.failedProofStore ` + Store for failed proof inputs. Google cloud storage is only supported at the moment. Set this value as gs://bucket-name/path/to/store. + *Environment: `$PROVER_FAILED_PROOF_STORE`* + +- `--proverNode.enqueueConcurrency ` (default: `50`) + Max concurrent jobs the orchestrator serializes and enqueues to the broker. + *Environment: `$PROVER_ENQUEUE_CONCURRENCY`* + +- `--proverNode.blobSinkMapSizeKb ` + The maximum possible size of the blob sink DB in KB. Overwrites the general dataStoreMapSizeKb. + *Environment: `$BLOB_SINK_MAP_SIZE_KB`* + +- `--proverNode.blobAllowEmptySources ` + Whether to allow having no blob sources configured during startup + *Environment: `$BLOB_ALLOW_EMPTY_SOURCES`* + +- `--proverNode.blobFileStoreUrls ` + URLs for filestore blob archive, comma-separated. Tried in order until blobs are found. + *Environment: `$BLOB_FILE_STORE_URLS`* + +- `--proverNode.blobFileStoreUploadUrl ` + URL for uploading blobs to filestore (s3://, gs://, file://) + *Environment: `$BLOB_FILE_STORE_UPLOAD_URL`* + +- `--proverNode.blobHealthcheckUploadIntervalMinutes ` + Interval in minutes for uploading healthcheck file to file store (default: 60 = 1 hour) + *Environment: `$BLOB_HEALTHCHECK_UPLOAD_INTERVAL_MINUTES`* + +- `--proverNode.archiveApiUrl ` + The URL of the archive API + *Environment: `$BLOB_ARCHIVE_API_URL`* + +- `--proverNode.proverPublisherAllowInvalidStates ` (default: `true`) + True to use publishers in invalid states (timed out, cancelled, etc) if no other is available + *Environment: `$PROVER_PUBLISHER_ALLOW_INVALID_STATES`* + +- `--proverNode.proverPublisherForwarderAddress ` + Address of the forwarder contract to wrap all L1 transactions through (for testing purposes only) + *Environment: `$PROVER_PUBLISHER_FORWARDER_ADDRESS`* + +- `--proverNode.proverPublisherPrivateKeys ` + The private keys to be used by the prover publisher. + *Environment: `$PROVER_PUBLISHER_PRIVATE_KEYS`* + +- `--proverNode.proverPublisherAddresses ` + The addresses of the publishers to use with remote signers + *Environment: `$PROVER_PUBLISHER_ADDRESSES`* + +- `--proverNode.proverNodeMaxPendingJobs ` (default: `10`) + The maximum number of pending jobs for the prover node + *Environment: `$PROVER_NODE_MAX_PENDING_JOBS`* + +- `--proverNode.proverNodePollingIntervalMs ` (default: `1000`) + The interval in milliseconds to poll for new jobs + *Environment: `$PROVER_NODE_POLLING_INTERVAL_MS`* + +- `--proverNode.proverNodeMaxParallelBlocksPerEpoch ` + The Maximum number of blocks to process in parallel while proving an epoch + *Environment: `$PROVER_NODE_MAX_PARALLEL_BLOCKS_PER_EPOCH`* + +- `--proverNode.proverNodeFailedEpochStore ` + File store where to upload node state when an epoch fails to be proven + *Environment: `$PROVER_NODE_FAILED_EPOCH_STORE`* + +- `--proverNode.proverNodeEpochProvingDelayMs ` + Optional delay in milliseconds to wait before proving a new epoch + +- `--proverNode.txGatheringIntervalMs ` (default: `1000`) + How often to check that tx data is available + *Environment: `$PROVER_NODE_TX_GATHERING_INTERVAL_MS`* + +- `--proverNode.txGatheringBatchSize ` (default: `10`) + How many transactions to gather from a node in a single request + *Environment: `$PROVER_NODE_TX_GATHERING_BATCH_SIZE`* + +- `--proverNode.txGatheringMaxParallelRequestsPerNode ` (default: `100`) + How many tx requests to make in parallel to each node + *Environment: `$PROVER_NODE_TX_GATHERING_MAX_PARALLEL_REQUESTS_PER_NODE`* + +- `--proverNode.txGatheringTimeoutMs ` (default: `120000`) + How long to wait for tx data to be available before giving up + *Environment: `$PROVER_NODE_TX_GATHERING_TIMEOUT_MS`* + +- `--proverNode.proverNodeDisableProofPublish ` + Whether the prover node skips publishing proofs to L1 + *Environment: `$PROVER_NODE_DISABLE_PROOF_PUBLISH`* + +- `--proverNode.web3SignerUrl ` + URL of the Web3Signer instance + *Environment: `$WEB3_SIGNER_URL`* + +**PROVER BROKER** + +- `--prover-broker` + Starts Aztec proving job broker + +- `--proverBroker.proverBrokerJobTimeoutMs ` (default: `30000`) + Jobs are retried if not kept alive for this long + *Environment: `$PROVER_BROKER_JOB_TIMEOUT_MS`* + +- `--proverBroker.proverBrokerPollIntervalMs ` (default: `1000`) + The interval to check job health status + *Environment: `$PROVER_BROKER_POLL_INTERVAL_MS`* + +- `--proverBroker.proverBrokerJobMaxRetries ` (default: `3`) + If starting a prover broker locally, the max number of retries per proving job + *Environment: `$PROVER_BROKER_JOB_MAX_RETRIES`* + +- `--proverBroker.proverBrokerBatchSize ` (default: `100`) + The prover broker writes jobs to disk in batches + *Environment: `$PROVER_BROKER_BATCH_SIZE`* + +- `--proverBroker.proverBrokerBatchIntervalMs ` (default: `50`) + How often to flush batches to disk + *Environment: `$PROVER_BROKER_BATCH_INTERVAL_MS`* + +- `--proverBroker.proverBrokerMaxEpochsToKeepResultsFor ` (default: `1`) + The maximum number of epochs to keep results for + *Environment: `$PROVER_BROKER_MAX_EPOCHS_TO_KEEP_RESULTS_FOR`* + +- `--proverBroker.proverBrokerStoreMapSizeKb ` + The size of the prover broker's database. Will override the dataStoreMapSizeKb if set. + *Environment: `$PROVER_BROKER_STORE_MAP_SIZE_KB`* + +- `--proverBroker.proverBrokerDebugReplayEnabled ` + Enable debug replay mode for replaying proving jobs from stored inputs + *Environment: `$PROVER_BROKER_DEBUG_REPLAY_ENABLED`* + +**PROVER AGENT** + +- `--prover-agent` + Starts Aztec Prover Agent with options + +- `--proverAgent.proverAgentCount ` (default: `1`) + Whether this prover has a local prover agent + *Environment: `$PROVER_AGENT_COUNT`* + +- `--proverAgent.proverAgentPollIntervalMs ` (default: `1000`) + The interval agents poll for jobs at + *Environment: `$PROVER_AGENT_POLL_INTERVAL_MS`* + +- `--proverAgent.proverAgentProofTypes ` + The types of proofs the prover agent can generate + *Environment: `$PROVER_AGENT_PROOF_TYPES`* + +- `--proverAgent.proverBrokerUrl ` + The URL where this agent takes jobs from + *Environment: `$PROVER_BROKER_HOST`* + +- `--proverAgent.realProofs ` (default: `true`) + Whether to construct real proofs + *Environment: `$PROVER_REAL_PROOFS`* + +- `--proverAgent.proverTestDelayType ` (default: `fixed`) + The type of artificial delay to introduce + *Environment: `$PROVER_TEST_DELAY_TYPE`* + +- `--proverAgent.proverTestDelayMs ` + Artificial delay to introduce to all operations to the test prover. + *Environment: `$PROVER_TEST_DELAY_MS`* + +- `--proverAgent.proverTestDelayFactor ` (default: `1`) + If using realistic delays, what percentage of realistic times to apply. + *Environment: `$PROVER_TEST_DELAY_FACTOR`* + +- `--proverAgent.proverTestVerificationDelayMs ` (default: `10`) + The delay (ms) to inject during fake proof verification + *Environment: `$PROVER_TEST_VERIFICATION_DELAY_MS`* + +- `--proverAgent.cancelJobsOnStop ` + Whether to abort pending proving jobs when the orchestrator is cancelled. When false (default), jobs remain in the broker queue and can be reused on restart/reorg. + *Environment: `$PROVER_CANCEL_JOBS_ON_STOP`* + +- `--proverAgent.proofStore ` + Optional proof input store for the prover + *Environment: `$PROVER_PROOF_STORE`* + +- `--p2p-enabled [value]` + Enable P2P subsystem + *Environment: `$P2P_ENABLED`* + +- `--p2p.validateMaxTxsPerBlock ` + Maximum transactions per block for validation. Overrides maxTxsPerBlock for gossip validation when set. + *Environment: `$VALIDATOR_MAX_TX_PER_BLOCK`* + +- `--p2p.validateMaxTxsPerCheckpoint ` + Maximum transactions per checkpoint for validation. Used as fallback for maxTxsPerBlock when that is not set. + *Environment: `$VALIDATOR_MAX_TX_PER_CHECKPOINT`* + +- `--p2p.validateMaxL2BlockGas ` + Maximum L2 gas per block for validation. When set, txs exceeding this limit are rejected. + *Environment: `$VALIDATOR_MAX_L2_BLOCK_GAS`* + +- `--p2p.validateMaxDABlockGas ` + Maximum DA gas per block for validation. When set, txs exceeding this limit are rejected. + *Environment: `$VALIDATOR_MAX_DA_BLOCK_GAS`* + +- `--p2p.p2pDiscoveryDisabled ` + A flag dictating whether the P2P discovery system should be disabled. + *Environment: `$P2P_DISCOVERY_DISABLED`* + +- `--p2p.blockCheckIntervalMS ` (default: `100`) + The frequency in which to check for new L2 blocks. + *Environment: `$P2P_BLOCK_CHECK_INTERVAL_MS`* + +- `--p2p.slotCheckIntervalMS ` (default: `1000`) + The frequency in which to check for new L2 slots. + *Environment: `$P2P_SLOT_CHECK_INTERVAL_MS`* + +- `--p2p.debugDisableColocationPenalty ` + DEBUG: Disable colocation penalty - NEVER set to true in production + *Environment: `$DEBUG_P2P_DISABLE_COLOCATION_PENALTY`* + +- `--p2p.peerCheckIntervalMS ` (default: `30000`) + The frequency in which to check for new peers. + *Environment: `$P2P_PEER_CHECK_INTERVAL_MS`* + +- `--p2p.l2QueueSize ` (default: `1000`) + Size of queue of L2 blocks to store. + *Environment: `$P2P_L2_QUEUE_SIZE`* + +- `--p2p.listenAddress ` (default: `0.0.0.0`) + The listen address. ipv4 address. + *Environment: `$P2P_LISTEN_ADDR`* + +- `--p2p.p2pPort ` (default: `40400`) + The port for the P2P service. Defaults to 40400 + *Environment: `$P2P_PORT`* + +- `--p2p.p2pBroadcastPort ` + The port to broadcast the P2P service on (included in the node's ENR). Defaults to P2P_PORT. + *Environment: `$P2P_BROADCAST_PORT`* + +- `--p2p.p2pIp ` + The IP address for the P2P service. ipv4 address. + *Environment: `$P2P_IP`* + +- `--p2p.peerIdPrivateKey ` + An optional peer id private key. If blank, will generate a random key. + *Environment: `$PEER_ID_PRIVATE_KEY`* + +- `--p2p.peerIdPrivateKeyPath ` + An optional path to store generated peer id private keys. If blank, will default to storing any generated keys in the root of the data directory. + *Environment: `$PEER_ID_PRIVATE_KEY_PATH`* + +- `--p2p.bootstrapNodes ` + A list of bootstrap peer ENRs to connect to. Separated by commas. + *Environment: `$BOOTSTRAP_NODES`* + +- `--p2p.bootstrapNodeEnrVersionCheck ` + Whether to check the version of the bootstrap node ENR. + *Environment: `$P2P_BOOTSTRAP_NODE_ENR_VERSION_CHECK`* + +- `--p2p.bootstrapNodesAsFullPeers ` + Whether to consider our configured bootnodes as full peers + *Environment: `$P2P_BOOTSTRAP_NODES_AS_FULL_PEERS`* + +- `--p2p.maxPeerCount ` (default: `100`) + The maximum number of peers to connect to. + *Environment: `$P2P_MAX_PEERS`* + +- `--p2p.queryForIp ` + If announceUdpAddress or announceTcpAddress are not provided, query for the IP address of the machine. Default is false. + *Environment: `$P2P_QUERY_FOR_IP`* + +- `--p2p.gossipsubInterval ` (default: `700`) + The interval of the gossipsub heartbeat to perform maintenance tasks. + *Environment: `$P2P_GOSSIPSUB_INTERVAL_MS`* + +- `--p2p.gossipsubD ` (default: `8`) + The D parameter for the gossipsub protocol. + *Environment: `$P2P_GOSSIPSUB_D`* + +- `--p2p.gossipsubDlo ` (default: `4`) + The Dlo parameter for the gossipsub protocol. + *Environment: `$P2P_GOSSIPSUB_DLO`* + +- `--p2p.gossipsubDhi ` (default: `12`) + The Dhi parameter for the gossipsub protocol. + *Environment: `$P2P_GOSSIPSUB_DHI`* + +- `--p2p.gossipsubDLazy ` (default: `8`) + The Dlazy parameter for the gossipsub protocol. + *Environment: `$P2P_GOSSIPSUB_DLAZY`* + +- `--p2p.gossipsubFloodPublish ` + Whether to flood publish messages. - For testing purposes only + *Environment: `$P2P_GOSSIPSUB_FLOOD_PUBLISH`* + +- `--p2p.gossipsubMcacheLength ` (default: `6`) + The number of gossipsub interval message cache windows to keep. + *Environment: `$P2P_GOSSIPSUB_MCACHE_LENGTH`* + +- `--p2p.gossipsubMcacheGossip ` (default: `3`) + How many message cache windows to include when gossiping with other peers. + *Environment: `$P2P_GOSSIPSUB_MCACHE_GOSSIP`* + +- `--p2p.gossipsubSeenTTL ` (default: `1200000`) + How long to keep message IDs in the seen cache. + *Environment: `$P2P_GOSSIPSUB_SEEN_TTL`* + +- `--p2p.gossipsubTxTopicWeight ` (default: `1`) + The weight of the tx topic for the gossipsub protocol. + *Environment: `$P2P_GOSSIPSUB_TX_TOPIC_WEIGHT`* + +- `--p2p.gossipsubTxInvalidMessageDeliveriesWeight ` (default: `-20`) + The weight of the tx invalid message deliveries for the gossipsub protocol. + *Environment: `$P2P_GOSSIPSUB_TX_INVALID_MESSAGE_DELIVERIES_WEIGHT`* + +- `--p2p.gossipsubTxInvalidMessageDeliveriesDecay ` (default: `0.5`) + Determines how quickly the penalty for invalid message deliveries decays over time. Between 0 and 1. + *Environment: `$P2P_GOSSIPSUB_TX_INVALID_MESSAGE_DELIVERIES_DECAY`* + +- `--p2p.peerPenaltyValues ` (default: `2,10,50`) + The values for the peer scoring system. Passed as a comma separated list of values in order: low, mid, high tolerance errors. + *Environment: `$P2P_PEER_PENALTY_VALUES`* + +- `--p2p.doubleSpendSeverePeerPenaltyWindow ` (default: `30`) + The "age" (in L2 blocks) of a tx after which we heavily penalize a peer for sending it. + *Environment: `$P2P_DOUBLE_SPEND_SEVERE_PEER_PENALTY_WINDOW`* + +- `--p2p.blockRequestBatchSize ` (default: `20`) + The number of blocks to fetch in a single batch. + *Environment: `$P2P_BLOCK_REQUEST_BATCH_SIZE`* + +- `--p2p.archivedTxLimit ` + The number of transactions that will be archived. If the limit is set to 0 then archiving will be disabled. + *Environment: `$P2P_ARCHIVED_TX_LIMIT`* + +- `--p2p.trustedPeers ` + A list of trusted peer ENRs that will always be persisted. Separated by commas. + *Environment: `$P2P_TRUSTED_PEERS`* + +- `--p2p.privatePeers ` + A list of private peer ENRs that will always be persisted and not be used for discovery. Separated by commas. + *Environment: `$P2P_PRIVATE_PEERS`* + +- `--p2p.preferredPeers ` + A list of preferred peer ENRs that will always be persisted and not be used for discovery. Separated by commas. + *Environment: `$P2P_PREFERRED_PEERS`* + +- `--p2p.p2pStoreMapSizeKb ` + The maximum possible size of the P2P DB in KB. Overwrites the general dataStoreMapSizeKb. + *Environment: `$P2P_STORE_MAP_SIZE_KB`* + +- `--p2p.txPublicSetupAllowListExtend ` + Additional entries to extend the default setup allow list. Format: I:address:selector[:flags],C:classId:selector[:flags]. Flags: os (onlySelf), rn (rejectNullMsgSender), cl=N (calldataLength), joined with +. + *Environment: `$TX_PUBLIC_SETUP_ALLOWLIST`* + +- `--p2p.maxPendingTxCount ` (default: `1000`) + The maximum number of pending txs before evicting lower priority txs. + *Environment: `$P2P_MAX_PENDING_TX_COUNT`* + +- `--p2p.seenMessageCacheSize ` (default: `100000`) + The number of messages to keep in the seen message cache + *Environment: `$P2P_SEEN_MSG_CACHE_SIZE`* + +- `--p2p.p2pDisableStatusHandshake ` + True to disable the status handshake on peer connected. + *Environment: `$P2P_DISABLE_STATUS_HANDSHAKE`* + +- `--p2p.p2pAllowOnlyValidators ` + True to only permit validators to connect. + *Environment: `$P2P_ALLOW_ONLY_VALIDATORS`* + +- `--p2p.p2pMaxFailedAuthAttemptsAllowed ` (default: `3`) + Number of auth attempts to allow before peer is banned. Number is inclusive + *Environment: `$P2P_MAX_AUTH_FAILED_ATTEMPTS_ALLOWED`* + +- `--p2p.dropTransactions ` + True to simulate discarding transactions. - For testing purposes only + *Environment: `$P2P_DROP_TX`* + +- `--p2p.dropTransactionsProbability ` + The probability that a transaction is discarded (0 - 1). - For testing purposes only + *Environment: `$P2P_DROP_TX_CHANCE`* + +- `--p2p.disableTransactions ` + Whether transactions are disabled for this node. This means transactions will be rejected at the RPC and P2P layers. + *Environment: `$TRANSACTIONS_DISABLED`* + +- `--p2p.txPoolDeleteTxsAfterReorg ` + Whether to delete transactions from the pool after a reorg instead of moving them back to pending. + *Environment: `$P2P_TX_POOL_DELETE_TXS_AFTER_REORG`* + +- `--p2p.debugP2PInstrumentMessages ` + Alters the format of p2p messages to include things like broadcast timestamp FOR TESTING ONLY + *Environment: `$DEBUG_P2P_INSTRUMENT_MESSAGES`* + +- `--p2p.broadcastEquivocatedProposals ` + Broadcast block proposals even when a conflicting proposal for the same slot already exists in the pool (for testing purposes only). + +- `--p2p.minTxPoolAgeMs ` (default: `2000`) + Minimum age (ms) a transaction must have been in the pool before it is eligible for block building. + *Environment: `$P2P_MIN_TX_POOL_AGE_MS`* + +- `--p2p.priceBumpPercentage ` (default: `10`) + Minimum percentage fee increase required to replace an existing tx via RPC. Even at 0%, replacement still requires paying at least 1 unit more. + *Environment: `$P2P_RPC_PRICE_BUMP_PERCENTAGE`* + +- `--p2p.blockDurationMs ` + Duration per block in milliseconds when building multiple blocks per slot. If undefined (default), builds a single block per slot using the full slot duration. + *Environment: `$SEQ_BLOCK_DURATION_MS`* + +- `--p2p.expectedBlockProposalsPerSlot ` + Expected number of block proposals per slot for P2P peer scoring. 0 (default) disables block proposal scoring. Set to a positive value to enable. + *Environment: `$SEQ_EXPECTED_BLOCK_PROPOSALS_PER_SLOT`* + +- `--p2p.maxTxsPerBlock ` + The maximum number of txs to include in a block. + *Environment: `$SEQ_MAX_TX_PER_BLOCK`* + +- `--p2p.overallRequestTimeoutMs ` (default: `10000`) + The overall timeout for a request response operation. + *Environment: `$P2P_REQRESP_OVERALL_REQUEST_TIMEOUT_MS`* + +- `--p2p.individualRequestTimeoutMs ` (default: `10000`) + The timeout for an individual request response peer interaction. + *Environment: `$P2P_REQRESP_INDIVIDUAL_REQUEST_TIMEOUT_MS`* + +- `--p2p.dialTimeoutMs ` (default: `5000`) + How long to wait for the dial protocol to establish a connection + *Environment: `$P2P_REQRESP_DIAL_TIMEOUT_MS`* + +- `--p2p.p2pOptimisticNegotiation ` + Whether to use optimistic protocol negotiation when dialing to another peer (opposite of `negotiateFully`). + *Environment: `$P2P_REQRESP_OPTIMISTIC_NEGOTIATION`* + +- `--p2p.batchTxRequesterSmartParallelWorkerCount ` (default: `10`) + Max concurrent requests to smart peers for batch tx requester. + *Environment: `$P2P_BATCH_TX_REQUESTER_SMART_PARALLEL_WORKER_COUNT`* + +- `--p2p.batchTxRequesterDumbParallelWorkerCount ` (default: `10`) + Max concurrent requests to dumb peers for batch tx requester. + *Environment: `$P2P_BATCH_TX_REQUESTER_DUMB_PARALLEL_WORKER_COUNT`* + +- `--p2p.batchTxRequesterTxBatchSize ` (default: `8`) + Max transactions per request / chunk size for batch tx requester. + *Environment: `$P2P_BATCH_TX_REQUESTER_TX_BATCH_SIZE`* + +- `--p2p.batchTxRequesterBadPeerThreshold ` (default: `2`) + Failures before a peer is considered bad (see > threshold logic). + *Environment: `$P2P_BATCH_TX_REQUESTER_BAD_PEER_THRESHOLD`* + +- `--p2p.txCollectionFastNodesTimeoutBeforeReqRespMs ` (default: `200`) + How long to wait before starting reqresp for fast collection + *Environment: `$TX_COLLECTION_FAST_NODES_TIMEOUT_BEFORE_REQ_RESP_MS`* + +- `--p2p.txCollectionSlowNodesIntervalMs ` (default: `12000`) + How often to collect from configured nodes in the slow collection loop + *Environment: `$TX_COLLECTION_SLOW_NODES_INTERVAL_MS`* + +- `--p2p.txCollectionSlowReqRespIntervalMs ` (default: `12000`) + How often to collect from peers via reqresp in the slow collection loop + *Environment: `$TX_COLLECTION_SLOW_REQ_RESP_INTERVAL_MS`* + +- `--p2p.txCollectionSlowReqRespTimeoutMs ` (default: `20000`) + How long to wait for a reqresp response during slow collection + *Environment: `$TX_COLLECTION_SLOW_REQ_RESP_TIMEOUT_MS`* + +- `--p2p.txCollectionReconcileIntervalMs ` (default: `60000`) + How often to reconcile found txs from the tx pool + *Environment: `$TX_COLLECTION_RECONCILE_INTERVAL_MS`* + +- `--p2p.txCollectionDisableSlowDuringFastRequests ` (default: `true`) + Whether to disable the slow collection loop if we are dealing with any immediate requests + *Environment: `$TX_COLLECTION_DISABLE_SLOW_DURING_FAST_REQUESTS`* + +- `--p2p.txCollectionFastNodeIntervalMs ` (default: `500`) + How many ms to wait between retried request to a node via RPC during fast collection + *Environment: `$TX_COLLECTION_FAST_NODE_INTERVAL_MS`* + +- `--p2p.txCollectionNodeRpcUrls ` + A comma-separated list of Aztec node RPC URLs to use for tx collection + *Environment: `$TX_COLLECTION_NODE_RPC_URLS`* + +- `--p2p.txCollectionFastMaxParallelRequestsPerNode ` (default: `4`) + Maximum number of parallel requests to make to a node during fast collection + *Environment: `$TX_COLLECTION_FAST_MAX_PARALLEL_REQUESTS_PER_NODE`* + +- `--p2p.txCollectionNodeRpcMaxBatchSize ` (default: `50`) + Maximum number of transactions to request from a node in a single batch + *Environment: `$TX_COLLECTION_NODE_RPC_MAX_BATCH_SIZE`* + +- `--p2p.txCollectionMissingTxsCollectorType ` (default: `new`) + Which collector implementation to use for missing txs collection (new or old) + *Environment: `$TX_COLLECTION_MISSING_TXS_COLLECTOR_TYPE`* + +- `--p2p.txCollectionFileStoreUrls ` + A comma-separated list of file store URLs (s3://, gs://, file://, http://) for tx collection + *Environment: `$TX_COLLECTION_FILE_STORE_URLS`* + +- `--p2p.txCollectionFileStoreSlowDelayMs ` (default: `24000`) + Delay before file store collection starts after slow collection + *Environment: `$TX_COLLECTION_FILE_STORE_SLOW_DELAY_MS`* + +- `--p2p.txCollectionFileStoreFastDelayMs ` (default: `2000`) + Delay before file store collection starts after fast collection + *Environment: `$TX_COLLECTION_FILE_STORE_FAST_DELAY_MS`* + +- `--p2p.txCollectionFileStoreFastWorkerCount ` (default: `5`) + Number of concurrent workers for fast file store collection + *Environment: `$TX_COLLECTION_FILE_STORE_FAST_WORKER_COUNT`* + +- `--p2p.txCollectionFileStoreSlowWorkerCount ` (default: `2`) + Number of concurrent workers for slow file store collection + *Environment: `$TX_COLLECTION_FILE_STORE_SLOW_WORKER_COUNT`* + +- `--p2p.txCollectionFileStoreFastBackoffBaseMs ` (default: `1000`) + Base backoff time in ms for fast file store collection retries + *Environment: `$TX_COLLECTION_FILE_STORE_FAST_BACKOFF_BASE_MS`* + +- `--p2p.txCollectionFileStoreSlowBackoffBaseMs ` (default: `5000`) + Base backoff time in ms for slow file store collection retries + *Environment: `$TX_COLLECTION_FILE_STORE_SLOW_BACKOFF_BASE_MS`* + +- `--p2p.txCollectionFileStoreFastBackoffMaxMs ` (default: `5000`) + Max backoff time in ms for fast file store collection retries + *Environment: `$TX_COLLECTION_FILE_STORE_FAST_BACKOFF_MAX_MS`* + +- `--p2p.txCollectionFileStoreSlowBackoffMaxMs ` (default: `30000`) + Max backoff time in ms for slow file store collection retries + *Environment: `$TX_COLLECTION_FILE_STORE_SLOW_BACKOFF_MAX_MS`* + +- `--p2p.txFileStoreUrl ` + URL for uploading txs to file storage (s3://, gs://, file://) + *Environment: `$TX_FILE_STORE_URL`* + +- `--p2p.txFileStoreUploadConcurrency ` (default: `10`) + Maximum number of concurrent tx uploads + *Environment: `$TX_FILE_STORE_UPLOAD_CONCURRENCY`* + +- `--p2p.txFileStoreMaxQueueSize ` (default: `1000`) + Maximum queue size for pending uploads (oldest dropped when exceeded) + *Environment: `$TX_FILE_STORE_MAX_QUEUE_SIZE`* + +- `--p2p.txFileStoreEnabled ` + Enable uploading transactions to file storage + *Environment: `$TX_FILE_STORE_ENABLED`* + +- `--p2p-bootstrap` + Starts Aztec P2P Bootstrap with options + +- `--p2pBootstrap.p2pBroadcastPort ` + The port to broadcast the P2P service on (included in the node's ENR). Defaults to P2P_PORT. + *Environment: `$P2P_BROADCAST_PORT`* + +- `--p2pBootstrap.peerIdPrivateKeyPath ` + An optional path to store generated peer id private keys. If blank, will default to storing any generated keys in the root of the data directory. + *Environment: `$PEER_ID_PRIVATE_KEY_PATH`* + +- `--p2pBootstrap.queryForIp ` + If announceUdpAddress or announceTcpAddress are not provided, query for the IP address of the machine. Defau + *Environment: `$P2P_QUERY_FOR_IP`* ### aztec test -*No help information available for this command.* +*Help for this command is currently unavailable.* ### aztec trigger-seed-snapshot @@ -941,12 +1952,12 @@ aztec trigger-seed-snapshot [options] **Options:** -- `-pk --private-key ` - The private key to use for deployment -- `-m --mnemonic ` - The mnemonic to use in deployment (default: +- `-pk, --private-key ` - The private key to use for deployment +- `-m, --mnemonic ` - The mnemonic to use in deployment (default: "test test test test test test test test test test test junk") - `--rollup
` - ethereum address of the rollup contract -- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain identifiers -- `-c --l1-chain-id ` - Chain ID of the ethereum host (default: 31337, -- `-h --help` - display help for command +- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain identifiers localhost and testnet can be used (comma separated) (default: ["http://localhost:8545"], env: ETHEREUM_HOSTS) +- `-c, --l1-chain-id ` - Chain ID of the ethereum host (default: 31337, env: L1_CHAIN_ID) +- `-h, --help` - display help for command ### aztec update @@ -959,9 +1970,9 @@ aztec update [options] [projectPath] **Options:** -- `--contract` - [paths...] Paths to contracts to update dependencies (default: -- `--aztec-version ` - The version to update Aztec packages to. Defaults -- `-h --help` - display help for command +- `--contract [paths...]` - Paths to contracts to update dependencies (default: []) +- `--aztec-version ` - The version to update Aztec packages to. Defaults to latest (default: "latest") +- `-h, --help` - display help for command ### aztec validator-keys|valKeys @@ -978,14 +1989,14 @@ aztec vote-on-governance-proposal [options] **Options:** -- `-p --proposal-id ` - The ID of the proposal -- `-a --vote-amount ` - The amount of tokens to vote -- `--in-favor ` - Whether to vote in favor of the proposal. +- `-p, --proposal-id ` - The ID of the proposal +- `-a, --vote-amount ` - The amount of tokens to vote +- `--in-favor ` - Whether to vote in favor of the proposal. Use "yea" for true, any other value for false. - `--wait ` - Whether to wait until the proposal is active -- `-r --registry-address ` - The address of the registry contract -- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain -- `-c --l1-chain-id ` - Chain ID of the ethereum host (default: -- `-pk --private-key ` - The private key to use to vote -- `-m --mnemonic ` - The mnemonic to use to vote (default: "test -- `-i --mnemonic-index ` - The index of the mnemonic to use to vote -- `-h --help` - display help for command +- `-r, --registry-address ` - The address of the registry contract +- `--l1-rpc-urls ` - List of Ethereum host URLs. Chain identifiers localhost and testnet can be used (comma separated) (default: ["http://localhost:8545"], env: ETHEREUM_HOSTS) +- `-c, --l1-chain-id ` - Chain ID of the ethereum host (default: 31337, env: L1_CHAIN_ID) +- `-pk, --private-key ` - The private key to use to vote +- `-m, --mnemonic ` - The mnemonic to use to vote (default: "test test test test test test test test test test test junk") +- `-i, --mnemonic-index ` - The index of the mnemonic to use to vote (default: 0) +- `-h, --help` - display help for command