Écrire un contrat intelligent

À partir du moment où vous décidez de créer une dApp sur Chiliz Chain, vous devez prendre en compte les spécificités de notre blockchain.

Bien que Chiliz Chain soit compatible avec l’EVM, le traiter exactement comme Ethereum peut entraîner des problèmes d’utilisabilité, notamment en ce qui concerne les décimales des jetons et les mécanismes de gas.

Explorons !

Prérequis

Environnement

Avant de commencer à écrire votre contrat, assurez-vous que votre environnement est prêt.

Tout d’abord, vous devez avoir un wallet configuré pour Spicy Testnet (pour le développement) ou Chiliz Chain Mainnet (pour la production).

Se connecter à Chiliz Chainchevron-right

Ensuite, vous aurez besoin de $CHZ pour payer le gas de déploiement sur Testnet et Mainnet. Bien que vous puissiez acheter du $CHZ Mainnet sur n’importe quelle plateforme d’échange crypto, vous pouvez compter sur des faucets pour les jetons de Testnet.

Obtenir des jetons de testnet gratuitschevron-right

En matière d’outillage, vous pouvez compter sur Hardhat ou Remix. Voir par exemple :

Déployer avec Remixchevron-right

Enfin, les contrats Chiliz Chain sont écrits en langage Solidity :

Fan Tokens / CAP-20

L’aspect le plus spécifique de Chiliz Chain est la norme CAP-20, utilisée pour les Fan Tokens.

Bien que techniquement identiques à la norme ERC-20 en termes de code, les jetons CAP-20 ont une configuration spécifique pour les décimales. En bref : elle utilise 0 décimale, tandis que les jetons ERC-20 classiques utilisent 18 décimales.

À propos des Fan Tokenschevron-right

Par conséquent, si vous déployez un Fan Token avec 18 décimales, il peut ne pas s’afficher correctement dans les wallets de l’écosystème ou être compatible avec les futures intégrations de Socios.com.

Bonnes pratiques pour écrire un smart contract

Utiliser des bibliothèques éprouvées au combat (OpenZeppelin)

Ne commencez pas par créer votre contrat à partir de zéro. La pratique de sécurité la plus efficace consiste à baser votre code sur des standards audités par la communauté, afin de réduire le risque de vulnérabilités

Pour le développement sur Chiliz Chain, nous recommandons fortement d’utiliser OpenZeppelin Contractsarrow-up-right. Ils fournissent des implémentations sécurisées et validées par la communauté pour les contrats de jetons.

En utilisant des contrats standards, vous garantissez que vos jetons sont compatibles avec les wallets connus (comme MetaMask) et l’écosystème Chiliz (Socios.com).

Bonnes pratiques EVM générales

Quelle que soit la chaîne, ces trois schémas sont non négociables pour un développement Solidity sécurisé.

Le schéma « Checks-Effects-Interactions »

C’est votre principale défense contre les attaques par réentrancearrow-up-right. Structurez toujours vos fonctions dans cet ordre exact :

  1. Vérifications : validez les entrées et les conditions (par exemple, require ).

  2. Effets : mettez à jour l’état du contrat (par exemple, réduisez les soldes).

  3. Interactions : interagissez avec d’autres contrats ou envoyez des fonds (par exemple, transfert).

Contrôle d’accès robuste

Ne laissez jamais des fonctions sensibles sans protection. Si une fonction frappe des jetons, modifie des frais ou met à niveau la logique, elle doit être restreinte.

  • Simple : utilisez Ownable pour les contrats à administrateur unique.

  • Complexe : utilisez AccessControl pour les contrats nécessitant plusieurs rôles (par exemple, MINTER_ROLE, ADMIN_ROLE).

Validation des entrées

Considérez que toutes les entrées sont malveillantes. Utilisez des instructions require() au tout début de vos fonctions pour valider les paramètres.

Par exemple :

  • Vérifiez les adresses nulles (address(0)).

  • Vérifiez les montants nuls lors des transferts.

  • Vérifiez que les longueurs des tableaux correspondent si vous transmettez plusieurs tableaux.

  • etc.

Détails d’implémentation spécifiques à Chiliz

Bien que Chiliz Chain soit compatible avec l’EVM, certaines « règles locales » s’appliquent, notamment en ce qui concerne les décimales des jetons et les versions de l’EVM.

Conformité CAP-20 (Fan Tokens)

Si vous écrivez un contrat qui interagit avec des Fan Tokens (par exemple, un Staking Pool pour $PSG ou $BAR), vous devez gérer 0 décimale.

Cela signifie :

  • Ne supposez pas 1 Token = 10^18 unités. Pour les Fan Tokens, 1 Token = 1 unité.

  • Évitez de coder en dur 1e18 dans vos calculs si votre contrat est censé être générique. Utilisez dynamiquement la fonction token.decimals() .

Version EVM et compilateur

Chiliz Chain est compatible avec la version EVM « Shanghai ». La version recommandée de Solidity est 0.8.24.

Optimisation du gas sur Chiliz

Les transactions sur Chiliz Chain sont nettement moins chères que sur Ethereum, mais un code non optimisé peut tout de même entraîner de la congestion ou des transactions échouées lors d’événements à forte affluence (par exemple, pendant un match en direct).

Voici trois façons d’économiser du gas :

  • Utilisez des erreurs personnalisées : au lieu de longs messages textuels dans require, utilisez error définitions pour économiser du gas.

  • Ordonnez vos variables d’état pour qu’elles tiennent dans des emplacements de 32 octets. Placez uint128, address , et bool les uns à côté des autres lorsque c’est possible.

  • Préférez externe pour les fonctions qui ne sont jamais appelées en interne par le contrat lui-même.

Mis à jour

Ce contenu vous a-t-il été utile ?