Kako se naučiti trdnosti in začeti programiranje blokov

Blockchain programiranje je v zadnjem desetletju postalo ena najbolje plačanih in zahtevnih programskih sfer. Čeprav so verige blokov jezikovno agnostične in mnogi obstoječi jeziki, kot sta C ++ in JavaScript (JS), uporabljajo inženirji verig blokov, obstaja nekaj nalog, ki jih obstoječi jeziki ne morejo udobno uresničiti, kar je odprlo povpraševanje po novih, kripto specifične možnosti. Eden takih jezikov je Solidnost.

Solidnost se je rodila kot osrednji del ekosistema Ethereum. Vključeval je C ++, JavaScript in Python. Ima številne sodobne funkcije, kot so knjižnice in dedovanje. Solidity je namenjen pisanju programov, ki komunicirajo z računi Ethereum, ki se imenujejo pametne pogodbe. Pametne pogodbe se izvajajo na navideznem računalniku Ethereum (EVM), kar uporabnikom, ki jih uporabljajo, omogoča decentralizirano izvajanje nalog, kot so množično financiranje, slepe dražbe, glasovanje in številna druga. Najbolj znana ubijalska aplikacija pametnih pogodb je bila decentralizirano financiranje v mednarodnih organizacijah ICO, ki je leta 2017 začelo rally na kripto trgih..

Ne glede na to, ali ste izkušen razvijalec ali šele začnete s kripto, je dobro, da se začnete učiti Solidity, ker so pametne pogodbe postale ključni del ekosistema blockchain. Poleg tega, da jih dApps aktivno izvajajo, jih prek ponudnikov, kot je RSK, aktivno vključujejo v verige blokov na ravni infrastrukture in celo v Bitcoin. Če boste vedeli, kako graditi pametne pogodbe, boste svojo kariero v blockchainu naredili bolj trajnostno in boste lahko proizvajali kakovostnejše rešitve. Ne vlečemo več in si umažemo roke s kodiranjem!

Razumevanje osnov pametne pogodbe

Račun pametne pogodbe je sestavljen iz treh odsekov: stanje, shranjevanje in koda. Stanje predstavlja, koliko Ethereuma ima pametna pogodba. Shramba vsebuje podatke, kot so nizi in nizi, ki so značilni za aplikacijo. Odsek kode vsebuje surovo strojno kodo, ki je sestavljena iz tistega, kar pišemo v Solidity.

Za razliko od uporabniških računov računi pametnih pogodb niso zunanji za posamezna omrežja. Z drugimi besedami, denarnico lahko uporabljate v različnih omrežjih, kot sta Kovan in Ropsten, vendar tega ne morete storiti s pametno pogodbo. Pametne pogodbe so notranje.

Vsaka pametna pogodba ima vir, ki je shranjen v avtorski napravi in ​​primerki, ki so shranjeni v verigi blokov. Če želimo ustvariti primerek (račun) pametne pogodbe, ga moramo razporediti v omrežje. Zelo spominja na razmerje med razredi in primerki v tradicionalnem objektno usmerjenem programiranju (OOP) in jeziki, ki ga predstavljajo (JS, Ruby). Da bomo imeli bolj vizualno predstavitev, ustvarimo razred »Kolo« in mu dodamo primerek.

Kolesarski razred & amp; primerSlika Utoday

Napisali bomo definicijo pogodbe, ki bo nato potekala prek prevajalnika, ki bo ustvaril dve datoteki: bajtno kodo in binarni vmesnik aplikacije (ABI). Bytecode je tisto, kar bo dejansko dovedeno v EVM, ABI pa je plast med byte kodo in običajno kodo JavaScript, ki omogoča gradnjo uporabniškega vmesnika (UI).

Izbira IDE & različica Solidity

Preden začnemo, potrebujemo ustrezno integrirano razvojno okolje (IDE). Z drugimi besedami, za pisanje kode potrebujemo priročen terminal z potrebnimi orodji. Za namene te vadnice bomo izbrali Remix, IDE, ki ga je ustvarila fundacija Ethereum in omogoča pisanje, testiranje, odpravljanje napak, zagon pametnih pogodb in Veliko več. Uporabite ga lahko neposredno v brskalniku ali pa ga prenesete lokalno, če želite.

