7 astuces pratiques pour le développement de smart contracts pour soutenir les projets DEX

robot
Création du résumé en cours

Partage de petits conseils pour le développement de contrats

Récemment, en développant un projet d'échange décentralisé, j'ai consulté le code de certains DEX connus et appris de nombreuses techniques intéressantes de développement de contrats. En tant que débutant qui vient juste de plonger dans le développement DeFi, ces techniques m'ont beaucoup inspiré, et je suis sûr qu'elles seront également utiles à d'autres amis qui souhaitent apprendre le développement de contrats intelligents.

Web3 Débutant Série : Les petites astuces de développement de contrats que j'ai apprises du code d'Uniswap

Adresse du contrat à terme

Les adresses de contrat déployées semblent généralement aléatoires, car elles sont liées au nonce. Cependant, dans certains scénarios, nous devons déduire l'adresse du contrat à partir des informations de la transaction. Cela peut être réalisé en utilisant la méthode CREATE2 pour créer un contrat, en ajoutant un paramètre salt lors de la création du contrat. L'adresse générée de cette manière est prévisible, suivant la logique "nouvelle adresse = hash('0xFF', adresse du créateur, salt, initcode)".

Série pour débutants Web3 : Les astuces de développement de contrats que j'ai apprises du code Uniswap

Utiliser des fonctions de rappel

Dans certains cas, il est utile que le contrat A appelle une méthode du contrat B, qui rappelle ensuite A dans la méthode appelée. Par exemple, dans un DEX, lorsque la méthode swap du contrat de la pool de liquidité est appelée, elle rappelle swapCallback en passant la quantité de Token réellement nécessaire. L'appelant doit transférer les Tokens requis dans la pool de liquidité lors du rappel, ce qui garantit l'exécution complète et la sécurité de la méthode swap.

Transmettre des informations par exception

Lors de l'estimation des transactions, il est possible d'encapsuler l'exécution de la méthode swap dans un try-catch. Comme il n'y a pas d'échange réel de Token lors de l'estimation, une erreur sera générée. Il est possible de lancer des erreurs spéciales dans la fonction de rappel, puis de les capturer et d'en extraire les informations nécessaires. Cette méthode évite de modifier spécifiquement la méthode swap pour les besoins d'estimation, rendant la logique plus simple.

Web3 Débutants : Les petites astuces de développement de contrats que j'ai apprises du code Uniswap

Problème de précision du traitement des grands nombres

Lorsqu'il s'agit de calculs de prix et de liquidité, afin d'éviter la perte de précision due à la division, il est possible de décaler les valeurs de 96 bits vers la gauche ( ce qui équivaut à multiplier par 2^96) avant de procéder au calcul. Bien qu'il y ait théoriquement encore une légère perte de précision, cela reste dans une plage acceptable.

Calcul des revenus par le biais du partage

Pour les revenus de frais de transaction des fournisseurs de liquidité, il n'est pas nécessaire d'enregistrer chaque transaction. On peut enregistrer les frais totaux et les frais dus par unité de liquidité. Lors du retrait des LP, le montant pouvant être retiré est calculé en fonction de la liquidité détenue. Cela ressemble au principe des dividendes d'actions.

Série pour débutants Web3 : les astuces de développement de contrats que j'ai apprises du code Uniswap

Combinaison de données on-chain et off-chain

Toutes les informations n'ont pas besoin d'être mises en chaîne ou récupérées de la chaîne. Par exemple, les listes de pools de transactions et d'autres informations peuvent être stockées dans des bases de données traditionnelles et synchronisées régulièrement avec la chaîne. Cela peut améliorer l'efficacité et réduire les coûts. Bien sûr, les transactions clés doivent toujours être effectuées sur la chaîne.

Fractionnement de contrat et utilisation de contrats standard

Les grands projets peuvent être divisés en plusieurs contrats déployés de manière pratique, ou en scindant le code par héritage. Il est également possible d'utiliser des contrats standard existants comme l'ERC721 pour améliorer l'efficacité du développement. Par exemple, utiliser des NFT pour gérer des positions de liquidité.

Web3 Débutant Série : Les petits conseils de développement de contrats que j'ai appris du code Uniswap

Pour comprendre en profondeur ces techniques, le meilleur moyen est de développer par vous-même une version simplifiée d'un DEX. En pratique, vous comprendrez plus profondément les différentes approches de conception et vous apprendrez également plus de connaissances pratiques. J'espère que ces partages vous inspireront et vous aideront.

Voir l'original
Cette page peut inclure du contenu de tiers fourni à des fins d'information uniquement. Gate ne garantit ni l'exactitude ni la validité de ces contenus, n’endosse pas les opinions exprimées, et ne fournit aucun conseil financier ou professionnel à travers ces informations. Voir la section Avertissement pour plus de détails.
  • Récompense
  • 2
  • Partager
Commentaire
0/400
AirdropHustlervip
· 07-19 11:31
Cette vague de compétences de développement est considérée comme des bénéfices modestes pour le frère du commerce.
Voir l'originalRépondre0
0xSherlockvip
· 07-16 20:55
Le tutoriel standard pour débutants.
Voir l'originalRépondre0
  • Épingler
Trader les cryptos partout et à tout moment
qrCode
Scan pour télécharger Gate app
Communauté
Français (Afrique)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)