Skip to content

Onchain page: signer status, contract whitelist editor, permit history #10

@iamyxsh

Description

@iamyxsh

Context

This is the control center for Track 1 (Onchain Permits). Users managing DeFi bots need to see which contracts are whitelisted, what permits have been signed, and what got denied. Crypto-native users will judge the entire product by this page.


Scope

Signer status card

  • Status indicator: Active (green) / Inactive (red) / Not configured (gray)
  • Signer mode display: "Secure Enclave" or "Keyfile"
  • Signer address (truncated with copy button): 0x1a2b...9f0e
  • Active chain IDs: e.g., "Base (8453), Arbitrum (42161)"

Contract whitelist editor

  • Table: contract address, label (user-editable nickname), allowed function selectors
  • Each row expandable to show selector list with human-readable function names
  • Add contract: input for address + selectors (one-per-line)
  • Remove contract with confirmation
  • Edit selectors: inline edit on expanded row
  • Changes write back via PUT /api/policies
  • Prominent "DEFAULT DENY" badge — everything not listed is blocked

Permit history table

  • Columns: timestamp, target contract (truncated + label), function called, value (USD), chain, status (signed / denied), permit hash
  • Color coding: green for signed, red for denied
  • Denied rows show reason on expand (e.g., "contract not in whitelist", "spend cap exceeded")
  • Pagination (25 per page)
  • Filter: by contract, by status, by date range

Policy limits display (read-only summary)

  • Max tx value, daily spend cap, cooldown, max slippage
  • "Edit in Policies" link → navigates to policy editor

API Dependencies

GET /api/signer/status → { mode, address, chain_ids, active }
GET /api/audit?intent_type=onchain_tx&page=1 → permit history
GET /api/policies → onchain whitelist + limits
PUT /api/policies → save whitelist changes

Design Notes

  • Contract addresses in monospace font
  • Consider blockie/identicon next to each contract address
  • The "DEFAULT DENY" badge is a trust signal — visible, not buried
  • This page will appear in demo videos — it needs to look sharp

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions