Mi az az okosszerződés? Egyszerű magyarázat kezdőknek
Az okosszerződés egy program a blokkláncon, amely magától végrehajt egy előre leírt szabályt. Mire jó, hol a határa, és mit ellenőrizz, mielőtt pénzt bízol rá.
A cikk végére érteni fogod:
- Az okosszerződés nem jogi szerződés, hanem egy program, amely a blokkláncon fut, és mindenki számára ugyanúgy hajtja végre a beleírt szabályt.
- A kód azt csinálja, ami bele van írva, nem azt, amit az alkotója ígért. A hiba a kódban ugyanúgy végrehajtódik, mint a helyes szabály.
- Mielőtt pénzt engedélyezel egy szerződésnek, három dolgot nézz: ki írta, volt-e független átvizsgálás, és mennyi pénzt bízol rá egyszerre.
Ha egyszer is használtál decentralizált váltót, vagy engedélyt adtál egy tárcában egy ismeretlen címnek, már okosszerződéssel dolgoztál. Ez a cikk azt mutatja meg, mi történik ilyenkor a háttérben, és mit érdemes ellenőrizni, mielőtt egy programra bízod a pénzed.
Mi az az okosszerződés, ha nem szerződés?
Képzelj el egy automatát. Bedobsz egy érmét, megnyomsz egy gombot, kiesik egy üdítő. Nincs eladó, nincs alku, nincs “majd holnap”. A gép egy előre beépített szabályt hajt végre, és mindenkinek ugyanúgy.
Az okosszerződés (angolul smart contract, vagyis “okos szerződés”) pontosan ilyen automata, csak nem üdítőt ad, hanem digitális eszközöket mozgat. A szabályát egy programozó írta le kódban, a kód a blokkláncra került, és onnantól bárki használhatja. Ha teljesül a feltétel, a program végrehajtja a lépést. Ha nem, nem.
A név félrevezető. Nem szerződés, mert nincs benne két fél akarata és nincs mögötte bíróság. És nem okos, mert nem gondolkodik: azt csinálja, amit beleírtak, akkor is, ha az hibás.
Hogyan fut egy program a blokkláncon?
A blokklánc egy megosztott nyilvántartás, amelyet sok ezer számítógép tart karban egyszerre. A Bitcoin lánca alapvetően egyenlegeket tart nyilván. Az Ethereum és a hozzá hasonló láncok ennél többet tudnak: programokat is tárolnak, és ezeket a hálózat minden tagja ugyanúgy futtatja.
Amikor egy szerződést “meghívsz”, vagyis küldesz neki egy tranzakciót, a hálózat összes gépe kiszámolja, mi az eredmény. Mivel mind ugyanazt a kódot futtatják ugyanazon az adaton, mind ugyanarra jutnak. Ettől lesz a végrehajtás megbízható: nem egy cég szervere dönt, hanem egy szabály, amelyet senki nem tud egyedül átírni.
Ennek ára van. Minden lépés számítást igényel, és ezt a hálózati díjjal (gas) fizeted meg. Egy egyszerű átutalás olcsó, egy összetett szerződés-hívás drágább. A hálózatokról és díjakról szóló leckében ezt részletesen kibontottuk.
Mire jó a gyakorlatban?
A három leggyakoribb eset, amivel kezdőként találkozol:
Csere. Egy decentralizált váltón nem egy másik emberrel cserélsz, hanem egy szerződéssel, amely egy közös likviditási készletből ad a másik eszközből, előre rögzített képlet szerint. Erről a DEX-ről szóló cikk szól.
Kölcsön. A DeFi lending szerződése átveszi a fedezetedet, kiadja a kölcsönt, és magától likvidál, ha a fedezet értéke egy küszöb alá esik. Nincs ügyintéző, aki mérlegelne.
Tulajdon. Egy NFT vagy egy token mögött egy szerződés tartja nyilván, kié melyik egység, és az átruházást is ez végzi.
Közös bennük, hogy a szabály előre látható. Ez a legnagyobb előny és a legnagyobb csapda egyszerre.
Hol vannak a határai?
Tipp: ha egy projekt azzal hirdeti magát, hogy “a kód a törvény”, kérdezd meg, ki írta a kódot, és mi történik, ha hibás.
A hiba is végrehajtódik. Ha a programozó elszámolt egy feltételt, a szerződés a hibás feltételt fogja betartani. Nincs “ezt nem így gondoltuk” gomb. Több milliárd dolláros veszteség származott már abból, hogy egy szerződés pontosan azt csinálta, ami bele volt írva.
A kód nem látja a külvilágot. Egy szerződés nem tudja magától, mennyi a bitcoin ára vagy megérkezett-e egy csomag. Ehhez külső adatforrás (oracle) kell, és az adatforrás ugyanúgy támadható, mint bármi más.
A frissíthetőség kétélű. Sok szerződésbe az alkotók frissítési jogot építenek, hogy javíthassák a hibákat. Ez azt is jelenti, hogy egy kulcs birtokosa megváltoztathatja a szabályt, amiben te megbíztál.
Az engedély addig él, amíg vissza nem vonod. Amikor egy tárca “jóváhagyást” kér egy tokenre, gyakran korlátlan összegre kéri. Ha a szerződést később feltörik, az engedélyezett tokenek a te tárcádból is elvihetők.
Mit ellenőrizz, mielőtt pénzt bízol rá?
Három kérdés, harminc másodperc:
- Ki írta és mióta fut? Egy évek óta működő, sokak által használt szerződés nem hibátlan, de a nagy hibái már valószínűleg kiderültek. Egy tegnap indult, névtelen csapat által írt szerződés esetében ez nem mondható el.
- Volt-e független átvizsgálás (audit)? Az audit nem garancia, de a hiánya figyelmeztető jel. A projekt oldalán a jelentésnek elérhetőnek kell lennie, nem csak egy “audited” feliratnak.
- Mennyit engedélyezel? Ha a tárcád lehetővé teszi, adj pontos összegre engedélyt, ne korlátlanra. A nem használt engedélyeket időnként vond vissza. Ez ugyanaz a fegyelem, mint amit az átverések felismerésénél tanultál: a kényelem ára a kitettség.
Egy példa, ahol a szabály jó volt, a kód mégsem
Vegyünk egy egyszerű esetet. Egy szerződés azt ígéri: aki beteszi a pénzét, az bármikor kiveheti, és a kivét sorrendjében fizet. A szabály tiszta. A kódban viszont a programozó előbb utalja ki a pénzt, és csak utána csökkenti a nyilvántartott egyenleget. Egy ügyes hívó ezt kihasználva egyetlen tranzakcióban többször is kiveszi ugyanazt az összeget, mielőtt a szerződés észbe kapna.
Ez a hibaosztály, az újrahívás (reentrancy), az egyik legrégebbi és legdrágább a kripto történetében. A szerződés nem “csalt”: pontosan azt tette, ami a kódban állt. A szabály és a kód közötti rés volt a probléma, és ezt a rést kívülről nem látod.
A tanulság kezdőként nem az, hogy tanulj meg kódot olvasni. Hanem az, hogy a “szabály tiszta” mondat nem elég. Az számít, hogy a kódot átnézte-e valaki más is, mióta fut hiba nélkül, és mekkora összeget bízol rá egyszerre. Egy ismeretlen szerződésnek adott első összeg legyen akkora, amelynek elvesztése bosszantó, de nem fáj.
Mit jelent ez neked?
Az okosszerződés nem ellenség és nem csoda. Egy automata, amely pontosan azt teszi, amit beleírtak. Kezdőként a legtöbbet azzal nyered, ha kis összeggel tanulod meg a használatát, minden engedélyt tudatosan adsz, és a “kód a törvény” mondatot nem hitként, hanem figyelmeztetésként olvasod. A következő lecke arról szól, hogyan kerül egy valós eszköz a blokkláncra, és mit ér ez a gyakorlatban.
Gyakori kérdések
Az okosszerződés tényleg szerződés?
Nem a jogi értelemben. Egy program, amely a blokkláncon tárolt szabály szerint mozgat digitális eszközöket. Jogi kötőerőt önmagában nem ad, a bíróság nem a kódot olvassa.
Ki tudja megváltoztatni egy okosszerződés kódját?
Alapesetben senki, ha egyszer a láncra került. Egyes szerződésekben az alkotó frissítési jogot hagy magának, ezt hívják upgradeable szerződésnek. Ez kényelem és kockázat egyszerre.
Miért veszélyes, ha egy szerződésnek korlátlan engedélyt adok a tárcámra?
Mert az engedély addig él, amíg vissza nem vonod. Ha a szerződést feltörik vagy eleve rosszindulatú, a teljes engedélyezett összeget el tudja vinni a tárcádból.
Hol találkozom okosszerződéssel kezdőként?
Minden decentralizált váltó, minden DeFi lending és minden NFT-vásárlás okosszerződésen fut. Ha egy tárca engedélyt kér tőled, szinte biztos, hogy egy szerződésnek adod.
Több kérdés minden cikkünkből: Gyakori kérdések
Ez a tartalom tájékoztató és oktató jellegű, nem pénzügyi tanácsadás. A kriptoeszközök kockázatosak; döntéseidért te felelsz.


