Header Image

Een introductie van Bitcoin

Posted on Sun 19 August 2018 in algemeen

In deze blog geef ik aan de hand van veel gestelde vragen een overzicht van wat Bitcoin nou eigenlijk inhoudt. In vervolgartikelen wil ik wat dieper ingaan op een paar specifieke aspecten zoals het veilig gebruiken van Bitcoins.

Hier zijn de vragen waar ik antwoord op probeer te geven. Klik op een vraag om er direct naar toe te gaan.

Wat is Bitcoin?

Bitcoin staat voor 2 dingen: een digitaal betaalmiddel en het protocol rondom het digitaal betaalmiddel. Ik concentreer me vooral op het laatste. Bitcoin is een decentraal, robuust, internationaal en programmeerbaar betaalsysteem waar er geen noodzaak is om vertrouwen te leggen in een andere persoon of een instituut.

Het laatste punt is erg belangrijk. Bij gewoon geld leg je je vertrouwen in de eerste plaatst in de overheid dat die geen zaken doen waardoor jouw geld veel minder waard wordt en als je niet contant betaalt voor alles leg je je vertrouwen ook in een bank dat die goed met je geld omgaat. In Nederland hebben we de luxe positie dat dat redelijk goed in elkaar zit maar als je inwoner bent van Zimbabwe, Venezuela of Argentinië dan gaat dat een stuk minder op.

Het hele idee achter Bitcoin is om een betaalmiddel te maken waarbij je je vertrouwen alleen legt in het protocol en niet in één of meer individuen. Het protocol en de implementatie daarvan zijn volledig openbaar waardoor je je vertrouwen kunt laten afhangen van het bestuderen ervan. Dat is wat ik heb gedaan. Niets ervan is verborgen. Verder is het systeem zo opgezet dat het niet gecensureerd kan worden. Overheden kunnen het misschien verbieden (hoewel ze zich dan op erg glad ijs begeven omdat dat ook invloed zou kunnen hebben om andere handelsvormen zoals aandelen en obligaties), maar ze kunnen niet voorkomen dat als je een toch transactie doet dat die ook geldig is in het Bitcoin netwerk. Dit is mogelijk omdat het Bitcoin netwerk inherent decentraal is. Er is geen enkele persoon of instantie die op eigen houtje kan bepalen wat er gebeurt in het Bitcoin netwerk.

Een belangrijk doel van Bitcoin is dat internationaal betalingsverkeer ongecensureerd mogelijk wordt waardoor ook de twee miljard mensen zonder een bankrekening kunnen meedoen met de internationale handel. Zo ver zijn we nog lang niet maar het is zeker te realiseren en naar mijn bescheiden mening ook waarschijnlijk.

Het systeem is zo opgezet dat als minstens de helft van de deelnemers eerlijk is, het systeem in zijn geheel eerlijk en te vertrouwen is. We hoeven niet te verwachten dat de helft of meer oneerlijk wordt want op het moment dat dat zou gebeuren raakt het al zijn waarde kwijt en snijden ook de oneerlijke deelnemers zich in de vingers.

De grote innovatie van Bitcoin is dat in tegenstelling tot centrale systemen zoals banken, het kasboek openbaar is en gekopieerd is op duizenden computers wereldwijd (dit staat bekend als de blockchain). Het Bitcoin protocol is zo ingericht dat al deze computers een consensus bereiken van wat op welk moment in dat kasboek staat. Door die consensus is een kwade speler niet in staat om twee maal dezelfde Bitcoins uit te geven.

Waar komt Bitcoin vandaan?

Aan het eind van de jaren 90 en de beginjaren 2000 waren er een aantal mensen met interesse in cryptografie en een politieke ideologie die varieerde van libertarisme tot anarchie, die zich interesseerden voor een betaalmiddel voor het internet. Zij maakten deel uit van een grotere groep die bekend stond als de cypherpunks. De initiatieven die ze in eerste instantie ondernamen waren vooral gecentraliseerd en daardoor eenvoudig aan te pakken. In 2008 publiceerde een persoon of groep personen onder het pseudoniem "Satoshi Nakamoto" een document genaamd "Bitcoin: A Peer-to-Peer Electronic Cash System" met een uiteenzetting van het Bitcoin protocol, gebaseerd op veel eerdere initiatieven. Ook publiceerde Nakamoto software waarmee dit kon worden geïmplementeerd. Op 3 januari 2009 kwamen de eerste Bitcoins in roulatie. Intussen zijn er behoorlijk wat wijzigingen doorgevoerd aan het protocol en vanaf 2011 is er niets meer van Satoshi Nakamoto vernomen. De identiteit achter dit pseudoniem is nog steeds onbekend.

Is Bitcoin een piramidespel?

Nee. Het feit dat een paar mensen die er heel vroeg bij zaten erg rijk geworden zijn door de spectaculaire prijsstijging van Bitcoin neemt niet weg dat er een aantal aspecten aan een piramidespel zijn die ontbreken aan Bitcoin, zoals het gebrek aan transparantie en het feit dat eerdere deelnemers aan een piramidespel alleen winst kunnen maken bij een exponentiële groei van het aantal deelnemers. De waardestijging van Bitcoin is te vergelijken met dat van andere technologische ontwikkelingen (veelal bedrijven) zoals Google, Apple, Amazon e.d.

Er zijn echter wel mensen die proberen mee te liften met de recente bekendheid van crypto currencies door een piramidespel op te zetten en voor te doen als crypto currency. Twee bekende voorbeelden daarvan zijn OneCoin en BitConnect. Het is een goed idee om dus niet blind in te stappen in iets dat de naam "crypto currency" toebedeeld krijgt.

