Five marker files decided whether a node was allowed to work. .allow-bootstrap turned skip-bootstrap off and wrote the state-sync config; .bootstrap-from narrowed the beacon set to ordinals an operator picked; .wipe-state discarded local chain state; two one-shot wipe sentinels had already run everywhere. A node without the right file held a stale height forever — the zoo script says so in its own comment, that a validator which falls behind can never return. None of them describes a choice. A node that is behind catches up; that is the only correct behaviour, so there is nothing to opt into. skip-bootstrap is gone from every fleet, along with the marker that existed to undo it, the background loop that watched the fleet frontier so it could rename that marker to .done, and the height that loop compared against. State sync needs no line either: it is on by default now, bounded by its own minimum-gap threshold, so a chain does not need a per-chain config file it may not have to be able to rejoin. The prose went with them. A startup script is not where a fleet keeps its incident history. Co-authored-by: Hanzo Dev <[email protected]>
11 lines
2.4 KiB
YAML
11 lines
2.4 KiB
YAML
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: zood-mv-startup
|
|
namespace: zoo-mainnet
|
|
labels:
|
|
app: zood-mv
|
|
data:
|
|
init.sh: "#!/bin/sh\n set -e\n IDX=\"${HOSTNAME##*-}\"\n mkdir -p /data/staking /data/plugins\n cp /luxd/build/plugins/* /data/plugins/ 2>/dev/null || true\n cp \"/staking-keys/staker-${IDX}.crt\" /data/staking/staker.crt\n cp \"/staking-keys/staker-${IDX}.key\" /data/staking/staker.key\n cp \"/staking-keys/signer-${IDX}.key\" /data/staking/signer.key\n\n chmod 600 /data/staking/staker.key /data/staking/signer.key\n chown -R 1000:1000 /data\n echo \"init-setup-done ordinal=$IDX\"\n"
|
|
startup.sh: "#!/bin/sh\n set -e\n IDX=\"${HOSTNAME##*-}\"\n echo \"=== zood boot: ordinal=$IDX net=200200 multi-validator N=5 sybil-protection ON ===\"\n # staking identity + plugins + perms are prepared by the root initContainer.\n # peer discovery: all other validators via the headless mv service DNS\n DNS=\"zood-mv.zoo-mainnet.svc.cluster.local\"\n BOOT=\"\"; j=0\n while [ \"$j\" -lt 5 ]; do\n [ \"$j\" != \"$IDX\" ] && BOOT=\"${BOOT:+$BOOT,}zood-mv-${j}.${DNS}:9631\"\n j=$((j+1))\n done\n PUBLIC_IP=\"$(hostname -i | awk '{print $1}')\"\n # A validator that falls behind syncs from its peers. Not a mode, not an\n # opt-in: a node that does not sync holds a stale height forever and the\n # fleet quietly loses the margin it thought it had.\n echo \"[boot] idx=$IDX ip=$PUBLIC_IP bootstrap-nodes=$BOOT\"\n exec /luxd/build/luxd \\\n --network-id=200200 --genesis-file=/genesis/genesis.json \\\n --upgrade-file=/genesis/upgrade.json \\\n --data-dir=/data --db-type=zapdb --plugin-dir=/data/plugins \\\n --staking-tls-cert-file=/data/staking/staker.crt \\\n --staking-tls-key-file=/data/staking/staker.key \\\n --staking-signer-key-file=/data/staking/signer.key \\\n --http-host=0.0.0.0 --http-port=9630 --http-allowed-hosts=\"*\" --staking-port=9631 \\\n --sybil-protection-enabled=true \\\n --consensus-sample-size=5 --consensus-quorum-size=4 \\\n --consensus-preference-quorum-size=4 --consensus-confidence-quorum-size=4 \\\n --network-require-validator-to-connect=true --network-allow-private-ips=true --network-compression-type=zstd \\\n --bootstrap-nodes=\"$BOOT\" --track-all-chains=true \\\n --public-ip=\"$PUBLIC_IP\" --api-admin-enabled=true --api-metrics-enabled=true --index-enabled=true --log-level=info\n"
|