ERC-223: ERC-20-as tokenek kis extrával #ethereumtudas
ERC-223: ERC-20-as tokenek kis extrával #ethereumtudas
Az Ethereum hálózat egyik legvonzóbb ígérete, hogy az okosszerződéseknek hála, saját kriptovalutát hozhat létre rajta bárki. Bár az ERC-20-as szabványnak köszönhetően ez valóban igaz, az így létrehozott tokenek nem egyenrangú társai a hálózat natív valutájának, az Ethernek.
Azon túl, hogy nyilván a tranzakciós költségek csak ETH-ban fizethetőek, további előnyöket is élvez az Ether az általunk létrehozott kriptotokenekkel szemben. Az egyik ilyen előny, hogy egy okosszerződésben könnyen kezelhető, ha valaki ETH-t fizet a szerződésnek, míg kriptotokenek esetén ez csak nehezen megoldható. Arról van szó, hogy pl. egy ICO contract esetén ha ETH-t kívánunk fogadni, az átutalt mennyiség a tranzakció paramétereiből kiolvasható. Ugyanakkor ha ERC-20-as tokent utalunk egy contract-nak, arról a contract semmilyen módon nem értesül. Ezért aztán ha pl. olyan ICO-t szeretnénk szervezni, ahol ETH helyett valamilyen tokent gyűjtünk, akkor ezt csak körülményesen lehet megtenni. Ehhez először engedélyeznünk kell, hogy az ICO contract a megadott tokenmennyiséget levonhassa a számlánkról, majd meghívni a contract kijelölt metódusát. A contract így leemelheti a szükséges összeget. Ha a tranzakció sikeresen végbement, az ICO contract biztos lehet benne, hogy a megfelelő mennyiségű token átkerült hozzá. Olyan ez, mint ha a számlákat átutalás helyett csakis csoportos beszedési megbízással fizethetnénk ki.
Az ENVIENTA számára azért fontos ez, mert az ENV token egyik fontos felhasználása, hogy projektek támogathatóak lesznek vele. Ennek formája egyfajta projekt ICO, ahol a projekt ERC-1155 alapú projekt specifikus tokeneket bocsát ki. A tokenek a projekt döntésétől függően megtestesíthetnek kedvezményt, lehetnek utility tokenek, de akár üzletrész is szerezhető így a projektben. Fontos tehát, hogy ezek a projekt specifikus ICO contractok képesek legyenek ENV tokenek fogadására.
Gabriel: A lényeg tehát az, hogy az ENVIENTA projekten belül nem tudnánk megoldani ERC20-al azt, hogy az egyes projekteket ENV tokennel lehessen támogatni, csak ETH-val. De miven van nekünk egy Lacink, aki ismeri az ERC223-as szabványt, így ENV-vel lehet majd megtámogatni mondjuk az okosház szürkevíz rendszer projektjét és abból “részesülni” mint mini befektető.
Az ERC-223-as tokenek 100%-ig kompatibilisek az ERC-20-as szabvánnyal, viszont tartalmaznak egy kiegészítést, amivel kezelhető a fenti probléma. Ha egy ERC-223-as tokent egy contractnak utalunk, akkor a transfer metódus meghívja a fogadó contract tokenFallback metódusát, így a fogadó contract értesülni fog a beérkező tokenekről. Így tehát ugyanolyan egyszerűen utalhatunk ERC-223-as tokeneket pl. ICO contractoknak, mint ha ETH-t utalnánk. A mélyebb megértéshez vessünk egy pillantást a referencia implementációra:
Nekünk innen a transfer(address _to, uint _value) metódus érdekes, mivel ez az ami egy átlagos ERC-20-as walletből történő utalásnál végrehajtódik. A metódus először végez egy ellenőrzést, hogy az utalás felhasználónak megy, vagy contractnak (ezt az ellenőrzést az isContract metódus végzi, és mint a kódban látható, használ némi fekete mágiát az assembly blokkban).
Amennyiben az utalás célja contract, úgy a transferToContract metódus fut le, ami meghívja a cél contract tokenFallback metódusát. Az átutalás csak akkor lesz sikeres, ha ez a metódus sikeresen lefut. Ez két dolog miatt is jó. Egyfelől értesül a contract a tokenek beérkezéséről, másfelől ha a contract nem rendelkezik ilyen fogadó metódussal, akkor nem fut le az utalás. Ez utóbbi azért hasznos, mert így nem tudunk véletlenül olyan contractra tokeneket küldeni, ami nem képes azt fogadni.
Az ERC-223-as szabványnak köszönhetően tehát az ERC-20-as tokenek az ETH-hoz hasonlóan könnyedén utalhatóak contractoknak, így lehetőséget adva token alapú ICO-kra a hagyományos ETH alapú ICO-k helyett.
Kövess minket!
A cikksorozat további részeiben ezekkel az okos szerződésekkel fogunk közelebbről megismerkedni, és megtanuljuk azt is, hogy hogyan készíthetünk ilyeneket mi magunk is.
Hogy mindez tényleg felfogható lehessen a cikksorozatot ketten fogjuk írni. A programozói részekért jómagam Laszlo Fazekas(fejlesztő) felelek majd, azért pedig, hogy tényleg minden érthető legyen Gabriel Varaljay(marketing) “játssza majd a naivat” (tesz fel kérdéseket, magyarázza újra a feldolgozott anyagot).
Épp ezért érdemes feliratkoznod ERRE a medium csatornára, de követheted az ENVIENTA Magyarországot Twitteren, vagy akár csatlakozhatsz a tematikus Facebook csoportunkhoz is.