Vad är ett smart kontrakt?
Vad är ett smart kontrakt? Lär dig hur självexekverande program på blockkedjan fungerar, vad de driver, deras begränsningar och risker och hur du kontrollerar ett innan du använder det.
Ett smart kontrakt är ett program som lagras på en blockkedja och körs automatiskt när förutbestämda villkor uppfylls. Det kan hålla och flytta pengar enligt sin kod, utan att en bank, mäklare eller annan mellanhand bestämmer om varje steg ska genomföras.
Smarta kontrakt driver nästan allt i krypto som går utöver enkla betalningar: tokens, decentraliserade börser, låneprotokoll, NFT:er och DAO:er. Att förstå vad de kan och inte kan göra hjälper dig att bedöma både möjligheterna och riskerna med att använda dem.
Så fungerar smarta kontrakt
Idén om avtal som upprätthålls av kod beskrevs av datavetaren Nick Szabo på 1990-talet, med en varuautomat som liknelse: stoppa i rätt mynt, välj en produkt, så levererar automaten den utan någon butiksbiträde.
På en blockkedja ser processen ut så här:
- 1En utvecklare skriver koden, till exempel i Solidity för Ethereum eller i Rust för vissa andra nätverk.
- 2Koden driftsätts i en transaktion och får en egen adress.
- 3Användare anropar kontraktet genom att skicka transaktioner till adressen, ofta med tokens bifogade.
- 4Varje nod kör koden och kommer överens om resultatet, så att utfallet blir detsamma för alla.
- 5Kontraktets tillstånd uppdateras — saldon, ägarregister eller inställningar ändras på kedjan.
Varje steg kostar en nätverksavgift. På Ethereum kallas avgiften gas; se vad gas är i Ethereum för hur den fungerar.
Vad smarta kontrakt används till
| Användning | Vad kontraktet gör | Exempel |
|---|---|---|
| Tokens | Håller reda på saldon och överföringar | Ett ERC-20-tokenkontrakt |
| Decentraliserade börser | Håller pooler av tokens och prissätter affärer med en formel | En automatiserad marknadsgarant (AMM) |
| Utlåning | Tar emot säkerheter, ger lån, likviderar riskabla positioner | En DeFi-penningmarknad |
| NFT:er | Registrerar ägande av unika föremål | En samlings NFT-kontrakt |
| DAO:er | Räknar röster och genomför godkända förslag | Ett kontrakt för styrning på kedjan |
| Multisig-plånböcker | Kräver flera godkännanden för att flytta pengar | Ett projekts kassa |
Många av de här kontrakten anropar varandra, och därför beskrivs DeFi ibland som ”pengalego”. Vår guide till DeFi visar hur bitarna hänger ihop.
Smarta kontrakt vs traditionella avtal
Det hjälper att jämföra smarta kontrakt med de pappersavtal som de flesta känner till.
| Traditionellt avtal | Smart kontrakt | |
|---|---|---|
| Skrivet på | Mänskligt språk | Programkod |
| Upprätthålls av | Domstolar, institutioner, parternas goda vilja | Blockkedjenätverket som kör koden |
| Flexibilitet | Kan omförhandlas eller tolkas | Körs exakt som skrivet om det inte byggts för att uppgraderas |
| Öppenhet | Oftast privat | Kod och aktivitet är ofta offentliga på kedjan |
| Tvistlösning | Domare, skiljemän, advokater | Inget inbyggt sätt att hantera tvister utöver koden |
| Hastighet | Dagar till månader för avveckling | Sekunder till minuter, beroende på nätverk |
Styrkorna är snabbhet, öppenhet och att mellanhänderna försvinner. Svagheten är stelheten: kod kan inte väga in rättvisa eller sammanhang. Om något oväntat händer som utvecklarna inte planerat för följer kontraktet helt enkelt sina regler — även när resultatet uppenbart inte är vad någon avsåg. Vi går igenom detta mer i detalj i Vad är testnet och mainnet?
Vem som skriver och styr smarta kontrakt
Vem som helst kan driftsätta ett smart kontrakt; det finns ingen godkännandeprocess på publika blockkedjor. Den öppenheten möjliggör snabb innovation, men innebär också att bedrägerikontrakt är lika lätta att driftsätta som legitima. När kontraktet väl är driftsatt beror kontrollen på hur det skrevs: vissa saknar ägare helt, vissa styrs av en enda plånbok och andra av en multisig eller en DAO-omröstning med tidsfördröjning. Att veta vilken modell som gäller är en viktig del av att bedöma risken med en app. Läs mer: Attacker mot smarta kontrakt.
Vad smarta kontrakt inte kan göra
Smarta kontrakt är kraftfulla men smala.
- De känner bara till data på kedjan. För att använda information från verkligheten, som priser eller sportresultat, förlitar de sig på orakel som för in extern data på kedjan och som kan fallera eller manipuleras.
- De förstår inte avsikter. Om du skickar pengar till fel funktion eller signerar ett skadligt godkännande gör kontraktet det koden säger.
- De är inte automatiskt juridiska avtal. Att kod körs och att något är juridiskt verkställbart är två skilda frågor.
- De kan inte ångra misstag. En genomförd transaktion förblir normalt genomförd.
Risker med att använda smarta kontrakt
Buggar och attacker
Kod skrivs av människor, och misstag händer. Angripare letar efter brister och kan tömma ett kontrakt i en enda transaktion. Granskningar hjälper men kan inte garantera säkerheten — se hur du bedömer en granskningsrapport för ett smart kontrakt.
Adminnycklar och uppgraderingar
Många kontrakt kan uppgraderas eller har ägarfunktioner som kan pausa handel, ändra avgifter eller skapa nya tokens. Det kan skydda användare i en nödsituation, men skapar också möjlighet till missbruk eller en stulen adminnyckel. Läs mer: Account abstraction förklarat.
Skadliga kontrakt
Bedrägeritokens kan innehålla dolda regler, till exempel att försäljning blockeras eller att enorma överföringsskatter tas ut. Ett kontrakt kan se normalt ut på en tokensida men bete sig helt annorlunda i praktiken. Se även: ICO vs IEO vs IDO.
Godkännanden
Att använda DeFi kräver ofta att du godkänner att ett kontrakt får spendera dina tokens. Obegränsade godkännanden till ett buggigt eller skadligt kontrakt kan senare användas för att ta tokens. Vill du gå vidare kan du läsa Vad är mempoolen?
Så kontrollerar du ett smart kontrakt innan du använder det
- 1Bekräfta adressen från projektets officiella sajt och en oberoende källa.
- 2Slå upp den i en blockutforskare för att se skapandedatum, aktivitet och om källkoden är verifierad.
- 3Leta efter granskningar från kända företag och läs om de hittade problemen har åtgärdats.
- 4Ta reda på vem som styr adminfunktionerna — en multisig, ett tidslås eller en enda plånbok.
- 5Börja smått och begränsa tokengodkännanden till det belopp du behöver.
Vår guide om hur du verifierar en tokens officiella kontraktsadress går igenom de två första stegen i detalj.
Slutsats
Ett smart kontrakt är självexekverande kod på en blockkedja som kan hålla och flytta värde utan mellanhand. Det gör öppen, programmerbar finans möjlig, men innebär också att buggar, dolda adminbefogenheter och skadlig kod verkar omedelbart och oåterkalleligt. Verifiera adressen, förstå vem som styr kontraktet och godkänn bara det du behöver.
Vanliga frågor
Är smarta kontrakt juridiskt bindande?
Inte automatiskt. Ett smart kontrakt är programvara som körs på en blockkedja, inte ett juridiskt avtal i sig. Vissa rättssystem kan erkänna avtal som registreras eller utförs med kod, men det beror på land och omständigheter. Om juridisk verkan är viktig, kontrollera lokal lag eller fråga en kvalificerad rådgivare.
Kan ett smart kontrakt ändras efter att det har driftsatts?
Själva den driftsatta koden kan oftast inte redigeras. Många projekt använder dock uppgraderingsbara lösningar, till exempel proxykontrakt, som låter en administratör hänvisa användarna till ny kod. Den flexibiliteten hjälper till att rätta buggar men innebär också att någon har makt att ändra reglerna. Kontrollera vem som styr eventuella uppgraderings- eller adminnycklar.
Vilka blockkedjor stöder smarta kontrakt?
Ethereum gjorde generella smarta kontrakt populära, och många andra nätverk stöder dem, bland annat BNB Chain, Solana, Avalanche, Cardano och Ethereums layer 2-nätverk. Bitcoin stöder med avsikt bara begränsad skriptning. Varje plattform har egna språk och verktyg, så kontrakt kan inte automatiskt flyttas mellan dem.
Vad händer om ett smart kontrakt har en bugg?
Koden körs exakt som den är skriven, buggen inräknad. Angripare kan utnyttja den för att tömma kontraktet på pengar, och transaktioner kan oftast inte ångras. Vissa projekt kan pausa eller uppgradera kontrakt för att begränsa skadan, medan oföränderliga kontrakt inte kan rättas alls. Granskningar och bugg-bounties minskar men tar inte bort risken.