Ko zaženete Remix, boste v središču dobili urejevalnik kod, upravitelj datotek na levi in ​​prevajalnik na desni.

Začetno okno RemixSlika Utoday

Nekaj ​​vnaprej napisane kode – tega ne bomo potrebovali. Če želite ustvariti prvo pametno pogodbo, pritisnite na ikono malega plusa v zgornjem levem kotu terminala in mu dajte ime.

Ustvarjanje novega projekta v RemixuSlika Utoday

Ker imamo dokument blank.sol zdaj, bi morali določiti različico Solidity, ki jo bo zagnal prevajalnik. V času te vadnice je najnovejša različica 0.5.7. Če niste prepričani, katero različico želite uporabiti, lahko določite vrsto različic.

2 vrsti določitve različice SoliditySlika Utoday

Za konec pa dajmo ime naši pametni pogodbi, ki ji sledi oklepaj.

Pametno poimenovanje pogodbSlika Utoday

Pisanje vaše prve pametne pogodbe

Ko imamo pripravljeno platno, je čas, da določimo osnovne gradnike – spremenljivke. Medtem ko izkušeni inženirji programske opreme ne bodo imeli težav z razumevanjem tega koncepta, ga bomo na kratko predstavili začetnikom. Spremenljivke so ograde za koščke informacij, na katere se kasneje sklicuje program, ki jih izvaja.

Ustvarimo nekaj spremenljivk: niz (zaporedje simbolov) in celo število (število). V primeru Ethereuma so spremenljivke shranjene v verigi blokov skupaj z ostalimi deli pogodb in so zato dostopne in posodobljene od koder koli. Druga ključna značilnost spremenljivk Solidity je, da jih lahko naredite zasebne, tako da poleg spremenljivk napišete ‘private’. Za cela števila ima Solidity dve vrsti: podpisana (lahko pozitivna & negativno) in nepodpisano (lahko samo pozitivno). Če želite določiti nepodpisano spremenljivko, moramo pred njo postaviti samo ‘u’.

Zasebni niz in celo številoSlika Utoday

Ko imamo spremenljivko ‘name’, moramo zapisati metode nastavitve in pridobivanja. To je videti kot funkcija JS. Ne pozabite, da je Solidity statično natipkan, zato moramo določiti tipe spremenljivk. Zdaj bo katera koli vrednost, ki jo vnesemo v ‘setName’, definirala niz ‘name’. Za geter bomo uporabili “getName” in določili, katero spremenljivko pričakujemo. Zdaj je čas, da naredimo enako za spremenljivko “starost”. Metoda je zgrajena podobno kot “getName”.

Ustvarjalci imen in starostiSlika Utoday

Preizkusimo naš majhen delček kode. Pojdite na zavihek »Zaženi« v prevajalniku in pod imenom pogodbe pritisnite »Razpostavi«. Čisto na dnu prevajalnika boste zdaj videli razdelek »Razporejene pogodbe«, v katerem so na voljo naše metode. Za posredovanje imena vrednosti ‘newName’ moramo zagotoviti, da je naš niz zapisan v JSON, sicer ‘getName’ ne bo vrnil ničesar. Za “setAge” samo navedite starost brez narekovajev. Kot vidite, lahko zdaj s pomočjo pametne pogodbe spremenljivke ‘ime’ in ‘starost’ nastavimo in prejmemo.

Sestavljalec z imenom in starostjoSlika Utoday

Opredelitev Wei in Plina

Ena najpomembnejših lastnosti pametnih kontrastov je, da jih boste morali razporediti v omrežje Ethereum, da začnete transakcijo, ki stane nekaj denarja, ki se plača v Eteru. Ključnega pomena je razumeti, kako se pristojbine uporabljajo v sistemu, saj se bodo odštele vsakič, ko boste sodelovali z EVM.

Kaj je Wei?

