Ovaj je vodič originalno objavljen na engleskom jeziku na platformi Codementor. Ako ste programer ili mentor bilo kakve vrste, pridružite se Codementor platformi za kvalitetne, dugoročne freelance poslove.


Ganache adrese
Ganache adrese

Remix, alat za pisanje Solidity koda u pregledniku je u redu, no može usporiti proces programiranja zbog nedostatka popratnih alata.

Kada radimo s EVM-om (Ethereum Virtualnom Mašinom), kod koji napišete trebati će testove, nasljeđivanje od prijašnjih inačica koda (inheritance), sugestije za dopunjavanje komandi, provjere sintakse i ostale stvari koje bi bilo korisnije imati u alatu koji već poznajemo i preferiramo. Remix nije baš najbolji u tome. Što kada bismo mogli imati svoje privatno Ethereum okruženje u kojem bismo se mogli igrati po volji, i ujedno spojiti bilo koji eksterni alat na njega?

To je Ganache.

Ganache

Prije poznat pod nazivom Testrpc, Ganache je virtualni blockchain koji prilikom pokretanja sam automatski podešava 10 Ethereum adresa i njihovih privatnih ključeva, te ih napuni s 100 simuliranog ethera svaku. U Ganacheu nema rudarenja – automatski se potvrđuje svaka transakcija poslana u sustav. To omogućava iterativni razvoj u kojem je poželjno kretati se brzo, lomiti stvari i testirati volatilne slučajeve.

Ganache dolazi u dva oblika: CLI (u terminalu) ili UI (grafička verzija). Na njihovoj download stranici dostupne su obje verzije. Predlažemo UI verziju isključivo zbog jednostavnosti korištenja.

Kada pokrenete Ganache, vezati će se na neku IP adresu i port – obično to bude 127.0.0.1 i port 7545, dok CLI verzija preferira port 8545.

Početni ekran izgleda slično ovome:

Ganache screen
Ganache screen

Pokretanjem Ganache-a zapravo imate svoj vlastiti virtualni node, gotovo identičan pravom u svim funkcionalnostima. To znači da ga lako možete spojiti s raznim alatima poput MyEtherWallet ili MetaMask. Pogledajmo kako, te pošaljimo malo ethera s jedne adrese na drugu.

Kako spojiti Ganache i MetaMask

Ako niste upoznati s MetaMask alatom, predlažemo da pročitate ovaj uvod. Ukratko, MetaMask je Google Chrome ekstenzija (ili ugrađeni dodatak ako koristite Brave preglednik) koji se može spojiti na Ethereum čvorove i pročitati informacije iz korisničkih novčanika.

Kad prvi puta instalirate MetaMask, potrebno je prihvatiti neke uvjete korištenja a zatim odabrati lozinku.

MetaMask default screen
MetaMask default screen

Ova će lozinka enkriptirati vaše novčanike. Svaki put kada pristupite novčanicima koje dodate u MetaMask (kojih može biti beskonačno mnogo) biti će potrebno unijeti tu lozinku.

Zatim će se prikazati seed words – riječi kojima se generira privatni ključ koji je izvor svih drugih privatnih ključeva novčanika dodanih u MetaMask. Te riječi bilo bi dobro zapisati na papir i spremiti na sigurno – ako ih se netko dočepa, svi novčanici postaju dostupni.

Ako vas zanima kako te riječi funckioniraju, pricip je isti kod hardverskih novčanika, no ukratko, te se riječi koriste da se iz njih matematički izvuče privatni ključ koji za iste riječi uvijek bude isti, bazirano na posebnom algoritmu. Ona lozinka koju smo unijeli prije je samo još jedna riječ koja dodatno osigurava stvar. Jedini način da se ijednom od novčanika pristupi bez ovih riječi ili bez lozinke je da se koristi privatni ključ tog novčanika direktno – nešto što ćemo pogledati malo kasnije u ovom članku.

Nakon što ste prošli kroz proces generiranja seed riječi i zapisali ih na sigurno, MetaMask će otvoriti prvi generirani račun. Zvati će se Account 1.

Account 1
Account 1

Napomena: MetaMask se uskoro prebacuje na novo sučelje. Da biste ga aktivirali već sada, odaberite “Try Beta” opciju u izborniku!

Beta sučelje
Beta sučelje

Ovaj generirani račun nam nije baš bitan – nama je u interesu koristiti Ganache račune da bismo se mogli igrati simuliranim etherom.

Spomenuli smo kombinaciju IP adrese i porta prije: 127.0.0.1:7545 u ovom slučaju. To je vidljivo i na sučelju.

IP i port na sučelju
IP i port na sučelju

Ovu informaciju možemo iskoristiti za spajanje MetaMaska i Ganachea. U MetaMasku iznad “Account 1” postoji izbornik koji kaže “Main Ethereum Network”.

Izbornik mreže
Izbornik mreže

U njemu odaberite Custom RPC i unesite http://127.0.0.1:7545 pod New RPC URL, te kliknite Save.

New RPC URL
New RPC URL

Ako zatvorite prozorčić klikom na X, primjetiti ćete da se mreža sada pojavljuje u popisu.

Mreža u popisu
Mreža u popisu

Konačno, učitajmo jednu od Ganache adresa u MetaMask. Kliknite šaroliku ikonu u gornjem desnom kutu i odaberite Import Account.

Import Account
Import Account

