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

Rédiger un smart contract

Rédigez des contrats Solidity compatibles Chiliz Chain (v0.8.24, EVM Shanghai) : décimales des tokens CAP-20, mécanique du gas, et différences EVM par rapport à Ethereum.

Dès lors que 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 EVM, la traiter exactement comme Ethereum peut entraîner des problèmes d'utilisabilité, notamment en ce qui concerne les décimales des tokens et la mécanique du gas.

Explorons cela ensemble !

Prérequis

Environnement

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

Premièrement, vous devez disposer d'un portefeuille configuré pour le Spicy Testnet (pour le développement) ou pour le Mainnet de Chiliz Chain (pour la production).

Se connecter à Chiliz Chain

Deuxièmement, vous aurez besoin de $CHZ pour payer le déploiement sur le Testnet et le Mainnet. Si vous pouvez acheter des $CHZ Mainnet sur n'importe quel exchange crypto, vous pouvez vous appuyer sur des faucets pour les tokens Testnet.

Obtenir des tokens de testnet gratuits

En termes d'outils, vous pouvez utiliser Hardhat ou Remix. Voir par exemple :

Déployer avec Remix

Enfin, les contrats Chiliz Chain sont rédigés en langage Solidity :

Fan Tokens / CAP-20

L'aspect le plus spécifique de Chiliz Chain est le standard CAP-20, utilisé pour les Fan Tokens.

Bien que techniquement identique au code du standard ERC-20, les tokens CAP-20 ont une configuration spécifique pour les décimales. En résumé : il utilise 0 décimale, tandis que les tokens ERC-20 classiques utilisent 18 décimales.

À propos des Fan Tokens

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

Bonnes pratiques pour la rédaction d'un smart contract

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

Ne partez pas de zéro pour créer votre contrat. 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 Contracts. Ils fournissent des implémentations sécurisées et vérifiées par la communauté pour les contrats de tokens.

En utilisant des contrats standards, vous assurez la compatibilité de vos tokens avec les portefeuilles connus (comme MetaMask) et l'écosystème Chiliz (Socios.com).

Bonnes pratiques EVM générales

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

Le modèle "Checks-Effects-Interactions"

Il s'agit de votre principale défense contre les attaques de réentrance. Structurez toujours vos fonctions dans cet ordre précis :

  1. Vérifications (Checks) : Valider les entrées et les conditions (ex. : instructions require).

  2. Effets (Effects) : Mettre à jour l'état du contrat (ex. : réduire les soldes).

  3. Interactions : Interagir avec d'autres contrats ou envoyer des fonds (ex. : transfer).

Contrôle d'accès robuste

Ne laissez jamais des fonctions sensibles non protégées. Si une fonction crée des tokens, modifie des frais ou met à jour la logique, elle doit être restreinte.

  • Simple : Utilisez Ownable pour les contrats à administration unique.

  • Complexe : Utilisez AccessControl pour les contrats nécessitant plusieurs rôles (ex. : 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 de tableaux correspondent si vous passez plusieurs tableaux.

  • etc.

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

Bien que Chiliz Chain soit compatible EVM, certaines "règles locales" s'appliquent, notamment concernant les décimales des tokens et les versions EVM.

Conformité CAP-20 (Fan Tokens)

Si vous rédigez un contrat qui interagit avec des Fan Tokens (ex. : un pool de staking pour $PSG ou $BAR), vous devez gérer 0 décimale.

Cela signifie :

  • Ne supposez pas que 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 la fonction token.decimals() de manière dynamique.

Version EVM et compilateur

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

Optimisation du gas sur Chiliz

Les transactions sur Chiliz Chain sont nettement moins chères qu'Ethereum, mais un code non optimisé peut tout de même entraîner des congestions ou des transactions échouées lors d'événements à fort trafic (ex. : pendant un match en direct).

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

  • Utilisez des erreurs personnalisées : Au lieu de messages de chaîne de caractères longs dans require, utilisez des définitions error pour économiser du gas.

  • Ordonnez vos variables d'état pour qu'elles tiennent dans des slots de 32 octets. Placez les uint128, address et bool côte à côte autant que possible.

  • Préférez external 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 ?