Predpostavimo, da ste tako daleč v naši vadnici vsaj enkrat uporabili Bitcoin. Verjetno ste opravili majhno transakcijo, ki je bila manjša od 1 BTC. V tem primeru ste uporabili Satoshije, ki so nekaj podobnega penijev za dolar. Wei je kot Satoshi – to je najmanjši del 1 Etra. Če na to pomislimo s programskim izrazom, je to najnižje celo nepodpisano celo število v omrežju. Med interakcijo z omrežjem boste večinoma naleteli na Gwei, ki se nanaša na Gigawei in znaša 1 milijardo Wei.

Kaj je plin?

Plin je bistveni del mehanizma pametnega izvrševanja pogodb. Za vsako transakcijo ima dve vrednosti: porabljeni plin in njegova cena. Omeniti velja, da uporabnik, ki sproži transakcijo, opredeli te vrednosti. Če pa nastavljena vrednost plina ne bo dovolj za obdelavo določene operacije, bo plin porabljen, vendar transakcija ne bo uspela. Poleg tega, če bo cena plina v danem trenutku nastavljena prenizko za omrežje, vozlišča ne bodo obdelala transakcije, s čimer bo sčasoma postala neuspešna. Obstaja več storitev za preverjanje optimalnih vrednosti za vaše transakcije, ena od njih je ethgasstation.info. Da bi bolje razumeli plin in zakaj stane kaj denarja, ga nekaj kodirajmo sami.

Vrnite se v okno Remix in zaženite novo datoteko. V našem primeru ga bomo poimenovali “Plin” in ustvarili istoimensko pogodbo. Upoštevajte, da več podatkov bomo potrebovali za shranjevanje na verigi blokov, več plina bomo potrebovali. Glede na to bomo za namen te vaje ustvarili poceni pogodbo; več kot mu boste dodali, višja bo pristojbina.

Na voljo bo funkcija, ki vrne celo število, ki je vsota dveh vhodov. Da bo čim lažji, bomo določili, da naša pogodba na blockchainu ne bo shranjevala ničesar, za to pa bomo poleg funkcije postavili ‘pure’ poleg funkcije.

Poceni pogodbaSlika Utoday

Zdaj ga lahko namestite v prevajalnik in vnesete kateri koli dve številki, da dobite celo število ‘c’. Če želite preveriti ceno naše transakcije, si oglejte terminal, ki se nahaja pod odsekom kode. Obstajajo stroški transakcije in stroški izvršitve. Prva se nanaša na to, koliko podatkov ima transakcija. Drugi se nanaša na to, koliko moči EVM je zahtevala transakcija.

Poceni pogodbeni stroškiSlika Utoday

To je izredno osnovna transakcija, ki za omrežje skoraj nič ne stane. Pri pisanju smiselnih pametnih pogodb boste dodali več podrobnosti, kar bo povečalo njihovo težo in s tem transakcijske provizije.

Ustvarjanje & uvajanje lastnega žetona ERC20

Sprijaznimo se, večina razvijalcev verig blokov, ki šele začenjajo, si želi igrati veliko in ustvariti lastne verige blokov in žetone. Čeprav je to izjemno težka tema, ki je pritegnila nekatere najboljše programske inženirje z drugih področij, gradnja osnovnega žetona ERC20 ni raketna znanost.

Najprej moramo v Remixu ustvariti drugo datoteko in naložiti vmesnik ERC20, ki je naslednji:

Standard ERC20Slika Utoday

Funkcija ‘totalSupply’ nam omogoča, da vidimo, koliko žetonov imamo skupaj. Funkcija ‘balanceOf’ se uporablja za pridobivanje količin žetonov na določenih naslovih. Funkcija ‘prenos’ uporabnikom omogoča medsebojno izvajanje transakcij. Funkcije »transferFrom«, »dodatek« in »odobritev« so na voljo ljudem, da dovolijo nekaterim drugim uporabnikom, da sprožijo transakcije v njihovem imenu. Dogodki so orodja za beleženje knjige.

Poleg samega vmesnika bomo za naš novi žeton potrebovali ločeno datoteko.sol. Tukaj bomo uvozili vmesnik ERC20 in določili simbol, ime in decimalne številke našega žetona.

