A “blockchain” hálózatok elosztott adattároló képességét a smart contract platformok tranzakció vezérlő képessége egészíti ki. Hasonlóan a “blockchain” fogalom sokfajta jelentéséhez, a “smart contract” kifejezés is több különböző jelentést takar. Amikor egy konkrét probléma megoldását keressük, célszerű ezeket a különféle jelentéseket szem előtt tartani.
“Se nem okos, se nem szerződés”
Ezt a kijelentést nagyon gyakran lehet hallani és olvasni. Szellemesen hangzik, és bizonyos esetekben igaz is – de nem mindig.
Nick Szabo, a “smart contract” kifejezés atyja biztosan nem azzal a céllal vezette be a fogalmat, hogy valami olyasmit írjon le vele ami “se nem okos, se nem szerződés”. Az A Formal Language for Analyzing Contracts című tanulmányában például azt írja le, hogy hogyan lehet jogi szerződéseket számítógép program formájában reprezentálni.
A sokat idézett példájában a fogalmat két lépésben vezeti be:
Egy cola-automata például szerinte egy mechanikus formában implementált, “a világba beágyazott” szerződés (“contract embedded in the world”). Az automata alkotói az adásvétel feltételeit nem papírra írták le, hanem kvázi leprogramozták azzal a működéssel, ahogy az automata a megfelelő pénzmennyiség bedobása esetén kiad egy üdítőt és kidobja a visszajárót. Ha ezt a működést nem egy mechanikai szerkezet, hanem egy szoftver implementálja, akkor az Szabo fogalomrendszerében egy “smart contract”. A smart contractokhoz szorosan kapcsolódik a “smart property”, más néven “proplet” fogalma, ami Szabonál egy olyan szerkezet, amit a szoftver contractok vezérelnek.
Nick Szabo gyakran emlegetett smart contract példája
A “smart contract” fogalom széleskörű elterjedéséért az Ethereum blockchain felelős. Az Ethereum működését leíró dokumentum, az Ethereum White Paper a címében is tartalmazza a kifejezést: A Next-Generation Smart Contract and Decentralized Application Platform.
Ezzel a szóhasználattal az Ethereum alkotói jelentős fogalom zavart okoztak: a kifejezést ugyanis átvették Nick Szabotól, de egészen más értelemben használják. Az Ethereum “smart contract”-okra tényleg igaz, hogy az “se nem okos, se nem szerződés”, amit a White Paper ki is fejt. Egy Ethereum smart contract nem más, mint egy program, amely az Ethereum hálózaton működik, saját tárhellyel és saját “pénztárcával”. A platform semmilyen garanciát nem nyújt arra hogy a programok jogi értelemben korrekt működést implementálnak.
Az Ethereum nyomán a Hyperledger Fabric is átvette a “smart contract” kifejezést. Az Ethereumhoz hasonlóan itt is igaz, hogy a Fabric smart contract “se nem okos, se em szerződés”. Az alkotók valószínűleg érzik a fogalomzavart, ezért a “smart contract” kifejezés helyett időnként a “chain code” kifejezést használják, lényegében azonos jelentéssel. A Fabric chain code tetszőleg program lehet. A platform semmilyen garanciát nem ad arra, hogy ez a program jogilag korrekt módon működik. Még azt sem garantálja, hogy a program determinisztikusan fut le, vagyis többször lefuttatva ugyanazt az eredményt adja – ami egy “szerződés” esetében nem elfogadható.
Corda contractok: az állapot átmenet szabályai
A Corda platformon nem használják a “smart contract” kifejezést, csak a “contract” kifejezést. A contractok a Corda platformon az állapot objektumok közötti átmenetek szabályait rögzítik. A Corda contract platform fejlettebb mint a Fabric chain code platform: a determinisztikus futást legalább garantálja azáltal, hogy a Java Virtuális Gép funkcióinak egy determinisztikus részhalmazát engedi használni.
Okos is és szerződés is
Létezik olyan smart contract platform is, amelynek kifejezett ambíciója hogy implementálja a szerződésjog alapelveit, az eredeti Nick Szabo-féle értelemben.
Ilyen a Daml smart contract platform.
A Daml platformon egy smart contract példány egy olyan objektum, amely jogokat és kötelezettségeket testesít meg. A smart contract kód a sablonokat határozza meg ezekhez a példányokhoz. A platform működésének egyik alapeleme a “party”, vagyis tranzakciós fél, amely valós, a rendszerrel interakcióba lépő embereket vagy alkalmazásokat reprezentál. A tranzakciók validálása biztosítja azt, hogy a contract példányok korrektül reprezentálják a tranzakciós felek között létrejött többoldalú megállapodásokat.