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 :

  1. 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 ?
  2. Combien coûte en GAS puis en Ether (ou GWei) l'envoie d'Ether (transaction simple d'ETH d'un compte à l'autre) ?
  3. Les frais en GAS sont-il proportionnel à la quantité d'Ether envoyé ?
  4. 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 :

  1. 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;
    }
}