Guide du Débutant Web3 : Partage de conseils sur le développement de contrats Uniswap
Récemment, en écrivant un tutoriel sur le développement d'un échange décentralisé, j'ai consulté le code d'Uniswap V3 et appris de nombreux points intéressants. En tant que développeur qui essaie pour la première fois de développer un contrat Defi, ces techniques seront très utiles pour les débutants qui souhaitent apprendre le développement de contrats.
Adresse de déploiement de contrat prévisible
Les adresses de contrat généralement déployées semblent aléatoires en raison du nonce. Cependant, dans certains cas, nous devons déduire l'adresse du contrat à partir des paires de transactions et des informations connexes. Uniswap utilise la méthode CREATE2 pour créer des contrats, en ajoutant un paramètre salt pour rendre l'adresse générée prévisible. La logique de génération de la nouvelle adresse est : hash("0xFF", adresse du créateur, salt, initcode).
. Cela garantit la précision tant que les transactions normales ne débordent pas. Bien qu'il existe toujours une légère perte de précision sur le plan théorique, elle est considérée comme acceptable.
![Web3 Débutant série : Les astuces de développement de contrats que j'ai apprises du code Uniswap])https://img-cdn.gateio.im/webp-social/moments-b0c3d4eb7e8ca88cc4cfc9476a34437a.webp(
Calcul des revenus du mécanisme de partage
Pour économiser sur la consommation de Gas, il n'est pas possible d'enregistrer les frais de transaction pour chaque fournisseur de liquidité à chaque transaction. Il est possible d'enregistrer les frais totaux et les frais à attribuer à chaque liquidité, et lors du retrait des LP, les frais récupérables sont calculés en fonction de la liquidité détenue. Cela ressemble à un mécanisme de dividende d'actions.
![Web3 Débutant série : les petites astuces de développement de contrats que j'ai apprises du code Uniswap])https://img-cdn.gateio.im/webp-social/moments-45e66af69435e6d4412ae506e77ab893.webp(
Utilisation raisonnable des données hors chaîne
Toutes les informations n'ont pas besoin d'être récupérées sur la chaîne. Par exemple, la liste des pools de transactions, les informations sur les pools de transactions, etc. peuvent être stockées dans une base de données traditionnelle et synchronisées régulièrement avec la chaîne. Certains fournisseurs de RPC blockchain proposent des interfaces avancées qui permettent d'obtenir des données plus rapidement et à moindre coût.
Fractionnement de contrat et application de contrat standard
Le projet peut inclure plusieurs contrats déployés en pratique, ou diviser un contrat unique en plusieurs par héritage. L'utilisation de contrats standard existants (comme ERC721) peut améliorer l'efficacité du développement. Par exemple, certaines plateformes utilisent des contrats ERC721 pour gérer des positions, ce qui facilite la gestion et améliore l'efficacité du développement.
La pratique est la meilleure méthode d'apprentissage. Essayer de réaliser une version simplifiée d'une bourse décentralisée peut permettre de mieux comprendre l'implémentation du code des DEX populaires et d'apprendre davantage de points de connaissance dans des projets réels. Il est conseillé aux développeurs intéressés de consulter des cours open source pertinents et de compléter le développement de la bourse simplifiée étape par étape.
![Web3 Débutant série : Les petites astuces de développement de contrats que j'ai apprises du code Uniswap])https://img-cdn.gateio.im/webp-social/moments-f95ddc9d89809cf11dbe65b9bafda157.webp(
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.
22 J'aime
Récompense
22
6
Partager
Commentaire
0/400
BagHolderTillRetire
· 07-08 01:52
Les contrats me donnent mal à la tête.
Voir l'originalRépondre0
RugDocScientist
· 07-05 04:24
C'est un peu impressionnant, le grand frère sait vraiment résumer.
Voir l'originalRépondre0
SeasonedInvestor
· 07-05 04:20
Hehe Débutant amical n'apprend pas, alors ne l'apprends pas.
Voir l'originalRépondre0
SatoshiLegend
· 07-05 04:17
Les détails techniques ne sont pas entièrement complets, il existe encore plusieurs vulnérabilités au niveau de la traçabilité... Il est conseillé de se référer au code source de v2.
Voir l'originalRépondre0
governance_ghost
· 07-05 04:03
informations précieuses à conserver pour une utilisation future
Les sept conseils pour le développement de contrats Uniswap Guide à lire absolument pour les Débutants
Guide du Débutant Web3 : Partage de conseils sur le développement de contrats Uniswap
Récemment, en écrivant un tutoriel sur le développement d'un échange décentralisé, j'ai consulté le code d'Uniswap V3 et appris de nombreux points intéressants. En tant que développeur qui essaie pour la première fois de développer un contrat Defi, ces techniques seront très utiles pour les débutants qui souhaitent apprendre le développement de contrats.
Adresse de déploiement de contrat prévisible
Les adresses de contrat généralement déployées semblent aléatoires en raison du nonce. Cependant, dans certains cas, nous devons déduire l'adresse du contrat à partir des paires de transactions et des informations connexes. Uniswap utilise la méthode CREATE2 pour créer des contrats, en ajoutant un paramètre salt pour rendre l'adresse générée prévisible. La logique de génération de la nouvelle adresse est : hash("0xFF", adresse du créateur, salt, initcode).
. Cela garantit la précision tant que les transactions normales ne débordent pas. Bien qu'il existe toujours une légère perte de précision sur le plan théorique, elle est considérée comme acceptable.
![Web3 Débutant série : Les astuces de développement de contrats que j'ai apprises du code Uniswap])https://img-cdn.gateio.im/webp-social/moments-b0c3d4eb7e8ca88cc4cfc9476a34437a.webp(
Calcul des revenus du mécanisme de partage
Pour économiser sur la consommation de Gas, il n'est pas possible d'enregistrer les frais de transaction pour chaque fournisseur de liquidité à chaque transaction. Il est possible d'enregistrer les frais totaux et les frais à attribuer à chaque liquidité, et lors du retrait des LP, les frais récupérables sont calculés en fonction de la liquidité détenue. Cela ressemble à un mécanisme de dividende d'actions.
![Web3 Débutant série : les petites astuces de développement de contrats que j'ai apprises du code Uniswap])https://img-cdn.gateio.im/webp-social/moments-45e66af69435e6d4412ae506e77ab893.webp(
Utilisation raisonnable des données hors chaîne
Toutes les informations n'ont pas besoin d'être récupérées sur la chaîne. Par exemple, la liste des pools de transactions, les informations sur les pools de transactions, etc. peuvent être stockées dans une base de données traditionnelle et synchronisées régulièrement avec la chaîne. Certains fournisseurs de RPC blockchain proposent des interfaces avancées qui permettent d'obtenir des données plus rapidement et à moindre coût.
Fractionnement de contrat et application de contrat standard
Le projet peut inclure plusieurs contrats déployés en pratique, ou diviser un contrat unique en plusieurs par héritage. L'utilisation de contrats standard existants (comme ERC721) peut améliorer l'efficacité du développement. Par exemple, certaines plateformes utilisent des contrats ERC721 pour gérer des positions, ce qui facilite la gestion et améliore l'efficacité du développement.
La pratique est la meilleure méthode d'apprentissage. Essayer de réaliser une version simplifiée d'une bourse décentralisée peut permettre de mieux comprendre l'implémentation du code des DEX populaires et d'apprendre davantage de points de connaissance dans des projets réels. Il est conseillé aux développeurs intéressés de consulter des cours open source pertinents et de compléter le développement de la bourse simplifiée étape par étape.
![Web3 Débutant série : Les petites astuces de développement de contrats que j'ai apprises du code Uniswap])https://img-cdn.gateio.im/webp-social/moments-f95ddc9d89809cf11dbe65b9bafda157.webp(