A szilárdság megtanulása és a blokklánc programozás indítása

A blokklánc programozás az elmúlt évtized egyik legjobban fizető és kihívást jelentő szoftverszférájává vált. Bár a blokkláncok nyelv-agnosztikusak, és a létező nyelvek közül sokat, például a C ++ és a JavaScript (JS), a blokklánc-mérnökök használnak, vannak olyan feladatok, amelyeket a meglévő nyelvek nem tudtak kényelmesen megvalósítani, ami megnyitotta az igényt az új, titkosítási lehetőségek. Az egyik ilyen nyelv a szilárdság.

A szilárdság az Ethereum ökoszisztéma központi részeként született meg. Abszorbeálta a C ++ – t, a JavaScript-et és a Python-ot. Számos olyan korabeli jellemzővel rendelkezik, mint a könyvtárak és az öröklés. A Solidity az Ethereum-számlákkal kölcsönhatásba lépő programok írására szolgál, amelyeket intelligens szerződéseknek nevezünk. Az intelligens szerződéseket az Ethereum virtuális gépen (EVM) hajtják végre, lehetővé téve az őket használó felhasználóknak olyan feladatokat, mint a közösségi finanszírozás, a vak aukciók, a szavazás és még sok más decentralizált módon. Az intelligens szerződések leghíresebb gyilkos-alkalmazása a decentralizált finanszírozás volt az ICO-kban, amely 2017-ben elindította a bikaviadalt a kriptopiacokon..

Akár tapasztalt fejlesztő vagy, akár csak a kriptográfia kezdője, célszerű elkezdeni a Solidity elsajátítását, mert az intelligens szerződések a blockchain ökoszisztéma döntő részévé váltak. Eltekintve attól, hogy a dApps aktívan végrehajtja, aktívan integrálják őket az infrastruktúra-réteg blokkláncaiba, sőt az olyan szolgáltatókhoz is, mint az RSK. Az intelligens szerződések elkészítésének ismeretében fenntarthatóbbá válik a blokklánc karrierje, és jobb minőségű megoldásokat képes előállítani. Ne húzzuk tovább, és piszkoljuk be a kezünket a kódolással!

Az okos szerződés alapjainak megértése

Az intelligens szerződéses fiók három szakaszból áll: egyenleg, tárhely és kód. Az egyenleg azt mutatja meg, hogy mennyi Ethereum van egy okos szerződéssel. A tárolás olyan adatokat tartalmaz, mint az alkalmazásra jellemző karakterláncok és tömbök. A kód szakasz rendelkezik a nyers gépkóddal, amely abból áll össze, amit a Solidity-be írunk.

A felhasználói fiókokkal ellentétben az intelligens szerződéses fiókok nem tartoznak az adott hálózatokon kívülre. Más szóval, használhatja a pénztárcáját különböző hálózatokkal, például a Kovan és a Ropsten, de ezt nem teheti meg okos szerződéssel. Az intelligens szerződések belsőek.

Minden intelligens szerződésnek van egy forrása, amelyet egy szerző eszközén és példányain tárolnak, amelyeket a blokklánc tárol. Az intelligens szerződés egy példányának (fiókjának) létrehozásához telepítenünk kell a hálózatra. Nagyon hasonlít a hagyományos objektum-orientált programozás (OOP) és az azt képviselő nyelvek (JS, Ruby) osztályok és példányok közötti kapcsolatra. A vizuális megjelenítés érdekében hozzunk létre egy „Bike” osztályt, és adjunk hozzá egy példányt.

Kerékpáros osztály & amp; példaKép: Utoday

Amit írunk, az egy szerződésdefiníció, amely aztán egy fordítón keresztül fut, amely két fájlt állít elő: bytecode-ot és az alkalmazás bináris felületét (ABI). A Bytecode az, amit valójában az EVM-be táplálnak, az ABI pedig a bájtkód és a szokásos JavaScript-kód közötti réteg, amely lehetővé teszi a felhasználói felület (UI) felépítését..

IDE kiválasztása & a Solidity változata

Mielőtt elkezdenénk, megfelelő integrált fejlesztői környezetre (IDE) van szükségünk. Más szóval, szükségünk van egy kényelmes terminálra, a szükséges eszközökkel a kódunk beírásához. A bemutató céljára kiválasztjuk a Remix-et, az Ethereum alapítvány által létrehozott IDE-t, amely lehetővé teszi írást, tesztelést, hibakeresést, intelligens szerződések elindítását és sok más. Használhatja akár egyenesen a böngészőben, akár helyben letöltheti, ha szeretné.

