From b2ca5bffc05a8085a18442bee1d6d911c5ecda99 Mon Sep 17 00:00:00 2001 From: sacharbon Date: Sun, 29 Sep 2024 18:58:18 +0200 Subject: [PATCH 1/9] work in progress --- p2p/krypto-tour-giveaway/README.md | 73 ++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 p2p/krypto-tour-giveaway/README.md diff --git a/p2p/krypto-tour-giveaway/README.md b/p2p/krypto-tour-giveaway/README.md new file mode 100644 index 00000000..4508f895 --- /dev/null +++ b/p2p/krypto-tour-giveaway/README.md @@ -0,0 +1,73 @@ +# Workshop Krypto Tour - Créer son token + +✔ Découverte de la norme ERC-20 +✔ Coder son token +✔ Déployer son token sous la norme ERC-20 + +## Introduction en quelques lignes + +### Qu'est-ce qu'un ERC-20 ? + +**ERC-20**, qui signifie « Ethereum Request for Comments 20 », est une **norme technique** utilisée pour **créer** et **gérer** des jetons basés sur la **blockchain Ethereum**. Les tokens ERC-20 sont des **actifs numériques** qui peuvent représenter **plusieurs formes** de valeur, telles que des actifs financiers, des points de fidélité, des biens numériques, etc. + +### Pourquoi mettre en place une norme ? + +Le **premier avantage** de l'ERC-20 réside dans sa facilité d'**adoption** et d'**interopérabilité**. Cette norme **définit un ensemble de règles** et de fonctions qui permettent aux développeurs de **créer des tokens compatibles avec le réseau Ethereum** et les portefeuilles Ethereum existants. Cela signifie que les utilisateurs peuvent stocker, transférer et échanger différents types de tokens ERC-20 **en utilisant les mêmes portefeuilles et interfaces**. + +### Avec quelle technologie ? + +**Solidity** est un **langage de programmation** spécifiquement **conçu pour développer des contrats intelligents sur la blockchain Ethereum**. Il permet aux développeurs de **créer des contrats auto-exécutables, autonomes et vérifiables** qui définissent des règles et des interactions dans un **environnement décentralisé**. Solidity est basé sur une syntaxe **JavaScript-like** et offre des fonctionnalités telles que la gestion d'état, les structures de contrôle, les événements et les appels à d'autres contrats, permettant la **création de solutions complexes et sécurisées** sur la blockchain Ethereum. Si vous n'avez jamais utilisé Solidity auparavant, jetez un coup d'œil aux [Solidity Essentials](./Solidity.md) pour comprendre les bases. Vous pouvez également consulter la [documentation officielle](https://docs.soliditylang.org/en/v0.8.21/). + +## Étape 1 - Mise en place de l'environment de développement + +- [ ] Forge init +- [ ] Forge install Openzepellin + +## Étape 2 - Création et personnalisation de son token + +- [ ] Récupèrer le code +- [ ] Explication ligne par ligne (comments) +- [ ] Expliquer comment choisir le nom de son token + +## Étape 3 - Deployment sur un testnet + +- [ ] Présentation du therme testnet +- [ ] Présentation de Sépolia +- [ ] Déployment sur sépolia + +## 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. + +J'espère que vous avez apprécié l'atelier ! + +## Authors + +| [
Sacha Dujardin](https://github.com/Sacharbon) | +| :-----------------------------------------------------------------------------------------------------------------: | +

+Organization +

+ +

+ + LinkedIn logo + + + Instagram logo + + + Twitter logo + + + Discord logo + +

+

+ + Website logo + +

+ +> 🚀 Don't hesitate to follow us on our different networks, and put a star 🌟 on `PoC's` repositories. From 7b46c34d8c1de7f5b613a9a5037d9eff81674026 Mon Sep 17 00:00:00 2001 From: Sacha Dujardin Date: Sat, 12 Oct 2024 20:06:40 +0200 Subject: [PATCH 2/9] Update README.md --- p2p/krypto-tour-giveaway/README.md | 105 ++++++++++++++++++++++++++--- 1 file changed, 94 insertions(+), 11 deletions(-) diff --git a/p2p/krypto-tour-giveaway/README.md b/p2p/krypto-tour-giveaway/README.md index 4508f895..11ebff0b 100644 --- a/p2p/krypto-tour-giveaway/README.md +++ b/p2p/krypto-tour-giveaway/README.md @@ -18,22 +18,105 @@ Le **premier avantage** de l'ERC-20 réside dans sa facilité d'**adoption** et **Solidity** est un **langage de programmation** spécifiquement **conçu pour développer des contrats intelligents sur la blockchain Ethereum**. Il permet aux développeurs de **créer des contrats auto-exécutables, autonomes et vérifiables** qui définissent des règles et des interactions dans un **environnement décentralisé**. Solidity est basé sur une syntaxe **JavaScript-like** et offre des fonctionnalités telles que la gestion d'état, les structures de contrôle, les événements et les appels à d'autres contrats, permettant la **création de solutions complexes et sécurisées** sur la blockchain Ethereum. Si vous n'avez jamais utilisé Solidity auparavant, jetez un coup d'œil aux [Solidity Essentials](./Solidity.md) pour comprendre les bases. Vous pouvez également consulter la [documentation officielle](https://docs.soliditylang.org/en/v0.8.21/). -## Étape 1 - Mise en place de l'environment de développement +## Étape 0 - Initialisation -- [ ] Forge init -- [ ] Forge install Openzepellin +Toute les informations nécéssaires à la mise en place de votre environment de développement sont à retrouver dans [SETUP.md](./SETUP.md) -## Étape 2 - Création et personnalisation de son token +## Étape 1 - Création et personnalisation de son token -- [ ] Récupèrer le code -- [ ] Explication ligne par ligne (comments) -- [ ] Expliquer comment choisir le nom de son token +### 📑 **Description**: -## Étape 3 - Deployment sur un testnet +Pour créer notre token, nous allons devoir coder un smart contract. Nous utiliserons le language [Solidity](https://fr.wikipedia.org/wiki/Solidity). -- [ ] Présentation du therme testnet -- [ ] Présentation de Sépolia -- [ ] Déployment sur sépolia +>💡 *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**: + +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 + +```sh +forge install OpenZeppelin/openzeppelin-contracts +``` + +C'est le moment de coder ! +- Ouvrez votre projet foundry `krypto-tour` dans VScode. +- Créez un fichier `erc20.sol` dans le dossier `src/` et écrivez ces lignes: + +**Directive d'import & pragma** +```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. + +**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. + +```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. +- `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 !** +- `_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. + - `100000 * 10 ** decimals()` calcule le nombre total de tokens à créer : + - `100000` est le nombre de tokens entiers. + - `10 ** decimals()` ajoute les décimales. Par défaut, `decimals()` renvoie 18 pour la plupart des tokens ERC20. + - Donc, si `decimals()` est 18, cela créera 100000 * 10^18 unités de base du token. + +## Étape 2 - Déploiement + +### 📑 **Description**: + +Maintenant que vous avez codé et personnalisé votre token, vous allez déployer le déployer sur la blockchain [Polygon](https://polygon.technology/). + +### 📌 **Todo**: + +- [ ] Setup son compte Tangem + +Premièrement, récupérez le fichier `DeployToPolygon.s.sol` sur GitHub et enregistrez le dans le dossier `script/` + +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 + +```toml +[rpc_endpoints] +polygon = "${POLYGON_RPC_URL}" +``` + +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 + +```env +POLYGON_RPC_URL=https://polygon-rpc.com +PRIVATE_KEY=votre_clé_privée_ici +``` + +>💡 *Le fichier .env vous permet de personnaliser vos variables d'environnement de travail individuelles.* + + +C'est le grand moment ! Entrez cette commande, et votre token devrait se déployer ! + +```sh +forge script script/DeployToPolygon.s.sol:DeployToPolygon --rpc-url $POLYGON_RPC_URL --broadcast --verify +``` + +Enfin, rendez-vous sur l'application de votre carte Tangem, vous devriez y aperçevoir votre token ! ## Conclusion From 47fb8a667dfb1fecfbd14d7b45a97f9e85ade6bc Mon Sep 17 00:00:00 2001 From: Sacha Dujardin Date: Sat, 12 Oct 2024 20:16:23 +0200 Subject: [PATCH 3/9] remove too technical explanation --- p2p/krypto-tour-giveaway/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/p2p/krypto-tour-giveaway/README.md b/p2p/krypto-tour-giveaway/README.md index 11ebff0b..f9d5de93 100644 --- a/p2p/krypto-tour-giveaway/README.md +++ b/p2p/krypto-tour-giveaway/README.md @@ -16,7 +16,7 @@ Le **premier avantage** de l'ERC-20 réside dans sa facilité d'**adoption** et ### Avec quelle technologie ? -**Solidity** est un **langage de programmation** spécifiquement **conçu pour développer des contrats intelligents sur la blockchain Ethereum**. Il permet aux développeurs de **créer des contrats auto-exécutables, autonomes et vérifiables** qui définissent des règles et des interactions dans un **environnement décentralisé**. Solidity est basé sur une syntaxe **JavaScript-like** et offre des fonctionnalités telles que la gestion d'état, les structures de contrôle, les événements et les appels à d'autres contrats, permettant la **création de solutions complexes et sécurisées** sur la blockchain Ethereum. Si vous n'avez jamais utilisé Solidity auparavant, jetez un coup d'œil aux [Solidity Essentials](./Solidity.md) pour comprendre les bases. Vous pouvez également consulter la [documentation officielle](https://docs.soliditylang.org/en/v0.8.21/). +**Solidity** est un **langage de programmation** spécifiquement **conçu pour développer des contrats intelligents sur la blockchain Ethereum**. Il permet aux développeurs de **créer des contrats auto-exécutables, autonomes et vérifiables** qui définissent des règles et des interactions dans un **environnement décentralisé**. ## Étape 0 - Initialisation From 6f8790e6ba19b9983e854d4bc0d0d829b232ab61 Mon Sep 17 00:00:00 2001 From: Sacha Dujardin Date: Sat, 12 Oct 2024 20:16:58 +0200 Subject: [PATCH 4/9] Create SETUP.md --- p2p/krypto-tour-giveaway/SETUP.md | 74 +++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 p2p/krypto-tour-giveaway/SETUP.md diff --git a/p2p/krypto-tour-giveaway/SETUP.md b/p2p/krypto-tour-giveaway/SETUP.md new file mode 100644 index 00000000..0b7c78f0 --- /dev/null +++ b/p2p/krypto-tour-giveaway/SETUP.md @@ -0,0 +1,74 @@ +# Setup - Foundry + +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** +- Ouvrez votre terminal et tapez + +```sh +curl -L https://foundry.paradigm.xyz | bash +``` + +**Windows** +- Téléchargez [Git pour windows](https://git-scm.com/downloads/win) puis lancer le programme Git Bash. +- Tapez + +```sh +curl -L https://foundry.paradigm.xyz | bash +``` + +Cela va télécharger foundryup. + +- Ensuite, vous pouvez installer foundry en tapant `foundryup` +- Si tout s'est bien passé vous devriez être capable d'utiliser `forge`, `anvil`, `chisel` et `cast` +- Si vous êtes sur macos vous devez installer `libusb` en tapant + +```sh +brew install libusb +``` + +Après l'installation, lancer cette commande pour vérifier que tout est bien installé sur votre ordinateur: + +```sh +forge --version +``` + +Cela devrait afficher la version actuelle de forge. + +Si vous avez des soucis d'installation n'hésitez pas à demander de l'aide aux organisateur de ce workshop. + +## Créer un projet foundry + +Une fois que l'installation est faite, vous pouvez créer un nouveau projet en tapant + +```sh +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 ! From 4f976dd36bf9418be7e3872454d956694a8e6b31 Mon Sep 17 00:00:00 2001 From: Sacha Dujardin Date: Sat, 12 Oct 2024 20:20:36 +0200 Subject: [PATCH 5/9] Update SETUP.md --- p2p/krypto-tour-giveaway/SETUP.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/p2p/krypto-tour-giveaway/SETUP.md b/p2p/krypto-tour-giveaway/SETUP.md index 0b7c78f0..d7389465 100644 --- a/p2p/krypto-tour-giveaway/SETUP.md +++ b/p2p/krypto-tour-giveaway/SETUP.md @@ -8,14 +8,14 @@ Rendez-vous sur [Téléchargement de VScode](https://code.visualstudio.com/downl ## Installer Foundry -**Linux et macos** +### Linux et MacOS - Ouvrez votre terminal et tapez ```sh curl -L https://foundry.paradigm.xyz | bash ``` -**Windows** +### Windows - Téléchargez [Git pour windows](https://git-scm.com/downloads/win) puis lancer le programme Git Bash. - Tapez From 60fb908b8355a6a96629801b8ece521ff22ca5ea Mon Sep 17 00:00:00 2001 From: Sacha Dujardin Date: Sun, 13 Oct 2024 22:51:37 +0200 Subject: [PATCH 6/9] Update krypto-tour-giveaway/README.md --- p2p/krypto-tour-giveaway/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/p2p/krypto-tour-giveaway/README.md b/p2p/krypto-tour-giveaway/README.md index f9d5de93..cc375854 100644 --- a/p2p/krypto-tour-giveaway/README.md +++ b/p2p/krypto-tour-giveaway/README.md @@ -1,7 +1,9 @@ -# Workshop Krypto Tour - Créer son token +# Workshop Krypto Tour - Créer sa cryptomonnaie (ERC-20) ✔ Découverte de la norme ERC-20 + ✔ Coder son token + ✔ Déployer son token sous la norme ERC-20 ## Introduction en quelques lignes From e2624659199623547db8e79a67346b4a15550a0f Mon Sep 17 00:00:00 2001 From: Nathan FLATTIN Date: Thu, 17 Oct 2024 22:43:22 +0200 Subject: [PATCH 7/9] update: krypto tour erc20 workshop --- p2p/krypto-tour-giveaway/README.md | 79 ++++++++++++++++++------------ p2p/krypto-tour-giveaway/SETUP.md | 26 +--------- 2 files changed, 49 insertions(+), 56 deletions(-) diff --git a/p2p/krypto-tour-giveaway/README.md b/p2p/krypto-tour-giveaway/README.md index cc375854..b4745f90 100644 --- a/p2p/krypto-tour-giveaway/README.md +++ b/p2p/krypto-tour-giveaway/README.md @@ -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 @@ -22,19 +22,19 @@ 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 @@ -42,9 +42,10 @@ 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; @@ -52,17 +53,18 @@ 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") { @@ -70,11 +72,11 @@ constructor() ERC20("KRYPTO-POC", "POC") { } ``` -- `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. @@ -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 diff --git a/p2p/krypto-tour-giveaway/SETUP.md b/p2p/krypto-tour-giveaway/SETUP.md index d7389465..cc289a9f 100644 --- a/p2p/krypto-tour-giveaway/SETUP.md +++ b/p2p/krypto-tour-giveaway/SETUP.md @@ -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 - Ouvrez votre terminal et tapez @@ -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) From 58423e5b4ee2b5151b5d17026c845b512e715cff Mon Sep 17 00:00:00 2001 From: Nathan FLATTIN Date: Thu, 17 Oct 2024 22:45:14 +0200 Subject: [PATCH 8/9] update: krypto tour workshop erc20 name --- p2p/{krypto-tour-giveaway => 9.Tangem_ERC-20}/README.md | 0 p2p/{krypto-tour-giveaway => 9.Tangem_ERC-20}/SETUP.md | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename p2p/{krypto-tour-giveaway => 9.Tangem_ERC-20}/README.md (100%) rename p2p/{krypto-tour-giveaway => 9.Tangem_ERC-20}/SETUP.md (100%) diff --git a/p2p/krypto-tour-giveaway/README.md b/p2p/9.Tangem_ERC-20/README.md similarity index 100% rename from p2p/krypto-tour-giveaway/README.md rename to p2p/9.Tangem_ERC-20/README.md diff --git a/p2p/krypto-tour-giveaway/SETUP.md b/p2p/9.Tangem_ERC-20/SETUP.md similarity index 100% rename from p2p/krypto-tour-giveaway/SETUP.md rename to p2p/9.Tangem_ERC-20/SETUP.md From b9f5a639fb70bc01fdef93722e4afba2b71b471e Mon Sep 17 00:00:00 2001 From: Nathan FLATTIN Date: Thu, 17 Oct 2024 22:50:07 +0200 Subject: [PATCH 9/9] fix: SETUP.md --- p2p/9.Tangem_ERC-20/SETUP.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/p2p/9.Tangem_ERC-20/SETUP.md b/p2p/9.Tangem_ERC-20/SETUP.md index cc289a9f..413550ad 100644 --- a/p2p/9.Tangem_ERC-20/SETUP.md +++ b/p2p/9.Tangem_ERC-20/SETUP.md @@ -2,6 +2,8 @@ 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. +## Installer Foundry + ### Linux et MacOS - Ouvrez votre terminal et tapez @@ -37,7 +39,7 @@ Cela devrait afficher la version actuelle de forge. Si vous avez des soucis d'installation n'hésitez pas à demander de l'aide aux organisateur de ce workshop. -## Créer un projet foundry +## Créer un projet Foundry Une fois que l'installation est faite, vous pouvez créer un nouveau projet en tapant