{
 "version": "v1",
 "generatedAt": "2026-10-15T21:09:14Z",
 "name": "Morpho Blue core",
 "named_from": "dashboard",
 "chain": "Tempo",
 "address": "0x10ee9aac980a180dd4dcfc96c746d60b0ea88f97",
 "composite": 55,
 "band": "moderate",
 "keys_to_move": 5,
 "react_hours": 0,
 "money_per_key_usd": 13121724.477887569,
 "not_assessed": [],
 "sub": {
  "adminKeyScore": 65,
  "multisigScore": 96,
  "timelockScore": 0,
  "oracleAuthorityScore": 100,
  "crossExposureScore": 80
 },
 "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": true
  },
  {
   "label": "No key shared with another tracked protocol",
   "met": false
  }
 ],
 "exit_window": "none: a change applies at once",
 "tvl_usd": 65608622.38943785,
 "category": "Lending",
 "at_risk_usd": 29523880.07524703,
 "narrative": {
  "summary": "Owned by a 5-of-9 Safe (nine plain EOA signers, no module, no guard) with no timelock, so any 5 signers can act immediately. The owner\u2019s powers are limited to transferring ownership, enabling new rate models and LLTVs, and setting per-market fees (capped at 25% of interest) and the fee recipient, with no function to move user funds, pause the contract, or change an existing market\u2019s oracle, rate model or LLTV.",
  "tag": "$42.6M TVL, no timelock, cross-exposure: 80 (pushed on-chain 2026-09-20)",
  "detail": "The oracle score of 100 means not applicable, not safe: this owner has no power over any market\u2019s price source, but per-market oracle authority is a separate target shape not yet scored. Within Tempo no signer is shared with another tracked target, but the same 9 signers at the same 5-of-9 threshold also control the Morpho Blue owner Safe on Ethereum, Base and Robinhood Chain. Pushed on-chain 2026-09-20: that cross-ecosystem overlap is folded into crossExposureScore as a flat 80 (composite unchanged). The Safe address differs from Ethereum\u2019s, so the scorer\u2019s dated snapshot holds the owner set, not an address, and records the finding in the target\u2019s notes (crossChainSignerOverlap). The core is immutable (no proxy) and no protocol fee is active today (feeRecipient reads the zero address and every market reads a fee of 0)."
 },
 "score_account": null,
 "paused": null,
 "side_roles": null,
 "side_pending": null,
 "safe_activity": [
  {
   "safe": "tempo:0x6458\u2026fbbc",
   "nonce": 0,
   "idle_since": "2026-10-10T21:12:49Z",
   "last_moved": null,
   "never_executed": true
  }
 ],
 "admin_probe": null,
 "held": null,
 "dispute": null,
 "independent_read_reproduce": {
  "rpc": "https://rpc.tempo.xyz",
  "steps": [
   {
    "what": "owner() on the contract: the holder",
    "method": "eth_call",
    "params": [
     {
      "to": "0x10ee9aac980a180dd4dcfc96c746d60b0ea88f97",
      "data": "0x8da5cb5b"
     },
     "0x2a3faf7"
    ]
   },
   {
    "what": "getThreshold() on the holder (a Safe)",
    "method": "eth_call",
    "params": [
     {
      "to": "<holder>",
      "data": "0xe75235b8"
     },
     "latest"
    ]
   },
   {
    "what": "getOwners() on the holder: the signer set (word 2 is the count)",
    "method": "eth_call",
    "params": [
     {
      "to": "<holder>",
      "data": "0xa0e67e2b"
     },
     "latest"
    ]
   },
   {
    "what": "getModulesPaginated(0x1, 50) on the holder: the modules (a module executes without the signatures)",
    "method": "eth_call",
    "params": [
     {
      "to": "<holder>",
      "data": "0xcc2f845200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000032"
     },
     "latest"
    ]
   },
   {
    "what": "the guard slot of the holder (keccak of guard_manager.guard.address)",
    "method": "eth_getStorageAt",
    "params": [
     "<holder>",
     "0x4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c8",
     "latest"
    ]
   }
  ],
  "curl": "# owner() on the contract: the holder\ncurl -s -X POST https://rpc.tempo.xyz -H 'content-type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_call\",\"params\":[{\"to\":\"0x10ee9aac980a180dd4dcfc96c746d60b0ea88f97\",\"data\":\"0x8da5cb5b\"},\"0x2a3faf7\"]}'\n# getThreshold() on the holder (a Safe)\ncurl -s -X POST https://rpc.tempo.xyz -H 'content-type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_call\",\"params\":[{\"to\":\"<holder>\",\"data\":\"0xe75235b8\"},\"latest\"]}'\n# getOwners() on the holder: the signer set (word 2 is the count)\ncurl -s -X POST https://rpc.tempo.xyz -H 'content-type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_call\",\"params\":[{\"to\":\"<holder>\",\"data\":\"0xa0e67e2b\"},\"latest\"]}'\n# getModulesPaginated(0x1, 50) on the holder: the modules (a module executes without the signatures)\ncurl -s -X POST https://rpc.tempo.xyz -H 'content-type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_call\",\"params\":[{\"to\":\"<holder>\",\"data\":\"0xcc2f845200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000032\"},\"latest\"]}'\n# the guard slot of the holder (keccak of guard_manager.guard.address)\ncurl -s -X POST https://rpc.tempo.xyz -H 'content-type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getStorageAt\",\"params\":[\"<holder>\",\"0x4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c8\",\"latest\"]}'",
  "block": "0x2a3faf7",
  "note": "read between blocks 44301033 and 44301047 of the chain"
 },
 "history": [
  {
   "t": "2026-10-13T01:57:39Z",
   "composite": 55,
   "from": "push"
  }
 ],
 "feed": "https://raw.githubusercontent.com/RealSpap/authority-risk-oracle-showcase/watch-data/feed/tempo-moderato/0x10ee9aac980a180dd4dcfc96c746d60b0ea88f97.xml",
 "reproduce": {
  "rpc": "https://rpc.moderato.tempo.xyz",
  "to": "0x50840a7667baEa9D05ad4ae3dCeb384724b58720",
  "data": "0xd47875d000000000000000000000000010ee9aac980a180dd4dcfc96c746d60b0ea88f97",
  "block": "0x25e408f",
  "composite_word": 6,
  "block_honoured": true,
  "note": null,
  "curl": "curl -s -X POST https://rpc.moderato.tempo.xyz -H 'content-type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_call\",\"params\":[{\"to\":\"0x50840a7667baEa9D05ad4ae3dCeb384724b58720\",\"data\":\"0xd47875d000000000000000000000000010ee9aac980a180dd4dcfc96c746d60b0ea88f97\"},\"0x25e408f\"]}'"
 },
 "consumer_example": {
  "verdict": "zero",
  "collateral_factor_bps": 0,
  "text": "collateral factor 0 (score 55 is under MIN_SAFE_SCORE 60)"
 },
 "cheapest_fix": {
  "band": "decent",
  "next": 60,
  "axis": "admin key",
  "from": 65,
  "to": 77,
  "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": "owner()",
  "holder": "0x6458\u2026fbbc",
  "pending_admin": null,
  "pending_via": null,
  "self_delay_seconds": null,
  "threshold": 5,
  "owners": 9,
  "keys_to_act": 5,
  "keys_lost_to_freeze": 5,
  "kind": "safe",
  "since": "2026-10-10T06:54:09Z",
  "owners_kinds": {
   "eoa": 9
  },
  "posture": "admin: Safe 5-of-9 of 9 plain keys; delay: none",
  "exposure": {
   "keys_to_move": 5,
   "react_hours": 0,
   "tvl_usd": 65608622.38943785,
   "money_per_key_usd": 13121724.477887569,
   "money_source": "protocol_tvl",
   "held_symbol": null,
   "held_amount": null
  }
 },
 "score_cluster": null,
 "last_pushed": 1791856659,
 "stale": false,
 "methodology_hash": "0x0a3df5ccf0492a8006278d8f559a8ee72202d8b3d3b01ff5561fa9729045c276",
 "block": 39731343,
 "live": "https://realspap.github.io/oracle/#chain=all&q=0x10ee9aac980a180dd4dcfc96c746d60b0ea88f97",
 "page": "https://realspap.github.io/oracle/p/tempo-0x10ee9aac980a180dd4dcfc96c746d60b0ea88f97.html",
 "license": "CC BY 4.0, attribution: Authority Risk Oracle, realspap.github.io/oracle"
}