Opcija će ponuditi unos privatnog ključa. Ganache dopušta uzimanje privatnog ključa svakog generiranog novčanika pritiskom na ikonu ključa u sučelju.

Key
Key
Key
Key

Ovu vrijednost treba zalijepiti u polje za unos u MetaMask Import Account polju. Nakon potvrde, ovaj će novčanik biti dodan u MetaMask s 100 simuliranog ethera spremnog za slanje. Možete čak i probati slati na adresu koju je originalno generirao MetaMask na samom početku.

100 simuliranog ethera
100 simuliranog ethera

Kako spojiti MyEtherWallet i Ganache

Nakon što smo spojili MetaMask na naš privatni blockchain, spojimo sada MyEtherWallet. MetaMask je dobar za slanje Ethera, i dopustiti će vam da donekle šaljete neke tokene okolo, ali za punu integraciju i interakciju s blockchainom MEW je bolji alat – pogotovo ako komunicirate s pametnim ugovorima. Ako niste upoznati s MyEtherWallet alatom, dobar uvod je dostupan ovdje.

Nakon što u pregledniku otvorite https://myetherwallet.com, pogledajte gore desno – Network ETH padajući izbornik.

Padajući izbornik
Padajući izbornik

Ovo je izbornik funkcionalno identičan onome iz MetaMaska, no ne možemo ga koristiti direktno jer MEW zahtijeva da čvor na koji se spaja bude na HTTPS a ne HTTP. Ganache je HTTP. Da MEW podrži HTTP, potrebno ga je pokrenuti s vlastitog računala (što se ionako preporuča radi sigurnosti).

Preuzimte datoteku etherwallet-vX.xx.xx.zip s ove stranice, otvorite arhivu, i pokrenite index.html datoteku u mapi. Otvoriti će se MEW u pregledniku ali pokrenut s vašeg računala.

Sada možemo koristiti izbornik da dodamo novi čvor.

Custom Node MEW
Custom Node MEW

Ganache će sada biti dostupan putem MEW-a. Zgrabimo sada još jedan privatni ključ, od npr. druge adrese u Ganache popisu. U MEW pod “Send Ether & Tokens” možemo unijeti taj ključ pod metodom “Private Key”. Pritiskom na Unlock otvoriti će se taj novčanik s 100 simuliranog ethera.

100 ethera
100 ethera

Kako Poslati Ether s Ganache

Pošaljimo malo tog simuliranog ethera na neke od adresa.

U MEW, unesimo adresu računa koji smo prije dodali u MetaMask u polje primatelja. Nije bitno odakle uzmemo vrijednost adrese – ista je i u Ganache i u MetaMask-u.

Sending ether
Sending ether

Unesite 5 ethera, kliknite Send i potvrdite sve korake. Unutar sekunde od slanja transakcije, ether stiže na destinacijsku adresu: adresa u MetaMasku i u Ganacheu bi trebala imati 105, dok bi ova s koje smo slali trebala imati nešto manje od 95 (transakcijski trošak je dodan na iznos koji šaljemo). Da biste naučili zašto transakcije koštaju i koliko mogu koštati, pročitajte naš vodič kroz Ethereum Gas.

105 ethera
105 ethera

To je to! Slobodno šaljite ether simo-tamo između adresa i gledajte transakcije kako se procesuiraju u Ganache sučelju. Ako pogledate Transactions ekran u Ganache sučelju moći ćete detaljno pregledati podatke transakcije – od koje na koju adresu se slalo što točno, i u kolikim iznosima, kao i u kojem je bloku ta transakcija “izrudarena”, i drugo.

Transactions in Ganache
Transactions in Ganache

Bonus: Kako spojiti Remix i Ganache

OK, to su MEW i MetaMask, no Remix je svejedno vrlo koristan. Ipak nudi i debugiranje, kompilaciju, interakciju s ugovorima i učitavanje istih kroz već kreirane adrese, i mnogo toga drugoga. Možemo li spojiti Remix s Ganacheom?

Naravno da možemo!

Budući da smo već spojili MetaMask s Ganacheom a Remix nudi mogućnost spajanja s eksternim Web3 objektom (a MetaMask je upravo to), možemo jednostavno odabrati “Injected Web3” iz Run -> Environment okruženja u Remixu!

Remix web3
Remix web3

Primjetite da kaže “or similar”. To znači da je Remix potpuno kompatibilan s bilo kojom ekstenzijom koja u budućnosti odluči implementirati Web3 i ponuditi integraciju s Ethereum blockchainom. Uz ovako uspostavljenu vezu između Remixa i Ganachea, sada možemo koristiti Remix za programiranje na našem Ganache blockchainu! Lako ćemo razviti nove pametne ugovore, pozvati funkcije, te izvoditi razne druge akcije poput ovih.

Sličan proces se može aplicirati na bilo koji drugi alat koji dozvoljava spajanje na proizvoljne čvorove – samo treba unijeti IP adresu i port koje Ganache preuzme i svaki slični alat biti će spojen na naš privatni simulirani blockchain.

Zaključak

U ovom smo vodiču naučili kako koristiti Ganache te kako simulirati lokalni virtualni blockchain. S ovim početnim koracima, lako je početi programirati za Ethereum i eksperimentirati bez straha. U jednom od budućih članaka pokriti ćemo osnove Solidity jezika, lansiranje pametnih ugovora na Ganache, i još mnogo toga.

LEAVE A REPLY

Please enter your comment!
Please enter your name here