Les astuces et techniques du développement de contrats
Récemment, en apprenant le développement d'échanges décentralisés, j'ai découvert quelques techniques intéressantes pour le développement de contrats. Ces techniques proviennent de l'étude du code d'un DEX bien connu et devraient être très utiles pour les débutants qui souhaitent se lancer dans le développement de contrats intelligents.
Adresse de contrat prévisible
Les adresses des contrats déployés semblent généralement aléatoires et difficiles à prédire. Cependant, dans certains cas, nous devons déduire l'adresse du contrat à partir des informations sur les paires de transactions, ce qui est utile pour évaluer les autorisations de transaction ou obtenir l'adresse d'un pool.
Il est possible de créer un contrat en utilisant la méthode CREATE2 en ajoutant le paramètre salt, ce qui rend l'adresse générée prévisible. La logique de calcul de la nouvelle adresse est la suivante : hash("0xFF", adresse du créateur, salt, initcode).
Utilisation astucieuse des fonctions de rappel
Dans certains scénarios, il est utile que le contrat A appelle une méthode du contrat B, puis que B rappelle une méthode d'A. Par exemple, lors d'une transaction, le contrat de pool rappellera swapCallback, en passant le nombre de tokens réellement nécessaires, et l'appelant transférera les tokens dans le rappel. Cela garantit l'intégrité et la sécurité de l'ensemble de la logique de transaction.
Passer des informations par des exceptions
Lors de l'estimation d'une transaction, vous pouvez envelopper l'exécution de la méthode swap dans un try-catch. Comme l'estimation ne produit pas réellement d'échange de Token, cela générera une erreur. Vous pouvez lancer une erreur spéciale dans le rappel, puis la capturer et extraire les données nécessaires à partir du message d'erreur. Cela permet d'éviter de modifier la méthode swap spécifiquement pour les besoins d'estimation, rendant la logique plus simple.
Résoudre le problème de précision des grands nombres
Lorsqu'il s'agit de calculs de prix et de liquidité, pour éviter la perte de précision due à l'opération de division, il est possible de décaler à gauche de 96 bits (, ce qui équivaut à multiplier par 2^96) avant d'effectuer le calcul. Cela permet de garantir la précision sans débordement. Bien qu'il y ait théoriquement une perte de précision au niveau de la plus petite unité, celle-ci est acceptable en pratique.
Calcul des gains en mode Share
Lors de l'enregistrement des revenus des frais de LP, il n'est pas nécessaire d'enregistrer chaque LP à chaque transaction, car cela consommerait beaucoup de Gas. Il suffit d'enregistrer les frais totaux et les frais dus pour chaque unité de liquidité, et lors du retrait par le LP, le montant pouvant être retiré est calculé en fonction de la liquidité détenue. C'est similaire au principe des dividendes d'actions.
Stockage de données hors chaîne
Toutes les informations n'ont pas besoin d'être mises sur la chaîne ou d'en être extraites. La liste des pools de transactions, les informations sur les pools, etc. peuvent être stockées dans une base de données traditionnelle, en étant synchronisées régulièrement avec la chaîne. Cela peut améliorer l'efficacité d'accès et réduire les coûts. Bien sûr, les transactions clés doivent toujours être effectuées sur la chaîne.
Fractionnement et réutilisation des contrats
Un projet peut être divisé en plusieurs contrats déployés réellement, ou le code peut être séparé en plusieurs contrats à travers l'héritage. Il est également important d'utiliser les contrats standards existants, tels que ERC721, pour améliorer l'efficacité du développement.
Regarder trop de théories ne vaut pas mieux que de pratiquer soi-même. Essayer de réaliser un DEX simplifié vous permettra de mieux comprendre les différentes techniques de développement de contrats. J'espère que ces petits conseils vous aideront dans votre parcours de développement de contrats intelligents.
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.
12 J'aime
Récompense
12
8
Partager
Commentaire
0/400
CryptoGoldmine
· Il y a 12h
Les contrats sont essentiels, la stabilité est nécessaire pour avoir un ROI.
Voir l'originalRépondre0
DecentralizedElder
· Il y a 13h
Je suis toujours bloqué sur l'apprentissage de Solidity.
Voir l'originalRépondre0
OnchainDetective
· Il y a 13h
Vraiment bien, d'abord le code puis l'élan !
Voir l'originalRépondre0
HalfBuddhaMoney
· Il y a 13h
Avec ces quelques astuces, il est impératif de profiter des opportunités sur les DEX.
Voir l'originalRépondre0
GasFeeVictim
· Il y a 13h
Apprendre juste une Adresse de prévision, c'est suffisant.
7 techniques de développement de contrats pour vous aider à devenir un expert DEX
Les astuces et techniques du développement de contrats
Récemment, en apprenant le développement d'échanges décentralisés, j'ai découvert quelques techniques intéressantes pour le développement de contrats. Ces techniques proviennent de l'étude du code d'un DEX bien connu et devraient être très utiles pour les débutants qui souhaitent se lancer dans le développement de contrats intelligents.
Adresse de contrat prévisible
Les adresses des contrats déployés semblent généralement aléatoires et difficiles à prédire. Cependant, dans certains cas, nous devons déduire l'adresse du contrat à partir des informations sur les paires de transactions, ce qui est utile pour évaluer les autorisations de transaction ou obtenir l'adresse d'un pool.
Il est possible de créer un contrat en utilisant la méthode CREATE2 en ajoutant le paramètre salt, ce qui rend l'adresse générée prévisible. La logique de calcul de la nouvelle adresse est la suivante : hash("0xFF", adresse du créateur, salt, initcode).
Utilisation astucieuse des fonctions de rappel
Dans certains scénarios, il est utile que le contrat A appelle une méthode du contrat B, puis que B rappelle une méthode d'A. Par exemple, lors d'une transaction, le contrat de pool rappellera swapCallback, en passant le nombre de tokens réellement nécessaires, et l'appelant transférera les tokens dans le rappel. Cela garantit l'intégrité et la sécurité de l'ensemble de la logique de transaction.
Passer des informations par des exceptions
Lors de l'estimation d'une transaction, vous pouvez envelopper l'exécution de la méthode swap dans un try-catch. Comme l'estimation ne produit pas réellement d'échange de Token, cela générera une erreur. Vous pouvez lancer une erreur spéciale dans le rappel, puis la capturer et extraire les données nécessaires à partir du message d'erreur. Cela permet d'éviter de modifier la méthode swap spécifiquement pour les besoins d'estimation, rendant la logique plus simple.
Résoudre le problème de précision des grands nombres
Lorsqu'il s'agit de calculs de prix et de liquidité, pour éviter la perte de précision due à l'opération de division, il est possible de décaler à gauche de 96 bits (, ce qui équivaut à multiplier par 2^96) avant d'effectuer le calcul. Cela permet de garantir la précision sans débordement. Bien qu'il y ait théoriquement une perte de précision au niveau de la plus petite unité, celle-ci est acceptable en pratique.
Calcul des gains en mode Share
Lors de l'enregistrement des revenus des frais de LP, il n'est pas nécessaire d'enregistrer chaque LP à chaque transaction, car cela consommerait beaucoup de Gas. Il suffit d'enregistrer les frais totaux et les frais dus pour chaque unité de liquidité, et lors du retrait par le LP, le montant pouvant être retiré est calculé en fonction de la liquidité détenue. C'est similaire au principe des dividendes d'actions.
Stockage de données hors chaîne
Toutes les informations n'ont pas besoin d'être mises sur la chaîne ou d'en être extraites. La liste des pools de transactions, les informations sur les pools, etc. peuvent être stockées dans une base de données traditionnelle, en étant synchronisées régulièrement avec la chaîne. Cela peut améliorer l'efficacité d'accès et réduire les coûts. Bien sûr, les transactions clés doivent toujours être effectuées sur la chaîne.
Fractionnement et réutilisation des contrats
Un projet peut être divisé en plusieurs contrats déployés réellement, ou le code peut être séparé en plusieurs contrats à travers l'héritage. Il est également important d'utiliser les contrats standards existants, tels que ERC721, pour améliorer l'efficacité du développement.
Regarder trop de théories ne vaut pas mieux que de pratiquer soi-même. Essayer de réaliser un DEX simplifié vous permettra de mieux comprendre les différentes techniques de développement de contrats. J'espère que ces petits conseils vous aideront dans votre parcours de développement de contrats intelligents.