{
 "version": "v1",
 "generatedAt": "2026-10-22T20:07:41Z",
 "name": "OptimismPortal2 (verified source)",
 "named_from": "verified source name (Sourcify)",
 "chain": "Ethereum",
 "address": "0x49048044d57e1c92a77f79988d21fa8faf74e97e",
 "composite": 56,
 "band": "moderate",
 "keys_to_move": null,
 "react_hours": null,
 "money_per_key_usd": null,
 "not_assessed": [
  "how many keys it takes to move it",
  "the time anyone has to react",
  "the money behind one key (no money figure, or no key count)",
  "the protocol's total value locked (no DefiLlama match)"
 ],
 "sub": {
  "adminKeyScore": 65,
  "multisigScore": 100,
  "timelockScore": 0,
  "oracleAuthorityScore": 100,
  "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": true
  },
  {
   "label": "No key shared with another tracked protocol",
   "met": true
  }
 ],
 "exit_window": "none: a change applies at once",
 "tvl_usd": null,
 "category": null,
 "at_risk_usd": null,
 "narrative": null,
 "score_account": null,
 "paused": null,
 "side_roles": {
  "guardian()": {
   "kind": "safe",
   "threshold": 2,
   "owners": 2,
   "holder": "0x7bb41c3008b3f03fe483b28b8db90e19cf07595c"
  }
 },
 "side_pending": null,
 "safe_activity": [
  {
   "safe": "ethereum-l1:0x7bb4\u2026595c",
   "nonce": 22,
   "idle_since": "2026-10-20T01:07:06Z",
   "last_moved": null,
   "never_executed": false
  }
 ],
 "admin_probe": null,
 "held": null,
 "dispute": null,
 "independent_read_reproduce": {
  "rpc": "https://ethereum-rpc.publicnode.com",
  "steps": [
   {
    "what": "the admin slot of the proxy (EIP-1967): the word is the admin address",
    "method": "eth_getStorageAt",
    "params": [
     "0x49048044d57e1c92a77f79988d21fa8faf74e97e",
     "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103",
     "latest"
    ]
   },
   {
    "what": "owner() on the address the slot returned (a ProxyAdmin): the holder",
    "method": "eth_call",
    "params": [
     {
      "to": "<address from the slot>",
      "data": "0x8da5cb5b"
     },
     "latest"
    ]
   },
   {
    "what": "getThreshold() on the holder (a Safe)",
    "method": "eth_call",
    "params": [
     {
      "to": "0x7bb41c3008b3f03fe483b28b8db90e19cf07595c",
      "data": "0xe75235b8"
     },
     "latest"
    ]
   },
   {
    "what": "getOwners() on the holder: the signer set (word 2 is the count)",
    "method": "eth_call",
    "params": [
     {
      "to": "0x7bb41c3008b3f03fe483b28b8db90e19cf07595c",
      "data": "0xa0e67e2b"
     },
     "latest"
    ]
   },
   {
    "what": "getModulesPaginated(0x1, 50) on the holder: the modules (a module executes without the signatures)",
    "method": "eth_call",
    "params": [
     {
      "to": "0x7bb41c3008b3f03fe483b28b8db90e19cf07595c",
      "data": "0xcc2f845200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000032"
     },
     "latest"
    ]
   },
   {
    "what": "the guard slot of the holder (keccak of guard_manager.guard.address)",
    "method": "eth_getStorageAt",
    "params": [
     "0x7bb41c3008b3f03fe483b28b8db90e19cf07595c",
     "0x4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c8",
     "latest"
    ]
   },
   {
    "what": "the implementation slot of the proxy (EIP-1967): the code behind it, an upgrade changes this word",
    "method": "eth_getStorageAt",
    "params": [
     "0x49048044d57e1c92a77f79988d21fa8faf74e97e",
     "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc",
     "latest"
    ]
   }
  ],
  "curl": "# the admin slot of the proxy (EIP-1967): the word is the admin address\ncurl -s -X POST https://ethereum-rpc.publicnode.com -H 'content-type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getStorageAt\",\"params\":[\"0x49048044d57e1c92a77f79988d21fa8faf74e97e\",\"0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103\",\"latest\"]}'\n# owner() on the address the slot returned (a ProxyAdmin): the holder\ncurl -s -X POST https://ethereum-rpc.publicnode.com -H 'content-type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_call\",\"params\":[{\"to\":\"<address from the slot>\",\"data\":\"0x8da5cb5b\"},\"latest\"]}'\n# getThreshold() on the holder (a Safe)\ncurl -s -X POST https://ethereum-rpc.publicnode.com -H 'content-type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_call\",\"params\":[{\"to\":\"0x7bb41c3008b3f03fe483b28b8db90e19cf07595c\",\"data\":\"0xe75235b8\"},\"latest\"]}'\n# getOwners() on the holder: the signer set (word 2 is the count)\ncurl -s -X POST https://ethereum-rpc.publicnode.com -H 'content-type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_call\",\"params\":[{\"to\":\"0x7bb41c3008b3f03fe483b28b8db90e19cf07595c\",\"data\":\"0xa0e67e2b\"},\"latest\"]}'\n# getModulesPaginated(0x1, 50) on the holder: the modules (a module executes without the signatures)\ncurl -s -X POST https://ethereum-rpc.publicnode.com -H 'content-type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_call\",\"params\":[{\"to\":\"0x7bb41c3008b3f03fe483b28b8db90e19cf07595c\",\"data\":\"0xcc2f845200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000032\"},\"latest\"]}'\n# the guard slot of the holder (keccak of guard_manager.guard.address)\ncurl -s -X POST https://ethereum-rpc.publicnode.com -H 'content-type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getStorageAt\",\"params\":[\"0x7bb41c3008b3f03fe483b28b8db90e19cf07595c\",\"0x4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c8\",\"latest\"]}'\n# the implementation slot of the proxy (EIP-1967): the code behind it, an upgrade changes this word\ncurl -s -X POST https://ethereum-rpc.publicnode.com -H 'content-type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getStorageAt\",\"params\":[\"0x49048044d57e1c92a77f79988d21fa8faf74e97e\",\"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc\",\"latest\"]}'",
  "block": "latest",
  "note": "read between blocks 26250101 and 26250103 of the chain; this RPC cannot replay the block of the read (it ignores the block tag, or no longer serves old state): the answers are the current ones"
 },
 "history": [
  {
   "t": "2026-10-20T00:54:24Z",
   "composite": 56,
   "from": "watch"
  }
 ],
 "feed": "https://raw.githubusercontent.com/RealSpap/authority-risk-oracle-showcase/watch-data/feed/ethereum-l1-sepolia/0x49048044d57e1c92a77f79988d21fa8faf74e97e.xml",
 "reproduce": {
  "rpc": "https://ethereum-sepolia-rpc.publicnode.com",
  "to": "0xB6F8474ccC71AF477c31c2DF663B3942ddfbf906",
  "data": "0xd47875d000000000000000000000000049048044d57e1c92a77f79988d21fa8faf74e97e",
  "block": "0xb6ab65",
  "composite_word": 6,
  "block_honoured": true,
  "note": null,
  "curl": "curl -s -X POST https://ethereum-sepolia-rpc.publicnode.com -H 'content-type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_call\",\"params\":[{\"to\":\"0xB6F8474ccC71AF477c31c2DF663B3942ddfbf906\",\"data\":\"0xd47875d000000000000000000000000049048044d57e1c92a77f79988d21fa8faf74e97e\"},\"0xb6ab65\"]}'"
 },
 "consumer_example": {
  "verdict": "zero",
  "collateral_factor_bps": 0,
  "text": "collateral factor 0 (score 56 is under MIN_SAFE_SCORE 60)"
 },
 "cheapest_fix": {
  "band": "decent",
  "next": 60,
  "axis": "admin key",
  "from": 65,
  "to": 74,
  "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": "EIP-1967 admin -&gt; ProxyAdmin owner()",
  "holder": "0x7bb41c3008b3f03fe483b28b8db90e19cf07595c",
  "pending_admin": null,
  "pending_via": null,
  "self_delay_seconds": null,
  "threshold": 2,
  "owners": 2,
  "keys_to_act": 2,
  "keys_lost_to_freeze": 1,
  "kind": "safe",
  "since": "2026-10-20T01:03:28Z",
  "owners_kinds": {
   "safe": 2
  },
  "nested": true,
  "posture": "admin: Safe 2-of-2 of 2 Safes; delay: none",
  "exposure": {
   "keys_to_move": null,
   "react_hours": null,
   "tvl_usd": null,
   "money_per_key_usd": null,
   "money_source": null,
   "held_symbol": null,
   "held_amount": null
  }
 },
 "score_cluster": null,
 "last_pushed": 1792454859,
 "stale": false,
 "methodology_hash": "0x0e0dadb9b93f111850c6149be1a61b089f1e14e39d9a2acc56a7e0d4d88ef32b",
 "block": 11971429,
 "live": "https://realspap.github.io/oracle/#chain=all&q=0x49048044d57e1c92a77f79988d21fa8faf74e97e",
 "page": "https://realspap.github.io/oracle/p/ethereum-l1-0x49048044d57e1c92a77f79988d21fa8faf74e97e.html",
 "license": "CC BY 4.0, attribution: Authority Risk Oracle, realspap.github.io/oracle"
}