Les sept techniques indispensables pour le développement de contrats DEX à lire absolument pour les Débutants

Partage de petites astuces pour le développement de contrats

Récemment, en participant à un projet de développement d'une exchange décentralisée, j'ai consulté le code d'un DEX renommé et appris de nombreuses astuces pratiques pour le développement de contrats. En tant que développeur ayant principalement développé des contrats NFT auparavant, c'est ma première tentative de développement de contrats Defi. Je partage ici quelques petites astuces qui pourraient être utiles aux développeurs débutants.

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

Adresse de contrat prévisible

L'adresse obtenue lors du déploiement d'un contrat semble aléatoire car elle est liée au nonce. Cependant, dans certaines situations, nous devons déduire l'adresse du contrat à partir des informations de la transaction, ce qui est utile pour déterminer les permissions de transaction ou pour obtenir l'adresse du pool.

Une méthode consiste à utiliser CREATE2 pour créer un contrat, en ajoutant un paramètre salt pour rendre l'adresse générée prévisible. La formule de calcul de la nouvelle adresse est :

Nouvelle adresse = hash("0xFF", adresse du créateur, sel, initcode)

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

Utilisation astucieuse des fonctions de rappel

Les contrats en Solidity peuvent s'appeler mutuellement. Dans certains scénarios, la méthode A appelle B, et B rappelle A dans la méthode appelée, ce modèle est très utile.

Par exemple, lors d'une transaction sur un DEX, la méthode swap du contrat de pool appellera swapCallback, en passant le nombre de tokens requis. L'appelant doit transférer les tokens dans le rappel, au lieu de diviser le swap en plusieurs appels. Cela garantit l'intégrité et la sécurité de la méthode swap.

Transmettre des informations par exception

Dans le code d'un certain DEX, utilisez un try-catch pour envelopper la méthode swap du contrat pool afin de simuler des transactions et d'estimer les tokens nécessaires. Comme il n'y a pas d'échange réel de tokens pendant l'estimation, une erreur sera levée. En lançant une erreur spéciale dans le rappel, puis en capturant et en analysant le message d'erreur, vous pouvez obtenir le résultat estimé.

Cette technique évite de modifier spécifiquement la méthode de swap pour estimer la demande, tout en maintenant une logique simple.

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

Problèmes de précision dans le traitement des grands nombres

Lorsqu'il s'agit de calculer les prix et la liquidité, pour éviter une perte de précision lors des opérations de division, vous pouvez d'abord décaler à gauche de 96 bits ( ce qui équivaut à multiplier par 2^96) avant d'effectuer le calcul. Ainsi, dans des transactions normales sans débordement, la précision peut être garantie.

Calcul des gains en mode Share

Lors de l'enregistrement des revenus de frais de LP, il n'est pas possible d'enregistrer chaque LP à chaque transaction, car cela consommerait beaucoup de Gas. Une solution consiste à enregistrer les frais totaux et les frais à allouer par unité de liquidité. Lors du retrait des LP, les frais extractibles sont calculés en fonction de la liquidité détenue, similaire aux dividendes d'actions.

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

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

Toutes les informations ne doivent pas nécessairement être enregistrées sur la blockchain ou récupérées depuis celle-ci. Par exemple, la liste des pools de transactions, les informations sur les pools, etc., peuvent être stockées dans une base de données ordinaire et synchronisées régulièrement avec la blockchain. Cela peut améliorer les performances et l'efficacité. Bien sûr, les transactions clés doivent toujours être effectuées sur la blockchain.

Fractionnement et réutilisation des contrats

Les grands projets peuvent contenir plusieurs contrats déployés en pratique. Même si un seul contrat est déployé, il peut être divisé en plusieurs contrats pour faciliter la maintenance grâce à l'héritage. En même temps, apprendre à utiliser des contrats standards existants comme ERC721 peut améliorer l'efficacité du développement.

La pratique est le meilleur moyen d'apprendre. En réalisant une version simplifiée d'un DEX, on peut comprendre plus en profondeur l'implémentation du code de certains projets complexes et acquérir davantage de connaissances sur les projets pratiques. J'espère que ces petits conseils seront utiles aux débutants qui souhaitent apprendre le développement de contrats.

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

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
  • 10
  • Reposter
  • Partager
Commentaire
0/400
DiamondHandsvip
· 08-08 22:41
create2 jeton direct
Voir l'originalRépondre0
UnluckyMinervip
· 08-07 07:50
Publiez plus de fragments de code
Voir l'originalRépondre0
BridgeJumpervip
· 08-07 04:50
Copier-coller est aussi un savoir-faire.
Voir l'originalRépondre0
nft_widowvip
· 08-06 21:36
Un bon article mérite d'être soutenu
Voir l'originalRépondre0
LiquidityWizardvip
· 08-05 23:03
L'adresse prédictive est très importante.
Voir l'originalRépondre0
ImpermanentLossFanvip
· 08-05 23:01
Il y a trop peu de caractères, je n'en vois pas assez.
Voir l'originalRépondre0
LightningLadyvip
· 08-05 23:01
informations précieuses
Voir l'originalRépondre0
DeFi_Dad_Jokesvip
· 08-05 22:50
Mettez en avant et sauvegardez pour voir
Voir l'originalRépondre0
gas_fee_therapistvip
· 08-05 22:45
gas est trop précieux
Voir l'originalRépondre0
PaperHandSistervip
· 08-05 22:43
hausse de connaissances les frères
Voir l'originalRépondre0
Afficher plus
  • É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)