Introduktion
Nick Szabo beskrev smarta kontrakt redan på 1990-talet. Då definierade han ett smart kontrakt som ett verktyg som formaliserar och säkrar datornätverk genom att kombinera protokoll med användargränssnitt.
Szabo diskuterade den potentiella användningen av smarta kontrakt inom olika områden som involverar kontrakt och avtal – såsom kreditsystem, betalningshantering och hantering av innehållsrättigheter.
Blockkedjans smarta kontrakt möjliggör skapandet av trustless-protokoll. Det innebär att två parter kan göra åtaganden via blockkedjan utan att behöva känna till eller lita på varandra. De kan vara säkra på att om villkoren inte är uppfyllda så kommer kontraktet inte att verkställas. Utöver detta kan användningen av smarta kontrakt ta bort behovet av mellanhänder, vilket minskar driftskostnaderna avsevärt.
Den här artikeln fokuserar på de smarta kontrakt som körs på Ethereum Virtual Machine (EVM), som är en viktig del av Ethereums blockkedja.
Hur fungerar de?
Enkelt uttryckt fungerar ett smart kontrakt som ett deterministiskt datorprogram. Det utför en viss uppgift när och om vissa villkor är uppfyllda. Därför följer ett smart kontraktssystem ofta "om … då … "-uttalanden. Men trots den populära terminologin är smarta kontrakt inte juridiska kontrakt och inte heller smarta. De är bara en bit kod som körs på ett distribuerat system (blockkedjan).
På Ethereum-nätverket ansvarar smarta kontrakt för att utföra och hantera blockkedje-operationerna som sker när användarna (adresser) interagerar med varandra. Varje adress som inte är ett smart kontrakt kallas ett externt ägt konto (externally owned account/EOA). Därför styrs smarta kontrakt av datorkod och EOA:er kontrolleras av användare.
I grund och botten är Ethereums smarta kontrakt gjorda av en kontraktskod och två offentliga nycklar. Den första offentliga nyckeln är den som tillhandahålls av skaparen av kontraktet. Den andra nyckeln representerar själva kontraktet och fungerar som en digital identifierare som är unik för varje smart kontrakt.
Utplaceringen av alla smarta kontrakt görs genom en blockkedje-transaktion och de kan endast aktiveras när de anropas av en EOA (eller av andra smarta kontrakt). Den första triggern orsakas dock alltid av en EOA (användare).
Nyckelfunktioner
Ett smart kontrakt på Ethereum har ofta följande egenskaper:
Distribuerad. Smarta kontrakt replikeras och distribueras i alla noder på Ethereum-nätverket. Detta är en av de stora skillnaderna från andra lösningar som är baserade på centraliserade servrar.
Deterministisk. Smarta kontrakt utför bara de åtgärder som de var designade för, förutsatt att kraven är uppfyllda. Dessutom kommer resultaten alltid att vara detsamma, oavsett vem som utför dem.
Autonom. Smarta kontrakt kan automatisera alla typer av uppgifter och fungerar som ett självutförande program. Men om ett smart kontrakt inte triggas förblir det i de flesta fall "vilande" och utför inte någon åtgärd.
Oföränderligt. Smarta kontrakt kan inte ändras efter implementeringen. De kan bara "tas bort" om en viss funktion har implementerats tidigare. Därför kan smarta kontrakt tillhandahålla manipuleringssäker kod.
Trustless. Två eller flera parter kan interagera via smarta kontrakt utan att behöva känna till eller lita på varandra. Dessutom säkerställer blockkedjetekniken att data är korrekt.
Transparent. Eftersom smarta kontrakt är baserade på en offentlig blockkedja är deras källkod inte bara oföränderlig utan även synlig för alla.
Kan jag ändra eller ta bort ett smart kontrakt?
Det är omöjligt att lägga till nya funktioner i något av Ethereums smarta kontrakt efter att det har implementerats. Men om dess skapare inkluderar en funktion som kallas SELFDESTRUCT i koden kan denne "ta bort" det smarta kontraktet i framtiden – och ersätta det med ett nytt. Om funktionen däremot inte är inkluderad i koden i förväg går det inte att ta bort den.
De så kallade uppgraderingsbara smarta kontrakten gör att utvecklarna har större flexibilitet över kontraktens oföränderlighet. Det finns många sätt att skapa uppgraderingsbara och smarta kontrakt med varierande grad av komplexitet.
Låt oss med ett förenklat exempel föreställa oss att ett smart kontrakt är uppdelat i flera mindre kontrakt. Vissa av dem är designade för att vara oföränderliga, medan andra har en "ta bort"-funktion aktiverad. Detta innebär att en del av koden (smarta kontrakt) kan tas bort och ersättas, medan andra funktioner förblir intakta.
Fördelar och användningsområden
Som programmerbar kod är smarta kontrakt mycket anpassningsbara och kan utformas på många olika sätt och erbjuder många olika typer av tjänster och lösningar.
Som decentraliserade och självutförande program kan smarta kontrakt ge ökad transparens och minskade driftskostnader. Beroende på genomförandet kan de även öka effektiviteten och minska byråkratiska utgifter.
Smarta kontrakt är särskilt användbara i situationer som involverar överföring eller utbyte av tillgångar mellan två eller flera parter.
ERC-20
Begränsningar
Smarta kontrakt är gjorda av datorkod skriven av människor. Detta medför många risker, eftersom koden är kan ha sårbarheter och buggar. Helst bör de skrivas och distribueras av erfarna programmerare, särskilt när det handlar om känslig information eller stora summor pengar.
Förutom det hävdar vissa att centraliserade system kan tillhandahålla de flesta av de lösningar och funktioner som erbjuds av smarta kontrakt. Den största skillnaden är att smarta kontrakt körs på ett distribuerat P2P-nätverk, istället för på en centraliserad server. Och eftersom de är baserade på ett blockkedjesystem tenderar de att vara antingen oföränderliga eller mycket svåra att ändra.
Att vara oföränderlig kan vara bra i vissa situationer, men väldigt dåligt i andra. När till exempel en decentraliserad autonom organisation (DAO) kallad "The DAO" blev hackad 2016, stals miljontals ether (ETH) på grund av brister i deras smarta kontraktskod.
Viktigt att komma ihåg är att problemet inte kom från Ethereums blockkedja. Istället orsakades det av en felaktig implementering av ett smart kontrakt.
En annan begränsning av smarta kontrakt är relaterad till deras osäkra juridiska status. Inte bara för att det är i en gråzon i de flesta länder, utan också för att smarta kontrakt inte passar nuvarande rättsliga ramar.
Till exempel kräver många kontrakt att båda parter är korrekt identifierade och över 18 år gamla. Den pseudonymitet som blockkedjetekniken tillhandahåller, i kombination med bristen på mellanhänder, kan hota dessa krav. Även om det finns potentiella lösningar på detta är den rättsliga verkställbarheten av smarta kontrakt en verklig utmaning – särskilt när det kommer till gränslösa, distribuerade nätverk.
Kritik
Vissa blockkedje-entusiaster ser smarta kontrakt som en lösning som snart ersätter och automatiserar en stor del av våra kommersiella och byråkratiska system. Även om detta är en möjlig verklighet, är det förmodligen långt ifrån att bli standard.
Smarta kontrakt är verkligen en intressant teknik. Men att vara distribuerad, deterministisk, transparent och något oföränderlig kan göra dem mindre tilltalande i vissa situationer.
I huvudsak bygger kritiken på det faktum att smarta kontrakt inte är en lämplig lösning för många verkliga problem. Faktum är att vissa organisationer får fler fördelar genom att använda konventionella serverbaserade alternativ.
Jämfört med smarta kontrakt är centraliserade servrar enklare och billigare att underhålla och tenderar att presentera en högre effektivitet när det gäller hastighet och kommunikation över olika nätverk (interoperabilitet).
Sammanfattningsvis
Det råder ingen tvekan om att smarta kontrakt har orsakat en stor inverkan på kryptovalutornas värld och att de verkligen har revolutionerat blockkedjevärlden. Även om slutanvändarna kanske inte interagerar direkt med smarta kontrakt driver dessa sannolikt ett brett utbud av applikationer i framtiden, med allt från finansiella tjänster till hantering av försörjningskedjan.
Tillsammans har smarta kontrakt och blockkedjor potentialen att ändra nästan alla delar av vårt samhälle. Tiden kommer att utvisa om dessa banbrytande teknologier lyckas övervinna alla hinder för storskalig användning.