A Remix elindításakor a központban található kódszerkesztő, a bal oldalon a fájlkezelő és a jobb oldalon egy fordító jelenik meg.

Kezdeti Remix ablakKép: Utoday

Lesz néhány előre megírt kód – erre nincs szükségünk. Az első okos szerződés létrehozásához nyomjuk meg a terminál bal felső sarkában lévő kis plusz ikont, és adjunk neki egy nevet.

Új projekt létrehozása a Remix-benKép: Utoday

Mivel megvan az blank.sol dokumentum, meg kell adnunk a Solidity verzióját, amelyet a fordító futtatni fog. Az oktatóanyag készítésekor a legújabb verzió a 0.5.7. Ha nem biztos benne, hogy melyik verziót használja, megadhat egy verziótartományt.

2 típus a Solidity verziójának megadásáraKép: Utoday

Végül adjunk nevet okos szerződésünknek, amelyet zárójel követ.

Intelligens szerződés megnevezéseKép: Utoday

Az első okos szerződés megírása

Miután elkészült a vásznunk, itt az ideje meghatározni az alapvető építőelemeket – változókat. Bár a tapasztalt szoftvermérnököknek nem lesz problémája ennek a koncepciónak a megértésével, röviden bemutatjuk a kezdőknek. A változók olyan információrészek helyőrzői, amelyekre később egy őket futtató program hivatkozik.

Hozzunk létre néhány változót: egy karakterláncot (egy szimbólumsorozatot) és egy egész számot (egy számot). Az Ethereum esetében a változók a blokkláncban vannak tárolva a szerződések többi részével együtt, ezért bárhonnan hozzáférhetők és frissíthetők. A szilárdsági változók másik fő jellemzője, hogy priváttá teheti őket, ha a változók mellé ’privát’ szót írunk. Végül az egész számok esetében a Szilárdságnak két típusa van: aláírt (lehet pozitív is & negatív) és aláíratlan (csak pozitív lehet). Aláíratlan változó megadásához csak „u” -t kell tennünk előtte.

Privát karakterlánc és egész számKép: Utoday

Miután megvan a „név” változó, ki kell írnunk a beállítás és megszerzés módszereit. Ez úgy néz ki, mint egy JS funkció. Ne feledje, hogy a szilárdság statikusan van beírva, ezért meg kell határoznunk a változó típusokat. Most minden olyan érték, amelyet a „setName” -be teszünk, meghatározza a „name” karakterláncot. A getterhez a ‘getName’ szót fogjuk használni, és meghatározzuk, hogy milyen változót várunk. Itt az ideje, hogy ugyanezt tegye az „életkor” változó esetében is. A módszer a „getName” -hez hasonlóan készül.

Név- / életkor-beállítók és -szerzőkKép: Utoday

Teszteljük a kis kódrészletünket. Lépjen a fordító „Futtatás” fülére, és nyomja meg a „Telepítés” gombot a szerződés neve alatt. A fordító legalsó részén most megjelenik a „Telepített szerződések” szakasz, amelyben elérhetőek a módszereink. Annak érdekében, hogy egy nevet átadjunk az „newName” értéknek, meg kell győződnünk arról, hogy a karakterláncunk JSON-ban van-e írva, különben a „getName” nem ad semmit. A „setAge” esetében csak idézőjelek nélkül tegye a korát. Amint látja, intelligens szerződésünkön keresztül most beállíthatjuk és megkapjuk a „név” és az „életkor” változókat.

Fordító, névvel és korralKép: Utoday

Wei és Gas meghatározása

Az intelligens kontrasztok egyik legfigyelemreméltóbb tulajdonsága, hogy az Ethereum hálózatba történő telepítéshez tranzakciót kell kezdeményeznie, amely bizonyos mennyiségű pénzbe kerül, amelyet Ether-ben fizetnek. Alapvető fontosságú megérteni, hogy a díjak hogyan kerülnek felhasználásra a rendszerben, mivel ezeket levonják minden alkalommal, amikor kapcsolatba lép az EVM-mel.

Mi Wei?

