Partage de conseils pour le développement de contrats
Récemment, lors de ma participation à un projet de développement d'échange décentralisé, j'ai appris quelques techniques intéressantes de développement de contrats. Ces techniques peuvent être très inspirantes pour les débutants qui viennent de commencer à développer des contrats intelligents.
Adresse de contrat prévisible
En utilisant l'opcode CREATE2, nous pouvons déployer des contrats dont l'adresse est prévisible. La méthode consiste à ajouter un paramètre salt lors de la création du contrat :
solidité
pool = address(new UniswapV3Pool{salt: keccak256(abi.encode(token0, token1, fee))}());
L'adresse du contrat générée de cette manière peut être déduite à partir des paramètres pertinents, ce qui est très utile dans de nombreux cas.
Utiliser astucieusement les fonctions de rappel
Dans certains cas, 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, dans un DEX, lors de l'appel de la méthode swap, cela appelle swapCallback, où le transfert de tokens est effectué dans le rappel, garantissant ainsi l'intégrité et la sécurité de l'ensemble du processus de transaction.
Transmettre des informations par des exceptions
Il est parfois possible d'utiliser habilement try-catch pour capturer des exceptions spécifiques afin d'obtenir des informations. Par exemple, lors de la simulation de transactions, il est possible de récupérer des données estimées en capturant les exceptions spécifiques levées par la méthode swap, sans avoir besoin de modifier spécialement cette méthode.
Calculs de grands nombres garantissant la précision
Lorsqu'il s'agit de calculs financiers, afin d'éviter la perte de précision causée par les opérations de division, on peut d'abord effectuer une opération de décalage à gauche ; ( équivaut à multiplier par 2^96). Après avoir effectué le calcul, on effectue un décalage à droite, ce qui permet de garantir la précision sans débordement.
Calcul des revenus en mode Share
Pour les scénarios nécessitant une répartition des bénéfices, un modèle similaire à celui des dividendes d'actions peut être utilisé. Il suffit d'enregistrer le bénéfice total et le bénéfice dû par unité, et lors du retrait, les utilisateurs peuvent calculer leur part en fonction de leur quota, évitant ainsi la mise à jour fréquente des enregistrements des bénéfices de chaque utilisateur.
Utilisation raisonnable des données hors chaîne
Toutes les données n'ont pas besoin d'être stockées sur la chaîne. Certaines informations qui ne concernent pas la logique des transactions clés peuvent être stockées dans des bases de données traditionnelles et récupérées via des API Web2, ce qui réduit les coûts et augmente l'efficacité.
Fractionnement et réutilisation des contrats
Les grands projets divisent généralement les contrats en plusieurs modules, qui sont utilisés par héritage et combinaison. Il est également important de tirer parti des contrats standard existants, tels que l'ERC721, car cela peut améliorer l'efficacité du développement et la qualité du code.
Ces petites astuces sont très pratiques, j'espère qu'elles inspireront le développement de contrats intelligents pour tout le monde. Pour vraiment maîtriser ces techniques, la meilleure méthode est de mettre la main à la pâte et de les appliquer et de les expérimenter dans des projets réels.
Voir l'original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
24 J'aime
Récompense
24
7
Partager
Commentaire
0/400
ProbablyNothing
· Il y a 16h
Trop paresseux, allons directement utiliser la bibliothèque.
Voir l'originalRépondre0
TeaTimeTrader
· 07-11 02:06
Guide des compétences essentielles pour les contrats de base
Voir l'originalRépondre0
FudVaccinator
· 07-11 02:04
Ceux qui comprennent savent que prévoir l'adresse de déploiement est vraiment intéressant.
Voir l'originalRépondre0
HackerWhoCares
· 07-11 02:03
Je m'en vais, je m'en vais, le programmeur débutant vient encore demander des conseils.
Voir l'originalRépondre0
SchrodingerProfit
· 07-11 02:03
C'est juste cette compétence... c'est du déjà-vu.
Voir l'originalRépondre0
MonkeySeeMonkeyDo
· 07-11 01:55
Vous êtes devenu un pro des contrats, n'est-ce pas ? Glissez~
Voir l'originalRépondre0
0xSherlock
· 07-11 01:51
On a l'impression que tout cela n'est que des paroles en l'air.
Partage de sept astuces pratiques pour le développement de smart contracts
Partage de conseils pour le développement de contrats
Récemment, lors de ma participation à un projet de développement d'échange décentralisé, j'ai appris quelques techniques intéressantes de développement de contrats. Ces techniques peuvent être très inspirantes pour les débutants qui viennent de commencer à développer des contrats intelligents.
Adresse de contrat prévisible
En utilisant l'opcode CREATE2, nous pouvons déployer des contrats dont l'adresse est prévisible. La méthode consiste à ajouter un paramètre salt lors de la création du contrat :
solidité pool = address(new UniswapV3Pool{salt: keccak256(abi.encode(token0, token1, fee))}());
L'adresse du contrat générée de cette manière peut être déduite à partir des paramètres pertinents, ce qui est très utile dans de nombreux cas.
Utiliser astucieusement les fonctions de rappel
Dans certains cas, 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, dans un DEX, lors de l'appel de la méthode swap, cela appelle swapCallback, où le transfert de tokens est effectué dans le rappel, garantissant ainsi l'intégrité et la sécurité de l'ensemble du processus de transaction.
Transmettre des informations par des exceptions
Il est parfois possible d'utiliser habilement try-catch pour capturer des exceptions spécifiques afin d'obtenir des informations. Par exemple, lors de la simulation de transactions, il est possible de récupérer des données estimées en capturant les exceptions spécifiques levées par la méthode swap, sans avoir besoin de modifier spécialement cette méthode.
Calculs de grands nombres garantissant la précision
Lorsqu'il s'agit de calculs financiers, afin d'éviter la perte de précision causée par les opérations de division, on peut d'abord effectuer une opération de décalage à gauche ; ( équivaut à multiplier par 2^96). Après avoir effectué le calcul, on effectue un décalage à droite, ce qui permet de garantir la précision sans débordement.
Calcul des revenus en mode Share
Pour les scénarios nécessitant une répartition des bénéfices, un modèle similaire à celui des dividendes d'actions peut être utilisé. Il suffit d'enregistrer le bénéfice total et le bénéfice dû par unité, et lors du retrait, les utilisateurs peuvent calculer leur part en fonction de leur quota, évitant ainsi la mise à jour fréquente des enregistrements des bénéfices de chaque utilisateur.
Utilisation raisonnable des données hors chaîne
Toutes les données n'ont pas besoin d'être stockées sur la chaîne. Certaines informations qui ne concernent pas la logique des transactions clés peuvent être stockées dans des bases de données traditionnelles et récupérées via des API Web2, ce qui réduit les coûts et augmente l'efficacité.
Fractionnement et réutilisation des contrats
Les grands projets divisent généralement les contrats en plusieurs modules, qui sont utilisés par héritage et combinaison. Il est également important de tirer parti des contrats standard existants, tels que l'ERC721, car cela peut améliorer l'efficacité du développement et la qualité du code.
Ces petites astuces sont très pratiques, j'espère qu'elles inspireront le développement de contrats intelligents pour tout le monde. Pour vraiment maîtriser ces techniques, la meilleure méthode est de mettre la main à la pâte et de les appliquer et de les expérimenter dans des projets réels.