Original | Odaily Planet Quotidien
Auteur | Nan Zhi

Le jeton Pixiu fait généralement référence à une situation dans laquelle un certain jeton ne peut être acheté mais ne peut pas être vendu. Le développeur supprimera le LP pour réaliser un profit après un certain temps et tirera l'acheteur. Le Pixiu retardé peut être échangé dans un court laps de temps lorsque le jeton est ouvert pour la première fois à la négociation, puis devient l'état Pixiu. Pour ce type de technique Rug Pull, de nombreux outils de détection de contrats n'ont pas encore ajouté les fonctions de détection correspondantes, et cela devient l'une des principales méthodes rentables pour les développeurs malveillants.
Ci-dessous, Odaily Planet Daily expliquera comment le retard Pixiu est mis en œuvre à travers un bref aperçu des principes de l'ERC 20 et d'Uniswap.
Remarque : Certaines des analogies présentées dans l'article ne sont pas totalement rigoureuses pour faciliter la compréhension.
Les bases de l'ERC 20
La plupart des jetons sur le marché sont conformes à la norme ERC-20. Quelle est la réponse de ChatGPT ?
ERC-20 est une norme de jeton sur la blockchain Ethereum qui définit un ensemble de règles et d'interfaces que les contrats de jetons doivent suivre. Cette norme standardise les fonctions de base des jetons, notamment les transferts, les demandes de solde, l'autorisation de dépenser des jetons pour le compte d'autrui, etc.
Voici quelques-unes des principales règles et fonctionnalités standard des jetons ERC-20 :
Transfert : les jetons ERC-20 peuvent être transférés via des contrats intelligents, permettant aux utilisateurs d'envoyer des jetons à d'autres adresses Ethereum.
BalanceOf : les utilisateurs peuvent interroger leur solde de jetons ERC-20 pour voir combien de jetons ils possèdent.
Demande de solde (BalanceOf) :
En fait, cette fonction n'a pas seulement une fonction « requête », le nombre de jetons que l'utilisateur « possède » est également défini par cette fonction. Chaque jeton peut être compris comme une « banque », et chaque adresse de portefeuille obtient une « carte de dépôt » de la « banque » après avoir échangé des jetons, qui enregistre le solde (Balance) de chaque adresse. L'utilisateur auquel vous pouvez postuler. la banque pour vérifier votre solde, ou vous pouvez faire une demande de changement d'actif à la banque pour les transactions.
Remarque : Ethereum adopte un modèle basé sur le compte.
Par conséquent, les utilisateurs ne « possèdent » pas essentiellement leurs actifs, mais le nombre de jetons que vous pouvez « dépenser » est plutôt « défini » par une fonction.
C'est-à-dire : X tokens Balance Of [A account]=Le nombre de X tokens que le compte A peut dépenser en externe
Remarque : Les dépôts bancaires dans le monde réel constituent la dette de la banque envers ses clients, et la banque détient la propriété des actifs.
Transfert
Tous les jetons ERC-20 doivent remplir la fonction de transfert. Sur la base du modèle de grand livre précédent, lorsqu'un transfert a lieu, ce n'est pas le compte A qui "livre" un jeton au compte B, mais est déduit du compte A. Le nombre de jetons est X, et le nombre de jetons X est ajouté au compte B.
C'est-à-dire : Solde de [Compte A]-X et Solde de [Compte B]+X en même temps
Les développeurs peuvent modifier la fonction de transfert pour limiter le nombre de transferts, de cessionnaires, etc.
La fonction de transfert est la source fondamentale de la plupart des mécanismes Pixiu.
Uniswap
La section précédente a comparé chaque jeton à une « banque », alors Uniswap peut être compris comme un intermédiaire d'acceptation, échangeant deux jetons via le principe AMM de xy=k.
Le processus d'échange est le suivant :
L'utilisateur transfère le jeton A vers le contrat Uniswap
Uniswap utilisera y=k/x pour calculer les jetons qui doivent être retournés à partir des jetons reçus et déduira les frais de traitement.
Uniswap transfère le jeton A vers le pool LP et retire le jeton B
Uniswap transfère le jeton B à l'utilisateur
Bien sûr, Uniswap implique en réalité plusieurs fonctions et processus. Le point clé à comprendre ici est qu'Uniswap effectue uniquement des transactions basées sur les « jetons reçus », et lorsque l'utilisateur effectue l'opération de « transfert », la quantité peut avoir changé.
Mécanisme Pixiu
Dans cette section, le mécanisme Pixiu est divisé en deux catégories :
① Taxe sur les transactions élevée, ce qui empêche les utilisateurs de bénéficier de remises sur les jetons de vente ;
② Transfert impossible, ce qui empêche les utilisateurs d'échanger avec Uniswap.
taxe sur les transactions élevée
Cette section montre un processus de calcul de pièces Meme avec taxe sur les transactions, comme indiqué ci-dessous (concentrez-vous uniquement sur la partie rouge).
Calculer les taxes sur les transactions
Déduisez la totalité du montant d'argent du portefeuille de l'utilisateur (BalancerOf[user] réduit le jeton A)
Transférer de l'argent vers le portefeuille du développeur ou LP et d'autres adresses (BalancerOf[Dev] augmente le jeton A × taxe S)
Transférez quelques jetons vers Uniswap pour les échanger contre le jeton B (jeton A×(1-S))
L'utilisateur reçoit un jeton B insuffisant

