diff --git a/RUN-A-NODE.md b/RUN-A-NODE.md index 024a245..2a363be 100644 --- a/RUN-A-NODE.md +++ b/RUN-A-NODE.md @@ -49,7 +49,7 @@ audit each step rather than run it. |---|---| | `genesis.json` | The genesis file, byte for byte as it sits on the Foundation nodes. sha256 `361709dccec4e9fc85be5aec33b30b58a55dc53424087d84c1ad11bd1d944c24` (of the published file with LF line endings, exactly as `curl` fetches it; a Windows checkout that converts line endings will hash differently) | | `registries/` | The public Falcon validator registries. Without them a node imports fine to block 13,014,000 (the first anchor) and then refuses every anchor block, because it cannot map a certificate's seal indices to validator addresses. See `registries/README.md`; sha256 of each below. | -| a bootnode enode | requested by mail for now; see the bootnodes section below | +| a bootnode enode | two published in the bootnodes section below; run-node.sh uses them by default | | `patches/`, `precompiles/` | The Besu fork, see `README.md`. Needed to sync past block 9,189,161 | The registries are public (Falcon public keys and validator addresses, each carrying a proof of @@ -219,13 +219,19 @@ besu \ --min-gas-price=0 ``` -Bootnodes are deliberately NOT published in this repository yet. The network entry points -available today are consensus or origin hosts, and this project does not print the addresses -of its own machines in public documents; a dedicated public bootnode, on a host that serves -nothing else, is the planned replacement, and this paragraph will then carry its enode. Until -then, write to office@aere.network with the subject "bootnode" and you will receive a current -enode by return. Everything else on this page works without one; discovery is the only step -that needs it. +Two bootnodes are published here since 2026-08-25. Both are public read hosts that are NOT in +the validator set, so taking them down cannot cost the network consensus; their addresses were +already public through the services they serve. The first runs Besu, the second runs Nethermind, +so your first two peers are also two independent implementations: + +``` +enode://7e8ff740b79bf28a6d7e46ea8d2317cea4a223e7af60be36e91e13dc7051f4cb29077631452e699a5e18e640a94fd6e370e9e51dd91ecba1f2ba9666e07ff01b@37.27.216.110:30303 +enode://a4b90d4f5fc7758814d41acfe00f6a2516683f3d3052410091b894d014dbb2184d6158da76f72e84ca268c2ccde3590d5686f978868f3b6ad6af87e398179fb8@157.180.67.185:30303 +``` + +`run-node.sh` uses both by default when `--bootnode` is not given. A written address is not a +live address: only your own `net_peerCount` proves they are up. If both are unreachable, write +to office@aere.network with the subject "bootnode" for a current enode by return. `--sync-mode=FULL` is deliberate. Chain 2800 runs QBFT with a half second block period, so the head was about 12.2 million blocks when this was written (2026-08-03), passed 14.6 million on 2026-08-19, diff --git a/run-node.sh b/run-node.sh index 6a98ca1..de399ed 100644 --- a/run-node.sh +++ b/run-node.sh @@ -15,10 +15,10 @@ # Re-running it does not rebuild what is already built or re-apply patches already applied. # # Usage: -# ./run-node.sh --bootnode [options] +# ./run-node.sh [options] (the two published bootnodes are used unless --bootnode is given) # # Options: -# --bootnode Peer to dial for discovery. Required to actually sync (see "Bootnode" below). +# --bootnode Override the published bootnodes with your own peer for discovery. # --data-path Node data directory. Default: ./aere-data next to this script. # --build-dir Where upstream Besu is cloned and built. Default: ./.besu-build next to this script. # --p2p-port P2P (TCP+UDP) port. Default: 30303. @@ -207,10 +207,10 @@ fi # --- 6. start ---------------------------------------------------------------------------------- say "6/6 Starting the node" if [ -z "$BOOTNODE" ]; then - die "no --bootnode given. A node with no peers cannot sync. -Chain 2800 does not publish a public bootnode in this repository yet. Request a current enode by -mail (office@aere.network, subject \"bootnode\") and re-run with: - ./run-node.sh --bootnode " + # The two published bootnodes (RUN-A-NODE.md, bootnodes section): both public read hosts, + # neither in the validator set, one Besu and one Nethermind. --bootnode overrides them. + BOOTNODE="enode://7e8ff740b79bf28a6d7e46ea8d2317cea4a223e7af60be36e91e13dc7051f4cb29077631452e699a5e18e640a94fd6e370e9e51dd91ecba1f2ba9666e07ff01b@37.27.216.110:30303,enode://a4b90d4f5fc7758814d41acfe00f6a2516683f3d3052410091b894d014dbb2184d6158da76f72e84ca268c2ccde3590d5686f978868f3b6ad6af87e398179fb8@157.180.67.185:30303" + say " no --bootnode given; using the two published bootnodes from RUN-A-NODE.md" fi mkdir -p "$DATA_PATH"