Waar ontleedt Bitcoin zijn waarde aan?

Om deze vraag te beantwoorden moeten we eerst vragen: waar ontleedt überhaupt iets zijn waarde aan. De twee belangrijkste elementen hierin zijn vertrouwen dat de waarde in de tijd gehandhaafd blijft en schaarste. Een goed voorbeeld is het verschil tussen ijzer en goud. IJzer is veel nuttiger maar goud is veel schaarser en daarom is goud veel meer waard dan ijzer. Bitcoin emuleert een soort digitaal goud. Er is een beperkte hoeveelheid Bitcoins die ooit in roulatie komen, namelijk 21 miljoen. Gemiddeld komt elke 4 jaar de helft van de resterende Bitcoins in roulatie. Op dit moment zijn er 17 miljoen Bitcoins beschikbaar en ongeveer in 2140 komt er niets meer bij. Bitcoin is dus een deflationistisch systeem. Het feit dat er "maar" 21 miljoen Bitcoins ooit op de markt komen is geen probleem, want elke Bitcoin is in 100 miljoen stukjes op te delen.

Hoe vergelijkt het zich met andere betaalsystemen zoals bankovermakingen of creditcards?

Zoals ik boven schreef is het Bitcoin kasboek openbaar. Dit wordt gemiddeld elke 10 minuten bijgewerkt met nieuwe bevestigingen van transacties. Elke keer worden 2000 tot 4000 nieuwe transacties toegevoegd aan het kasboek (de blockchain). Het systeem werkt zo dat elke keer als het kasboek wordt bijgewerkt, de oudere transacties meer vertrouwd kunnen worden. Vaak houdt men aan dat als je echt zekerheid wil over je transactie, dat je 6 bijwerkingen moet afwachten (ongeveer een uur dus). Conclusie: Bitcoin transacties zijn erg traag en je kunt er ook niet veel doen (maximaal ongeveer 7 transacties per seconde). Als internationaal betaalsysteem lijkt het dus erg inefficiënt. Als je het vergelijkt met b.v. het aantal verwerkingen die de Visa creditcard aankan, dan kom je op drukke dagen wel op 50.000 transacties per seconde.

Betreffende de het aantal transacties per seconde, daar worden nu oplossingen voor uitgewerkt. De meeste bekende daarvan is het Lightning netwerk, een systeem om het aantal transacties op de blockchain veel kleiner te maken dan het werkelijk aantal transacties. Zie verder voor meer uitleg.

Betreffende de traagheid, dat is een beetje appels met peren vergelijken. Natuurlijk is een banktransactie snel, mits de transactie binnen dezelfde bank gebeurt. Een bank heeft immers een centraal kasboek en een mutatie daarop is is een triviale handeling voor de bank. Als je echter van een bank in land A naar een andere bank in land B overmaakt, dan duurt zo een transactie makkelijk een paar dagen of soms zelf meer. Bij Creditcard transacties is het wel snel, maar alleen voor de betaler. De ontvanger moet 30 dagen wachten voor hij zekerheid heeft dat er geen Chargeback plaats vindt. Een Bitcoin transactie is binnen enkele seconden zichtbaar voor de ontvanger. Als het een klein bedrag betreft (b.v. voor een kop koffie) dan zou de ontvanger daar al genoeg mee kunnen nemen want je moet aardig wat moeite doen om de transactie ongedaan te maken. Op het moment dat er één bevestiging heeft plaatsgevonden (de transactie is dus opgenomen in de blockchain), dan is het al bijna onmogelijk om de transactie ongedaan te maken. Als je een huis of dure auto koopt met Bitcoins is het misschien wel handig om te wachten op zes bevestigingen.

Zijn Bitcoin transacties gratis?

Dat kan, maar dat is vaak niet slim. Als je een transactie doet dan komt dat in een grote hoop van transacties. De miners (degenen die de blockchain bijwerken) maken een selectie van welke transacties ze opnemen in het volgende block die ze maken. Als er meer transacties zijn dan dat er in een block passen, dan selecteren de miners op die transacties waarop de hoogste transactiekosten zijn gezet. Deze kosten worden dus bepaald door degene die de transactie maakt en dat is niet een percentage van de hoeveelheid Bitcoins in de transactie, maar is gerelateerd aan het aantal bytes dat de transactie in het nieuwe block gebruikt. Bij een simpele transactie van ca. 230 bytes maakt het niet uit of je 1 milliBitcoin of 1000 hele Bitcoins overmaakt, de kosten zijn in principe hetzelfde. Hoe hoger je zelf de kosten maakt, hoe eerder jouw transactie door een miner wordt opgepikt. Op dit moment (augustus 2018) is een gangbare fee ca. anderhalve eurocent waard maar in december 2017 was een fee van €20 per transactie niet vreemd. Het aantal transacties dat toen om bevestiging stond te wachten was meer dan in één dag kon worden weggewerkt.

Is Bitcoin anoniem?

Het is mogelijk om anonieme Bitcoin transacties te doen, maar het is extreem moeilijk. Alle Bitcoin transacties zijn namelijk openbaar en iedereen, elke overheid, elke geheime dienst, elke belastingdienst en jij en ik, kunnen ALLE Bitcoin transacties die ooit gedaan zijn, inzien. Het enige is dat in de transacties een Bitcoin-adres staat en geen NAW gegevens van degene die de transactie doet. Als je echter Bitcoins aanschaft via een bankovermaking of met creditcards, dan is het voor b.v. een belastingdienst goed mogelijk om de op de blockchain te volgen wat ermee gebeurt. In een studie van de Cornell universiteit heeft men vastgesteld dat via intelligente software een groot deel van de Bitcoin-transacties gekoppeld kunnen worden aan een persoon.

