Hlavní navigace

Úvod do smart kontraktů: jsou opravdu chytré a jde vůbec o smlouvy?

Karel Wolf

Smart kontrakty jsou populárním technologickým buzzwordem, o kterém je slyšet hlavně v souvislosti s kryptoměnami. O co jde a kde leží hranice jejich užitečnosti?

Doba čtení: 8 minut

Pod slovním spojením „chytrý kontrakt“ (v originále „smart contract“) chápeme protokol (soubor pravidel) nebo jednoduchý program, který vynucuje provedení nějaké smlouvy, nebo dohody (kontraktu).

Vzhledem k tomu, že máme co do činění s programem, probíhá vše automaticky, což vede příznivce chytrých kontraktů k tvrzení, že smart kontrakty budou v budoucnu nahrazovat skutečné mezi lidmi uzavírané smlouvy. Každé ujednání převedené do chytrého kontraktu totiž může být částečně, nebo úplně sebevykonávající či sebevynucující (nebo obojí najednou).

Pokud jsou chytré kontrakty navrženy správně, což v praxi není zdaleka samozřejmé (viz například neslavný příklad první decentralizované organizace nad Ethereem), mohou za nižších nákladů poskytovat bezpečnost a vymahatelnost lepší než klasické právo.Vše navíc mnohem rychleji.

Jako příklad můžeme odkázat na proof of concept Microsoftu, který využívá smart kontrakty na vyrovnání závazků u Xbox her. Každá jednotlivá hra je zatížená štosy smluv a zahrnuje desítky kontraktorů s velmi spletitými vzájemnými vztahy. Zjistit za takových podmínek, komu patří jaké vyrovnání, je někdy téměř nemožné. Výsledkem je pak třeba proplácení faktur s mnohaměsíčním odstupem.

Ve zmíněném PoC vše běží na privátním blockchainu, kde se všechny vazby kontrolují a vykonávají automaticky právě prostřednictvím smart kontraktů. Proces trvající před tím někdy až devět měsíců tak probíhá nově v čase okolo 4 vteřin (více v rozhovoru Lukáš Mikeska (EY): Veřejné blockchainové platformy zatím nedávaly firmám smysl. Chceme to změnit).

Jak to funguje

Autorem konceptu chytrých kontraktů je americký kryptograf a počítačový vědec Nick Szabo. Ten přišel s nápadem převést všechny smluvní vztahy do podoby kódu, který je (podle něj) oproti lidským interakcím plně transparentní a předvídatelný. Mezi další výhody takového řešení patří schopnost autonomního vykonání a sebevynucení (případně obojího najednou).

Szabo to ilustruje na příkladu automobilu zakoupeného na leasing. Smart kontrakt v počítači automobilu nastartuje motor pouze tehdy, když proběhla včasná splátka, v opačném případě automobil zamkne a odemknutí umožní pouze zaměstnanci kreditní společnosti. Po splnění určité podmínky (zaplacení poslední splátky) se pak kontrakt automaticky ukončí nebo změní svoji funkci.

Ačkoli by se v praxi jednalo asi o poměrně drastické řešení, které může přinášet řadu nezamýšlených důsledků, v teorii zjednodušuje a vyjasňuje vztahy mezi oběma stranami a řeší problematické situace. Smart kontrakt zde funguje jako počítačový protokol o transakcích, který provádí a garantuje vykonání podmínek smlouvy. Motivace dodržet podmínky kontraktu by přitom v ideálním případě neměla být pouze jednostranná (jak by mohl uvedený příklad naznačovat), ale k tomu se ještě dostaneme.

Jako další příklad uvádí Szabo běžný automat na pití v plechovce, který zárodek takového kontraktu v sobě již vlastně přirozeně obsahuje. Automaticky totiž očekáváme, že po vhození mince do automatu buď vypadne plechovka, nebo dojde k vrácení peněz. Pokud se tak nestane, máme právo vymáhat po provozovateli náhradu.

Celý výdejní proces přitom kontroluje právě jednoduchý program, který hlídá platnost mincí, provádí vrácení přeplatků a vydává zboží, nebo naopak provádí storno objednávky. Program tak hlídá dodržení dohody mezi kupujícím a majitelem automatu, která říká, že každý, kdo vhodí do automatu požadovanou částku, má nárok na nápoj, nebo vrácení peněz.

Jeden háček

