0xNekr.eth Profile picture
Aug 2 24 tweets 11 min read
[#THREAD] Peut-on faire confiance à Etherscan ?

C'est l'OUTIL par excellence pour s'informer sur ce qu'il se passe sur la blockchain...

Mais peut-on le faire mentir ? 🧵

C'est ce que nous allons voir !

#Web3 #Solidity #NFT #Crypto #ETH #Ethereum #Etherscan #Snowtrace

⬇️
Comme d'habitude, vous pouvez suivre ce thread avec le code sous les yeux (ou même l'appliquer en même temps).

Tout est disponible sur mon #GitHub :

github.com/0xNekr/Ethersc…

N'hesitez pas à me suivre là-bas si vous voulez voir en avance le code que je poste !
Lorsqu'un token est mis en place sur une blockchain comme Ethereum, nous pouvons consulter de nombreuses informations depuis les explorateurs de block comme etherscan.io.

Prenons l'exemple de $LINK, on peut voir que sa supply est de :
Mais peut-on faire confiance à etherscan pour nous donner cette information cruciale au niveau de la tokenomics d'un projet ? De même pour les holders ?

Et bien non... et on va voir à quel point il est simple de duper notre explorateur de block préféré.

⬇️
Pour commencer, voici comment créer un token #ERC20 tout à fait classique.

Bien sûr il est basique au possible, on va juste créer un token "NEKR-C" et en mint 10 pour le propriétaire du contrat.

