ERC-1155 permite vários tipos de token no mesmo contrato, com saldos empilháveis por tokenId. Ideal para lotes, consumíveis, edições numeradas ou quantidades fracionáveis do mesmo ativo.

Por que usar ERC-1155?

Transfira vários tokenId em uma transação. Útil para recompensas e pacotes.
Misture itens únicos (amount: 1) e empilháveis (amount: N) no mesmo contrato.
Um contrato para muitos tipos de ativo, em vez de dezenas de contratos ERC-20/721.
100 unidades do mesmo item = um saldo, não 100 NFTs separados.

Casos de uso

  • Lotes de certificados ou créditos por quantidade
  • Vouchers em massa
  • Materiais ou insumos com estoque
  • Edições limitadas com várias cópias

Metadata

{
  "name": "Crédito de serviço",
  "description": "Pacote de 10 unidades",
  "image": "https://assets.example.com/credito.png",
  "attributes": [
    { "trait_type": "Quantidade", "value": 10 }
  ]
}
Na primeira mint de um tokenId, defina a metadata. Mint seguintes do mesmo ID só aumentam o amount.

Deploy via código

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.28;

import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

contract CityItems is ERC1155, Ownable {
    constructor() ERC1155("https://assets.example.com/metadata/{id}.json") Ownable(msg.sender) {}

    function mint(address to, uint256 id, uint256 amount) external onlyOwner {
        _mint(to, id, amount, "");
    }
}

Mint em lote (exemplo)

const ids = [1, 2, 3];
const amounts = [10, 5, 1];
await contract.mintBatch(playerAddress, ids, amounts, "0x");

ERC-721 vs ERC-1155

RecursoERC-721ERC-1155
TipoSempre únicoÚnico ou empilhável
Gas em loteMaior por itemMais eficiente
Uso típicoCredencial, licençaLotes, consumíveis

Próximos passos

ERC-721

Ativos únicos

Deploy na testnet

Publicar o contrato

Visão geral

Todos os padrões ERC