Kako naučiti solidnost i započeti Blockchain programiranje

Blockchain programiranje postalo je jedno od najbolje plaćenih i izazovnih softverskih sfera tijekom posljednjeg desetljeća. Iako su blockchains agnostički i mnogi se postojeći jezici, poput C ++ i JavaScript (JS), koriste blockchain inženjeri, postoje neki zadaci koje postojeći jezici ne mogu prikladno realizirati, što je otvorilo potražnju za novim, kripto-specifične opcije. Jedan od takvih jezika je Solidity.

Čvrstoća je rođena kao temeljni dio ekosustava Ethereum. Apsorbirao je C ++, JavaScript i Python. Ima mnoštvo suvremenih značajki poput knjižnica i nasljedstva. Solidity je dizajniran za pisanje programa koji komuniciraju s Ethereum računima, koji se nazivaju pametnim ugovorima. Pametni ugovori izvršavaju se na Ethereum Virtual Machine (EVM), što omogućava korisnicima koji ih koriste izvršavati zadatke poput crowdfundinga, slijepih dražbi, glasanja i mnogih drugih na decentraliziran način. Najpoznatija ubojita aplikacija pametnih ugovora bilo je decentralizirano financiranje u ICO-ima, što je pokrenulo bikovski skup na kripto tržištima 2017. godine.

Bez obzira jeste li iskusni programer ili tek započinjete s kriptografijom, dobra je ideja početi učiti Solidity jer su pametni ugovori postali presudni dio blockchain ekosustava. Osim što ih dApps aktivno implementira, oni se aktivno integriraju u blockchains sloja infrastrukture, pa čak i u Bitcoin putem pružatelja usluga kao što je RSK. Znajući kako graditi pametne ugovore, učinit ćete svoju blockchain karijeru održivijom i moći proizvesti kvalitetnija rješenja. Nemojmo više izvlačiti i prljati ruke kodiranjem!

Razumijevanje osnova pametnog ugovora

Račun pametnog ugovora sastoji se od tri odjeljka: stanja, pohrane i koda. Saldo predstavlja koliko Ethereum ima pametni ugovor. Pohrana sadrži podatke poput nizova i nizova koji su specifični za aplikaciju. Odjeljak koda sadrži sirovi strojni kod koji je sastavljen iz onoga što pišemo u Solidity.

Za razliku od korisničkih računa, računi pametnih ugovora nisu vanjski prema odgovarajućim mrežama. Drugim riječima, novčanik možete koristiti s raznim mrežama poput Kovana i Ropstena, ali to ne možete učiniti pametnim ugovorom. Pametni ugovori su interni.

Svaki pametni ugovor ima izvor koji je pohranjen na autorskom uređaju i instance koje su pohranjene na blockchainu. Da bismo stvorili instancu (račun) pametnog ugovora, moramo ga rasporediti na mrežu. Vrlo sliči odnosu između klasa i primjera u tradicionalnom objektno orijentiranom programiranju (OOP) i jezicima koji ga predstavljaju (JS, Ruby). Da bismo vam pružili vizualniji prikaz, stvorimo klasu “Bicikl” i dodajte je.

Klasa bicikla & amp; primjerSlika Utoday

Ono što ćemo napisati je definicija ugovora koja će se zatim provoditi kroz kompajler koji će stvoriti dvije datoteke: bytecode i binarno sučelje aplikacije (ABI). Bytecode je ono što će se zapravo dovoditi u EVM, a ABI je sloj između bytecode-a i redovnog JavaScript koda koji omogućuje izgradnju korisničkog sučelja (UI).

Odabir IDE-a & inačica Solidity

Prije nego što započnemo, trebamo odgovarajuće integrirano razvojno okruženje (IDE). Drugim riječima, potreban nam je prikladni terminal s potrebnim alatima za upisivanje našeg koda. Za potrebe ovog vodiča odabrat ćemo Remix, IDE stvoren od zaklade Ethereum koji omogućuje pisanje, testiranje, ispravljanje pogrešaka, pokretanje pametnih ugovora i mnogo više. Možete ga koristiti izravno u pregledniku ili ga možete preuzeti lokalno, ako želite.

