Laborator 6
Tematica laboratorului: Aplicatii descentralizate - DApps
Exemplu de baza pentru structura unei DApp referit in curs
La urmatoarea adresa se gaseste arhivata o varianta a aplicatiei descentralizate prezentata ca exemplu in cursul 6 (adaptare dupa un exemplu din "Blockchain by Example" - B. Badr, R. Horrocks, X. Wu): varianta ce foloseste framework-ul Express. Aplicatia web simuleaza o licitatie auto. Arhiva include un fisier readme.txt cu instructiuni pentru rulare.
Exemplul dat in arhiva include un fisier cu un contract de baza si unul derivat Auction.sol, un fisier index.html cu elemente minimale de frontend, si un script auction.js ce realizeaza interactiunea dintre pagina web si contracte. Interactiunea dintre pagina web si contracte este posibila via MetaMask, folosind ca gazda pentru deployment fie un simulator local precum Ganache sau o retea de test efectiva precum Sepolia.
Diverse framework-uri posibil utile in dezvoltarea de DApps
Hardhat este la momentul curent un framework frecvent utilizat pentru dezvoltarea de DApps pentru Ethereum, oferind facilitati de organizare ale proiectelor si functionalitati specifice contextului Ethereum precum o retea simulata pentru teste. De asemenea poate fi folosit pentru automatizarea anumitor operatii. Un tutorial pentru utilizarea Hardhat este disponibil la aceasta adresa. Hardhat are o organizare modulara oferind posibilitatea de a integra o arie larga de plugins in dezvoltare, ce ofera suport pentru diverse functionalitati. Cele mai frecvente folosite plugins sunt grupate intr-un bundle numit Hardhat Toolbox. Un tutorial ce indica un mod de utilizare al bibliotecii Web3.js cu HardHat ca plugin e descris la aceasta adresa.
Foundry este un framework organizat ca o colectie de tools ce pot fi rulate la linia de comanda, orientate in special spre interactiunea cu smart contracts. Tool-ul principal este forge folosit pentru testarea contractelor, deployment si debugging. Pe langa acesta, framework-ul ofera cast, un tool dedicat trimiterii de RPC calls catre un nod Ethereum, ce poate fi util in particular contextul dezvoltarii unei DApp pentru o eventuala a apelurilor catre un contract. Ca si celelalte variante de framework, si Foundry ofera o varianta simulata de nod Ethereum pentru teste, rulabil folosind anvil.
Pe langa framework-urile ce pot fi utilizate local cum sunt Truffle, Hardhat si Foundry, in ultimii ani au aparut numeroase variante accesibile online ce ofera anumite facilitati pentru dezvoltatorii de DApps.
Un serviciu online de tip provider, cum ar fi Infura sau Chainstack, ofera in mod traditional in principal un plan de acces la retelele blockchain, cuantificat in cereri RPC permise pentru un DApp, si posibil oferirea unui API propriu providerului pentru diverse functionalitati specifice.
In particular insa, o parte din serviciile provider ce ofera acces la reteaua Ethereum, au adaugat suport extins pentru development, dezvoltand variante proprii de SDK ce extind API-urile de baza. Exemple in acest sens sunt Alchemy si QuickNode (orientat in special pe operatii cu tokens).
De notat este ca utilizarea acestor API-uri este de regula limitata la providerii respectivi ce ofera suport pe infrastructura proprie folosita pentru acces la retea, deci portarea unui DApp pentru acces printr-un alt provider ar implica modificari la nivelul implementarii.
Pe langa cele de mai sus, mai exista platforme online care sunt orientate in particular pe suport pentru DApp development cum ar fi Thirdweb ce ofera o serie de SDKs pentru integrarea cu diverse limbaje si alte librarii folosite in web development, sau Tenderly cu o orientare semnificativa spre partea de simulari si debugging.