TP Blockchain Ethereum - Partie I
Premières transactions
Objectif: Créer son premier Wallet et réaliser ses premières transactions d'ETH sur un réseau de test.
- Installer l'extension Metamask dans votre navigateur (Chrome ou Firefox)
- Créer un compte et copier sur une feuille (ou sauvegarder) les douze mots.
- Connecter Metamask au réseau de test Ropsten .
- Récuperer 1.0 ETH via le faucet.
- Surveiller via un explorateur de blockchain (etherscan) la confirmation de la transaction.
- Envoyer 1 ETH au faucet. Pourquoi la transaction est rejetée ?
- Envoyer 0.1 ETH à un autre compte vous appartenant. Vous devrez le créer au préalable.
- Envoyer 0.1 ETH vers le compte d'un camarade.
Remarque : Si vous constatiez que les transactions prennent trop de temps à être validée (plus de 1 ou 2 minutes) n'hésitez pas à utiliser un réseau de test alternatif à Ropsten comme par exemple Kovan, Rinkeby ou même Görli.
Travail à rendre :
- Lorsque vous avez envoyé 1 ETH pourquoi la transaction a t'elle été rejetée ou bien le destinataire n'a pas reçu exactement 1 ETH ?
- Combien coûte en GAS puis en Ether (ou GWei) l'envoie d'Ether (transaction simple d'ETH d'un compte à l'autre) ?
- Les frais en GAS sont-il proportionnel à la quantité d'Ether envoyé ?
- Quel est la particularité de Ropsten ?
Premières interaction avec la Blockchain Ethereum
Objectif: Faire sa première requête sur le mainnet.
- Se créer un compte sur infura (sauvegardez votre identifiant)
- Faire une requête curl permettant de connaitre le numéro du dernier bloque miné sur le mainnet.
Liens utiles : https://eth.wiki/json-rpc/API#eth_blocknumber
Travail à rendre :
- Quel est le numéro du dernier bloque miné en décimal sur le mainnet (notez la date et l'heure de relevé) ?
Premier Smart Contract
Objectif: Compiler et déployer un premier Smart Contract sur un réseau de test.
- Copier/coller le Smart Contract (Hello.sol) en Solidity fournit ci-dessous dans l'IDE Remix (https://remix.ethereum.org).
- Compiler et déployer le Smart Contract sur le réseau Ropsten (Injected Web3 / Ropsten).
- Combien a couté le déploiement du contrat ? Sa taille influe t-elle sur le coût ?
- Retrouver l'adresse du contract sur Etherscan (ropsten). Quel est la démarche ?
- Essayer de modifier la chaine de caractères message. Combien cela coûte t-il ?
- Écrire un contrat similaire à Hello.sol pour gérer cette fois-ci un entier
uint256
.
pragma solidity ^0.5.7;
contract Hello {
string private message;
constructor(string memory _message) public {
message = _message;
}
function getMessage() public view returns (string memory) {
return message;
}
function setMessage(string memory _message) public {
message = _message;
}
}
Smart Contract simple
Objectif: Création d'un premier Token basé sur un contrat simple.
- Lire, comprendre et déployer sur un réseau de test (Ropsten) le contrat ci-dessous.
- Qui est le propriétaire initial des tokens ?
- Transférer quelques tokens d'un compte vers un autre compte.
- Visualiser le nombre de tokens appartenant à chacun des comptes sur www.myetherwallet.com (le nombre de décimal est 0) ou MyCrypto.com.
pragma solidity >=0.4.22 <0.6.0;
contract MyToken {
/* This creates an array with all balances */
mapping (address => uint256) public balanceOf;
/* Initializes contract with initial supply tokens to the creator of the contract */
constructor( uint256 initialSupply ) public {
balanceOf[msg.sender] = initialSupply;
}
/* Send coins */
function transfer(address _to, uint256 _value) public returns (bool success) {
require(balanceOf[msg.sender] >= _value); // Check if the sender has enough
require(balanceOf[_to] + _value >= balanceOf[_to]); // Check for overflows
balanceOf[msg.sender] -= _value; // Subtract from the sender
balanceOf[_to] += _value; // Add the same to the recipient
return true;
}
}