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.
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:
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.
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.
Napomena: MetaMask se uskoro prebacuje na novo sučelje. Da biste ga aktivirali već sada, odaberite “Try Beta” opciju u izborniku!
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.
Ovu informaciju možemo iskoristiti za spajanje MetaMaska i Ganachea. U MetaMasku iznad “Account 1” postoji izbornik koji kaže “Main Ethereum Network”.
U njemu odaberite Custom RPC
i unesite http://127.0.0.1:7545
pod New RPC URL
, te kliknite Save.
Ako zatvorite prozorčić klikom na X, primjetiti ćete da se mreža sada pojavljuje u popisu.
Konačno, učitajmo jednu od Ganache adresa u MetaMask. Kliknite šaroliku ikonu u gornjem desnom kutu i odaberite 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.
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.
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.
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.
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.
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.
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.
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.
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!
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.