Écrire un contrat intelligent
Dès le 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.
Même si Chiliz Chain est compatible EVM, la traiter exactement comme Ethereum peut entraîner des problèmes d'utilisabilité, notamment en ce qui concerne les décimales des jetons et la mécanique du 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 portefeuille configuré pour Spicy Testnet (pour le développement) ou Chiliz Chain Mainnet (pour la production).
Se connecter à Chiliz ChainDeuxièmement, vous aurez besoin de $CHZ pour payer le déploiement en gas sur Testnet et Mainnet. Alors que vous pouvez acheter des $CHZ Mainnet sur n'importe quelle plateforme d'échange crypto, vous pouvez utiliser des faucets pour les jetons Testnet.
Obtenir des jetons testnet gratuitsEn termes d'outillage, vous pouvez vous appuyer sur Hardhat ou Remix. Voir par exemple :
Déployer avec RemixEnfin, 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 sur le plan du code, les jetons CAP-20 ont une configuration spécifique pour les décimales. En bref : ils utilisent 0 décimale, alors que les jetons ERC-20 standards utilisent 18 décimales.
À propos des Fan TokensPar conséquent, si vous déployez un Fan Token avec 18 décimales, il peut ne pas s'afficher correctement dans les portefeuilles de l'écosystème ou ne pas être compatible avec de futures intégrations Socios.com.
Bonnes pratiques pour écrire un contrat intelligent
Utiliser des bibliothèques éprouvées (OpenZeppelin)
Ne commencez pas à 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 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 standard, vous vous assurez que vos jetons sont compatibles avec des portefeuilles connus (comme MetaMask) et l'écosystème Chiliz (Socios.com).
Bonnes pratiques générales pour l'EVM
Indépendamment de la chaîne, ces trois schémas sont non négociables pour un développement Solidity sécurisé.
Le schéma « Checks-Effects-Interactions »
Ceci est votre principale défense contre les attaques par réentrance. Structurez toujours vos fonctions dans cet ordre exact :
Vérifications : Validez les entrées et les conditions (par ex.,
requireinstructions).Effets : Mettez à jour l'état du contrat (par ex., réduire les soldes).
Interactions : Interagissez avec d'autres contrats ou envoyez des fonds (par ex.,
transfer).
Contrôle d'accès robuste
Ne laissez jamais des fonctions sensibles sans protection. Si une fonction émet des jetons, modifie des frais ou met à niveau la logique, elle doit être restreinte.
Simple : Utilisez
Ownablepour les contrats à administrateur unique.Complexe : Utilisez
AccessControlpour les contrats nécessitant plusieurs rôles (par ex.,MINTER_ROLE,ADMIN_ROLE).
Validation des entrées
Supposez que toutes les entrées sont malveillantes. Utilisez require() instructions 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 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 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 ex., une pool de staking 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
1e18dans vos calculs si votre contrat est censé être générique. Utilisez la fonctiontoken.decimals()dynamiquement.
Version de l'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 sensiblement moins chères que sur Ethereum, mais un code non optimisé peut quand même provoquer de la congestion ou des transactions échouées lors d'événements à fort trafic (par ex., pendant un match en direct).
Voici trois façons d'économiser du gas :
Utilisez des erreurs personnalisées : au lieu de longues chaînes de caractères dans
require, utilisezerrordéfinitions pour économiser du gas.Ordonnez vos variables d'état pour les faire tenir dans des slots de 32 octets. Placez
uint128,address, etboolles uns à côté des autres lorsque c'est possible.Privilégiez
externalpour 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 ?