Okosszerződések
Programok a blokkláncon, amelyek a feltételek teljesülésekor maguktól, megállíthatatlanul végrehajtják a szabályaikat.
Az okosszerződések jelentik az Ethereum igazi lényegét. A következő ágakon tárgyalt összes technológia – tokenek, stablecoinok, NFT-k, DeFi – végső soron okosszerződések egymással összekapcsolódó rendszere.
Mi az okosszerződés?
Az okosszerződés (smart contract) egy program, amely a blokkláncon, egy szerződésfiókban van tárolva. Két részből áll: a kódból, amely meghatározza, mire képes, és az adataiból, amelyek az aktuális állapotát rögzítik (például hogy kinek mennyi tokenje van). A működése egyszerű „ha – akkor” logikát követ: ha bizonyos feltételek teljesülnek, akkor bizonyos dolgok történnek.
Az elnevezés nem véletlen. Egy valódi szerződés is ezt teszi: bizonyos feltételek bekövetkezése esetén bizonyos (jog)következményeket ír elő. A papírszerződés azonban önmagában nem képes kikényszeríteni a következményeket: ehhez a felek együttműködése, vita esetén pedig egy harmadik fél – bíróság, végrehajtó – kell. Az okosszerződés viszont a következményeket maga idézi elő: ha a feltételek teljesülnek, a végrehajtás szükségszerűen, azonnal, automatikusan és visszafordíthatatlanul megtörténik. Ahogy a Bitcoin a bankokat iktatta ki, az Ethereum a szerződések kikényszerítéséért felelős intézményeket is megpróbálja helyettesíteni.
Az okosszerződések tulajdonságai
- A blokkláncon van: a kód egyszer felkerül, és onnan nem törölhető.
- Átlátható: a kód nyilvános, bárki megnézheti, mit csinál (a blokkböngészők a „Contract” fülön mutatják).
- Determinisztikus: ugyanarra a bemenetre mindig, mindenhol ugyanazt az eredményt adja – ezért tudja minden csomópont ugyanúgy ellenőrizni.
- Megváltoztathatatlan: a kód utólag nem írható át. (Ha a kód eleve úgy készült, hogy bizonyos beállításait később módosítani lehessen, azt a lehetőséget is a kód tartalmazza.)
- Nem önálló: magától soha nem indul el. Mindig egy tranzakció (egy ember) vagy egy másik szerződés hívása indítja.
Mire jó?
A legkézenfekvőbb felhasználás a feltételhez kötött értékküldés. Néhány példa:
- Közösségi gyűjtés: a szerződés gyűjti a befizetéseket; ha a határidőig összegyűlik a cél, továbbítja a kedvezményezettnek, ha nem, mindenkinek visszaküldi a pénzét.
- Végrendelet: a szerződés egy összeget őriz, és egy megadott címre utalja, ha a tulajdonos egy ideje nem jelentkezett.
- Letéti szolgáltatás (escrow): két fél tokeneket cserél, és a szerződés csak akkor adja át az egyiket, ha a másik is megérkezett.
- Biztosítás: ha egy repülőjárat késik, a szerződés automatikusan fizet. Ehhez azonban külső, „valós világbeli” adat is kell, amelyet egy orákulum (oracle) nevű szolgáltatás juttat a blokkláncra.
Interaktív elem – betöltés…
Hogyan kommunikálunk egy szerződéssel?
A felhasználó szemszögéből egy okosszerződés használata ugyanúgy néz ki, mint egy ether-küldés: a tranzakció címzettje nem egy másik ember, hanem a szerződésfiók. A tranzakció adatai között pedig azt is megadja, melyik funkciót hívja meg a szerződésben, és milyen paraméterekkel. Az Ethereumon így alapvetően háromféle tranzakció van:
- ether küldése egyik EOA-ról a másikra;
- szerződés létrehozása: a tranzakciónak nincs címzettje, az adatmezőjében a szerződés kódja van;
- szerződés hívása: a címzett egy szerződésfiók, amely a hívás hatására végrehajtja a megfelelő funkciót.
A szerződések egymást is hívhatják. Egy felhasználói tranzakció így egész láncreakciót indíthat el, amelyben ether és tokenek mozognak szerződések között. Ezeket a szerződések által kezdeményezett mozgásokat belső tranzakcióknak (internal transactions) nevezzük.
Megjegyzés: amikor a blokkböngészőben azt látjuk, hogy egy Ethereum-cím pénzt küld egy másik címnek, nagyon gyakran valójában egy ember és egy okosszerződés (vagy két szerződés) kommunikációját látjuk. A nyomozás egyik első kérdése mindig az, hogy a tranzakció partnere ember vagy program – és ha program, mit csinál. A nyomon követésről szóló térképen megnézzük, hogyan lehet ezt kiolvasni.
Extra tudásOkosszerződés a Bitcoinon?
A Bitcoin is képes korlátozott, szerződésszerű feltételek kezelésére: ilyen például a több aláírást igénylő cím, vagy az időzár (egy összeg csak egy meghatározott időpont után költhető el). Az Ethereum azonban kifejezetten azzal a céllal jött létre, hogy tetszőleges programokat futtasson, és messze ez a legnagyobb okosszerződés-platform. Számos más blokklánc is támogat okosszerződéseket, sokuk az Ethereum technológiáját vette át.
Ellenőrizd a tudásod
A kvíz betöltése…