Jednom kada pokrenete Remix, prikazat će vam se uređivač koda u sredini, upravitelj datoteka s lijeve strane i prevoditelj s desne strane.

Prozor početnog remiksaSlika Utoday

Bit će unaprijed napisanog koda – to nam neće trebati. Da bismo stvorili prvi pametni ugovor, pritisnite malu ikonu plusa u gornjem lijevom kutu terminala i dajte mu ime.

Izrada novog projekta u RemixuSlika Utoday

Kako sada imamo blank.sol dokument, trebali bismo navesti verziju Solidity koju će kompajler pokrenuti. U vrijeme ovog vodiča, najnovija verzija je 0.5.7. Ako niste sigurni koju verziju upotrijebiti, možete odrediti niz verzija.

2 vrste specificiranja verzije SoliditySlika Utoday

Na kraju, dajmo svom pametnom ugovoru ime, a zatim slijedi zagrada.

Pametno imenovanje ugovoraSlika Utoday

Pisanje vašeg prvog pametnog ugovora

Nakon što pripremimo svoje platno, vrijeme je da definiramo osnovne gradivne blokove – varijable. Iako iskusni softverski inženjeri neće imati problema s razumijevanjem ovog koncepta, mi ćemo ga ukratko predstaviti početnicima. Varijable su rezervirana mjesta za dijelove informacija na koje se kasnije poziva program koji ih pokreće.

Stvorimo nekoliko varijabli: niz (niz simbola) i cijeli broj (broj). U slučaju Ethereuma, varijable se pohranjuju u blockchain zajedno s ostatkom dijelova ugovora i stoga im se može pristupiti i ažurirati s bilo kojeg mjesta. Još jedna ključna karakteristika varijabli Solidity jest da ih možete učiniti privatnima tako da pored varijabli napišete “private”. Napokon, za cjelobrojne brojeve Solidity ima dvije vrste: sign (može biti pozitivan & negativan) i nepotpisan (može biti samo pozitivan). Da bismo odredili nepotpisanu varijablu, trebali bismo samo staviti ‘u’ ispred nje.

Privatni niz i cijeli brojSlika Utoday

Nakon što imamo varijablu ‘name’, moramo zapisati metode postavljanja i dobivanja. Ovo izgleda kao JS funkcija. Imajte na umu da je Solidity statički upisan, pa moramo definirati varijabilne tipove. Sada će svaka vrijednost koju stavimo u “setName” definirati niz “name”. Za geter ćemo upotrijebiti “getName” i odrediti koju varijablu očekujemo vidjeti. Sada je vrijeme da učinimo isto za varijablu “dob”. Metoda je konstruirana slično kao “getName”.

Postavljači imena i dobi i dobivačiSlika Utoday

Isprobajmo naš mali dio koda. Idite na karticu “Pokreni” kompajlera i pritisnite “Razmjesti” pod nazivom vašeg ugovora. Na samom dnu kompajlera sada ćete vidjeti odjeljak ‘Postavljeni ugovori’ u kojem su dostupne naše metode. Da bismo ime proslijedili vrijednosti ‘newName’, moramo biti sigurni da je naš niz napisan u JSON-u, u suprotnom, ‘getName’ neće vratiti ništa. Za ‘setAge’ samo stavite svoje godine bez navodnika. Kao što vidite, sada putem našeg pametnog ugovora možemo postaviti i primiti varijable ‘ime’ i ‘dob’.

Sastavljač, s imenom i dobomSlika Utoday

Definiranje Wei i Plina

Jedna od najistaknutijih karakteristika pametnih kontrasta je da ćete za njihovo raspoređivanje u mrežu Ethereum trebati pokrenuti transakciju koja košta neki iznos koji se plaća u Eteru. Ključno je razumjeti kako se naknade koriste u sustavu, jer će se odbiti svaki put kad komunicirate s EVM-om.

Što je Wei?

