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 reference and the incident runbook.
Endpoint and plans: Base RPC endpoint.
Release invariants
- Base mainnet is chain ID
8453(0x2105). There is no Base Sepolia, Ethereum, or legacy-route fallback. - Native Base is the only owner of
/rpc/base. The legacy Base route stays disabled, andbasemust not occur in the legacy routing list. - 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 internal and not published: the Base upstream
inventory (upstream_base.yml), the systemd environment example
(proxy-agg.env.example), the installable unit (proxy-agg.service), and the
edge Caddy split snippet. Operators with deployment access hold the
authoritative copies.
The safe baseline is:
BASE_NATIVE=false
BASE_MESH_CONFIG=configs/upstream_base.yml
BASE_CATALOG=../docs/api/json-rpc/base.openrpc.json
BASE_BLINK_SECRET_REF=BASE_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 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 first, then US). Do not use parallel blind restarts or remote calls without bounded timeouts.
- Set
BASE_NATIVE=trueonly on the approved canary after every preflight input is present. Keep the legacy Base route disabled and the non-Base legacy routing list unchanged. - 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.
No new public monitoring port is needed; metrics stay on loopback and are reached only through an approved tunnel.
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 the staged rollback in dry-run mode first. It stages
BASE_NATIVE=false, keeps the legacy Base route disabled, removes any Base
legacy-route selection, validates the previous-eight network 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.