Jusque là tout va bien ! (oui c'est aussi simple, il suffit d'importer ERC20 d'OZ)
Une fois le contrat déployé (sur rinkeby), tout est visible sur Etherscan (ici rinkeby.etherscan.io).

rinkeby.etherscan.io/token/0x6C02be…

Et on peut voir que la total supply de mon token $NEKR-C est bien de 10.

Tout est parfait ! L'explorateur ne nous cache rien.
Maintenant on regarde du côté de M*tamask pour être sûr que je possède bien mes 10 tokens en important le jeton...Et tout semble parfait.

Résumons ⬇️

Etherscan : 10 NEKR-C
M*tamask : 10 NEKR-C

Le compte est bon !
Passons du côté des vilains.

Je décide de créer un projet et j'ai envie de mentir un peu sur ma tokenomic sans me faire repérer.

Voici comment je vais développer mon $NEKR-H, un fork de $NEKR-C en plus trompeur...

Décryptons ensemble notre contrat !
Dans les imports, je vais importer ERC20 d'OpenZeppelin en local sur mon environnement de dev.

Pourquoi ? Pour modifier un petit paramètre dans le contrat d'origine.

La manip est simple, dans ERC20.sol je change la propriété de "_balances" de "private" à "internal".

Pourquoi?
Si vous avez suivi mes précédents threads vous comprenez pourquoi, sinon, petit rappel :

• private : seul le contrat ERC20.sol peut avoir accès à cette variable.
• internal : je vais pouvoir modifier cette variable via mon contrat.

Et c'est tout pour ERC20.sol !
Retournons sur le contrat du NEKR-H.

Regardons le constructeur, globalement c'est le même que sur mon contrat legit.

Sauf qu'en plus de mint 10 NEKR-H pour le propriétaire nous allons modifier sa balance sans passer par le mint... C'est là que la magie opère...

Déployons !
Rendez vous sur Etherscan :

rinkeby.etherscan.io/token/0x14936D…

Vous pouvez aller regarder par vous même, la supply est de 10 NEKR-H...

Nous avons bien une transaction de mint avec une quantité de 10 tokens !

Maintenant ajoutons le token à M*tamask !
Et là, c'est le drame...

20 NEKR-H alors qu'Etherscan nous indique 10 NEKR-H de Supply...

Mais comment est-ce possible ?

Pour comprendre il faut aller décortiquer la fonction de mint d'ERC20

⬇️
Voici ce que fait la fonction de mint d'ERC20 :

Elle augmente la variable "_totalSupply" et ensuite elle met à jour la variable "_balances" d'un utilisateur.

Ensuite elle émet un évenement pour dire qu'un transfert a eu lieu.
Et comment fonctionne Etherscan ?

Il se sert de la variable "_totalSupply" afin d'afficher notre supply max.

Et il se sert des évenements pour modifier la balance des propriétaires...

Vous l'aurez compris, nous avons dupé l'explorateur.
Enfin pas totalement,

Nous avons bien bypass l'augmentation de "_totalSupply" mais l'événement s'est déclenché quand même grâce au "_mint" que nous avons fait avant.

Ce qui fait que si nous regardons les "holders" du token sur Etherscan nous observons ceci :

J'ai 20 NEKR-H!
Sauvé !

Il suffit de bien analyser la section "holders" d'un token pour être sûr que tout est en règle !

Et bien non désolé...

Voici ma nouvelle fonction, elle, elle ne déclenchera aucun événement, elle vient simplement augmenter la balance de qui je veux !

Utilisons la !
La transaction :

rinkeby.etherscan.io/tx/0x086b766c0…

Elle a bien eu lieu, regardons sur Etherscan le résultat :

rinkeby.etherscan.io/token/0x14936D…

Il semblerait que rien n’ait bougé de ce côté là ! Pour le moment tout est (presque) normal.
Et pourtant sur mon portefeuille...

Et oui, j'ai bien 10 NEKR-H de plus !

J'ai créé un token qui est invisible sur l'explorateur de block alors qu'il est bien présent sur la blockchain !

Transparence ? Pas vraiment sur ce coup !
Et je vous rassure, la blockchain et M*tamask ne verrons aucun soucis à ce que je transfère ces tokens !

Comme le transfert déclenche des événements, ceci chamboulera un peu tout, mais rien ne m'empêche d'écraser ces fonctions de transfert pour modifier le code !

La solution ?
Et bien la solution est simple, apprenez à minima à lire un contrat pour déceler ce genre d'anomalies.

Ne prenez pas pour acquis ce que vous dit Etherscan.

Verifiez bien que le contrat avec lequel vous voulez interargir est vérifié et lisible !

DYOR !
Si vous ne savez pas lire un contrat, vous pouvez vous abonner à mon compte.

J'essaie de vous transmettre les bases au travers des différents threads que je propose.

Même si vous n'êtes pas développeur vous pouvez et devez comprendre comment fonctionne notre écosystème !
J'espère vous avoir appris quelque chose aujourd'hui.

N'oubliez pas que la plupart des tokens sont quand même legit, et que la communauté sait déceler ce genre de problème.

Mais il est important de savoir que c'est possible et comment c'est possible !
Merci de m'avoir lu.

Si ça vous a plu, le meilleur moyen de me soutenir c’est

- aimer
- retweet

Juste ici ⬇️

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with 0xNekr.eth

0xNekr.eth Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @0xNekr

Jul 19
[#THREAD] Vos NFTs peuvent-ils disparaître ?

Spoiler : OUI

Mais pourquoi et comment ? 🧵

#Web3 #Solidity #NFT #Crypto #ETH #Ethereum #JavaScript

⬇️ Image
> Prélude

Rassurez-vous, le token en lui-même ne peut pas disparaître, il est ancré sur la blockchain (Vous pouvez vous le faire scam/voler mais ce n'est pas le sujet). ouf...

MAIS...

2/22
Si vous pensez que votre #JPEG lié à votre token est immuable... Là c'est parfois moins vrai.

Imaginez qu'un matin vous arriviez pour contempler votre beau #BAYC sur #OpenSea et là...

96 #ETH pour un carré noir !

Est-ce possible ? Comment ?

⬇️

3/22 Image
Read 23 tweets
Jun 22
[#THREAD] Intéragir directement avec un Smart Contract

Difficulté technique : ★☆☆☆☆

Mint sans passer par une dApp, transférer un NFT, on a plein de raisons de vouloir intéragir avec un Smart Contract.

Mais comment faire ?

#Web3 #SmartContracts #NFT #Crypto

⬇️ Image
Interagir en direct avec un contrat a beaucoup d'avantages.

Notamment lorsqu'une #dApp ne fonctionne pas ou ne propose pas certaines fonctionnalités comme le transfert par exemple.

Cela va nous permettre d'avoir accès à toutes les fonctions publiques et externes !

1/22
> Le scope

Aujourd'hui je ne parle que des contrats qui sont déployés sur Ethereum et toutes les EVMs (AVAX, BSC, Fantom, Polygon, etc..)

Ce qui couvre déjà une belle partie de notre écosystème !

On est parti

⬇️

2/22
Read 24 tweets
Jun 17
[#THREAD] Les outils du développeur Web3

Difficulté technique : ★☆☆☆☆

Je vous livre sur un petit plateau tous les outils qui vont vous permettre d'avancer dans le monde du dev !

#Web3 #Solidity #SmartContracts #NFT #Crypto #Tools

⬇️

1/15 Image
> Organisation / Documentation

L'OUTIL INCONTOURNABLE : notion.so

@NotionHQ

C'est ce qui me permet de TOUT gérer :

- ToDo List
- Planning
- Gestion des prestations
- Documentation

Je fais tout là-bas et tout est centralisé ! C'est le TOP !

2/15
@NotionHQ > Organisation / Documentation

Le deuxième outil que TOUT dev doit gérer et maîtriser :

@github

Plus besoin de le présenter, le gestionnaire de code où je stocke tout ce que je fais, vous pouvez me suivre là-bas pour voir mon code :

github.com/0xNekr

3/15
Read 16 tweets
Jun 14
[#THREAD] On créé un contrat ERC721 pas à pas v.2

Difficulté technique : ★★★★☆

On améliore notre dernier contrat : il est temps de rajouter des étapes de vente et surtout... une whitelist !

#Web3 #Solidity #SmartContracts #NFT #Crypto #Whitelist

⬇️

1/21 Image
Notre objectif est de rajouter et modifier certaines caractéristiques :

• Ajouter des étapes de vente.
• Ajouter une vente en whitelist avec un arbre de Merkle.
• Un prix de vente de 0.01 ether en vente publique.
• Un prix de vente de 0.005 ether en whitelist.

2/21
Avant de continuer, si ce n'est pas déjà le cas, je vous conseille fortement de suivre mon premier thread sur la première étape de développement du contrat.

Il permet de poser les bases nécessaires pour comprendre ce qui suit !



3/21
Read 22 tweets
Jun 7
[#THREAD DE MES THREADS💻]

Histoire de facilement tout retrouver, voici mes threads dans l'ordre de publication ! 🥳

Design by @CryptoLidl 🔥

#ERC721 #Solidity #EVM #Eth #Crypto #Dev Image
Read 8 tweets
Jun 6
[#THREAD] Comment devenir développeur Solidity ?

C'est la question qu'on me pose le plus régulièrement !

Je ne suis pas sûr d'avoir la réponse, mais mon parcours est le suivant...

#Web3 #Solidity #SmartContract #NFT #Crypto #ETH

⬇️ 1/20 Image
[Prélude]

Je suis développeur de formation, j'ai des appétences pour le développement et ça m'a aidé à aller beaucoup plus vite !

Mais rien n'est impossible même si vous n'avez pas les bases (avec du temps et de l'envie on peut tout faire).

2/20
Je vais aborder exclusivement mon parcours entre mon apprentissage de Solidity jusqu'à mes premiers projets.

Mais si vous partez de 0, il est important selon moi de comprendre et maîtriser au moins les points qui suivent :

• HTML/CSS/JS
• Un framework JS
• La POO

3/20
Read 21 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(