Dit is een probleem voor Bitcoin omdat het daardoor niet volledig homogeen en inwisselbaar is. Dat is een briefje van tien Euro wel. Er zijn wel enkele initiatieven waarmee men poogt om Bitcoin transacties anoniemer te maken (zoals CoinJoin en MimbleWimble maar het gaat te ver om daar dieper op in te gaan. Ook transacties in het Lightning netwerk (zie later) zorgen voor wat anonimiteit.

Kan het niet gebruikt worden voor illegale activiteiten?

Jazeker, en dat is maar goed ook. Als het niet voor illegale activiteiten gebruikt kon worden, dan was het niet echt geld. Fiat-valuta (zoals de Euro, de Dollar, de Pond en de Bolivar) worden ook gebruikt voor illegale activiteiten, maar dat neemt niet weg dat ze ook nuttig zijn voor legale transacties, zo ook Bitcoin. Bitcoin heeft een slechte naam gekregen omdat vele online criminelen hun toevlucht zochten in betalingen daarmee (denk aan de darknet website "Silk Road" en de vele ransomware virussen) omdat er ten onrechte vanuit gegaan werd dat Bitcoin anoniem was. Dat is het niet, vandaar dat de internet criminelen hun toevlucht tegenwoordig vaak zoeken in andere crypto currencies die meer anonimiteit garanderen.

Wat is mining?

Zoals boven beschreven moet het kasboek worden bijgewerkt. Dat is de taak van de miners. Die pakken een aantal transacties bij elkaar, controleren die transacties op correctheid en verzamelen die transacties op een speciale manier (later meer daarover). Ook de laatste keer dat het kasboek was bijgewerkt wordt in die speciale verzameling meegenomen (waardoor er een chronologische afhankelijkheid ontstaat van de verschillende mutaties op het kasboek). Van die verzameling wordt een soort puzzel gemaakt die de miner probeert op te lossen. De eerste miner die dat lukt vertelt dat door en iedereen controleert of zijn oplossing klopt, inclusief alle transacties die hij heeft goedgekeurd. Als dat klopt dan accepteert men dat en begint het puzzelen opnieuw maar nu met een iets meer bijgewerkt kasboek. De moeilijkheid van de puzzel wordt elke ca. 2 weken aangepast zodanig dat gemiddeld eens in de 10 minuten een puzzel wordt opgelost. Duurt het langer, dan wordt de puzzel minder moeilijk, maar duurt het korter dan wordt de moeilijkheid opgeschroefd. De miners doen dat echter niet voor niets. De miner die de puzzel heeft opgelost krijgt daarvoor nieuwe Bitcoins (plus de transactiekosten van de transacties in zijn block). Op die manier worden nieuwe Bitcoins toegevoegd aan de Bitcoin economie. Dat wordt steeds minder, elke 4 jaar halveert de hoeveelheid nieuwe Bitcoins die per goedgekeurde puzzel worden toegevoegd. In 2009 begon het met 50 Bitcoins, op dit moment is dat 12,5.

Miners worden niet aangewezen. Iedereen die wil kan hardware aanschaffen om de puzzels op te lossen, de software installeren en beginnen met minen. Tegenwoordig is het niet meer lonend om in je eentje te minen. De kans dat jouw ene mining unit een block vindt is zo klein dat je al gauw een paar jaren verder bent. Daarom zie je dat miners zich verenigen in pools, dat zijn meerdere miners die samen het volgende block zoeken en als eentje het block vindt worden de nieuwe coins verdeeld over alle deelnemers (in verhouding naar de hoeveelheid werk die ze hebben verricht).

Wat is een wallet en hoe krijg ik er Bitcoins op?

Een wallet is (i.h.a.) een stuk software op een PC of smartphone waar Bitcoin transacties mee gedaan kunnen worden. Eigenlijk is het woord wallet een foute term. Bij een portemonnee denk je aan iets waar je munten in doet. Een Bitcoin wallet houdt de sleutels vast van jouw Bitcoin-adressen (zie onder voor een uitleg van een adres). Het zou eigenlijk beter "sleutelring" kunnen heten. Wanneer je in je wallet een Bitcoin saldo ziet, dan is dat een optelling van alle UTXO's (Unspent Transaction Output) waar jouw adressen de begunstigde zijn (m.a.w.: als iemand jou een hoeveelheid Bitcoins betaalt en jij hebt dat nog niet gebuikt om er zelf mee te betalen, dan wordt dat meegeteld voor jouw saldo.)

Er bestaan verschillende typen wallets:

  • Full wallet. Dit is een wallet waar de complete blockchain gedownload is naar de PC. Een dergelijke wallet is in staat alle transacties vanaf het allereerste block op correctheid te controleren (en moet dat ook doen). In augustus 2018 is de blockchain 175 GB groot. Miners zijn verplicht een full wallet te gebruiken maar niet alle full wallets doen aan mining. Wel is het zo dat full wallets alle nieuwe transacties controleren en alleen doorgeven als die correct zijn (b.v. dat er geen dubbele uitgave van dezelfde coins hebben plaatsgevonden).

  • SPV wallet. Dit staat voor Simple Payment Verification. Dit is een programma waarbij maar een klein deel van de blockchain (de headers, ongeveer 40 MB) worden gedownload. Wanneer je een betaling ontvangt met een dergelijke wallet dan wordt contact gelegd met één of meer full nodes en wordt aan hun wordt gevraagd of de transactie wel correct is. De meeste Bitcoin gebruikers hebben een SPV wallet.

  • Web Wallet. Dit is een SPV wallet waarbij de opslag van de data online gebeurt (in versleutelde vorm) maar alle transacties die je doet gedaan worden door een programma in je browser. Dat kan op basis van JavaScript of via een browser extensie. Hoewel de data online staat heb je nog altijd volledige controle over de Bitcoins, anders dan bij de Online wallet (zie laatste item), maar je legt wel wat vertrouwen in de website dat ze jou data goed versleuteld opslaan.

  • Paper wallet. Dit is een offline opslag voor Bitcoins. Het is een print op papier van één privésleutel en het bijbehorende Bitcoin-adres. Meestal is voor beide een QR-code uitgeprint zodat het met een smartphone gescand kan worden. Als je voorzichtig bent bij het genereren van zo een paper wallet kun je dat b.v. in een kluis opslaan. De sleutels daarvan zijn niet online en kunnen dus nooit gestolen worden door hackers of computer virussen.

  • Hardware wallet. Dit is een apparaat die je gebruikt in combinatie met een full of SPV wallet. Het verschil is dat de privésleutels niet op je PC zitten maar op het apparaat. Je sluit het apparaat aan via USB en kunt dan cryptografische handelingen die nodig zijn voor een transactie, laten uitvoeren door het apparaat. De privésleutel komt echter noot beschikbaar op de PC.

  • Brain wallet. Dit is niet echt een wallet. Als iemand al zijn geld zou willen smokkelen naar een ander land zou hij dat kunnen met een brain wallet. Dat is een soort wachtwoord (bij voorkeur een lang en niet voor de hand liggend zinnetje die je wel goed kunt onthouden). Dit wachtwoord kun je met software omzetten in een privésleutel en die weer in een Bitcoin adres waar je al je geld op doet. Zolang je het zinnetje onthoudt kun je weer aan je geld komen. Vergeet je echter hoe het precies was, dan ben je alles kwijt. Gebruik je een te voor de hand liggend wachtwoord dan bestaat er een grote kans dat iemand anders er met jouw geld vandoor kan gaan.

  • Online wallet. Deze noem ik voor de volledigheid, vooral omdat het veel gebruikt wordt, maar het is geen wallet. Hierbij heeft men een account bij een derde partij waar je Bitcoins op kunt plaatsen en verhandelen. In feite is dat te vergelijken met een bankrekening, met dien verstande dat je niet de wettelijke bescherming hebt die je bij een bank wel hebt. Onthou de stelregel: het zijn alleen jouw Bitcoins als je over de privésleutels van alle Bitcoin-adressen beschikt. Zo niet, dan zijn het de Bitcoins van de derde partij en heb je alleen de belofte van hun dat ze je dat teruggeven als je erom vraagt.

Als je een wallet geïnstalleerd hebt kun je Bitcoin-adressen genereren en die adressen doorgeven aan anderen zodat zij daar Bitcoins naar toe kunnen sturen. Het mooiste is om je voor diensten te laten betalen in Bitcoins. Je kunt ook Bitcoins kopen, b.v. op websites die handelen in Bitcoins. Een derde mogelijkheid is om bij één van de ca. 25 Bitcoin-geldautomaten in Nederland Bitcoins te kopen (of te verkopen).

Wat is een Bitcoin adres?

Om Bitcoins te kunnen versturen heb je een "sleutelpaar" nodig. Dit zijn twee cryptografische sleutels: een geheime en een publieke sleutel. Met de geheime sleutel kun je een transactie van een digitale handtekening voorzien en iedereen kan met de publieke sleutel controleren dat de handtekening ook klopt. Maar ook de publieke sleutel maak je niet bekend totdat je daadwerkelijk een transactie doet. Er wordt nog een berekening losgelaten op de publieke sleutel (dat wordt met twee verschillende algoritmen gedaan, die heten in de cryptografie een hash) en dan blijft een reeks letters en cijfers over die i.h.a. begint met een 1 (er zijn ook speciale adressen die beginnen met een 3). Een adres kan er b.v. zo uitzien:

1ANwuWUDA8z6Ax2hg8PUSoGWkq2XDbMiVC

(LET OP! Dit is een voorbeeld, stuur geen Bitcoins naar dit adres want die zijn nooit meer te gebruiken!)

Er is ook een controlemechanisme ingebouwd zodat een typefout voorkomen wordt en er geen Bitcoins worden gestuurd naar een niet bestaand adres. Op zo een adres kun je Bitcoins ontvangen en later (m.b.v. je geheime sleutel) weer verbruiken. Een adres heeft een lengte van 160 bits (een bit kan een waarde van 0 of 1 hebben). Hoeveel adressen zijn er dan mogelijk? Het is moeilijk voor te stellen hoe verschrikkelijk groot een getal van 160 bits is. Om je een idee te geven: als je alle zandkorrels op aarde, van alle stranden, woestijnen, zeebodems, etc. bij elkaar optelt dan kom je in de buurt van een getal van 80 bits. Als elke zandkorrel op aarde dus een hele aarde zou voorstellen en je pakt dan alle zandkorrels van al die absurd veel aardes bij elkaar, dan pas kom je bij een getal van 160 bits groot. Het is dus niet voor te stellen dat twee willekeurig gegenereerde adressen hetzelfde zijn.

Is Bitcoin te hacken?

Die vraag kan op meerdere manieren beantwoord worden.

Als je een wallet op je computer of telefoon hebt dan zou een hacker daar op kunnen inbreken en met de Bitcoins in je wallet vandoor gaan. Het is zelf te automatiseren. Er zijn virussen die bekend zijn met bepaalde Bitcoin wallets en die kunnen transacties aanpassen zodat je de Bitcoins verstuurd naar een adres van de virusschrijver o.i.d. Heb je grote hoeveelheden Bitcoins, hou ze dan niet in een wallet op je PC. Gebruik een hardware wallet of een paper wallet om de grote bedragen niet "live" te hebben. Het is ook mogelijk (maar vrij complex en erg bewerkelijk) om een computer die niet aan het internet hangt te gebruiken om transacties digitaal te tekenen en een online computer met alleen publieke sleutels te gebruiken om te kunnen ontvangen, transacties voor te bereiden en offline getekende transacties naar het Bitcoin netwerk te sturen.

Als je een online wallet gebruikt ben je overgeleverd aan de beveiliging van de website zelf. Als die website gehackt wordt dan kun je alles wat je daar had kwijt raken zonder dat je kunt rekenen op garanties die je bij b.v. een bank wel hebt.

Het Bitcoin netwerk is waarschijnlijk niet te hacken. Het is al 9 jaar oud, velen hebben het geprobeerd en er wacht een beloning van meer dan 100 miljard euro voor degene die het lukt. Het systeem werkt zo dat zolang er meer eerlijke dan oneerlijke deelnemers aan het netwerk zijn, dat de oneerlijke deelnemers worden genegeerd. Wat uiteindelijk geldt dat er een consensus is over het kasboek. Daar zitten de oneerlijke transacties niet tussen. Het is wel zo dat als 1 persoon of samenwerkende groep meer dan de helft van de rekenkracht in handen krijgt, dat zij veel kwaad kunnen doen. Dat wordt echter hoe langer, hoe onwaarschijnlijker. Zelfs een overheid die het Bitcoin netwerk zou willen ontmantelen zou zo een verschrikkelijk grote investering moeten doen om dat te bereiken, dat het niet haalbaar lijkt en zelfs als een groot land dat zou doen, dan kan het algoritme worden aangepast zodat ze terug bij af zijn.

Waar kan ik terecht als er iets fout gaat? Kan ik een Bitcoin transactie ongedaan maken?

Kort geantwoord: nergens en nee. Omdat het systeem is opgezet op een manier waarbij je niemand hoeft te vertrouwen, legt het bij jou ook de verantwoordelijkheid dat je je zaken goed op orde hebt. Het is niet te vergelijken met een bankrekening, het is te vergelijken met een bank. Alle controles en beveiligingen zijn jouw eigen verantwoordelijkheid. Let ook op je wachtwoord. Als je het wachtwoord waarmee je transacties verstuurt kwijt raakt, dan ben je ook je Bitcoins kwijt. Erger nog, niet alleen jij bent ze kwijt, de Bitcoin economie in zijn geheel is de Bitcoins kwijt. Hoe meer mensen hun Bitcoins kwijt raken, hoe minder er in roulatie zijn en hoe meer de andere Bitcoins waard worden. Er zijn op dit moment 17 miljoen Bitcoins in roulatie, maar er wordt geschat dat 2 tot 3 miljoen daarvan uit roulatie zijn doordat mensen wachtwoorden zijn vergeten, harde schijven zonder backups stuk gegaan zijn, etc.

Zijn Bitcoins een goede investering?

Die vraag is niet te beantwoorden. Eind 2017 heeft het Bitcoin netwerk zijn zoveelste (zevende of achtste) bubble meegemaakt, waarbij de prijs t.o.v. Fiat valuta spectaculair steeg en ook weer spectaculair daalde. Persoonlijk zie ik veel toekomst in crypto currencies, vooral in Bitcoin, maar het zou evengoed naar een waarde van nul kunnen vallen. Investeer nooit geld dat je niet bereid ben kwijt te raken. Dat geldt overigens niet alleen voor investeren in Bitcoin en andere crypto currencies, maar voor investeringen in het algemeen.

Hoe werkt het?

Hier gaan we een beetje dieper op de techniek in.

  • Het Bitcoin adres. Om Bitcoins te kunnen ontvangen heb je een Bitcoin adres nodig. Om een adres te genereren heb je een cryptografisch sleutelpaar nodig. Die bestaat uit een geheime en een publieke sleutel. Met de geheime sleutel kun je een transactie van een digitale handtekening voorzien en met de publieke sleutel kan een ieder die handtekening controleren. Het crypografisch algoritme dat gebruikt wordt hiervoor heeft te maken met elliptische curves. De cryptografie die elliptische curves gebruikt (en ook andere cryptografie voor sleutelparen) zou in de toekomst gebroken kunnen worden door quantum computers. Daarom publiceert met niet de publieke sleutel als adres, maar een speciaal afgeleide daarvan. Het proces die de afgeleide maakt heet een hash functie en wordt op veel meer plekken gebruikt in het Bitcoin protocol. Het idee van een hash functie is dat je een willekeurige hoeveelheid data door de hash functie haalt waarna je een resultaat met een vaste lengte overhoudt. Dezelfde data levert altijd dezelfde hash op, maar vanaf de hash is het niet mogelijk om de originele data te berekenen. Het Bitcoin adres wordt gegenereerd door eerst een SHA256 hash te gebruiken (die levert een resultaat van 32 bytes) en daarvan weer een RIPEMD hash te maken (die levert een resultaat van 160 bits, 20 bytes dus. Er wordt dan nog een checksum eraan geplakt en dat wordt in een speciaal formaat (n.l. Base58Check) gepresenteerd. Er is ook een nieuw formaat voor Bitcoin adressen in gebruik maar dat geldt alleen voor gebruik met transacties die voldoen aan wijzigingen in het protocol die eind 2017 zijn doorgevoerd.

  • Transacties. Elke transactie bevat één of meer brontransacties (genaamd inputs) en één of meer doeladressen (genaamd outputs). Als er meerdere transacties naar hetzelfde adres gestuurd zijn en ze worden allemaal als bron gebruikt, dan zijn het nog altijd verschillende inputs. Per input moet de digitale handtekening en de publieke sleutel van de transactie worden meegegeven zodat gecontroleerd kan worden dat degene die de Bitcoins besteedt ook daartoe gerechtigd is. (Bijna) alle Bitcoins in de input moeten ook naar output adressen gaan. Als de bron transactie meer Bitcoins heeft dan men wilt betalen aan de begunstigde, dan plaatst men in de output ook een Bitcoin-adres van de betaler voor wisselgeld. Dit noemt men het change address. Per output-adres geef je aan hoeveel van de input Bitcoins daar naar toe gaat. Er wordt ook een programma (script) aangeleverd waarmee wordt aangegeven hoe en wanneer de begunstigde(n) deze Bitcoins kunnen gebruiken. De Bitcoins uit de inputs die niet naar een output adres gaan worden gezien als transactiekosten voor de miner. Transacties worden verstuurd en gaan het Bitcoin netwerk in via een "roddelprotocol": Iedereen vertelt aan ieder ander die het nog niet weet dat er een nieuwe transactie is en wat erin staat. Die verzameling van nieuwe transacties noemt men de mempool.

  • Blocks en de blockchain. Blocks zijn de wijzigingen in het kasboek waar consensus over is. Miners proberen allemaal een nieuw block aan te leveren om zo de nieuwe Bitcoins op te strijken die horen bij het bepalen van het volgende block. Een block heeft op dit moment een maximale grootte van 1 MB. De miner verzamelt voldoende transacties om de 1 MB te vullen (als er voldoende transacties staan te wachten in de mempool, anders pakt hij wat beschikbaar is). Van de geselecteerde transacties moet eerst bepaald worden of ze correct zijn (de digitale handtekeningen kloppen, de inputs zijn niet eerder gebruikt etc). Dan berekent hij een hash waarde van alle transacties. Die hash-waarde wordt gecombineerd met de hash-waarde van het vorige block, nog wat gegevens zoals de huidige datum en tijd en een willekeurig getal (genaamd de nonce). Van dat geheel wordt weer een hash berekend en de uitkomst daarvan moet kleiner zijn dan een vooraf vastgesteld getal. Dat is de puzzel die de miner moet oplossen. Als het resultaat niet kleiner is dan moet hij de nonce wijzigen en opnieuw de hash berekenen totdat het wel kleiner is (of dat het een andere miner wel gelukt is). Is het hem wel gelukt dan vertelt hij dat aan de rest van het Bitcoin netwerk. Iedereen controleert of zijn block klopt en als dat het geval is wordt dat block geaccepteerd in de nieuwe consensus. Omdat er ook een hash van het vorige block in het nieuwe block wordt meegenomen ontstaat er een volgorde, een soort ketting van blocks die van elkaar afhankelijk zijn (de blockchain). Hierdoor wordt de consistentie van de hele blockchain gegarandeerd want als er ook maar het geringste wordt aangepast in het kasboek van 10 blocks geleden, dan klopt de hashwaarde van dat block niet meer en daarmee ook niet de hash van het block dat daarop volgt, en die daarop etc. Doordat die wijzigingen in het verleden niet mogelijk zijn is de blockchain een append-only systeem: wat is toegevoegd kun je niet meer verwijderen of aanpassen.

Kun je Bitcoins alleen gebruiken voor geld?

Nee. Het is mogelijk om specifieke Satoshi's een specifieke betekenis te geven (één Satoshi is een honderdmiljoenste Bitcoin, genoemd naar de pseudonieme ontwerper van het Bitcoin protocol: Satoshi Nakamoto). Zo zou je het eigendom van een auto of van onroerend goed kunnen koppelen aan het bezit van een specifieke Satoshi. Dit systeem staat bekend als colored coins. In de toekomst zou een slimme auto zelf kunnen controleren of degene die de auto instapt (eigenlijk: de wallet op de telefoon van degene die instapt) wel de eigenaar van de auto is en weigeren te starten als dat niet het geval is. Ook is het mogelijk om je eigen willekeurige data toe te voegen aan een transactie. Zo heeft men in het verleden (via meerdere transacties) een foto van Nelson Mandela in de blockchain geplaatst.

Waarom kost het zoveel energie?

Het Bitcoin netwerk kost enorm veel energie. Die energie wordt verstookt door de miners die proberen de hash-puzzel op te lossen om zo Bitcoins te verdienen. Er is een inschatting gemaakt dat de hoeveelheid energie die gezamenlijk verstookt wordt door miners vergelijkbaar is met de energie die een land als Denemarken gebruikt. Tegenstanders van Bitcoin noemen vooral dit als grootste bezwaar. Voorstanders zeggen dat dit de innovatie op gebied van energievoorziening en vooral schone energie stimuleert. Een derde groep ziet graag dat het energieverbruik gebruikt wordt voor iets nuttigs zoals het oplossen van 3D-structuren van eiwitten.

Het idee achter het energieverbruik heet proof of work. Een miner moet een investering doen, zowel in hardware als in energieverbruik. Daardoor wordt hij geforceerd om zich eerlijk te gedragen. Doet hij dat niet dan zal de rest van het netwerk de blocks van die miner negeren en heeft hij voor niets energie verstookt. En als we appels met appels vergelijken: het mijnen van goud en diamanten en het drukken, distribueren en beveiligen van Fiat geld kost ook een hoop energie.

Er is een ander systeem om consensus te creëren zonder veel energie te verbruiken. Dat heet proof of stake. Daarbij kan iemand met voldoende crypto coins, een aantal daarvan vastleggen om daarmee een stem te krijgen in het bepalen van het volgende block. Dit systeem wordt in enkele crypto currencies toegepast maar vereist dat er al coins beschikbaar zijn om dat te kunnen en kan ook leiden tot centralisatie (degenen met de meeste coins bepalen wat er gebeurt).

Hoezo is het programmeerbaar?

Zoals ik eerder aangaf is bij elke transactie ook een script meegeleverd waarmee wordt bepaald hoe en wanneer de Bitcoins beschikbaar komen voor de begunstigde(n). In een script taaltje kun je aangeven wat er moet worden uitgevoerd om de Bitcoins weer beschikbaar te krijgen voor de volgende transactie. Het taaltje is bewust beperkt gehouden waardoor er bepaalde garanties kunnen worden gegeven (b.v., het programma kan nooit "hangen") maar dat neemt niet weg dat er enorm complexe transacties mee gemaakt kunnen worden. Het meest simpele script, wat voor het overgrote deel van de transacties gebruikt wordt, heet P2PKH (pay to public key hash). De Bitcoins worden dan beschikbaar gesteld aan een Bitcoin-adres en de ontvanger moet dan zijn publieke sleutel en een digitale handtekening van de volgende transactie beschikbaar maken om de Bitcoins te kunnen gebruiken. Maar ook een scenario als de volgende is mogelijk:

"Ik stel deze 0,3 Bitcoins beschikbaar voor mijn zoon en mijn dochter, maar pas over een jaar. Die moeten dan beide tekenen om de Bitcoins beschikbaar te krijgen. Hebben ze dat niet binnen 2 jaar gedaan, dan is het ook mogelijk dat of mijn zoon, of mijn dochter, in combinatie met mijn vrouw de Bitcoins beschikbaar krijgen. Zijn de Bitcoins na 3 jaar nog niet geclaimd dan mag mijn broer het in zijn eentje claimen".

Zo een transactie zou normaal de tussenkomst van een notaris vereisen maar hier kun je het programmeren in de transactie zelf. Let wel, hoewel de Bitcoins in eerste instantie pas over een jaar beschikbaar komen voor mijn zoon en dochter samen kan ik er zelf niet meer aan komen. Als ik dat zou willen zou ik dat ook in de transactie moeten programmeren.

Wat is het Lightning netwerk?

Het is mogelijk om (via een slim geprogrammeerde transactie) een soort "betaalkanaal" te maken tussen twee personen. Zodra die transactie geaccepteerd is in de blockchain kunnen de twee personen vele updates maken van de transactie die ze niet op de blockchain bekend maken. Na vele transacties kan één van beide ervoor kiezen om de laatste stand van zaken bekend te maken op de blockchain en daarmee wordt het "kanaal" gesloten. Het is een beetje vergelijkbaar met wanneer je naar de bar gaat, verschillende keren drankjes en snacks besteld en pas als je vertrekt afrekent met de barman. Het verschil is dat je bij een betaalkanaal in Bitcoin de tegenpartij niet hoeft te vertrouwen. Als die probeert je een pootje te lichten door een oude transactie te publiceren kun je hem flink afstraffen door de laatste transactie te publiceren. In het programma van de transactie is geprogrammeerd dat degene die een ongeldig gemaakte transactie publiceert op de blockchain het risico loopt om al zijn tegoed in het kanaal aan jou kwijt te raken.

Het Lightning netwerk bestaat uit een aaneenschakeling van veel van dergelijke betaalkanalen. Daardoor kun je een andere deelnemer betalen zonder dat je met hem een eigen kanaal hebt. Het enige wat je nodig hebt is een transitief pad van betaalkanalen tussen jou en de bestemming. Het mechanisme werkt zo dat je niemand in het pad hoeft te vertrouwen. De transactie lukt of helemaal wel of helemaal niet. De tussenliggende gebruikers kunnen een toeslag vragen voor het gebruik van hun kanalen om de transactie door te geven maar dat zijn minimale toeslagen. Als iemand teveel toeslag vraagt zal een ander pad gekozen worden tussen bron en doel.

Doordat de tussenliggende transacties niet naar de blockchain gestuurd worden zijn transacties via Lightning direct geldig en kunnen heel veel transacties gedaan worden. Als het Lightning netwerk op grote schaal gebruikt gaat worden kunnen miljoenen of zelfs miljarden transacties per seconde worden verwerkt. Ook is er nog een extra feature toegevoegd aan het gebruik van Lightning: de routering tussen bron en doel maakt gebruik van Onion routing, dat betekent dat er cryptografische schillen om de transactie heen zitten waardoor elke tussenliggende persoon alleen weet van wie hij de transactie heeft ontvangen en naar wie hij het moet toesturen. Hij kan niet weten waar het origineel vandaan komt en waar het uiteindelijk naar toe moet. Dat zorgt ervoor dat betalingen via Lightning een stuk anonimiteit krijgen.

Het Lighning netwerk is vanaf maart 2018 actief op het Bitcoin productienetwerk en hoewel er al ongeveer 2000 actieve deelnemers zijn is het nog verre van gebruikersvriendelijk. Er wordt echter erg veel ontwikkeld op dit gebied en het is te verwachten dat bij het beschikbaar komen van gebruiksvriendelijke "Lightning wallets", het gebruik als een olievlek zal groeien.

Wat zijn altcoins? Welke altcoins zijn er?

Bitcoin was het eerste bruikbare digitaal betaalmiddel dat in controle was van gebruikers. Dat was de inspiratie voor vele andere munten met een vergelijkbaar principe en waarschijnlijk zullen er nog veel meer volgen. Deze crypto-munten noemt men vaak altcoins (alternative coins). De meeste daarvan zullen echter nooit echt van de grond komen om verschillende redenen (minder transparant, heeft niets nieuws, heeft kenmerken van een piramidespel etc.). Het is echter zeker niet onmogelijk dat in de toekomst een altcoin de leidende rol onder de crypto currencies overneemt.

Hier volgen een paar bekende altcoins en waar ze zich in onderscheiden:

  • Litecoin. Dit is bijna een kopie van Bitcoin, alleen is het proof of work algoritme anders. Men heeft voor een moeilijkere hash gekozen dan die in Bitcoin. Omdat Litecoin zoveel op Bitcoin lijkt is het vaak een soort testomgeving voor innovaties die men in Bitcoin wil introduceren. Nog voordat de neuzen in één richting zijn bij Bitcoin heeft men de innovatie al geïmplementeerd op Litecoin en dat is vaak het bewijs dat het goed werkt. Bijvoorbeeld Lightning was eerst actief op het Litecoin netwerk voordat het bij Bitcoin actief was.

  • Ethereum. Ethereum is eigenlijk niet bedoeld als betaalmiddel maar voor smart contracts (gedistribueerde, blockchain gebaseerde applicaties). Waar Bitcoin een gereduceerde scripttaal kent, kent Ethereum een Turingcomplete programmeertaal. Dat brengt risico's met zich mee zoals "hangende" programma's (dat hebben ze opgelost doordat het uitvoeren van het programma geld kost en als het programma hangt, dan draait het door tot het geld op is. Met Ethereum kunnen heel innovatieve dingen gedaan worden zoals een DAO (distributed autonomous organisation), dat is een bedrijf zonder bestuur. Het bestuur is eigenlijk een programma.

  • Bitcoin Cash. Dit is een afsplitsing van Bitcoin. Er is geruime tijd een discussie geweest tussen verschillende mensen in het Bitcoin landschap over hoe de traagheid en het beperkt aantal transacties van Bitcoin kan worden opgeschaald. De ene groep was voorstander van een tweede laag bovenop Bitcoin (zoals het Lightning netwerk), een andere groep was het niet eens met de veranderingen die daarvoor nodig waren en waren van mening dat het opschalen van de blockgrootte meer lijkt op het originele idee achter Bitcoin. Daarom zijn zij eind 2017 afgesplitst van Bitcoin met de introductie van 8 MB blocks en zonder de wijzigingen die daarna op het Bitcoin netwerk zijn doorgevoerd.

  • Ripple. Dit is het product van een bedrijf met een eigen blockchain die zich richt op interbancair betaalverkeer. Van de coins (bij Ripple heten die tokens) is meer dan de helft nog steeds in handen van het bedrijf.

  • IOTA. Dit is een vrij nieuwe crypto-munt maar die gebruikt geen blockchain. Bij hun is er een volledig nieuw consensusmechanisme waarbij elke nieuwe transactie twee bestaande transacties moet controleren en valideren. Daardoor ontstaat een soort boom van transacties (IOTA noemt dat de tangle). Op dit moment is er nog een centrale partij nodig om zaken in goede banen te leiden maar de mensen achter IOTA beweren dat dat in de toekomst niet meer nodig zal zijn.

  • Monero. Dit is een blockchain gebaseerde munt waarbij privacy wordt gegarandeerd doordat de link van het adres waarnaar betaald word en het werkelijk adres waarop de coins ontvangen worden te maskeren.

  • ZCash. Een andere blockchain gebaseerde munt met een privacy oogmerk. In dit geval wordt gebruik gemaakt van zero knowlege proofs, een cryptografisch mechanisme waardoor je kunt bewijzen dat je iets weet zonder te onthullen wat het is dat je weet.

  • Cardano. Dit is een blockchain gebaseerde munt die gebruikt maakt van proof of stake voor het bijwerken van de blockchain.

Is de blockchain niet een belangrijkere innovatie dan Bitcoin?

"Blockchain" is op dit moment een absolute hype. Er zijn academische studies van en met kennis van de blockchain technologie kun je een behoorlijk goede boterham verdienen bij financiële instellingen. Je hoort ook heel vaak de term "invitation blockchain" noemen, een blockchain die niet in het openbaar wordt bijgehouden.

Je moet je echter afvragen: wat kun je met een blockchain die niet gedistribueerd en/of openbaar is? Uiteindelijk is een blockchain weinig meer dan een data opslag. De belangrijkste kenmerken daarvan zijn dat het "append only" is (m.a.w., je kunt wel data eraan toevoegen maar niet eraf halen) en dat het enorm traag en inefficiënt is. Het is dus de vraag in hoeverre een instantie er nut bij heeft om dit als opslag van data te gebruiken. Als je centrale controle over je "blockchain" heb, heb je een traag opslagmedium maar het feit dat je er centrale controle over hebt betekent dat het ook de "append only" eigenschap kwijt raakt. Er is immers niemand anders die de correctheid ervan controleert.

Het is misschien voorstelbaar dat een "privé"-blockchain wordt gebruikt tussen instanties (zoals banken) om een consensus te bereiken over b.v. interbancair geldverkeer. Daar kleven op zich ook wat risico's aan omdat kleine banken daardoor makkelijk verdrukt kunnen worden en als banken zelf gaan meebeslissen in het valideren van transacties tussen banken, dan kan er makkelijk een belangenverstrengeling ontstaan.

Kortom, de blockchain is zeker een innovatie maar lijkt niet bepaald nuttig als het geen onderdeel uitmaakt van een open en gedistribueerd consensusprotocol zoals dat van Bitcoin.