Kas yra Išmanioji sutartis (smart contract)
- 2016 m. birželio 17 d. per pasikartojančio iškvietimo (angl. reentrancy) klaidą iš The DAO išmaniosios sutarties išsiurbta per 3,6 mln. ETH; Ethereum tinklas dėl to 2016 m. liepos 20 d. buvo pakeistas bloke 1 920 000.
- 2022 m. kovo 23 d. kompromitavus Ronin tilto validatorių raktus pavogta 173 600 ETH ir 25,5 mln. USDC.
- 2023 m. kovo 13 d. Euler Finance skolinimo protokolas prarado apie 197 mln. USD per sutarties logikos klaidą; lėšos vėliau grąžintos.
- FBI 2025 m. vasario 26 d. pranešė, kad apie 1,5 mlrd. USD vagystę iš Bybit biržos 2025 m. vasario 21 d. įvykdė Šiaurės Korėja; ataka nukreipta į daugiaparašės piniginės pasirašymo procesą.
- ES Duomenų aktas (Reglamentas (ES) 2023/2854) 36 straipsniu nustatė esminius reikalavimus išmaniosioms sutartims, vykdančioms duomenų dalijimosi susitarimus, įskaitant saugaus nutraukimo galimybę; taikoma nuo 2025 m. rugsėjo 12 d.
- Ethereum tinkle naujas blokas, kuriame vykdomos sutartys, sukuriamas kas 12 sekundžių.
Išmanioji sutartis (smart contract) išsamiai
Išmanioji sutartis nėra sutartis teisine prasme – tai programinis kodas, kuris saugo lėšas ar duomenis ir pats vykdo taisykles. Sąvoka žinoma nuo 10-ojo dešimtmečio, bet praktiškai paplito su Ethereum tinklu, paleistu 2015 m. liepos 30 d. Iš išmaniųjų sutarčių sudaryti visi ERC-20 žetonai, stabiliosios monetos, NFT, DeFi protokolai ir DAO. Lietuviškai vartojami ir „išmanusis kontraktas“, ir „išmanioji sutartis“; paieškose dominuoja angliškas „smart contract“.
Kaip veikia išmanioji sutartis
- Kodas. Programuotojas parašo sutartį, dažniausiai Solidity kalba Ethereum suderinamiems tinklams (Ethereum, Polygon, Base) arba savomis kalbomis kitiems tinklams, pvz., TON.
- Kompiliavimas ir diegimas. Kodas kompiliuojamas į baitkodą, kuris viena operacija įrašomas į blokų grandinę. Sutartis gauna savo adresą.
- Iškvietimas. Naudotojas savo pinigine (pvz., MetaMask) iškviečia sutarties funkciją ir sumoka tinklo mokestį (angl. gas).
- Vykdymas. Kiekvienas tinklo mazgas įvykdo tą patį kodą ir gauna tą patį rezultatą. Jei sąlyga netenkinama, visa operacija atšaukiama.
- Būsena. Sutarties duomenys (likučiai, savininkai, nustatymai) saugomi grandinėje ir matomi visiems.
Išmaniosios sutartys versle: panaudojimo pavyzdžiai
| Panaudojimas | Ką daro sutartis | Kam naudinga |
|---|---|---|
| Mokėjimų priėmimas | Priima stabiliąją monetą, susieja su užsakymo numeriu, perveda į iždo piniginę | El. parduotuvėms, priimančioms kriptoturtą be tarpininko |
| Sąlyginis mokėjimas (angl. escrow) | Laiko lėšas, kol abi šalys patvirtina pristatymą | Prekyvietėms, laisvai samdomiems darbams |
| Bilietai ir sertifikatai | Išleidžia NFT, riboja perpardavimą ar kainą | Renginių organizatoriams, gamintojams (garantijos) |
| Lojalumo žetonai | Išleidžia ir sudegina taškus pagal pirkimus | Prekių ženklams su partnerių tinklu |
| Išmokų paskirstymas | Automatiškai dalija pajamas tarp kelių gavėjų pagal procentus | Kūrėjams, bendriems projektams |
| Balsavimas | Skaičiuoja balsus pagal žetonus, vykdo priimtą sprendimą | DAO ir bendruomenėms |
| Dokumentų laiko žymos | Įrašo dokumento maišos kodą ir laiką | Logistikai, intelektinės nuosavybės įrodymams |
Išmanioji sutartis ir teisinė sutartis: ar kodas yra sutartis
Lietuvos civilinis kodeksas atskiros „išmaniosios sutarties“ sąvokos neturi. Teisiškai saistantis yra šalių susitarimas, o kodas – jo vykdymo įrankis. Todėl verslo santykiuose rekomenduojama turėti įprastą rašytinę sutartį ar naudojimo sąlygas, kuriose nurodoma, kad atsiskaitymas vykdomas konkrečia išmaniąja sutartimi (adresu), kas atsako už kodo klaidas ir kaip sprendžiami ginčai. ES Duomenų aktas (Reglamentas (ES) 2023/2854) nuo 2025 m. rugsėjo 12 d. 36 straipsniu reikalauja, kad išmaniosios sutartys, vykdančios duomenų dalijimosi susitarimus, būtų patikimos, turėtų saugaus nutraukimo ar pertraukimo mechanizmą, duomenų archyvavimą ir prieigos kontrolę.
Žinomi išmaniųjų sutarčių incidentai: datos ir sumos
| Data | Incidentas | Nuostolis | Priežastis | Pamoka |
|---|---|---|---|---|
| 2016-06-17 | The DAO | Per 3,6 mln. ETH | Pasikartojantis iškvietimas (reentrancy) funkcijoje „split“ | Pirmiausia keisti būseną, tik tada siųsti lėšas; naudoti reentrancy apsaugą |
| 2022-03-23 | Ronin tiltas | 173 600 ETH ir 25,5 mln. USDC | Kompromituoti tilto validatorių raktai | Raktų paskirstymas tarp nepriklausomų šalių, stebėsena |
| 2023-03-13 | Euler Finance | Apie 197 mln. USD (vėliau grąžinta) | Sutarties logikos klaida, išnaudota su žaibo paskola (angl. flash loan) | Auditas po kiekvieno pakeitimo, ne tik pradinės versijos |
| 2025-02-21 | Bybit | Apie 1,5 mlrd. USD | Ataka per daugiaparašės piniginės pasirašymo sąsają; FBI priskyrė Šiaurės Korėjai | Tikrinti, ką pasirašai, nepriklausomai nuo sąsajos |
Po The DAO atakos Vitalikas Buterinas Ethereum fondo tinklaraštyje 2016 m. birželio 17 d. patarė kūrėjams kol kas vengti sutarčių, kuriose laikoma daugiau nei apie 10 mln. USD vertės. Ši pamoka aktuali ir dabar: kuo didesnė suma sutartyje, tuo daugiau atakų ji pritraukia.
Išmaniosios sutarties auditas: kaip jis vyksta
Auditas – nepriklausoma kodo peržiūra prieš paskelbiant sutartį. Jis nesuteikia garantijos, bet sumažina tikimybę, kad akivaizdi klaida pateks į gamybinę aplinką.
- Specifikacija. Užsakovas aprašo, ką sutartis turi daryti ir ko neturi leisti (invariantai, pvz., „bendras likutis niekada neviršija įneštos sumos“).
- Automatiniai įrankiai. Statinė analizė (pvz., Slither), fuzzing testai (Foundry, Echidna) ieško žinomų pažeidžiamumų šablonų.
- Rankinė peržiūra. Bent du auditoriai nepriklausomai perskaito kodą eilutė po eilutės, ypač teisių valdymą, išorinius iškvietimus ir matematiką.
- Ataskaita. Radiniai skirstomi pagal svarbą (kritinis, aukštas, vidutinis, žemas, informacinis).
- Pataisymai ir pakartotinė peržiūra. Auditoriai patikrina, ar pataisymai nepridėjo naujų klaidų.
- Po paskelbimo. Klaidų premijų programa (angl. bug bounty), stebėsena ir aiškus incidento planas.
| Dažna pažeidžiamumo rūšis | Kas nutinka | Apsauga |
|---|---|---|
| Pasikartojantis iškvietimas (reentrancy) | Išorinė sutartis iškviečia funkciją pakartotinai prieš atnaujinant likutį | Patikrinimai–pakeitimai–sąveika tvarka, apsauginis modifikatorius |
| Prieigos kontrolės klaida | Bet kas gali iškviesti administratoriaus funkciją | Rolės, daugiaparašis administratorius, laiko užrakas |
| Orakulo manipuliacija | Kaina paimama iš lengvai paveikiamo šaltinio | Patikimi orakulai, laiko vidurkiai |
| Atnaujinamos sutarties rizika | Administratorius gali pakeisti logiką | Laiko užraktas, daugiaparašė kontrolė, viešas pranešimas |
| Apvalinimo ir tikslumo klaidos | Maži nuokrypiai kartojami tūkstančius kartų | Invariantų testai, fuzzing |
Kaip patikrinti svetimą išmaniąją sutartį prieš ja naudojantis
Prieš priimdami naują žetoną, jungdamiesi prie DeFi protokolo ar suteikdami leidimą, verta per 10 minučių patikrinti šiuos dalykus:
- Ar kodas patvirtintas tinklo naršyklėje. Etherscan ar Polygonscan žymi sutartis, kurių šaltinio kodas paskelbtas ir sutampa su baitkodu. Nepatvirtintas kodas – raudona vėliava.
- Ar yra viešas auditas. Audito ataskaita turi nurodyti tą pačią sutarties versiją (commit ar adresą), kurią naudojate.
- Kas yra administratorius. Jei sutartį gali keisti vienas adresas, jūsų lėšų saugumas priklauso nuo vieno rakto. Geriau – daugiaparašė piniginė su laiko užraktu.
- Ar sutartis atnaujinama. Tarpinė (angl. proxy) sutartis leidžia pakeisti logiką; patikrinkite, kas ir per kiek laiko tai gali padaryti.
- Ar žetonas turi užšaldymo ar mokesčio funkcijų. Kai kurie žetonai ima mokestį už pervedimą ar leidžia savininkui užblokuoti adresus.
- Kokį leidimą prašoma suteikti. Suteikite leidimą tik reikiamai sumai ir vėliau jį atšaukite.
Ką turi turėti mokėjimų išmanioji sutartis el. parduotuvei
- Užsakymo identifikatoriaus susiejimą su mokėjimu, kad sistema automatiškai pažymėtų užsakymą apmokėtu.
- Leistinų žetonų sąrašą – pvz., tik MiCA atitinkantys USDC ir EURC, kad nebūtų priimami nežinomi žetonai.
- Lėšų perkėlimą į daugiaparašę iždo piniginę, o ne laikymą pačioje sutartyje.
- Grąžinimo funkciją, kurią gali inicijuoti tik įgaliotas administratorius.
- Įvykių (angl. events) žurnalą, iš kurio apskaita gauna sumą, laiką ir operacijos maišos kodą.
- Pristabdymo funkciją incidento atveju – tai atitinka ir ES Duomenų akto saugaus nutraukimo logiką.
Kada išmanioji sutartis verslui tinka, o kada ne
Tinka, kai: kelios nepriklausomos šalys turi pasitikėti tuo pačiu atsiskaitymu; taisyklės aiškios ir retai keičiasi; reikia atsiskaitymų visą parą ir tarptautiniu mastu; norima, kad bet kas galėtų patikrinti, kaip skirstomos lėšos.
Netinka, kai: taisyklės dažnai keičiasi ar reikalauja žmogaus sprendimo; tvarkomi asmens duomenys (jų negalima ištrinti iš grandinės); sumos mažos, o audito kaina didelė; visas procesas vyksta vienoje įmonėje. Dažnai geriausias sprendimas – naudoti jau audituotas standartines sutartis (pvz., ERC-20, ERC-721 iš atvirojo kodo bibliotekų) ar licencijuoto tarpininko paslaugą, o ne kurti savo logiką. Tokio principo verta laikytis ir kripto integracijų projektuose.
Ar išmaniajai sutarčiai taikomas MiCA
Pati sutartis – technologija, ne paslauga. Tačiau jei jūsų sutartis laiko klientų kriptoturtą, keičia jį ar išleidžia žetoną, kuris siūlomas visuomenei, gali būti taikomas MiCA reglamentas: saugojimo ar keitimo paslaugai reikia licencijos, viešam žetono pasiūlymui – baltosios knygos. Tai nėra investavimo rekomendacija – sutartis su lėšomis visada turi riziką.
Pavyzdys: savo išmanioji sutartis ar licencijuotas tarpininkas mokėjimams priimti
Prielaidos: el. parduotuvė per metus planuoja priimti 120 000 € stabiliosiomis monetomis. Lyginame dvejų metų sąnaudas. Kūrimo, audito ir tarpininko kainos yra prielaidos skaičiavimui – realios priklauso nuo pasiūlymų ir sutarties sudėtingumo.
| Sąnaudos per 2 metus | A. Sava išmanioji sutartis | B. Licencijuotas tarpininkas |
|---|---|---|
| Sutarties kūrimas ir testai | 6 000 € | 0 € |
| Nepriklausomas auditas | 8 000 € | 0 € |
| Integracija su parduotuve | 3 000 € | 1 500 € |
| Tarpininko mokestis 1 % × 240 000 € | 0 € | 2 400 € |
| Konvertavimas į eurus per CASP 0,5 % × 240 000 € | 1 200 € | įskaičiuota |
| Iš viso | 18 200 € | 3 900 € |
Lūžio taškas: A pastoviosios sąnaudos (17 000 €) atsiperka tik tada, kai sutaupytas 0,5 % skirtumas (1 % − 0,5 %) jas padengia: 17 000 € / 0,005 = 3,4 mln. € apyvartos. Esant 120 000 € per metus, savos sutarties kūrimas finansiškai neatsiperka; jis prasmingas tik tada, kai reikia funkcijų, kurių tarpininkas neturi, pvz., automatinio pajamų dalijimo tarp kelių gavėjų.
Dažniausios klaidos
- Paskelbti sutartį be nepriklausomo audito, nes „kodas paprastas“. The DAO, Euler ir daugelis kitų incidentų prasidėjo nuo smulkios logikos klaidos.
- Audituoti tik pirmą versiją. Kiekvienas atnaujinimas gali įvesti naują pažeidžiamumą, todėl auditą reikia kartoti po pakeitimų.
- Laikyti administratoriaus raktą viename kompiuteryje. Administravimui naudokite daugiaparašę piniginę ir laiko užraktą.
- Rašyti asmens duomenis į sutarties būseną. Jie bus vieši ir neištrinami.
- Neturėti teisinės sutarties šalia kodo. Be jos neaišku, kas atsako už kodo klaidą ir kaip spręsti ginčą.
- Pasirašyti operaciją pasitikint tik sąsaja. Bybit incidentas parodė, kad sąsaja gali rodyti ne tai, ką iš tikrųjų pasirašote.
- Kurti savo žetono logiką, kai pakanka standartinės audituotos ERC-20 ar ERC-721 bibliotekos.
Išmanioji sutartis (smart contract) Lietuvoje
Lietuvoje išmaniųjų sutarčių atskiras įstatymas nereguliuoja: jos vertinamos pagal bendrąsias Civilinio kodekso nuostatas apie sandorius ir sutartis, o jei sutartis susijusi su kriptoturto paslaugomis ar viešu žetonų siūlymu – pagal MiCA ir Kriptoturto rinkų įstatymą Nr. XIV-2879, kurių priežiūrą vykdo Lietuvos bankas. Duomenų dalijimosi išmaniosioms sutartims nuo 2025 m. rugsėjo 12 d. taikomas ES Duomenų akto 36 straipsnis.
Lietuvos bankas savo LBChain bandomojoje aplinkoje (Hyperledger Fabric ir Corda) leido 11 įmonių iš 8 šalių išbandyti blokų grandinės sprendimus, įskaitant sutarčių logiką, prieš juos diegiant rinkoje. Kriptoturto, gauto per išmaniąsias sutartis, apmokestinimą aiškina VMI.
Susiję terminai
- Įvertiname, ar jūsų užduočiai reikia savos išmaniosios sutarties, ar pakanka standartinės audituotos sutarties ar licencijuoto tarpininko.
- Integruojame išmaniąsias sutartis su svetaine ar el. parduotuve: mokėjimai, NFT bilietai, lojalumo žetonai.
- Parengiame specifikaciją ir testus, su kuriais galite kreiptis į nepriklausomą auditorių.
- Įdiegiame administravimą per daugiaparašę piniginę ir operacijų stebėseną.
Dažni klausimai
Kas yra išmanioji sutartis?
Išmanioji sutartis – tai blokų grandinėje įrašyta programa, kuri automatiškai vykdo užprogramuotas taisykles, pvz., perveda žetonus įvykdžius sąlygą. Jos kodas matomas visiems, o po paskelbimo dažniausiai nekeičiamas.
Ar išmanioji sutartis yra teisiškai galiojanti sutartis?
Lietuvos teisėje atskiros išmaniosios sutarties sąvokos nėra. Teisiškai saistantis yra šalių susitarimas, o kodas – jo vykdymo įrankis, todėl verslui rekomenduojama turėti ir įprastą rašytinę sutartį ar naudojimo sąlygas.
Kas yra smart contract auditas?
Tai nepriklausoma išmaniosios sutarties kodo peržiūra prieš paskelbimą: automatinė analizė, rankinė peržiūra, ataskaita su radiniais pagal svarbą ir pataisymų patikra. Auditas sumažina, bet nepanaikina rizikos.
Kokia kalba rašomos išmaniosios sutartys?
Ethereum ir su juo suderinamuose tinkluose (Polygon, Base ir kt.) dažniausiai Solidity, rečiau Vyper. Kiti tinklai, pvz., TON ar Solana, naudoja savas kalbas.
Ar galima pakeisti išmaniąją sutartį po paskelbimo?
Paprastos sutarties – ne. Atnaujinamos sutartys naudoja tarpinę sutartį, per kurią administratorius gali pakeisti logiką, bet tai sukuria papildomą riziką, todėl naudojamas laiko užraktas ir daugiaparašė kontrolė.
Kokie buvo didžiausi išmaniųjų sutarčių įsilaužimai?
Žinomiausi: The DAO 2016-06-17 (per 3,6 mln. ETH), Ronin 2022-03-23 (173 600 ETH ir 25,5 mln. USDC), Euler 2023-03-13 (apie 197 mln. USD) ir Bybit 2025-02-21 (apie 1,5 mlrd. USD).
Kiek kainuoja išmaniosios sutarties sukūrimas?
Priklauso nuo sudėtingumo: standartinis ERC-20 žetonas iš audituotos bibliotekos kainuoja mažai, o sava logika su lėšų valdymu reikalauja kūrimo, testų ir nepriklausomo audito, kurie dažniausiai sudaro didžiąją biudžeto dalį.
Ar išmaniosioms sutartims taikomas MiCA?
Pačiai technologijai – ne. Bet jei sutartis saugo klientų kriptoturtą, keičia jį ar išleidžia viešai siūlomą žetoną, taikomi MiCA reikalavimai: licencija ar baltoji knyga.
Šaltiniai
- CRITICAL UPDATE Re: DAO Vulnerability (2016-06-17) – Ethereum Foundation
- Timeline of all Ethereum forks (DAO fork) – ethereum.org
- Introduction to smart contracts – ethereum.org
- Smart contract security – ethereum.org
- North Korea Responsible for $1.5 Billion Bybit Hack (PSA, 2025-02-26) – FBI / IC3
- War & Peace: Behind the Scenes of Euler's $240M Exploit Recovery – Euler Finance
- Ronin Network: What a $600m hack says about the state of crypto – BBC
- Reglamentas (ES) 2023/2854 (Duomenų aktas) – EUR-Lex
- Reglamentas (ES) 2023/1114 dėl kriptoturto rinkų – EUR-Lex
- LBChain – Lietuvos bankas