{
 "version": "v1",
 "generatedAt": "2026-10-15T21:09:14Z",
 "name": "Moonwell Comptroller (Unitroller)",
 "named_from": "dashboard",
 "chain": "Base",
 "address": "0xfbb21d0380bee3312b33c4353c8936a0f13ef26c",
 "composite": 71,
 "band": "decent",
 "keys_to_move": 3,
 "react_hours": 0,
 "money_per_key_usd": 3643765.468539567,
 "not_assessed": [],
 "sub": {
  "adminKeyScore": 65,
  "multisigScore": 100,
  "timelockScore": 50,
  "oracleAuthorityScore": 52,
  "crossExposureScore": 100
 },
 "requirements": [
  {
   "label": "Admin power is not a bare key",
   "met": true
  },
  {
   "label": "At least a 3-of-5 multisig",
   "met": true
  },
  {
   "label": "A confirmed delay before changes apply, no bypass",
   "met": false
  },
  {
   "label": "Bypass paths of the delay checked and ruled out",
   "met": false
  },
  {
   "label": "Price feed not under one hand",
   "met": false
  },
  {
   "label": "No key shared with another tracked protocol",
   "met": true
  }
 ],
 "exit_window": "a delay with a bypass, or one not ruled out",
 "tvl_usd": 10931296.405618701,
 "category": "Lending",
 "at_risk_usd": 3170075.957629423,
 "narrative": {
  "summary": "Unitroller.admin() is a TemporalGovernor whose only trusted Wormhole sender is one Ethereum address, Moonwell\u2019s MultichainGovernor V2 proxy, and it executes that sender\u2019s messages after a 1-day delay. A 3-of-5 guardian Safe can pause once and then fast-track a valid message past that delay.",
  "tag": "$14.0M Base TVL, guardian can fast-track past the delay",
  "detail": "The scorer caps the timelock score at 50 for that guardian path, and the Ethereum-side governor (quorum, proxy admin) and Wormhole\u2019s own guardian set were not verified by this Base-only scorer. In the Comptroller source the pauseGuardian (3-of-5 Safe) can only pause mint, borrow, transfer and seize, with unpausing reserved to the admin, and the borrow and supply cap guardian (2-of-4 Safe) can only set market caps, both disclosed but not scored. crossExposureScore 100 means not computed for this target, not a confirmed clean result."
 },
 "score_account": null,
 "paused": null,
 "side_roles": {
  "pauseGuardian()": {
   "kind": "safe",
   "threshold": 3,
   "owners": 5,
   "holder": "0xb9d4acf113a423bc4a64110b8738a52e51c2ab38"
  }
 },
 "side_pending": null,
 "safe_activity": [
  {
   "safe": "base:0x4463\u2026779e",
   "nonce": 6,
   "idle_since": "2026-10-10T21:12:49Z",
   "last_moved": null,
   "never_executed": false
  }
 ],
 "admin_probe": null,
 "held": null,
 "dispute": null,
 "independent_read_reproduce": {
  "rpc": "https://mainnet.base.org",
  "steps": [
   {
    "what": "admin() on the contract: the holder",
    "method": "eth_call",
    "params": [
     {
      "to": "0xfbb21d0380bee3312b33c4353c8936a0f13ef26c",
      "data": "0xf851a440"
     },
     "0x32362db"
    ]
   }
  ],
  "curl": "# admin() on the contract: the holder\ncurl -s -X POST https://mainnet.base.org -H 'content-type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_call\",\"params\":[{\"to\":\"0xfbb21d0380bee3312b33c4353c8936a0f13ef26c\",\"data\":\"0xf851a440\"},\"0x32362db\"]}'",
  "block": "0x32362db",
  "note": "read between blocks 52650708 and 52650715 of the chain"
 },
 "history": [
  {
   "t": "2026-10-12T23:32:10Z",
   "composite": 71,
   "from": "push"
  }
 ],
 "feed": "https://raw.githubusercontent.com/RealSpap/authority-risk-oracle-showcase/watch-data/feed/base-sepolia/0xfbb21d0380bee3312b33c4353c8936a0f13ef26c.xml",
 "reproduce": {
  "rpc": "https://sepolia.base.org",
  "to": "0x50840a7667baEa9D05ad4ae3dCeb384724b58720",
  "data": "0xd47875d0000000000000000000000000fbb21d0380bee3312b33c4353c8936a0f13ef26c",
  "block": "0x2dee0b9",
  "composite_word": 6,
  "block_honoured": true,
  "note": null,
  "curl": "curl -s -X POST https://sepolia.base.org -H 'content-type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_call\",\"params\":[{\"to\":\"0x50840a7667baEa9D05ad4ae3dCeb384724b58720\",\"data\":\"0xd47875d0000000000000000000000000fbb21d0380bee3312b33c4353c8936a0f13ef26c\"},\"0x2dee0b9\"]}'"
 },
 "consumer_example": {
  "verdict": "factor",
  "collateral_factor_bps": 5825,
  "text": "collateral factor 58.25% (score 71)"
 },
 "cheapest_fix": {
  "band": "strong",
  "next": 80,
  "axis": "admin key",
  "from": 65,
  "to": 87,
  "what": "a stronger admin setup (admin power spread beyond one key, or checked by others)"
 },
 "main_gap": {
  "requirement": "A confirmed delay before changes apply, no bypass",
  "reason": "Changes can apply with no waiting time"
 },
 "independent_read": {
  "path": "admin() -&gt; owner() of the holder (safe 3-of-5)",
  "holder": "0x8b621804a7637b781e2bbd58e256a591f2df7d51",
  "pending_admin": null,
  "pending_via": null,
  "self_delay_seconds": null,
  "kind": "contract",
  "since": "2026-10-10T06:54:09Z",
  "behind": {
   "address": "0x446342af4f3bcd374276891c6bb3411bf2f8779e",
   "kind": "safe",
   "via": "owner() of the holder",
   "threshold": 3,
   "owners": 5
  },
  "posture": "admin: Safe 3-of-5 behind a bare contract; delay: none",
  "exposure": {
   "keys_to_move": 3,
   "react_hours": 0,
   "tvl_usd": 10931296.405618701,
   "money_per_key_usd": 3643765.468539567,
   "money_source": "protocol_tvl",
   "held_symbol": null,
   "held_amount": null
  }
 },
 "score_cluster": null,
 "last_pushed": 1791847930,
 "stale": false,
 "methodology_hash": "0x0ffe08e65a4a36a26b89b8257fca91ff5c4c558f13e367f9bf457231d6848c70",
 "block": 48160953,
 "live": "https://realspap.github.io/oracle/#chain=all&q=0xfbb21d0380bee3312b33c4353c8936a0f13ef26c",
 "page": "https://realspap.github.io/oracle/p/base-0xfbb21d0380bee3312b33c4353c8936a0f13ef26c.html",
 "license": "CC BY 4.0, attribution: Authority Risk Oracle, realspap.github.io/oracle"
}