Laborator 1

Tematica laboratorului

1. Pregatirea mediului de lucru

Optional: Instalarea unei masini virtuale Linux

Exemplele si utilitarele folosite in demonstratiile de laborator vor fi cel putin in prima parte rulate sub Linux. Exista insa in majoritatea cazurilor si alternative de instalare si rulare pe Windows. Materialul din pagina laborator va fi insa prezentat in special relativ la Linux in ce priveste necesitatile de pachete pentru instalare.

Pentru instalarea unei masini virtuale Linux se poate utiliza VirtualBox (cu Extension Pack). Avand in vedere disponibilitatea pachetelor de instalare se recomanda o distributie din gama Ubuntu. Una din optiunile ce ofera un consum redus de resurse este Lubuntu in varianta LXDE (penultima versiune stabila recomandata LTS 22.04.3).

Dupa instalarea distributiei pentru lucrul in cadrul laboratoarelor se recomanda instalarea pachetelor de mai jos.
Nota: pentru anumite pachete poate fi recomandabil si un upgrade al versiunii de node existenta pe sistem, care se poate realiza folosind nvm:

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash # urmat de o repornire a terminalului
nvm install node # "node" is an alias for the latest version

2. Ganache

Ganache este un utilitar ce simuleaza o retea Ethereum de test, ce ofera tranzactii instant, si care pune la dispozitie un set de conturi initializate cu o suma default ce poate fi utilizata in tranzactiile de test. Fiecare cont de test expune o cheie privata prin care poate fi accesat si folosit pentru a initia tranzactii. Initierea respectiva se face prin intermediul unui tool extern ce trebuie conectat la reteaua Ganache - Ganache simuleaza doar nodul Ethereum ce primeste tranzactii si le executa, fara a oferi o posibilitate directa de a initia tranzactiile. Interfata vizuala permite monitorizarea facila a executiei si a efectelor asupra starii conturilor.
Exista si o varianta de consola: ganache-cli. Avantajul variantei vizuale este posibilitatea de a defini mai multe retele de test si a schimba facil mediul de lucru intre ele, precum si persistenta operatiilor facute de la o sesiune la alta (pastrarea adreselor de conturi, balantelor asociate, etc.).

Ganache este disponibil pentru download la aceasta adresa https://www.trufflesuite.com/ganache

3. MyCrypto

MyCrypto este o aplicatie de tip "wallet manager" disponibila atat online cat si cu posibilitate de rulare locala, ce permite administrarea unor conturi in retele Ethereum sau bazate pe Ethereum, mai precis acces securizat la acestea si initierea de tranzactii. MyCrypto poate fi folosit atat pentru simularea de operatii pe retele private de test, prin adaugarea unei noi retele Ethereum si conectarea la aceasta, cat si pentru tranzactii in retelele publice reale.

MyCrypto este disponibil la aceasta adresa https://download.mycrypto.com/

Nota: Dupa downloadul de pachete binare cu rulare directa ca Ganache sau MyCrypto e posibil necesara acordarea de drepturi de executie pentru pachetul respectiv. Exemplu:

sudo chmod u+x [nume fisier pachet Ganache]

4. Remix

Remix este un IDE browser-based accesibil public la adresa https://remix.ethereum.org ce ofera o serie de plugins care faciliteaza programarea de smart contracts, precum si compilarea si testarea acestora. Remix ofera atat o retea integrata de test, cat si posibilitatea de conectarea la o alta retea cum ar fi cea oferita de Ganache.
Un exemplu de baza de smart contract pentru un prim test al mediului oferit de Remix:

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

contract HelloWorld {
    
 function sayHello () public pure returns (string memory) {
   return 'HelloWorld!!!';
 }

}

Optional Remix poate fi instalat si local in modul urmator:

sudo apt install npm
sudo apt install git
npm install -g remix-ide 
npm install -g remixd

5. MetaMask, Truffle, HardHat

MetaMask este un plugin de browser ce asigura una din principalele modalitati de a interactiona cu o retea blockchain dintr-o aplicatie web descentralizata (DApp). Truffle si Hardhat sunt doua exemple de frameworks utile in dezvoltarea de astfel de aplicatii. Mai multe detalii despre aceste instrumente vor fi oferite in cursurile si laboratoarele viitoare.

Instalarea Truffle poate fi facuta ruland urmatoarele comenzi:

sudo apt install npm
npm install -g truffle

Hardhat poate fi instalat folosind de asemenea npm:

npm install --save-dev hardhat

6. Geth

Geth este cea mai utilizata implementare pentru rularea unui nod Ethereum. Instalarea acestuia se poate face prin pachetele de mai jos si e doar cu scop demonstrativ (optional), o exemplificare a modului de operare a nodului urmand a fi detaliata in urmatorul laborator.

sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install ethereum
© 2023 Emanuel Onica. Parts of design by W3Layouts