diff --git a/RUN-A-NODE.md b/RUN-A-NODE.md index 087baa8..39fec1e 100644 --- a/RUN-A-NODE.md +++ b/RUN-A-NODE.md @@ -163,32 +163,51 @@ the network's reading nodes, and validates every hybrid anchor there, since 2026 The Aere fork reads its per-node configuration from JVM system properties passed through the `BESU_OPTS` environment variable, not from the genesis file. `run-node.sh` sets these for you; this is what it sets, and what a manual operator must export before the `besu` command below, or the node -will refuse the first anchor at block 13,014,000. Revised 2026-09-05: the five properties added that -day are the ones without which a node stops at block 17,047,600 (the first hybrid, v2 certificate) or at -the first anchor after 17,225,968 (the interval change): `anchorV2Block`, `schemeSchedule`, -`hybridRegistry` (the SLH-DSA-SHA2-128s public keys, `registries/hibrid-1.properties`), -`anchorIntervalSchedule`, and the two dated steps in `anchorMinSeals` (see `anchor/README.md`, scope -item 3). The set below is the one the network's own public reading node runs with, measured that day. +will refuse the first anchor at block 13,014,000. Five of them are the ones without which a node stops +at block 17,047,600 (the first hybrid, v2 certificate) or at the first anchor after 17,225,968 (the +interval change): `anchorV2Block`, `schemeSchedule`, `hybridRegistry` (the SLH-DSA-SHA2-128s public +keys, `registries/hibrid-1.properties`), `anchorIntervalSchedule`, and the two dated steps in +`anchorMinSeals` (see `anchor/README.md`, scope item 3). + +> **Correction, 2026-09-06.** On 2026-09-05 those five properties were added to THIS DOCUMENT and not +> to `run-node.sh`, while the sentence above already claimed the script set them. It did not. A node +> started with the published script therefore ran the pre-hybrid configuration, and the v2 activation +> height stayed at `Long.MAX_VALUE`: our own from-genesis import proof, built from the published +> revision, synced honestly to block 17,047,400 and then rejected every hybrid anchor 12,352 times +> (`REJECTED - carries a v2 (scheme-tagged) certificate below the v2 activation height +> 9223372036854775807`). Anyone following this package could not pass block 17,047,600. Since +> 2026-09-06 the block below and the one inside `run-node.sh` are both GENERATED from the live +> `BESU_OPTS` of the network's archive node, which has exactly a follower's role, with the two public +> reading nodes as witnesses that must agree on the anchor set; a gate refuses any divergence between +> the chain, the script and this page. Re-measured after the fix on the same node and database: past +> 17,047,600 with zero rejections. + +The set below is the one the network's own archive node runs with, minus the signing keys. ```bash REG=/path/to/aere-node/registries export BESU_OPTS="\ -Daere.basefee.floor.forkBlock=10141734 \ -Daere.basefee.floor.value=1000000000 \ --Daere.pq.chainId=2800 \ +-Daere.falcon.anchor.address=0x5214F0e53899Dad805ef3AdF0624F5e49d2a5EB5 \ +-Daere.falcon.anchor.block=13889290 \ +-Daere.falcon.attachBlock=13889296 \ +-Daere.falcon.attachInterval=32 \ +-Daere.falcon.forkBlock=14050000 \ +-Daere.falcon.manifest=$REG/manifest-13600000.json \ +-Daere.falcon.minAttachFutureMargin=5 \ +-Daere.falcon.registry.history=$REG/manifest-13014000.json,$REG/registru-2800-v2-13600000.properties \ +-Daere.falcon.validatorCount=9 \ -Daere.pq.anchorBlock=13014000 \ -Daere.pq.anchorInterval=32 \ -Daere.pq.anchorIntervalSchedule=17225968:128 \ -Daere.pq.anchor.maxSeals=9 \ -Daere.pq.anchorMinSeals=13014000:0,13034000:3,14961456:6,17102384:0,17102416:6 \ --Daere.pq.anchor.minSealsCeiling=1 \ -Daere.pq.anchorV2Block=17047600 \ --Daere.pq.schemeSchedule=17047568:falcon-512+slh-dsa-sha2-128s \ +-Daere.pq.chainId=2800 \ -Daere.pq.hybridRegistry=$REG/hibrid-1.properties \ --Daere.falcon.anchor.address=0x5214F0e53899Dad805ef3AdF0624F5e49d2a5EB5 \ --Daere.falcon.anchor.block=13889290 \ --Daere.falcon.manifest=$REG/manifest-13600000.json \ --Daere.falcon.registry.history=$REG/manifest-13014000.json,$REG/registru-2800-v2-13600000.properties" +-Daere.pq.schemeSchedule=17047568:falcon-512+slh-dsa-sha2-128s \ +-Daere.pq.anchor.minSealsCeiling=1" ``` ### Why the seal-threshold ceiling, for a from-genesis node diff --git a/run-node.sh b/run-node.sh index de399ed..2714d14 100644 --- a/run-node.sh +++ b/run-node.sh @@ -244,19 +244,30 @@ mkdir -p "$DATA_PATH" # proposes, does not set this. ANCHOR_MIN_SEALS_CEILING="${AERE_ANCHOR_MIN_SEALS_CEILING:-1}" REG="$REG_DIR" +# >>> OPTIUNI DERIVATE DIN LANTUL VIU (aduce-optiunile-urmaritorului.sh) - nu se scriu de mana export BESU_OPTS="\ -Daere.basefee.floor.forkBlock=10141734 \ -Daere.basefee.floor.value=1000000000 \ --Daere.pq.chainId=2800 \ --Daere.pq.anchorBlock=13014000 \ --Daere.pq.anchorInterval=32 \ --Daere.pq.anchor.maxSeals=9 \ --Daere.pq.anchorMinSeals=13014000:0,13034000:3,14961456:6 \ --Daere.pq.anchor.minSealsCeiling=$ANCHOR_MIN_SEALS_CEILING \ -Daere.falcon.anchor.address=0x5214F0e53899Dad805ef3AdF0624F5e49d2a5EB5 \ -Daere.falcon.anchor.block=13889290 \ +-Daere.falcon.attachBlock=13889296 \ +-Daere.falcon.attachInterval=32 \ +-Daere.falcon.forkBlock=14050000 \ -Daere.falcon.manifest=$REG/manifest-13600000.json \ --Daere.falcon.registry.history=$REG/manifest-13014000.json,$REG/registru-2800-v2-13600000.properties" +-Daere.falcon.minAttachFutureMargin=5 \ +-Daere.falcon.registry.history=$REG/manifest-13014000.json,$REG/registru-2800-v2-13600000.properties \ +-Daere.falcon.validatorCount=9 \ +-Daere.pq.anchorBlock=13014000 \ +-Daere.pq.anchorInterval=32 \ +-Daere.pq.anchorIntervalSchedule=17225968:128 \ +-Daere.pq.anchor.maxSeals=9 \ +-Daere.pq.anchorMinSeals=13014000:0,13034000:3,14961456:6,17102384:0,17102416:6 \ +-Daere.pq.anchorV2Block=17047600 \ +-Daere.pq.chainId=2800 \ +-Daere.pq.hybridRegistry=$REG/hibrid-1.properties \ +-Daere.pq.schemeSchedule=17047568:falcon-512+slh-dsa-sha2-128s \ +-Daere.pq.anchor.minSealsCeiling=$ANCHOR_MIN_SEALS_CEILING" +# <<< OPTIUNI DERIVATE note "BESU_OPTS (follower subset):" printf '%s\n' "$BESU_OPTS" | tr ' ' '\n' | sed 's/^/ /'