7 astuces pratiques pour le développement de contrats intelligents pour soutenir les projets DeFi

Partage de petites astuces sur le développement de contrats

Récemment, en rédigeant un tutoriel sur le développement d'échanges décentralisés, j'ai consulté le code de certains projets connus et appris de nombreuses techniques intéressantes de développement de contrats. En tant que débutant qui essaie pour la première fois de développer des contrats Defi, ces techniques m'ont beaucoup inspiré et je suis sûr qu'elles seront également utiles à d'autres amis souhaitant apprendre le développement de contrats.

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

Adresse de contrat prévisible

L'adresse d'un contrat déployé semble généralement aléatoire car elle est liée au nonce. Cependant, dans certaines situations, nous devons inférer l'adresse du contrat à partir des informations de transaction correspondantes, ce qui est très utile pour déterminer les autorisations de transaction ou pour obtenir l'adresse du pool.

Une méthode consiste à créer un contrat en utilisant la méthode CREATE2, en rendant l'adresse générée prévisible en ajoutant un paramètre salt. La logique de génération de la nouvelle adresse est : hash("0xFF", adresse du créateur, salt, initcode).

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

Utiliser astucieusement les fonctions de rappel

Dans certains scénarios, il est très utile que le contrat A appelle une méthode du contrat B, puis que B rappelle une méthode de A.

Par exemple, lors d'une transaction, la méthode swap du contrat de pool appellera swapCallback, en passant le nombre de tokens requis. L'appelant transférera les tokens dans le pool lors de l'appel de retour, ce qui garantit la sécurité et l'intégrité de la méthode swap, sans avoir besoin d'enregistrements de variables compliqués.

Transmettre des informations par exception

Lors de la simulation de transactions pour estimer les Tokens nécessaires, il est possible de lancer une erreur spéciale dans la fonction de rappel, puis de capturer cette erreur et d'en extraire les informations requises. Cela évite d'avoir à modifier spécialement la méthode de swap pour estimer les besoins, rendant la logique plus simple.

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

Résolution des problèmes de précision des grands nombres

Dans les scénarios impliquant des calculs, afin d'éviter la perte de précision lors des opérations de division, il est possible de décaler à gauche de 96 bits ( équivalent à multiplier par 2^96), puis de procéder à l'opération de division. Cela garantit la précision sans débordement.

Calcul des bénéfices par la méthode Share

Dans les cas où il est nécessaire d'enregistrer les revenus des frais de LP, il n'est pas possible d'enregistrer chaque LP à chaque transaction, car cela consommerait une quantité importante de Gas. On peut adopter un système similaire aux dividendes d'actions, en n'enregistrant que les frais totaux et les frais à attribuer par unité de liquidité, puis en calculant lors du retrait des LP en fonction de la liquidité détenue.

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

Informations auxiliaires de stockage hors chaîne

Toutes les informations n'ont pas besoin d'être enregistrées sur la chaîne ou d'être récupérées depuis la chaîne. Certaines données non critiques, telles que la liste des pools de transactions et les informations sur les pools, peuvent être stockées dans une base de données ordinaire et synchronisées régulièrement avec la chaîne. Cela peut améliorer les performances et l'efficacité.

Division de contrat et réutilisation de contrat standard

Les grands projets peuvent diviser les contrats en plusieurs parties ou les diviser et les maintenir par héritage. Ils peuvent également réutiliser des contrats standards tels que ERC721, ce qui améliore l'efficacité du développement.

Développez vous-même une version simplifiée d'une plateforme d'échange décentralisée pour mieux comprendre l'application de ces techniques. J'espère que ces partages seront utiles à tous.

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

DEFI17.91%
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
  • 7
  • Partager
Commentaire
0/400
HappyMinerUnclevip
· 08-04 03:00
C'est trop compliqué, n'est-ce pas ? Tous les mineurs, préparez-vous aux pièges.
Voir l'originalRépondre0
SadMoneyMeowvip
· 08-03 20:33
Ce type de contrat est vraiment trop luxueux...
Voir l'originalRépondre0
SandwichTradervip
· 08-01 04:28
Une nouvelle vague qui est mauvaise mais ne fait pas de rug pull.
Voir l'originalRépondre0
LayerZeroHerovip
· 08-01 03:29
Il est conseillé de tester directement avec dapptools, tester avec du gas est plus fiable.
Voir l'originalRépondre0
hodl_therapistvip
· 08-01 03:21
Êtes-vous sûr que tout cela est de la dernière technologie ?... Ça a l'air un peu vieux.
Voir l'originalRépondre0
NewPumpamentalsvip
· 08-01 03:11
le niveau de sel n'est pas encore atteint, mon vieux.
Voir l'originalRépondre0
DiamondHandsvip
· 08-01 03:10
Encore mauvais et aime apprendre yyds
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)