Blockchainy používají tokeny jako základní prostředek přenosu hodnoty. Mohou být nativní směnnou jednotkou řetězce, mohou být směnnou jednotkou aplikace a lze je dokonce použít jako měnu v herním světě. Tokeny podporují robustní aktivitu DeFi na Sui a dalších blockchainech.

Ethereum používá pro tokeny standard ERC-20. Tyto tokeny, které mohou vývojáři vytvořit pro různé účely, jsou reprezentovány jako chytré smlouvy na Ethereu. Na Sui používají tokeny balíček Coin. Stejně jako tokeny ERC-20 mohou vývojáři stavět mince na Sui pro širokou škálu použití. Zásadně odlišný datový model Sui však znamená, že každý coin je vlastněn adresou v síti.

Procházení procesů vytváření tokenů ERC-20 na Ethereum a Coins na Sui ukazuje rozdíly mezi těmito dvěma standardy. Vývojáři Etherea by také mohli být překvapeni flexibilitou balíčku Coin na Sui.

Nasazení tokenu ERC-20

V tomto příkladu použijeme Remix IDE k demonstraci kroků potřebných k vytvoření tokenu pomocí standardu ERC-20.

1. Začněte otevřením online Remix IDE ve vašem prohlížeči.

2. Vyberte šablonu projektu ERC-20 z OpenZeppelin.

3. V Průzkumníku souborů v levém podokně vyberte v adresáři smluv Token.sol a načtěte jeho závislosti.

4. Přidejte a

_tak jako

funkce na výchozí konstruktor k určení počtu tokenů, které se mají vytvořit. Následující ukázka kódu ukazuje jednu metodu.

kontrakt MyToken je ERC-20, ERC-20Permit {     constructor() ERC-20("MyToken", "MTK") ERC-20Permit("MyToken") {_mint(msg.sender, 12);} }

 5. Klepněte na ikonu Kompilace v rychlé nabídce.

6. Otevřete plugin Deploy & Run Transactions, vyberte prostředí Remix VM (Cancun) a klikněte na tlačítko Deploy.

Podle výše uvedených kroků zkopíruje ERC-20 závislosti do vašeho projektu. Vaše smlouva se spolu s těmito zkopírovanými závislostmi zkompiluje do bytekódu EVM a nasadí se do virtuálního blockchainu. Vaše transakce byla vytěžena a smlouva představující vaše tokeny ERC-20 je nyní aktivní ve virtuálním blockchainu společnosti Remix.

Jak jsou zastoupeny tokeny ERC-20

Chcete-li najít své tokeny, přejděte do smluv o závislostech na Remixu (složka .deps) a přejděte do souboru ERC-20.sol. První řádek v této abstraktní smlouvě je:

mapování(adresa účtu => uint256) soukromé _zůstatky;

Toto mapování je místo, kde jsou uloženy všechny zůstatky pro všechny uživatele. Chcete-li získat zůstatek uživatele, můžete zavolat do smlouvy

zůstatek

funkce s adresou uživatele. Dotazuje se na toto mapování a načte hodnotu. Při zobrazování vašich prostředků provede vaše peněženka MetaMask několik balanceOf() volání na různé smlouvy a zobrazí výsledky.

Jinými slovy, všechny přenosy, mincovny, vypalování, stejně jako interakce protokolů DeFi, nakonec aktualizují hodnoty uvnitř tohoto mapování.

Nasazení mince

Na Sui nepředstavují nasazené smlouvy nové tokeny. Rámec Sui k poskytování této funkce spíše používá balíček Coin. I když jde o zjednodušenou analogii, pod pojmem smlouva si můžete představit jeden balíček. Odhaluje funkce, které mohou brát objekty a vracet jiné objekty.

Podle dokumentace k instalaci Sui nastavte své kódovací prostředí. Případně můžete použít výše uvedené Remix IDE k zápisu kódu Move na Sui instalací zásuvného modulu WELLDONE Code.

Následující příklad kódu Move importuje modul Coin a využívá jeho

vytvořit_měnu

funkce pro inicializaci mince.

use sui::coin::{Self, TreasuryCap}; public struct MY_COIN has drop {} fun init(witness: MY_COIN, ctx: &mut TxContext) {         let (treasury, metadata) = coin::create_currency(witness, 6, b"MY_COIN", b"", b"", možnost ::none(), ctx);         transfer::public_freeze_object(metadata);         transfer::public_transfer(treasury, ctx.sender())     }

Když zavoláte

create_currency()

, Sui vrátí objekty TreasuryCap<T> a CoinMetadata<T> pro vaši měnu, kde T je typ vaší měny (v předchozím příkladu MY_COIN). 

Adresa vaší peněženky tyto předměty skutečně obsahuje. Existují pouze ve vaší peněžence a ne nikde jinde, na rozdíl od metody ERC-20, která používá mapování ke sledování vlastnictví.

TreasuryCap

