EOA és szerződésfiók
Az Ethereumon kétféle fiók van – az egyiket egy ember irányítja a kulcsával, a másikat egy program.
A Bitcoinnál minden cím egyforma, és csak egy dolgot tud: egy egyenleget testesít meg. Az Ethereumon viszont kétféle fiók létezik, amelyek alapjaiban eltérnek egymástól a működésükben és a céljukban.
Külső tulajdonú fiók (EOA)
Az a fiók, amely egyszerűen egy egyenleget tart nyilván – vagyis céljában megegyezik a Bitcoin-címekkel –, a külső tulajdonú fiók (externally owned account, röviden EOA). A név azt fejezi ki, hogy a fiók a blokkláncon kívüli entitás tulajdona. Amilyen bonyolultan hangzik, olyan egyszerű: ez az entitás egy ember (vagy emberek egy csoportja, egy cég – a lényeg, hogy végső soron emberekhez tartozik).
Egy EOA:
- egyenleget tart (ethert és tokeneket),
- tranzakciót indíthat – erre csak az EOA képes,
- egy privát kulcs irányítja, amely nélkül nem költhető,
- létrehozása ingyenes, és a blokkláncon kívül, akár offline is megtörténhet.
Szerződésfiók
A fiókok másik fajtája az okosszerződéseket tárolja: ez a szerződésfiók (contract account). Egy szerződésfiók:
- szintén lehet egyenlege,
- de nincs privát kulcsa: helyette a benne tárolt programkód határozza meg, mi történhet az egyenlegével,
- magától soha nem cselekszik: csak akkor fut le a kódja, ha egy EOA (vagy egy másik szerződés) meghívja,
- létrehozása díjba kerül (a feltöltött kód bonyolultságától függő gas), és a blokkláncon, egy tranzakcióval születik.
Bár valaki létrehozta, egy szerződésfiókot valójában senki sem birtokol: miután a blokkláncra került, önálló életet él, és bárki használhatja a benne rögzített szabályok szerint. (Hogy a szabályok adnak-e különleges jogokat a létrehozónak – például tokenek befagyasztására –, az a kódtól függ. Erről a stablecoinoknál lesz szó.)
Összehasonlítás
| EOA | Szerződésfiók | |
|---|---|---|
| Fő cél | ether és tokenek tartása, küldése | egy program (okosszerződés) tárolása |
| Privát kulcs | van | nincs |
| Mi irányítja | a privát kulcs birtokosa | a szerződés kódja |
| Tranzakciót indíthat? | igen | nem, csak meghívásra reagál |
| Létrehozás költsége | ingyenes | díjköteles (gas) |
| Hol jön létre | a láncon kívül, bárhol | a láncon, egy tranzakcióval |
| Fő kockázat | a kulcs elvesztése, ellopása | hibás kód |
Hogyan lehet megkülönböztetni?
A két fióktípus formailag teljesen egyforma: mindkettő 0x-szel kezdődik, és 40 hexadecimális karakter követi. Ránézésre tehát nem dönthető el, hogy egy cím egy emberé vagy egy programé. A blokkböngésző viszont ezt mindig jelzi (az EOA-nál általában Address, a szerződésnél Contract felirattal), és a szerződésfióknál megmutatja a kódot és a létrehozó címet is.
Megjegyzés: ha egy nyomozás során privát kulcsot találunk egy Ethereum-címhez, az biztosan egy EOA-hoz tartozik, hiszen szerződésfióknak nincs kulcsa. Fordítva: ha egy gyanúsított címről kiderül, hogy szerződésfiók, akkor nem a kulcsát kell keresni, hanem azt, ki és milyen jogokkal irányíthatja a szerződést – ez a szerződés kódjából, és a létrehozó címből derülhet ki.
Extra tudásOkos tárcák
Az utóbbi években egyre terjednek az olyan tárcák, amelyek technikailag szerződésfiókok (smart contract wallet vagy account abstraction). Ezeknél a kód határozza meg, ki költhet: például két eszköz együttes jóváhagyása kell, vagy elveszett kulcs esetén megbízható ismerősök segítségével vissza lehet állítani a hozzáférést. A nyomozásban ilyenkor a szerződés kódjából kell kiolvasni, mely kulcsok irányítják a tárcát.
Ellenőrizd a tudásod
A kvíz betöltése…