Artikel top billede

Elegant og sikker matematik? Blockchain-kontrakter kan også have smuthuller

Klumme: Et smuthul i en blockchain-kontrakt udformet på blockchain-platformen Ethereum kunne potentielt have kostet investorer over en halv milliard kroner i tab. Der var endda tale om et kendt smuthul, som var blevet opdaget mere end en uge før, episoden fandt sted. Hvad betyder det for brugen af smarte kontrakter på en blockchain?

Ligesom internettet revolutionerede kommunikation, er blockchain-teknologien blevet spået som den næste revolution inden for handel.

Eksempelvis har blockchainteknologien ved anvendelse inden for den finansielle sektor potentialet til at overflødiggøre mange tredjemænd (typisk bankerne) ved overførsler af midler mellem to parter.

Teknologien er matematisk elegant, sikker og gennemsigtig.

Sat på spidsen svarer det til, at når du betaler din ven via MobilePay, er det ikke Danske Bank, der gennemfører overførslen, men derimod en krypteret forbindelse direkte fra din e-wallet til din vens e-wallet (de såkaldte e-wallets svarer typisk til en almindelig bankkonto, men bruges i stedet til opbevaring af blockchain-valuta).

Teknologien er allerede blevet anvendt til valuta, også kaldet 'cryptocurrency', hvor vi blandt andet har set tiltag som BitCoin få en meget blandet modtagelse.

Det nye inden for blockchainteknologi er dog anvendelsen af de såkaldte smarte kontrakter. Jeg har tidligere beskrevet visse juridiske udfordringer i forbindelse smarts contracts og blockchain.

Blockchain-kontrakter

En blockchain-kontrakt er egentlig bare udtryk for en blockchainoverførsel (som beskrevet ovenfor) tilknyttet vilkår. Når dette vilkår opfyldes, gennemføres kontrakten - ganske som ved en almindelig kontrakt.

I almindelige kontrakter må vi i dag stole på, at vores modpart overholder vilkårene, og vi kan ikke som sådan tvinge ham til at overholde dem - i sidste ende kan man selvfølgelig indirekte tvinge ham med domstolenes hjælp.

Fuldbyrdelsen af en blockchain-kontrakt er derimod funktionelt bundet af opfyldelsen af det pågældende vilkår.

Det er enten opfyldt, hvorefter kontrakten automatisk fuldbyrdes for eksempel ved en overførsel af penge, eller også er den ikke opfyldt, hvorefter kontrakten automatisk bringes til ophør.

Blockchain-kontrakten ligner derfor mere et computerprogram end en kontrakt i gængs forstand.

Det lyder jo umiddelbart ret smart. Og det er det også.

Men det betyder samtidig, at blockchain-kontrakter er helt og aldeles nådesløs over for huller og/eller forglemmelser i en kontrakt.

Og netop dette faktum har en flok investorer måtte sande sidste år i den nævnte episode.

The DAO

Her var tale om en crowd-baseret venturekapitalfond, kaldet The DAO, som var reguleret i en blockchain-kontrakt.

Kontrakten, som blandt andet regulerede investeringer, drift og udtrækning af midler fra fonden, var baseret på platformen Ethereum, som er en platform, der kan håndtere blockchain-kontrakter og som har sin egen cryptocurrency tilknyttet kaldet 'Ether' (svarende til BitCoin).

Basalt set udveksles ydelser for Ether gennem blockchain-kontrakterne. Ethereum har sit eget JavaScript-baserede programmeringssprog tilknyttet platformen, som man skal skrive sine kontrakter i.

Kontrakten til grund for The DAO var baseret på en blockchain-kontraktskabelon særligt udviklet til fonde, som var udviklet af Slock.it.

Mere end en uge før episoden var der opdaget en såkaldt 'recursive call'-sårbarhed i kontraktskabelonen, men denne blev ikke betragtet som alvorlig, da stifteren af Slock.it i en blogpost mente, den kun vedrørte en lille del af kontraktskabelonen, som alligevel ikke håndterede værdier (Ether).

Alligevel formåede en snedig investor i The DAO at udnytte fejlen - med store økonomiske konsekvenser.

Investoren oprettede en separat konto og overførte alt Ether i The DAO hertil. Der blev i alt overført 8,26 millioner Ether svarende til 643,5 millioner kroner.

Men hvordan kunne det overhovedet gå så galt?

Smuthullet

The DAO-kontrakten - altså denne udgave af en smart contract - regulerede som nævnt investorernes muligheder for at trække Ether ud af fonden. Dette er der intet unaturligt i.

Når der er tale om en blockchain-kontrakt foregår en sådan regulering ved hjælp af en "funktion".

Funktionen, som regulerede udbetalingen af Ether, var delt op i flere dele, hvoraf to af disse i kombination udgjorde smuthullet.

