{
  "$schema": "https://degreesofsatoshi.com/encyclopedia/schemas/article-v1.json",
  "schemaVersion": "1.0.0",
  "id": "defi-composability",
  "canonical": "https://degreesofsatoshi.com/encyclopedia/defi-composability/",
  "collection": "defi",
  "title": "DeFi composability: reusing capabilities and inheriting dependencies",
  "description": "Trace a composed position through tokens, vaults, oracles and borrowing, and see why standards enable integration without certifying the combined system.",
  "aliases": [
    "composable finance"
  ],
  "dates": {
    "published": "2026-10-02",
    "modified": "2026-10-02",
    "verified": "2026-10-02T18:17:57.897Z",
    "dataAsOf": null
  },
  "authorship": {
    "publisher": "Degrees of Satoshi editorial project",
    "process": "AI-assisted research and drafting with a separate automated source-verification pass; no external expert or named human review is implied."
  },
  "quickAnswer": {
    "text": "Composability lets one application use another application’s tokens, contracts or data as a building block. It can combine useful operations, but it also carries dependencies forward. A vault share used as collateral still depends on the vault, its assets, price interpretation and the lending market that accepts it.",
    "claimId": "defi-composability-quick-answer",
    "sourceIds": [
      "erc20",
      "vault",
      "oracle"
    ]
  },
  "keyFacts": [
    {
      "label": "Common interface",
      "value": "ERC-20 enables token reuse across applications.",
      "sourceIds": [
        "erc20"
      ],
      "id": "common-interface",
      "claimId": "defi-composability-fact-common-interface"
    },
    {
      "label": "Claim layer",
      "value": "ERC-4626 shares represent a claim on underlying vault assets.",
      "sourceIds": [
        "vault"
      ],
      "id": "claim-layer",
      "claimId": "defi-composability-fact-claim-layer"
    },
    {
      "label": "Changing dependency",
      "value": "A dependency may itself have an upgradeable implementation.",
      "sourceIds": [
        "proxy"
      ],
      "id": "changing-dependency",
      "claimId": "defi-composability-fact-changing-dependency"
    }
  ],
  "prerequisites": [
    "yield-vaults",
    "blockchain-oracles",
    "wrapped-assets"
  ],
  "sections": [
    {
      "id": "building-block",
      "heading": "A standard interface makes integration possible",
      "paragraphs": [
        "An application can call a token’s transfer interface without inventing a new transfer format for each asset. A vault interface similarly exposes shares and underlying-asset operations. Shared interfaces reduce the mechanical work needed to connect contracts.",
        "They do not prove identical economic behavior. A token can have issuer restrictions, and a vault can have strategy losses or withdrawal limits. Compatibility with a method signature is a smaller claim than compatibility with every assumption an integrator makes."
      ],
      "sourceIds": [
        "erc20",
        "vault"
      ]
    },
    {
      "id": "trace",
      "heading": "Map each dependency in a composed position",
      "paragraphs": [
        "Consider a vault share deposited as lending collateral. The position depends on the vault’s assets and strategy, its share conversion and withdrawal rules, the oracle’s interpretation of that share, the lending market’s thresholds, and any relevant upgrade authority.",
        "An accurate token interface lets these contracts connect; it does not independently verify the assumptions each one makes about the others. A withdrawal limit or changed share value in the vault can affect the collateral position downstream. Record this chain of dependencies when assessing the combined product."
      ],
      "sourceIds": [
        "vault",
        "edition-aave-pool",
        "edition-chainlink-feeds",
        "proxy"
      ]
    },
    {
      "id": "boundaries",
      "heading": "Atomic execution does not remove continuing dependencies",
      "paragraphs": [
        "A single successful transaction can connect several operations, but the resulting position persists afterward. Its dependency can be upgraded, its withdrawal rules can apply, and its underlying assets can change in value. Atomic execution only answers whether that transaction completed as a unit.",
        "A useful research record lists each layer, what it promises, who controls changes and how to exit. Count independent underlying exposures rather than dashboard rows: several receipts can ultimately depend on the same asset, oracle or administrative authority."
      ],
      "sourceIds": [
        "proxy",
        "vault"
      ]
    }
  ],
  "faq": [
    {
      "question": "Do standard interfaces make the combined system safe?",
      "answer": "No. Standards specify interaction conventions. They do not validate every economic assumption, dependency, implementation or future upgrade in a composition.",
      "sourceIds": [
        "erc20",
        "vault",
        "proxy"
      ]
    }
  ],
  "claims": [
    {
      "id": "defi-composability-quick-answer",
      "articleSlug": "defi-composability",
      "statement": "Composability lets one application use another application’s tokens, contracts or data as a building block. It can combine useful operations, but it also carries dependencies forward. A vault share used as collateral still depends on the vault, its assets, price interpretation and the lending market that accepts it.",
      "sourceIds": [
        "source-ac4ad503a55127bb",
        "source-0500eb916f66cd39",
        "source-72dd33a43173ecf1"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-ac4ad503a55127bb",
          "locator": "Methods: approve, allowance, transferFrom"
        },
        {
          "sourceId": "source-0500eb916f66cd39",
          "locator": "Specification; Security Considerations"
        },
        {
          "sourceId": "source-72dd33a43173ecf1",
          "locator": "What is an oracle?; The oracle problem"
        }
      ],
      "scope": {
        "collection": "defi",
        "dataAsOf": null,
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T18:17:57.897Z",
        "reviewer": "automated independent verification — DeFi content-pass reviewer",
        "notes": [
          "Reopened ERC20, ERC4626, Aave Pool, Chainlink feed timestamp/suitability checks and OpenZeppelin proxy documentation. Read the composed-position paragraph together with the unchanged interface and persistent-dependency sections.",
          "Narrowed the changed paragraph from withdrawal queue to withdrawal limit, because ERC4626 directly describes limits and does not establish an asynchronous queue for every example vault.",
          "The hypothetical share-as-collateral example identifies accounting, oracle, lending-threshold and upgrade dependencies without asserting that every market accepts every share token."
        ]
      }
    },
    {
      "id": "defi-composability-fact-common-interface",
      "articleSlug": "defi-composability",
      "statement": "Common interface: ERC-20 enables token reuse across applications.",
      "sourceIds": [
        "source-ac4ad503a55127bb"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-ac4ad503a55127bb",
          "locator": "Methods: approve, allowance, transferFrom"
        }
      ],
      "scope": {
        "collection": "defi",
        "dataAsOf": null,
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T18:17:57.897Z",
        "reviewer": "automated independent verification — DeFi content-pass reviewer",
        "notes": [
          "Reopened ERC20, ERC4626, Aave Pool, Chainlink feed timestamp/suitability checks and OpenZeppelin proxy documentation. Read the composed-position paragraph together with the unchanged interface and persistent-dependency sections.",
          "Narrowed the changed paragraph from withdrawal queue to withdrawal limit, because ERC4626 directly describes limits and does not establish an asynchronous queue for every example vault.",
          "The hypothetical share-as-collateral example identifies accounting, oracle, lending-threshold and upgrade dependencies without asserting that every market accepts every share token."
        ]
      }
    },
    {
      "id": "defi-composability-fact-claim-layer",
      "articleSlug": "defi-composability",
      "statement": "Claim layer: ERC-4626 shares represent a claim on underlying vault assets.",
      "sourceIds": [
        "source-0500eb916f66cd39"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-0500eb916f66cd39",
          "locator": "Specification; Security Considerations"
        }
      ],
      "scope": {
        "collection": "defi",
        "dataAsOf": null,
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T18:17:57.897Z",
        "reviewer": "automated independent verification — DeFi content-pass reviewer",
        "notes": [
          "Reopened ERC20, ERC4626, Aave Pool, Chainlink feed timestamp/suitability checks and OpenZeppelin proxy documentation. Read the composed-position paragraph together with the unchanged interface and persistent-dependency sections.",
          "Narrowed the changed paragraph from withdrawal queue to withdrawal limit, because ERC4626 directly describes limits and does not establish an asynchronous queue for every example vault.",
          "The hypothetical share-as-collateral example identifies accounting, oracle, lending-threshold and upgrade dependencies without asserting that every market accepts every share token."
        ]
      }
    },
    {
      "id": "defi-composability-fact-changing-dependency",
      "articleSlug": "defi-composability",
      "statement": "Changing dependency: A dependency may itself have an upgradeable implementation.",
      "sourceIds": [
        "source-16bb921e662a5173"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-16bb921e662a5173",
          "locator": "TransparentUpgradeableProxy; UUPSUpgradeable"
        }
      ],
      "scope": {
        "collection": "defi",
        "dataAsOf": null,
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T18:17:57.897Z",
        "reviewer": "automated independent verification — DeFi content-pass reviewer",
        "notes": [
          "Reopened ERC20, ERC4626, Aave Pool, Chainlink feed timestamp/suitability checks and OpenZeppelin proxy documentation. Read the composed-position paragraph together with the unchanged interface and persistent-dependency sections.",
          "Narrowed the changed paragraph from withdrawal queue to withdrawal limit, because ERC4626 directly describes limits and does not establish an asynchronous queue for every example vault.",
          "The hypothetical share-as-collateral example identifies accounting, oracle, lending-threshold and upgrade dependencies without asserting that every market accepts every share token."
        ]
      }
    }
  ],
  "sources": [
    {
      "id": "erc20",
      "label": "ERC-20: Token Standard",
      "publisher": "Ethereum Improvement Proposals",
      "url": "https://eips.ethereum.org/EIPS/eip-20",
      "locator": "Methods: approve, allowance, transferFrom",
      "note": "The token spending allowance is separate from a website connection.",
      "version": "ERC-20 final",
      "checkedAt": "2026-10-02",
      "recordId": "source-ac4ad503a55127bb",
      "contentSha256": null
    },
    {
      "id": "vault",
      "label": "ERC-4626: Tokenized Vaults",
      "publisher": "Ethereum Improvement Proposals",
      "url": "https://eips.ethereum.org/EIPS/eip-4626",
      "locator": "Specification; Security Considerations",
      "note": "Vault shares, assets, previews, withdrawal limits and rounding.",
      "version": "ERC-4626 final",
      "checkedAt": "2026-10-02",
      "recordId": "source-0500eb916f66cd39",
      "contentSha256": null
    },
    {
      "id": "oracle",
      "label": "Oracles",
      "publisher": "ethereum.org contributors",
      "url": "https://ethereum.org/developers/docs/oracles/",
      "locator": "What is an oracle?; The oracle problem",
      "note": "External observations and the trust boundary between data and consensus.",
      "version": null,
      "checkedAt": "2026-10-02",
      "recordId": "source-72dd33a43173ecf1",
      "contentSha256": null
    },
    {
      "id": "proxy",
      "label": "Proxy contracts",
      "publisher": "OpenZeppelin",
      "url": "https://docs.openzeppelin.com/contracts/5.x/api/proxy",
      "locator": "TransparentUpgradeableProxy; UUPSUpgradeable",
      "note": "Proxy implementation changes and the authorization requirement.",
      "version": "OpenZeppelin Contracts 5.x",
      "checkedAt": "2026-10-02",
      "recordId": "source-16bb921e662a5173",
      "contentSha256": null
    },
    {
      "id": "edition-aave-pool",
      "label": "Pool",
      "publisher": "Aave",
      "url": "https://aave.com/docs/aave-v3/smart-contracts/pool",
      "locator": "supply; withdraw; borrow; liquidationCall",
      "note": "Collateralization, available liquidity and liquidation operations.",
      "version": "Aave V3 documentation",
      "checkedAt": "2026-10-02T17:03:44.834Z",
      "contentSha256": "73645ef223ef64419c7301794cfc4089bc79b6bfce71373b0125fd5e9a78f1b2",
      "recordId": "source-b35859a766315ce4"
    },
    {
      "id": "edition-chainlink-feeds",
      "label": "Using Data Feeds",
      "publisher": "Chainlink",
      "url": "https://docs.chain.link/data-feeds/overview",
      "locator": "Heartbeat and deviation thresholds; Data quality",
      "note": "Feed update conditions, chain/feed-specific configuration and consumer checks.",
      "version": null,
      "checkedAt": "2026-10-02T17:38:46.139Z",
      "contentSha256": "37f2068378558fa727b04d3bd68118ec6000f2d67e90a7fa6a2c8d965ac2f670",
      "recordId": "source-48b910b0d31d6788"
    }
  ],
  "related": {
    "articles": [
      "yield-vaults",
      "blockchain-oracles",
      "protocol-upgrades-and-admin-powers"
    ],
    "dossiers": [],
    "wallets": []
  },
  "revisionHistory": [
    {
      "date": "2026-10-02",
      "kind": "published",
      "summary": "First publication after primary-source research and independent automated verification."
    },
    {
      "date": "2026-10-02",
      "kind": "substantive-edit",
      "summary": "Expanded explanation: Map each dependency in a composed position. Worked examples are illustrative; source checks and independent verification are recorded separately."
    }
  ],
  "citation": "Degrees of Satoshi editorial project. “DeFi composability: reusing capabilities and inheriting dependencies.” Published 2026-10-02; updated 2026-10-02. https://degreesofsatoshi.com/encyclopedia/defi-composability/"
}
