Överföringar av pengar är nästan alltid förknippat med någon typ av avgifter och det gäller även Bitcoin men detaljerna skiljer sig rejält mot traditionella system. Vare sig det gäller kortbetalningar, internationella banköverföringar eller valutaväxling så är det vanliga att du får betala en procent av beloppet i avgift till den som utför tjänsten åt dig. Vi är vana vid att företag tar betalt på det här sättet och accepterar det även om avgiften sällan har någon direkt koppling till den kostnad som företaget har för att utföra transaktionen. Vi förstår ju att det inte är svårare för VISA att behandla en betalning på 5000 kronor än en på 500 kronor men ändå får handlaren ofta betala en avgift som är en procent av beloppet. Det är ett smart sätt att ta betalt på eftersom det “känns” mindre att betala en stor avgift för en stor överföring även om det som faktiskt sker bakom kulisserna är precis samma sak, nämligen att några ettor och nollor flyttas runt.
Så funkar Bitcointransaktioner
Bitcoin är annorlunda. För det första så är det faktiskt helt valfritt att betala en transaktionsavgift och under de första åren gick det alldeles utmärkt att få med sin transaktion i blockkedjan utan att betala någon avgift alls. Så varför behövs ens avgifter i Bitcoin? För att förstå det måste vi titta på vad miners gör.
En miner utför mängder av beräkningar så snabbt som möjligt för att bli den som genom ett sorts lotteri får förmånen att skapa ett nytt block i blockkedjan. Ett block innehåller en bunt transaktioner och exakt vilka är faktiskt upp till minern att bestämma. Övriga deltagare i nätverket kommer bara att kontrollera att transaktionerna är giltiga, att de uppfyller de regler för hur en transaktion ska se ut som man tidigare kommit överens om. Miners har så här stor frihet att välja transaktioner eftersom det i ett decentraliserat system är väldigt svårt att kontrollera att en miner tar med vissa specifika transaktioner t.ex. “alla transaktioner med en avgift större än X”. Det beror på att när transaktioner skickas ut på nätverket så tar det olika lång tid för dem att nå olika mottagare, och vi kan inte ens vara säkra på att en viss miner överhuvudtaget sett en viss transaktion (kanske var det tillfälligt nätverksstrul). Så alltså, det måste vara upp till minern att bestämma exakt vilka transaktioner som tas med men eftersom det finns många olika miners betyder det ändå att det aldrig kan bli fråga om censur av en viss typ av transaktioner etc.
Det går normalt sett inte för en miner att ta med alla transaktioner denne känner till eftersom det finns en övre gräns för hur stort ett block får vara (hur mycket data det får innehålla, inte hur stora beloppen får vara). Den här begränsningen av blockstorleken fanns inte från början men lades till av Satoshi tidigt i Bitcoins historia p.g.a. av en oro för vissa typer av attacker (t.ex. så skulle man kunna tänka sig att någon skapar så stora block att resten av nätverket får problem att hantera dem). Begränsningen gör att en miner måste välja vilka transaktioner som ska tas med och det är här avgifterna kommer in i bilden. Till varje transaktion kan bifogas en valfri avgift och dessa avgifter tillfaller minern så det ligger alltså i minerns intresse att försöka få ta del av så mycket avgifter som möjligt. Olika transaktioner är olika stora, vilket beror på tekniska detaljer som vi inte går in närmre på här, men t.ex. så kan en transaktion bli större om du tagit emot många småbelopp och sedan försöker skicka hela detta belopp. Minern kommer alltså inte nödvändigtvis att välja de transaktioner som har högst avgift utan generellt sett de som som har hög avgift i förhållande till sin storlek. Det är inte säkert att det blir exakt det urvalet (se exemplet nedan) men i princip så kommer transaktioner med högre avgifter, mätt i satoshis/byte, att tas med före de med lägre. Om vi låtsas att ett block får vara 1000 bytes stort, vilka av nedanstående transaktioner skulle en miner ta med?
Fee market
Att inte alla transaktioner kan komma med i ett block kan faktiskt ses som en feature eftersom en situation där alla transaktioner fick plats skulle pressa ner avgifterna till noll, eller åtminstone nära noll. Varför är det då en dålig sak? Ja just nu spelar det kanske inte så stor roll eftersom miners även får en blockbelöning i form av nyskapade bitcoin (just nu 6,25 bitcoin per block) men på sikt kommer denna blockbelöning att närma sig noll och då är det enda incitament som miners har för att spendera sin datorkraft den andra belöningen de får i form av transaktionsavgifter. För att Bitcoin ska vara säkert mot s.k. 51%-attacker är det faktiskt viktigt att en stor mängd resurser läggs på mining och det är alltså därmed också viktigt att det finns transaktionsavgifter att hämta.
Den situation där det finns konkurrens om platsen i blocken och där det är den bifogade avgiften man konkurrerar med brukar kallas för fee market, vilket kanske är ett lite missvisande uttryck eftersom det som bjuds ut på marknaden är blockutrymme. Det är hur som helst ett releveant koncept för att säkerheten i Bitcoinnätverket ska bestå.
The mempool
De transaktioner som en miner vid ett givet tillfälle har att välja bland brukar kallas för minerns mempool (“memory pool”, alltså de transaktioner som minern har i datorns minne). För att veta hur stor avgift man bör bifoga för att ha en chans att få med sin transaktion i nästa block är det alltså bra att veta vilka transaktioner som just nu finns i mempoolen så att man vet vad man har att slåss mot. Om alla andra transaktioner har en låg avgift bifogad så behöver ju inte heller du bifoga en speciellt stor avgift. Det finns dock stora svårigheter i att göra den här uppskattningen eftersom man inte vet när nästa block kommer.
Låt oss säga att du direkt efter att ett nytt block skapats skickar ut en transaktion. Du vet att nya block i snitt kommer var tionde minut och du vet ungefär hur många transaktioner som brukar dyka upp under en tiominutersperiod så du kan göra en gissning på hur stor avgift som kommer att behövas. Gissningen kan dock slå väldigt fel för även om 10 minuter är den genomsnittliga tiden mellan två block så kan den vara både kortare och längre, och har du otur så tar det en timme, eller kanske t.o.m. mer. När en timme gått efter att du skickade ut din transaktion så kommer det att finnas massor av transaktioner i mempoolen och konkurrensen om att komma med i nästa block är hårdare. Detta kommer att göra att avgifterna pressas uppåt och de som skickar ut sin transaktion nu har en betydligt bättre bild av vilken avgift som kommer att krävas än vad du hade för en timme sedan. Under sådana här perioder när block kommer glesare kommer det att byggas upp en större pool av transaktioner och det kan ibland ta ganska lång tid innan den minskar till en normal nivå igen. Den transaktion som du skapade för en timme sedan som såg ut att ha stor chans att komma med i blockkedjan på 10 minuter kanske istället får vänta i 6 timmar.
Jochen Hoenicke har på sin sajt en bra visualisering av hur mempoolen ökar och minskar samt hur stor avgift som kan behövas just nu. Här kan man t.ex. se att om någon skapade sin transaktion runt klockan 10 och missade det första blocket så är risken stor att denne fortfarande väntar på att få med sin transaktion.
Replace by fee
En lösning på ovanstående problem med att uppskatta storleken på avgiften är något som kallas för replace by fee. Om du när du skapar din transaktion anger detta val (som vissa plånböcker har stöd för) så kommer miners att acceptera att du i efterhand skickar ut en ny transaktion som är tänkt att ersätta den första (d.v.s. om du gör detta innan den kommit med i ett block). Det är egentligen bara ett önskemål för som du minns så kan miners välja att ta med precis vilken transaktion de vill men eftersom miners generellt sett vill tjäna så mycket pengar som möjligt så är det troligt att de kommer att ta med en ersättningstransaktion om den har en högre avgift än originalet.
I bästa fall skulle kanske din plånbok ha en funktion som (om du sagt att din transaktion är viktig) automatiskt övervakar mempoolen och skickar ut ersättningstransaktioner för att hela tiden säkerställa att du kommer att komma med i nästa block. Men kom ihåg, att även med en sådan funktion så vet du inte om det blir om 10 minuter eller om 1 timme.
Slutsatser
De flesta plånböcker är relativt enkla och brukar ge dig val som “bråttom (kommer med om 1-2 block)" och “inte så bråttom” eller något i den stilen. Det är bra att man förenklar för användaren men det kan också vara bra att som användare förstå att dessa siffror är långtifrån säkra.
Slutsatsen är att du inte bör sätta dig i en situation där det är viktigt att din transaktion går igenom inom t.ex. en halvtimme. Bitcointransaktioner kan ta lite tid, så är det helt enkelt, men när en Bitcointransaktion väl gått igenom, och du väntat ytterligare några block, så har du en transaktion som är skriven i sten på ett helt annat sätt än de elektroniska transaktioner du är van vid. Andra typer av transaktioner. som kortbetalningar, banköverföringar och Paypal, kan dras tillbaka under en lång tid efter att du tycker att transaktionen faktiskt är "klar". Med Bitcoin är en transaktion verkligen klar, och det finns ingen som kan ångra eller återställa en sådan transaktion, vilket är en av Bitcoins verkligt unika egenskaper.
Kommentarer