Pretpostavimo da ste čitajući ovoliki dio našeg vodiča barem jednom koristili Bitcoin. Vjerojatno ste napravili malu transakciju koja je bila manja od 1 BTC. U tom ste slučaju koristili Satoshi, koji su nešto poput novčića za dolar. Wei je poput Satoshija – to je najmanji dio 1 Etera. Ako o tome razmišljamo u programskom smislu, to je najniži nepotpisani cijeli broj u mreži. Tijekom interakcije s mrežom uglavnom ćete susresti Gwei, koji se odnosi na Gigawei i iznosi milijardu Wei.

Što je plin?

Plin je bitan dio mehanizma pametnog izvršenja ugovora. Ima dvije vrijednosti za svaku transakciju: potrošeni plin i njegova cijena. Vrijedno je spomenuti da korisnik koji pokreće transakciju definira ove vrijednosti. Međutim, ako zadana vrijednost Plina neće biti dovoljna za obradu određene radnje, tada će se Plin potrošiti, ali transakcija neće uspjeti. Štoviše, ako će cijena plina biti postavljena prenisko za mrežu u određeno vrijeme, čvorovi neće obrađivati ​​transakciju, što će na kraju učiniti neuspješnom. Postoji nekoliko usluga za provjeru optimalnih vrijednosti za vaše transakcije, a jedna od njih je ethgasstation.info. Da bismo bolje razumjeli plin i zašto košta bilo koji novac, kodirajmo ga sami.

Vratite se prozoru Remix i pokrenite novu datoteku. U našem primjeru nazvat ćemo ga ‘Plin’ i stvoriti ugovor s istim imenom. Imajte na umu da će nam, što više podataka trebamo pohraniti na blockchain, više plina. To je rečeno, u svrhu ovog vodiča stvorit ćemo jeftin ugovor; što više dodate, naknada će biti veća.

Bit će funkcija koja vraća cijeli broj koji je zbroj dva ulaza. Da bi bio što lakši, odredit ćemo da naš ugovor neće pohranjivati ​​ništa na blockchain, a za to ćemo pored funkcije staviti ‘pure’.

Jeftin ugovorSlika Utoday

Sada ga možete rasporediti u kompajler i unijeti bilo koja dva broja da biste dobili cijeli broj ‘c’. Da bismo provjerili cijenu naše transakcije, trebali bismo pogledati terminal smješten ispod odjeljka koda. Postoje troškovi transakcije i troškovi izvršenja. Prvi se odnosi na količinu podataka koje transakcija ima. Drugi se odnosi na to koliko je snage EVM-a bila potrebna transakciji.

Trošak jeftinog ugovoraSlika Utoday

Ovo je izuzetno osnovna transakcija koja za mrežu ne košta gotovo ništa. Pisanjem značajnih pametnih ugovora dodati ćete više detalja, što će povećati njihovu težinu, a time i naknade za transakcije.

Stvaranje & postavljanje vlastitog ERC20 tokena

Priznajmo, većina programera blockchaina koji su tek na početku željni su velike igre i stvaranja vlastitih blockchaina i tokena. Iako je ovo izuzetno teška tema koja je privukla neke od najboljih softverskih inženjera iz drugih sfera, izgradnja osnovnog ERC20 tokena nije raketna znanost.

Prvo, moramo stvoriti još jednu datoteku u Remixu i prenijeti ERC20 sučelje, a to je sljedeće:

Standard ERC20Slika Utoday

Funkcija ‘totalSupply’ omogućuje nam da vidimo koliko ukupno žetona imamo. Funkcija ‘balanceOf’ koristi se za dobivanje iznosa tokena na određene adrese. Funkcija ‘prijenosa’ omogućuje korisnicima međusobne transakcije. Funkcije ‘transferFrom’, ‘doplatak’ i ‘odobrenje’ omogućuju ljudima da dopuštaju nekim drugim korisnicima pokretanje transakcija u njihovo ime. Događaji su alati za evidentiranje knjige.

Pored samog sučelja trebat će nam zasebna datoteka.sol za naš novi token. Ovdje ćemo uvesti sučelje ERC20 i navesti simbol, naziv i decimale našeg tokena.

