# round number should is an integer
+```
diff --git a/docs/docs/run_node/index.md b/docs/docs/the_aztec_network/index.md
similarity index 68%
rename from docs/docs/run_node/index.md
rename to docs/docs/the_aztec_network/index.md
index 29fdc991272d..5b9001d301b7 100644
--- a/docs/docs/run_node/index.md
+++ b/docs/docs/the_aztec_network/index.md
@@ -1,7 +1,7 @@
---
id: index
sidebar_position: 0
-title: Run a node
+title: The Aztec Network
---
In this section, you can explore how governance works on Aztec, the types of nodes that can be run, and how to contribute to decentralization on the Aztec Testnet.
@@ -9,7 +9,7 @@ In this section, you can explore how governance works on Aztec, the types of nod
## Learn about governance on Aztec
-
+
Governance
@@ -19,10 +19,10 @@ In this section, you can explore how governance works on Aztec, the types of nod
-## Decentralization Components
+
## Run a node
-
+
Run a validator node (sequencer)
-
+
Run a prover node
diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js
index cd1e84c10bcc..072b10b9927b 100644
--- a/docs/docusaurus.config.js
+++ b/docs/docusaurus.config.js
@@ -62,10 +62,8 @@ const config = {
);
},
routeBasePath: "/",
- disableVersioning: process.env.ENV === "dev",
- include: process.env.SHOW_PROTOCOL_SPECS
- ? ["**/*.{md,mdx}"]
- : ["**/*.{md,mdx}", "!protocol-specs/**"],
+ include: ["**/*.{md,mdx}"],
+ exclude: !process.env.PROTOCOL_SPECS ? ['protocol-specs/**'] : [],
remarkPlugins: [math],
rehypePlugins: [
@@ -301,16 +299,6 @@ const config = {
label: "Roadmap",
className: "no-external-icon",
},
- ...(process.env.SHOW_PROTOCOL_SPECS
- ? [
- {
- type: "docSidebar",
- sidebarId: "protocolSpecSidebar",
- label: "Protocol Specification",
- className: "no-external-icon",
- },
- ]
- : []),
{
to: "https://noir-lang.org/docs",
label: "Noir docs",
@@ -442,4 +430,18 @@ const config = {
}),
};
+if (process.env.PROTOCOL_SPECS) {
+ //@ts-ignore
+ const index = config.themeConfig.navbar.items.findIndex(
+ (e) => e.type == "dropdown"
+ );
+
+ //@ts-ignore
+ config.themeConfig.navbar.items.splice(index, 0, {
+ type: "docSidebar",
+ sidebarId: "protocolSpecSidebar",
+ label: "Protocol Specification",
+ });
+}
+
module.exports = config;
diff --git a/docs/package.json b/docs/package.json
index 5e7997514719..209476f01ea7 100644
--- a/docs/package.json
+++ b/docs/package.json
@@ -4,9 +4,10 @@
"private": true,
"scripts": {
"docs": "yarn preprocess && yarn typedoc && docusaurus start --host ${HOST:-localhost}",
- "dev": "HOST=0.0.0.0 ENV=dev SHOW_PROTOCOL_SPECS=true yarn docs",
- "dev:local": "ENV=dev SHOW_PROTOCOL_SPECS=true yarn docs",
+ "dev": "PROTOCOL_SPECS=true HOST=0.0.0.0 ENV=dev yarn docs",
+ "dev:local": "PROTOCOL_SPECS=true ENV=dev yarn docs",
"build": "yarn clean && yarn preprocess && yarn typedoc && yarn preprocess:move && docusaurus build",
+ "build:with-specs": "yarn clean &&PROTOCOL_SPECS=true yarn preprocess && yarn typedoc && yarn preprocess:move && PROTOCOL_SPECS=true docusaurus build",
"swizzle": "docusaurus swizzle",
"clean": "./scripts/clean.sh",
"serve": "docusaurus serve",
diff --git a/docs/sidebars.js b/docs/sidebars.js
index bbd54363c5d5..81d2b3d45045 100644
--- a/docs/sidebars.js
+++ b/docs/sidebars.js
@@ -3,8 +3,7 @@
const fs = require("fs");
const path = require("path");
-/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */
-export default {
+const sidebar = {
sidebar: [
{
type: "doc",
@@ -140,7 +139,7 @@ export default {
nodesSidebar: [
{
type: "doc",
- id: "run_node/index",
+ id: "the_aztec_network/index",
},
{
type: "html",
@@ -149,7 +148,7 @@ export default {
},
{
type: "autogenerated",
- dirName: "run_node/concepts",
+ dirName: "the_aztec_network/concepts",
},
{
type: "html",
@@ -162,250 +161,252 @@ export default {
},
{
type: "autogenerated",
- dirName: "run_node/guides",
+ dirName: "the_aztec_network/guides",
},
],
- ...(process.env.SHOW_PROTOCOL_SPECS
- ? {
- protocolSpecSidebar: [
- "protocol-specs/intro",
- {
- label: "Cryptography",
- type: "category",
- link: { type: "doc", id: "protocol-specs/cryptography/index" },
- items: [
- {
- label: "Proving System",
- type: "category",
- items: [
- "protocol-specs/cryptography/proving-system/performance-targets",
- "protocol-specs/cryptography/proving-system/overview",
- "protocol-specs/cryptography/proving-system/data-bus",
- ],
- },
- {
- label: "Hashing",
- type: "category",
- items: [
- "protocol-specs/cryptography/hashing/hashing",
- "protocol-specs/cryptography/hashing/poseidon2",
- "protocol-specs/cryptography/hashing/pedersen",
- ],
- },
- "protocol-specs/cryptography/merkle-trees",
- ],
- },
- {
- label: "Addresses & Keys",
- type: "category",
- link: {
- type: "doc",
- id: "protocol-specs/addresses-and-keys/index",
- },
- items: [
- "protocol-specs/addresses-and-keys/address",
- "protocol-specs/addresses-and-keys/keys-requirements",
- "protocol-specs/addresses-and-keys/keys",
- {
- label: "Example Usage of Keys",
- type: "category",
- items: [
- "protocol-specs/addresses-and-keys/example-usage/nullifier",
- "protocol-specs/addresses-and-keys/example-usage/diversified-and-stealth-keys",
- "protocol-specs/addresses-and-keys/example-usage/tag-sequence-derivation",
- "protocol-specs/addresses-and-keys/example-usage/encrypt-and-tag",
- ],
- },
- "protocol-specs/addresses-and-keys/precompiles",
- "protocol-specs/addresses-and-keys/diversified-and-stealth",
- ],
- },
- {
- label: "State",
- type: "category",
- link: { type: "doc", id: "protocol-specs/state/index" },
- items: [
- "protocol-specs/state/tree-implementations",
- "protocol-specs/state/archive",
- "protocol-specs/state/note-hash-tree",
- "protocol-specs/state/nullifier-tree",
- "protocol-specs/state/public-data-tree",
- "protocol-specs/state/wonky-tree",
- ],
- },
- {
- label: "Transactions",
- type: "category",
- link: { type: "doc", id: "protocol-specs/transactions/index" },
- items: [
- "protocol-specs/transactions/local-execution",
- "protocol-specs/transactions/public-execution",
- "protocol-specs/transactions/tx-object",
- "protocol-specs/transactions/validity",
- ],
- },
- {
- label: "Bytecode",
- type: "category",
- link: { type: "doc", id: "protocol-specs/bytecode/index" },
- items: [],
- },
- {
- label: "Contract Deployment",
- type: "category",
- link: {
- type: "doc",
- id: "protocol-specs/contract-deployment/index",
- },
- items: [
- "protocol-specs/contract-deployment/classes",
- "protocol-specs/contract-deployment/instances",
- ],
- },
- {
- label: "Calls",
- type: "category",
- link: { type: "doc", id: "protocol-specs/calls/index" },
- items: [
- "protocol-specs/calls/sync-calls",
- "protocol-specs/calls/enqueued-calls",
- "protocol-specs/calls/batched-calls",
- "protocol-specs/calls/static-calls",
- "protocol-specs/calls/unconstrained-calls",
- "protocol-specs/calls/public-private-messaging",
- ],
- },
- {
- label: "L1 smart contracts",
- type: "category",
- link: {
- type: "doc",
- id: "protocol-specs/l1-smart-contracts/index",
- },
- items: ["protocol-specs/l1-smart-contracts/frontier"],
- },
- {
- label: "Data availability",
- type: "category",
- link: {
- type: "doc",
- id: "protocol-specs/data-publication-and-availability/index",
- },
- items: [
- "protocol-specs/data-publication-and-availability/overview",
- "protocol-specs/data-publication-and-availability/published-data",
- "protocol-specs/data-publication-and-availability/blobs",
- ],
- },
- {
- label: "Logs",
- type: "category",
- link: { type: "doc", id: "protocol-specs/logs/index" },
- items: [],
- },
- {
- label: "Pre-compiled Contracts",
- type: "category",
- link: {
- type: "doc",
- id: "protocol-specs/pre-compiled-contracts/index",
- },
- items: ["protocol-specs/pre-compiled-contracts/registry"],
- },
- {
- label: "Private Message Delivery",
- type: "category",
- link: {
- type: "doc",
- id: "protocol-specs/private-message-delivery/index",
- },
- items: [
- "protocol-specs/private-message-delivery/private-msg-delivery", // renamed to avoid routing problems
- "protocol-specs/private-message-delivery/send-note-guidelines",
- ],
- },
- {
- label: "Gas & Fees",
- type: "category",
- link: { type: "doc", id: "protocol-specs/gas-and-fees/index" },
- items: [
- "protocol-specs/gas-and-fees/fee-juice",
- "protocol-specs/gas-and-fees/specifying-gas-fee-info",
- "protocol-specs/gas-and-fees/tx-setup-and-teardown",
- "protocol-specs/gas-and-fees/kernel-tracking",
- "protocol-specs/gas-and-fees/fee-schedule",
- "protocol-specs/gas-and-fees/published-gas-and-fee-data",
- ],
- },
- {
- label: "Decentralization",
- type: "category",
- items: [
- "protocol-specs/decentralization/actors",
- "protocol-specs/decentralization/governance",
- "protocol-specs/decentralization/block-production",
- "protocol-specs/decentralization/p2p-network",
- ],
- },
- {
- label: "Circuits",
- type: "category",
- link: {
- type: "doc",
- id: "protocol-specs/circuits/high-level-topology",
- },
- items: [
- "protocol-specs/circuits/private-function",
- "protocol-specs/circuits/private-kernel-initial",
- "protocol-specs/circuits/private-kernel-inner",
- "protocol-specs/circuits/private-kernel-reset",
- "protocol-specs/circuits/private-kernel-tail",
- "protocol-specs/circuits/public-kernel-initial",
- "protocol-specs/circuits/public-kernel-inner",
- "protocol-specs/circuits/public-kernel-tail",
- ],
- },
- {
- label: "Rollup Circuits",
- type: "category",
- link: { type: "doc", id: "protocol-specs/rollup-circuits/index" },
- items: [
- "protocol-specs/rollup-circuits/base-rollup",
- "protocol-specs/rollup-circuits/merge-rollup",
- "protocol-specs/rollup-circuits/tree-parity",
- "protocol-specs/rollup-circuits/root-rollup",
- ],
- },
- {
- label: "Aztec (Public) VM",
- type: "category",
- link: { type: "doc", id: "protocol-specs/public-vm/index" },
- items: [
- "protocol-specs/public-vm/intro",
- "protocol-specs/public-vm/state",
- "protocol-specs/public-vm/memory-model",
- "protocol-specs/public-vm/context",
- "protocol-specs/public-vm/execution",
- "protocol-specs/public-vm/nested-calls",
- "protocol-specs/public-vm/instruction-set",
- {
- label: "AVM Circuit",
- type: "category",
- link: {
- type: "doc",
- id: "protocol-specs/public-vm/circuit-index",
- },
- items: [
- "protocol-specs/public-vm/avm-circuit",
- "protocol-specs/public-vm/control-flow",
- "protocol-specs/public-vm/alu",
- "protocol-specs/public-vm/bytecode-validation-circuit",
- ],
- },
- "protocol-specs/public-vm/type-structs",
- ],
- },
- ],
- }
- : {}),
};
+
+const protocolSpecSidebar = [
+ "protocol-specs/intro",
+ {
+ label: "Cryptography",
+ type: "category",
+ link: { type: "doc", id: "protocol-specs/cryptography/index" },
+ items: [
+ {
+ label: "Proving System",
+ type: "category",
+ items: [
+ "protocol-specs/cryptography/proving-system/performance-targets",
+ "protocol-specs/cryptography/proving-system/overview",
+ "protocol-specs/cryptography/proving-system/data-bus",
+ ],
+ },
+ {
+ label: "Hashing",
+ type: "category",
+ items: [
+ "protocol-specs/cryptography/hashing/hashing",
+ "protocol-specs/cryptography/hashing/poseidon2",
+ "protocol-specs/cryptography/hashing/pedersen",
+ ],
+ },
+ "protocol-specs/cryptography/merkle-trees",
+ ],
+ },
+ {
+ label: "Addresses & Keys",
+ type: "category",
+ link: {
+ type: "doc",
+ id: "protocol-specs/addresses-and-keys/index",
+ },
+ items: [
+ "protocol-specs/addresses-and-keys/address",
+ "protocol-specs/addresses-and-keys/keys-requirements",
+ "protocol-specs/addresses-and-keys/keys",
+ {
+ label: "Example Usage of Keys",
+ type: "category",
+ items: [
+ "protocol-specs/addresses-and-keys/example-usage/nullifier",
+ "protocol-specs/addresses-and-keys/example-usage/diversified-and-stealth-keys",
+ "protocol-specs/addresses-and-keys/example-usage/tag-sequence-derivation",
+ "protocol-specs/addresses-and-keys/example-usage/encrypt-and-tag",
+ ],
+ },
+ "protocol-specs/addresses-and-keys/precompiles",
+ "protocol-specs/addresses-and-keys/diversified-and-stealth",
+ ],
+ },
+ {
+ label: "State",
+ type: "category",
+ link: { type: "doc", id: "protocol-specs/state/index" },
+ items: [
+ "protocol-specs/state/tree-implementations",
+ "protocol-specs/state/archive",
+ "protocol-specs/state/note-hash-tree",
+ "protocol-specs/state/nullifier-tree",
+ "protocol-specs/state/public-data-tree",
+ "protocol-specs/state/wonky-tree",
+ ],
+ },
+ {
+ label: "Transactions",
+ type: "category",
+ link: { type: "doc", id: "protocol-specs/transactions/index" },
+ items: [
+ "protocol-specs/transactions/local-execution",
+ "protocol-specs/transactions/public-execution",
+ "protocol-specs/transactions/tx-object",
+ "protocol-specs/transactions/validity",
+ ],
+ },
+ {
+ label: "Bytecode",
+ type: "category",
+ link: { type: "doc", id: "protocol-specs/bytecode/index" },
+ items: [],
+ },
+ {
+ label: "Contract Deployment",
+ type: "category",
+ link: {
+ type: "doc",
+ id: "protocol-specs/contract-deployment/index",
+ },
+ items: [
+ "protocol-specs/contract-deployment/classes",
+ "protocol-specs/contract-deployment/instances",
+ ],
+ },
+ {
+ label: "Calls",
+ type: "category",
+ link: { type: "doc", id: "protocol-specs/calls/index" },
+ items: [
+ "protocol-specs/calls/sync-calls",
+ "protocol-specs/calls/enqueued-calls",
+ "protocol-specs/calls/batched-calls",
+ "protocol-specs/calls/static-calls",
+ "protocol-specs/calls/unconstrained-calls",
+ "protocol-specs/calls/public-private-messaging",
+ ],
+ },
+ {
+ label: "L1 smart contracts",
+ type: "category",
+ link: {
+ type: "doc",
+ id: "protocol-specs/l1-smart-contracts/index",
+ },
+ items: ["protocol-specs/l1-smart-contracts/frontier"],
+ },
+ {
+ label: "Data availability",
+ type: "category",
+ link: {
+ type: "doc",
+ id: "protocol-specs/data-publication-and-availability/index",
+ },
+ items: [
+ "protocol-specs/data-publication-and-availability/overview",
+ "protocol-specs/data-publication-and-availability/published-data",
+ "protocol-specs/data-publication-and-availability/blobs",
+ ],
+ },
+ {
+ label: "Logs",
+ type: "category",
+ link: { type: "doc", id: "protocol-specs/logs/index" },
+ items: [],
+ },
+ {
+ label: "Pre-compiled Contracts",
+ type: "category",
+ link: {
+ type: "doc",
+ id: "protocol-specs/pre-compiled-contracts/index",
+ },
+ items: ["protocol-specs/pre-compiled-contracts/registry"],
+ },
+ {
+ label: "Private Message Delivery",
+ type: "category",
+ link: {
+ type: "doc",
+ id: "protocol-specs/private-message-delivery/index",
+ },
+ items: [
+ "protocol-specs/private-message-delivery/private-msg-delivery", // renamed to avoid routing problems
+ "protocol-specs/private-message-delivery/send-note-guidelines",
+ ],
+ },
+ {
+ label: "Gas & Fees",
+ type: "category",
+ link: { type: "doc", id: "protocol-specs/gas-and-fees/index" },
+ items: [
+ "protocol-specs/gas-and-fees/fee-juice",
+ "protocol-specs/gas-and-fees/specifying-gas-fee-info",
+ "protocol-specs/gas-and-fees/tx-setup-and-teardown",
+ "protocol-specs/gas-and-fees/kernel-tracking",
+ "protocol-specs/gas-and-fees/fee-schedule",
+ "protocol-specs/gas-and-fees/published-gas-and-fee-data",
+ ],
+ },
+ {
+ label: "Decentralization",
+ type: "category",
+ items: [
+ "protocol-specs/decentralization/actors",
+ "protocol-specs/decentralization/governance",
+ "protocol-specs/decentralization/block-production",
+ "protocol-specs/decentralization/p2p-network",
+ ],
+ },
+ {
+ label: "Circuits",
+ type: "category",
+ link: {
+ type: "doc",
+ id: "protocol-specs/circuits/high-level-topology",
+ },
+ items: [
+ "protocol-specs/circuits/private-function",
+ "protocol-specs/circuits/private-kernel-initial",
+ "protocol-specs/circuits/private-kernel-inner",
+ "protocol-specs/circuits/private-kernel-reset",
+ "protocol-specs/circuits/private-kernel-tail",
+ "protocol-specs/circuits/public-kernel-initial",
+ "protocol-specs/circuits/public-kernel-inner",
+ "protocol-specs/circuits/public-kernel-tail",
+ ],
+ },
+ {
+ label: "Rollup Circuits",
+ type: "category",
+ link: { type: "doc", id: "protocol-specs/rollup-circuits/index" },
+ items: [
+ "protocol-specs/rollup-circuits/base-rollup",
+ "protocol-specs/rollup-circuits/merge-rollup",
+ "protocol-specs/rollup-circuits/tree-parity",
+ "protocol-specs/rollup-circuits/root-rollup",
+ ],
+ },
+ {
+ label: "Aztec (Public) VM",
+ type: "category",
+ link: { type: "doc", id: "protocol-specs/public-vm/index" },
+ items: [
+ "protocol-specs/public-vm/intro",
+ "protocol-specs/public-vm/state",
+ "protocol-specs/public-vm/memory-model",
+ "protocol-specs/public-vm/context",
+ "protocol-specs/public-vm/execution",
+ "protocol-specs/public-vm/nested-calls",
+ "protocol-specs/public-vm/instruction-set",
+ {
+ label: "AVM Circuit",
+ type: "category",
+ link: {
+ type: "doc",
+ id: "protocol-specs/public-vm/circuit-index",
+ },
+ items: [
+ "protocol-specs/public-vm/avm-circuit",
+ "protocol-specs/public-vm/control-flow",
+ "protocol-specs/public-vm/alu",
+ "protocol-specs/public-vm/bytecode-validation-circuit",
+ ],
+ },
+ "protocol-specs/public-vm/type-structs",
+ ],
+ },
+];
+
+/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */
+module.exports = process.env.PROTOCOL_SPECS
+ ? { ...sidebar, protocolSpecSidebar }
+ : sidebar;
diff --git a/spartan/releases/README.md b/spartan/releases/README.md
deleted file mode 100644
index 7a174263d146..000000000000
--- a/spartan/releases/README.md
+++ /dev/null
@@ -1,144 +0,0 @@
-# Aztec Spartan
-
-This tool helps easing the entry barrier to boot an Aztec Sequencer and Prover (S&P) Testnet.
-
-
-
-For once, there's no rocket science here. This script does the following:
-
-- Checks for the presence of Docker in your machine
-- Prompts you for some environment variables
-- Outputs a templated docker-compose file with your variables
-- Runs the docker compose file
-
-It should work in most UNIX-based machines.
-
-## Installation
-
-To configure a new node, create a new directory and run the install script:
-
-```bash
-mkdir val1 && cd val1
-curl -L sp-testnet.aztec.network | bash
-```
-
-This will install `aztec-sequencer.sh` in the current directory. You can now run it:
-
-```bash
-./aztec-sequencer.sh config
-```
-
-If you don't have Docker installed, the script will do it for you. It will then prompt for any required environment variables and output both a `docker-compose.yml` and an `.env` file. You will also be prompted to choose whether to use a [named volume](https://docs.docker.com/engine/storage/volumes/) (default) or if you want to use a local directory to store the node's data.
-
-Run `./aztec-sequencer.sh` without any command to see all available options, and pass them as flags, i.e. `./aztec-sequencer config -p 8080 -p2p 40400`. If you want to use a different key for p2p peer id, pass it with `-pk `.
-
-For more options, see the [Node Configuration](#node-configuration) section.
-
-> [!TIP]
-> Ensure that each validator instance uses unique ports to avoid conflicts.
-
-## Running
-
-To spare you a few keystrokes, you can use `./aztec-sequencer [start/stop/logs/update]` to start, stop, output logs or pull the latest docker images.
-
-> [!NOTE]
-> The above deploy script will connect your node to the p2p network where it will register peers and start receiving messages from other nodes on the network. You will not be in the validator set just yet.
->
-> Once you connect and begin to see gossiped messages such as attestations, proposals etc notify notify a team member and they will add you to the validator set.
-
-## Node Configuration
-
-The user is prompted to enter some values which will map to corresponding ENV variables. Some are required:
-
-1. A Sepolia execution node RPC (for example on [alchemy](https://dashboard.alchemy.com/))
-2. A Sepolia beacon node RPC (for example from [drpc](https://drpc.org))
-3. An Ethereum private key
-4. `COINBASE` which is the Ethereum address associated with the private key
-
-On a first run, the script will generate a p2p private key and store it in `$DATA_DIR/var/lib/aztec/p2p-private-key`. If you wish to change your p2p private key, you can pass it on as a CLI arg using the flag `-pk` or update the `PEER_ID_PRIVATE_KEY` in the env file.
-
-### Publisher and Archiver
-
-The Publisher is the main node component that interacts with the Ethereum L1, for read and write operations. It is mainly responsible for block publishing, proof submission and tx management.
-
-The Archiver's primary functions are data storage and retrieval (i.e. L1->L2 messages), state synchronization and re-org handling.
-
-| Variable | Description |
-| ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| ETHEREUM_HOSTS | List of Ethereum nodes URLs your validator will connect to (comma separated). For as long as we're on private networks, please use the value in `aztec-sequencer.sh` |
-| L1_CHAIN_ID | Chain ID of the L1 |
-| DATA_DIRECTORY | Optional dir to store archiver and world state data. If omitted will store in memory |
-| ARCHIVER_POLLING_INTERVAL_MS | The polling interval in ms for retrieving new L2 blocks and encrypted logs |
-| SEQ_PUBLISHER_PRIVATE_KEY | This should be the same as your validator private key |
-| SEQ_PUBLISH_RETRY_INTERVAL_MS | The interval to wait between publish retries |
-| SEQ_VIEM_POLLING_INTERVAL_TIME | The polling interval viem uses in ms |
-
-### Sequencer Config
-
-The Sequencer Client is a criticial component that coordinates tx validation, L2 block creation, collecting attestations and block submission (through the Publisher).
-
-| Variable | Description |
-| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| VALIDATOR_DISABLED | If this is True, the client won't perform any validator duties. |
-| VALIDATOR_ATTESTATIONS_POLLING_INTERVAL_MS | If not enough attestations, sleep for this long and check again |
-| GOVERNANCE_PROPOSER_PAYLOAD_ADDRESS | To nominate proposals for voting, you must set this variable to the Ethereum address of the `proposal` payload. You must edit this to vote on a governance upgrade. |
-| SEQ_ENFORCE_TIME_TABLE | Whether to enforce strict timeliness requirement when building blocks. Refer [here](#sequencer-timeliness-requirements) for more on the timetable |
-| SEQ_MAX_TX_PER_BLOCK | Increase this to make larger blocks |
-| SEQ_MIN_TX_PER_BLOCK | Increase this to require making larger blocks |
-| COINBASE | This is the Ethereum address that will receive the validator's share of block rewards. It defaults to your validator address. |
-| FEE_RECIPIENT | This is the Aztec address that will receive the validator's share of transaction fees. Also defaults to your validator's address (but on Aztec L2). |
-
-#### Sequencer Timeliness Requirements
-
-During testing, it was helpful to constrain some actions of the sequencer based on the time passed into the slot. The time-aware sequencer can be told to do action A only if there's a certain amount of time left in the slot.
-
-For example, at the beginning of a slot, the sequencer will first sync state, then request txs from peers then attempt to build a block, then collect attestations then publish to L1. You can create constraints of the form "Only attempt to build a block if under 5 seconds have passed in the slot".
-
-If this is helpful in your testing as well, you can turn it on using the environment variable `SEQ_ENFORCE_TIME_TABLE`.
-
-Currently the default timetable values are hardcoded in [sequencer.ts](https://github.com/AztecProtocol/aztec-packages/blob/master/yarn-project/sequencer-client/src/sequencer/sequencer.ts#L72). Time checks are enforced in `this.setState()`.
-
-### P2P Config
-
-The P2P client coordinates peer-to-peer communication between Nodes.
-
-| Variable | Description |
-| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| BOOTSTRAP_NODES | A list of bootstrap peer ENRs to connect to. Separated by commas. |
-| P2P_IP | The client's public IP address. Defaults to working it out using disv5, otherwise set P2P_QUERY_FOR_IP if you are behind a NAT |
-| P2P_PORT | The port that will be used for sending / receiving p2p messages. Defaults to 40400. |
-| P2P_LISTEN_ARR | Address to listen on for p2p messages. Defaults to 0.0.0.0 |
-| P2P_QUERY_FOR_IP | Useful in dynamic environments where your IP is not known in advance. Set this to True, and only supply `:TCP_PORT` and `:UDP_PORT` for the `ANNOUNCE_ADDR` variables. If you know your public IP address in advance, set this to False or just provide the full announce addresses. |
-| P2P_ENABLED | Whether to run the P2P module. Defaults to False, so make sure to set to True |
-| P2P_MAX_PEERS | The max number of peers to connect to. |
-| P2P_BLOCK_CHECK_INTERVAL_MS | How milliseconds to wait between each check for new L2 blocks. |
-
-### Prover Config
-
-Please refer to the Epoch Proving Integration [Guide](https://hackmd.io/@aztec-network/epoch-proving-integration-guide) for info on how to setup your prover node.
-
-## Governance Upgrades
-
-During a governance upgrade, we'll announce details on the discord. At some point we'll also write AZIPs (Aztec Improvement Proposals) and post them to either the github or forum to collect feedback.
-
-We'll deploy the payload to the L1 and share the address of the payload with the sequencers on discord.
-
-To participate in the governance vote, sequencers must change the variable `GOVERNANCE_PROPOSER_PAYLOAD_ADDRESS` in the Sequencer Client to vote during the L2 slot they've been assigned sequencer duties.
-
-## Troubleshooting
-
-> [!TIP]
-> Please make sure you are in the Discord server and that you have been assigned the role `S&P Participant`. Say gm in the `sequencer-and-prover` channel and turn on notifications for the announcements channel.
-
-If you encounter any errors or bugs, please try basic troubleshooting steps like restarting your node, checking ports and configs.
-
-If issue persists, please share on the sequencer-and-prover channel and tag [Amin](discordapp.com/users/65773032211231539).
-
-Some issues are fairly light, the group and ourselves can help you within 60 minutes. If the issue isn't resolved, please send more information:
-
-**Error Logs**: Attach any relevant error logs. If possible, note the timestamp when the issue began.
-**Error Description**: Briefly describe the issue. Include details like what you were doing when it started, and any unusual behaviors observed.
-**Steps to Reproduce (if known)**: If there’s a clear way to reproduce the error, please describe it.
-**System Information**: Share details like your system’s operating system, hardware specs, and any other relevant environment information.
-
-That way we can dedicate more time to troubleshoot and open Github issues if no known fix.
diff --git a/spartan/releases/create-spartan.sh b/spartan/releases/create-spartan.sh
deleted file mode 100755
index 3b42d7e66757..000000000000
--- a/spartan/releases/create-spartan.sh
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/usr/bin/env bash
-
-# URL of the aztec-sequencer.sh script
-DEFAULT_URL="https://raw.githubusercontent.com/AztecProtocol/aztec-packages/refs/heads/master/spartan/releases/testnet/aztec-sequencer.sh"
-
-# Colors for output
-GREEN='\033[0;32m'
-RED='\033[0;31m'
-NC='\033[0m' # No Color
-
-# Download the script
-echo "Downloading aztec-sequencer.sh..."
-if curl -L -o aztec-sequencer.sh "${1:-$DEFAULT_URL}"; then
- chmod +x aztec-sequencer.sh
- echo -e "${GREEN}✓ aztec-sequencer.sh has been downloaded and made executable${NC}"
- echo "You can now run it with: ./aztec-sequencer.sh"
-else
- echo -e "${RED}✗ Failed to download aztec-sequencer.sh${NC}"
- exit 1
-fi
-
-# Check if jq is installed
-if ! command -v jq &> /dev/null; then
- echo "jq is not installed. Installing jq..."
- if command -v apt-get &> /dev/null; then
- sudo apt-get update
- sudo apt-get install -y jq
- elif command -v yum &> /dev/null; then
- sudo yum install -y jq
- elif command -v brew &> /dev/null; then
- brew install jq
- else
- echo -e "${RED}✗ Could not install jq. Please install it manually.${NC}"
- exit 1
- fi
- echo -e "${GREEN}✓ jq has been installed${NC}"
-fi
diff --git a/spartan/releases/testnet/aztec-sequencer.sh b/spartan/releases/testnet/aztec-sequencer.sh
deleted file mode 100755
index 71bfb932c7ce..000000000000
--- a/spartan/releases/testnet/aztec-sequencer.sh
+++ /dev/null
@@ -1,395 +0,0 @@
-#!/usr/bin/env bash
-
-set -e
-
-# Colors and formatting
-BLUE='\033[0;34m'
-GREEN='\033[0;32m'
-RED='\033[0;31m'
-YELLOW='\033[1;33m'
-NC='\033[0m' # No Color
-
-# Global variables
-DEFAULT_P2P_PORT="40500"
-DEFAULT_PORT="8080"
-DEFAULT_KEY="0x0000000000000000000000000000000000000000000000000000000000000001"
-# Try to get default IP from ipify API, otherwise leave empty to require user input
-DEFAULT_IP=$(curl -s --connect-timeout 5 https://api.ipify.org?format=json | grep -o '"ip":"[^"]*' | cut -d'"' -f4 || echo "")
-DEFAULT_BIND_MOUNT_DIR="$HOME/aztec-data"
-
-# unset these to avoid conflicts with the host's environment
-ETHEREUM_HOSTS=
-L1_CONSENSUS_HOST_URLS=
-IMAGE=
-BOOTNODE_URL=
-LOG_LEVEL=info
-# Parse command line arguments
-parse_args() {
- while [[ $# -gt 0 ]]; do
- case $1 in
- -b | --bootnode-url)
- BOOTNODE_URL="$2"
- shift 2
- ;;
- -n | --network)
- NETWORK="$2"
- shift 2
- ;;
- -i | --image)
- IMAGE="$2"
- shift 2
- ;;
- -e | --ethereum-hosts)
- ETHEREUM_HOSTS="$2"
- shift 2
- ;;
- -l | --l1-consensus-host-urls)
- L1_CONSENSUS_HOST_URLS="$2"
- shift 2
- ;;
- -p | --port)
- CLI_PORT="$2"
- shift 2
- ;;
- -p2p | --p2p-port)
- CLI_P2P_PORT="$2"
- shift 2
- ;;
- -ip | --ip)
- CLI_IP="$2"
- shift 2
- ;;
- -k | --key)
- CLI_KEY="$2"
- shift 2
- ;;
- -d | --data-dir)
- BIND_MOUNT_DIR="$2"
- shift 2
- ;;
- -pk | --p2p-id-private-key)
- PEER_ID_PRIVATE_KEY="$2"
- shift 2
- ;;
- -v | --verbose)
- LOG_LEVEL=debug
- shift
- ;;
- *)
- shift
- ;;
- esac
- done
-}
-
-# Show banner function
-show_banner() {
- echo -e "${BLUE}"
- echo " _ ____ _____ _____ _____ _____ _____ ____ _____ _ _ _____ _____ "
- echo " / \ |_ /|_ _| _____| __/|_ _| ____/ ___|_ _| \ | | ____|_ _|"
- echo " / _ \ / / | | | _| | | | | | _| \___ \ | | | \| | _| | | "
- echo " / ___ \/ /_ | | | |___ | |__ | | | |___ ___) || | | |\ | |___ | | "
- echo "/_/ \_\___| |_| |______|____\ |_| |_____|____/ |_| |_| \_|_____| |_| "
- echo -e "${NC}"
-}
-
-# Get public IP
-get_public_ip() {
- echo -e "${BLUE}Fetching public IP...${NC}"
- PUBLIC_IP=$(curl -s https://api.ipify.org?format=json | grep -o '"ip":"[^"]*' | cut -d'"' -f4)
- if [ -n "$PUBLIC_IP" ]; then
- echo -e "${GREEN}Public IP: $PUBLIC_IP${NC}"
- return 0
- else
- echo -e "${YELLOW}Failed to get public IP${NC}"
- return 1
- fi
-}
-
-# Configure environment
-configure_environment() {
- local args=("$@")
- parse_args "${args[@]}"
-
- echo -e "${BLUE}Configuring environment...${NC}"
- if [ -n "$NETWORK" ]; then
- NETWORK="$NETWORK"
- else
- read -p "Network [ignition-testnet]: " NETWORK
- NETWORK=${NETWORK:-ignition-testnet}
- fi
-
- # if the network is `ignition-testnet`
- if [ "$NETWORK" = "ignition-testnet" ]; then
- REGISTRY_CONTRACT_ADDRESS="${REGISTRY_CONTRACT_ADDRESS:-0x12b3ebc176a1646b911391eab3760764f2e05fe3}"
- # Determine architecture and set the image accordingly
- if [[ "$(uname -m)" == "x86_64" ]]; then
- IMAGE="${IMAGE:-aztecprotocol/aztec:1dc66419e0e7e1543bee081471701f90192fa33e-amd64}"
- else
- IMAGE="${IMAGE:-aztecprotocol/aztec:1dc66419e0e7e1543bee081471701f90192fa33e-arm64}"
- fi
- else
- # unknown network
- echo -e "${RED}Unknown network: $NETWORK${NC}"
- fi
-
- if [ -z "$IMAGE" ] || [ -z "$REGISTRY_CONTRACT_ADDRESS" ]; then
- echo -e "${RED}Bootstrap Nodes, Ethereum host, image and Registry contract address are required${NC}"
- exit 1
- fi
-
- if [ -n "$ETHEREUM_HOSTS" ]; then
- ETHEREUM_HOSTS="$ETHEREUM_HOSTS"
- else
- while true; do
- read -p "Sepolia Ethereum Host (ex. Infura, Alchemy, etc.): " ETHEREUM_HOSTS
- if [ -z "$ETHEREUM_HOSTS" ]; then
- echo -e "${RED}Error: Ethereum Hosts is required${NC}"
- else
- break
- fi
- done
- fi
-
- if [ -n "$L1_CONSENSUS_HOST_URLS" ]; then
- L1_CONSENSUS_HOST_URLS="$L1_CONSENSUS_HOST_URLS"
- else
- while true; do
- read -p "L1 Consensus Host URLs: " L1_CONSENSUS_HOST_URLS
- if [ -z "$L1_CONSENSUS_HOST_URLS" ]; then
- echo -e "${RED}Error: L1 Consensus Host URLs are required${NC}"
- else
- break
- fi
- done
- fi
-
- # # get the node info
- # get_node_info
-
- if [ -n "$CLI_P2P_PORT" ]; then
- P2P_PORT="$CLI_P2P_PORT"
- else
- read -p "P2P Port [$DEFAULT_P2P_PORT]: " P2P_PORT
- P2P_PORT=${P2P_PORT:-$DEFAULT_P2P_PORT}
- fi
-
- if [ -n "$CLI_PORT" ]; then
- PORT="$CLI_PORT"
- else
- read -p "Node Port [$DEFAULT_PORT]: " PORT
- PORT=${PORT:-$DEFAULT_PORT}
- fi
-
- if [ -n "$CLI_KEY" ]; then
- KEY="$CLI_KEY"
- else
- while true; do
- read -p "Validator Private Key: " KEY
- if [ -z "$KEY" ]; then
- echo -e "${RED}Error: Validator Private Key is required${NC}"
- else
- break
- fi
- done
- fi
-
- if [ -n "$CLI_COINBASE" ]; then
- COINBASE="$CLI_COINBASE"
- else
- while true; do
- read -p "Validator Address (Coinbase): " COINBASE
-
- if [ -z "$COINBASE" ]; then
- echo -e "${RED}Error: Validator Address (Coinbase) is required${NC}"
- else
- if [[ "$COINBASE" =~ ^0x[a-fA-F0-9]{40}$ ]]; then
- break
- else
- echo -e "${RED}Error: Invalid COINBASE address. Please enter a valid Ethereum address.${NC}"
- fi
- fi
-
- done
- fi
-
- if [ -n "$CLI_IP" ]; then
- IP="$CLI_IP"
- else
- if [ -z "$DEFAULT_IP" ]; then
- while true; do
- read -p "Public IP: " IP
- if [ -z "$IP" ]; then
- echo -e "${RED}Error: Public IP is required${NC}"
- else
- break
- fi
- done
- else
- read -p "Public IP [$DEFAULT_IP]: " IP
- IP=${IP:-$DEFAULT_IP}
- fi
- fi
-
- if [ -n "$BIND_MOUNT_DIR" ]; then
- BIND_MOUNT_DIR="$BIND_MOUNT_DIR"
- else
- read -p "Use docker volume for data directory? [Y/n] " -n 1 -r
- echo
- if [[ $REPLY =~ ^[Nn]$ ]]; then
- read -p "Relative path for data directory [${DEFAULT_BIND_MOUNT_DIR}]: " BIND_MOUNT_DIR
- BIND_MOUNT_DIR=${BIND_MOUNT_DIR:-$DEFAULT_BIND_MOUNT_DIR}
- fi
- fi
-
- # Generate .env file
- cat >.env <docker-compose.yml <
- sh -c '
-
- test -z "\$PEER_ID_PRIVATE_KEY" -a ! -f /var/lib/aztec/p2p-private-key && node /usr/src/yarn-project/aztec/dest/bin/index.js generate-p2p-private-key | head -1 | cut -d" " -f 3 | tee /var/lib/aztec/p2p-private-key || echo "Re-using existing P2P private key"
- test -z "\$PEER_ID_PRIVATE_KEY" && export PEER_ID_PRIVATE_KEY=\$(cat /var/lib/aztec/p2p-private-key)
-
- node --no-warnings /usr/src/yarn-project/aztec/dest/bin/index.js start --node --archiver --sequencer'
-EOF
-
- # Add volume configuration based on user choice
- if [ -n "$BIND_MOUNT_DIR" ]; then
- cat >>docker-compose.yml <>docker-compose.yml <