{
 "_note": "Written by scripts/check-dependencies.ts in both build chains from data/dependencies.json, data/dependency-changes.jsonl, data/organizations.json, /data/rankings.json and the DefiLlama snapshots; a build output, not committed. Beside the ranking, never in it: no score or order reads this file.",
 "license": "CC-BY-4.0",
 "licenseUrl": "https://creativecommons.org/licenses/by/4.0/",
 "attribution": "ChainChoice (https://chainchoice.io)",
 "url": "https://chainchoice.io/data/dependencies.json",
 "generatedAt": "2026-11-12",
 "what": "What ranked placements rest on that they do not control (price oracles, settlement chains, data layers, messaging layers, bridges, and the parent company), how many ranked placements in a category share each one and the TVL resting on them, and every recorded change to them with its date.",
 "rule": "A category page states each dependency or parent that more than 50% of its ranked placements rest on. A move from a dependency to a lower-rated one (its own published score lower, or unranked) after a placement's last read makes that placement due for a re-read 14 days after the move, ahead of the review cadence (/data/review-calendar.json, pulledDue).",
 "coverage": {
  "edges": 20,
  "placements": 15,
  "categories": 3,
  "notRecorded": "Placements in categories not listed here, and Aave, Morpho and Euler, whose records name an oracle per market or vault: their dependencies are not yet recorded, which is not the same as none."
 },
 "edges": [
  {
   "category": "appchains_l3s",
   "id": "abstract",
   "kind": "settlement",
   "on": "Ethereum",
   "onId": "layer1_chains/ethereum_l1",
   "role": "sole",
   "since": null,
   "quote": "settling to Ethereum with state diffs posted on L1",
   "rating": 79
  },
  {
   "category": "appchains_l3s",
   "id": "apechain",
   "kind": "settlement",
   "on": "Arbitrum One",
   "onId": "l2_chains/arbitrum-one",
   "role": "sole",
   "since": null,
   "quote": "Arbitrum Orbit L3 for the ApeCoin ecosystem, settling to Arbitrum One",
   "rating": 81
  },
  {
   "category": "appchains_l3s",
   "id": "degen_chain",
   "kind": "settlement",
   "on": "Base",
   "onId": "l2_chains/base",
   "role": "sole",
   "since": null,
   "quote": "Arbitrum Orbit AnyTrust L3 on Base",
   "rating": 77
  },
  {
   "category": "appchains_l3s",
   "id": "eclipse",
   "kind": "data_availability",
   "on": "Celestia",
   "onId": "data_availability/celestia_da",
   "role": "sole",
   "since": null,
   "quote": "posts its data to Celestia",
   "rating": 68
  },
  {
   "category": "appchains_l3s",
   "id": "immutable_zkevm",
   "kind": "bridge",
   "on": "Axelar",
   "onId": "cross_chain_messaging/axelar",
   "role": "sole",
   "since": null,
   "quote": "whose Ethereum bridge relays through the Axelar validator set",
   "rating": 74
  },
  {
   "category": "appchains_l3s",
   "id": "ronin",
   "kind": "data_availability",
   "on": "EigenDA",
   "onId": "data_availability/eigenda_da",
   "role": "sole",
   "since": "2026-05-12",
   "quote": "with data on EigenDA",
   "rating": 46
  },
  {
   "category": "appchains_l3s",
   "id": "ronin",
   "kind": "settlement",
   "on": "Ethereum",
   "onId": "layer1_chains/ethereum_l1",
   "role": "sole",
   "since": "2026-05-12",
   "quote": "moved to the OP Stack as an Ethereum Optimium in May 2026",
   "rating": 79
  },
  {
   "category": "appchains_l3s",
   "id": "xai",
   "kind": "settlement",
   "on": "Arbitrum One",
   "onId": "l2_chains/arbitrum-one",
   "role": "sole",
   "since": null,
   "quote": "Arbitrum Orbit AnyTrust L3 for games, settling to Arbitrum One",
   "rating": 81
  },
  {
   "category": "appchains_l3s",
   "id": "zora_network",
   "kind": "settlement",
   "on": "Ethereum",
   "onId": "layer1_chains/ethereum_l1",
   "role": "sole",
   "since": null,
   "quote": "settling to Ethereum with all data posted on L1",
   "rating": 79
  },
  {
   "category": "lending_borrowing",
   "id": "compound",
   "kind": "oracle",
   "on": "Chainlink",
   "onId": null,
   "role": "sole",
   "since": null,
   "quote": "priced by a single named Chainlink feed per asset",
   "rating": null
  },
  {
   "category": "lending_borrowing",
   "id": "fluid-protocol",
   "kind": "oracle",
   "on": "Chainlink",
   "onId": null,
   "role": "one-of",
   "since": null,
   "quote": "Fluid prices vaults from a Uniswap TWAP checked against Chainlink",
   "rating": null
  },
  {
   "category": "lending_borrowing",
   "id": "kamino",
   "kind": "oracle",
   "on": "Chainlink",
   "onId": null,
   "role": "one-of",
   "since": null,
   "quote": "names Chainlink Data Streams and Pyth Pro for the protocol as a whole",
   "rating": null
  },
  {
   "category": "lending_borrowing",
   "id": "kamino",
   "kind": "oracle",
   "on": "Pyth",
   "onId": null,
   "role": "one-of",
   "since": null,
   "quote": "names Chainlink Data Streams and Pyth Pro for the protocol as a whole",
   "rating": null
  },
  {
   "category": "lending_borrowing",
   "id": "spark",
   "kind": "oracle",
   "on": "Chainlink",
   "onId": null,
   "role": "one-of",
   "since": null,
   "quote": "a three-oracle median of RedStone, Chainlink and Chronicle",
   "rating": null
  },
  {
   "category": "lending_borrowing",
   "id": "spark",
   "kind": "oracle",
   "on": "Chronicle",
   "onId": null,
   "role": "one-of",
   "since": null,
   "quote": "a three-oracle median of RedStone, Chainlink and Chronicle",
   "rating": null
  },
  {
   "category": "lending_borrowing",
   "id": "spark",
   "kind": "oracle",
   "on": "RedStone",
   "onId": null,
   "role": "one-of",
   "since": null,
   "quote": "a three-oracle median of RedStone, Chainlink and Chronicle",
   "rating": null
  },
  {
   "category": "lending_borrowing",
   "id": "venus",
   "kind": "oracle",
   "on": "Chainlink",
   "onId": null,
   "role": "one-of",
   "since": null,
   "quote": "USDT, BTCB and BNB read Chainlink, Atlas and RedStone",
   "rating": null
  },
  {
   "category": "lending_borrowing",
   "id": "venus",
   "kind": "oracle",
   "on": "RedStone",
   "onId": null,
   "role": "one-of",
   "since": null,
   "quote": "USDT, BTCB and BNB read Chainlink, Atlas and RedStone",
   "rating": null
  },
  {
   "category": "perp_dex",
   "id": "gains-network",
   "kind": "oracle",
   "on": "Chainlink",
   "onId": null,
   "role": "sole",
   "since": null,
   "quote": "at a Chainlink-fed price",
   "rating": null
  },
  {
   "category": "perp_dex",
   "id": "gmx",
   "kind": "oracle",
   "on": "Chainlink",
   "onId": null,
   "role": "sole",
   "since": null,
   "quote": "GMX prices perps from Chainlink oracles",
   "rating": null
  }
 ],
 "categories": [
  {
   "category": "appchains_l3s",
   "ranked": 9,
   "shared": [
    {
     "kind": "settlement",
     "on": "Ethereum",
     "ids": [
      "abstract",
      "ronin",
      "zora_network"
     ],
     "count": 3,
     "of": 9,
     "share": 0.333,
     "sole": 3,
     "tvlUsd": null,
     "tvlMeasuredFor": 0
    },
    {
     "kind": "settlement",
     "on": "Arbitrum One",
     "ids": [
      "apechain",
      "xai"
     ],
     "count": 2,
     "of": 9,
     "share": 0.222,
     "sole": 2,
     "tvlUsd": null,
     "tvlMeasuredFor": 0
    }
   ]
  },
  {
   "category": "cdp_stablecoins",
   "ranked": 7,
   "shared": [
    {
     "kind": "parent",
     "on": "Liquity",
     "ids": [
      "liquity_bold",
      "liquity_lusd"
     ],
     "count": 2,
     "of": 7,
     "share": 0.286,
     "sole": 2,
     "tvlUsd": null,
     "tvlMeasuredFor": 0
    }
   ]
  },
  {
   "category": "flash_loans",
   "ranked": 8,
   "shared": [
    {
     "kind": "parent",
     "on": "Balancer",
     "ids": [
      "balancer_v2",
      "balancer_v3"
     ],
     "count": 2,
     "of": 8,
     "share": 0.25,
     "sole": 2,
     "tvlUsd": null,
     "tvlMeasuredFor": 0
    },
    {
     "kind": "parent",
     "on": "Uniswap",
     "ids": [
      "uniswap_v3_flash",
      "uniswap_v4"
     ],
     "count": 2,
     "of": 8,
     "share": 0.25,
     "sole": 2,
     "tvlUsd": null,
     "tvlMeasuredFor": 0
    }
   ]
  },
  {
   "category": "l2_chains",
   "ranked": 15,
   "shared": [
    {
     "kind": "parent",
     "on": "Arbitrum",
     "ids": [
      "arbitrum-nova",
      "arbitrum-one"
     ],
     "count": 2,
     "of": 15,
     "share": 0.133,
     "sole": 2,
     "tvlUsd": null,
     "tvlMeasuredFor": 0
    }
   ]
  },
  {
   "category": "lending_borrowing",
   "ranked": 8,
   "shared": [
    {
     "kind": "oracle",
     "on": "Chainlink",
     "ids": [
      "compound",
      "fluid-protocol",
      "kamino",
      "spark",
      "venus"
     ],
     "count": 5,
     "of": 8,
     "share": 0.625,
     "sole": 1,
     "tvlUsd": null,
     "tvlMeasuredFor": 0
    },
    {
     "kind": "oracle",
     "on": "RedStone",
     "ids": [
      "spark",
      "venus"
     ],
     "count": 2,
     "of": 8,
     "share": 0.25,
     "sole": 0,
     "tvlUsd": null,
     "tvlMeasuredFor": 0
    }
   ]
  },
  {
   "category": "perp_dex",
   "ranked": 12,
   "shared": [
    {
     "kind": "oracle",
     "on": "Chainlink",
     "ids": [
      "gains-network",
      "gmx"
     ],
     "count": 2,
     "of": 12,
     "share": 0.167,
     "sole": 2,
     "tvlUsd": null,
     "tvlMeasuredFor": 0
    }
   ]
  },
  {
   "category": "stablecoins",
   "ranked": 11,
   "shared": [
    {
     "kind": "parent",
     "on": "Sky",
     "ids": [
      "dai",
      "usds-sky"
     ],
     "count": 2,
     "of": 11,
     "share": 0.182,
     "sole": 2,
     "tvlUsd": null,
     "tvlMeasuredFor": 0
    }
   ]
  }
 ],
 "changes": [
  {
   "at": "2026-05-12",
   "recorded": "2026-10-15",
   "op": "added",
   "category": "appchains_l3s",
   "id": "ronin",
   "kind": "data_availability",
   "on": "EigenDA",
   "onId": "data_availability/eigenda_da",
   "rating": 46,
   "note": "Ronin hard-forked from an independent sidechain to an Ethereum Layer 2 on the OP Stack on 12 May 2026 (the Sidechains refusal of Ronin; its Appchains record: \"moved to the OP Stack as an Ethereum Optimium in May 2026\")."
  },
  {
   "at": "2026-05-12",
   "recorded": "2026-10-15",
   "op": "added",
   "category": "appchains_l3s",
   "id": "ronin",
   "kind": "settlement",
   "on": "Ethereum",
   "onId": "layer1_chains/ethereum_l1",
   "rating": 79,
   "note": "Ronin hard-forked from an independent sidechain to an Ethereum Layer 2 on the OP Stack on 12 May 2026 (the Sidechains refusal of Ronin; its Appchains record: \"moved to the OP Stack as an Ethereum Optimium in May 2026\")."
  },
  {
   "at": "2026-10-15",
   "recorded": "2026-10-15",
   "op": "added",
   "category": "appchains_l3s",
   "id": "abstract",
   "kind": "settlement",
   "on": "Ethereum",
   "onId": "layer1_chains/ethereum_l1",
   "rating": 79
  },
  {
   "at": "2026-10-15",
   "recorded": "2026-10-15",
   "op": "added",
   "category": "appchains_l3s",
   "id": "apechain",
   "kind": "settlement",
   "on": "Arbitrum One",
   "onId": "l2_chains/arbitrum-one",
   "rating": 81
  },
  {
   "at": "2026-10-15",
   "recorded": "2026-10-15",
   "op": "added",
   "category": "appchains_l3s",
   "id": "degen_chain",
   "kind": "settlement",
   "on": "Base",
   "onId": "l2_chains/base",
   "rating": 77
  },
  {
   "at": "2026-10-15",
   "recorded": "2026-10-15",
   "op": "added",
   "category": "appchains_l3s",
   "id": "eclipse",
   "kind": "data_availability",
   "on": "Celestia",
   "onId": "data_availability/celestia_da",
   "rating": 70
  },
  {
   "at": "2026-10-15",
   "recorded": "2026-10-15",
   "op": "added",
   "category": "appchains_l3s",
   "id": "immutable_zkevm",
   "kind": "bridge",
   "on": "Axelar",
   "onId": "cross_chain_messaging/axelar",
   "rating": 74
  },
  {
   "at": "2026-10-15",
   "recorded": "2026-10-15",
   "op": "added",
   "category": "appchains_l3s",
   "id": "xai",
   "kind": "settlement",
   "on": "Arbitrum One",
   "onId": "l2_chains/arbitrum-one",
   "rating": 81
  },
  {
   "at": "2026-10-15",
   "recorded": "2026-10-15",
   "op": "added",
   "category": "appchains_l3s",
   "id": "zora_network",
   "kind": "settlement",
   "on": "Ethereum",
   "onId": "layer1_chains/ethereum_l1",
   "rating": 79
  },
  {
   "at": "2026-10-15",
   "recorded": "2026-10-15",
   "op": "added",
   "category": "bridges",
   "id": "connext-everclear",
   "kind": "messaging",
   "on": "Hyperlane",
   "onId": "cross_chain_messaging/hyperlane",
   "rating": 80
  },
  {
   "at": "2026-10-15",
   "recorded": "2026-10-15",
   "op": "added",
   "category": "bridges",
   "id": "squid-router",
   "kind": "messaging",
   "on": "Axelar",
   "onId": "cross_chain_messaging/axelar",
   "rating": 74
  },
  {
   "at": "2026-10-15",
   "recorded": "2026-10-15",
   "op": "added",
   "category": "lending_borrowing",
   "id": "compound",
   "kind": "oracle",
   "on": "Chainlink",
   "onId": "oracles/chainlink",
   "rating": 61
  },
  {
   "at": "2026-10-15",
   "recorded": "2026-10-15",
   "op": "added",
   "category": "lending_borrowing",
   "id": "fluid-protocol",
   "kind": "oracle",
   "on": "Chainlink",
   "onId": "oracles/chainlink",
   "rating": 61
  },
  {
   "at": "2026-10-15",
   "recorded": "2026-10-15",
   "op": "added",
   "category": "lending_borrowing",
   "id": "kamino",
   "kind": "oracle",
   "on": "Chainlink",
   "onId": "oracles/chainlink",
   "rating": 61
  },
  {
   "at": "2026-10-15",
   "recorded": "2026-10-15",
   "op": "added",
   "category": "lending_borrowing",
   "id": "kamino",
   "kind": "oracle",
   "on": "Pyth",
   "onId": "oracles/pyth",
   "rating": 83
  },
  {
   "at": "2026-10-15",
   "recorded": "2026-10-15",
   "op": "added",
   "category": "lending_borrowing",
   "id": "spark",
   "kind": "oracle",
   "on": "Chainlink",
   "onId": "oracles/chainlink",
   "rating": 61
  },
  {
   "at": "2026-10-15",
   "recorded": "2026-10-15",
   "op": "added",
   "category": "lending_borrowing",
   "id": "spark",
   "kind": "oracle",
   "on": "Chronicle",
   "onId": "oracles/chronicle",
   "rating": 59
  },
  {
   "at": "2026-10-15",
   "recorded": "2026-10-15",
   "op": "added",
   "category": "lending_borrowing",
   "id": "spark",
   "kind": "oracle",
   "on": "RedStone",
   "onId": "oracles/redstone",
   "rating": 61
  },
  {
   "at": "2026-10-15",
   "recorded": "2026-10-15",
   "op": "added",
   "category": "lending_borrowing",
   "id": "venus",
   "kind": "oracle",
   "on": "Chainlink",
   "onId": "oracles/chainlink",
   "rating": 61
  },
  {
   "at": "2026-10-15",
   "recorded": "2026-10-15",
   "op": "added",
   "category": "lending_borrowing",
   "id": "venus",
   "kind": "oracle",
   "on": "RedStone",
   "onId": "oracles/redstone",
   "rating": 61
  },
  {
   "at": "2026-10-15",
   "recorded": "2026-10-15",
   "op": "added",
   "category": "perp_dex",
   "id": "gains-network",
   "kind": "oracle",
   "on": "Chainlink",
   "onId": "oracles/chainlink",
   "rating": 61
  },
  {
   "at": "2026-10-15",
   "recorded": "2026-10-15",
   "op": "added",
   "category": "perp_dex",
   "id": "gmx",
   "kind": "oracle",
   "on": "Chainlink",
   "onId": "oracles/chainlink",
   "rating": 61
  },
  {
   "at": "2026-11-12",
   "recorded": "2026-11-12",
   "op": "removed",
   "category": "bridges",
   "id": "connext-everclear",
   "kind": "messaging",
   "on": "Hyperlane",
   "onId": "cross_chain_messaging/hyperlane",
   "rating": 80
  },
  {
   "at": "2026-11-12",
   "recorded": "2026-11-12",
   "op": "removed",
   "category": "bridges",
   "id": "squid-router",
   "kind": "messaging",
   "on": "Axelar",
   "onId": "cross_chain_messaging/axelar",
   "rating": 74
  }
 ],
 "moves": []
}
