{
 "version": "v1",
 "generatedAt": "2026-10-15T21:09:14Z",
 "name": "Aerodrome Slipstream CLFactory",
 "named_from": "dashboard",
 "chain": "Base",
 "address": "0x5e7bb104d84c7cb9b682aac2f3d509f5f406809a",
 "composite": 46,
 "band": "moderate",
 "keys_to_move": 3,
 "react_hours": 0,
 "money_per_key_usd": 76055157.15190698,
 "not_assessed": [],
 "sub": {
  "adminKeyScore": 65,
  "multisigScore": 65,
  "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": 228165471.45572096,
 "category": "Dexs",
 "at_risk_usd": 123209354.58608933,
 "narrative": {
  "summary": "owner(), swapFeeManager() and unstakedFeeManager() all resolve to one 3-of-7 Safe with no timelock, the same Safe that controls Aerodrome V1 (pauser, feeManager and Voter.governor()), so one signer set governs both Aerodrome pool factories.",
  "tag": "cross-exposure: 80, same Safe as Aerodrome V1",
  "detail": "In the deployed CLFactory source the owner can set the owner and enable tick spacings (fee up to 10%), the swap fee manager sets a swap fee module (accepted up to 10%), and the unstaked fee manager sets an unstaked fee module (accepted up to 100%) and the default unstaked fee (capped at 50%); pools are EIP-1167 clones of an immutable implementation, so there is no pool upgrade path. Adding this target put two tracked targets on one Safe, which is why Aerodrome V1\u2019s crossExposure went from 100 to 80 while its composite stayed 46."
 },
 "score_account": null,
 "paused": null,
 "side_roles": null,
 "side_pending": null,
 "safe_activity": [
  {
   "safe": "base:0xe6a4\u20262075",
   "nonce": 2733,
   "idle_since": "2026-10-15T07:04:35Z",
   "last_moved": "2026-10-15T07:04:35Z",
   "never_executed": false
  }
 ],
 "admin_probe": null,
 "held": null,
 "dispute": null,
 "independent_read_reproduce": {
  "rpc": "https://mainnet.base.org",
  "steps": [
   {
    "what": "owner() on the contract: the holder",
    "method": "eth_call",
    "params": [
     {
      "to": "0x5e7bb104d84c7cb9b682aac2f3d509f5f406809a",
      "data": "0x8da5cb5b"
     },
     "0x32362db"
    ]
   },
   {
    "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://mainnet.base.org -H 'content-type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_call\",\"params\":[{\"to\":\"0x5e7bb104d84c7cb9b682aac2f3d509f5f406809a\",\"data\":\"0x8da5cb5b\"},\"0x32362db\"]}'\n# getThreshold() on the holder (a Safe)\ncurl -s -X POST https://mainnet.base.org -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://mainnet.base.org -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://mainnet.base.org -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://mainnet.base.org -H 'content-type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getStorageAt\",\"params\":[\"<holder>\",\"0x4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c8\",\"latest\"]}'",
  "block": "0x32362db",
  "note": "read between blocks 52650708 and 52650715 of the chain"
 },
 "history": [
  {
   "t": "2026-10-12T23:32:10Z",
   "composite": 46,
   "from": "push"
  }
 ],
 "feed": "https://raw.githubusercontent.com/RealSpap/authority-risk-oracle-showcase/watch-data/feed/base-sepolia/0x5e7bb104d84c7cb9b682aac2f3d509f5f406809a.xml",
 "reproduce": {
  "rpc": "https://sepolia.base.org",
  "to": "0x50840a7667baEa9D05ad4ae3dCeb384724b58720",
  "data": "0xd47875d00000000000000000000000005e7bb104d84c7cb9b682aac2f3d509f5f406809a",
  "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\":\"0xd47875d00000000000000000000000005e7bb104d84c7cb9b682aac2f3d509f5f406809a\"},\"0x2dee0b9\"]}'"
 },
 "consumer_example": {
  "verdict": "zero",
  "collateral_factor_bps": 0,
  "text": "collateral factor 0 (score 46 is under MIN_SAFE_SCORE 60)"
 },
 "cheapest_fix": {
  "band": "decent",
  "next": 60,
  "axis": "admin key",
  "from": 65,
  "to": 100,
  "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": "0xe6a4\u20262075",
  "pending_admin": null,
  "pending_via": null,
  "self_delay_seconds": null,
  "threshold": 3,
  "owners": 7,
  "keys_to_act": 3,
  "keys_lost_to_freeze": 5,
  "kind": "safe",
  "since": "2026-10-10T06:54:09Z",
  "owners_kinds": {
   "eoa": 7
  },
  "posture": "admin: Safe 3-of-7 of 7 plain keys; delay: none",
  "exposure": {
   "keys_to_move": 3,
   "react_hours": 0,
   "tvl_usd": 228165471.45572096,
   "money_per_key_usd": 76055157.15190698,
   "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=0x5e7bb104d84c7cb9b682aac2f3d509f5f406809a",
 "page": "https://realspap.github.io/oracle/p/base-0x5e7bb104d84c7cb9b682aac2f3d509f5f406809a.html",
 "license": "CC BY 4.0, attribution: Authority Risk Oracle, realspap.github.io/oracle"
}