For the complete documentation index, see llms.txt. This page is also available as Markdown.

Escrever um Smart Contract

Escreva contratos Solidity compatíveis com a Chiliz Chain: versões recomendadas de Solidity e EVM, decimais do token CAP-20, mecânica de gas e diferenças em relação ao Ethereum.

A partir do momento em que você decide criar um dApp na Chiliz Chain, precisa levar em conta as especificidades do nosso blockchain.

Embora a Chiliz Chain seja compatível com EVM, tratá-la exatamente como o Ethereum pode causar problemas de usabilidade, especialmente em relação a decimais de token e à mecânica de gas.

Vamos explorar!

Pré-requisitos

Ambiente

Antes de começar a escrever seu contrato, verifique se seu ambiente está pronto.

Primeiro, você deve ter uma carteira configurada para a Spicy Testnet (para desenvolvimento) ou para a Chiliz Chain Mainnet (para produção).

Conectar à Chiliz Chain

Em seguida, você precisará de $CHZ para pagar as taxas de gas de implantação tanto na Testnet quanto na Mainnet. Enquanto você pode comprar $CHZ da Mainnet em qualquer exchange de criptomoedas, pode usar faucets para tokens de Testnet.

Obter tokens de testnet gratuitos

Em termos de ferramentas, você pode usar Hardhat ou Remix. Veja, por exemplo:

Implantar com Remix

Por fim, os contratos da Chiliz Chain são escritos na linguagem Solidity:

Use as versões recomendadas de Solidity e EVM:

Versões recomendadas de Solidity e EVM para a Chiliz Chain:

  • Versão do compilador Solidity: 0.8.30 (ou inferior)

  • Versão de EVM alvo: prague

Fan Tokens / CAP-20

O aspecto mais específico da Chiliz Chain é o padrão CAP-20, usado para Fan Tokens.

Embora tecnicamente idêntico ao código do padrão ERC-20, os tokens CAP-20 têm uma configuração específica para decimais. Em resumo: usa 0 decimais, enquanto tokens ERC-20 regulares usam 18 decimais.

Sobre Fan Tokens

Portanto, se você implantar um Fan Token com 18 decimais, ele pode não ser exibido corretamente nas carteiras do ecossistema ou ser compatível com futuras integrações com a Socios.com.

Melhores práticas para escrever um smart contract

Use Bibliotecas Testadas (OpenZeppelin)

Não comece criando seu contrato do zero. A prática de segurança mais eficaz é basear seu código em padrões auditados pela comunidade, para reduzir o risco de vulnerabilidades.

Para o desenvolvimento na Chiliz Chain, recomendamos fortemente o uso de Contratos OpenZeppelin. Eles fornecem implementações seguras e verificadas pela comunidade para contratos de tokens.

Ao usar contratos padrão, você garante que seus tokens sejam compatíveis com carteiras conhecidas (como MetaMask) e com o ecossistema Chiliz (Socios.com).

Melhores Práticas Gerais de EVM

Independentemente da rede, estes três padrões são inegociáveis para o desenvolvimento seguro em Solidity.

O Padrão "Verificações-Efeitos-Interações"

Esta é sua principal defesa contra Ataques de Reentrância. Sempre estruture suas funções nesta ordem exata:

  1. Verificações: Valide entradas e condições (ex.: declarações require).

  2. Efeitos: Atualize o estado do contrato (ex.: reduzir saldos).

  3. Interações: Interaja com outros contratos ou envie fundos (ex.: transfer).

Controle de Acesso Robusto

Nunca deixe funções sensíveis desprotegidas. Se uma função cria tokens, altera taxas ou atualiza lógica, ela deve ser restrita.

  • Simples: Use Ownable para contratos com administrador único.

  • Complexo: Use AccessControl para contratos que exigem múltiplos papéis (ex.: MINTER_ROLE, ADMIN_ROLE).

Validação de Entrada

Assuma que todas as entradas são maliciosas. Use declarações require() no início de suas funções para validar parâmetros.

Por exemplo:

  • Verifique endereços zero (address(0)).

  • Verifique quantidades zero ao transferir.

  • Verifique se os comprimentos dos arrays coincidem ao passar múltiplos arrays.

  • etc.

Detalhes de Implementação Específicos da Chiliz

Embora a Chiliz Chain seja compatível com EVM, certas "regras locais" se aplicam, especialmente em relação a decimais de token.

Conformidade com CAP-20 (Fan Tokens)

Se você está escrevendo um contrato que interage com Fan Tokens (ex.: um Pool de Staking para $PSG ou $BAR), você deve lidar com 0 decimais.

Isso significa:

  • Não assuma 1 Token = 10^18 unidades. Para Fan Tokens, 1 Token = 1 unidade.

  • Evite fixar 1e18 em seu código matemático se o contrato for genérico. Use a função token.decimals() dinamicamente.

Otimização de Gas na Chiliz

As transações na Chiliz Chain são significativamente mais baratas que no Ethereum, mas código não otimizado ainda pode causar congestionamento ou falhas em transações durante eventos de alto tráfego (ex.: durante uma partida ao vivo).

Três formas de economizar gas:

  • Use Erros Personalizados: Em vez de mensagens longas em require, use definições de error para economizar gas.

  • Ordene suas variáveis de estado para caberem em slots de 32 bytes. Coloque uint128, address e bool próximos uns dos outros onde possível.

  • Prefira external para funções que nunca são chamadas internamente pelo próprio contrato.

Atualizado

Isto foi útil?