, zkratka pro "treasury capability", je klíč potřebný k ražbě nových mincí. TreasuryCap může být převeden na jinou adresu důvěryhodné třetí strany nebo může být zničen. Zničení TreasuryCap je podobné jako vzdání se vlastnictví ve smlouvě ERC-20. 

Jak jsou reprezentovány předměty mincí

Chcete-li razit nové zásoby,

TreasuryCap

držitel zavolá funkci ražení mincí. Funkce razí nebo vytváří objekt Coin<T>, který představuje částku, kterou funkce razí. Nachází se ve vaší peněžence (za předpokladu, že vaše adresa je uvedena jako příjemce), v doslovném smyslu. Pokud držitel TreasuryCap znovu zavolá mint(), proces vytvoří další objekt Coin<T> a převede tuto minci také do vaší peněženky. Můžete mít více mincí pro stejnou měnu a váš celkový zůstatek v této měně je součtem těchto mincí.

Funkce ERC-20 vs Coin

Ačkoli Ethereum a Sui nabízejí podobné akce, jako je převod a utrácení, pokud jde o tokeny, základní struktury každého blockchainu vytvářejí zásadní rozdíly v tom, jak tyto akce fungují.

Ražba a pálení

Oprávněný uživatel může razit nové tokeny na Ethereum zavoláním na

tak jako

fungovat ve smlouvě tohoto tokenu. Tím se aktualizuje mapování _balances a zvyšuje se celková nabídka. Každý uživatel může volat funkci vypalování, ale smí spálit pouze svůj vlastní zůstatek. 

Podobně na Sui může oprávněný uživatel zavolat na

tak jako

funkce pro ražbu nových mincí, jak je popsáno výše. Rozdíl je v tom, že váš zůstatek na Sui není reprezentován mapováním ve sdíleném stavu, ale patří mezi samotné předměty ve vaší peněžence. V tomto smyslu je ERC-20 jako bankomatová karta, která vám umožňuje digitálně manipulovat s hotovostí v bankovním trezoru, a Sui je jako fyzická peněženka, kde váš zůstatek je vlastní hotovosti, kterou máte po ruce.

Sui podporuje rozdělování a spojování mincí, které jsou stejného typu. Pokud tedy máte více objektů v mincích představujících vaši měnu, můžete je sloučit do jednoho objektu. Můžete také vzít jeden objekt mince a rozdělit ho na více objektů stejného typu. 

Přenášení

Při převodu tokenů na Ethereum zavoláte

převod

funkce tokenové smlouvy. Tato funkce ověří, že máte zůstatek, který převádíte, poté odečte váš zůstatek a zvýší zůstatek adresy, na kterou jste převáděli, a funguje podobně jako fyzická kniha.

Na Sui, protože doslova vlastníte předměty Coin, jednoduše pošlete předmět Coin na jinou adresu. Neexistuje žádné centrální místo, které by muselo být informováno o transakci, aby bylo zajištěno, že zůstatky budou aktuální. Akce odeslání vlastněného objektu z jedné peněženky do druhé neovlivňuje zbytek blockchainu. 

Odeslání objektu tímto způsobem se nazývá transakce jednoho vlastníka a nevyžaduje souhlas blockchainu. Sui jako taková provádí transakce s jedním vlastníkem paralelně a velmi rychle dosáhne finality. Pouze sdílené objekty na Sui vyžadují konsensus.

Výdaje

Uživatelé Etherea znají koncept Approve. Kdykoli budete komunikovat s jakýmkoli protokolem DeFi, musíte tento protokol nejprve schválit, abyste mohli utratit své tokeny vaším jménem. Když například swapujete na Uniswap, schválený směrovač zavolá funkci přenosu v tokenové smlouvě. Tokenová smlouva pak potvrzuje, že volající je buď vlastníkem nebo schválenou adresou.

Sui tuto konstrukci nemá. Pokud vlastníte předmět, jste jedinou stranou, která jej může převést. Neexistuje žádný způsob, jak by jiný subjekt mohl tento předmět z vaší peněženky vybrat. Místo toho protokoly na Sui berou jako vstupy objekty Coin. Chcete-li například volat funkci swap na decentralizované burze, musíte předat svůj objekt Coin do funkce swap, čímž předáte vlastnictví objektu protokolu. Nyní, když protokol vlastní tento objekt Coin, může jej vyměnit za jiný objekt Coin požadovaného typu a přenést jej do vaší peněženky.

Pochopení Sui

Vývojáři se zkušenostmi s Ethereem a dalšími blockchainy, kteří mají zájem stavět na Sui, najdou mnoho podobných paradigmat. Například žetony slouží mnoha stejným praktickým účelům. Nicméně vývojáři, kteří si neudělají čas na to, aby se naučili základní rozdíly popsané výše, budou podraženi.

Vývojáři zkušení v tradičních objektově orientovaných programovacích prostředích najdou podobné struktury v Sui. Je intuitivní myslet na předmět jako na věc, kterou můžete uložit do peněženky nebo s ní manipulovat pomocí kódu. 

Pokud se chcete dozvědět více o vytváření tokenů na Sui, podívejte se na dokumentaci.