SlideShare une entreprise Scribd logo
1  sur  248
Télécharger pour lire hors ligne
Formation
BLOCKCHAIN
Maîtriser les Smart Contracts
Une formation
Youssef LRHCHA
Cursus de formations Blockchain
Une formation
Introduction
1. Introduction de la notion des Smart Contracts
2. Installer et configurer le Framework Truffle
3. Installer et configurer le client Blockchain Ganachi-CLI
4. Installer le compilateur Solc
5. Explorer Remix IDE
6. Installer MetaMask
7. Développer votre Smart Contract avec Solidity Créer votre propre
Token avec Solidity
8. Implémenter un DNS décentralisé avec Solidity
Conclusion
Plan de la formation
Une formation
Toute personne désireuse de savoir le fonctionnement de
la Blockchain et plus précisément la notion des Smart
Contracts
Responsable innovation / digital voulant implémenter des
projets Blockchain en se basant sur les Smart Contracts
Architecte et développeur désirant savoir plus sur cette
technologie pour développer des Smart Contracts
Public concerné
Une formation
Connaissances requises
Présentation du Lab
Une formation
Youssef LRHCHA
Une formation
Caractéristiques techniques de la machine
Les produits logiciels nécessaires à la
formation
Quelques prérequis nécessaires
Une formation
Caractéristiques techniques de la machine Lab
Pour une configuration optimale
Windows 10 Professionnel (ou bien un Linux ou Mac)
Système d’exploitation 64 bits, processeur x64
Processeur Intel(R) Core(TM) i5-4340M CPU @
2.90GHz
Mémoire RAM installée 16,0 Go
Une formation
Les produits logiciels nécessaires à la
formation
Truffle Suite : Outils Open Source pour Blockchain
MetaMask
Embarquer
Web3j
Prysm
Projet Remix
Une formation
Liens de téléchargements
Vous trouverez tous les liens des produits
logiciels dans la rubrique Ressources de ce
cours
Présentation des Smart
Contracts
Une formation
Youssef LRHCHA
Les Smart Contracts
Pourquoi des contrats intelligents ?
Pas d'autorité unique
Permet une vérification publique
Quelques Use Cases des Smart Contract
En gros, un grand avenir pour les Smart Contracts
Une formation
La Blockchain pourrait bien être la technologie phare dans de nombreux
autres domaines
La banque
Les paiements et les transferts d’argent
La cybersécurité
L’authentification des diplômes
Le vote
La location ou vente de voitures
L’internet des objets
Les contrats intelligents
Les prévisions
La musique en ligne
Le co-voiturage
Le trading en ligne
Un cas concret
Comprendre Ethereum
et Solidity
Une formation
Youssef LRHCHA
Une formation
Ethereum est une plate-forme blockchain
décentralisée qui établit un réseau peer-to-peer qui
exécute et vérifie en toute sécurité le code
d'application, appelé contrats intelligents
Les contrats intelligents permettent aux participants
d'effectuer des transactions entre eux sans autorité
centrale de confiance
L’Ethereum
Une formation
Le programmeur Vitalik Buterin
découvre les cryptomonnaies avec le Bitcoin en 2011 et
décide de créer un nouveau protocole utilisant un langage
Turing-Complet plutôt que d'alourdir la structure du
Bitcoin, l'idée d'Ethereum naissait
Un article intéressant sur le créateur d’Ethereum se trouve
dans la page ressources de ce cours
Origine et lancement
Une formation
Ethereum est un accès ouvert à la monnaie numérique et à
des services conviviaux pour tout le monde, qui que vous
soyez
C'est une technologie construite par la communauté
derrière la cryptomonnaie ether (ETH) et des milliers
d'applications que vous pouvez utiliser dès aujourd'hui
Présentation de Ethereum
Services bancaires pour tous
Un internet plus respectueux de la vie privée
Un réseau P2P
Résistant à la censure
Garanties de commerce
La compatibilité avant tout
Ethereum promet ces postulats
Une formation
Solidity, Kesako ?
Solidity est un langage de haut niveau orienté objet
pour la mise en œuvre de contrats intelligents
Les contrats intelligents sont des programmes qui
régissent le comportement des comptes dans l'état
Ethereum
Une formation
Présentation de Solidity
Solidity est un langage conçu pour cibler la machine
virtuelle Ethereum (EVM)
Il est influencé par C++, Python et JavaScript
Solidity est typé statiquement, prend en charge l'héritage,
les bibliothèques et les types complexes définis par
l'utilisateur, entre autres fonctionnalités
Avec Solidity, vous pouvez créer des Smart Contracts pour
des utilisations telles que le vote, le financement
participatif, les enchères à l'aveugle et les portefeuilles
multi-signatures
Installer Truffle
et ses dépendances sous Windows
Une formation
Youssef LRHCHA
Une formation
La Suite Truffle sont un ensemble d’outils Open
Source pour Blockchain
Pour info : le terme Open Source réfère à la
particularité d’un logiciel qui est un code conçu pour
être accessible au public
n'importe qui peut voir, modifier et distribuer le
code à sa convenance
La suite Truffle
Une formation
Dans notre machine Lab, nous avons tous, ou
quelques un, une machine Windows 10
Vu le fait que Windows s’est ouvert aux applications
Open Source, il est possible d’installer la suite Truffle
sur notre Lab Windows 10
La suite Truffle sous Windows
Une formation
Vous n’avez pas besoin de connaissances particulière pour suivre
ce tutoriel, nous allons voir ensembles tout ce dont vous aurez
besoin pour développer votre premier smart-contract avec
Solidity et Truffle
Malgré tout, des spécifications techniques sont requises,
notamment un ordinateur possédant
Window, MacOS
NodeJS > la version actuelle est node-v16.15.0-x64
Prérequis
Mettre en place notre environnement via le lancement en mode Administrateur le Power Shell de
Windows
Préparation de l’environnement
Commençons par installer Truffle, lancez simplement dans une console la commande suivante
npm install truffle -g
Installation de Truffle
Projet HelloWorld
Une fois Truffle installé, nous pouvons créer notre projet HelloWorld
mkdir HelloWorld-Tutoriel
Projet HelloWorld
cd HelloWorld-Tutoriel
truffle init
Une formation
La suite Truffle sous Windows
Vous voilà avec un projet Truffle, qui contient plusieurs fichiers et
dossiers prêts à l’emploi que nous allons voir ensemble
le dossier contracts qui accueillera nos futurs smart-contracts,
avec l’extension .sol pour Solidity
le dossier migrations qui contiendra les différents script de
déploiement sur la blockchain
test qui nous permettra de réaliser des tests unitaires sur nos
contrats
et enfin truffle-config que l’on utilisera notamment pour
définir la/les blockchains sur lesquels déployer nos contrats
Installer Truffle
et ses dépendances sous GNU/Linux
Une formation
Youssef LRHCHA
Pour notre Lab en version Linux, nous allons le faire avec la distribution Linux UBUNTU
Pour rendre l’expérience très simple, nous avons deux moyens
soit via l’installation d’ubuntu via le logiciel Oracle VirtualBox
Soit en passant par une installation d’Ubuntu 20.04 LTS sous Windows avec WSL
La suite Truffle sous Linux
Une formation
Pour des besoins de grande mémoire qui nécessite un
espace intantiné plus conséquent selon la machine de tout
un chacun, j’ai choisi la façon d’installation d’Ubuntu 20.04
LTS sous Windows avec WSL, qui est plus légère et qui ne
prend pas de mémoire sur sa machine
Une fiche explicative de l’installation Utilisation
d’Ubuntu 20.04 LTS sous Windows avec WSL, dans la
rubrique ressources, sous le nom : utilisation d’Ubuntu
20.04 LTS sous Windows avec WSL.pdf
La suite Truffle sous Linux
Une formation
Nous allons nous concentrer, après installation totale
via WSL sur Windows, sur le point le plus important,
c’est-à-dire, l’installation de la suite Truffle
Installation de la suite Truffle sous Linux
Installer Ganache
et ses dépendances sous Windows
Une formation
Youssef LRHCHA
Une formation
Présentation Ganache
Installation Ganache sous Windows
Interagir avec Ganache
Plan
Une formation
Présentation Ganache
Ganache est une Blockchain personnelle pour le
développement Ethereum que vous pouvez utiliser pour
déployer des Smart contracts, développer vos applications
et exécuter des tests
Il est disponible à la fois comme application de bureau et
comme outil de ligne de commande (anciennement connu
sous le nom de TestRPC)
Ganache est disponible pour Windows, Mac et Linux
Une formation
Téléchargez à partir de la source
https://trufflesuite.com/ganache/
Installation Ganache sous Windows
Installer Ganache-CLI
et ses dépendances sous GNU/Linux
Une formation
Youssef LRHCHA
Une formation
Installation des paquets Ganache depuis la source
https://github.com/trufflesuite/ganache-ui/releases
Commandes
$ wget https://github.com/trufflesuite/ganache-
ui/releases/download/v2.5.4/ganache-2.5.4-linux-x86_64.AppImage
$ sudo ./ganache-2.5.4-linux-x86_64.AppImage --appimage-extract-and-
run --disable-gpu-sandbox
Ou tout simplement :
npm install -g ganache
Installation de Ganache-CLI et ses dépendances
Installer le compilateur Solc
Une formation
Youssef LRHCHA
Installation Solc
Une formation
On se connecte via notre PowerShell, en basculant
en batch, pour lancer la commande
$ sudo npm install -g solc
Etape 1
Une formation
On continue avec ces commandes
$ sudo add-apt-repository ppa:ethereum/ethereum
$ sudo apt-get update
$ sudo apt-get install solc
Etape 2
Une formation
Nous revenons à notre répertoire HelloWorld-Tutoriel, et
vue que nous avons créer suite à Truffle et à Ganache, et
nous tappons la commande
$ sudo truffle migrate
Etape 3
Une formation
Nous allons continuer les étapes en suivant les étapes de
https://github.com/ethereum/solc-js
Etape 4
Une formation
Utilisez npm” pour un moyen pratique et portable
d’installer `solcjs”, un compilateur Solidity
Le programme `solcjs a moins de fonctionnalités que le
compilateur
Le projet solc-js est dérivé du projet C++ solc
solc-js peut être utilisé directement dans les projets
JavaScript (comme Remix)
Veuillez vous référer au dépôt solc-js pour les instructions
$ npm install -g solc
Notes
Compilation
Déployer votre premier
Smart Contract "HelloWorld"
Une formation
Youssef LRHCHA
Une formation
Comprendre le fichier helloWorld.sol
Déployer votre premier contrat
Plan
Une formation
Hardhat est un environnement de développement pour compiler,
déployer, tester et déboguer votre logiciel Ethereum
Il aide les développeurs à créer des contrats intelligents et des
dApps localement avant de les déployer sur la chaîne en direct
À l'intérieur de notre projet hello-world, exécutez
$ npm install --save-dev hardhat
$ nethereum-waffle pm install --save-dev
@nomiclabs/hardhat-waffle chai @nomiclabs/hardhat-ethers
ethers
Créer HARDHAT PROJECT
$ npx hardhat
Comprendre le fichier helloWorld.sol
Déployer votre premier contrat
Créer votre premier projet
dans Remix IDE
Une formation
Youssef LRHCHA
RemixIDE
Création de projet
Compiler et Déployer
votre premier Smart Contract
Une formation
Youssef LRHCHA
Une formation
Il s'agit de notre premier contrat intelligent, nous le
déploierons sur un réseau de test local afin qu'il ne
vous coûte rien de le déployer et de jouer autant
que vous le souhaitez
Introduction
Une formation
Rédaction de notre contrat
La première étape consiste à visiter Remix et à créer
un nouveau fichier
Dans la partie supérieure gauche de l'interface
Remix, ajoutez un nouveau fichier et entrez le nom
de fichier souhaité
Une formation
Une formation
Déploiement de notre contrat
Comme nous avons écrit notre tout premier contrat
intelligent, nous allons maintenant le déployer sur la
blockchain pour pouvoir jouer avec
Déployer le contrat intelligent sur la blockchain
consiste en fait à envoyer une transaction contenant
le code du contrat intelligent compilé sans spécifier
de destinataires
Nous allons d'abord compiler le contrat en cliquant sur l'icône de compilation
sur le côté gauche
Déploiement de notre contrart - première étape
Déploiement de notre contrart - deuxième étape
Cliquez ensuite sur le bouton compiler
Interagir avec votre Smart
Contract avec le JVM
Une formation
Youssef LRHCHA
Une formation
Introduction
Ethereum est une plate-forme de crypto-monnaie
sur le marché tout comme Bitcoin
Il s’agit d’une blockchain open source et
décentralisée qui travaille sur des contrats
intelligents
Il a sa propre crypto-monnaie connue sous le nom
d’éther
Les contrats intelligents dans Ethereum sont écrits
en langage Solidity
Une formation
TestRPC L’Ethereum
TestRPC est comme un émulateur manuel pour
blockchain
Il fournit une interaction blockchain sans s’exécuter
sur un nœud Ethereum réel
Il fournit également toutes les fonctionnalités
nécessaires au test de votre blockchain
Il est basé sur Node.js
Une formation
Web3js
Web3.js est une API JavaScript basée sur Ethereum
qui nous permet d’interagir avec un nœud Ethereum
local ou distant en utilisant différents serveurs tels
que HTTP
Il interagit avec la blockchain Ethereum et peut
récupérer des données de la blockchain selon les
besoins du développeur
Une formation
Les étapes à suivre
1. Tester le RPC
2. Web3.js
Passer votre première
transaction avec MetaMask
Une formation
Youssef LRHCHA
Présentation
Installation
Comprendre Ropsten
testnet faucet
Une formation
Youssef LRHCHA
Comprendre Ropsten testnet
https://faucet.egorfine.com/
Collecter les Ether
Déployer votre smart contract en Test
Ropsten avec Remix et MetaMask
Une formation
Youssef LRHCHA
Une formation
Introduction
Nous allons voir comment déployer un contrat
intelligent sur la plateforme Ethereum
Nous créerons ce contrat sur la chaîne de blocs test
d’Ethereum appelée Ropsten
Ainsi vous n’aurez pas besoin de dépenser de l’ether
pour déployer et utiliser votre contrat puisque nous
utiliserons des ethers tests qui n’ont pas de valeurs
Une formation
Les étapes
Étape 1 : Obtenir de l’ether sur Ropsten
avec MetaMask
Étape 2 : Rédiger un contrat intelligent sur
Remix
Étape 3 : Déployer un contrat intelligent sur
la chaîne de blocs
Comprendre la structure
d'un fichier .sol
Une formation
Youssef LRHCHA
Structure fichier sol
Maitriser les différentes structures
de données dans Solidity
Une formation
Youssef LRHCHA
Une formation
Les booléens et les entiers
Les adresses
Les Tableaux dynamiques
Les enums
Les Structs
Les Mappings
Plan
Booléen et Entier
Les Adresses
Les Tableaux Dynamiques
Les enums
Les structs
Les Mappings
Comprendre les différents types
de mémoires dans Solidity
Une formation
Youssef LRHCHA
Les mémoires dans la machine EVM
Stack Memory
Consiste en des données poussées et extraites de la Pile EVM
Disponible dans le scope de la fonction
Memory
Semblable à la mémoire Heap dans les programmes normaux
Disponible dans le cadre de l'appel Smart Contract
Storage
Semblable au stockage externe dans les programmes normaux
Persiste entre les appels Smart Contract
Calldata
Mémoire spéciale pour le stockage des métadonnées l'appel de fonction
Une formation
Les types de mémoires
La mémoire solidity est représentée par un
tableau linéaire d'octets
L'arithmétique permet de manipuler des
éléments à l'intérieur de la mémoire
Exemple
les éléments d'un tableau
Une formation
Opérations de traitement de la mémoire
mload(address)
récupérer la valeur à une adresse donnée
mstore(adresse, valeur)
valeur du magasin à une adresse donnée
Msize
Taille actuelle de la mémoire
Peut être utilisé pour l'attribution de nouvelles
éléments de la mémoire
Une formation
Les types de Storage
Le stockage se fait sous la forme d'un Merkle-Patricia Tree
Les éléments ne peuvent pas être consultés de façon linéaire
comme dans le type de mémoire
Chaque variable en mémoire, a un slot et un offset, où elle peut
être trouvée
Pour une variable x, ils peuvent être accessibles sous les noms
x_slot et x_offset
sload(slot + offset) - valeur de la charge provenant du
stockage
sstore(slot + offset, valeur) - stocker la valeur dans le stockage
Une formation
Le type Calldata
Mémoire read-only spéciale pour le stockage des métadonnées
de fonction
Signature de la fonction, paramètres...
L'endroit où se trouvent les msg.sender et autres variables
spéciales similaires sont stocké également
Copié en mémoire sur les appels de fonction publique
Non copié et en lecture seule sur les appels de fonction externes
Par conséquent, l'appel de fonctions externes lors du passage de
tableaux de grandes données est bénéfique
Une formation
Avantages du Calldata
Déclarer une fonction dans
Solidity
Une formation
Youssef LRHCHA
La syntaxe d’une Fonction
La syntaxe d’une Fonction
Appel d’une Fonction
Paramètres d’une Fonction
Comprendre les fonctions
Setter et Getter
Une formation
Youssef LRHCHA
Les getters et Setters
Les getters pour les variables publiques
Comprendre la visibilité
des fonctions
Une formation
Youssef LRHCHA
La visibilité
Les fonctions privées
Les fonctions internes
Les fonctions externes
Les fonctions publiques
Explorer les fonctions spéciales
dans Solidity
Constructeur et Fallback
Une formation
Youssef LRHCHA
Le constructeurs
La fonction FallBack
Hacher vos données
avec la fonction Keccak256
Une formation
Youssef LRHCHA
La fonction SHA-3
Le Keccak256
Explorer les opérations
élémentaires dans Solidity
Une formation
Youssef LRHCHA
Une formation
L'addition, la soustraction et la multiplication ont la
sémantique habituelle, avec deux modes différents en ce
qui concerne la sur- et débordement
Par défaut, toute l'arithmétique est vérifiée pour le
dépassement inférieur ou supérieur, mais cela peut être
désactivé à l'aide du bloc non coché, ce qui entraîne dans
l'arithmétique d'enveloppement
Addition, soustraction et multiplication
Une formation
L'expression -x est équivalente à (T(0) - x) où T est le type de x
Il ne peut être appliqué qu'aux types signés
La valeur de -x peut être positif si x est négatif
Il y a une autre mise en garde résultant également de la
représentation en complément à deux
Si vous avez int x = type(int).min;, alors -x ne correspond
pas à la plage positive
Cela signifie que unchecked {assert(-x == x); }
fonctionne et l'expression -x lorsqu'elle est utilisée en mode
coché entraînera une assertion défaillante
Addition, soustraction et multiplication
Une formation
Comme le type du résultat d'une opération est toujours le
type de l'un des opérandes, la division sur des entiers
donne toujours un nombre entier
Dans Solidity, la division arrondit vers zéro
Cela signifie que int256(-5) / int256(2) == int256(-2)
Notez qu'en revanche, la division sur les littéraux (literals)
donne des valeurs fractionnaires de précision arbitraire
Division
Une formation
La division par zéro provoque une erreur de de type Panic
error
Cette vérification ne peut pas être désactivée en
décochant { ... }
L'expression type(int).min / (-1) est le seul cas où la
division provoque un débordement
En arithmétique vérifiée mode, cela entraînera une
assertion défaillante, tandis qu'en mode wrapping, la
valeur sera type(int).min
Remarque
Une formation
L'opération modulo a % n donne le reste r après la division de
l'opérande a par l'opérande n, quand q = int(a / n) et r = a - (n *
q)
Cela signifie que modulo donne le même signe que son opérande
gauche (ou zéro) et a % n == -(-a % n) vaut pour moins a
— int256(5) % int256(2) == int256(1)
— int256(5) % int256(-2) == int256(1)
— int256(-5) % int256(2) == int256(-1)
— int256(-5) % int256(-2) == int256(-1)
Modulo
Une formation
Modulo avec zéro provoque une erreur de type
Panic error
Cette vérification ne peut pas être désactivée en
décochant { ... }
Remarque
Une formation
L'exponentiation n'est disponible que pour les types non
signés dans l'exposant
Le type résultant d'une exponentiation est toujours égal au
type de la base
Veuillez veiller à ce qu'il soit suffisamment grand pour
contenir le résultat et vous préparer à une éventuelle
affirmation défaillances ou comportement d'emballage
Exponentiation
Une formation
En mode coché, l'exponentiation n'utilise que l'opcode
exp relativement meilleur pour les petites bases
Pour les cas de x**3, l'expression x*x*x pourrait être
meilleure
Dans tous les cas, des tests de coût du gaz et l'utilisation
de l'optimiseur sont conseillés
Remarque
Sécuriser son code contre
les overflow/underflow avec SafeMath
Une formation
Youssef LRHCHA
Les under / overFlow
Les under / overFlow
Les underFlow
La librairie SafeMath
Connaitre les variables
et fonctions spéciales dans Solidity
Une formation
Youssef LRHCHA
Certaines variables et fonctions spéciales existent
toujours dans l’espace de nom global, et sont
principalement utilisées pour fournir des
informations sur la blockchain, ou sont des fonctions
utilitaires d’usage général
Une formation
Introduction
Les variables spéciales
blockhash(uint blockNumber) retourne (bytes32) : hachage du bloc
donné si blocknumber est l’un des 256 blocs les plus récents ; sinon
retourne zéro
block.basefee (uint) : la redevance de base du bloc actuel (EIP-3198 et
EIP-1559)
block.chainid (uint) : identifiant de la chaîne actuelle
block.coinbase (address payable) : adresse du mineur du bloc actuel
block.difficulty (uint) : difficulté actuelle du bloc
block.gaslimit (uint) : limite de gaz du bloc actuel
block.number (uint) : numéro du bloc actuel
Une formation
Les variables spéciales - Suite
block.timestamp (uint) : horodatage du bloc actuel en secondes depuis
l’époque unix
gasleft() returns (uint256) : gaz résiduel
msg.data (bytes calldata) : données d’appel complètes
msg.sender (address) : expéditeur du message (appel en cours)
msg.sig (bytes4) : les quatre premiers octets des données d’appel
(c’est-à-dire l’identifiant de la fonction)
msg.value (uint) : nombre de wei envoyés avec le message
tx.gasprice (uint) : prix du gaz de la transaction
tx.origin (address) : expéditeur de la transaction (chaîne d’appel
complète)
Une formation
L’interface binaire d’application de contrat
ABI est le moyen standard d’interagir avec les contrats
dans l’écosystème Ethereum, à la fois depuis l’extérieur de
la blockchain et pour l’interaction entre les contrats, de
l’extérieur de la blockchain que pour l’interaction entre
contrats
Les données sont codées en fonction de leur type, comme
décrit dans cette spécification, l’encodage n’est pas
autodécrit et nécessite donc un schéma pour être décodé
Une formation
Fonctions de codage et de décodage de l’ABI
abi.decode(bytes memory encodedData, (...)) retourne (...) :
ABI-décode les données, tandis que les types sont donnés entre
parenthèses comme deuxième argument. Exemple : (uint a, uint[2]
memory b, bytes memory c) = abi.decode(data, (uint, uint[2],
bytes))
abi.encode(...) returns (bytes memory) : ABI-encode les
arguments donnés
abi.encodePacked(...) returns (bytes memory) : Effectue
l’encodage emballé des arguments donnés
Notez que l’encodage emballé peut être ambigu !
Une formation
Fonctions de codage et de décodage de l’ABI - Suite
abi.encodeWithSelector(bytes4 selector, ...) retourne (bytes memory)
ABI-encode les arguments
donnés en commençant par le deuxième et ajoute en préambule le
sélecteur de quatre octets donné
abi.encodeWithSignature(string memory signature, ...) retourne
(bytes memory) : Équivalent à
abi.encodeWithSelector(bytes4(keccak256(bytes(signature))), ...)
abi.encodeCall(function functionPointer, (...)) retourne (bytes
memory) : ABI-encode un appel à functionPointer avec les arguments
trouvés dans le tuple
Effectue un contrôle de type complet, en s’assurant que les types
correspondent à la signature de la fonction
Le résultat est égal à abi.encodeWithSelector(functionPointer.selector, (...))
Une formation
Comprendre les boucles
dans Solidity
Une formation
Youssef LRHCHA
La Boucle While
La Boucle Do While
La Boucle For
Le contrôle sur les boucles
Loop
Loop : résultat
Comprendre la notion
de l'héritage
Une formation
Youssef LRHCHA
La notion d’héritage
L’héritage simple
L’héritage multiple
Implémenter les structures
de conditions
Une formation
Youssef LRHCHA
Les conditions if .. else
La fonction revert
La fonction require
La fonction assert
La fonction assert crée une erreur de type Panic(uint256),
Assert ne doit être utilisée que pour tester les erreurs internes et pour
vérifier les invariants
Un code qui fonctionne correctement ne devrait jamais créer un Panic,
même pas sur une entrée externe invalide
Si cela se produit, alors il y a un bogue dans votre contrat que vous devez
corriger
Les outils d’analyse du langage peuvent évaluer votre contrat pour
identifier les conditions et les appels de fonction qui provoquent une
panique
Une exception de panique est générée dans les situations suivantes
Le code d’erreur fourni avec les données d’erreur indique le type de
panique
Une formation
La fonction assert - Suite
0x00 : Utilisé pour les paniques génériques insérées par le compilateur
0x01 : Si vous appelez assert avec un argument qui évalue à false
0x11 : Si une opération arithmétique résulte en un débordement ou un
sous-débordement en dehors d’un bloc « non vérifié { …. }``
0x12 : Si vous divisez ou modulez par zéro (par exemple, 5 / 0 ou 23 % 0)
0x21 : Si vous convertissez une valeur trop grande ou négative en un type
d’enum
0x22 : Si vous accédez à un tableau d’octets de stockage qui est
incorrectement codé
0x31 : Si vous appelez .pop() sur un tableau vide
0x32 : Si vous accédez à un tableau, à bytesN ou à une tranche de tableau
à un index hors limites ou négatif (c’est-à-dire x[i] où i >= x.length ou i < 0)
0x41 : Si vous allouez trop de mémoire ou créez un tableau trop grand
0x51 : Si vous appelez une variable zéro initialisée de type fonction interne
Une formation
Exemple d’une fonction assert
Gérer les autorisations
avec les Modifiers
Une formation
Youssef LRHCHA
Les Modifiers
Importer des librairies
dans votre Smart Contract
Une formation
Youssef LRHCHA
Les librairies
Emettre des évènements
dans Solidity
Une formation
Youssef LRHCHA
Présentation des événements Solidity
Une formation
Les événements Solidity offrent une abstraction au-dessus de la
fonctionnalité de journalisation de l’EVM, ils peuvent s’abonner et
écouter ces événements via l’interface RPC d’un client Ethereum
Ils sont des membres héritables des contrats, lorsque vous les
appelez, ils font en sorte que les arguments dans le journal de la
transaction, une structure de données spéciale dans la blockchain
Le journal et ses données d’événement ne sont pas accessibles à
partir des contrats (même pas depuis le contrat qui les a créés)
Les évènements
Gérer les exceptions
et les erreurs dans votre code
Une formation
Youssef LRHCHA
Les exceptions Try/Catch
Comprendre le concept
du Gas
Une formation
Youssef LRHCHA
Une formation
Lors de sa création, chaque transaction est chargée d’une certaine quantité
de gaz, dont le but est de limiter la quantité de travail nécessaire pour
exécuter la transaction et de payer en même temps pour cette exécution
Pendant que l’EVM exécute la transaction, le gaz est progressivement
épuisé selon des règles spécifiques
Le prix du gaz est une valeur fixée par le créateur de la transaction, qui
doit payer « prix du gaz * gaz » à l’avance à partir du compte d’envoi
S’il reste du gaz après l’exécution, il est remboursé au créateur de la même
manière
Si le gaz est épuisé à un moment donné (c’est-à-dire qu’il serait
négatif), une exception pour épuisement du gaz est déclenchée, ce qui
rétablit toutes les modifications apportées à l’état dans la trame
d’appel actuelle
Présentation du Gas
Une formation
Considérez la plus petite unité d'éther - wei - comme un sou
Il faut tout un tas de wei pour fabriquer un éther. 10^18 wei, pour
être exact
10^9 wei est un Gwei
Gwei est le plus couramment utilisé lorsqu'il s'agit de gaz (frais de
transaction réseau)
Plutôt que de dire que votre coût en gaz est de 0,000000001
éther, vous pouvez dire 1 gwei
Que vous commenciez par wei et montiez, ou commenciez par
ether et descendiez, les dénominations suivent les préfixes
métriques standard
Le Gas
Une formation
Le gaz, un moyen unique de mesurer la puissance de calcul dans
Ethereum
La blockchain qui utilise le protocole Preuve de travail (PoW), ils
travaillent tous sous le même principe
Pour que vous puissiez effectuer une transaction acceptée et
incluse dans la blockchain, une commission doit être payée
pour que les mineurs prennent votre transaction et l'incluent
dans un bloc
Une fois sur place, ladite transaction sera validée par le réseau,
puis, les commandes qui sont dans la transaction seront
exécutées, alors seulement vous pourrez dire qu'elle a été
acceptée et confirmée
Mesurer la puissance de calcul dans Ethereum
Le coût
Le Gas
Optimiser votre code pour
économiser du Gas
Une formation
Youssef LRHCHA
Le Stockage des variables
Stocker le nécessaire
Le Packaging des variables
Le Pattern Withdrawal
La fonction View
Générer des nombres
aléatoires dans Solidity
Une formation
Youssef LRHCHA
Le BlockTimestamp
Les entrées des utilisateurs
L’oracle
L’utilité des oracles
Avec une blockchain comme Ethereum, tous les nœuds du réseau
sont nécessaires pour pouvoir rejouer chaque transaction et finir
avec le même résultat garanti
Les APIs introduisent des données potentiellement variables
Si vous envoyez un montant d'ETH basé sur une valeur convenue
en $USD via une API de prix, la requête retournera un résultat
différent d'un jour sur l'autre
Sans parler du fait que l'API pourrait être piratée ou dépréciée,
dans ce cas, les nœuds du réseau ne pourraient pas se mettre
d'accord sur l'état actuel d'Ethereum, brisant ainsi le consensus
Une formation
Résoudre ce problème
Les oracles résolvent ce problème en publiant les données
sur la blockchain
Ainsi, tout nœud rejouant la transaction utilisera les
mêmes données immuables qui ont été publiées pour que
tout le monde puisse les voir
À cette fin, un oracle comprend généralement un contrat
intelligent et des composants hors chaîne qui peuvent
interroger les APIs, puis envoyer périodiquement des
transactions pour mettre à jour les données du contrat
intelligent
Une formation
Le problème de L’oracle
Comme nous l'avons mentionné, les transactions Ethereum
ne peuvent accéder directement aux données hors chaîne
En même temps, compter sur une seule source de vérité
pour fournir des données n'est pas sûr et invalide la
décentralisation d'un contrat intelligent
Ceci est connu comme le problème de l'oracle
Nous pouvons éviter le problème de l'oracle en utilisant un
oracle décentralisé qui s'appuie sur de multiples sources
de données
Une formation
A savoir sur l’oracle
Un oracle est aussi sûr que le sont ses sources de données
Si une dapp utilise Uniswap comme oracle pour son flux
de prix ETH/DAI, il est possible pour un attaquant de
déplacer le prix sur Uniswap afin de manipuler la
compréhension du prix actuel par la dapp
Un exemple de façon de combattre cela est l'utilisation
d'un système de flux comme celui de MakerDAO qui
rassemble les données de prix à partir d'un certain nombre
de flux externes de prix au lieu de dépendre d'une seule
source
Une formation
Connaitre le concept
des Tokens
Une formation
Youssef LRHCHA
La Tokenisation
La tokenisation est le processus de transformation des choses en actifs numériques
C’est quoi un Token ?
Représentation d'un actif ou d'un utilitaire particulier
Le Stack Blockchain
Explorer les différents types
de Token
Une formation
Youssef LRHCHA
Types des Tokens
Currency tokens
Platform tokens
Security tokens
Transactional tokens
Utility tokens
Governance tokens
Currency Tokens
Les currency Token sont construits sur leurs propres chaînes de blocs indépendantes
Ils ne sont pas basés sur des actifs, au contraire, leur valeur est directement liée au
mécanisme même qui les distribue
Platform Tokens
Utility Tokens
Donnent un accès futur à un produit ou un service donné, tandis que l'argent
que vous avez payé pour eux permet aux startups de lever suffisamment de
capital pour développer réellement ce produit
Security Tokens
Token cryptographique lié à une offre de titres
Ses Tokens représentent la propriété légale d'un actif physique ou numérique
Security Tokens vs Utility Tokens
Créer votre premier Token
ERC721
Une formation
Youssef LRHCHA
ERC-721 est une norme ouverte et gratuite qui décrit comment créer des jetons non
fongibles ou uniques sur la blockchain Ethereum
Alors que la plupart des jetons sont fongibles (chaque jeton est identique à tous les
autres jetons), les jetons ERC-721 sont tous uniques
Considérez-les comme des objets de collection rares et uniques
Qu'est-ce que l'ERC-721 ?
ERC-721 définit une interface minimale qu'un contrat intelligent doit implémenter
pour permettre la gestion, la propriété et l'échange de jetons uniques
Il n'impose pas de norme pour les métadonnées de jeton ni ne limite l'ajout de
fonctions supplémentaires
Le standard
Projets soutenant ERC-721
Une formation
ERC-721 a commencé comme un brouillon EIP écrit par @dete
(https://github.com/dete ) et a pris vie pour la première fois dans
le projet CryptoKitties d'Axiom Zen
https://www.axiomzen.com/
ERC-721 est depuis sorti de la version bêta et est devenu une
spécification v1 formalisée par la communauté, prise en charge et
approuvée par un grand nombre de projets de l'ensemble de
l'écosystème crypto
Ce EIP ne serait pas possible sans le temps et le dévouement d'un
certain nombre de membres de la communauté
Le début de ERC-721
Une formation
Grâce aux NFT, la blockchain a été découverte par le grand public
C'est l'occasion rêvée de comprendre cet engouement en publiant
votre propre NFT (jeton ERC-721) sur la blockchain Ethereum !
Alchemy est extrêmement fier d'alimenter les plus grands noms
du monde des NFT, notamment Makersplace (qui a récemment
établi un record de ventes d'œuvres d'art numériques chez
Christie's pour 69 millions de dollars), Dapper Labs (créateurs de
NBA Top Shot & Crypto Kitties), OpenSea (la plus grande place de
marché NFT du monde), Zora, Super Rare, NFTfi, Foundation,
Enjin, Origin Protocol, Immutable, et bien d'autres
Comment écrire & déployer un NFT
Outils : Alchemy
Outils : Metamask
Outils : HardHat
Une formation
« Frapper un NFT » (Minting an NFT) est l'acte de publier
une instance unique de votre jeton ERC-721 sur la
blockchain
En utilisant notre contrat intelligent de la partie
Comment écrire & déployer un NFT, nous allons
développer nos compétences en Web3 et frapper un NFT
À la fin de ce tutoriel, vous serez en mesure de frapper
autant de NFT que vous, (ou votre portefeuille) le désirez !
Comment minter le NFT
Une formation
Félicitations ! Vous avez réussi la partie la plus courte et la
plus simple de notre série de tutoriels NFT - comment voir
votre NFT fraîchement créé sur un portefeuille virtuel
Nous utiliserons MetaMask pour cet exemple, car nous
l'avons utilisé dans les deux parties précédentes
En prérequis, vous devriez déjà avoir MetaMask installé sur
votre mobile, et ce dernier devrait inclure le compte sur
lequel vous avez miné votre NFT
vous pouvez télécharger l'application gratuitement sur iOS
ou Android
Comment voir votre NFT dans votre portefeuille
Implémenter un DNS décentralisé avec Solidity
Planification et design
Une formation
Youssef LRHCHA
Une formation
DNS dans la Blockchain ?
Le DNS, système de noms de domaine, est un service au
cœur du fonctionnement d’Internet
Il est fondamental pour le fonctionnement de nombreux
services tels que les sites web, les serveurs mails, la
téléphonie VoIP et bien d’autres
La technologie Blockchain pourrait être une évolution
considérable pour le DNS, en apportant plusieurs
avantages et nouvelles fonctionnalités
Une formation
Disponibilité : une indisponibilité du service DNS
entraînerait une coupure de services
Intégrité : les données présentes sur le DNS (associées à
un nom de domaine) ne doivent pas être corrompues
Confidentialité : pour protéger la vie privée des
utilisateurs, le DNS implémente différentes solutions qui
permettent d’accroître la confidentialité des requêtes DNS
Si les requêtes ne sont pas confidentielles, il est possible
d’analyser les informations de navigation des utilisateurs
Avantages du DNS
Une formation
Répondre aux exigences du DNS
Disponibilité : un réseau décentralisé et pair à pair ne
peut pas être arrêté
Intégrité : le protocole de consensus d’une Blockchain
garantit, par nature, l’intégrité des données
De plus, les données ne peuvent pas être modifiées
Confidentialité : Les requêtes effectuées pour lire les
données de la Blockchain peuvent être encapsulées dans
un canal HTTPS de la même manière que le protocole DNS
over HTTPS (DoH)
Une formation
A noter
Les résolveurs DoH sont aujourd’hui peu nombreux,
donc le trafic est centralisé autour d’un nombre
limité d’acteurs
L’utilisation d’une Blockchain offrirait la possibilité
d’interroger n’importe quel nœud du réseau, et
limiterait donc ainsi la centralisation et les SPF
(single point of failure)
Une formation
De nouveaux besoins
Ces dernières années, avec l’émergence des
technologies Blockchain, de nouveaux moyens
d’échange de valeurs se sont développés,
notamment avec la tokenisation, les crypto-actifs et
les applications décentralisées (dapps)
On parle de Web 3.0, ou de l’Internet de la valeur
Une formation
Say Hi to ENS
L'Ethereum Name Service (ENS) est un système de nommage
distribué, ouvert et extensible basé sur la blockchain Ethereum
Le travail d'ENS consiste à mapper des noms lisibles par l'homme
comme "alice.eth" à des identifiants lisibles par machine tels que
des adresses Ethereum, d'autres adresses de crypto-monnaie, des
hachages de contenu et des métadonnées
ENS prend également en charge la «résolution inverse»,
permettant d'associer des métadonnées telles que des noms
canoniques ou des descriptions d'interface à des adresses
Ethereum
L’architecture d’un ENS
Un ENS a deux principaux composants
le Registry et les Resolvers
L’architecture d’un ENS
La résolution d'un nom dans ENS est un processus en deux étapes
Premièrement, demandez au registre quel résolveur est responsable du nom
Deuxièmement, demandez à ce résolveur la réponse à votre requête
Une formation
Youssef LRHCHA
Déployer ENS
sur une Blockchain privée
Une formation
Si vous souhaitez déployer ENS sur votre
propre réseau ou déployer votre propre
copie d'ENS sur un réseau public, le parties
qui vont suivre vont vous expliquer
comment procéder
Introduction
Pour cet exercice, il faut utiliser Javascript, Web3 et Hardhat (https://hardhat.org/) avec npm pour simplifier les
choses
Notez bien que les frameworks existants tels que
Waffle (https://ethereum-waffle.readthedocs.io/en/latest/ens.html) et
Embark (https://framework.embarklabs.io/docs/naming_configuration.html) sont supportés pour le
déploiement ENS local
Exercice
Une formation
Youssef LRHCHA
Importer les « Contracts »
Une formation
Les contrats intelligents essentiels sont publiés sous forme
de modules npm
Vous pouvez les installer dans votre projet npm avec
npm install @ensdomains/ens-contracts
Maintenant, vous pouvez les exiger dans un script de
migration comme suit
voir la documentation Truffle sur l'utilisation des
artefacts de contrat et npm pour plus de détails
Introduction
Les inclure dans votre contrat intelligent comme suit
Prochaine étape
Une formation
ENS ne contient qu'une interface
alors que ENSRegistry inclut
l'implémentation réelle
A noter
Une formation
Youssef LRHCHA
Déployer le Registry
Déployer le Registry
Une formation
Youssef LRHCHA
Déployer le Resolver
Une formation
Youssef LRHCHA
Déployer le Registrar
Déployer le Registrar
Une formation
Youssef LRHCHA
Déployer le Reverse Registrar
Déployer le Reverse Registrar
Une formation
Youssef LRHCHA
Voir un exemple
d'un Migration File
Une formation
Nous pouvons combiner les étapes ci-dessus dans
un seul fichier « migration file » de hardhat
Cela nous permet de déployer ENS en une seule fois
Introduction
Une formation
Pour exécuter migration file sur hardhat, exécutez la
ligne de commande suivante
npx hardhat run scripts/deploy.js
A noter
Une formation
Youssef LRHCHA
Déployer ENS
en une seule transaction
Une formation
Vous pouvez déployer un « test registrar » et ses
dépendances avec une seule transaction
Ceci est utile par exemple dans les tests unitaires où
vous souhaitez repartir de zéro à chaque test
Dans de nombreux cas, cela sera également plus
rapide que l'envoi d'une série de transactions
distinctes
Introduction
Une formation
Cela peut être fait en déployant un nouveau contrat
qui crée et configure tous les autres contrats dans
son constructeur
Le code ci-dessous crée tous les contrats ENS et
attribue le TLD eth au registraire FIFS afin que tout
domaine eth puisse être enregistré dans les tests
unitaires
A noter
Une formation
Youssef LRHCHA
Conclusion
Une formation
Installer et configurer le Framework Truffle
Installer et configurer le client Blockchain ganache-CLI
Installer le Compilateur Solc
Explorer Remix IDE
Installer MetaMask
Développer votre Smart Contract avec Solidity
Créer votre propre Token avec Solidity
Implémenter un DNS décentralisé avec Solidity
Bilan
Prochaine formation
Alphorm.com Formation Blockchain : Maîtriser les Smart Contracts

Contenu connexe

Tendances

Application de Reconnaissance faciale - eigenfaces, fisherfaces et lbph
Application de  Reconnaissance faciale - eigenfaces, fisherfaces et lbphApplication de  Reconnaissance faciale - eigenfaces, fisherfaces et lbph
Application de Reconnaissance faciale - eigenfaces, fisherfaces et lbphSarra ERRREGUI
 
Alphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et Web
Alphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et WebAlphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et Web
Alphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et WebAlphorm
 
Plateforme d’e learning
Plateforme d’e learningPlateforme d’e learning
Plateforme d’e learningEl Aber Haythem
 
Etude d'une application de gestion d'une bibliothèque numérique
Etude d'une application de gestion d'une bibliothèque numérique Etude d'une application de gestion d'une bibliothèque numérique
Etude d'une application de gestion d'une bibliothèque numérique Georges Amichia
 
Rapport de stage PFE ( DUT) chez Synthèse Conseil - Jaiti Mohammed
Rapport de stage PFE ( DUT) chez Synthèse Conseil  - Jaiti MohammedRapport de stage PFE ( DUT) chez Synthèse Conseil  - Jaiti Mohammed
Rapport de stage PFE ( DUT) chez Synthèse Conseil - Jaiti MohammedMohammed JAITI
 
Metasploit et Metasploitable2 : exploiter VSFTPD v2.3.4
Metasploit et Metasploitable2 : exploiter VSFTPD v2.3.4 Metasploit et Metasploitable2 : exploiter VSFTPD v2.3.4
Metasploit et Metasploitable2 : exploiter VSFTPD v2.3.4 Khalid EDAIG
 
intissar.pptx
intissar.pptxintissar.pptx
intissar.pptxSouadZid
 
réaliser une plateforme d’automatisation et de génération des rapports de test
réaliser une plateforme d’automatisation et de génération des rapports de testréaliser une plateforme d’automatisation et de génération des rapports de test
réaliser une plateforme d’automatisation et de génération des rapports de testahmed oumezzine
 
Ch_1 - Généralités sur la sécurité informatique.pdf
Ch_1 - Généralités sur la sécurité informatique.pdfCh_1 - Généralités sur la sécurité informatique.pdf
Ch_1 - Généralités sur la sécurité informatique.pdfNafissa11
 
Presentation PFE Inetum Tunisie
Presentation PFE Inetum TunisiePresentation PFE Inetum Tunisie
Presentation PFE Inetum TunisieOussama Nairi
 
Présentation E-Learning
Présentation   E-LearningPrésentation   E-Learning
Présentation E-LearningGhribi Achref
 
ETUDE ET MISE EN PLACE D'UNE SOLUTION DE CLOUD COMPUTING PRIVÉ BASÉE SUR UN ...
ETUDE ET MISE EN PLACE D'UNE SOLUTION DE CLOUD COMPUTING  PRIVÉ BASÉE SUR UN ...ETUDE ET MISE EN PLACE D'UNE SOLUTION DE CLOUD COMPUTING  PRIVÉ BASÉE SUR UN ...
ETUDE ET MISE EN PLACE D'UNE SOLUTION DE CLOUD COMPUTING PRIVÉ BASÉE SUR UN ...Borel NZOGANG
 
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...Nawres Farhat
 
Rapport de stage développement informatique
Rapport de stage développement informatique Rapport de stage développement informatique
Rapport de stage développement informatique MehdiOuqas
 
[Étude de cas] Refonte d'un système de sauvegarde informatique
[Étude de cas] Refonte d'un système de sauvegarde informatique[Étude de cas] Refonte d'un système de sauvegarde informatique
[Étude de cas] Refonte d'un système de sauvegarde informatiqueGroupe D.FI
 
Audit de sécurité informatique
Audit de sécurité informatiqueAudit de sécurité informatique
Audit de sécurité informatiqueMohamed Ali Hadhri
 

Tendances (20)

Application de Reconnaissance faciale - eigenfaces, fisherfaces et lbph
Application de  Reconnaissance faciale - eigenfaces, fisherfaces et lbphApplication de  Reconnaissance faciale - eigenfaces, fisherfaces et lbph
Application de Reconnaissance faciale - eigenfaces, fisherfaces et lbph
 
Alphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et Web
Alphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et WebAlphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et Web
Alphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et Web
 
La sécurité informatique
La sécurité informatiqueLa sécurité informatique
La sécurité informatique
 
Plateforme d’e learning
Plateforme d’e learningPlateforme d’e learning
Plateforme d’e learning
 
Etude d'une application de gestion d'une bibliothèque numérique
Etude d'une application de gestion d'une bibliothèque numérique Etude d'une application de gestion d'une bibliothèque numérique
Etude d'une application de gestion d'une bibliothèque numérique
 
Rapport de stage PFE ( DUT) chez Synthèse Conseil - Jaiti Mohammed
Rapport de stage PFE ( DUT) chez Synthèse Conseil  - Jaiti MohammedRapport de stage PFE ( DUT) chez Synthèse Conseil  - Jaiti Mohammed
Rapport de stage PFE ( DUT) chez Synthèse Conseil - Jaiti Mohammed
 
Metasploit et Metasploitable2 : exploiter VSFTPD v2.3.4
Metasploit et Metasploitable2 : exploiter VSFTPD v2.3.4 Metasploit et Metasploitable2 : exploiter VSFTPD v2.3.4
Metasploit et Metasploitable2 : exploiter VSFTPD v2.3.4
 
intissar.pptx
intissar.pptxintissar.pptx
intissar.pptx
 
réaliser une plateforme d’automatisation et de génération des rapports de test
réaliser une plateforme d’automatisation et de génération des rapports de testréaliser une plateforme d’automatisation et de génération des rapports de test
réaliser une plateforme d’automatisation et de génération des rapports de test
 
Ch_1 - Généralités sur la sécurité informatique.pdf
Ch_1 - Généralités sur la sécurité informatique.pdfCh_1 - Généralités sur la sécurité informatique.pdf
Ch_1 - Généralités sur la sécurité informatique.pdf
 
Presentation PFE Inetum Tunisie
Presentation PFE Inetum TunisiePresentation PFE Inetum Tunisie
Presentation PFE Inetum Tunisie
 
Pfe 2015
Pfe 2015Pfe 2015
Pfe 2015
 
Présentation E-Learning
Présentation   E-LearningPrésentation   E-Learning
Présentation E-Learning
 
ETUDE ET MISE EN PLACE D'UNE SOLUTION DE CLOUD COMPUTING PRIVÉ BASÉE SUR UN ...
ETUDE ET MISE EN PLACE D'UNE SOLUTION DE CLOUD COMPUTING  PRIVÉ BASÉE SUR UN ...ETUDE ET MISE EN PLACE D'UNE SOLUTION DE CLOUD COMPUTING  PRIVÉ BASÉE SUR UN ...
ETUDE ET MISE EN PLACE D'UNE SOLUTION DE CLOUD COMPUTING PRIVÉ BASÉE SUR UN ...
 
QCM Sécurité Informatique
QCM Sécurité InformatiqueQCM Sécurité Informatique
QCM Sécurité Informatique
 
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
 
Rapport de stage développement informatique
Rapport de stage développement informatique Rapport de stage développement informatique
Rapport de stage développement informatique
 
[Étude de cas] Refonte d'un système de sauvegarde informatique
[Étude de cas] Refonte d'un système de sauvegarde informatique[Étude de cas] Refonte d'un système de sauvegarde informatique
[Étude de cas] Refonte d'un système de sauvegarde informatique
 
Sécurité des applications web
Sécurité des applications webSécurité des applications web
Sécurité des applications web
 
Audit de sécurité informatique
Audit de sécurité informatiqueAudit de sécurité informatique
Audit de sécurité informatique
 

Similaire à Alphorm.com Formation Blockchain : Maîtriser les Smart Contracts

Mise en place vidéoconférence + chat avec Openfire
Mise en place vidéoconférence + chat avec OpenfireMise en place vidéoconférence + chat avec Openfire
Mise en place vidéoconférence + chat avec OpenfireAbdou Lahad SYLLA
 
Mise en place d’un laboratoire de sécurité « Scénarios d’Attaques et Détectio...
Mise en place d’un laboratoire de sécurité « Scénarios d’Attaques et Détectio...Mise en place d’un laboratoire de sécurité « Scénarios d’Attaques et Détectio...
Mise en place d’un laboratoire de sécurité « Scénarios d’Attaques et Détectio...Trésor-Dux LEBANDA
 
Comment travailler avec les logiciels Open Source
Comment travailler avec les logiciels Open SourceComment travailler avec les logiciels Open Source
Comment travailler avec les logiciels Open SourceChristian Charreyre
 
Recommandations pour un usage sécurisé d’(Open)SSH
Recommandations pour un usage sécurisé d’(Open)SSHRecommandations pour un usage sécurisé d’(Open)SSH
Recommandations pour un usage sécurisé d’(Open)SSHFabwice Bend'j
 
Creation de cluster (Master et deux slave ) nfs, htcondor, mpi
Creation de cluster (Master et deux slave ) nfs, htcondor, mpiCreation de cluster (Master et deux slave ) nfs, htcondor, mpi
Creation de cluster (Master et deux slave ) nfs, htcondor, mpiKhalid EDAIG
 
PresentationFlutter4hghghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh.pdf
PresentationFlutter4hghghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh.pdfPresentationFlutter4hghghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh.pdf
PresentationFlutter4hghghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh.pdfzoulaikhibenaachourn
 
Workshop ssh (OSSEC)
Workshop ssh (OSSEC)Workshop ssh (OSSEC)
Workshop ssh (OSSEC)Akram Rekik
 
Concevoir un système Linux embarqué avec Yocto Project - Version révisée
Concevoir un système Linux embarqué avec Yocto Project - Version réviséeConcevoir un système Linux embarqué avec Yocto Project - Version révisée
Concevoir un système Linux embarqué avec Yocto Project - Version réviséeChristian Charreyre
 
Réseau de capteurs sans fil
Réseau de capteurs sans fil  Réseau de capteurs sans fil
Réseau de capteurs sans fil Ghassen Chaieb
 
Comment marche la visioconference
Comment marche la visioconferenceComment marche la visioconference
Comment marche la visioconferenceHusseinAlarab1
 
Introduction aux logiciels libres et à Linux
Introduction aux logiciels libres et à LinuxIntroduction aux logiciels libres et à Linux
Introduction aux logiciels libres et à LinuxBruno Cornec
 
Introduction à Linux et aux logiciels libres
Introduction à Linux et aux logiciels libresIntroduction à Linux et aux logiciels libres
Introduction à Linux et aux logiciels libresBruno Cornec
 
20140415200533!rapport projet deltombe_gerier
20140415200533!rapport projet deltombe_gerier20140415200533!rapport projet deltombe_gerier
20140415200533!rapport projet deltombe_gerierbessem ellili
 
Symfony 2 : chapitre 1 - Présentation Générale
Symfony 2 : chapitre 1 - Présentation GénéraleSymfony 2 : chapitre 1 - Présentation Générale
Symfony 2 : chapitre 1 - Présentation GénéraleAbdelkader Rhouati
 

Similaire à Alphorm.com Formation Blockchain : Maîtriser les Smart Contracts (20)

Hady bah l3
Hady bah l3Hady bah l3
Hady bah l3
 
Mise en place vidéoconférence + chat avec Openfire
Mise en place vidéoconférence + chat avec OpenfireMise en place vidéoconférence + chat avec Openfire
Mise en place vidéoconférence + chat avec Openfire
 
Mise en place d’un laboratoire de sécurité « Scénarios d’Attaques et Détectio...
Mise en place d’un laboratoire de sécurité « Scénarios d’Attaques et Détectio...Mise en place d’un laboratoire de sécurité « Scénarios d’Attaques et Détectio...
Mise en place d’un laboratoire de sécurité « Scénarios d’Attaques et Détectio...
 
Pourquoi linux
Pourquoi linuxPourquoi linux
Pourquoi linux
 
Comment travailler avec les logiciels Open Source
Comment travailler avec les logiciels Open SourceComment travailler avec les logiciels Open Source
Comment travailler avec les logiciels Open Source
 
Recommandations pour un usage sécurisé d’(Open)SSH
Recommandations pour un usage sécurisé d’(Open)SSHRecommandations pour un usage sécurisé d’(Open)SSH
Recommandations pour un usage sécurisé d’(Open)SSH
 
Creation de cluster (Master et deux slave ) nfs, htcondor, mpi
Creation de cluster (Master et deux slave ) nfs, htcondor, mpiCreation de cluster (Master et deux slave ) nfs, htcondor, mpi
Creation de cluster (Master et deux slave ) nfs, htcondor, mpi
 
PresentationFlutter4hghghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh.pdf
PresentationFlutter4hghghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh.pdfPresentationFlutter4hghghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh.pdf
PresentationFlutter4hghghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh.pdf
 
Workshop ssh (OSSEC)
Workshop ssh (OSSEC)Workshop ssh (OSSEC)
Workshop ssh (OSSEC)
 
Workshop ssh
Workshop sshWorkshop ssh
Workshop ssh
 
Concevoir un système Linux embarqué avec Yocto Project - Version révisée
Concevoir un système Linux embarqué avec Yocto Project - Version réviséeConcevoir un système Linux embarqué avec Yocto Project - Version révisée
Concevoir un système Linux embarqué avec Yocto Project - Version révisée
 
Visioconference
Visioconference Visioconference
Visioconference
 
Réseau de capteurs sans fil
Réseau de capteurs sans fil  Réseau de capteurs sans fil
Réseau de capteurs sans fil
 
23508212 vpn
23508212 vpn23508212 vpn
23508212 vpn
 
Comment marche la visioconference
Comment marche la visioconferenceComment marche la visioconference
Comment marche la visioconference
 
Introduction aux logiciels libres et à Linux
Introduction aux logiciels libres et à LinuxIntroduction aux logiciels libres et à Linux
Introduction aux logiciels libres et à Linux
 
Introduction à Linux et aux logiciels libres
Introduction à Linux et aux logiciels libresIntroduction à Linux et aux logiciels libres
Introduction à Linux et aux logiciels libres
 
20140415200533!rapport projet deltombe_gerier
20140415200533!rapport projet deltombe_gerier20140415200533!rapport projet deltombe_gerier
20140415200533!rapport projet deltombe_gerier
 
8-socket.pdf
8-socket.pdf8-socket.pdf
8-socket.pdf
 
Symfony 2 : chapitre 1 - Présentation Générale
Symfony 2 : chapitre 1 - Présentation GénéraleSymfony 2 : chapitre 1 - Présentation Générale
Symfony 2 : chapitre 1 - Présentation Générale
 

Plus de Alphorm

Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...Alphorm
 
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...Alphorm
 
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : SécuritéAlphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : SécuritéAlphorm
 
Alphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à ZAlphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à ZAlphorm
 
Alphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'ArchitecturesAlphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'ArchitecturesAlphorm
 
Alphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion CommercialeAlphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion CommercialeAlphorm
 
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objetAlphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objetAlphorm
 
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord InteractifAlphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord InteractifAlphorm
 
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style IsométriqueAlphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style IsométriqueAlphorm
 
Alphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à NiveauAlphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à NiveauAlphorm
 
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...Alphorm
 
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes MobilesAlphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes MobilesAlphorm
 
Alphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POOAlphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POOAlphorm
 
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...Alphorm
 
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...Alphorm
 
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...Alphorm
 
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...Alphorm
 
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBootAlphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBootAlphorm
 
Alphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et ServicesAlphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et ServicesAlphorm
 
Alphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition APIAlphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition APIAlphorm
 

Plus de Alphorm (20)

Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
 
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
 
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : SécuritéAlphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
 
Alphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à ZAlphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à Z
 
Alphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'ArchitecturesAlphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
 
Alphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion CommercialeAlphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion Commerciale
 
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objetAlphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
 
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord InteractifAlphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
 
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style IsométriqueAlphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
 
Alphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à NiveauAlphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à Niveau
 
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
 
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes MobilesAlphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
 
Alphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POOAlphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POO
 
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
 
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
 
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
 
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
 
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBootAlphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
 
Alphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et ServicesAlphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et Services
 
Alphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition APIAlphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition API
 

Alphorm.com Formation Blockchain : Maîtriser les Smart Contracts

  • 1. Formation BLOCKCHAIN Maîtriser les Smart Contracts Une formation Youssef LRHCHA
  • 2. Cursus de formations Blockchain
  • 3. Une formation Introduction 1. Introduction de la notion des Smart Contracts 2. Installer et configurer le Framework Truffle 3. Installer et configurer le client Blockchain Ganachi-CLI 4. Installer le compilateur Solc 5. Explorer Remix IDE 6. Installer MetaMask 7. Développer votre Smart Contract avec Solidity Créer votre propre Token avec Solidity 8. Implémenter un DNS décentralisé avec Solidity Conclusion Plan de la formation
  • 4. Une formation Toute personne désireuse de savoir le fonctionnement de la Blockchain et plus précisément la notion des Smart Contracts Responsable innovation / digital voulant implémenter des projets Blockchain en se basant sur les Smart Contracts Architecte et développeur désirant savoir plus sur cette technologie pour développer des Smart Contracts Public concerné
  • 6.
  • 7. Présentation du Lab Une formation Youssef LRHCHA
  • 8. Une formation Caractéristiques techniques de la machine Les produits logiciels nécessaires à la formation Quelques prérequis nécessaires
  • 9. Une formation Caractéristiques techniques de la machine Lab Pour une configuration optimale Windows 10 Professionnel (ou bien un Linux ou Mac) Système d’exploitation 64 bits, processeur x64 Processeur Intel(R) Core(TM) i5-4340M CPU @ 2.90GHz Mémoire RAM installée 16,0 Go
  • 10. Une formation Les produits logiciels nécessaires à la formation Truffle Suite : Outils Open Source pour Blockchain MetaMask Embarquer Web3j Prysm Projet Remix
  • 11. Une formation Liens de téléchargements Vous trouverez tous les liens des produits logiciels dans la rubrique Ressources de ce cours
  • 12. Présentation des Smart Contracts Une formation Youssef LRHCHA
  • 14. Pourquoi des contrats intelligents ? Pas d'autorité unique Permet une vérification publique
  • 15. Quelques Use Cases des Smart Contract
  • 16. En gros, un grand avenir pour les Smart Contracts Une formation La Blockchain pourrait bien être la technologie phare dans de nombreux autres domaines La banque Les paiements et les transferts d’argent La cybersécurité L’authentification des diplômes Le vote La location ou vente de voitures L’internet des objets Les contrats intelligents Les prévisions La musique en ligne Le co-voiturage Le trading en ligne
  • 18. Comprendre Ethereum et Solidity Une formation Youssef LRHCHA
  • 19. Une formation Ethereum est une plate-forme blockchain décentralisée qui établit un réseau peer-to-peer qui exécute et vérifie en toute sécurité le code d'application, appelé contrats intelligents Les contrats intelligents permettent aux participants d'effectuer des transactions entre eux sans autorité centrale de confiance L’Ethereum
  • 20. Une formation Le programmeur Vitalik Buterin découvre les cryptomonnaies avec le Bitcoin en 2011 et décide de créer un nouveau protocole utilisant un langage Turing-Complet plutôt que d'alourdir la structure du Bitcoin, l'idée d'Ethereum naissait Un article intéressant sur le créateur d’Ethereum se trouve dans la page ressources de ce cours Origine et lancement
  • 21. Une formation Ethereum est un accès ouvert à la monnaie numérique et à des services conviviaux pour tout le monde, qui que vous soyez C'est une technologie construite par la communauté derrière la cryptomonnaie ether (ETH) et des milliers d'applications que vous pouvez utiliser dès aujourd'hui Présentation de Ethereum
  • 22. Services bancaires pour tous Un internet plus respectueux de la vie privée Un réseau P2P Résistant à la censure Garanties de commerce La compatibilité avant tout Ethereum promet ces postulats
  • 23. Une formation Solidity, Kesako ? Solidity est un langage de haut niveau orienté objet pour la mise en œuvre de contrats intelligents Les contrats intelligents sont des programmes qui régissent le comportement des comptes dans l'état Ethereum
  • 24. Une formation Présentation de Solidity Solidity est un langage conçu pour cibler la machine virtuelle Ethereum (EVM) Il est influencé par C++, Python et JavaScript Solidity est typé statiquement, prend en charge l'héritage, les bibliothèques et les types complexes définis par l'utilisateur, entre autres fonctionnalités Avec Solidity, vous pouvez créer des Smart Contracts pour des utilisations telles que le vote, le financement participatif, les enchères à l'aveugle et les portefeuilles multi-signatures
  • 25. Installer Truffle et ses dépendances sous Windows Une formation Youssef LRHCHA
  • 26. Une formation La Suite Truffle sont un ensemble d’outils Open Source pour Blockchain Pour info : le terme Open Source réfère à la particularité d’un logiciel qui est un code conçu pour être accessible au public n'importe qui peut voir, modifier et distribuer le code à sa convenance La suite Truffle
  • 27. Une formation Dans notre machine Lab, nous avons tous, ou quelques un, une machine Windows 10 Vu le fait que Windows s’est ouvert aux applications Open Source, il est possible d’installer la suite Truffle sur notre Lab Windows 10 La suite Truffle sous Windows
  • 28. Une formation Vous n’avez pas besoin de connaissances particulière pour suivre ce tutoriel, nous allons voir ensembles tout ce dont vous aurez besoin pour développer votre premier smart-contract avec Solidity et Truffle Malgré tout, des spécifications techniques sont requises, notamment un ordinateur possédant Window, MacOS NodeJS > la version actuelle est node-v16.15.0-x64 Prérequis
  • 29. Mettre en place notre environnement via le lancement en mode Administrateur le Power Shell de Windows Préparation de l’environnement
  • 30. Commençons par installer Truffle, lancez simplement dans une console la commande suivante npm install truffle -g Installation de Truffle
  • 31. Projet HelloWorld Une fois Truffle installé, nous pouvons créer notre projet HelloWorld mkdir HelloWorld-Tutoriel
  • 33. Une formation La suite Truffle sous Windows Vous voilà avec un projet Truffle, qui contient plusieurs fichiers et dossiers prêts à l’emploi que nous allons voir ensemble le dossier contracts qui accueillera nos futurs smart-contracts, avec l’extension .sol pour Solidity le dossier migrations qui contiendra les différents script de déploiement sur la blockchain test qui nous permettra de réaliser des tests unitaires sur nos contrats et enfin truffle-config que l’on utilisera notamment pour définir la/les blockchains sur lesquels déployer nos contrats
  • 34. Installer Truffle et ses dépendances sous GNU/Linux Une formation Youssef LRHCHA
  • 35. Pour notre Lab en version Linux, nous allons le faire avec la distribution Linux UBUNTU Pour rendre l’expérience très simple, nous avons deux moyens soit via l’installation d’ubuntu via le logiciel Oracle VirtualBox Soit en passant par une installation d’Ubuntu 20.04 LTS sous Windows avec WSL La suite Truffle sous Linux
  • 36. Une formation Pour des besoins de grande mémoire qui nécessite un espace intantiné plus conséquent selon la machine de tout un chacun, j’ai choisi la façon d’installation d’Ubuntu 20.04 LTS sous Windows avec WSL, qui est plus légère et qui ne prend pas de mémoire sur sa machine Une fiche explicative de l’installation Utilisation d’Ubuntu 20.04 LTS sous Windows avec WSL, dans la rubrique ressources, sous le nom : utilisation d’Ubuntu 20.04 LTS sous Windows avec WSL.pdf La suite Truffle sous Linux
  • 37. Une formation Nous allons nous concentrer, après installation totale via WSL sur Windows, sur le point le plus important, c’est-à-dire, l’installation de la suite Truffle Installation de la suite Truffle sous Linux
  • 38. Installer Ganache et ses dépendances sous Windows Une formation Youssef LRHCHA
  • 39. Une formation Présentation Ganache Installation Ganache sous Windows Interagir avec Ganache Plan
  • 40. Une formation Présentation Ganache Ganache est une Blockchain personnelle pour le développement Ethereum que vous pouvez utiliser pour déployer des Smart contracts, développer vos applications et exécuter des tests Il est disponible à la fois comme application de bureau et comme outil de ligne de commande (anciennement connu sous le nom de TestRPC) Ganache est disponible pour Windows, Mac et Linux
  • 41. Une formation Téléchargez à partir de la source https://trufflesuite.com/ganache/ Installation Ganache sous Windows
  • 42. Installer Ganache-CLI et ses dépendances sous GNU/Linux Une formation Youssef LRHCHA
  • 43. Une formation Installation des paquets Ganache depuis la source https://github.com/trufflesuite/ganache-ui/releases Commandes $ wget https://github.com/trufflesuite/ganache- ui/releases/download/v2.5.4/ganache-2.5.4-linux-x86_64.AppImage $ sudo ./ganache-2.5.4-linux-x86_64.AppImage --appimage-extract-and- run --disable-gpu-sandbox Ou tout simplement : npm install -g ganache Installation de Ganache-CLI et ses dépendances
  • 44. Installer le compilateur Solc Une formation Youssef LRHCHA
  • 46. Une formation On se connecte via notre PowerShell, en basculant en batch, pour lancer la commande $ sudo npm install -g solc Etape 1
  • 47. Une formation On continue avec ces commandes $ sudo add-apt-repository ppa:ethereum/ethereum $ sudo apt-get update $ sudo apt-get install solc Etape 2
  • 48. Une formation Nous revenons à notre répertoire HelloWorld-Tutoriel, et vue que nous avons créer suite à Truffle et à Ganache, et nous tappons la commande $ sudo truffle migrate Etape 3
  • 49. Une formation Nous allons continuer les étapes en suivant les étapes de https://github.com/ethereum/solc-js Etape 4
  • 50. Une formation Utilisez npm” pour un moyen pratique et portable d’installer `solcjs”, un compilateur Solidity Le programme `solcjs a moins de fonctionnalités que le compilateur Le projet solc-js est dérivé du projet C++ solc solc-js peut être utilisé directement dans les projets JavaScript (comme Remix) Veuillez vous référer au dépôt solc-js pour les instructions $ npm install -g solc Notes
  • 52. Déployer votre premier Smart Contract "HelloWorld" Une formation Youssef LRHCHA
  • 53. Une formation Comprendre le fichier helloWorld.sol Déployer votre premier contrat Plan
  • 54. Une formation Hardhat est un environnement de développement pour compiler, déployer, tester et déboguer votre logiciel Ethereum Il aide les développeurs à créer des contrats intelligents et des dApps localement avant de les déployer sur la chaîne en direct À l'intérieur de notre projet hello-world, exécutez $ npm install --save-dev hardhat $ nethereum-waffle pm install --save-dev @nomiclabs/hardhat-waffle chai @nomiclabs/hardhat-ethers ethers Créer HARDHAT PROJECT $ npx hardhat Comprendre le fichier helloWorld.sol
  • 56. Créer votre premier projet dans Remix IDE Une formation Youssef LRHCHA
  • 59. Compiler et Déployer votre premier Smart Contract Une formation Youssef LRHCHA
  • 60. Une formation Il s'agit de notre premier contrat intelligent, nous le déploierons sur un réseau de test local afin qu'il ne vous coûte rien de le déployer et de jouer autant que vous le souhaitez Introduction
  • 61. Une formation Rédaction de notre contrat La première étape consiste à visiter Remix et à créer un nouveau fichier Dans la partie supérieure gauche de l'interface Remix, ajoutez un nouveau fichier et entrez le nom de fichier souhaité
  • 63. Une formation Déploiement de notre contrat Comme nous avons écrit notre tout premier contrat intelligent, nous allons maintenant le déployer sur la blockchain pour pouvoir jouer avec Déployer le contrat intelligent sur la blockchain consiste en fait à envoyer une transaction contenant le code du contrat intelligent compilé sans spécifier de destinataires
  • 64. Nous allons d'abord compiler le contrat en cliquant sur l'icône de compilation sur le côté gauche Déploiement de notre contrart - première étape
  • 65. Déploiement de notre contrart - deuxième étape Cliquez ensuite sur le bouton compiler
  • 66. Interagir avec votre Smart Contract avec le JVM Une formation Youssef LRHCHA
  • 67. Une formation Introduction Ethereum est une plate-forme de crypto-monnaie sur le marché tout comme Bitcoin Il s’agit d’une blockchain open source et décentralisée qui travaille sur des contrats intelligents Il a sa propre crypto-monnaie connue sous le nom d’éther Les contrats intelligents dans Ethereum sont écrits en langage Solidity
  • 68. Une formation TestRPC L’Ethereum TestRPC est comme un émulateur manuel pour blockchain Il fournit une interaction blockchain sans s’exécuter sur un nœud Ethereum réel Il fournit également toutes les fonctionnalités nécessaires au test de votre blockchain Il est basé sur Node.js
  • 69. Une formation Web3js Web3.js est une API JavaScript basée sur Ethereum qui nous permet d’interagir avec un nœud Ethereum local ou distant en utilisant différents serveurs tels que HTTP Il interagit avec la blockchain Ethereum et peut récupérer des données de la blockchain selon les besoins du développeur
  • 70.
  • 71. Une formation Les étapes à suivre 1. Tester le RPC 2. Web3.js
  • 72. Passer votre première transaction avec MetaMask Une formation Youssef LRHCHA
  • 75. Comprendre Ropsten testnet faucet Une formation Youssef LRHCHA
  • 78. Déployer votre smart contract en Test Ropsten avec Remix et MetaMask Une formation Youssef LRHCHA
  • 79. Une formation Introduction Nous allons voir comment déployer un contrat intelligent sur la plateforme Ethereum Nous créerons ce contrat sur la chaîne de blocs test d’Ethereum appelée Ropsten Ainsi vous n’aurez pas besoin de dépenser de l’ether pour déployer et utiliser votre contrat puisque nous utiliserons des ethers tests qui n’ont pas de valeurs
  • 80. Une formation Les étapes Étape 1 : Obtenir de l’ether sur Ropsten avec MetaMask Étape 2 : Rédiger un contrat intelligent sur Remix Étape 3 : Déployer un contrat intelligent sur la chaîne de blocs
  • 81. Comprendre la structure d'un fichier .sol Une formation Youssef LRHCHA
  • 83. Maitriser les différentes structures de données dans Solidity Une formation Youssef LRHCHA
  • 84. Une formation Les booléens et les entiers Les adresses Les Tableaux dynamiques Les enums Les Structs Les Mappings Plan
  • 91. Comprendre les différents types de mémoires dans Solidity Une formation Youssef LRHCHA
  • 92. Les mémoires dans la machine EVM Stack Memory Consiste en des données poussées et extraites de la Pile EVM Disponible dans le scope de la fonction Memory Semblable à la mémoire Heap dans les programmes normaux Disponible dans le cadre de l'appel Smart Contract Storage Semblable au stockage externe dans les programmes normaux Persiste entre les appels Smart Contract Calldata Mémoire spéciale pour le stockage des métadonnées l'appel de fonction Une formation
  • 93. Les types de mémoires La mémoire solidity est représentée par un tableau linéaire d'octets L'arithmétique permet de manipuler des éléments à l'intérieur de la mémoire Exemple les éléments d'un tableau Une formation
  • 94. Opérations de traitement de la mémoire mload(address) récupérer la valeur à une adresse donnée mstore(adresse, valeur) valeur du magasin à une adresse donnée Msize Taille actuelle de la mémoire Peut être utilisé pour l'attribution de nouvelles éléments de la mémoire Une formation
  • 95. Les types de Storage Le stockage se fait sous la forme d'un Merkle-Patricia Tree Les éléments ne peuvent pas être consultés de façon linéaire comme dans le type de mémoire Chaque variable en mémoire, a un slot et un offset, où elle peut être trouvée Pour une variable x, ils peuvent être accessibles sous les noms x_slot et x_offset sload(slot + offset) - valeur de la charge provenant du stockage sstore(slot + offset, valeur) - stocker la valeur dans le stockage Une formation
  • 96. Le type Calldata Mémoire read-only spéciale pour le stockage des métadonnées de fonction Signature de la fonction, paramètres... L'endroit où se trouvent les msg.sender et autres variables spéciales similaires sont stocké également Copié en mémoire sur les appels de fonction publique Non copié et en lecture seule sur les appels de fonction externes Par conséquent, l'appel de fonctions externes lors du passage de tableaux de grandes données est bénéfique Une formation
  • 98. Déclarer une fonction dans Solidity Une formation Youssef LRHCHA
  • 99. La syntaxe d’une Fonction
  • 100. La syntaxe d’une Fonction
  • 103. Comprendre les fonctions Setter et Getter Une formation Youssef LRHCHA
  • 104. Les getters et Setters
  • 105. Les getters pour les variables publiques
  • 106. Comprendre la visibilité des fonctions Une formation Youssef LRHCHA
  • 112. Explorer les fonctions spéciales dans Solidity Constructeur et Fallback Une formation Youssef LRHCHA
  • 115. Hacher vos données avec la fonction Keccak256 Une formation Youssef LRHCHA
  • 118. Explorer les opérations élémentaires dans Solidity Une formation Youssef LRHCHA
  • 119. Une formation L'addition, la soustraction et la multiplication ont la sémantique habituelle, avec deux modes différents en ce qui concerne la sur- et débordement Par défaut, toute l'arithmétique est vérifiée pour le dépassement inférieur ou supérieur, mais cela peut être désactivé à l'aide du bloc non coché, ce qui entraîne dans l'arithmétique d'enveloppement Addition, soustraction et multiplication
  • 120. Une formation L'expression -x est équivalente à (T(0) - x) où T est le type de x Il ne peut être appliqué qu'aux types signés La valeur de -x peut être positif si x est négatif Il y a une autre mise en garde résultant également de la représentation en complément à deux Si vous avez int x = type(int).min;, alors -x ne correspond pas à la plage positive Cela signifie que unchecked {assert(-x == x); } fonctionne et l'expression -x lorsqu'elle est utilisée en mode coché entraînera une assertion défaillante Addition, soustraction et multiplication
  • 121. Une formation Comme le type du résultat d'une opération est toujours le type de l'un des opérandes, la division sur des entiers donne toujours un nombre entier Dans Solidity, la division arrondit vers zéro Cela signifie que int256(-5) / int256(2) == int256(-2) Notez qu'en revanche, la division sur les littéraux (literals) donne des valeurs fractionnaires de précision arbitraire Division
  • 122. Une formation La division par zéro provoque une erreur de de type Panic error Cette vérification ne peut pas être désactivée en décochant { ... } L'expression type(int).min / (-1) est le seul cas où la division provoque un débordement En arithmétique vérifiée mode, cela entraînera une assertion défaillante, tandis qu'en mode wrapping, la valeur sera type(int).min Remarque
  • 123. Une formation L'opération modulo a % n donne le reste r après la division de l'opérande a par l'opérande n, quand q = int(a / n) et r = a - (n * q) Cela signifie que modulo donne le même signe que son opérande gauche (ou zéro) et a % n == -(-a % n) vaut pour moins a — int256(5) % int256(2) == int256(1) — int256(5) % int256(-2) == int256(1) — int256(-5) % int256(2) == int256(-1) — int256(-5) % int256(-2) == int256(-1) Modulo
  • 124. Une formation Modulo avec zéro provoque une erreur de type Panic error Cette vérification ne peut pas être désactivée en décochant { ... } Remarque
  • 125. Une formation L'exponentiation n'est disponible que pour les types non signés dans l'exposant Le type résultant d'une exponentiation est toujours égal au type de la base Veuillez veiller à ce qu'il soit suffisamment grand pour contenir le résultat et vous préparer à une éventuelle affirmation défaillances ou comportement d'emballage Exponentiation
  • 126. Une formation En mode coché, l'exponentiation n'utilise que l'opcode exp relativement meilleur pour les petites bases Pour les cas de x**3, l'expression x*x*x pourrait être meilleure Dans tous les cas, des tests de coût du gaz et l'utilisation de l'optimiseur sont conseillés Remarque
  • 127. Sécuriser son code contre les overflow/underflow avec SafeMath Une formation Youssef LRHCHA
  • 128. Les under / overFlow
  • 129. Les under / overFlow
  • 132. Connaitre les variables et fonctions spéciales dans Solidity Une formation Youssef LRHCHA
  • 133. Certaines variables et fonctions spéciales existent toujours dans l’espace de nom global, et sont principalement utilisées pour fournir des informations sur la blockchain, ou sont des fonctions utilitaires d’usage général Une formation Introduction
  • 134. Les variables spéciales blockhash(uint blockNumber) retourne (bytes32) : hachage du bloc donné si blocknumber est l’un des 256 blocs les plus récents ; sinon retourne zéro block.basefee (uint) : la redevance de base du bloc actuel (EIP-3198 et EIP-1559) block.chainid (uint) : identifiant de la chaîne actuelle block.coinbase (address payable) : adresse du mineur du bloc actuel block.difficulty (uint) : difficulté actuelle du bloc block.gaslimit (uint) : limite de gaz du bloc actuel block.number (uint) : numéro du bloc actuel Une formation
  • 135. Les variables spéciales - Suite block.timestamp (uint) : horodatage du bloc actuel en secondes depuis l’époque unix gasleft() returns (uint256) : gaz résiduel msg.data (bytes calldata) : données d’appel complètes msg.sender (address) : expéditeur du message (appel en cours) msg.sig (bytes4) : les quatre premiers octets des données d’appel (c’est-à-dire l’identifiant de la fonction) msg.value (uint) : nombre de wei envoyés avec le message tx.gasprice (uint) : prix du gaz de la transaction tx.origin (address) : expéditeur de la transaction (chaîne d’appel complète) Une formation
  • 136. L’interface binaire d’application de contrat ABI est le moyen standard d’interagir avec les contrats dans l’écosystème Ethereum, à la fois depuis l’extérieur de la blockchain et pour l’interaction entre les contrats, de l’extérieur de la blockchain que pour l’interaction entre contrats Les données sont codées en fonction de leur type, comme décrit dans cette spécification, l’encodage n’est pas autodécrit et nécessite donc un schéma pour être décodé Une formation
  • 137. Fonctions de codage et de décodage de l’ABI abi.decode(bytes memory encodedData, (...)) retourne (...) : ABI-décode les données, tandis que les types sont donnés entre parenthèses comme deuxième argument. Exemple : (uint a, uint[2] memory b, bytes memory c) = abi.decode(data, (uint, uint[2], bytes)) abi.encode(...) returns (bytes memory) : ABI-encode les arguments donnés abi.encodePacked(...) returns (bytes memory) : Effectue l’encodage emballé des arguments donnés Notez que l’encodage emballé peut être ambigu ! Une formation
  • 138. Fonctions de codage et de décodage de l’ABI - Suite abi.encodeWithSelector(bytes4 selector, ...) retourne (bytes memory) ABI-encode les arguments donnés en commençant par le deuxième et ajoute en préambule le sélecteur de quatre octets donné abi.encodeWithSignature(string memory signature, ...) retourne (bytes memory) : Équivalent à abi.encodeWithSelector(bytes4(keccak256(bytes(signature))), ...) abi.encodeCall(function functionPointer, (...)) retourne (bytes memory) : ABI-encode un appel à functionPointer avec les arguments trouvés dans le tuple Effectue un contrôle de type complet, en s’assurant que les types correspondent à la signature de la fonction Le résultat est égal à abi.encodeWithSelector(functionPointer.selector, (...)) Une formation
  • 139. Comprendre les boucles dans Solidity Une formation Youssef LRHCHA
  • 141. La Boucle Do While
  • 143. Le contrôle sur les boucles
  • 144. Loop
  • 146. Comprendre la notion de l'héritage Une formation Youssef LRHCHA
  • 150. Implémenter les structures de conditions Une formation Youssef LRHCHA
  • 151. Les conditions if .. else
  • 154. La fonction assert La fonction assert crée une erreur de type Panic(uint256), Assert ne doit être utilisée que pour tester les erreurs internes et pour vérifier les invariants Un code qui fonctionne correctement ne devrait jamais créer un Panic, même pas sur une entrée externe invalide Si cela se produit, alors il y a un bogue dans votre contrat que vous devez corriger Les outils d’analyse du langage peuvent évaluer votre contrat pour identifier les conditions et les appels de fonction qui provoquent une panique Une exception de panique est générée dans les situations suivantes Le code d’erreur fourni avec les données d’erreur indique le type de panique Une formation
  • 155. La fonction assert - Suite 0x00 : Utilisé pour les paniques génériques insérées par le compilateur 0x01 : Si vous appelez assert avec un argument qui évalue à false 0x11 : Si une opération arithmétique résulte en un débordement ou un sous-débordement en dehors d’un bloc « non vérifié { …. }`` 0x12 : Si vous divisez ou modulez par zéro (par exemple, 5 / 0 ou 23 % 0) 0x21 : Si vous convertissez une valeur trop grande ou négative en un type d’enum 0x22 : Si vous accédez à un tableau d’octets de stockage qui est incorrectement codé 0x31 : Si vous appelez .pop() sur un tableau vide 0x32 : Si vous accédez à un tableau, à bytesN ou à une tranche de tableau à un index hors limites ou négatif (c’est-à-dire x[i] où i >= x.length ou i < 0) 0x41 : Si vous allouez trop de mémoire ou créez un tableau trop grand 0x51 : Si vous appelez une variable zéro initialisée de type fonction interne Une formation
  • 157. Gérer les autorisations avec les Modifiers Une formation Youssef LRHCHA
  • 159. Importer des librairies dans votre Smart Contract Une formation Youssef LRHCHA
  • 161. Emettre des évènements dans Solidity Une formation Youssef LRHCHA
  • 162. Présentation des événements Solidity Une formation Les événements Solidity offrent une abstraction au-dessus de la fonctionnalité de journalisation de l’EVM, ils peuvent s’abonner et écouter ces événements via l’interface RPC d’un client Ethereum Ils sont des membres héritables des contrats, lorsque vous les appelez, ils font en sorte que les arguments dans le journal de la transaction, une structure de données spéciale dans la blockchain Le journal et ses données d’événement ne sont pas accessibles à partir des contrats (même pas depuis le contrat qui les a créés)
  • 164. Gérer les exceptions et les erreurs dans votre code Une formation Youssef LRHCHA
  • 166. Comprendre le concept du Gas Une formation Youssef LRHCHA
  • 167. Une formation Lors de sa création, chaque transaction est chargée d’une certaine quantité de gaz, dont le but est de limiter la quantité de travail nécessaire pour exécuter la transaction et de payer en même temps pour cette exécution Pendant que l’EVM exécute la transaction, le gaz est progressivement épuisé selon des règles spécifiques Le prix du gaz est une valeur fixée par le créateur de la transaction, qui doit payer « prix du gaz * gaz » à l’avance à partir du compte d’envoi S’il reste du gaz après l’exécution, il est remboursé au créateur de la même manière Si le gaz est épuisé à un moment donné (c’est-à-dire qu’il serait négatif), une exception pour épuisement du gaz est déclenchée, ce qui rétablit toutes les modifications apportées à l’état dans la trame d’appel actuelle Présentation du Gas
  • 168. Une formation Considérez la plus petite unité d'éther - wei - comme un sou Il faut tout un tas de wei pour fabriquer un éther. 10^18 wei, pour être exact 10^9 wei est un Gwei Gwei est le plus couramment utilisé lorsqu'il s'agit de gaz (frais de transaction réseau) Plutôt que de dire que votre coût en gaz est de 0,000000001 éther, vous pouvez dire 1 gwei Que vous commenciez par wei et montiez, ou commenciez par ether et descendiez, les dénominations suivent les préfixes métriques standard Le Gas
  • 169. Une formation Le gaz, un moyen unique de mesurer la puissance de calcul dans Ethereum La blockchain qui utilise le protocole Preuve de travail (PoW), ils travaillent tous sous le même principe Pour que vous puissiez effectuer une transaction acceptée et incluse dans la blockchain, une commission doit être payée pour que les mineurs prennent votre transaction et l'incluent dans un bloc Une fois sur place, ladite transaction sera validée par le réseau, puis, les commandes qui sont dans la transaction seront exécutées, alors seulement vous pourrez dire qu'elle a été acceptée et confirmée Mesurer la puissance de calcul dans Ethereum
  • 171. Le Gas
  • 172. Optimiser votre code pour économiser du Gas Une formation Youssef LRHCHA
  • 173. Le Stockage des variables Stocker le nécessaire
  • 174. Le Packaging des variables
  • 177. Générer des nombres aléatoires dans Solidity Une formation Youssef LRHCHA
  • 179. Les entrées des utilisateurs
  • 181. L’utilité des oracles Avec une blockchain comme Ethereum, tous les nœuds du réseau sont nécessaires pour pouvoir rejouer chaque transaction et finir avec le même résultat garanti Les APIs introduisent des données potentiellement variables Si vous envoyez un montant d'ETH basé sur une valeur convenue en $USD via une API de prix, la requête retournera un résultat différent d'un jour sur l'autre Sans parler du fait que l'API pourrait être piratée ou dépréciée, dans ce cas, les nœuds du réseau ne pourraient pas se mettre d'accord sur l'état actuel d'Ethereum, brisant ainsi le consensus Une formation
  • 182. Résoudre ce problème Les oracles résolvent ce problème en publiant les données sur la blockchain Ainsi, tout nœud rejouant la transaction utilisera les mêmes données immuables qui ont été publiées pour que tout le monde puisse les voir À cette fin, un oracle comprend généralement un contrat intelligent et des composants hors chaîne qui peuvent interroger les APIs, puis envoyer périodiquement des transactions pour mettre à jour les données du contrat intelligent Une formation
  • 183. Le problème de L’oracle Comme nous l'avons mentionné, les transactions Ethereum ne peuvent accéder directement aux données hors chaîne En même temps, compter sur une seule source de vérité pour fournir des données n'est pas sûr et invalide la décentralisation d'un contrat intelligent Ceci est connu comme le problème de l'oracle Nous pouvons éviter le problème de l'oracle en utilisant un oracle décentralisé qui s'appuie sur de multiples sources de données Une formation
  • 184. A savoir sur l’oracle Un oracle est aussi sûr que le sont ses sources de données Si une dapp utilise Uniswap comme oracle pour son flux de prix ETH/DAI, il est possible pour un attaquant de déplacer le prix sur Uniswap afin de manipuler la compréhension du prix actuel par la dapp Un exemple de façon de combattre cela est l'utilisation d'un système de flux comme celui de MakerDAO qui rassemble les données de prix à partir d'un certain nombre de flux externes de prix au lieu de dépendre d'une seule source Une formation
  • 185. Connaitre le concept des Tokens Une formation Youssef LRHCHA
  • 186. La Tokenisation La tokenisation est le processus de transformation des choses en actifs numériques
  • 187. C’est quoi un Token ? Représentation d'un actif ou d'un utilitaire particulier
  • 189. Explorer les différents types de Token Une formation Youssef LRHCHA
  • 190. Types des Tokens Currency tokens Platform tokens Security tokens Transactional tokens Utility tokens Governance tokens
  • 191. Currency Tokens Les currency Token sont construits sur leurs propres chaînes de blocs indépendantes Ils ne sont pas basés sur des actifs, au contraire, leur valeur est directement liée au mécanisme même qui les distribue
  • 193. Utility Tokens Donnent un accès futur à un produit ou un service donné, tandis que l'argent que vous avez payé pour eux permet aux startups de lever suffisamment de capital pour développer réellement ce produit
  • 194. Security Tokens Token cryptographique lié à une offre de titres Ses Tokens représentent la propriété légale d'un actif physique ou numérique
  • 195. Security Tokens vs Utility Tokens
  • 196. Créer votre premier Token ERC721 Une formation Youssef LRHCHA
  • 197. ERC-721 est une norme ouverte et gratuite qui décrit comment créer des jetons non fongibles ou uniques sur la blockchain Ethereum Alors que la plupart des jetons sont fongibles (chaque jeton est identique à tous les autres jetons), les jetons ERC-721 sont tous uniques Considérez-les comme des objets de collection rares et uniques Qu'est-ce que l'ERC-721 ?
  • 198. ERC-721 définit une interface minimale qu'un contrat intelligent doit implémenter pour permettre la gestion, la propriété et l'échange de jetons uniques Il n'impose pas de norme pour les métadonnées de jeton ni ne limite l'ajout de fonctions supplémentaires Le standard
  • 200. Une formation ERC-721 a commencé comme un brouillon EIP écrit par @dete (https://github.com/dete ) et a pris vie pour la première fois dans le projet CryptoKitties d'Axiom Zen https://www.axiomzen.com/ ERC-721 est depuis sorti de la version bêta et est devenu une spécification v1 formalisée par la communauté, prise en charge et approuvée par un grand nombre de projets de l'ensemble de l'écosystème crypto Ce EIP ne serait pas possible sans le temps et le dévouement d'un certain nombre de membres de la communauté Le début de ERC-721
  • 201. Une formation Grâce aux NFT, la blockchain a été découverte par le grand public C'est l'occasion rêvée de comprendre cet engouement en publiant votre propre NFT (jeton ERC-721) sur la blockchain Ethereum ! Alchemy est extrêmement fier d'alimenter les plus grands noms du monde des NFT, notamment Makersplace (qui a récemment établi un record de ventes d'œuvres d'art numériques chez Christie's pour 69 millions de dollars), Dapper Labs (créateurs de NBA Top Shot & Crypto Kitties), OpenSea (la plus grande place de marché NFT du monde), Zora, Super Rare, NFTfi, Foundation, Enjin, Origin Protocol, Immutable, et bien d'autres Comment écrire & déployer un NFT
  • 205. Une formation « Frapper un NFT » (Minting an NFT) est l'acte de publier une instance unique de votre jeton ERC-721 sur la blockchain En utilisant notre contrat intelligent de la partie Comment écrire & déployer un NFT, nous allons développer nos compétences en Web3 et frapper un NFT À la fin de ce tutoriel, vous serez en mesure de frapper autant de NFT que vous, (ou votre portefeuille) le désirez ! Comment minter le NFT
  • 206. Une formation Félicitations ! Vous avez réussi la partie la plus courte et la plus simple de notre série de tutoriels NFT - comment voir votre NFT fraîchement créé sur un portefeuille virtuel Nous utiliserons MetaMask pour cet exemple, car nous l'avons utilisé dans les deux parties précédentes En prérequis, vous devriez déjà avoir MetaMask installé sur votre mobile, et ce dernier devrait inclure le compte sur lequel vous avez miné votre NFT vous pouvez télécharger l'application gratuitement sur iOS ou Android Comment voir votre NFT dans votre portefeuille
  • 207. Implémenter un DNS décentralisé avec Solidity Planification et design Une formation Youssef LRHCHA
  • 208. Une formation DNS dans la Blockchain ? Le DNS, système de noms de domaine, est un service au cœur du fonctionnement d’Internet Il est fondamental pour le fonctionnement de nombreux services tels que les sites web, les serveurs mails, la téléphonie VoIP et bien d’autres La technologie Blockchain pourrait être une évolution considérable pour le DNS, en apportant plusieurs avantages et nouvelles fonctionnalités
  • 209. Une formation Disponibilité : une indisponibilité du service DNS entraînerait une coupure de services Intégrité : les données présentes sur le DNS (associées à un nom de domaine) ne doivent pas être corrompues Confidentialité : pour protéger la vie privée des utilisateurs, le DNS implémente différentes solutions qui permettent d’accroître la confidentialité des requêtes DNS Si les requêtes ne sont pas confidentielles, il est possible d’analyser les informations de navigation des utilisateurs Avantages du DNS
  • 210.
  • 211.
  • 212. Une formation Répondre aux exigences du DNS Disponibilité : un réseau décentralisé et pair à pair ne peut pas être arrêté Intégrité : le protocole de consensus d’une Blockchain garantit, par nature, l’intégrité des données De plus, les données ne peuvent pas être modifiées Confidentialité : Les requêtes effectuées pour lire les données de la Blockchain peuvent être encapsulées dans un canal HTTPS de la même manière que le protocole DNS over HTTPS (DoH)
  • 213. Une formation A noter Les résolveurs DoH sont aujourd’hui peu nombreux, donc le trafic est centralisé autour d’un nombre limité d’acteurs L’utilisation d’une Blockchain offrirait la possibilité d’interroger n’importe quel nœud du réseau, et limiterait donc ainsi la centralisation et les SPF (single point of failure)
  • 214. Une formation De nouveaux besoins Ces dernières années, avec l’émergence des technologies Blockchain, de nouveaux moyens d’échange de valeurs se sont développés, notamment avec la tokenisation, les crypto-actifs et les applications décentralisées (dapps) On parle de Web 3.0, ou de l’Internet de la valeur
  • 215.
  • 216. Une formation Say Hi to ENS L'Ethereum Name Service (ENS) est un système de nommage distribué, ouvert et extensible basé sur la blockchain Ethereum Le travail d'ENS consiste à mapper des noms lisibles par l'homme comme "alice.eth" à des identifiants lisibles par machine tels que des adresses Ethereum, d'autres adresses de crypto-monnaie, des hachages de contenu et des métadonnées ENS prend également en charge la «résolution inverse», permettant d'associer des métadonnées telles que des noms canoniques ou des descriptions d'interface à des adresses Ethereum
  • 217. L’architecture d’un ENS Un ENS a deux principaux composants le Registry et les Resolvers
  • 218. L’architecture d’un ENS La résolution d'un nom dans ENS est un processus en deux étapes Premièrement, demandez au registre quel résolveur est responsable du nom Deuxièmement, demandez à ce résolveur la réponse à votre requête
  • 219. Une formation Youssef LRHCHA Déployer ENS sur une Blockchain privée
  • 220. Une formation Si vous souhaitez déployer ENS sur votre propre réseau ou déployer votre propre copie d'ENS sur un réseau public, le parties qui vont suivre vont vous expliquer comment procéder Introduction
  • 221. Pour cet exercice, il faut utiliser Javascript, Web3 et Hardhat (https://hardhat.org/) avec npm pour simplifier les choses Notez bien que les frameworks existants tels que Waffle (https://ethereum-waffle.readthedocs.io/en/latest/ens.html) et Embark (https://framework.embarklabs.io/docs/naming_configuration.html) sont supportés pour le déploiement ENS local Exercice
  • 223. Une formation Les contrats intelligents essentiels sont publiés sous forme de modules npm Vous pouvez les installer dans votre projet npm avec npm install @ensdomains/ens-contracts Maintenant, vous pouvez les exiger dans un script de migration comme suit voir la documentation Truffle sur l'utilisation des artefacts de contrat et npm pour plus de détails Introduction
  • 224. Les inclure dans votre contrat intelligent comme suit Prochaine étape
  • 225. Une formation ENS ne contient qu'une interface alors que ENSRegistry inclut l'implémentation réelle A noter
  • 229.
  • 230.
  • 233. Une formation Youssef LRHCHA Déployer le Reverse Registrar
  • 234. Déployer le Reverse Registrar
  • 235. Une formation Youssef LRHCHA Voir un exemple d'un Migration File
  • 236. Une formation Nous pouvons combiner les étapes ci-dessus dans un seul fichier « migration file » de hardhat Cela nous permet de déployer ENS en une seule fois Introduction
  • 237.
  • 238.
  • 239. Une formation Pour exécuter migration file sur hardhat, exécutez la ligne de commande suivante npx hardhat run scripts/deploy.js A noter
  • 240. Une formation Youssef LRHCHA Déployer ENS en une seule transaction
  • 241. Une formation Vous pouvez déployer un « test registrar » et ses dépendances avec une seule transaction Ceci est utile par exemple dans les tests unitaires où vous souhaitez repartir de zéro à chaque test Dans de nombreux cas, cela sera également plus rapide que l'envoi d'une série de transactions distinctes Introduction
  • 242. Une formation Cela peut être fait en déployant un nouveau contrat qui crée et configure tous les autres contrats dans son constructeur Le code ci-dessous crée tous les contrats ENS et attribue le TLD eth au registraire FIFS afin que tout domaine eth puisse être enregistré dans les tests unitaires A noter
  • 243.
  • 244.
  • 246. Une formation Installer et configurer le Framework Truffle Installer et configurer le client Blockchain ganache-CLI Installer le Compilateur Solc Explorer Remix IDE Installer MetaMask Développer votre Smart Contract avec Solidity Créer votre propre Token avec Solidity Implémenter un DNS décentralisé avec Solidity Bilan