Minimálně ve druhém příkladu (u toho prvního by záleželo na konkrétním provedení) se ale ještě nejedná o chytrý kontrakt v tom smyslu, jak jej chápeme dnes. Slovo kontrakt v celém sousloví není jen proto, že to celé víc cool zní. Ono jde opravdu o smlouvu, a my tak máme jako v případě smlouvy papírové plné právo znát její přesné znění. Musí zde být zkrátka možnost si kontrakt ještě před samotným přistoupením na smlouvu ověřit. To v případě programu v automatu úplně neplatí, protože programový kód (a vlastně celý výdejní mechanismus) je pro nás černá skřínka a můžeme se jen spoléhat na tvrzení výrobce. Právě tady nalezne uplatnění blockchain, který může posloužit jako důvěryhodná platforma, která zajistí zaručené a transparentní (alespoň v případě veřejného blockchainu snadno ověřitelné) vykonání kódu.

Pěknou ukázkou povedeného smart kontraktu jsou například kanály v Lightning Network v bitcoinové síti. Zde kontrakt umožňuje dvěma stranám otevřít platební kanál pro vzájemné instantní platby, na který každá strana vloží určitou částku v bitcoinech. Protože se až do uzavření kanálu transakce neodehrávají na blockchainu a jde vlastně jen o vzájemnou výměnu aktuálních stavů virtuálních účtů, je potřeba nějak zajistit, aby žádná ze stran neměla motivaci podvádět tím, že provede platbu a následně vyšle do sítě jako update stav, kde platba ještě neproběhla.

O to se zde stará právě smart kontrakt. Obě stany mohou bezpečně do sítě vyslat vždy jen nejaktuálnější stav kanálu, pokud se jedna ze stran pokusí do sítě vyslat dřívější stav, kontrakt zajistí protistraně právo uzavřít kanál s nárokem na všechny bitcoiny, které se v kanálu zrovna nalézají. To demotivuje protistrany se navzájem podvádět. V praxi řešení přináší i určitá technická úskalí, ale těmi se zde teď zabývat nebudeme.

Podobného principu využívají také chytré kontrakty pro transakce mezi nedůvěryhodnými stranami v nedůvěryhodném prostředí, se kterými se můžeme setkat na Ethereu. Zde dvě protistrany, které mezi sebou chtějí provést finančně riskantní transakci, uloží na jeho účet určitou částku jako zástavu. Strany pak mezi sebou mohou relativně bezpečně samotnou transakci provést.

Pokud se uskuteční v pořádku, dají kontraktu vědět, že transakce v pořádku proběhla. Kontrakt jim v takovém případě vrátí zastavené Ethery zpátky. Pokud ale transakce podle původní dohody neproběhne, jedna strana se pokusí druhou okrást, pošle jiné než domluvené zboží a podobně, k potvrzení u jedné ze stran nedojde a kontrakt ani jedné ze stran Ethery nevyplatí a obě strany tak přijdou o celou zástavu. (Kontrakt po nějaké době pokud se strany včas nedohodnou převede zástavu trvale na svůj účet.)

Za předpokladu, že zástava převyšuje hodnota transakce, jsou obě strany (v teorii) dostatečně ekonomicky motivovány transakci provést správně, čímž je také v praxi zajištěna sebevymahatelnost kontraktu. Obě strany přitom mají možnost si veřejně dostupný zdrojový kód kontraktu předem prostudovat a pozorovat díky transparentnosti veřejného blockchainu celý jeho průběh.

Poslední dva příklady nejsou vybrány úplně náhodně, pěkně totiž demonstrují určité limity smart kontraktů na privátních blockchainech. Bez finanční motivovanosti protistran totiž kontrakty do značné míry degradují jen na pouhé programy vykonávající nějakou funkci, podobně jako onen automat na limonádu. Skutečná vymahatelnost takového kontraktu pak musí být garantována jinak. Tím se dostáváme k poslednímu bodu našeho letmého úvodu, a to jak se vlastně na chytré kontrakty dívá české právo. 

Chytré kontrakty z pohledu českého práva

Jak vnímají smlouvu převedenou do podoby programového protokolu právníci? Jde z legálního hlediska pořád ještě o smlouvu, kterou lze případně vymáhat i tradiční cestou? Zeptali jsme se na to právních expertů z právní kanceláře HAVEL & PARTNERS.

„Z našeho pohledu právně nic nebrání tomu, aby smart kontrakt byl dle českého právního řádu smlouvou. Jedná se pouze o formu uzavření smlouvy, kterou si mohou strany svobodně zvolit.

