Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
Sacharbon authored Oct 12, 2024
1 parent b2ca5bf commit 7b46c34
Showing 1 changed file with 94 additions and 11 deletions.
105 changes: 94 additions & 11 deletions p2p/krypto-tour-giveaway/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down

0 comments on commit 7b46c34

Please sign in to comment.