Setup Aligned Infrastructure Locally
Aligned Infrastructure Deployment Guide
Dependencies
Ensure you have the following installed:
After installing foundryup, you need to install a specific Foundry version:
foundryup -i v1.1.0Then run:
make depsThis will:
Initialize git submodules
Install:
eigenlayer-cli,zap-prettyandabigenBuild ffis for your os.
Contracts and eth node
To start anvil, a local Ethereum devnet with all necessary contracts already deployed and ready to be interacted with, run:
make anvil_startAggregator
To start the Aggregator:
make aggregator_start ENVIRONMENT=devnetor with a custom config:
make aggregator_start ENVIRONMENT=devnet AGG_CONFIG_FILE=<path_to_config_file>Operator
To setup an Operator run:
make operator_full_registration_and_start ENVIRONMENT=devnetor with a custom config:
make operator_full_registration_and_start ENVIRONMENT=devnet CONFIG_FILE=<path_to_config_file>Different configs for operators can be found in config-files/config-operator.
Batcher
To start the Batcher locally:
make batcher_start_localThis starts a localstack to act as a replacement for S3.
If you want to use the batcher under a real S3 connection you'll need to specify the environment variables under crates/batcher/.env and then run:
make batcher_startOther components
Aligned also counts with 2 external components, which are not necessary for Aligned to work, but are useful for observability.
Explorer
Dependencies
Ensure you have the following installed:
Elixir 1.16.2, compiled with OTP 26
Tested with node 20 and 22
After installing the necessary deps, setup the environment variables by running:
make explorer_create_envThen start the explorer:
make explorer_build_db
make explorer_startThis will:
Start a postgres docker container
Run ecto setup
Start the explorer on http://localhost:4000.
Fetching batches and operators data
If you want to fetch past batches that for any reason were not inserted into the DB, you will first need to make sure you have the ELIXIR_HOSTNAME in the .env file.
You can get the hostname of your elixir by running:
elixir -e 'IO.puts(:inet.gethostname() |> elem(1))'Then you can run:
make explorer_fetch_old_batches FROM_BLOCK=<FROM_BLOCK> TO_BLOCK=<TO_BLOCK>To get operators strategies and restakes data:
make explorer_fetch_old_operators_strategies_restakes FROM_BLOCK=<FROM_BLOCK>Metrics/Telemetry
The Metrics and Telemetry are used to view more in-depth information about the network. With it, you can visualize all sort of cumulative and historical metrics of the network, of the individual components and their behaviors. Tese services are not necessary to run aligned, though you will see warnings in the rest of components as they won't be able to connect and send their status.
Dependencies
Ensure you have the following installed:
Elixir 1.16.2, compiled with OTP 26
Metrics service
To run Prometheus and Grafana, run:
make metrics_startThis will start containers for Prometheus and Grafana. You can access Grafana on http://localhost:3000 with the default credentials admin:admin.
Alternately, you can access the raw scrapped metrics collected with Prometheus on http://localhost:9091/metrics.
Telemetry service
To setup the telemetry service run:
If it is your first time first you'll need to execute the following commands:
make telemetry_create_env
make telemetry_build_dbThen, to start the service:
make telemetry_start_allThis will:
Start OpenTelemetry and Jaeger containers for the traces: available at
http://localhost:16686/Start telemetry server: available at
http://localhost:4001/
Send test proofs
To send proofs quickly you can run any of the targets that have the prefix batcher_send for example:
Send a single plonk proof:
make batcher_send_plonk_bn254_taskSend a burst of <N> risc0 proofs:
make batcher_send_risc0_burst BURST_SIZE=<N>Send an infinite stream of groth_16 proofs:
make batcher_send_groth16_bn254_infinite BURST_SIZE=2Feel free to explore the rest of targets.
Last updated