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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions