#!/usr/bin/env bash # Arranca el nodo de Origin Chain en la rp1 si no está corriendo. Idempotente: lo llaman # cron @reboot y el vigilante cada 5 min. Sin root. # # Convivencia con la casa (la rp1 es también el runner de CI y el banco de Laurha): # - taskset -c 0-2: el nodo NUNCA toca el núcleo 3, que es el santuario de origin-banco. # - nice 10 + ionice best-effort 7: la CI tiene prioridad sobre el nodo. # - RPC sólo en 127.0.0.1: se entra por túnel SSH. P2P en 30333 para la LAN. # # Cadena: `dev` (Alice, llaves de desarrollo PÚBLICAS). Es la testnet de la casa, no la # testnet pública: ningún valor real vive aquí. set -euo pipefail BASE="$HOME/origin-chain" BIN="$BASE/bin/origin-chain-node" PIDF="$BASE/nodo.pid" mkdir -p "$BASE/data" "$BASE/logs" if [ -f "$PIDF" ] && kill -0 "$(cat "$PIDF")" 2>/dev/null; then exit 0 fi LOG="$BASE/logs/nodo-$(date +%Y%m%d-%H%M%S).log" # Un validador fuera de --dev exige una llave de red estable, y este CLI no trae `key`. Se # genera UNA vez (la vía 4 del propio nodo) y queda en el base-path; en los arranques # siguientes la bandera no se pasa, así que el peer id del bootnode no cambia nunca. LLAVE_RED="$BASE/data/chains/origin_chain_dev/network/secret_ed25519" EXTRA=() [ -f "$LLAVE_RED" ] || EXTRA=(--unsafe-force-node-key-generation) # El génesis lo fija casa.json (chain spec raw con el :code dentro), no el binario: el WASM no # es reproducible entre máquinas, y con `--chain dev` un binario nuevo crearía OTRO génesis # sobre los mismos datos. Sin casa.json (el primer arranque) se usa el `dev` embebido; después # se exporta con `bin/origin-chain-node build-spec --chain dev --raw > casa.json`. CADENA=dev [ -f "$BASE/casa.json" ] && CADENA="$BASE/casa.json" nohup taskset -c 0-2 nice -n 10 ionice -c2 -n7 "$BIN" run \ --chain "$CADENA" \ --validator --alice \ --name rp1-origin-casa \ --base-path "$BASE/data" \ --port 30333 \ --rpc-port 9944 --rpc-methods safe \ --no-telemetry --no-prometheus "${EXTRA[@]}" \ >"$LOG" 2>&1 & echo $! >"$PIDF" ln -sfn "$LOG" "$BASE/logs/actual.log" echo "$(date -Is) arrancado pid $(cat "$PIDF") log $LOG" >>"$BASE/logs/arranques.log"