Tegyük fel, hogy ennyire elolvasva a bemutatónkba, legalább egyszer használta a Bitcoint. Valószínűleg egy kis tranzakciót hajtott végre, amely sokkal kevesebb volt, mint 1 BTC. Ebben az esetben a Satoshis-t használta, ami valami fillér egy dollárért. Wei olyan, mint egy Satoshi – ez az 1 éter legkisebb része. Ha programozási szempontból gondolunk rá, akkor ez a hálózat legkisebb előjel nélküli egész száma. A hálózattal való kapcsolattartás során többnyire találkozhat a Gwei-vel, amely a Gigawei-re utal és 1 milliárd Wei-vel egyenlő.

Mi a gáz?

A gáz az intelligens szerződés-végrehajtási mechanizmus elengedhetetlen része. Minden tranzakciónak két értéke van: az elfogyasztott gáz és az ára. Érdemes megemlíteni, hogy a tranzakciót kezdeményező felhasználó meghatározza ezeket az értékeket. Ha azonban a Gas beállított értéke nem lesz elegendő egy adott művelet feldolgozásához, akkor a Gázt fogyasztják, de a tranzakció sikertelen lesz. Sőt, ha a gáz árát egy adott időpontban túl alacsonyra állítják be a hálózat számára, akkor a csomópontok nem fogják feldolgozni a tranzakciót, ami végül sikertelenné teszi. Számos szolgáltatás kínálja a tranzakciók optimális értékeinek ellenőrzését, az egyik az ethgasstation.info. Hogy jobban megértsük a Gázt és azt, hogy miért kerül pénzbe, kódoljunk bele néhányat magunknak.

Térjen vissza a Remix ablakhoz, és kezdeményezzen egy új fájlt. Példánkban „gáznak” hívjuk, és létrehozunk egy azonos nevű szerződést. Ne feledje, hogy minél több adatra lesz szükségünk a blokkláncon, annál több gázra lesz szükségünk. Ennek ellenére a bemutató céljából olcsó szerződést fogunk létrehozni; minél többet ad hozzá, annál magasabb lesz a díj.

Lesz egy olyan függvény, amely egy egész számot ad vissza, amely két bemenet összege. Annak érdekében, hogy a lehető legkönnyebb legyen, megadjuk, hogy a szerződésünk semmit nem fog tárolni a blokkláncon, és ehhez a funkció mellé “tiszta” -t teszünk..

Olcsó szerződésKép: Utoday

Most telepítheti a fordítóba, és bármely két számot beírhat, hogy megkapja a „c” egész számot. Tranzakciónk árának ellenőrzéséhez meg kell néznünk a kódrész alatt található terminált. Van tranzakciós költség és végrehajtási költség. Az első arra utal, hogy egy tranzakció mennyi adattal rendelkezik. A második arra utal, hogy az EVM mekkora energiát igényelt a tranzakció.

Olcsó szerződés költségeiKép: Utoday

Ez egy rendkívül alapvető tranzakció, amely szinte semmibe sem kerül a hálózat számára. Értelmes okos szerződések megírásakor további részleteket ad hozzá, amelyek növelik a súlyukat, és ezáltal a tranzakciós díjakat.

Létrehozása & saját ERC20 token telepítése

Valljuk be, hogy a most induló blockchain fejlesztők többsége szívesen játszik nagyot, és létrehozza saját blokkláncait és tokenjeit. Bár ez egy rendkívül nehéz téma, amely vonzotta a legjobb szoftvermérnököket néhány más területről, az alapvető ERC20 token felépítése nem rakétatudomány.

Először létre kell hoznunk egy másik fájlt a Remix alkalmazásban, és fel kell töltenünk az ERC20 felületet, amely a következő:

ERC20 szabványKép: Utoday

A ’totalSupply’ funkció segítségével megnézhetjük, hogy összesen hány tokenünk van. A „balanceOf” függvény segítségével tokenek mennyiségét kapják meg meghatározott címeken. A „transzfer” funkció lehetővé teszi a felhasználók közötti tranzakciókat. A „transferFrom”, az „engedmény” és a „jóváhagyás” funkciók lehetővé teszik az emberek számára, hogy más felhasználók tranzakciókat kezdeményezhessenek a nevükben. Az események a főkönyv naplózási eszközei.

Magán a felületen kívül szükségünk lesz egy külön.sol fájlra az új tokenünkhöz. Itt importáljuk az ERC20 interfészt, és megadjuk a tokenünk szimbólumát, nevét és tizedeseit.

uToday tokenKép: Utoday

Mielőtt lefordítanánk, meg kell adnunk a megszorításokat.

  • Kezdjük a teljes kínálattal – ez egy állandó egész változó, amelyet priváttá teszünk. Jelzőink teljes mennyisége 1 millió lesz, egy függvényt is írunk ennek az értéknek a visszaadására.

  • Másodszor, valahol tárolnunk kell a tokenünket. Ehhez körvonalaznunk kell azt a leképezést, amely egyenleget ad vissza a megadott címekhez.

  • Harmadszor, rendelkeznie kell egy funkcióval a token átvitelhez, amelynek lényegében egy vevő címe és egy átadott token mennyisége lesz. Ennek a funkciónak képesnek kell lennie arra is, hogy ellenőrizze, hogy a feladó egyenlegén van-e elegendő token, vagy sem, ami egy egyszerű if / then utasítással valósítható meg. Ezenkívül feltételeket állítunk be a „_value” számára oly módon, hogy megakadályozzuk a felhasználókat abban, hogy 0 tokennel küldjenek tranzakciókat, mivel ez csak szemetet árasztana el a hálózaton.

  • Negyedszer, létre kell hoznunk a többi függvény leképezését, amely egy egész számra való leképezés.

  • Ezután megadunk néhány ellenőrzőt az „jóváhagyás” és az „engedélyezés” funkciókban, és feltesszük a feltételeket a „transferFrom”.

  • Végül nem minden token lesz elérhető a piacon. A tokenek egy részét általában kihagyják csapatok, alapítványok, tanácsadók és más célokra. Ezért elengedhetetlen, hogy világossá tegyük, hogy hány zseton kering majd. A tokenek létrehozásakor a keringő ellátás megegyezik az egyensúlyunkkal.

uToday token megszorításokKép: Utoday

A kód kész, ezért teszteljük. Menjen a fordító „Futtatás” fülére, és telepítse a token szerződésünket. Látni fogja, hogy rendelkezünk token adatainkkal, a teljes ellátással, egyenlegekkel és juttatásokkal együtt. Gratulálok, megérdemel egy vállveregetést!

Ahhoz, hogy a tokenünk valóban működjön a hálózaton, telepítenünk kell az intelligens szerződést (vegye figyelembe, hogy ez különbözik a Remix tesztelésre való telepítésétől). A bemutató kedvéért a Remixet és a Metamaskot fogjuk használni, de ennek más módjai is vannak. A Metamask egy egyszerű, de hatékony Ethereum pénztárca-program, szép felhasználói felülettel, amely kiterjesztésként integrálódik a legnépszerűbb böngészők közé. Esetünkben az Operát fogjuk használni. Először menjen a metamask.io és töltse le a kiterjesztést. Miután ez elkészült, a böngésző jobb felső sarkában egy róka ikon jelenik meg.

A Metamask letöltése & amp; az ikon helyeKép: Utoday

Nyomja meg az ikont, és folytassa a felajánlott utasításokat egy pénztárca létrehozásához. Ne felejtse el eltárolni a titkos kifejezést! Ha megvan a pénztárcád, nyomd meg a Metamask ikont, és állítsd át a hálózatot „Ropsten” -re, mert nem akarunk elrontani az Ethereum mainnetjével.

Metamask cseréje RopstenreKép: Utoday

Az utolsó lépés néhány éter előállítása (sajnos ezeket nem fogja tudni felhasználni valódi vásárlásokhoz, de a teszteléshez szükségesek). Irány át csaptelep.metamask.io és kérjen 1 étert.

Most már minden készen áll. Térjen vissza a Remix ablakba, és változtassa meg a környezetet az Injected Web3-ra a fordítóban. Vessen egy pillantást a fiók fülre is – címének meg kell egyeznie azzal, amelyet a Metamask alkalmazással generált. Válassza ki a telepíteni kívánt intelligens szerződést, amely a token szerződés, és nem az ERC20 interfész, majd nyomja meg a megfelelő gombot. A Metamask ablak megjelenik egy tranzakcióval, annak részleteivel és a vele való interakció lehetőségeivel. Küldje el a tranzakciót, és a tokenünk életre kel.

Metamask felugró ablakKép: Utoday

Most már játszhat az összes funkcióval, amelyet korábban megadtunk. Nézzük meg szerződésünket egy másik oldalról, hogy ellenőrizzük a megfelelő működését. Mint minden más blokklánchoz, az Ethereumnak is több blokkfelfedezője van, amelyek a hálózatban zajló események megfigyelésének alapvető célját szolgálják. Esetünkben kitartunk eterszkán, bár van egy maroknyi más nagyszerű alternatíva is. Ne feledje, hogy ha csak az etherscanbe megy, akkor látni fogja a Fő hálózatot. Mivel látnunk kell a Ropsten hálózatot, a webhely címe elé kell tenni az „ropsten.” Szót. Keresse meg a címét, és két tranzakciót fog látni – az egyik ingyenes éter, amelyet kapott, a másik pedig a szerződés lebonyolítását szolgálja.

A felhasználó címe Etherscan-banKép: Utoday

A szerződés címének megtalálásához nyomja meg a TxHash gombot, és lépjen a ‘Címzett’ mezőbe. Itt ellenőrizheti intelligens szerződésének tranzakcióit, kódját és eseményeit. Ezen a ponton ellenőriznünk és közzé kell tennünk a szerződésünket. Lépjen a „Kód” szakaszba, és kattintson az „Ellenőrzés és közzététel” linkre. Itt újra meg kell adnia a token nevét, a fordító verzióját (esetünkben a Solidity legújabb verziója, amelyet használtunk, 0,5,7 volt, ezért ragaszkodunk a kapcsolódó fordítói verzióhoz). Most át kell másolnia a token intelligens szerződéses kódját az ERC20 interfészkóddal együtt a Remix ablakából az etherscanbe, és nyomja meg a képernyő alján található „Verify and Publish” gombot..

Az intelligens szerződés ellenőrzéseKép: Utoday

Ideje visszatérni a szerződés címére. A „Kód” fülön lévő kódot most ellenőrizzük. Ezenkívül még két füled lesz: ‘Szerződés olvasása’ & ’Szerződés írása’. Az olvasási részben ellenőrizhetjük a tokenünk működését. Írja be a (nem a szerződés címét) a „balanceOf” mezőbe, hogy lássa, hány zsetonja van; 1 milliót kell mutatnia, hogy a teljes készletet keményen kódoltuk, és a pénztárcánkba kerestük. Ez azt jelenti, hogy a tokenünk most megfelelően működik a tesztneten.

Az egyenleg átvételeKép: Utoday

Összegzés

Ha a kriptográfia területén szeretne karriert kezdeni, meg kell értenie, hogy az alapok viszonylagos egyszerűsége ellenére a blockchain hihetetlen mélységgel rendelkezik. 2017 óta a blokkláncok jelentősen fejlődtek, és felhasználási eseteik túlmutattak a pénzügyi tranzakciókon. Az Ethereum megjelenésével egy teljesen új hálózatréteg jelent meg, amely különféle dApps és blockchain alapú megoldásokat tartalmaz. Ennek az evolúciónak az eszköze egy okos szerződés volt, és ha értékesebbé és jövőbiztosabbá akarja tenni tapasztalatait, akkor tudnia kell, hogyan működik.

Míg az intelligens szerződéseket más nyelveken is kódolhatja, a Solidity jobban megfelel ilyen célra. Sőt, ha Ethereum fejlesztővé akar válni, vagy ICO / ERC20 tokent szeretne létrehozni a projektjéhez, akkor ez a választás. Ha volt tapasztalata a C ++ vagy a JavaScript használatával, a Solidity kódolásának viszonylag egyszerűnek kell lennie. Meg kell értenie néhány különbséget az ügyfél-szerver és a szoftver indításának decentralizált modelljei között. Az Ethereum Alapítványnak és néhány harmadik féltől származó szervezetnek köszönhetően a fejlesztők olyan kényelmes eszközöket kapnak, mint például a Remix és az Etherscan az intelligens szerződések kódolásához és telepítéséhez.

Reméljük, hogy bemutatónk segített abban, hogy a Solidity koncepcióinak többségében megkerülhesse a blokklánc útját. Ne feledje, hogy mindig ellenőrizheti a Solidity legfrissebb dokumentációját. Sok szerencsét kívánunk, és örömmel használjuk valamikor a dApps-t!