You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
"_comment": "Discovered by `pnpm env:discover mainnet` from the Aztec node (node_getL1ContractAddresses) plus Rollup.getSlasher()/Slasher.PROPOSER(). stakingRegistryAddress is not part of the Aztec core deployment and must be set by hand."
28
36
},
29
37
"collectors": {
30
38
"validatorStats": {
@@ -56,7 +64,8 @@
56
64
"ponder": {
57
65
"port": 42069,
58
66
"maxHealthcheckDuration": 240,
59
-
"startBlock": 20000000
67
+
"startBlock": 0,
68
+
"_comment": "startBlock is set by `pnpm env:discover mainnet` to the rollup contract deployment block."
"_comment": "Discovered by `pnpm env:discover testnet` from the Aztec node (node_getL1ContractAddresses) plus Rollup.getSlasher()/Slasher.PROPOSER(). stakingRegistryAddress is not part of the Aztec core deployment and must be set by hand."
28
36
},
29
37
"collectors": {
30
38
"validatorStats": {
@@ -56,7 +64,8 @@
56
64
"ponder": {
57
65
"port": 42069,
58
66
"maxHealthcheckDuration": 240,
59
-
"startBlock": 9500000
67
+
"startBlock": 0,
68
+
"_comment": "startBlock is set by `pnpm env:discover testnet` to the rollup contract deployment block."
|`repo`| Clone/update the repo at `repo_version` into `/opt/dashtec` (`force: true`, resetting the committed `config.json` to its clean, secret-free state) |
21
-
|`config`| Assert secrets present, inject secrets into the committed `config.json` (via jq), run `env:propagate` (Node-only, via an ephemeral container), render the root `.env`|
22
-
|`deploy`|`docker compose --profile <network> up -d --build` for each network |
21
+
|`config`| Assert secrets present, inject secrets into the committed `config.json` (via jq), read it back, render the root `.env`|
22
+
|`aztec_node`| Start `aztec-node-<network>` and wait for it to report healthy, then discover the Aztec V5 contract addresses and the rollup's deployment block from it into `config.json`|
23
+
|`deploy`| Run `env:propagate` (Node-only, via an ephemeral container), then `docker compose --profile <network> up -d --build` for each network, then apply DB migrations |
23
24
24
25
### Config & secrets model
25
26
26
27
`.environment/<network>/config.json` is **committed** with all non-secret values
27
28
(addresses, domains, in-cluster DB/Redis URLs, collector tuning) and **empty**
28
29
secret fields. At deploy, the `config` role injects the secrets with `jq`, then
29
-
`env:propagate` fans them into the package `.env` files. The root `.env`'s
30
-
`NEXT_SENTINEL_URL` / `VALIDATOR_STATS_RPC_URL` (+ testnet) are set to
31
-
`SENTINEL_PROXY_URL` (the Aztec node JSON-RPC endpoint). Never commit real secret
30
+
the `aztec_node` role starts our own Aztec node and discovers the V5 contract
31
+
addresses from it, and only then does `env:propagate` fan everything into the
32
+
package `.env` files. The root `.env`'s `NEXT_SENTINEL_URL` /
33
+
`VALIDATOR_STATS_RPC_URL` (+ testnet) point at that node
34
+
(`http://aztec-node-<network>:8080`), and its `AZTEC_NODE_*` variables are what
35
+
the node services in `docker-compose.yml` interpolate. Never commit real secret
32
36
values into `config.json`.
33
37
38
+
Role order matters: `config` renders the root `.env` (so the node can start),
39
+
`aztec_node` brings the node up and writes `contracts.*` + `ponder.startBlock`
40
+
into `config.json`, `deploy` propagates and starts everything else.
41
+
34
42
## CI deployment (default)
35
43
36
44
Push to `main` (or run the workflow manually) triggers the deploy. The runner:
@@ -46,12 +54,12 @@ Push to `main` (or run the workflow manually) triggers the deploy. The runner:
46
54
| ------ | ------- |
47
55
|`TS_OAUTH_CLIENT_ID`, `TS_OAUTH_SECRET`| Tailscale OAuth client (tagged `tag:ci`) so the runner joins the tailnet |
48
56
|`MAINNET_ETHEREUM_RPC_URL`, `TESTNET_ETHEREUM_RPC_URL`| L1 RPC URLs (contain API keys) → `rpc.ethereumUrls`|
49
-
|`MAINNET_SENTINEL_PROXY_URL`, `TESTNET_SENTINEL_PROXY_URL`|Aztec node base URL → `sentinel.proxyUrl` (also derives the root `.env` sentinel/RPC vars)|
57
+
|`MAINNET_L1_CONSENSUS_HOST_URLS`, `TESTNET_L1_CONSENSUS_HOST_URLS`|L1 beacon-chain API URLs → `rpc.consensusUrls`. Only the Aztec node uses these, to fetch the blobs carrying checkpoint data; an execution RPC will not do|
0 commit comments