ERC-20 representa ativos fungíveis: cada unidade é igual e intercambiável. Use para créditos de serviço, pontos de programa municipal, tokens de utilidade interna ou qualquer saldo divisível.

Por que usar ERC-20?

Saldos verificáveis na blockchain e transferíveis entre carteiras.
Padrão suportado por carteiras e bibliotecas (approve, transfer, transferFrom).
Distribua recompensas, cashback ou créditos com mint controlado pelo owner.
totalSupply e transferências auditáveis via explorer e indexadores.
Na BrightCity Chain Testnet, ETH nativo paga gas. ERC-20 só existe depois do deploy do contrato de token.

Deploy via código

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

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

contract ServiceCredit is ERC20, Ownable {
    constructor() ERC20("Service Credit", "SVC") Ownable(msg.sender) {
        _mint(msg.sender, 1_000_000 * 10 ** decimals());
    }

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

Uso comum

Consultar saldo

const balance = await token.balanceOf(walletAddress);

Transferir

await token.transfer(recipient, amount);

Aprovar contrato (marketplace / app)

await token.approve(spenderContract, amount);
await spenderContract.pullFromUser(user, amount); // no seu contrato

Economia do token

Defina teto de supply, mecanismos de burn ou sinks no jogo/serviço.
MINTER_ROLE no backend; usuários finais só recebem transferências.
Rate limit off-chain; exija ações reais antes de mint.

Próximos passos

Deploy na testnet

Publicar o contrato

Gas e transações

ETH nativo e fees

Visão geral

Todos os padrões ERC