{
 "version": "v1",
 "generatedAt": "2026-10-15T21:09:14Z",
 "name": "up v3 Factory",
 "named_from": "dashboard",
 "chain": "Robinhood Chain",
 "address": "0x1ac9db4a2608ba45d6127b1737949b51bb54b7f3",
 "composite": 32,
 "band": "weak",
 "keys_to_move": 2,
 "react_hours": 0,
 "money_per_key_usd": null,
 "not_assessed": [
  "the money behind one key (no money figure, or no key count)",
  "the protocol's total value locked (no DefiLlama match)"
 ],
 "sub": {
  "adminKeyScore": 50,
  "multisigScore": 40,
  "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": false
  },
  {
   "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": {
  "summary": "A real 2-of-4 Gnosis Safe (v1.4.1, no module, guard slot zero, four bare-EOA owners) owns the factory and also holds swapFeeManager and unstakedFeeManager, with no timelock in the path. Simulated calls confirm it can call setOwner, enableTickSpacing and the fee-manager and fee-module setters, and its crossExposureScore is 100, meaning no signer shared with another tracked target.",
  "tag": "~$8.4M TVL (DefiLlama)",
  "detail": "The same Safe is also the governor, emergency council and epoch governor of the Voter the factory points to, the team address of that Voter\u2019s VotingEscrow and Minter, and the owner of its FactoryRegistry, so its reach extends beyond this one contract and the score covers only the factory\u2019s owner chain. The contracts behind swapFeeModule and unstakedFeeModule were not traced, so any authority they carry of their own is not in the score."
 },
 "score_account": null,
 "paused": null,
 "side_roles": null,
 "side_pending": null,
 "safe_activity": [
  {
   "safe": "robinhood:0x0eea\u2026dfd8",
   "nonce": 435,
   "idle_since": "2026-10-15T19:02:41Z",
   "last_moved": "2026-10-15T19:02:41Z",
   "never_executed": false
  }
 ],
 "admin_probe": null,
 "held": null,
 "dispute": null,
 "independent_read_reproduce": {
  "rpc": "https://rpc.mainnet.chain.robinhood.com",
  "steps": [
   {
    "what": "owner() on the contract: the holder",
    "method": "eth_call",
    "params": [
     {
      "to": "0x1ac9db4a2608ba45d6127b1737949b51bb54b7f3",
      "data": "0x8da5cb5b"
     },
     "0x55508a0"
    ]
   },
   {
    "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.mainnet.chain.robinhood.com -H 'content-type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_call\",\"params\":[{\"to\":\"0x1ac9db4a2608ba45d6127b1737949b51bb54b7f3\",\"data\":\"0x8da5cb5b\"},\"0x55508a0\"]}'\n# getThreshold() on the holder (a Safe)\ncurl -s -X POST https://rpc.mainnet.chain.robinhood.com -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.mainnet.chain.robinhood.com -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.mainnet.chain.robinhood.com -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.mainnet.chain.robinhood.com -H 'content-type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getStorageAt\",\"params\":[\"<holder>\",\"0x4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c8\",\"latest\"]}'",
  "block": "0x55508a0",
  "note": "read between blocks 89458462 and 89458848 of the chain"
 },
 "history": [
  {
   "t": "2026-10-13T03:26:46Z",
   "composite": 32,
   "from": "push"
  }
 ],
 "feed": "https://raw.githubusercontent.com/RealSpap/authority-risk-oracle-showcase/watch-data/feed/robinhood-chain/0x1ac9db4a2608ba45d6127b1737949b51bb54b7f3.xml",
 "reproduce": {
  "rpc": "https://rpc.testnet.chain.robinhood.com/rpc",
  "to": "0x9BF45734D09bC7CA39238e767B2af9AAc62a7f52",
  "data": "0xd47875d00000000000000000000000001ac9db4a2608ba45d6127b1737949b51bb54b7f3",
  "block": "latest",
  "composite_word": 6,
  "block_honoured": false,
  "note": "this RPC cannot replay the block of the build (it ignores the block tag, or no longer serves old state): the call reproduces the current value, not the one of the build; compare the composite and lastUpdated with this page",
  "curl": "curl -s -X POST https://rpc.testnet.chain.robinhood.com/rpc -H 'content-type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_call\",\"params\":[{\"to\":\"0x9BF45734D09bC7CA39238e767B2af9AAc62a7f52\",\"data\":\"0xd47875d00000000000000000000000001ac9db4a2608ba45d6127b1737949b51bb54b7f3\"},\"latest\"]}'"
 },
 "consumer_example": {
  "verdict": "zero",
  "collateral_factor_bps": 0,
  "text": "collateral factor 0 (score 32 is under MIN_SAFE_SCORE 60)"
 },
 "cheapest_fix": {
  "band": "moderate",
  "next": 40,
  "axis": "admin key",
  "from": 50,
  "to": 69,
  "what": "a stronger admin setup (admin power spread beyond one key, or checked by others)"
 },
 "main_gap": {
  "requirement": "At least a 3-of-5 multisig",
  "reason": "Too few people need to agree"
 },
 "independent_read": {
  "path": "owner()",
  "holder": "0x0eea\u2026dfd8",
  "pending_admin": null,
  "pending_via": null,
  "self_delay_seconds": null,
  "threshold": 2,
  "owners": 4,
  "keys_to_act": 2,
  "keys_lost_to_freeze": 3,
  "kind": "safe",
  "since": "2026-10-10T06:54:09Z",
  "owners_kinds": {
   "eoa": 4
  },
  "posture": "admin: Safe 2-of-4 of 4 plain keys; delay: none",
  "exposure": {
   "keys_to_move": 2,
   "react_hours": 0,
   "tvl_usd": null,
   "money_per_key_usd": null,
   "money_source": null,
   "held_symbol": null,
   "held_amount": null
  }
 },
 "score_cluster": null,
 "last_pushed": 1791862006,
 "stale": false,
 "methodology_hash": "0x667dc486af9557a83488110fdb18fe653ba6d3be4773420590ee53b4a052fa45",
 "block": 136039274,
 "live": "https://realspap.github.io/oracle/#chain=all&q=0x1ac9db4a2608ba45d6127b1737949b51bb54b7f3",
 "page": "https://realspap.github.io/oracle/p/robinhood-0x1ac9db4a2608ba45d6127b1737949b51bb54b7f3.html",
 "license": "CC BY 4.0, attribution: Authority Risk Oracle, realspap.github.io/oracle"
}