žeton uTodaySlika Utoday

Preden ga sestavimo, moramo določiti omejitve.

  • Začnimo s skupno ponudbo – gre za konstantno celoštevilčno spremenljivko, ki jo bomo naredili zasebno. Skupna ponudba naših žetonov bo 1 milijon, napišemo tudi funkcijo za vrnitev te vrednosti.

  • Drugič, nekje moramo shraniti svoj žeton. Za to bomo morali začrtati preslikavo, ki bo vrnilo stanje za kateri koli določen naslov.

  • Tretjič, obstajati mora funkcija za prenose žetonov, ki bo v bistvu imela naslov prejemnika in količino prenesenega žetona. Ta funkcija bi morala imeti tudi možnost preveriti, ali ima pošiljatelj na svojem računu dovolj žetonov, kar je mogoče uresničiti s preprostim izpiskom if / then. Poleg tega bomo za ‘_value’ nastavili pogojne pogoje na način, ki uporabnikom preprečuje pošiljanje transakcij z 0 žetoni, saj bi to samo preplavilo omrežje z neželeno vsebino.

  • Četrtič, za preostale funkcije bi morali ustvariti preslikavo, ki je preslikava preslikave v celo število.

  • Nato bomo v funkcijah »odobri« in »dodatek« določili nekaj kontrolnikov in postavili pogoje za »transferFrom«.

  • Na koncu pa vsi žetoni ne bodo na voljo na trgu. Nekateri žetoni so običajno izpuščeni za ekipe, fundacije, svetovalce in druge namene. Zato je nujno, da jasno povemo, koliko žetonov bo v obtoku. Ko smo ustvarili žetone, je krožna ponudba enaka našemu ravnovesju.

omejitve žetonov uTodaySlika Utoday

Koda je pripravljena, zato jo preizkusimo. Pojdite na zavihek “Zaženi” v prevajalniku in postavite našo žetonsko pogodbo. Videli boste, da imamo podatke o žetonih skupaj s skupno ponudbo, saldi in pravicami. Čestitam, zaslužite si trepljanje po rami!

Da bi naš žeton dejansko deloval v omrežju, moramo razviti pametno pogodbo (upoštevajte, da se to razlikuje od uvajanja za testiranje v Remixu). Zaradi te vadnice bomo uporabili Remix in Metamask, vendar obstajajo tudi drugi načini. Metamask je preprost, a učinkovit program denarnice Ethereum z lepim uporabniškim vmesnikom, ki se integrira kot razširitev nekaterih najbolj priljubljenih brskalnikov. V našem primeru bomo uporabili Opera. Najprej pojdite na metamask.io in naložite končnico. Ko končate, boste v zgornjem desnem kotu brskalnika videli ikono lisice.

Prenos metamaske & amp; mesto ikoneSlika Utoday

Pritisnite ikono in nadaljujte s ponujenimi navodili za ustvarjanje denarnice. Ne pozabite shraniti skrivnega stavka! Ko imate denarnico, pritisnite ikono Metamask in spremenite omrežje v »Ropsten«, ker se ne želimo zapletati z glavnim omrežjem Ethereuma.

Spreminjanje metamaske v RopstenSlika Utoday

Zadnji korak je ustvariti nekaj etra (na žalost jih ne boste mogli uporabiti za nobene resnične nakupe, so pa potrebni za testiranje). Pojdi na pipa.metamask.io in zahtevajte 1 Eter.

Zdaj ste pripravljeni. Vrnite se v okno Remix in spremenite okolje v »Injected Web3« v prevajalniku. Oglejte si tudi zavihek računa – vaš naslov mora biti enak naslovu, ki ste ga ustvarili z Metamask. Izberite pametno pogodbo, ki jo želite uvesti, ki je vaša žetonska pogodba in ne vmesnik ERC20, in pritisnite na ustrezni gumb. Pojavi se okno Metamask s transakcijo, njenimi podrobnostmi in možnostmi za interakcijo z njo. Predložite transakcijo in naš žeton bo zaživel.

Pojavno okno z metamaskoSlika Utoday

