Bitcoin.nl

Laatste nieuws

Bitcoin in de supermarkt

bananas

Critici van bitcoin hebben het vaak over de relatief lange tijd die er nodig is voordat een transactie voltooid is: gemiddeld duurt het 10 minuten voor de eerste bevestiging. Men vraagt zich dan af hoe bitcoin ooit nuttig kan zijn in het dagelijks leven als je 10 minuten (of zelfs langer) moet wachten voordat je betaling in een winkel afgerond is. In dit artikel gaan we in op de perikelen en oplossingen voor het dagelijks gebruik van bitcoin.

Hoewel er qua veiligheid niet veel boven een transactie met 1 of meerdere bevestigingen gaat, zijn ook onbevestigde transacties in veel gevallen al zeer bruikbaar. Daarnaast wordt er hard gewerkt aan nieuwe technieken die snelle betalingen op een veilige manier mogelijk maken. Eerst kijken we naar wat het probleem precies is met een gewone onbevestigde transactie en vervolgens waarom dit probleem vaak niet een bezwaar is. Tenslotte wordt de nieuwste ontwikkelingen besproken: het Lightning Network.

Het probleem: Double-spending

Een van de belangrijkste knelpunten in de ontwikkeling van een decentrale digitale valuta is het "double-spend" (dubbele uitgave) probleem. Persoon A stuurt digitale munten naar persoon B, maar vrijwel gelijktijdig ook naar persoon C (of naar zichzelf). Hoe is persoon B nu verzekerd dat de transactie bij hem eindigt en niet bij C?

Bitcoin lost dit probleem op met behulp van de blockchain. Slechts een van de twee conflicterende transacties wordt opgenomen in een blok en opname in een blok betekent dat de transactie met zeer hoge waarschijnlijkheid niet meer teruggedraaid kan worden. En hoe meer blokken er volgen op het blok dat de transactie bevat, hoe meer zekerheid je hebt.

De zekerheid van opname in een blok is fijn, maar dit kost voor sommige toepassingen, vooral in winkels en horeca, te veel tijd. De winkelier kan er voor kiezen om geldige transacties zonder bevestigingen te accepteren. Maar, zo zeggen critici, dan loopt hij het risico de betaling te verliezen als een aanvaller direct nadat de winkelier de betaling geaccepteerd heeft, een andere transactie verstuurt die dezelfde bitcoins naar een ander adres doorstuurt. Dit in de hoop dat deze transactie en niet de daadwerkelijke betaling uiteindelijk in een blok wordt opgenomen.

De moeite niet waard?

Een aanval zoals hierboven beschreven lijkt problematisch, maar in de praktijk valt het best mee. In de standaard configuratie zal een Bitcoin node transacties weigeren die dezelfde bitcoins een tweede keer proberen uit te geven. Dus voor een succesvolle double-spend aanval is het belangrijk dat de node van de winkelier de daadwerkelijke betaling als eerste ontvangt, terwijl zo veel mogelijk andere nodes de transactie die de bitcoins terugstuurt naar de aanvaller als eerste binnenkrijgen.

Het is voor de aanvaller dus belangrijk om de tweede transactie zeer snel na de eerste te sturen en het liefst vanaf een totaal andere plek. Op dat moment wordt het een race om te zien welke transactie het eerste de miners bereikt. De transactie die het eerste bij de miner die het volgende blok vindt aankomt, zal waarschijnlijk winnen. Maar gezien de snelheid waarmee transacties rondgestuurd worden, heeft de eerste transactie direct een forse voorsprong.

Een aanvaller moet veel moeite doen om deze methode goed uit te voeren, maar ook dan is succes niet gegarandeerd. De opbrengst, niet hoeven betalen voor wat boodschappen, is de moeite niet waard. Voor transacties met een hogere waarde, bijvoorbeeld bij de aankoop van electronica of een auto, is er vrijwel altijd een periode tussen de betaling en de daadwerkelijke levering en kan dus prima gewacht worden tot de betaling is bevestigd.

Waar de winkelier bij het accepteren van onbevestigde betalingen wel op moet letten is dat de koper geen "Replace-By-Fee" (RBF) flag aan z'n transactie heeft toegevoegd. RBF is een optionele feature van de veelgebruikte Bitcoin Core client waarbij een transactie vervangen kan worden door een transactie met een hogere fee en andere outputs. Met deze functie kan een aanvaller een betalingstransactie vervangen door een transactie die het geld terug stuurt naar de aanvaller zelf. Maar voor een winkelier (of zijn software) is de RBF-flag makkelijk te spotten.

Donder en Bliksem

Hoewel onbevestigde transacties in sommige situaties redelijk veilig zijn, zit de toekomst van bitcoin-betalingen waarschijnlijk in een andere hoek: het zogenaamde Lightning Network. Het Lightning Network is opgebouwd uit payment channels (betalingskanalen).

Een payment channel kun je zien als een soort open rekening. Bij het openen van payment channel tussen twee partijen leggen beide partijen een bepaalde hoeveelheid coins vast. Dit gebeurt via een speciale transactie die naar het Bitcoinnetwerk wordt verstuurd. Zodra dit gedaan is houdt elke partij zelf de huidige balans bij. Zodra een partij een betaling doet stuurt deze een nieuwe update van de gezamenlijke open rekening, voorzien van de juiste cryptografische handtekeningen, naar de andere partij.

Op deze manier kunnen de twee partijen betalingen heen en weer sturen, zo snel als hun onderlinge verbinding dat toelaat. Op ieder moment kunnen beide partijen samen kiezen om het payment channel te sluiten door de laatste stand van de rekening op te sturen naar het Bitcoinnetwerk. In het geval dat de partijen contact verliezen, heeft elke partij de mogelijkheid om na een bepaalde hoeveelheid tijd het kanaal eenzijdig te sluiten. Op het moment dat het kanaal gesloten wordt, ontvangen de partijen hun saldo van het kanaal in de vorm van een gewone Bitcointransactie.

Eenmaal geopend kunnen de participanten in een payment channel onderling transacties blijven uitwisselen, zonder dat deze transacties in de blockchain worden opgenomen. Dit soort transacties worden daarom ook wel off-chain transacties genoemd. De onderliggende cryptografie garandeert dat het niet mogelijk is voor een van de twee partijen om de ander te bestelen.

Hoewel dergelijke 1-op-1 kanalen wellicht aardig klinken, is de beperking snel duidelijk: Hoe vaak stuur je nu betalingen aan dezelfde partij binnen een korte periode? Het potentiële nut van dergelijke kanalen lijkt beperkt. Ware het niet dat het mogelijk is om kanalen aan elkaar te koppelen. Als Alice en Bob samen een kanaal hebben en Bob en Charlie ook, dan is het mogelijk voor Alice om Charlie een betaling te sturen. De betaling loopt dan via Bob en zonder dat Alice of Charlie hoeft te vertrouwen op Bob.

Door payment channels aan elkaar te koppelen ontstaan er een netwerk: het Lightning Network. Binnen zo'n netwerk kunnen alle participanten snel en goedkoop betalingen uitwisselen, zonder dat de blockchain hierdoor overmatig wordt belast. De software voor payment channels en Lightning Networks is reeds in een verregaande staat van ontwikkeling en aan de belangrijkste voorwaarde is sinds kort voldaan: de activatie van de set protocol-uitbreidingen die Segregated Witness of SegWit wordt genoemd.