žeton uTodaySlika Utoday

Prije nego što ga kompajliramo, moramo navesti ograničenja.

  • Počnimo s ukupnom ponudom – to je konstantna cjelobrojna varijabla koju ćemo učiniti privatnom. Ukupna ponuda naših tokena bit će milijun, a mi također pišemo funkciju za vraćanje ove vrijednosti.

  • Drugo, trebamo negdje pohraniti svoj token. Za to ćemo trebati ucrtati mapiranje koje će vratiti saldo za bilo koju navedenu adresu.

  • Treće, trebala bi postojati funkcija za prijenose tokena, koja će u osnovi imati adresu primatelja i količinu prenesenog tokena. Ova bi funkcija također trebala moći provjeriti ima li pošiljatelj dovoljno tokena na svom stanju, što se može realizirati putem jednostavne izjave if / then. Uz to, postavit ćemo uvjetne uvjete za “_value” na način koji blokira korisnike da šalju transakcije s 0 tokena jer bi to mrežu samo preplavilo smećem.

  • Četvrto, trebali bismo stvoriti preslikavanje za preostale funkcije, što je preslikavanje preslikavanja na cijeli broj.

  • Tada ćemo odrediti nekoliko cekera u funkcijama “odobri” i “dodatak” i postaviti uvjete za “transferFrom”.

  • Napokon, neće biti dostupni svi tokeni na tržištu. Neki od tokena obično se izostavljaju za timove, zaklade, savjetnike i druge svrhe. Stoga je bitno da jasno stavimo do znanja koliko će tokena cirkulirati. Dok smo stvarali tokene, cirkulirajuća opskrba jednaka je našoj ravnoteži.

ograničenja žetona uTodaySlika Utoday

Kôd je spreman, pa provjerimo ga. Prijeđite na karticu “Pokreni” prevoditelja i postavite naš ugovor o tokenima. Vidjet ćete da imamo svoje podatke o žetonima zajedno s ukupnom ponudom, saldima i dozvolama. Čestitam, zaslužili ste tapšanje po leđima!

Da bi naš token stvarno funkcionirao na mreži, moramo implementirati pametni ugovor (imajte na umu da se to razlikuje od postavljanja za testiranje u Remixu). Radi ovog vodiča koristit ćemo Remix i Metamask, ali postoje i drugi načini za to. Metamask je jednostavan, ali učinkovit program Ethereum novčanika s lijepim korisničkim sučeljem koji se integrira kao proširenje nekih od najpopularnijih preglednika. U našem ćemo slučaju koristiti Opera. Prvo, idite na metamaska.io i preuzmite proširenje. Nakon što završite, vidjet ćete ikonu lisice u gornjem desnom dijelu preglednika.

Preuzimanje Metamaske & amp; mjesto ikoneSlika Utoday

Pritisnite ikonu i nastavite kroz ponuđene upute za stvaranje novčanika. Ne zaboravite pohraniti tajnu frazu! Kada imate novčanik, pritisnite ikonu Metamask i promijenite mrežu u ‘Ropsten’ jer se ne želimo petljati s mrežom Ethereuma.

Promjena metamaske u ropstenSlika Utoday

Posljednji je korak generiranje malo etera (nažalost, nećete ih moći koristiti za stvarne kupnje, ali su neophodni za testiranje). Krenite prema slavina.metamask.io i zatražite 1 Eter.

Sad ste spremni. Vratite se u svoj Remix prozor i promijenite okruženje u ‘Injected Web3’ u kompajleru. Pogledajte i karticu računa – vaša adresa trebala bi biti ista onoj koja ste generirali s Metamaskom. Odaberite pametni ugovor koji želite implementirati, a to je vaš ugovor s tokenima, a ne ERC20 sučelje, i pritisnite odgovarajući gumb. Pojavit će se prozor Metamask s transakcijom, njezinim detaljima i opcijama za interakciju s njom. Pošaljite transakciju i naš će token zaživjeti.

Skočni prozor s metamaskomSlika Utoday