Zdaj se lahko poigrate z vsemi funkcijami, ki smo jih določili prej. Poglejmo našo pogodbo z druge strani, da preverimo, ali deluje pravilno. Kot katera koli druga veriga blokov ima tudi Ethereum več raziskovalcev blokov, ki so bistveni namen spremljanja dogajanja v omrežju. V našem primeru se bomo držali etherscan, čeprav obstaja nekaj drugih odličnih alternativ. Upoštevajte, da če samo odprete etherscan, boste videli glavno omrežje. Ker moramo videti omrežje Ropsten, boste morali pred naslov spletnega mesta postaviti »ropsten.«. Poiščite svoj naslov in videli boste dve transakciji – ena je za brezplačni Ether, ki ste jo prejeli, druga pa za uvajanje pogodbe.

Naslov uporabnika v EtherscanuSlika Utoday

Če želite poiskati naslov svoje pogodbe, pritisnite tipko TxHash in se pomaknite do polja ‘Za’. Tu lahko preverite transakcije, kodo in dogodke pametne pogodbe. Na tej točki moramo preveriti in objaviti svojo pogodbo. Odprite razdelek »Koda« in kliknite povezavo »Preveri in objavi«. Tu boste morali znova določiti ime svojega žetona, različico prevajalnika (v našem primeru je bila najnovejša različica Solidity, ki smo jo uporabili, 0.5.7, zato se bomo držali povezane različice prevajalnika). Zdaj morate kopirati kodo pametne pogodbe žetona skupaj s kodo vmesnika ERC20 iz okna Remix v etherscan in na dnu zaslona pritisnite »Preveri in objavi«.

Preverjanje pametne pogodbeSlika Utoday

Čas je, da se vrnete na naslov svoje pogodbe. Koda na zavihku ‘Koda’ bo zdaj preverjena. Poleg tega boste imeli zdaj še dva zavihka: ‘Preberi pogodbo’ & ‘Napišite pogodbo’. V razdelku za branje lahko preverimo delovanje našega žetona. V polje (balanceOf) vnesite svoj (ne pogodbenega) naslova, da vidite, koliko žetonov imate; pokazati bi moralo 1 milijon, ki smo ga kodirali kot celotno ponudbo in ga dali krožiti v našo denarnico. To pomeni, da naš žeton zdaj pravilno deluje na testni mreži.

Prejem stanjaSlika Utoday

Povzetek

Če želite začeti kariero v kripto industriji, morate razumeti, da ima blockchain kljub relativni enostavnosti v osnovah neverjetno globino. Od leta 2017 so se verige blokov močno razvile in njihovi primeri uporabe presegajo le finančne transakcije. S prihodom Ethereuma se je pojavila povsem nova plast omrežij, ki gosti različne dApps in rešitve, ki temeljijo na blockchainu. Orodje te evolucije je bila pametna pogodba, in če želite svoje izkušnje narediti dragocenejše in bolj zanesljive za prihodnost, morate vedeti, kako človek deluje..

Čeprav lahko pametne pogodbe kodirate v drugih jezikih, je Solidity za ta namen bolj primeren. Če želite postati razvijalec Ethereuma ali za svoj projekt ustvariti žeton ICO / ERC20, je to vaša izbira. Če ste imeli nekaj izkušenj s C ++ ali JavaScript, bi moralo biti kodiranje na Solidity razmeroma enostavno. Morali pa boste razumeti nekatere razlike med odjemalsko-strežniškim in decentraliziranimi modeli za zagon programske opreme. Zahvaljujoč Ethereum Foundation in nekaterim neodvisnim organizacijam je razvijalcem predstavljen nabor priročnih orodij, kot sta Remix in Etherscan za kodiranje in uvajanje pametnih pogodb..

Upamo, da vam je naša vadnica pomagala pri obiskovanju večine konceptov Solidity, da ste lahko začeli svoje potovanje v verigi blokov. Ne pozabite, da lahko vedno preverite najnovejšo dokumentacijo o Solidity. Želimo vam veliko sreče in z veseljem bomo nekoč uporabili nekaj vaših aplikacij dApps!