# Fully On-Chain Capabilities Checklist

A scannable checklist of what ChainRender does **fully on-chain** — every item below is stored, computed, and
rendered on-chain, and is Grade A (fully trustless) unless a note says otherwise. For the reasoning behind the
claim, see **[What's Fully On-Chain](../concepts/fully-on-chain.md)**.

## Storage & rendering
- ✅ App UI stored on-chain (SSTORE2, content-addressed)
- ✅ Rendering is a free `view` call (`renderHash`) — reproducible on any RPC
- ✅ Deterministic output (same hash → same bytes, forever)
- ✅ Paginated/chunked reads for large apps (byte-identical reassembly)
- ✅ On-chain source-code component (render code, line-numbered, escaped)

## UI & layout
- ✅ Full UI vocabulary (box, text, heading, button, link, icon, input, image, slot)
- ✅ Responsive layout (stacks, grids, flow, breakpoints)
- ✅ Multi-view navigation (tabs, wizard, master-detail, modal)
- ✅ Data tables (static, bound, paginated)
- ✅ Interactive controls (toggle, select, slider, search)

## Data (live, on-chain reads)
- ✅ Live on-chain data binding (resolvers)
- ✅ Batched reads (multicall) + event reads
- ✅ Price feeds: Chainlink (value + live history chart), Uniswap V3 (`uniV3Price`), Uniswap V4 (`uniV4Price`, StateView)
- ✅ DeFi positions: Uniswap V3 LP (`uniV3Position`), Aave lending with **health factor** (`aavePosition`), Aave reserves / protocol stats
- ✅ DeFi trade path: pre-trade quotes (`uniQuote`), Curve `get_dy` (`curvePool`), ERC-20 approval-state gating (`approvalState`), portfolio totals (`portfolio`)
- ✅ Tokens: ERC-20 balances, ERC-721 metadata
- ✅ Generic reads: call (`staticread`) / multi-call (`multiread`) / compute resolvers — renders any protocol or Uniswap V4 hook state

## RWA & compliance (real-world assets)
- ✅ Proof-of-Reserve coverage — reserves ÷ token supply, with provenance + freshness (`por-coverage` / `por-reserves` / `por-supply`, Grade A)
- ⚙️ ERC-3643 (T-REX) compliance — verified / frozen / can-transfer **display** (`erc3643-status`/`-verified`/`-frozen`/`-can-transfer`); reads are on-chain but the identity registry is agent-mutable → ≤ C (DEP_MUTABLE), display not enforcement
- ✅ Credential lifecycle — issuer-bound VALID / EXPIRED / REVOKED / UNKNOWN (`cred-status` / `cred-valid`), with issuer-key provenance

## Visuals & media (all on-chain, Grade A)
- ✅ Charts (line/area/bar/scatter/pie/donut)
- ✅ Deterministic generative art, gradient identicons, vector art
- ✅ SDF 2D/3D scenes with an on-chain poster floor
- ✅ Point clouds with an on-chain poster floor
- ✅ Fully on-chain cartography (Real-Earth atlas)
- ✅ Declarative SVG animation
- ✅ Post-processing effects (CRT, glass, vignette, …)
- ✅ On-chain NFT media + media provenance
- ✅ Route diagrams (any swap topology)
- ⚙️ p5.js / three.js rich media — client-side *enhancement* over an on-chain floor; **the library is stored
  on-chain** (hash-verified); fails closed to the floor

## Identity, reputation & privacy
- ✅ ENS profiles (live identity UI, forward-verified reverse resolution)
- ✅ ENS records + ENS-v2 (CCIP) path
- ✅ Attested identity claims (+ EAS attestations)
- ✅ Selective-disclosure credentials (ZK member-of-set, Semaphore-style)
- ✅ Bound, single-use credentials (nullifier-backed, non-transferable)
- ✅ EFP (Ethereum Follow Protocol) forward reads — follow / tag / block / mute of a caller-named list (Grade A)
- ⚙️ EFP follower counts / reverse lookups — off-chain indexer aggregate, honestly graded ≤ C (not an on-chain fact)
- ✅ Delegated address vouching — ownerless registry, `rep-vouch` / transparent `rep-tally` (≤ C, delegated; never a score)
- ✅ Cross-source reputation aggregate — `rep-aggregate`, grade capped at the weakest source
- ⚙️ ERC-725Y / ERC-735 account claim reads (the standard behind LUKSO Universal Profiles) — via `staticread` today, **same-chain only** (≤ C, owned/mutable source); LUKSO's chain is not integrated

## Actions & trust
- ✅ Declared actions (construct-for-sign — a button can only do what it declares)
- ✅ Batched actions (one signature, N gated actions)
- ✅ Typed signing (EIP-712) + signature verification (ERC-1271/6492)
- ✅ On-chain trust grade (A/B/C) + itemized deviations
- ✅ On-chain capability enforcer (refuses unsafe apps)

## Presentation & theming
- ✅ Design-token system (CSS generated on-chain)
- ✅ Light / dark / high-contrast presets
- ✅ Render-time theming (zero-gas, no redeploy)
- ✅ Contrast + legibility invariants (enforced)

## Naming, versioning & governance
- ✅ Subnames under `chainrender.eth` (ownerless registrar + ENSIP-10 wildcard)
- ✅ Versioned names (append-only history + timelock)
- ✅ ThemeSet registry (ownerless theme discovery)
- ✅ Advisories + attestations (trust signals)
- ✅ App DNA / forking lineage

## Serving & distribution
- ✅ web3:// serving (ERC-5219 / ERC-4804)
- ✅ Farcaster Mini App distribution
- ✅ On-chain `tokenURI` (a ChainRender component as NFT media)

## Infrastructure guarantees
- ✅ Ownerless, immutable contracts (no admin, no upgrade key)
- ✅ Fail-closed everywhere (honest fallback, never a fabrication)
- ✅ Escaped by construction (a resolver can never inject markup)
- ✅ Drift-locked SDK ↔ on-chain logic (identical results)
- ✅ Multichain by portability (same hash, same output, any EVM chain)

**Legend:** ✅ fully on-chain, Grade A. ⚙️ an on-chain floor + an optional client-side enhancement that fails closed
to the floor (the floor stays Grade A).

## Related
- **[What's Fully On-Chain](../concepts/fully-on-chain.md)** — the reasoning + robustness.
- **[Feature Catalog](./feature-catalog.md)** — the same surface with more detail.
- **[The Floor](../concepts/the-floor.md)** — why enhancements never compromise the guarantee.
