Partage d'astuces et de réflexions sur le développement de contrats
Récemment, lors de ma participation à un projet de tutoriel sur le développement d'une bourse décentralisée, j'ai appris de nombreuses techniques de développement de contrats précieux en étudiant la mise en œuvre du code d'Uniswap V3. En tant que débutant qui vient à peine de découvrir le développement de contrats Defi, ces techniques m'ont beaucoup inspiré et je suis sûr qu'elles seront également utiles à d'autres débutants qui souhaitent apprendre le développement de contrats.
Adresse de contrat prévisible
En général, le déploiement d'un contrat donne une adresse aléatoire, mais dans certains cas, nous avons besoin de pouvoir prédire l'adresse du contrat. Uniswap utilise la méthode CREATE2 pour créer des contrats, en ajoutant un paramètre salt, ce qui permet de prédire l'adresse du contrat créé. Cela est très utile dans des scénarios tels que la vérification des droits de transaction ou l'obtention d'adresses de pool.
Utilisation astucieuse des fonctions de rappel
Dans certaines situations, l'appel mutuel entre contrats est très utile. Par exemple, dans Uniswap, lorsque la méthode swap du contrat UniswapV3Pool est appelée, elle rappelle swapCallback, en passant le nombre de Token réellement requis calculé. L'appelant doit transférer les Token dans UniswapV3Pool lors du rappel, ce qui garantit l'exécution complète et la sécurité de la méthode swap.
Transmettre des informations par des exceptions
Dans le contrat Quoter d'Uniswap, la méthode swap de UniswapV3Pool est exécutée à l'intérieur d'un bloc try-catch. Cela permet de simuler un swap pour estimer les tokens nécessaires à la transaction, en capturant des erreurs spécifiques et en analysant les messages d'erreur pour obtenir les données requises. Cette méthode évite de modifier spécifiquement la méthode swap pour les estimations de transaction, rendant la logique plus concise.
Garantir la précision des calculs de grands nombres
Uniswap implique un grand nombre de calculs. Pour éviter la perte de précision lors des opérations de division, il est courant d'utiliser un décalage à gauche de 96 bits, ( équivalent à une multiplication par 2^96). Cela permet de garantir la précision des calculs tant que les transactions normales ne débordent pas. Bien qu'il puisse encore y avoir une légère perte de précision sur le plan théorique, elle est jugée acceptable.
Calcul des bénéfices par la méthode de partage
Pour éviter de consommer une grande quantité de Gas en enregistrant les frais de transaction pour chaque LP à chaque fois, Uniswap a adopté un système similaire aux dividendes d'actions. Il suffit d'enregistrer les frais totaux et les frais à répartir par unité de liquidité, et lors du retrait des LP, les frais dus peuvent être calculés en fonction de la liquidité détenue.
Combinaison de données on-chain et off-chain
Toutes les informations ne doivent pas être récupérées sur la chaîne. 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 chaîne. Les transactions clés se déroulent sur la chaîne, tandis que les informations non essentielles peuvent être obtenues de manière plus efficace pour améliorer les performances et l'efficacité.
Division de contrat et réutilisation de contrat standard
Les grands projets contiennent généralement plusieurs contrats déployés en pratique. Même si un seul contrat est déployé, il peut être maintenu en le divisant en plusieurs contrats par héritage. En même temps, l'utilisation de contrats standards existants ( tels que ERC721) peut améliorer l'efficacité du développement et simplifier la gestion.
La pratique est le meilleur moyen d'apprendre. En réalisant par vous-même une version simplifiée d'une bourse décentralisée, vous pourrez non seulement comprendre plus en profondeur l'implémentation du code d'Uniswap, mais aussi acquérir davantage de connaissances sur des projets pratiques. J'espère que ces partages d'expérience vous seront utiles dans votre parcours de développement de contrats.
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.
14 J'aime
Récompense
14
7
Partager
Commentaire
0/400
LiquidityOracle
· 08-02 23:11
Une autre introduction à la炒冷饭
Voir l'originalRépondre0
WhaleWatcher
· 08-02 19:29
C'est un peu difficile à comprendre, quelqu'un peut-il expliquer le create2 ?
Voir l'originalRépondre0
RetailTherapist
· 07-31 02:40
Envoyer ça, c'est même pas mieux que de créer un dex pour se faire prendre pour des cons.
Voir l'originalRépondre0
gas_guzzler
· 07-31 02:40
Prédire l'Adresse cette astuce m'a fait rire, Sainte Mère uniswap
Voir l'originalRépondre0
DeFiGrayling
· 07-31 02:35
Sans voix, encore une formation qui piège les Débutants...
Voir l'originalRépondre0
DEXRobinHood
· 07-31 02:35
Le père du DOGE a raison ! Passer sa vie en prison n'est pas un rêve !
Voir l'originalRépondre0
NightAirdropper
· 07-31 02:34
Parler pendant un long moment n'est pas aussi agréable que d'utiliser des Prêts Flash~
Sept techniques pour maîtriser le développement de smart contracts
Partage d'astuces et de réflexions sur le développement de contrats
Récemment, lors de ma participation à un projet de tutoriel sur le développement d'une bourse décentralisée, j'ai appris de nombreuses techniques de développement de contrats précieux en étudiant la mise en œuvre du code d'Uniswap V3. En tant que débutant qui vient à peine de découvrir le développement de contrats Defi, ces techniques m'ont beaucoup inspiré et je suis sûr qu'elles seront également utiles à d'autres débutants qui souhaitent apprendre le développement de contrats.
Adresse de contrat prévisible
En général, le déploiement d'un contrat donne une adresse aléatoire, mais dans certains cas, nous avons besoin de pouvoir prédire l'adresse du contrat. Uniswap utilise la méthode CREATE2 pour créer des contrats, en ajoutant un paramètre salt, ce qui permet de prédire l'adresse du contrat créé. Cela est très utile dans des scénarios tels que la vérification des droits de transaction ou l'obtention d'adresses de pool.
Utilisation astucieuse des fonctions de rappel
Dans certaines situations, l'appel mutuel entre contrats est très utile. Par exemple, dans Uniswap, lorsque la méthode swap du contrat UniswapV3Pool est appelée, elle rappelle swapCallback, en passant le nombre de Token réellement requis calculé. L'appelant doit transférer les Token dans UniswapV3Pool lors du rappel, ce qui garantit l'exécution complète et la sécurité de la méthode swap.
Transmettre des informations par des exceptions
Dans le contrat Quoter d'Uniswap, la méthode swap de UniswapV3Pool est exécutée à l'intérieur d'un bloc try-catch. Cela permet de simuler un swap pour estimer les tokens nécessaires à la transaction, en capturant des erreurs spécifiques et en analysant les messages d'erreur pour obtenir les données requises. Cette méthode évite de modifier spécifiquement la méthode swap pour les estimations de transaction, rendant la logique plus concise.
Garantir la précision des calculs de grands nombres
Uniswap implique un grand nombre de calculs. Pour éviter la perte de précision lors des opérations de division, il est courant d'utiliser un décalage à gauche de 96 bits, ( équivalent à une multiplication par 2^96). Cela permet de garantir la précision des calculs tant que les transactions normales ne débordent pas. Bien qu'il puisse encore y avoir une légère perte de précision sur le plan théorique, elle est jugée acceptable.
Calcul des bénéfices par la méthode de partage
Pour éviter de consommer une grande quantité de Gas en enregistrant les frais de transaction pour chaque LP à chaque fois, Uniswap a adopté un système similaire aux dividendes d'actions. Il suffit d'enregistrer les frais totaux et les frais à répartir par unité de liquidité, et lors du retrait des LP, les frais dus peuvent être calculés en fonction de la liquidité détenue.
Combinaison de données on-chain et off-chain
Toutes les informations ne doivent pas être récupérées sur la chaîne. 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 chaîne. Les transactions clés se déroulent sur la chaîne, tandis que les informations non essentielles peuvent être obtenues de manière plus efficace pour améliorer les performances et l'efficacité.
Division de contrat et réutilisation de contrat standard
Les grands projets contiennent généralement plusieurs contrats déployés en pratique. Même si un seul contrat est déployé, il peut être maintenu en le divisant en plusieurs contrats par héritage. En même temps, l'utilisation de contrats standards existants ( tels que ERC721) peut améliorer l'efficacité du développement et simplifier la gestion.
La pratique est le meilleur moyen d'apprendre. En réalisant par vous-même une version simplifiée d'une bourse décentralisée, vous pourrez non seulement comprendre plus en profondeur l'implémentation du code d'Uniswap, mais aussi acquérir davantage de connaissances sur des projets pratiques. J'espère que ces partages d'expérience vous seront utiles dans votre parcours de développement de contrats.