Base operations
This page is an operator plan for a future approved release. It is not evidence that Base is mounted, deployed, provider-tested, or available. See the Base API contract, incident runbook, and known capability gaps.
Release invariants
- Base mainnet is chain ID
8453(0x2105). There is no Base Sepolia, Ethereum, or legacy QuickNode fallback. - Native Base is the only owner of
/rpc/base.BASE_LEGACY_QN=falsealways;basemust not occur inRPC_QN_CHAINS. - The checked-in/default state is
BASE_NATIVE=false. Do not enable it before the hashed release dossier and card 33 approval. upstream_base.ymlcontains only accepted public candidates andsecret://references. Never place a provider key in a URL, unit, YAML, command line, report, or example env.- Origin and edge have different duties. Caddy sends only non-upgrade GET/HEAD
/rpc/baseto the Next SEO page. POST and every WebSocket Upgrade stay on the portal. At the origin, exact/rpc/basealways reaches the native router; a non-POST request returns405withAllow: POSTbefore SPA fallback.
Configuration inventory
The source artifacts are the Base upstream inventory, systemd environment example, installable unit, and Caddy split.
The safe baseline is:
BASE_NATIVE=false
BASE_LEGACY_QN=false
BASE_MESH_CONFIG=configs/upstream_base.yml
BASE_CATALOG=../docs/api/json-rpc/base.openrpc.json
BASE_BLINK_SECRET_REF=
RPC_QN_CHAINS=polygon
RPC_QN_CHAINS_FILE=configs/qn-chains.yml
TLS_LISTEN=:443
TLS_CERT=configs/tls/cf-origin.pem
TLS_KEY=configs/tls/cf-origin.key
GOMEMLIMIT=3GiBBASE_BLINK_SECRET_REF is a reference, never the key. A native release
candidate must have an approved resolvable reference and the shared PostgreSQL
provider-budget store. Paid Alchemy/dRPC fallback slots remain URL-free,
disabled, and key_required until separately approved.
The unit sets MemoryHigh=4G, MemoryMax=5G, and MemorySwapMax=0 around the
whole proxy. Together with the bounded two-worker decode pool and
GOMEMLIMIT=3GiB, this is the accepted F09-01 baseline—not per-decoder process
isolation or measured capacity. Card 32 may require re-sizing.
Planned deployment
- Start only from the immutable hashes approved by card 33. Build both
bin/proxyandbin/preflight; stage files by copy. Do not rename files that may be Docker bind-mounted. - Fill the target's protected EnvironmentFile with secret references and operator-supplied secret material outside source control. Keep native false.
- Run the installer in check-only mode and run
bin/preflight -mode=production -root=<install-root>before changing supervision. - Validate the Caddy configuration before reload. WebSocket upgrades must not match the Next handler.
- Follow the release dossier's canary order. EU/Dedic is the OVH target
164.132.192.209; US is the AWS target13.216.5.243. Do not use parallel blind restarts ordeploy.ps1/plink calls without bounded timeouts. - Set
BASE_NATIVE=trueonly on the approved canary after every preflight input is present. KeepBASE_LEGACY_QN=falseand the non-Base QN CSV. - Complete the read-only post-deploy checks below before advancing. This page does not authorize signed transactions, provider load, firewall changes, SSH, deployment, or control-plane mutation.
EU SSH policy remains ufw LIMIT 22; no new public monitoring port is needed.
On US, proxy metrics are loopback :9090 and Prometheus is loopback :9091;
use an approved tunnel rather than opening either port.
Read-only post-deploy checks
- Confirm
systemctl is-active proxy-agg, the candidate binary/config hashes, andGOMEMLIMIT/cgroup values from systemd. - Confirm
/healthzand readiness, then one authenticated read-onlyeth_chainIdrequest returns0x2105. Never use a write method as a smoke. - Confirm edge GET/HEAD
/rpc/baseis the SEO page, edge POST reaches JSON-RPC, origin GET/rpc/baseis405withAllow: POST, and upgrades for/ws/base,/ws/base-feed, and/ws/base-auctiondo not reach Next. - Confirm absent/revoked/wrong-scope keys fail before any upstream dial.
- Confirm the Base sentinel definitions are loaded, the
triport-basedashboard has data for the canary PoP, and all eight alert names listed in the runbook exist in the loaded rule inventory. - Treat auction
key_required, decoder-validation blockers, and unavailable capabilities as explicit states, not successful availability.
Rollback
Run deploy/deploy_restart.sh --dry-run first. It stages
BASE_NATIVE=false, BASE_LEGACY_QN=false, removes any Base QN selection,
validates the previous-eight QN inventory and TLS, and changes nothing. Only an
authorized operator may then use --apply; the script copies bytes over the
EnvironmentFile, runs preflight before restart, and leaves all non-Base flags
unchanged. Re-run the same edge/origin and eight-network regression checks.