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

Amióta az Ethereum 2015 közepén jelenlétével megtisztelte a rejtjelteret, Vitalik Buterin kanadai-orosz programozó forradalmi találmánya számos új decentralizált alkalmazást (dApps) adott életre. A rengeteg dApps építésével együtt az Ethereum sikere elsősorban az intelligens szerződések megvalósításának tudható be.

Érdekes módon az intelligens szerződések feltalálása 1996-ig nyúlik vissza. Nick Szabo informatikus kidolgozta az „intelligens szerződések” kifejezést, és a következőképpen magyarázza őket:

„Ezeket az új szerződéseket„ okosnak ”nevezem, mert sokkal működőképesebbek, mint élettelen papír alapú őseik. A mesterséges intelligencia használata nem feltételezett. Az intelligens szerződés az ígéretek összessége, amelyet digitális formában határoznak meg, beleértve azokat a protokollokat is, amelyeken belül a felek teljesítik ezeket az ígéreteket ”- Nick Szabo, 1996

Munkája később számos más kutatót és tudóst inspirált, köztük Vitalikot, aki létrehozta az Ethereumot.

Alapinformáció

Mielőtt tovább mélyednénk az útmutatóban, fontos megértenünk két fontos fogalmat.

Az első dolog, amit meg kell értenünk, az az Ethereum Virtual Machine ( EVM ). Egyetlen célja, hogy futási környezetként működjön az Ethereumon alapuló intelligens szerződéseknél. Gondoljon arra, mint egy globális szuper számítógépre, amely az összes intelligens szerződést futtatja. Ahogy a neve is mutatja, az EVM virtuális és nem fizikai gép. Az EVM-ről itt olvashat bővebben.

A második koncepció, amelyet meg kell értenünk, az, hogy mi a gáz . Az EVM-ben a gáz olyan mértékegység, amelyet intelligens szerződéssel minden tranzakcióhoz díjat rendelnek. Az EVM minden egyes számításához gáz szükséges. Minél összetettebb és unalmasabb, annál több gázra van szükség az intelligens szerződés teljesítéséhez.

Minden tranzakció meghatározza azt a gázárat, amelyet éterben hajlandó fizetni minden egyes gázegységért, így a piac eldöntheti az éter ára és a számítási műveletek (gázban mérve) költsége közötti kapcsolatot. Ez a kettő, az összes felhasznált gáz és a fizetett gázár szorzatának kombinációja eredményezi a tranzakció által fizetett teljes díjat.

Fee for transaction = Total gas used * gas price;

A gázzal kapcsolatban itt olvashat bővebben.

Most, hogy már rendelkezik alapvető ismeretekkel arról, hogy mi az intelligens szerződés, és hogyan működik az intelligens szerződés, egyenesen kitérhetünk arra, hogyan fogjuk megkötni a saját okos szerződésünket!

Felállítása

Ehhez egy eszközt fogunk használni: Pragma. Könnyen használható platform intelligens szerződések létrehozására és bevezetésére. Iratkozzon fel ide, és menjen a szerkesztőhöz:

Jelentkezzen be a Metamaskba. Ha még nem telepítette a MetaMask alkalmazást, itt kezdheti.

Váltson a Kovan teszthálózatra mind a Pragmában, mind a MetaMaskban.

Csak azért, hogy rövid áttekintést adjon a tesztnetekről, nézze meg ezt a cikket.

Az Ethereum mainnet a hivatalos Ethereum hálózat. Biztonságosabb, és valódi pénzértékű étert használ.

A teszthálók olyan játszótér Ethereum hálózatok, amelyekben az éter megállapodott abban, hogy nincs pénzbeli értéke. A fejlesztők ezeket a játszótereket használják az alkalmazások teszteléséhez, mielőtt a felhasználók számára a mainnetbe telepítenék őket.

E hálózatok közötti váltáshoz kattintson a hálózat nevére a MetaMask ikon mellett, és válassza ki a hálózatot. Ehhez az oktatóanyaghoz válassza a Kovan lehetőséget .

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

