V minulej časti sme si vysvetlili čo to vlastne SC(smart contract) je, spustili sme si dev prostredie, rozbehali všetky potrebné veci, otestovali SC a vieme že beží bezchybne. Teraz prišiel čas dať nášmu SC UI(user interface – užívateľské prostredie), čiže z neho vytvoríme reálnu DAppku. Zatiaľ veľmi jednoduchú, ale pre tutoriál a úvod do úvodu to úplne stačí.
Ak ste tu prvý krát a neviete o čo sa jedná, určite si najprv prejdite prvú časť tutoriálu:
SC otvorili dvere do úplne nového sveta tvorby aplikácií, technologických riešení a návrhu softwaru. SC si každý môže napísať samozrejme sám a reálne ich použiť aj bez potreby UI nadstavby, no extrémne málo ľudí to v súčasnosti dokáže, preto sa tvoria užívateľsky prívetivé dizajny aplikácií ktoré dokážu operovať s SC.
Pre tento turoriál som zvolil React. React je Javascriptová knižnica/framework ktorej hlavné výhody(momentálne pre nás) sú, že je veľmi jednoduchý a postavený na koncepte functional programmingu vďaka čomu je kód racionálnejší a jednoduchší a zároveň je extrémne rýchly. Zaujimavosťou Reactu je, že dokáže ukladať stavy jednotlivých komponentov čo umožňuje “updatovať” informácie na webe bez potreby jeho opetovného načítania(veľmi jednoducho povedané) čo sa pre blockchain DAppky dokonale hodí.
React moc vysvetľovať nechcem aby sme neubehli od pointy ktorou sú SC. Začneme hneď inštaláciou Reactu, inicializáciou react appky a inštaláciou knižnice Web3.
Vďaka React komunite máme k dispozícií úžasnú vec. Jediným príkazom nainštalujeme základný, funkčný balíček reactu bez potreby zbytočného rozbiehania a ďalších inštalácií a to je práve Create React App.
Začneme zasa v konzole zadaním príkazu:
Po zbehnutí príkazu sa vrátime do zložky kde máme uložený SC z minulého tutoriálu a zasa v jej roote vytvoríme nový priečinok “UI”. Pomocou konzoly sa do tohto priečinku navigujeme a zadáme príkaz:
Tento príkaz nám vytvoril react appku s názvom accounts-dapp. Po zbehnutí sa zasa navigujeme v konzole do zložky “accounts-dapp” kde spustíme lokálny server pre našu react appku pomocou príkazu:
Nesmieme zabudnúť, že nám musí bežať aj náš testovací ethereum blockchain. Spustíme ho v novom okne, v roote nášho projektu príkazom:
V editore si otvoríme súbor “package.json”. V tomto kroku potrebujeme nainštalovať nástroje ktoré nám pomôžu spojiť sa s EVM a spracovať jeho dáta. Začneme knižnicou “web3”. Web3 je v podstate Javascriptové API (application interface) ktoré sa napája na JSON-RPC protokol ktorý definuje dátovu štruktúru a jeho pravidlá a ako formát využíva JSON formát, čo je pre javascript veľmi friendly a useful. Druhá knižnica ktorú potrebujeme je lodash. Vďaka lodashu sa nám budú lepšie spracovávať dáta prichádzajúce z web3. V podstate uľahčuje prácu s poliami a objektami a samozrejme omnoho viac.
Súbor package.json hovorí aká knižnica a ktorá jej verzia sa má nainštalovať, takže náš package.json upravíme do takejto podoby:
Bežiaci npm server zastavíme a spustíme inštaláciu nových dependecies pomocou:
Keď nám všetko zbehlo korektne, znova spustíme server “npm start”, naskočila nám naša react appka a môžeme s ňou ďalej pracovať.
V tejto časti sa vrátime spať k nášmu SC. Ako sme to robili v predošlej časti, SC skompilujeme, vojdeme do truffle konzoly a zadáme tento kus kódu:
Pozornejší si všimli že callback funkcia je zapísaná trocha inak ako minule. Zápis funkcie ()=>{} je formát ES6 a samozrejme je krajší.
To čo nám vrátila konzola sa volá ABI – application binary interface. V skratke to predstavuje štruktúru alebo návod ako má byť SC čítaný z EVM(Ethereum Virtual Machine). Metóda JSON.strigify nám zabezpečila že štruktúra sa nám vypíše ako kus stringu. Ten si skopírujeme do našej appky, resp. momentálne niekde bokom.
Ako ďalší kus kódu zadáme do konzoly:
Po vykonaní nám vrátilo adresu nášho SC, ktorú si skopírujeme k sebe a použijeme neskôr rovnako ako ABI kód v aplikácii na miestach, ktoré sú vysvetlené v komentároch priamo v kóde.
Teraz sme sa znova dostali do momentu kedy je potrebné vysvetliť kód. Rozhodol som sa že to spravím rovnakým spôsobom ako v predošlom tutoriále, okomentovaním kódu čo najstručnejšie a najvýstižnejšie. Tí developeri, ktorí už majú skúsenosti s Reactom mi môžu určite napísať pripomienky, resp. uvítam nejaké to code review, pretože zatiaľ sa necítim ako “react ninja master”. Tým ostatným odporúčam copypaste a otvoriť dokumentáciu Reactu.
Po uložení kódu v editore sa nám automaticky dappka v prehliadači refreshla. Pokiaľ je všetko v poriadku, zobrazila sa vám prázdna tabuľka so stĺpcami “First name”, “Last name”, “Age”. Zatiaľ nemáme uložené v SC žiadne dáta, preto sa vrátime do truffle konzoly a zadáme:
Konzola nám vrátila potvrdenie o uložení. V tomto momente ak sa preklikneme do našej dappky a naše dáta sú zobrazené v tabuľke.
Ak ste sa dostali až sem, gratulujem, práve ste si sami rozbehli svoju prvú dappku. Postupne pracujem na testovaní nových a nových vecí a ako som už skôr spomínal, chystám sa aj na testovanie vlastného ICO-a ku ktorému by som chcel pripraviť komplexnejší tutoriál. Samozrejme všetko bude na blogu. No ak chcete o tom vedieť medzi prvými, odporúčam prihlásiť sa do môjho newslettera. Komplet zdroják som samozrejme commitol na môj Github.
Viac k téme nájdete tu:
Ak máte záujem nakúpiť Ethereum, odporúčam si prejsť môj návod: