Skip to content

Add a "Whale Warning" indicator for owners holding an outsized share of voting weight #370

Description

@thegreatfeez

Frontend — Routing

Summary

SECURITY.md documents a real risk in the weighted-governance model: if a single owner's weight reaches the current quorum requirement on its own, that owner can approve and execute proposals alone, turning the multisig into a single point of failure. This issue surfaces that risk visually on the owners page instead of leaving it as something only readable in a security document.

Background

docs/SECURITY.md's "Whale-Owner Risk" section explains that approve sums weight from whichever owners call it and derive_status only compares that sum against quorum_weight — nothing distinguishes weight contributed by one owner versus several. An owner whose weight alone is >= threshold can unilaterally control the multisig. Separately, the contract enforces a configurable single-owner weight cap via MAX_SINGLE_OWNER_WEIGHT_PCT (50% by default, readable through the get_max_single_owner_weight_pct view) that bounds what any one ChangeOwnerWeight proposal can grant a single owner. There is currently no visual indicator anywhere in the frontend for either condition — a user has to already know to read the security doc to understand the risk.

What Needs to Be Done

  1. On OwnersPage, compute each owner's percentage share of total weight (already available once the page redesign lands) and flag any owner above a configurable warning threshold with a visible badge or highlight.
  2. As the most severe case, specifically flag (with distinct, more urgent styling) any owner whose weight alone is greater than or equal to the current quorum requirement — this is the condition SECURITY.md identifies as turning the multisig into a single point of failure.
  3. Default the general warning threshold to the contract's configured MAX_SINGLE_OWNER_WEIGHT_PCT (fetched live, not hardcoded to 50%), so the UI warning stays in sync if a deployment changes that configuration.
  4. Keep the indicator purely informational — it should not block any action, only make the risk visible to whoever is reviewing the owners list.
  5. Add a short explanatory tooltip or note near the indicator summarizing why this matters, in plain language consistent with how the rest of the app explains contract behavior to non-technical users.

Acceptance Criteria

  • An owner whose weight exceeds the configured single-owner cap percentage is visually flagged on OwnersPage.
  • An owner whose weight alone meets or exceeds the current quorum requirement is flagged with distinctly more urgent styling than the general warning.
  • The warning threshold is read from the contract's live configuration rather than hardcoded.
  • The indicator includes a brief explanation of the risk, understandable without reading SECURITY.md.

Files to Look At

  • frontend/src/pages/OwnersPage.tsx — where the indicator is added, using owner-weight and quorum data already available on the page
  • docs/SECURITY.md — "Whale-Owner Risk" and single-owner weight cap sections that define exactly which conditions this indicator should flag
  • frontend/src/lib/contract.ts — source of getMaxSingleOwnerWeightPct-style and getRequiredQuorumWeight-style wrappers needed to compute the thresholds

Difficulty: Medium

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions