Jak se naučit soliditu a začít programovat blockchain

Programování blockchainu se za poslední desetiletí stalo jednou z nejlépe platících a náročných softwarových sfér. Ačkoli jsou blockchainy jazykově agnostické a mnoho stávajících jazyků, jako jsou C ++ a JavaScript (JS), využívají inženýři blockchainu, existují některé úkoly, které stávající jazyky nemohly pohodlně realizovat, což otevřelo poptávku po nových specifické krypto možnosti. Jedním z takových jazyků je Solidity.

Pevnost se zrodila jako základní součást ekosystému Ethereum. Absorbovalo C ++, JavaScript a Python. Má mnoho současných funkcí, jako jsou knihovny a dědičnost. Solidity je navržen tak, aby psal programy, které interagují s účty Ethereum, které se nazývají inteligentní smlouvy. Inteligentní smlouvy se provádějí na virtuálním stroji Ethereum (EVM), což umožňuje uživatelům, kteří je využívají, provádět úkoly jako crowdfunding, slepé aukce, hlasování a mnoho dalších decentralizovaným způsobem. Nejznámější zabijáckou aplikací inteligentních kontraktů bylo decentralizované financování v ICO, které v roce 2017 zahájilo býčí rally na kryptotrzích..

Ať už jste zkušený vývojář nebo právě začínáte v kryptoměně, je dobré začít se učit Solidity, protože chytré smlouvy se staly klíčovou součástí blockchainového ekosystému. Kromě aktivní implementace dApps se aktivně integrují do blockchainů na úrovni infrastruktury a dokonce i do bitcoinů prostřednictvím poskytovatelů, jako je RSK. Tím, že budete vědět, jak budovat inteligentní smlouvy, učiníte svou blockchainovou kariéru udržitelnější a budete moci vyrábět kvalitnější řešení. Už to nevytahujme a neznečisťujme si ruce kódováním!

Pochopení základů chytré smlouvy

Účet inteligentní smlouvy se skládá ze tří částí: zůstatek, úložiště a kód. Zůstatek představuje, kolik ethereum má inteligentní smlouva. Úložiště obsahuje data jako řetězce a pole, které jsou specifické pro aplikaci. Sekce kódu obsahuje nezpracovaný strojový kód, který je sestaven z toho, co napíšeme v Solidity.

Na rozdíl od uživatelských účtů nejsou účty inteligentních smluv externí vůči příslušným sítím. Jinými slovy, svou peněženku můžete použít v různých sítích, jako jsou Kovan a Ropsten, ale s chytrým kontraktem to udělat nemůžete. Chytré smlouvy jsou interní.

Každá chytrá smlouva má zdroj, který je uložen v autorském zařízení a instance, které jsou uloženy v blockchainu. Aby bylo možné vytvořit instanci (účet) inteligentní smlouvy, musíme ji nasadit do sítě. Velmi se podobá vztahu mezi třídami a instancemi v tradičním objektově orientovaném programování (OOP) a jazycích, které jej reprezentují (JS, Ruby). Abychom vám poskytli více vizuální reprezentace, vytvořme třídu „Bike“ a přidáme její instanci.

Třída na kole & amp; instanceObrázek Utoday

To, co budeme psát, je definice smlouvy, která pak bude spuštěna kompilátorem, který vytvoří dva soubory: bytecode a binární rozhraní aplikace (ABI). Bytecode je to, co bude ve skutečnosti přiváděno do EVM a ABI je vrstva mezi bytecode a běžným kódem JavaScriptu, která umožňuje vytváření uživatelského rozhraní (UI).

Výběr IDE & verze Solidity

Než začneme, potřebujeme správné integrované vývojové prostředí (IDE). Jinými slovy potřebujeme pohodlný terminál s nezbytnými nástroji pro zápis našeho kódu. Pro účely tohoto tutoriálu vybereme Remix, IDE vytvořené nadací Ethereum, které umožňuje psaní, testování, ladění, spouštění inteligentních smluv a mnoho dalších. Můžete jej použít buď přímo v prohlížeči, nebo si ho můžete stáhnout lokálně, pokud chcete.

Jakmile spustíte Remix, zobrazí se vám editor kódu uprostřed, správce souborů vlevo a kompilátor vpravo.

Okno Počáteční remixObrázek Utoday

Bude tam nějaký předem napsaný kód – to nebudeme potřebovat. Chcete-li vytvořit vůbec první inteligentní kontrakt, stiskněte ikonu malého plus v levém horním rohu terminálu a pojmenujte jej.

Vytváření nového projektu v RemixuObrázek Utoday

Protože nyní máme dokument blank.sol, měli bychom určit verzi Solidity, kterou kompilátor spustí. V době tohoto kurzu je nejnovější verze 0.5.7. Pokud si nejste jisti, kterou verzi použít, můžete určit rozsah verzí.

2 typy zadání verze SolidityObrázek Utoday

Na závěr pojďme pojmenovat naši inteligentní smlouvu a za ní bude uvedena závorka.

Chytré pojmenování smlouvyObrázek Utoday

Psaní vaší první chytré smlouvy

Jakmile máme plátno připravené, je čas definovat základní stavební bloky – proměnné. Zatímco zkušení softwaroví inženýři nebudou mít s porozuměním tomuto konceptu žádné problémy, krátce jej představíme začátečníkům. Proměnné jsou zástupné symboly pro bloky informací, na které později odkazuje program, který je spouští.

Vytvořme několik proměnných: řetězec (sled symbolů) a celé číslo (číslo). V případě Etherea jsou proměnné uloženy v blockchainu spolu se zbytkem částí kontraktů a lze k nim tedy přistupovat a aktualizovat je odkudkoli. Další klíčovou charakteristikou proměnných Solidity je, že je můžete označit jako soukromé tak, že vedle proměnných napíšete „private“. Nakonec pro celá čísla má Solidity dva typy: podepsané (mohou být kladné & negativní) a nepodepsané (může být pouze pozitivní). Chcete-li určit nepodepsanou proměnnou, měli bychom před ni uvést pouze „u“.

Soukromý řetězec a celé čísloObrázek Utoday

Jakmile máme proměnnou „name“, musíme napsat metody jejího nastavení a získání. Vypadá to jako funkce JS. Pamatujte, že Solidity je staticky napsáno, takže musíme definovat typy proměnných. Jakákoli hodnota, kterou vložíme do „setName“, bude definovat řetězec „name“. Pro getru použijeme ‚getName ‘a určíme, jakou proměnnou očekáváme. Nyní je čas udělat totéž pro proměnnou „age“. Metoda je konstruována podobně jako ‚getName ‘.

Nastavovatelé a příjemci jména / věkuObrázek Utoday

Pojďme otestovat náš malý kousek kódu. V kompilátoru přejděte na kartu „Spustit“ a pod názvem vaší smlouvy stiskněte „Nasadit“. Na samém konci kompilátoru nyní uvidíte sekci „Nasazené smlouvy“, která má k dispozici naše metody. Abychom mohli předat jméno hodnotě „newName“, musíme se ujistit, že náš řetězec je napsán v JSON, jinak „getName“ nic nevrátí. Pro „setAge“ stačí uvést svůj věk bez uvozovek. Jak vidíte, nyní můžeme prostřednictvím naší chytré smlouvy nastavovat a přijímat proměnné „name“ a „age“.

Kompilátor se jménem a věkemObrázek Utoday

Definování Wei a plynu

Jednou z nejpozoruhodnějších vlastností inteligentních kontrastů je, že k jejich nasazení do sítě Ethereum budete muset zahájit transakci, která stojí určitou částku peněz, která se vyplácí v Etheru. Je důležité pochopit, jak jsou poplatky v systému využívány, protože budou odečteny při každé interakci s EVM.

Co je Wei?

Předpokládejme, že při čtení této příručky jste bitcoiny použili alespoň jednou. Pravděpodobně jste provedli malou transakci, která byla mnohem menší než 1 BTC. V takovém případě jste použili satoshi, což jsou něco jako haléře za dolar. Wei je jako satoshi – je to nejmenší část 1 éteru. Pokud o tom přemýšlíme programově, je to nejnižší celé číslo bez znaménka v síti. Při interakci se sítí se většinou setkáte s Gwei, který odkazuje na Gigawei a odpovídá 1 miliardě Wei.

Co je to plyn?

Plyn je podstatnou součástí mechanismu inteligentního provádění smluv. Má dvě hodnoty pro každou transakci: spotřebovaný plyn a jeho cena. Za zmínku stojí, že tyto hodnoty definuje uživatel iniciující transakci. Pokud však nastavená hodnota plynu nebude stačit na zpracování konkrétní operace, bude plyn spotřebován, ale transakce se nezdaří. Kromě toho, pokud bude cena za plyn v danou dobu pro síť nastavena příliš nízko, transakce nebudou uzly zpracovány, což nakonec způsobí její neúspěch. Existuje několik služeb ke kontrole optimálních hodnot pro vaše transakce, jednou z nich je ethgasstation.info. Abychom lépe porozuměli Gasu a proč stojí nějaké peníze, kódujme si některé z nich sami.

Vraťte se do okna Remix a vytvořte nový soubor. V našem příkladu jej budeme nazývat „Plyn“ a vytvoříme smlouvu se stejným názvem. Mějte na paměti, že čím více dat budeme potřebovat k uložení na blockchainu, tím více plynu budeme potřebovat. Jak již bylo řečeno, pro účely tohoto tutoriálu vytvoříme levnou smlouvu; čím více k tomu přidáte, tím vyšší bude poplatek.

K dispozici bude funkce, která vrátí celé číslo, které je součtem dvou vstupů. Aby to bylo co nejlehčí, specifikujeme, že naše smlouva nebude na blockchainu nic ukládat, a za to dáme vedle funkce ‚čistý ‘.

Levná smlouvaObrázek Utoday

Nyní jej můžete nasadit do kompilátoru a zadat libovolná dvě čísla, abyste získali celé číslo „c“. Chcete-li zkontrolovat cenu naší transakce, měli bychom se podívat na terminál umístěný pod částí kódu. Existují transakční náklady a náklady na provedení. První odkazuje na to, kolik dat má transakce. Druhý odkazuje na to, kolik energie EVM vyžadovala transakce.

Cena levné smlouvyObrázek Utoday

Jedná se o extrémně základní transakci, která pro síť nestojí téměř nic. Při psaní smysluplných inteligentních smluv přidáte další podrobnosti, které zvýší jejich váhu a tím i transakční poplatky.

Vytváření & nasazení vlastního tokenu ERC20

Podívejme se na to, většina vývojářů blockchainu, kteří právě začínají, touží hrát ve velkém a vytvářet si vlastní blockchainy a tokeny. I když se jedná o extrémně obtížné téma, které přilákalo některé z nejlepších softwarových inženýrů z jiných oblastí, budování základního tokenu ERC20 není raketová věda.

Nejprve musíme vytvořit další soubor v Remixu a nahrát rozhraní ERC20, což je následující:

Standard ERC20Obrázek Utoday

Funkce „totalSupply“ nám umožňuje zjistit, kolik žetonů máme celkem. Funkce „balanceOf“ se používá k získání množství tokenů na konkrétní adresy. Funkce „přenos“ umožňuje uživatelům provádět transakce mezi sebou. Funkce „transferFrom“, „allowance“ a „schvalovat“ umožňují lidem umožnit jiným uživatelům iniciovat transakce jejich jménem. Události jsou nástroje protokolování hlavní knihy.

Kromě samotného rozhraní budeme pro náš nový token potřebovat samostatný soubor.sol. Zde importujeme rozhraní ERC20 a určíme symbol, název a desetinná místa našeho tokenu.

uToday tokenObrázek Utoday

Než to zkompilujeme, musíme určit omezení.

  • Začněme s celkovou nabídkou – je to konstantní celočíselná proměnná, kterou nastavíme jako soukromou. Celková zásoba našich tokenů bude 1 milion, zapíšeme také funkci pro vrácení této hodnoty.

  • Zadruhé musíme někde náš token uložit. K tomu budeme muset nastínit mapování, které vrátí zůstatek pro jakoukoli zadanou adresu.

  • Za třetí, měla by existovat funkce pro převody tokenů, která bude mít v zásadě adresu příjemce a množství přeneseného tokenu. Tato funkce by měla být také schopna zkontrolovat, zda má odesílatel na svém zůstatku dostatek tokenů, což lze realizovat pomocí jednoduchého příkazu if / then. Kromě toho nastavíme podmínky pro „_value“ způsobem, který blokuje uživatele v odesílání transakcí s 0 tokeny, protože by to zaplavilo síť pouze nevyžádanou poštou.

  • Za čtvrté, měli bychom vytvořit mapování pro zbývající funkce, což je mapování mapování na celé číslo.

  • Poté ve funkcích „schválit“ a „povolit“ specifikujeme několik kontrolorů a dáme podmínky pro „transferFrom“.

  • Nakonec na trhu nebudou k dispozici všechny tokeny. Některé z tokenů jsou obvykle vynechány pro týmy, nadace, poradce a jiné účely. Je proto nezbytné, abychom jasně uvedli, kolik tokenů bude v oběhu. Když jsme vytvářeli tokeny, cirkulující nabídka se rovná naší rovnováze.

Omezení tokenu uTodayObrázek Utoday

Kód je připraven, tak to otestujme. Přejděte na kartu Spustit kompilátoru a nasaďte naši smlouvu o tokenu. Uvidíte, že máme naše tokenová data spolu s celkovou zásobou, zůstatky a povolenkami. Gratulujeme, zasloužíte si poplácání po zádech!

Aby náš token skutečně fungoval v síti, musíme nasadit chytrou smlouvu (všimněte si, že se to liší od nasazení pro testování v Remixu). V rámci tohoto tutoriálu budeme používat Remix a Metamask, ale existují i ​​jiné způsoby, jak toho dosáhnout. Metamask je jednoduchý, ale efektivní program peněženky Ethereum s pěkným uživatelským rozhraním, které se integruje jako rozšíření některých z nejpopulárnějších prohlížečů. V našem případě použijeme Opera. Nejprve přejděte na metamask.io a stáhněte si rozšíření. Po dokončení se v pravém horním rohu prohlížeče zobrazí ikona lišky.

Stahování Metamasku & amp; umístění ikonyObrázek Utoday

Stiskněte ikonu a pokračujte nabízenými pokyny k vytvoření peněženky. Nezapomeňte uložit tajnou frázi! Když máte peněženku, stiskněte ikonu Metamask a změňte síť na „Ropsten“, protože se nechceme potýkat s mainnetem Ethereum.

Změna metamasky na RopstenObrázek Utoday

Posledním krokem je vygenerování nějakého Etheru (bohužel je nebudete moci použít pro žádné skutečné nákupy, ale jsou nezbytné pro testování). Zamiřte do faucet.metamask.io a požádat o 1 ether.

Nyní jste připraveni. Vraťte se do okna Remix a změňte prostředí v kompilátoru na „Injected Web3“. Podívejte se také na kartu účtu – vaše adresa by měla být stejná jako adresa, kterou jste vygenerovali pomocí Metamasku. Vyberte inteligentní kontrakt, který chcete nasadit, což je váš tokenový kontrakt, nikoli rozhraní ERC20, a stiskněte příslušné tlačítko. Zobrazí se okno Metamask s transakcí, jejími podrobnostmi a možnostmi interakce s ní. Odešlete transakci a náš token ožije.

Vyskakovací okno metamaskObrázek Utoday

Nyní můžete hrát se všemi funkcemi, které jsme zadali dříve. Podívejme se na naši smlouvu z jiné strany, abychom ověřili, že funguje správně. Stejně jako jakýkoli jiný blockchain má Ethereum několik průzkumníků bloků, které slouží k základnímu účelu monitorování dění v síti. V našem případě se budeme držet etherscan, i když existuje několik dalších skvělých alternativ. Všimněte si, že pokud právě přejdete na etherscan, uvidíte hlavní síť. Protože potřebujeme vidět síť Ropsten, budete muset před adresu webu uvést „ropsten“. Vyhledejte svou adresu a uvidíte dvě transakce – jedna je pro bezplatný ether, který jste dostali, a další pro nasazení smlouvy.

Adresa uživatele v EtherscanObrázek Utoday

Chcete-li zjistit adresu své smlouvy, stiskněte TxHash a přejděte do pole „Komu“. Zde můžete zkontrolovat transakce, kód a události vaší chytré smlouvy. V tomto okamžiku musíme ověřit a zveřejnit naši smlouvu. Přejděte do části „Kód“ a klikněte na odkaz „Ověřit a publikovat“. Zde budete muset znovu zadat název svého tokenu, verzi kompilátoru (v našem případě nejnovější verze Solidity, kterou jsme použili, byla 0.5.7, takže se budeme držet související verze kompilátoru). Nyní byste měli zkopírovat kód inteligentního kontraktu tokenu spolu s kódem rozhraní ERC20 z vašeho okna Remix do etherscan a stisknout „Ověřit a publikovat“ v dolní části obrazovky.

Ověření smlouvy smartObrázek Utoday

Je čas vrátit se na adresu vaší smlouvy. Kód na kartě „Kód“ bude nyní ověřen. Kromě toho nyní budete mít další dvě karty: „Číst smlouvu“ & „Napište smlouvu“. V části pro čtení můžeme zkontrolovat funkčnost našeho tokenu. Do pole „balanceOf“ zadejte svoji adresu (nikoli smlouvu), abyste zjistili, kolik máte tokenů; mělo by to ukázat 1 milion, který jsme pevně zakódovali jako celkovou zásobu a dali ji do oběhu do naší peněženky. To znamená, že náš token nyní správně funguje na testnet.

Příjem zůstatkuObrázek Utoday

souhrn

Pokud hledáte kariéru v krypto průmyslu, musíte pochopit, že navzdory relativní jednoduchosti základů má blockchain neuvěřitelnou hloubku. Od roku 2017 se blockchainy významně vyvinuly a jejich případy použití přesahovaly pouhé finanční transakce. S příchodem Etherea se objevila zcela nová vrstva sítí, která hostí různá dApps a blockchainová řešení. Nástrojem této evoluce byla inteligentní smlouva, a pokud chcete, aby vaše zkušenosti byly cennější a byly připraveny na budoucnost, měli byste vědět, jak funguje.

I když můžete inteligentní smlouvy kódovat pomocí jiných jazyků, Solidity je pro tento účel vhodnější. Navíc, pokud se chcete stát vývojářem Ethereum nebo vytvořit token ICO / ERC20 pro svůj projekt, je to vaše volba. Pokud jste měli nějaké zkušenosti s C ++ nebo JavaScriptem, mělo by být kódování na Solidity relativně snadné. Budete však muset pochopit některé rozdíly mezi klientem a serverem a decentralizovanými modely spouštěcího softwaru. Díky Nadaci Ethereum a některým organizacím třetích stran je vývojářům nabídnuta sada pohodlných nástrojů, jako jsou Remix a Etherscan, ke kódování a nasazování inteligentních smluv.

Doufáme, že vám náš výukový program pomohl zvládnout většinu konceptů Solidity, abyste mohli zahájit svoji blockchainovou cestu. Nezapomeňte, že vždy si můžete prohlédnout nejnovější dokumentaci o Solidity. Přejeme vám hodně štěstí a rádi některé z vašich dApps někdy využijeme!