Token není nová technologie. Je to záznam v jednom kontraktu, který říká, kolik čeho komu patří. Celý standard se vejde na stránku a to je zároveň to nejdůležitější, co je potřeba o tokenech vědět.
Co token doopravdy je
Kontrakt s tabulkou:
adresa zůstatek
0x1a2b... 1 500
0x9f8e... 320
0x44cc... 120 000
A funkce preved(komu, kolik), která přesune číslo z jednoho řádku na druhý. To je celý
token. Standard ERC-20 popisuje jen jména těch funkcí, aby s tokenem uměly pracovat peněženky
a burzy.
Klíčové důsledky:
- Token neexistuje v blockchainu, existuje v kontraktu. Síť o něm neví nic, jen provádí kód, který někdo nasadil.
- Vytvořit token stojí pár minut a pár dolarů. Nedává to samo o sobě žádnou záruku, hodnotu ani smysl.
- Kdo napsal kontrakt, určil pravidla. Může tam být funkce na doražení dalších tokenů, na zmrazení adresy nebo na zákaz prodeje. Standard to nezakazuje.
Ten třetí bod je nejdůležitější praktická věc celé kapitoly: standard není záruka. Kontrakt může mít správná jména funkcí a přitom uvnitř dělat cokoli.
NFT je totéž s jinou tabulkou
Nezaměnitelný token je tentýž nápad, jen se místo množství eviduje vlastník konkrétního čísla:
id vlastník
1 0x1a2b...
2 0x9f8e...
3 0x1a2b...
Samotný obrázek v tom kontraktu není, protože ukládání dat je drahé. Uložený je obvykle jen odkaz. A to je zdroj většiny nedorozumění: vlastníš záznam v tabulce, který ukazuje na adresu, kde něco je.
Pokud ten odkaz vede na běžný server, může se obsah kdykoli změnit nebo zmizet, a kontrakt to nepozná. Lepší varianta odkazuje na obsah pomocí jeho hashe, takže se aspoň pozná záměna. I tak ale platí, že soubor musí někdo hostit.
Co token nezaručuje
| Lidé očekávají | Skutečnost |
|---|---|
| Že jich je omezené množství | jen pokud to kontrakt vynucuje, ověř si to |
| Že je token krytý | krytí je slib mimo blockchain, kontrakt ho nevynutí |
| Že vlastním obrázek | vlastníš záznam odkazující na obrázek |
| Že s tím jdou spojená práva | práva vznikají smlouvou, ne zápisem v tabulce |
| Že to nejde zmrazit | mnoho tokenů má funkci na zmrazení adres |
Cvičení
- Jak zjistíš, jestli může autor tokenu vytvořit další kusy?
- NFT odkazuje na obrázek na běžném serveru. Vyjmenuj dva způsoby, jak se dá takové NFT znehodnotit bez zásahu do blockchainu.
- Proč samotné dodržení standardu nic negarantuje?
Náčrt řešení: rozbal, až si cvičení zkusíš sám
- Přečteš si zdrojový kód kontraktu a hledáš funkci, která zvyšuje celkovou zásobu, a to, kdo ji smí volat. Prakticky: ověř, že kontrakt je zveřejněný a odpovídá nasazenému bytecode, a hledej funkce typu ražby a jejich omezení. Pozor i na proxy vzor, protože pak může být vyměněna celá logika. Když kód zveřejněný není, nedá se to zjistit vůbec, a to je samo o sobě odpověď.
- Server se vypne, nebo se obsah na stejné adrese vymění. V obou případech kontrakt dál tvrdí, že vlastníš token číslo tři, jen za tím odkazem není nic nebo je tam něco jiného. Blockchain o obsahu nic neví a nemá jak to zjistit. Odolnější řešení odkazuje na obsah pomocí jeho hashe, což aspoň odhalí záměnu, ale ani to nezaručí, že soubor bude někdo dál hostit.
- Protože standard určuje jen jména a tvar funkcí, ne to, co uvnitř dělají. Kontrakt může mít předepsanou funkci pro převod a přitom v ní mít podmínku, že převod se povolí jen vybraným adresám, nebo si při každém převodu strhávat část. Peněženky a burzy se standardem řídí proto, aby uměly s tokenem pracovat, ne proto, že by tím něco ověřily.
Shrnutí
- Token je tabulka v jednom kontraktu plus funkce na přesun čísla mezi řádky.
- Standard sjednocuje jen jména funkcí, aby s tokenem uměly pracovat peněženky.
- Standard není záruka: uvnitř může být ražba dalších kusů i zmrazení adres.
- NFT eviduje vlastníka konkrétního čísla; samotný obsah leží mimo blockchain.
- Vytvoření tokenu je triviální a samo o sobě neznamená vůbec nic.
Co je token z technického hlediska?
Záznam v tabulce jednoho konkrétního kontraktu, který přiřazuje adresám zůstatky, plus funkce na přesun mezi řádky. Blockchain o tokenu sám nic neví, jen provádí kód, který někdo nasadil. Standard popisuje jen jména funkcí, aby s tokenem uměly pracovat peněženky a burzy.
Proč dodržení standardu neznamená, že je token v pořádku?
Protože standard určuje tvar rozhraní, ne chování uvnitř. Kontrakt může mít správně pojmenovanou funkci pro převod a přitom v ní omezovat, kdo smí prodávat, strhávat část částky nebo umožnit autorovi razit další kusy. Jistotu dá jen přečtení zdrojového kódu a ověření, že odpovídá nasazenému.
Co přesně vlastní držitel NFT s obrázkem?
Záznam v kontraktu, který k danému číslu tokenu přiřazuje jeho adresu, a v tom záznamu je odkaz na místo, kde obrázek leží. Samotný soubor v blockchainu není, protože ukládání dat je drahé. Pokud odkaz vede na běžný server, může obsah zmizet nebo se změnit a kontrakt to nepozná.