Sada se možete poigrati svim funkcijama koje smo ranije naveli. Pogledajmo naš ugovor s druge strane kako bismo provjerili radi li ispravno. Kao i bilo koji drugi blockchain, Ethereum ima više istraživača blokova koji služe osnovnoj svrsi praćenja onoga što se događa na mreži. U našem ćemo se slučaju držati etersko skeniranje, iako postoji pregršt drugih izvrsnih alternativa. Ako samo odete na etherscan, vidjet ćete glavnu mrežu. Kako trebamo vidjeti mrežu Ropsten, morat ćete staviti “ropsten.” Ispred adrese web stranice. Potražite svoju adresu i vidjet ćete dvije transakcije – jedna je za besplatni Ether koju ste dobili, a druga je za raspoređivanje ugovora.

Adresa korisnika u EtherscanuSlika Utoday

Da biste pronašli adresu svog ugovora, pritisnite TxHash i pomaknite se do polja ‘Do’. Ovdje možete provjeriti transakcije, kod i događaje pametnog ugovora. U ovom trenutku moramo potvrditi i objaviti svoj ugovor. Idite na odjeljak “Kôd” i kliknite vezu “Potvrdi i objavi”. Ovdje ćete morati ponovno navesti ime svog tokena, verziju kompajlera (u našem slučaju najnovija verzija Solidityja koju smo koristili bila je 0.5.7, pa ćemo se držati povezane verzije kompajlera). Sada biste trebali kopirati kod pametnog ugovora tokena zajedno s kodom sučelja ERC20 iz prozora Remix u etherscan i pritisnuti ‘Verify and Publish’ na dnu zaslona.

Provjera pametnog ugovoraSlika Utoday

Vrijeme je da se vratite na adresu vašeg ugovora. Kôd na kartici “Kod” sada će biti potvrđen. Uz to, sada ćete imati još dvije kartice: ‘Čitaj ugovor’ & ‘Napišite ugovor’. U odjeljku za čitanje možemo provjeriti funkcionalnost našeg tokena. Unesite svoju (ne ugovornu) adresu u polje ‘balanceOf’ da biste vidjeli koliko tokena imate; trebao bi pokazati milijun da smo ga kodirali kao ukupnu zalihu i dali mu da kruži u naš novčanik. To znači da naš token sada ispravno radi na testnoj mreži.

Primanje saldaSlika Utoday

Sažetak

Ako želite započeti karijeru u kripto industriji, morate shvatiti da unatoč svojoj relativno jednostavnoj osnovi, blockchain ima nevjerojatnu dubinu. Od 2017. blockchains su se značajno razvili i njihovi su slučajevi upotrebe nadilazili samo financijske transakcije. Pojavom Ethereuma pojavio se čitav novi sloj mreža koji su domaćini različitih dApps-a i rješenja temeljenih na blockchainu. Alat koji je stajao iza ove evolucije bio je pametan ugovor i ako svoje iskustvo želite učiniti vrijednijim i sigurnijim za budućnost, trebali biste znati kako se radi.

Iako pametne ugovore možete kodirati na drugim jezicima, Solidity je bolji za takvu svrhu. Štoviše, ako želite postati programer Ethereuma ili stvoriti ICO / ERC20 token za svoj projekt, ovo je vaš izbor. Ako ste imali iskustva sa C ++ ili JavaScriptom, kodiranje na Solidity trebalo bi biti relativno jednostavno. Ipak ćete morati razumjeti neke razlike između klijent-poslužitelja i decentraliziranih modela pokretanja softvera. Zahvaljujući Ethereum Foundation i nekim nezavisnim organizacijama, programerima se nudi niz prikladnih alata kao što su Remix i Etherscan za kodiranje i primjenu pametnih ugovora.

Nadamo se da vam je naš vodič pomogao da zaobiđete većinu koncepata Solidity kako biste mogli započeti svoje blockchain putovanje. Imajte na umu da uvijek možete provjeriti najnoviju dokumentaciju o Solidity. Želimo vam puno sreće i rado ćemo jednog dana upotrijebiti neke od vaših aplikacija!