-
Notifications
You must be signed in to change notification settings - Fork 68
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #105 from PoCInnovation/krypto-tour
add workshop for krypto-tour
- Loading branch information
Showing
4 changed files
with
233 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
// SPDX-License-Identifier: UNLICENSED | ||
pragma solidity ^0.8.20; | ||
|
||
contract HelloWorld { | ||
function hello() public pure returns(string memory) { | ||
return "Hello world"; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,145 @@ | ||
# Workshop - Découverte du Développement Blockchain et des Outils | ||
|
||
✔ 📖 **Découvrez Foundry** | ||
✔ 🛠️ **Déployez un Smart Contract sur une Blockchain Locale** | ||
✔ 🚀 **Appelez ce Smart Contract** | ||
|
||
## Introduction | ||
|
||
Cet atelier présente le développement blockchain et les outils nécessaires pour déployer et interagir avec des smart contracts. Nous vous guiderons à travers le déploiement de votre premier smart contract en utilisant Foundry sur une blockchain locale, et nous l’appellerons pour voir comment il fonctionne. | ||
|
||
### Qu'est-ce qu'un Smart Contract ? | ||
Un smart contract est un contrat auto-exécutable avec des actions directement écrits dans le code. Une fois déployé sur une blockchain, il peut être interagi comme n'importe quel autre logiciel, mais il est décentralisé, ce qui signifie que personne ne peut le modifier une fois qu'il est en ligne. | ||
|
||
## Prérequis | ||
|
||
Cet atelier ne nécessite **aucune connaissance préalable**. Tout ce dont vous avez besoin est un ordinateur et une connexion Internet. | ||
|
||
## Étape 1 - Installer VSCode | ||
|
||
VSCode est un éditeur de texte que les développeurs utilisent pour écrire du code. Pensez-y comme `Word` de Microsoft office mais spécialisé pour écrire du code. C'est ici où vous allez écrire votre smart contract. | ||
|
||
1. Allez sur le [site officiel](https://code.visualstudio.com/download) et téléchargez la version de VSCode pour votre système d'exploitation. | ||
2. Suivez les instructions d'installation sur le site, et une fois installé, ouvrez-le. Vous l'utiliserez pour écrire votre smart contract plus tard. | ||
|
||
> **Petit conseil :** | ||
> Activer l'auto save dans VSCode pour ne pas perdre votre travail et enregistrer les modifications automatiquement. Pour cela, allez dans `File` et cliquer sur `autosave`. | ||
## Étape 2 - Installer Foundry et initialiser un projet | ||
|
||
Toutes les étapes d'installation de Foundry sont dans le [fichier SETUP.md](./SETUP.md). Suivez les instructions pour installer Foundry sur votre ordinateur. | ||
|
||
### Supprimer les Fichiers Inutiles | ||
Certains fichiers fournis avec le projet de démarrage ne sont pas nécessaires pour cet atelier. | ||
|
||
1. Supprimez les dossiers et fichiers suivants : | ||
- Dossier `test` | ||
- Dossier `script` | ||
- Fichier `Counter.sol` dans le dossier `src` | ||
|
||
2. Maintenant, ajoutez le fichier `HelloWorld.sol` dans le dossier `src`. C'est le smart contract que vous allez déployer. | ||
- Le smart contract n'a qu'une seule fonction `hello()` qui renvoie le message `Hello world`. | ||
|
||
> **Pourquoi un "Hello World" ?** | ||
> Le programme "Hello World" est souvent le premier exemple de code que les développeurs écrivent lorsqu'ils apprennent un nouveau langage de programmation. Cette tradition remonte à 1972, lorsqu'il a été utilisé dans le livre "The C Programming Language" pour illustrer la syntaxe de base et l'affichage à l'écran. | ||
|
||
## Étape 4 - Démarrer la Blockchain Locale | ||
|
||
### Qu'est-ce qu'une Blockchain Locale ? | ||
|
||
Une blockchain locale est comme un simulateur de blockchain fonctionnant sur votre ordinateur. Elle vous permet de tester vos smart contracts sans utiliser de l'argent réel ou interagir avec une blockchain publique. | ||
|
||
1. Pour démarrer votre blockchain locale, exécutez la commande suivante dans le terminal : | ||
|
||
```shell | ||
anvil | ||
``` | ||
|
||
Anvil démarrera une blockchain locale et vous fournira une liste de portefeuilles pré-créés. Chaque portefeuille contient une crypto-monnaie fictive afin que vous puissiez déployer des smart contracts sans avoir besoin d'argent réel. | ||
|
||
2. **Copiez l'une des clés privées** de la liste. Vous utiliserez cette clé pour déployer votre smart contract à l'étape suivante. | ||
exemple: `0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80` | ||
> **Qu'est-ce qu'une clé privée ?** | ||
> Une clé privée est une chaîne de caractères qui permet d'accéder à un portefeuille de crypto-monnaie. C'est comme un mot de passe, mais plus long et plus sécurisé. Ne partagez jamais votre clé privée avec quelqu'un d'autre, car cela leur donnerait accès à votre portefeuille. | ||
> **Attention :** | ||
> Ne fermez pas le terminal où vous avez démarré la blockchain locale. | ||
> Pour taper les prochaines commandes, ouvrez un nouveau terminal. | ||
## Étape 5 - Déployer le Smart Contract | ||
|
||
### Que signifie Déployer ? | ||
Lorsque vous déployez un smart contract, vous le publiez sur une blockchain afin qu'il puisse être utilisé. Une fois déployé, il est en ligne et prêt à être utilisé. | ||
|
||
> **Attention :** | ||
> Lancer les commandes dans le bon dossier, le dossier créer par Foundry (`krypto-tour`). | ||
> Pour vous déplacer dans le bon dossier, utilisez la commande `cd krypto-tour`. | ||
> Si vous avez des problèmes, n'hésitez pas à demander de l'aide. | ||
1. Pour déployer votre smart contract, exécutez la commande suivante : | ||
|
||
```shell | ||
forge create --private-key PRIVATE_KEY src/HelloWorld.sol:HelloWorld | ||
``` | ||
|
||
Remplacez `PRIVATE_KEY` par la clé privée que vous avez copiée plus tôt depuis la blockchain locale. | ||
|
||
2. Après avoir exécuté la commande, vous verrez quelques informations sur le déploiement. Recherchez la partie qui dit `deployed to`, suivie d'une adresse. **Copiez cette adresse**, car c'est là que se trouve votre smart contract sur la blockchain, et vous en aurez besoin à l'étape suivante. | ||
|
||
## Étape 6 - Appeler le Smart Contract | ||
|
||
### Que signifie Appeler un Smart Contract ? | ||
Appeler un smart contract signifie interagir avec lui en exécutant l'une de ses fonctions. Pour cet atelier, vous allez appeler la fonction `hello()` du smart contract, qui renverra un message. | ||
|
||
1. Exécutez la commande suivante pour appeler la fonction `hello()` : | ||
|
||
```shell | ||
cast call CONTRACT_ADDRESS "hello()" | tr -d '\n' | cast to-ascii | ||
``` | ||
|
||
Remplacez `CONTRACT_ADDRESS` par l'adresse du smart contract que vous avez copiée précédemment. | ||
|
||
2. Vous devriez voir la sortie `Hello world`. | ||
|
||
Voici ce que fait chaque partie de la commande : | ||
- `cast call` est utilisé pour appeler une fonction dans le smart contract. | ||
- Le premier argument est l'adresse du smart contract. | ||
- Le deuxième argument est la fonction à appeler (`hello()` dans ce cas). | ||
- `tr -d '\n'` supprime le caractère de nouvelle ligne à la fin de la sortie. | ||
- `cast to-ascii` convertit la sortie de l'hexadécimal en texte lisible (ASCII). | ||
|
||
## Conclusion | ||
|
||
Félicitations ! Vous avez déployé et appelé un smart contract sur une blockchain locale. Vous avez fait vos premiers pas dans le développement blockchain, et j'espère que cet atelier vous a donné un aperçu de la puissance de cette technologie. | ||
|
||
N'hésitez pas à explorer davantage, à modifier le smart contract et à plonger plus profondément dans Foundry et la blockchain ! | ||
|
||
## Auteurs 👋 | ||
|
||
| [<img src="https://github.com/Intermarch3.png" width=120><br><sub>Lucas LECLERC</sub>](https://github.com/Intermarch3) | | ||
| :--------------------------------------------------------------------------------------------------------------------: | | ||
|
||
<h2 align="center">Organisation</h2> | ||
<br/> | ||
<p align='center'> | ||
<a href="https://www.linkedin.com/company/pocinnovation/mycompany/"> | ||
<img src="https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white" alt="Logo LinkedIn"> | ||
</a> | ||
<a href="https://www.instagram.com/pocinnovation/"> | ||
<img src="https://img.shields.io/badge/Instagram-E4405F?style=for-the-badge&logo=instagram&logoColor=white" alt="Logo Instagram"> | ||
</a> | ||
<a href="https://twitter.com/PoCInnovation"> | ||
<img src="https://img.shields.io/badge/Twitter-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white" alt="Logo Twitter"> | ||
</a> | ||
<a href="https://discord.com/invite/Yqq2ADGDS7"> | ||
<img src="https://img.shields.io/badge/Discord-7289DA?style=for-the-badge&logo=discord&logoColor=white" alt="Logo Discord"> | ||
</a> | ||
</p> | ||
<p align="center"> | ||
<a href="https://www.poc-innovation.fr/"> | ||
<img src="https://img.shields.io/badge/WebSite-1a2b6d?style=for-the-badge&logo=GitHub Sponsors&logoColor=white" alt="Logo Site Web"> | ||
</a> | ||
</p> | ||
|
||
> 🚀 N'hésitez pas à nous suivre sur nos différentes plateformes et à donner une étoile 🌟 aux dépôts de PoC. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
# 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. | ||
|
||
## 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. | ||
- Laisser les paramètre par défaut sauf pour `Default editor used by Git` ou vous pouvez choisir `Use Visual Studio Code as Git's default editor` | ||
- Tapez | ||
|
||
```sh | ||
curl -L https://foundry.paradigm.xyz | bash | ||
``` | ||
|
||
Cela va télécharger foundryup. | ||
Maintenant redémarrer votre terminal. | ||
|
||
- 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 | ||
|
||
Créer un dossier de travail vide pour le workshop. | ||
Ouvrez ce dossier dans VSCode avec `File > Open Folder`. | ||
Ensuite, vous pouvez ouvrir un terminal dans VSCode en allant dans `Terminal > New Terminal`. | ||
Si vous êtes sur Windows, faites la même chose mais ensuite créez un terminal Git Bash avec la flèche à côté du plus ([exemple](https://code.visualstudio.com/docs/terminal/basics#_terminal-shells)). | ||
|
||
L'initialisation configure la structure de base de votre projet. | ||
Une fois que l'installation est faite, vous pouvez créer un nouveau projet en tapant la command ci dessous : | ||
|
||
```sh | ||
forge init krypto-tour --no-commit | ||
``` | ||
|
||
Cela devrait créer un nouveau dossier contenant un tout nouveau projet foundry avec une structure et des fichiers de base. | ||
|
||
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 sous la ligne `[profile.default]` la ligne suivante: | ||
|
||
```toml | ||
solc_version = "0.8.20" | ||
``` | ||
|
||
Votre fichier devrait ressembler à ça | ||
|
||
```toml | ||
[profile.default] | ||
solc_version = "0.8.20" | ||
src = "src" | ||
out = "out" | ||
libs = ["lib"] | ||
``` | ||
|
||
Tout est bon, vous pouvez maintenant attaquer le workshop ! |