A következő szerződés a kriptovaluta legegyszerűbb formáját valósítja meg. Lehetséges érmék előállítása légből, de erre csak az a személy képes, aki a szerződést létrehozta (triviális egy másik kibocsátási rend megvalósítása). Továbbá bárki küldhet érméket egymásnak anélkül, hogy regisztrálnia kellene felhasználónevét és jelszavát. Csak Ethereum kulcspárra van szüksége.

Ez a kód alapvetően lehetővé teszi a tokenek mentálását és elküldését más számlákra.

Menjünk végig soronként:

pragma solidity ^0.4.21;

Ez azt jelzi, hogy a forráskód a Solidity 0.4.21-es verziójához vagy bármi újabbhoz van írva, amely nem bontja a funkcionalitást. Ennek célja annak biztosítása, hogy a kód ne viselkedjen másként az új fordítói verziókkal.

contract yourToken

Minden, ami a yourToken-hez kapcsolódik, benne van ebben a szerződésben. Lényegében a szilárd szerződés egy funkciók és állapot (kód és adatok) összegyűjtése az Ethereum blokklánc egyik címén.

address public minter;

Ez a pénzverő címe. A „public” kulcsszó ezeket a változókat kívülről olvashatóvá teszi.

event Sent(address from, address to, uint amount);

Az események lehetővé teszik a könnyű ügyfelek számára, hogy hatékonyan reagáljanak a változásokra.

function yourToken() public {
minter = msg.sender;
}

Állítsuk be az Ethereum címét a szerződés megkötőjeként. A veréshez a MetaMaskon keresztül kell hozzáférnie a szerződéshez. A szerződés bevezetése után ezt még egyszer átéljük.

function mint(address receiver, uint amount) public {
if(msg.sender != minter) return;
balances[receiver]+=amount;
}

Ez a funkció lehetővé teszi a kívánt érmék mennyiségének verését. Annyi tokent verhet, amennyit csak akar. Az if feltétel azt mondja a rendszernek, hogy hagyja abba a végrehajtást, ha nem Ön a pénzverő, amelyet a yourToken függvény állít be.

Ha valójában te vagy a pénzverő, akkor ez lehetővé teszi a tokenek verését.

function send(address receiver, uint amount) public {
if(balances[msg.sender] < amount) return;
balances[msg.sender]-=amount;
balances[receiver]+=amount;
emit Sent(msg.sender, receiver, amount);
}

Ez egy olyan funkció, amely lehetővé teszi az egyik cím számára a tokenek elküldését egy másik címre. Két paraméterre van szükség: vevő és összeg. Csökkenti a feladó címéből származó összeget, és ugyanazt az összeget adja a címzett címéhez. Az Elküldött esemény, amelyet korábban deklaráltunk, most használják az átadásra. Jelenleg a küldőt msg.sender néven tartjuk, ami a pénzverő, mivel nem akarjuk bonyolítani a szerződést.

Ez az. A szerződése készen áll, ezért állítsuk össze.

Az intelligens szerződés összeállítása és bevezetése

A szerződés összeállítása után telepítsük a blokkláncra. Mint korábban említettük, a szerződés telepítéséhez a Kovan testnet szolgáltatást fogjuk használni.

Ellenőrizze, hogy az intelligens szerződés telepítve van-e.

Az oktatóanyaghoz telepített szerződés esetében ez a tranzakció. A Pragmában is láthatja a szerződései alapján.

Kapcsolatba lépni az intelligens szerződéssel Pragmában

Tessék, itt van. Az első okos szerződésed, amelyet blokkláncra telepítettek. :)

Sok új fogalmat vezettek be pár elképesztően hasznos eszköz mellett. Lehet, hogy egy kicsit elsöprő, és ez így van rendjén! Csak próbáld meg körbejárni a koncepciókat, majd fuss vele.

Létrehozott már egyszerű, de érdekes okos szerződéseket? Tedd őket a megjegyzésekbe, és hivatkozásképpen hozzáadom őket a bejegyzéshez.

Van kérdése? Adja meg őket a megjegyzésekben, vagy csatlakozzon távirati csoportunkhoz, és beszéljen velünk közvetlenül.