Den ene del af funktionen bestod af selve udbetalingen af indestående Ether til investoren.

Den anden del af funktionen bestod af opdateringen af balancen på investorens konto.

Det lykkedes investoren at udnytte blockchain-kontraktens selveksekverende natur til at genbruge den første del af funktionen adskillige gange, før den anden del blev eksekveret.

Oversat til dansk: Det svarer til at gå ned i banken, hæve alle pengene på sin konto og derefter bede bankassistenten om at hæve alle pengene en gang til, før bankassistenten når at opdatere balancen på kontoen.

De juridiske aspekter

Det er meget svært at forestille sig, at en sådan situation kunne have opstået, hvis forholdet havde været reguleret af en almindelig kontrakt.

Var en investor kommet og ville hæve sit indestående i en venturekapitalfond flere gange, var han nok blevet mødt med en måbende bestyrelse og et klart og tydeligt nej.

Havde kontrakten været uklar - altså indeholdt et lignende smuthul - ville fonden sandsynligvis i første omgang nægte udbetalingen alligevel og dernæst søge hjælp i aftaleretten, regler om ond tro eller andre retlige midler for måske endeligt at gå rettens vej - det er ikke sikkert fonden ville få medhold i sidste ende, men processerne tager alle en vis tid og involverer ofte flere parter.

Det havde under alle omstændigheder ikke været muligt for investoren uhæmmet at tappe venturekapitalfonden for alle dens midler, med mindre han direkte stjal eller bedragede sig til det.

I sådanne situationer fremstår ulemperne ved blockchain-kontrakternes selveksekverende natur tydeligt. Der er ingen tredjemand eller udefrakommende forhold, som kan "bremse" en utilsigtet udnyttelse af kontrakten.

Det hele sker fra det ene øjeblik til det andet, og så længe handlingen stemmer overens med kontrakten, får man teoretisk set frit spil.

Det kan diskuteres, om udnyttelsen kan betegnes som hacking, hvorfor han i så fald kunne straffes efter den danske straffelov for databedrageri.

Emin Gün Sirer, lektor i datalogi ved Cornell University, er da også usikker på, hvorvidt det kan betegnes som hacking. Han udtaler: "For at betegne noget som et hack, en fejl eller uønsket adfærd, er vi nødt til at have en specifikation af den ønskede adfærd. Vi havde ingen specifikationer af den art for The DAO."

Som resultat af episoden faldt værdien af én Ether med næsten 50 procent over bare fire dage.

Ethereums dilemma

Episoden satte Ethereum i en paradoksal situation. Man ønskede at tilgodese de resterende investorer i The DAO ved at fryse kontoen, hvortil Etherne blev overført med henblik på at tilbageføre dem til rette ejer.

Dette nødvendiggør, at den underliggende kode for Ethereum-platformen laves om (et såkaldt "hard fork"), hvilket kræver at et flertal af alle brugere af Ethereum-platformen, som bidrager til verificeringen af blockchain-kontrakterne (svarende til "BitCoin-miners"), godkender dette.

Det vil ligeledes betyde et brud på et af de fundamentale koncepter bag blockchain-kontrakterne - nemlig at afskære indblanding fra tredjeparter.

Der var tale om en ægte lose-lose situation for Ethereum.

Det var også efter en nøje afvejning af alle hensyn, at Ethereums community besluttede at lave den såkaldte hard fork, hvilket medførte, at de 3 blocks, hvori "hacken" blev udført, manuelt blev omprogrammeret af Ethereums brugere.

Man kan sammenligne det med, at man dirigerer trafikken uden om et stykke ødelagt vej, idet hard forken så ud som denne illustration (kilde: Ethereum.org)

Udfaldet kan synes fair og pragmatisk på den korte bane, men det åbner imidlertid også for, at andre problemer løses på tilsvarende vis, hvilket grundlæggende stri (der imod blockchainens filosofi og på den lange bane unægteligt forringer dens legitimitet, fordi tredjemand alligevel til en vis grad kan udøve bestemmende indflydelse på et ellers decentralt, autonomt system.

Og i hvert fald har hele The DAO-miseren sat et stort spørgsmål ved påstanden fra mange tidlige blockchain- og smart contract-entusiaster om, at disse nye organisationer kunne leve i et totalt vakuum uden traditionel juridisk indblanding.

(Tak til junior associate, Mathias Bartholdy, for hjælp med at skrive dette indlæg.)

Klummer er læsernes platform på Computerworld til at fortælle de bedste historier, og samtidig er det vores meget populære og meget læste forum for videndeling. 

Har du en god historie eller har du specialviden, som du synes trænger til at blive delt? 

Læs vores klumme-guidelines og send os noget tekst, så kontakter vi dig - måske bliver du en del af vores hurtigt voksende korps af klummeskribenter.