Skip to content

Commit

Permalink
update: krypto tour erc20 workshop
Browse files Browse the repository at this point in the history
  • Loading branch information
Nfire2103 committed Oct 17, 2024
1 parent 60fb908 commit e262465
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 56 deletions.
79 changes: 47 additions & 32 deletions p2p/krypto-tour-giveaway/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

✔ Découverte de la norme ERC-20

✔ Coder son token
✔ Coder sa cryptomonnaie

✔ Déployer son token sous la norme ERC-20
✔ Déployer sa cryptomonnaie sur la blockchain Polygon

## Introduction en quelques lignes

Expand All @@ -22,59 +22,61 @@ Le **premier avantage** de l'ERC-20 réside dans sa facilité d'**adoption** et

## Étape 0 - Initialisation

Toute les informations nécéssaires à la mise en place de votre environment de développement sont à retrouver dans [SETUP.md](./SETUP.md)
Toute les informations nécéssaires à la mise en place de votre environment de développement sont à retrouver dans [SETUP.md](./SETUP.md)

## Étape 1 - Création et personnalisation de son token

### 📑 **Description**:
### 📑 **Description** :

Pour créer notre token, nous allons devoir coder un smart contract. Nous utiliserons le language [Solidity](https://fr.wikipedia.org/wiki/Solidity).

>💡 *Un smart contract est un programme informatique autonome qui s'exécute automatiquement sur une blockchain lorsque des conditions prédéfinies sont remplies. Il permet d'automatiser et de sécuriser des accords sans intermédiaire, de manière transparente et immuable.*
### 📌 **Todo**:
### 📌 **Tâches** :

Premièrement, vous aller avoir besoin d'utiliser OpenZeppelin: OpenZeppelin est une bibliothèque pour créer des tokens ERC20. Elle fournit des implémentations standards, testées et réutilisables, simplifiant le développement de smart contracts conformes et sûrs. Installez-le en tapant
Premièrement, vous aller avoir besoin d'utiliser la bibliothèque de smart contrats d'OpenZeppelin: OpenZeppelin est une organisation qui fournit des smart contracts sécurisés et reconnus pour la blockchain Ethereum. Pour l'installer, entrez cette commande dans votre terminal:

```sh
forge install OpenZeppelin/openzeppelin-contracts
```

C'est le moment de coder !
- Ouvrez votre projet foundry `krypto-tour` dans VScode.
- Supprimez les fichiers `script/Counter.s.sol`, `test/Counter.t.sol` et `src/Counter.sol`.
- Créez un fichier `erc20.sol` dans le dossier `src/` et écrivez ces lignes:

**Directive d'import & pragma**
**Version et import**
```js
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.20;

import {ERC20} from "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol";
```

Le mot-clé `pragma` peut être utilisé pour activer certaines fonctions ou vérifications du compilateur.
Import est une fonctionnalité qui vous permet d'utiliser du code depuis d'autres fichiers ou modules dans votre programme actuel. Ici on importe le code ERC20 d'OpenZeppelin.
La directive `SPDX-License-Identifier` est une convention pour spécifier la licence du code source.\
Les mots-clés `pragma solidity` permettent de spécifier la version de Solidity à utiliser. Ici, nous utilisons la version 0.8.20.\
`import` est une fonctionnalité qui vous permet d'utiliser du code depuis d'autres fichiers dans votre programme actuel. Ici on importe le contrat ERC20 d'OpenZeppelin.

**contract**
**Contract**
```js
contract Token is ERC20 {
}
```

`contract` en Solidity est un conteneur pour le code (ses fonctions) et les données (son état) qui résident à une adresse spécifique sur la blockchain.
Le mot-clé `is` en Solidity indique l'héritage. Notre contrat va donc hériter de toutes les fonctions et événements définis dans le standard ERC20 d'OpenZeppelin.
Le mot-clé `is` en Solidity indique l'héritage. C'est à dire que notre contrat `Token` va pouvoir utiliser toutes les fonctions et événements définis dans le contrat `ERC20`.

```js
constructor() ERC20("KRYPTO-POC", "POC") {
_mint(msg.sender, 100000 * 10 ** decimals());
}
```

- `constructor()` : C'est le constructeur du contrat. Il est appelé une seule fois, lors du déploiement du contrat sur la blockchain.
- `constructor()` : C'est le constructeur du contrat, c'est lui qui est en charge de créer le smart contract. Il est appelé une seule fois, lors du déploiement du contrat sur la blockchain.
- `ERC20("KRYPTO-POC", "POC")` :
- Ceci appelle le constructeur du contrat parent ERC20.
- "KRYPTO-POC" est le nom complet du token: **vous pouvez le personnaliser !**
- "POC" est le symbole ou ticker du token (comme "BTC" pour Bitcoin): **vous pouvez le personnaliser !**
- "POC" est le symbole du token (comme "BTC" pour Bitcoin): **vous pouvez le personnaliser !**
- `_mint(msg.sender, 100000 * 10 ** decimals());` :
- `_mint` est une fonction interne de ERC20 qui crée de nouveaux tokens.
- `msg.sender` est l'adresse qui déploie le contrat. Les nouveaux tokens seront envoyés à cette adresse.
Expand All @@ -85,46 +87,59 @@ constructor() ERC20("KRYPTO-POC", "POC") {

## Étape 2 - Déploiement

### 📑 **Description**:
### 📑 **Description** :

Maintenant que vous avez codé et personnalisé votre token, vous allez déployer le déployer sur la blockchain [Polygon](https://polygon.technology/).
Maintenant que vous avez codé et personnalisé votre token, vous allez pouvoir déployer votre smart contract sur la blockchain [Polygon](https://polygon.technology/).

### 📌 **Todo**:
### 📌 **Tâches** :

- [ ] Setup son compte Tangem
Commençons par créer un wallet temporaire qui va nous permettre de déployer notre token sur la blockchain Polygon. Pour cela, entrez cette commande dans votre terminal :

Premièrement, récupérez le fichier `DeployToPolygon.s.sol` sur GitHub et enregistrez le dans le dossier `script/`
```sh
cast wallet new
```

Il faut indiquer à votre projet que l'on souhaite intéragir avec la blockchain Polygon. Pour ce faire, ajoutez ces lignes dans votre fichier foundry.toml
Mettez de côté l'adresse et la clé privée du wallet généré, vous allez en avoir besoin.

```toml
[rpc_endpoints]
polygon = "${POLYGON_RPC_URL}"
```
Remplissez le formulaire suivant avec votre adresse email et l'`address` générée par la commande précédente : [https://forms.gle/ZXDvPHJwP4TN7aWeA](https://forms.gle/ZXDvPHJwP4TN7aWeA). Cela nous permettra de vous envoyer des tokens `MATIC` afin de payer les frais de déploiement.

Récupérez la clée privée de votre wallet sur Tangem. Ensuite, il vous faut créer un fichier `.env` et y ajouter votre clée privée comme ceci
C'est le grand moment ! Entrez cette commande, et votre token devrait se déployer ! Pensez simplement à remplacer `PRIVATE_KEY` par la clé privée de votre wallet temporaire.

```env
POLYGON_RPC_URL=https://polygon-rpc.com
PRIVATE_KEY=votre_clé_privée_ici
```sh
forge create src/erc20.sol --rpc-url https://polygon-mainnet.g.alchemy.com/v2/m1TWeG_zxjMLlLQD1Y1ldDhoBXE_vO2H --private-key PRIVATE_KEY
```

>💡 *Le fichier .env vous permet de personnaliser vos variables d'environnement de travail individuelles.*
La commande `forge create` permet de déployer un smart contract, ici notre token ERC20.

Le paramètre `--rpc-url` correspond à l'URL d'un noeud RPC de la blockchain Polygon. Un noeud RPC est un serveur qui permet de communiquer avec la blockchain.

La private key est une clé secrète qui permet de signer les transactions. Elle est nécessaire pour déployer un smart contract sur la blockchain.

## Étape 3 - Transfert des tokens sur son wallet Tangem

C'est le grand moment ! Entrez cette commande, et votre token devrait se déployer !
### 📑 **Description** :

Maintenant que votre token est déployé sur la blockchain Polygon, vous allez pouvoir le transférer sur votre wallet Tangem.

### 📌 **Tâches** :

Avant de transférer vos tokens, assurez-vous d'avoir configurer votre wallet Tangem et de l'avoir connecté à l'application. Vous pouvez ensuite récupérer l'adresse de votre wallet, vous en aurez besoin pour transférer vos tokens.

Entrez cette commande pour transférer vos tokens sur votre wallet Tangem. Pensez à remplacer `AMOUNT` par le nombre de tokens que vous souhaitez transférer, `ADDRESS` par l'adresse de votre wallet Tangem et `PRIVATE_KEY` par la clé privée de votre wallet temporaire.

```sh
forge script script/DeployToPolygon.s.sol:DeployToPolygon --rpc-url $POLYGON_RPC_URL --broadcast --verify
cast send "transfer(address,uint256)" ADDRESS $(cast to-wei AMOUNT) --rpc-url https://polygon-mainnet.g.alchemy.com/v2/m1TWeG_zxjMLlLQD1Y1ldDhoBXE_vO2H --private-key PRIVATE_KEY
```

La commande `cast send` permet de déclencher une fonction d'un smart contract. Ici, nous utilisons la fonction `transfer` du contrat ERC20 pour envoyer des tokens à une adresse spécifique.

Enfin, rendez-vous sur l'application de votre carte Tangem, vous devriez y aperçevoir votre token !

## Conclusion

Vous venez de créer votre propre ERC-20, bravo ! Au cours de cet atelier, vous avez appris ce qu'était un ERC-20, mais vous avez également créé votre propre implémentation. Vous pouvez trouver une implémentation célèbre [ici](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol), si vous le souhaitez, vous pouvez comparer votre implémentation avec la vôtre et éventuellement y ajouter des fonctionnalités.
Vous venez de créer votre propre ERC-20, bravo ! Au cours de ce workshop, vous avez appris ce qu'était un ERC-20, mais vous avez également créé votre propre token et l'avez déployé sur la blockchain Polygon. Vous avez également pu découvrir les wallets Tangem et apprendre à utiliser l'application associée.

J'espère que vous avez apprécié l'atelier !
J'espère que vous avez apprécié ce workshop !

## Authors

Expand Down
26 changes: 2 additions & 24 deletions p2p/krypto-tour-giveaway/SETUP.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,6 @@

Foundry est une chaîne d'outils de développement de smarts contracts. Il gère vos dépendances, compile votre projet, exécute des tests, déploie et vous permet d'interagir avec la blockchain à partir de la ligne de commande et via des scripts Solidity.

## Télécharger VScode

Rendez-vous sur [Téléchargement de VScode](https://code.visualstudio.com/download) et choisisez votre version. Suivez le processus d'installation. Visual Studio Code est un éditeur de code extensible développé par Microsoft pour Windows, Linux et macOS.

## Installer Foundry

### Linux et MacOS

Check failure on line 5 in p2p/krypto-tour-giveaway/SETUP.md

View workflow job for this annotation

GitHub Actions / lint

Heading levels should only increment by one level at a time [Expected: h2; Actual: h3]

p2p/krypto-tour-giveaway/SETUP.md:5 MD001/heading-increment/header-increment Heading levels should only increment by one level at a time [Expected: h2; Actual: h3]
- Ouvrez votre terminal et tapez

Expand Down Expand Up @@ -53,22 +47,6 @@ forge init krypto-tour

Cela devrait créer un nouveau dossier contenant un tout nouveau projet foundry.

La première chose à faire est d'écrire la version de solidity dans le fichier `foundry.toml` qui est le fichier de configuration de votre projet.

Vous pouvez faire cela en ajoutant dans la partie `[profile.default]`:

```toml
solc_version = "0.8.20"
```

Votre fichier devrait ressembler à ça

```toml
[profile.default]
src = "src"
out = "out"
libs = ["lib"]
solc_version = "0.8.20"
```

Tout est bon, vous pouvez maintenant attaquer le workshop !

[Retour au workshop !](./README.md)

0 comments on commit e262465

Please sign in to comment.