Comme mentionné dans la section précédente, Uniswap ne traite que les « jetons reçus » et les développeurs peuvent modifier à volonté le montant transféré à Uniswap et aux utilisateurs.
Ici, si le taux de taxe sur les transactions est modifié à 100 %, la troisième étape « ③Transfert vers le portefeuille du développeur ou LP et autres adresses » sera mise en œuvre et l'utilisateur ne recevra plus de jetons.
Impossible de transférer
Dans Solidity, les développeurs peuvent restreindre les transactions en exigeant :
Si le développeur restreint l'échange de jetons à certaines adresses de la liste blanche, l'utilisateur ne pourra pas envoyer les jetons qu'il a en main à Uniswap. Dans la deuxième étape "② déduire de l'argent du portefeuille de l'utilisateur", Pixiu sera implémenté, et le. Le développeur pourra configurer le routeur d'Uniswap pour envoyer des jetons, et le résultat est :
Les utilisateurs peuvent uniquement acheter (Uniswap transfère les jetons aux utilisateurs), mais ne peuvent pas vendre (car les jetons ne peuvent pas être transférés à Uniswap pour être échangés contre de l'ETH, etc.).
Ou les développeurs peuvent définir la limite de transfert à 0, désactiver le commutateur de transaction et d'autres opérations via différents chemins, mais en fin de compte, ils contrôlent tous le comportement du « transfert ».
Pixiu retardé
Un retard supplémentaire est obtenu en exigeant que le temps (hauteur du bloc) soit limité.
Par exemple, dans un certain token, les restrictions sont les suivantes :
require(block.number < _allowance)
À mesure que la hauteur du bloc augmente, les utilisateurs ne pourront plus transférer lorsqu'elle atteint un certain seuil, réalisant Pixiu.
De plus, il existe également des Pixiu qui sont réalisés lorsque le nombre de transactions atteint un certain seuil. De tels Pixiu retardés pourront négocier normalement dans la situation initiale s'il n'y a pas de réglage ciblé lors de la vérification de certains outils de détection de sécurité des contrats, ce qui incite les utilisateurs. tomber dans un piège.
Comment empêcher
Étant donné que ce type de méthode de récolte est couramment observé chez les « chiens de terre fracassants », les acheteurs recherchent souvent l'efficacité et ignorent la sécurité, et nous n'avons encore vu aucune entreprise de sécurité mature lancer un outil de détection spécial pour cette méthode, donc Odaily Planet Daily tient à vous rappeler que, dans l'intérêt de leurs propres atouts, les acheteurs ayant certaines compétences en codage doivent également parcourir le code du contrat (ou utiliser des outils tels que ChatGPT pour y jeter un coup d'œil rapide), porter une attention particulière au contrat selpair et éloignez-vous des projets contenant des zones de code inhabituelles.
