{
  "$schema": "https://degreesofsatoshi.com/encyclopedia/schemas/article-v1.json",
  "schemaVersion": "1.0.0",
  "id": "erc-1155-multi-tokens",
  "canonical": "https://degreesofsatoshi.com/encyclopedia/erc-1155-multi-tokens/",
  "collection": "ethereum",
  "title": "ERC-1155: many token types and batch transfers in one contract",
  "description": "Use a game-inventory example to learn ERC-1155 balances, token IDs, batch transfers, receiving checks and the scope of operator approvals.",
  "aliases": [
    "ERC1155",
    "multi-token standard",
    "batch token transfer"
  ],
  "dates": {
    "published": "2026-10-02",
    "modified": "2026-10-02",
    "verified": "2026-10-02T15:10:23.134Z",
    "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": "ERC-1155 lets one contract manage multiple token types, each identified by an ID with account balances. Those types can represent interchangeable items, unique items or a mixture. It supports batched transfers and balance queries. The interface alone does not guarantee scarcity, fixed metadata or a particular game or asset right.",
    "claimId": "erc-1155-multi-tokens-quick-answer",
    "sourceIds": [
      "erc1155"
    ]
  },
  "keyFacts": [
    {
      "label": "Accounting",
      "value": "Balances are tracked for account-and-token-ID pairs",
      "sourceIds": [
        "erc1155"
      ],
      "id": "accounting",
      "claimId": "erc-1155-multi-tokens-fact-accounting"
    },
    {
      "label": "Batching",
      "value": "Several IDs and amounts can move in one operation",
      "sourceIds": [
        "erc1155"
      ],
      "id": "batching",
      "claimId": "erc-1155-multi-tokens-fact-batching"
    },
    {
      "label": "Permission",
      "value": "Operator approval can cover all the owner’s types in that contract",
      "sourceIds": [
        "erc1155"
      ],
      "id": "permission",
      "claimId": "erc-1155-multi-tokens-fact-permission"
    }
  ],
  "prerequisites": [
    "erc-20-tokens",
    "erc-721-nfts"
  ],
  "sections": [
    {
      "id": "inventory-model",
      "heading": "One contract can describe a whole inventory",
      "sourceIds": [
        "erc1155",
        "erc721"
      ],
      "paragraphs": [
        "ERC-1155 associates balances with token IDs. A particular ID might represent many identical tickets, while another represents a unique item with a supply of one. The application decides how each type is issued and used.",
        "This differs from ERC-721’s single-owner-per-token-ID model. With ERC-1155, more than one account can hold a quantity of the same ID when the implementation makes that type fungible."
      ]
    },
    {
      "id": "batch-example",
      "heading": "Example: transfer two potions and one sword together",
      "sourceIds": [
        "erc1155"
      ],
      "paragraphs": [
        "In an illustrative game, ID 10 represents potions and ID 20 represents swords. An account holding five potions and one sword can batch-transfer quantities two and one to another account.",
        "After a successful transfer, the sender holds three potions and no swords; the recipient’s corresponding balances increase. The operation records IDs and quantities together, avoiding ambiguity about which amount belongs to which type."
      ]
    },
    {
      "id": "receiving-and-approval",
      "heading": "Batching changes the interface, not the need for permission",
      "sourceIds": [
        "erc1155",
        "interacting"
      ],
      "paragraphs": [
        "The standard specifies receiving checks for contract destinations and both single and batch transfer events. Software needs to handle the relevant event shape rather than assuming every transfer log describes one item.",
        "Its operator approval is broad within that contract. Approving an operator is not merely acknowledging that a game can display an inventory; it can authorize that operator to move the owner’s token types according to the contract rules."
      ]
    },
    {
      "id": "supply-and-meaning",
      "heading": "The application supplies scarcity and real-world meaning",
      "sourceIds": [
        "erc1155",
        "contracts"
      ],
      "paragraphs": [
        "A token type is not inherently scarce just because it uses a multi-token standard. Inspect issuance and administrative rules before drawing conclusions about the maximum number of items.",
        "Metadata may point to external descriptions or media. The standard does not establish that a game will remain available or that an item represents a legally enforceable outside claim."
      ]
    }
  ],
  "faq": [
    {
      "question": "Can ERC-1155 represent both fungible tokens and NFTs?",
      "answer": "Yes. A single contract can manage many types, and an implementation can give one ID many interchangeable units while another has a unique unit.",
      "sourceIds": [
        "erc1155"
      ]
    },
    {
      "question": "Does a batch transfer always cost less?",
      "answer": "Batching can share overhead, but the cost depends on the implementation and operation. The standard does not promise a universal fee reduction for every case.",
      "sourceIds": [
        "erc1155",
        "gas"
      ]
    },
    {
      "question": "Does an ERC-1155 approval apply to only one item?",
      "answer": "The standard operator approval applies across the owner’s token types in that contract. It should not be confused with an approval for just one chosen ID.",
      "sourceIds": [
        "erc1155"
      ]
    }
  ],
  "claims": [
    {
      "id": "erc-1155-multi-tokens-quick-answer",
      "articleSlug": "erc-1155-multi-tokens",
      "statement": "ERC-1155 lets one contract manage multiple token types, each identified by an ID with account balances. Those types can represent interchangeable items, unique items or a mixture. It supports batched transfers and balance queries. The interface alone does not guarantee scarcity, fixed metadata or a particular game or asset right.",
      "sourceIds": [
        "source-ebda78c6293f67ad"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-ebda78c6293f67ad",
          "locator": "Abstract; specification; safe transfer rules; metadata; approval"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": null,
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T15:10:23.134Z",
        "reviewer": "automated independent verification",
        "notes": [
          "Read batch quantities, ID/account balances, receiver checks and approval-for-all scope.5−2=3;standard does not promise universal savings."
        ]
      }
    },
    {
      "id": "erc-1155-multi-tokens-fact-accounting",
      "articleSlug": "erc-1155-multi-tokens",
      "statement": "Accounting: Balances are tracked for account-and-token-ID pairs",
      "sourceIds": [
        "source-ebda78c6293f67ad"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-ebda78c6293f67ad",
          "locator": "Abstract; specification; safe transfer rules; metadata; approval"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": null,
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T15:10:23.134Z",
        "reviewer": "automated independent verification",
        "notes": [
          "Read batch quantities, ID/account balances, receiver checks and approval-for-all scope.5−2=3;standard does not promise universal savings."
        ]
      }
    },
    {
      "id": "erc-1155-multi-tokens-fact-batching",
      "articleSlug": "erc-1155-multi-tokens",
      "statement": "Batching: Several IDs and amounts can move in one operation",
      "sourceIds": [
        "source-ebda78c6293f67ad"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-ebda78c6293f67ad",
          "locator": "Abstract; specification; safe transfer rules; metadata; approval"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": null,
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T15:10:23.134Z",
        "reviewer": "automated independent verification",
        "notes": [
          "Read batch quantities, ID/account balances, receiver checks and approval-for-all scope.5−2=3;standard does not promise universal savings."
        ]
      }
    },
    {
      "id": "erc-1155-multi-tokens-fact-permission",
      "articleSlug": "erc-1155-multi-tokens",
      "statement": "Permission: Operator approval can cover all the owner’s types in that contract",
      "sourceIds": [
        "source-ebda78c6293f67ad"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-ebda78c6293f67ad",
          "locator": "Abstract; specification; safe transfer rules; metadata; approval"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": null,
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T15:10:23.134Z",
        "reviewer": "automated independent verification",
        "notes": [
          "Read batch quantities, ID/account balances, receiver checks and approval-for-all scope.5−2=3;standard does not promise universal savings."
        ]
      }
    }
  ],
  "sources": [
    {
      "id": "erc1155",
      "label": "ERC-1155: Multi Token Standard",
      "publisher": "Ethereum Request for Comments",
      "url": "https://raw.githubusercontent.com/ethereum/ERCs/583335b7912e51b1ea515bb662532dd29b27e786/ERCS/erc-1155.md",
      "canonicalUrl": "https://eips.ethereum.org/EIPS/eip-1155",
      "version": "583335b7912e51b1ea515bb662532dd29b27e786",
      "checkedAt": "2026-10-02T14:35:55.247570+00:00",
      "locator": "Abstract; specification; safe transfer rules; metadata; approval",
      "sha256": "beac04fc902314ec0d60000e3bcb73cb7080d586f6a718b6b35a6d68a8ac98b1",
      "note": "Defines per-ID balances, batched transfers, receiver checks and operator-wide approval.",
      "recordId": "source-ebda78c6293f67ad",
      "contentSha256": "beac04fc902314ec0d60000e3bcb73cb7080d586f6a718b6b35a6d68a8ac98b1"
    },
    {
      "id": "erc721",
      "label": "ERC-721: Non-Fungible Token Standard",
      "publisher": "Ethereum Request for Comments",
      "url": "https://raw.githubusercontent.com/ethereum/ERCs/583335b7912e51b1ea515bb662532dd29b27e786/ERCS/erc-721.md",
      "canonicalUrl": "https://eips.ethereum.org/EIPS/eip-721",
      "version": "583335b7912e51b1ea515bb662532dd29b27e786",
      "checkedAt": "2026-10-02T14:35:55.241155+00:00",
      "locator": "Specification; metadata extension; transfer and operator methods",
      "sha256": "238787165c08ac748928ffad57a24045802174bb38220af9e7b63c44778b7372",
      "note": "Defines token-specific ownership, transfer approvals, metadata pointers and receiving-contract checks.",
      "recordId": "source-b32b4b786f2e09c9",
      "contentSha256": "238787165c08ac748928ffad57a24045802174bb38220af9e7b63c44778b7372"
    },
    {
      "id": "interacting",
      "label": "Interacting with smart contracts",
      "publisher": "ethereum.org contributors",
      "url": "https://raw.githubusercontent.com/ethereum/ethereum-org-website/dcc900ff125891da5b6c723b905a7113cf1bd864/public/content/developers/docs/smart-contracts/interacting/index.md",
      "canonicalUrl": "https://ethereum.org/en/developers/docs/smart-contracts/interacting/",
      "version": "dcc900ff125891da5b6c723b905a7113cf1bd864",
      "checkedAt": "2026-10-02T14:35:40.398262+00:00",
      "locator": "Reading; writing; understanding contract ABIs; events and logs; simulating",
      "sha256": "0c969a8627399edfcae7e30d5fa1fcc02218265808be25f52a9a9a46da7dc29f",
      "note": "Supports read-only calls, state-changing transactions, ABI decoding and limits of simulation.",
      "recordId": "source-64ab603c23f79017",
      "contentSha256": "0c969a8627399edfcae7e30d5fa1fcc02218265808be25f52a9a9a46da7dc29f"
    },
    {
      "id": "contracts",
      "label": "Introduction to smart contracts",
      "publisher": "ethereum.org contributors",
      "url": "https://raw.githubusercontent.com/ethereum/ethereum-org-website/dcc900ff125891da5b6c723b905a7113cf1bd864/public/content/developers/docs/smart-contracts/index.md",
      "canonicalUrl": "https://ethereum.org/en/developers/docs/smart-contracts/",
      "version": "dcc900ff125891da5b6c723b905a7113cf1bd864",
      "checkedAt": "2026-10-02T14:35:40.398357+00:00",
      "locator": "What is a smart contract; a digital vending machine; limitations; multisig",
      "sha256": "e0933f91c6c58d30c1f5f05cac3c45529bf34dcb0711bbaa9a4dfe2b9b9946db",
      "note": "Supports contract code/state, deterministic rules, illustrative vending logic, external-data limits and multisignature access.",
      "recordId": "source-1bffcf35253de959",
      "contentSha256": "e0933f91c6c58d30c1f5f05cac3c45529bf34dcb0711bbaa9a4dfe2b9b9946db"
    },
    {
      "id": "gas",
      "label": "Gas and fees",
      "publisher": "ethereum.org contributors",
      "url": "https://raw.githubusercontent.com/ethereum/ethereum-org-website/dcc900ff125891da5b6c723b905a7113cf1bd864/public/content/developers/docs/gas/index.md",
      "canonicalUrl": "https://ethereum.org/en/developers/docs/gas/",
      "version": "dcc900ff125891da5b6c723b905a7113cf1bd864",
      "checkedAt": "2026-10-02T14:35:40.393022+00:00",
      "locator": "How are gas fees calculated; base fee; gas limit",
      "sha256": "5af7b13e15072d45f38e6fd48e414324c7229b6110d6f8f7fc14100e5153509d",
      "note": "Supports gas units, ETH/gwei units, base/priority fees, resource limits and charges for executed failed transactions.",
      "recordId": "source-a8f47d83f0f10a68",
      "contentSha256": "5af7b13e15072d45f38e6fd48e414324c7229b6110d6f8f7fc14100e5153509d"
    }
  ],
  "related": {
    "articles": [
      "erc-721-nfts",
      "ethereum-token-approvals",
      "ethereum-wallet-requests"
    ],
    "dossiers": [],
    "wallets": []
  },
  "revisionHistory": [
    {
      "date": "2026-10-02",
      "kind": "published",
      "summary": "First publication after primary-source research and independent automated verification."
    }
  ],
  "citation": "Degrees of Satoshi editorial project. “ERC-1155: many token types and batch transfers in one contract.” Published 2026-10-02; updated 2026-10-02. https://degreesofsatoshi.com/encyclopedia/erc-1155-multi-tokens/"
}