Občanský zákoník stanoví až na výjimky zásadu svobody volby formy. Takovou formou může být i algoritmus smart kontraktu zachycený v příslušném programovacím jazyce. Pokud se strany shodnou na zachycení obsahu smlouvy (svého právního jednání) pomocí takového programovacího jazyka a tento je (minimálně pro ně) dostatečně srozumitelný a schopný zachytit obsah jejich vůle, je dána písemnost smlouva, pro jejíž platnost tedy není rozhodné, jaký jazyk bude použit.

Dle českého právního řádu smlouva musí splňovat následující náležitosti:

(I) musí v ní být zachycen její obsah. Tomu smart kontrakt nebrání, pouze obsah smlouvy zachycuje ve specifické technické formě programovacího jazyka a integrace do blockchainu.

(II) musí být identifikovány smluvní strany, které smlouvu podepíší. V rámci blockchainu vystupuje uživatel obvykle pod konkrétní kombinací veřejného a soukromého klíče, a stranu smlouvy tak lze na základě takové kombinace jednoznačně určit. Zároveň v souladu se současnou právní úpravou je v soukromoprávních vztazích možné užít víceméně libovolnou formu elektronického podpisu. Privátní klíč uživatele blockchainu lze jistě za dostatečný podpis považovat a po jeho připojení tak i považovat smart kontrakt za podepsaný.

(III) musí být dána vůle stran uzavřít smlouvu a řídit se jejím obsahem. Opět, této podmínce smart kontrakt nebrání a je to obdobné jako u smlouvy na papíru či uzavřené ústně.

(IV) zachování podstatných náležitostí specifického smluvního typu. U smluv, které nevyžadují písemnou formu smart kontraktu, platnosti nic nebrání, stačila by ostatně pouze ústní forma. Pokud smlouva vyžaduje písemnou formu (bez dalších podmínek), pak z našeho pohledu smart kontrakt tuto podmínku zpravidla také splní.

Dále, aby mohl být smart kontrakt uzavřen jako smlouva dle českého práva, musí dojít k nabídce, přijetí nabídky a v případě distančního sjednávání smlouvy k doručení přijetí nabídky nabízející smluvní straně. Obsah nabídky sepsaný ve smart kontraktu pomocí algoritmu by proto měl obsahovat alespoň podstatné náležitosti určitého smluvního typu tak, aby smlouva mohla být uzavřena jeho jednoduchým a nepodmíněným přijetím. Pokud tedy základní podmínky smlouvy budou součástí počítačového kódu a smluvní strany se na obsahu smart kontraktu shodnou, podmínka existence vůle stran řídit se obsahem smlouvy bude naplněna,“ odpovídá JUDr. Jan Diblík.

A jak je to v případě, že by například došlo ke scénáři, že se kontrakt kvůli nějaké programové chybě nevykoná správně, zachová se jinak, než naznačoval, nebo povede k nezamýšlenému důsledku (viz historie The DAO)? Lze původně zamýšlenou dohodu vymáhat, nebo platí to, co je v reálném kódu?

„Původní dohodu při chybě v souvislosti se smart kontraktem dle našeho názoru možné vymáhat bude. Na poškozenou stranu (žalobce) nicméně bude čekat několik konkrétních úskalí.

Prvním úskalím je prokázání existence smlouvy jako takové. S takovým prokázáním existence smart kontraktu to je nicméně obdobné jako v případě zániku listinné smlouvy (např. v důsledku požáru), výmazu smlouvy v elektronické formě (např. v důsledku viru) či v případě, že strany zapomenou, co si dojednaly v ústní dohodě. Hlavní otázka je totiž schopnost prokázat před soudem v případě následného sporu existenci smlouvy.

Jako důkaz by mohla sloužit například i listina, na které bude algoritmus smart kontraktu sepsán pomocí ‚jedniček a nul‘, případně i podpořená znaleckým posudkem prokazujícím obsah (srozumitelný člověku) takového algoritmu (srozumitelného počítači). Dalším důkazem mohou být emaily, které si strany při uzavírání smlouvy vyměňovaly, výpovědi svědků apod.

Dalším úskalím v případě technické chyby či jiného vymáhání povinností v souvislosti se smart kontraktem je srozumitelné vysvětlení technické povahy smart kontraktu soudu,“ vysvětluje Diblík.      

Našli jste v článku chybu?