Smarta kontrakt är kod, publicerad på en blockkedja, som genomför en förprogrammerad aktion när specifika kriterier är uppfyllda. Det som skiljer detta mot exempelvis ett affärssystem är alltså att koden är publicerad på en blockkedja i stället för på en centraliserad server. Det unika är därmed vilka decentraliserade funktioner som uppnås.
Den primära fördelen med smarta kontrakt speglar den primära fördelen med decentraliserade blockkedjor, möjligheten att överföra digitalt värde utan tillit till motparten.
Jämförelse mellan centraliserat och decentraliserat
Genom att jämföra centraliserade och decentraliserade lösningar visas styrkan, men även risken, med smarta kontrakt.
Centraliserat
Om du beställer en tågbiljett hos SJ kommer deras affärssystem hantera transaktionen. Swish är ett av de betalningsalternativ som går att välja.
När betalning har genomförts kommer biljetterna att automatiskt skickas ut till det telefonnummer som angetts vid beställning. Det är programmerat i kod hur detta ska ske automatiskt. Liknande system finns hos de flesta företag och ett annat exempel är att växling från SEK till USD automatiskt kan ske via bankens hemsida.
Detta innebär dock att köparen behöver lita på SJ. Företaget skulle, i teorin, kunna ta pengarna utan att skicka någon biljett. De kan även ändra i koden och på detta sätt ändra förutsättningarna utan att användarna vet om det. Samtidigt kan du kontakta SJ om du anser att något blivit fel och via kundtjänst kan ni reda ut problemet. De kan exempelvis makulera biljetter, betala tillbaka pengar osv.
Decentraliserat
Om du önskar växla Ether till Aave, på den decentraliserade börsen Uniswap, kommer smarta kontrakt att hantera transaktionen. Ether används som betalningsmedel.
När betalning har genomförts till det smarta kontraktet kommer det att skicka Aave till den adress varifrån Ether skickades. Det är programmerat i kod hur detta ska ske automatiskt. Liknande lösningar finns på en rad olika decentraliserade applikationer.
I detta fall behöver användaren lita på de smarta kontrakt som bygger upp Uniswap. Kontrakten är publicerade på en blockkedja och utnyttjar därmed säkerheten i blockkedjetekniken. Koden kan inte ändras i efterhand och är öppen för alla att granska. Det finns däremot inte någon kundtjänst att kontakta om du anser att något blivit fel.
Säkert vid P2P
SJ har alltså ingen direkt fördel med att sälja sina biljetter över smarta kontrakt på en blockkedja. Däremot skulle hanteringen på andrahandsmarknaden bli betydligt tryggare om biljetterna var blockkedjebaserade. Detta eftersom biljetterna skulle kunna köpas och säljas via smarta kontrakt, vilket skulle innebära att köparen inte behöver lita på att säljaren verkligen skickar biljetterna efter att de är betalda. Hela köpet skulle ske digitalt och säkert via smarta kontrakt som förflyttar värdet mellan parterna.
Smarta kontrakt kännetecknas av:
Fördelarna med smarta kontrakt är i princip samma fördelar som finns med decentraliserade blockkedjor. Om en tjänst inte har behov av dessa fördelar kan den troligtvis i stället erbjudas av en centraliserad server och därmed finns inte behovet av smarta kontrakt.
Distribuerad
Likt hela blockkedjan är koden distribuerad och finns därmed sparad hos samtliga noder inom nätverket. Detta till skillnad mot centraliserade koder, appar och system som finns lagrade på en centraliserad server. Denna distribution är även förutsättningen för att koden inte ska kunna ändras i efterhand.
Säkert
När kontraktet är publicerat på blockkedjan går det inte att ändra. Detta utifrån blockkedjans konstruktion. Därmed kan enbart det förprogrammerade agerandet genomföras och inget utöver det. Någon enskild aktör kan inte heller ändra i koden.
Det finns däremot vissa undantag. På Ethereums blockkedja kan funktionen ”Self Destruct” implementeras i koden. I korthet kan kontraktet då låsas varpå dess funktion inte längre kan utnyttjas. Istället ersätts det med ett nytt smart kontrakt. Funktionen skapar visserligen större flexibilitet, men innebär även också en lägre grad av säkerhet. För att bibehålla säkerheten kan huvudfunktionerna vara programmerade utan Self Destruct medan mindre komponenter i applikationen är möjliga att uppdatera.
Transparent
Generellt är smarta kontrakt transparenta vilket innebär att koden kan granskas av de som är insatta i det programmeringsspråk som använts. Därmed finns även möjlighet att kopiera koden, göra om delar av den och publicera ett förbättrat kontrakt med enbart mindre förändringar. Exempelvis har flera DEX:ar skapats med minimal förändring av Uniswaps ursprungskod.
Trustless
Med smarta kontrakt kan två, eller fler, parter genomföra transaktioner utan att parterna behöver lita på varandra. Detta genom att kontraktet förmedlar transaktionen när bägge parter har uppfyllt sin del av kontraktet. Ett exempel är att finansiella transaktioner kan genomföras utan behov av en bank som säkerställer att bägge parter följer vad som är avtalat.
Juridiskt komplext
Decentraliserade lösningar innebär även en juridisk komplexitet. Vem som helst kan skapa och publicera ett smart kontrakt helt anonymt. Vad händer om någon använder detta kontrakt och funktionaliteten inte är som förväntat?
Om ett företag lovar en specifik produkt eller tjänst, och detta inte kan uppfyllas, kan kunden kräva pengarna tillbaka eller att en rättsprocess påbörjas. Men det går knappast att ställa en kod inför domstol eller få ersättning från ett försäkringsbolag för att kryptovaluta har skickats till en applikation som inte agerat som förväntat…
Varken smart eller kontrakt
Namnet ”smarta kontrakt” kan upplevas något missvisande. Koden anger enbart vad som ska ske om vissa villkor är uppfyllda. Detta på exakt samma sätt som stora delar av många IT-system fungerar. Koden, eller applikationen, är alltså varken smart eller kapabel att ta egna beslut.
Det är inte heller något kontrakt så som begreppet används på svenska. Ett kontrakt förknippas främst med avtal mellan olika parter och om ena parten inte följer avtalet kan den andra parten kräva skadestånd.
Det ”smarta” med dessa kontrakt är istället att de utnyttjar styrkan i blockkedjetekniken och därmed underlättar överföring av värde utan behov av någon tredje part. Kontraktet kan även ses som ”autonom” efter att det publicerats. Detta utifrån att det inte kan ändras eller stoppas utifall det inte finns kod som anger denna funktion.
Smarta kontrakt – Blockkedjor - Kryptovalutor
Smarta kontrakt används alltså för att bygga upp funktioner och tjänster på blockkedjor. Detta sker för att nå de fördelar som blockkedjetekniken erbjuder – till skillnad från centraliserade lösningar. Detta med bland annat ökad säkerhet, transparens och decentralisering.
Smarta kontrakt kan både användas av centraliserade (privata) och decentraliserade blockkedjor. Grundfunktionen, att genomföra specifika aktioner när vissa villkor är uppfyllda, är densamma. Det finns alltså inte något krav på att det behöver innefatta kryptovalutor. Exempelvis skulle dessa kontrakt kunna användas för att hantera information inom logistikkedjor eller vid bostadsförsäljning.
Begrepp från 1990-talet
Även om begreppet ”smarta kontrakt” primärt används inom blockkedjeteknik så kommer uttrycket från 90-talet och datavetaren Nick Szabo. Han definierade ett smart kontrakt med att vara “a computerised transaction protocol that executes the terms of a contract.”. Bland annat angav han att dessa kontrakt skulle kunna användas för hantering av avtal, betalningar och krediter.
Szabo utvecklade även en av Bitcoins föregångare inom digitala valutor, Bit Gold. Det är alltså tydligt att Szabo förutsåg utvecklingen av digitala tillgångar torts att hans eget försök, med Bit Gold, inte nådda ända fram.
Det skulle dröja över 25 år innan idén om smarta kontrakt blev verklighet. Det krävdes först en säker och decentraliserad blockkedja, Bitcoin, och därefter utvecklingen av en blockkedja med fokus på just smarta kontrakt, Ethereum. En av de största orsakerna till att Ethereum utvecklades var just att smarta kontrakt inte kunde publiceras på Bitcoins blockkedja. Sedan dess har ett flertal blockkedjor skapats med liknande funktion som Ethereum, exempelvis Solana, Algorand och Cardano.