Vad är en Bitcoin obestämd transaktionsutgång (UTXO)?

Nybörjarguiden till Bitcoins UTXO-modell 📕
Oanvänd transaktionsutgång (UTXO) är tekniken som Bitcoin-protokollet använder för att spåra saldon när de rör sig mellan kryptovaluta plånböcker.
När det kommer till att spåra och hantera individuella kryptovaluta saldon, använder blockchain-baserade protokoll vanligtvis en av två olika redovisningsmodeller.
Den ena kallas Kont/Saldo-modellen. Projekt som Ethereum, Tezos och EOS använder denna modell för att spåra saldon när blockchain-användare utför transaktioner. Den andra kallas Oanvänd Transaktionsutgång (UTXO) modellen.
Bitcoin och många andra kryptovalutor som Litecoin, Cardano och Dogecoin använder UTXO-modellen.
Men vad är det egentligen, hur fungerar det och vilka är fördelarna med UTXO jämfört med Kont/Saldo-modellen?
Förstå UTXO-modellen 💻
Historik
Adam Back och den avlidne Hal Finney var två medlemmar av Cypherpunk kryptografi gruppen som bitcoin white paper författaren Satoshi Nakamoto ofta besökte. De två krediteras med att ha utvecklat UTXO-modellen oberoende mellan 1997 och 2004 respektive.
När Bitcoins skapare Satoshi Nakamoto lanserade protokollet 2009, blev det det första operativa digitala valutasystemet som implementerade UTXO-modellen.
Både Hal Finney och Adam Back har länge misstänkts för att vara Satoshi Nakamoto, även om det aldrig har bevisats med säkerhet.
UTXO i ett nötskal
När du skickar bitcoin till någon, sker flera steg programmässigt. Ett av de tidigaste stegen i transaktionsprocessen är att din kryptovaluta plånbok skannar blockchain för det belopp av medel du har. Dessa medel kallas oanvända transaktionsutgångar (UTXOs).
Du kan tänka på UTXOs som växel som blir över från tidigare bitcoin-transaktioner.
Medlen anses vara "oanvända" eftersom de är fritt tillgängliga för dig att skicka till någon eller flytta till en annan plånbok. De kallas "transaktionsutgångar" eftersom de skapades från tidigare transaktioner.
Om du spenderar $12 på lunch med en $20-sedel, skulle du ha en $8-sedel kvar. I det här exemplet skulle den kvarvarande $8 vara en obetald transaktionsutgång. Det skulle gå tillbaka i din plånbok redo att användas för att köpa något annat.
Detta är exakt hur bitcoin UTXOs fungerar. När du gör en transaktion används utgångar från tidigare bitcoin-transaktioner, dvs. din lösa bitcoinväxel, som ingångar för nya transaktioner.
En annan viktig jämförelse mellan fysiska kontanttransaktioner och UTXOs är att båda måste användas i sin helhet och kan inte delas upp. Om du har en 5 bitcoin UTXO och vill skicka någon 1 BTC, måste du skicka hela UTXO värt 5 bitcoin och få en ny UTXO i retur värt 4 BTC minus eventuella avgifter.
Precis som i exemplet ovan där du överlämnar en hel $20-sedel för att betala för en $10-lunch.
När en UTXO används anses den vara "förbrukad" och tas tekniskt bort från cirkulation.
All växel som blir kvar genereras som en helt ny UTXO. Denna del av UTXO-systemet är hur Bitcoin löser problemet med dubbelutgifter.
Precis som du inte kan ge en butik ägaren en $5-sedel och sedan ge samma $5-sedel till någon annan, kan en bitcoin-användare inte framgångsrikt använda samma obetalda transaktionsutgång i två separata digitala transaktioner.
När en person försöker spendera samma UTXO två gånger hamnar de två transaktionerna i en mempool - en slags väntrum för väntande transaktioner. De förblir här tills framgångsrika gruvdrivare som vinner bevis-på-arbete-tävlingen samlar dem i nya block.
Du kan lära dig mer om denna process i vår artikel i Kraken Learn Center Vad är bitcoin-gruvdrift?
Även om båda transaktionerna samlas i två separata block och behandlas samtidigt, skulle en av transaktionerna, på grund av tidsstämpling, verifieras före den andra. Efter att ett antal bekräftelser har passerat (nya block har lagts till blockkedjan) skulle andra noder flagga den andra ogiltiga transaktionen och avvisa den.
Coinbase-transaktioner
Den enda gången en bitcoin-transaktion inte har några ingångar är när nyutvunnen BTC skapas från gruvdrift.
Känd som en coinbase-transaktion, representerar detta den första transaktionen i varje nytt block.
Varje satoshi (delarna av bitcoin) i cirkulation kan spåras tillbaka med hjälp av den transparenta blockkedjan till deras respektive coinbase-transaktion.
Varför använder Bitcoin UTXO-modellen?
Kontosaldo
För att identifiera en användares saldo, även känt som en UTXO-mängd, skannar kryptovaluta plånboksprogramvara blockkedjan för att hitta alla UTXO:er kopplade till den motsvarande offentliga plånboksadressen.
Den totala summan av alla UTXO:er ger en exakt redovisning av hur mycket kryptovaluta en plånboksägare kontrollerar.
När en UTXO spenderas tilldelas mottagarens offentliga plånboksadress beloppet och en ny UTXO registreras på blockkedjan när den har utförts.
Lagring
Bitcoin UTXO:er registreras i olika transaktioner som lagras i block på Bitcoin-blockkedjan. Denna information är dock inte tydligt indexerad, så det kan vara svårt att snabbt söka efter och sammanställa metadata.
När man använder plånboksprogramvara som Bitcoin Core-klienten lagras och indexeras UTXO-metadata med hjälp av en LevelDB-databas. LevelDB är ett öppen källkod-lagringssystem som skapades av Google 2011 och gör det mycket snabbare att lokalisera UTXO:er.
Bitcoin Core-klienten är en populär programvara som används för att ansluta till Bitcoin-blockkedjan. Ursprungligen skapad av Satoshi Nakamoto, underhålls Bitcoin Core nu av en gemenskap av frivilliga utvecklare.
UTXOs under huven 🚗
På en mer teknisk nivå finns det fyra huvuddelar av en transaktion:
- Version: Detta informerar nätverksnoder om vilken version av klientprogramvaran som används. Olika versioner följer olika regler för att verifiera transaktionsdata.
- Locktime: Detta är den tidsmängd som avgör hur snabbt en transaktion läggs till blockkedjan. Denna inmatning dikterar vad den tidigaste möjliga tiden är för att transaktionen ska behandlas av gruvnoder.
- Inmatning: Information som pekar på källan till medlen eller tidigare transaktion där UTXO producerades. Inmatningen innehåller också något som kallas "upplåsningsscript".
- Utdata: Information angående värdet som överförs, plånboken där äganderätten till medlen omfördelas och nya UTXOs bildas. Utdata innehåller också ett "låsningsscript".
Hur UTXOs skiljer sig från fysiska kontanter
De huvudsakliga skillnaderna mellan analogin med fysiska sedlar och UTXO-modellen är att bitcoin och andra UTXO-baserade kryptoaktiver inte är bundna av fasta belopp, dvs. $5, $10, $15, etc. Valfritt belopp av bitcoin (upp till åtta decimaler) kan vara en obelastad transaktionsutdata.
Till exempel kan du ha 0,0003847 BTC kvar från en transaktion.
Detta belopp skulle bli en ny UTXO som måste användas i sin helhet om den används och kan inte delas upp i mindre belopp.
Låt oss säga att John har en kryptovaluta-plånbok med en balans på 1 bitcoin. Hans balans och sammansättningen av den balansen är två olika saker, på samma sätt som du kan ha $100 i din plånbok men det kan bestå av fyra $20-sedlar, två $5-sedlar och en $10.
Låt oss säga att sammansättningen av Johns 1 BTC-balans består av 5 olika obelastade transaktionsutdata.
- 0,138 BTC
- 0,1 BTC
- 0,004 BTC
- 0,73 BTC
- 0,028 BTC
John vill skicka 0,6 BTC till Jane. För att göra detta kommer Johns plånboksprogramvara automatiskt att gruppera ihop ett valfritt antal UTXOs han kontrollerar för att täcka denna transaktion plus eventuella mineravgifter som är involverade för att bearbeta den.
I det här exemplet, låt oss säga att hans plånboksprogramvara automatiskt skickar över Johns bitcoin UTXO värt 0,73 BTC till Jane och returnerar det kvarvarande beloppet minus transaktionsavgifter till John som en ny UTXO.
Detta belopp skickas automatiskt till en växeladress; en separat adress kopplad till din krypto plånbok.
Låsning och upplåsning av skript 🔒
När UTXOs skapas, låses de med mottagarens offentliga plånboksadress. För att använda den UTXO som en ingång i en ny transaktion måste den först låsas upp med avsändarens digitala signatur.
Detta är en annan viktig sak att förstå om bitcoin-transaktioner. När en transaktion görs, flyttas bitcoin inte digitalt från ett konto till ett annat. Istället låses de upp, tilldelas en ny ägare och låses sedan tillbaka igen.
Detta innebär att endast den nya ägaren kan låsa upp medlen med sin digitala signatur och överföra dem någon annanstans; till en annan person eller till en annan plånbok under deras kontroll.
Script är ett programmeringsspråk som används av Bitcoin för att bearbeta transaktioner, inklusive låsning och upplåsning av UTXOs.
- Låsning av skript (ScriptPubKey): När en UTXO är låst, anger låsningsskriptet (känt som ScriptPubKey) villkor som måste uppfyllas innan UTXO kan användas som en ingång. Detta involverar vanligtvis att bevisa att du äger den privata nyckeln som motsvarar den offentliga plånboksadressen som användes för att låsa UTXO genom att tillhandahålla en digital signatur.
- Upplåsningsskript (ScriptSig): För att låsa upp en UTXO måste du uppfylla villkoren som anges av låsningsskriptet, dvs. tillhandahålla en digital signatur som bevisar att du kontrollerar de privata nycklarna som motsvarar den offentliga nyckeln som användes för att låsa UTXO.
Detta förhindrar att någon annan kan få tillgång till och spendera dessa medel.
Vad är Bitcoin-damm?
Bitcoin-damm hänvisar till UTXOs som innehåller små spårmängder av satoshis som är kvar från tidigare transaktioner.
På egen hand skulle dessa mikroskopiska mängder BTC kosta mer i transaktionsavgifter att bearbeta än de var värda, och därför sitter de ofta i växeladresser och väntar på att bli samlade med andra UTXOs och spenderade.
Vad är en dusting-attack?
Dusting-attacker syftar på bedragare som skickar ut damm till hundratusentals olika plånboksadresser. Idén bakom det är att fastställa potentiella mål för social ingenjörsattacker.
En bedragare kommer att övervaka adresser som innehåller det damm de har skickat, och vänta på att ägaren ska göra en transaktion som sammanför UTXOs från olika adresser kopplade till deras plånbok. Eftersom damm UTXOs är så små, finns det en god chans att de kommer att grupperas tillsammans med andra och användas som insatser.
När detta händer kan bedragaren få en uppfattning om vilka medel en person har. De kan sedan välja att infoga phishing-meddelanden i transaktioner som inbjuder ägaren att klicka på en länk som laddar ner skadlig programvara, eller besöka falska webbplatser som imiterar legitima landningssidor och ber om personlig information.
Hur farliga är bitcoin dusting-attacker?
Dusting-attacker ger inte bedragare tillgång till dina medel.
De tjänar bara till att smalna ner vilka adresser som kontrolleras av en viss kryptovaluta-plånbok.
För att minimera din risk för dusting-attacker är det bäst att aldrig klicka på länkar eller besöka webbplatser kopplade till dammtransaktioner.
Börja köpa Bitcoin
Nu när du har lärt dig allt om modellen för obestämda transaktionsutgångar, är du redo att fortsätta din kryptoresa och köpa bitcoin?
Kolla in vår Kraken Learn Center-guide för mer information om Hur man köper Bitcoin (BTC) och registrera dig för ett konto med Kraken idag.