Bitcoin.nl

Over Bitcoin

Over Bitcoin

Wanneer we het over Bitcoin hebben, is het handig om een onderscheid te maken tussen twee dingen: het Bitcoin-netwerk met de achterliggende techniek (blockchain) en het betaalmiddel (bitcoins). Verderop leggen we meer uit over de techniek achter Bitcoin, maar we beperken ons eerst tot het betalen met bitcoins: dit zijn de digitale 'munten' die over het netwerk worden verstuurd in transacties en een zekere waarde vertegenwoordigen.

Bitcoins kun je gebruiken om digitaal betalingen te verrichten zonder dat dit hoeft via een bank of ander bedrijf. Je kunt het zien als een soort digitaal contant geld. Officieel wordt het in Nederland echter nog niet erkend als valuta.

Betalen met bitcoin

Een betaling versturen en ontvangen gaat net zo makkelijk als het sturen van een e-mail, alleen stuur je bitcoins niet naar een e-mailadres, maar met behulp van een bitcoinadres – een reeks cijfers en letters – via het Bitcoin-netwerk. Dit is een decentraal, peer-to-peer netwerk vergelijkbaar met Bittorrent. Het netwerk is dus verspreid over de hele wereld; iedereen kan meedoen.

Betalingen worden in het Bitcoin-netwerk opgeslagen in een groot publiek transactielogboek. Hoeveel bitcoins er bij welk bitcoinadres horen staat in dit logboek, het hele netwerk is het dus eens over alle bitcoinbalansen. De 'sleutels' waarmee je je bitcoins kunt uitgeven, staan lokaal opgeslagen in een app op je telefoon of computer. Je beheert dus zelf de toegang tot jouw bitcoins: je bent je eigen bank.

De voordelen

Door het decentrale karakter, de bewezen wiskundige principes (cryptografie) en de grote hoeveelheid rekenkracht in het netwerk biedt Bitcoin een uitermate betrouwbaar betaalmiddel, dat zeer geschikt is voor zowel kleine als grote betalingen. Het is open source, dus iedereen kan het controleren, en niemand kan het stoppen. Andere voordelen zijn:

  • Anonimiteit (Publieke transacties, maar je hebt in principe zelf in de hand of een transactie / adres naar jou te herleiden is.)
  • Relatief lage transactiekosten voor met name internationale transacties
  • Betalingen zijn wereldwijd en vrijwel direct *
  • Betalingen zijn onomkeerbaar

Helaas kent Bitcoin niet alleen maar voordelen, het decentrale karakter komt met een prijs. Bitcoin vraagt bijvoorbeeld veel eigen verantwoordelijkheid van de gebruikers, besluitvorming is moeilijk, mining kost erg veel energie en de decentrale manier van opslag is, hoewel veilig, niet erg efficient. Voor grote transactievolumes en microbetalingen is Bitcoin dan ook te duur. Gelukkig wordt er hard gewerkt aan slimme oplossingen om Bitcoin beter schaalbaar te maken.

* Bitcoins komen over het algemeen binnen een seconde aan bij de ontvanger, maar het duurt nog ongeveer een uur totdat je ervan uit kan gaan dat de transactie definitief is. Dit heeft te maken met de blockchain, waar de transactie in opgenomen moet worden. Verderop leggen we dit uit.

Het Bitcoinprotocol

Het Bitcoinprotocol

Bitcoin is een ingewikkelde nieuwe techniek: om het helemaal te begrijpen zul je het een tijd moeten bestuderen. Maar hoeveel mensen begrijpen hoe de techniek achter het internet werkt? Het belangrijkste is dat je het kunt gebruiken: je hoeft geen expert te zijn om veilig bitcoins te bewaren of te versturen.

Voor wie toch net iets meer wil weten hebben wij onderstaande technische uitleg geschreven. Niet genoeg om jezelf bitcoinexpert te noemen, maar misschien wel om indruk mee te maken in de kroeg 😉. Het veelvuldig gebruik van Engelse termen is volgens ons onvermijdelijk gezien het internationale karakter van bitcoin. (En ook omdat vertalingen als 'delversbeloning', 'blokketen' en 'geheugenplas' nou niet echt lekker klinken...)

De Blockchain & Mining

Bitcoins worden sinds het begin 'aangemaakt' door gebruikers die ze kunnen verdienen door met rekenkracht bij te dragen aan het netwerk en het opslaan/goedkeuren van bitcointransacties. Dit wordt mining genoemd. Iedereen kan hier aan meedoen, echter moet je tegenwoordig flink investeren in hardware wil je er aan kunnen verdienen.

Bitcointransacties worden digitaal opgeslagen in stukken data, zogeheten blocks die aan elkaar gekoppeld zijn als een ketting. Het transactielogboek wordt daarom blockchain genoemd. Deze blocks moeten aan strenge cryptografische voorwaarden voldoen, waaraan slechts kan worden voldaan door heel veel berekeningen uit te voeren. Het vinden van een block wordt steeds moeilijker naarmate er meer computers meerekenen. Daardoor blijft de snelheid waarop ze ontdekt worden ongeveer constant. Er wordt sinds het begin ongeveer iedere 10 minuten een block ontdekt die aan de voorwaarden voldoet. Je zou het kunnen zien als het zoeken naar een naald in een hooiberg, waarbij je de naald in gemiddeld 10 minuten kunt vinden. Komen er meer zoekers dan wordt de hooiberg na verloop van tijd groter gemaakt.

De miner die een block ontdekt (de naald vindt) bepaalt welke transacties er in het block worden opgenomen en krijgt als beloning nieuwe bitcoins, die dus vanuit het niets naar zijn bitcoinadres(sen) worden gestuurd. Dit wordt de block reward genoemd. In het begin waren dit 50 bitcoins per block, momenteel 12,5. Dit neemt stapsgewijs af met de tijd: de beloning halveert iedere vier jaar. Hierdoor is de totale hoeveelheid bitcoins die ooit wordt gecreëerd beperkt tot 21 miljoen. Daarnaast krijgt de miner ook de vrijwillige fees van alle bitcoin-transacties die hij in het block plaatst. Op de lange termijn zullen de transactie-fees de block-reward geheel gaan vervangen.

Bitcoins in omloop

Naast de creatie van bitcoins is mining essentieel voor de veiligheid van het netwerk. Het verschijnen van een block (bevestiging) betekent namelijk dat er een bepaalde, grote hoeveelheid rekenkracht is besteed. Dit principe wordt proof of work genoemd. Hiermee wordt voorkomen dat bitcoins dubbel kunnen worden uitgegeven en het werpt een grote drempel op voor kwaadwillenden, omdat zij heel veel geld zullen moeten investeren om meer rekenkracht te hebben dan de rest.

Transacties en fees

Zoals eerder gezegd is het Bitcoin-netwerk decentraal: er is geen centrale instantie of server die de macht heeft. Iedereen die zich wil aansluiten kan dat doen. Elke computer die meedoet, maakt verbinding met een aantal andere computers. Transacties worden door iedere computer gecontroleerd en als deze voldoet aan de voorwaarden, doorgestuurd aan een aantal andere. Zo verspreiden transacties zich binnen seconden over de hele wereld. Elke computer houdt een kopie bij van het transactiegrootboek (de blockchain) en de transacties die nog opgenomen moeten worden (de mempool). Om je transactie opgenomen te krijgen in de blockchain doneer je een kleine bitcoinhoeveelheid (bijvoorbeeld 0,0002 bitcoin) aan de miner. Je transactie concurreert met andere transacties in de mempool: over het algemeen worden de transacties met de hoogste fee in verhouding tot de transactiegrootte als eerste opgenomen in een block. Als het druk is op het netwerk kan het raadzaam zijn om een wat hogere fee te gebruiken dan normaal, omdat je transactie anders lange tijd onbevestigd kan blijven.

Bitcoinadressen

Bitcoinadressen bestaan uit een combinatie van meestal 34 cijfers en letters, beginnend met een 1. In tegenstelling tot wat veel mensen denken, komen bitcoinadressen niet voor in de blockchain. Een bitcoinadres is eigenlijk slechts een afgesproken notatievorm om mee aan te geven dat bepaalde bitcoins met een bepaalde toegangscode (de private key) uitgegeven kunnen worden. Ook een 3 komt voor als eerste teken, dit zijn meestal geavanceerde transacties: de manier waarop deze bitcoins uitgegeven kunnen worden is veelzijdig en moet bekend zijn bij de ontvanger.

De private key (en daarmee het bijbehorende bitcoinadres) wordt willekeurig gegenereerd. Dit kan omdat er zó veel mogelijke bitcoinadressen zijn, dat de kans dat er ooit een dubbele gegenereerd wordt verwaarloosbaar klein is. Door cryptografische technieken, waar we verderop meer over vertellen, kun je met een bitcoinadres controleren of deze bij een digitale handtekening hoort waarmee (bijvoorbeeld) bitcoins worden overgemaakt.

Inputs en outputs

Bitcoin bevat een eigen scripttaal waarmee veel meer mogelijk is dan alleen bitcoins overmaken. Een bitcointransactie bestaat uit een aantal in- en uitgangen (inputs en outputs), waar een bitcoinwaarde aan gekoppeld is. Je hoeft niet per se een hele bitcoin of veelvoud ervan over te maken: je kan bitcoins splitsen in eenheden tot 8 cijfers achter de komma. Nog niet uitgegeven bitcoins staan verdeeld over zogeheten unspent outputs. Wanneer je een bitcoinbetaling doet, gebruik je één of meerdere unspent outputs als inputs in jouw transactie en creëer je één of meerdere nieuwe unspent outputs met bijbehorende scripts.

Een unspent output kun je zien als een stapeltje digitale bankbiljetten in een digitale kluis, waarbij je aan de juiste voorwaarden moet voldoen (het script oplossen) om de kluis te mogen openen en de output te mogen besteden. Bij een standaard bitcointransactie (waarbij je bitcoinadressen beginnend met een 1 gebruikt) zijn deze voorwaarden vrij eenvoudig: je hebt de private key nodig om de kluis te openen door middel van een digitale handtekening. Vervolgens heb je het ontvangende bitcoinadres nodig om de voorwaarden waaronder de ontvanger de bitcoins kan uitgeven te specificeren. Wanneer je een input gebruikt in een transactie, moet je de digitale kluis helemaal leeghalen. Je kan vervolgens het totaal van de inputs splitsen naar zoveel outputs (nieuwe kluizen) als je wilt. Meestal stop je een deel van de bitcoins terug in een eigen kluis, omdat je niet precies de bitcoinhoeveelheid op de gebruikte unspent outputs wilt overmaken naar iemand anders.

Het is echter ook mogelijk om compleet andere voowaarden te stellen. Bijvoorbeeld een kluis waar twee private keys voor nodig zijn, of twee van drie; dit kan en gebeurt ook al, we noemen het multisignature transactions. Deze geavanceerdere 'kluizen' kun je over het algemeen herkennen in block explorers aan het bitcoinadres dat met een 3 begint. Je kan bitcoins in theorie ook in een kluis stoppen die iedereen kan openen, in een kluis beveiligd met een extra wachtwoord, een kluis die helemaal niet geopend kan worden (als je bitcoins aantoonbaar wilt vernietigen), of in een kluis met een tijdsslot. Ook kun je transacties maken waarin geen bitcoins verplaatst worden, maar waarmee je bijvoorbeeld een contract vastlegd in de blockchain. De mogelijkheden zijn eindeloos.

Beveiliging

De beveiliging van Bitcoin(transacties) is gebaseerd op het cryptografische principe van publieke en privé-sleutels (public-key cryptography). De private key is gekoppeld aan de public key, maar is niet te achterhalen door iemand die de public key heeft. Je kunt met de private key aantonen dat de public key van jou is. Beveiligd internetverkeer – te herkennen aan een slotje en https in het adres – maakt gebruik van een soortgelijk principe. Bij Bitcoin is echter geen sprake van encryptie en decryptie, alle versleuteling gaat één kant op: er is niets te ontsleutelen, alleen te controleren.

Maar eigenlijk is deze weergave al weer te simplistisch. Het bitcoinadres is namelijk gebaseerd op de hash van een public key. Bij het versturen van bitcoins hoef je dus zelfs niet de public key van de ontvanger te weten. Wanneer de ontvanger de bitcoins uitgeeft, zal deze zijn public key wel prijs moeten geven. Dit is één van de redenen (naast privacyoverwegingen) dat sterk afgeraden wordt om bitcoinadressen te hergebruiken: je haalt hiermee een deel van de beveiliging weg.

Van private key naar (P2PKH-)adres:

private key -> (ECDSA) -> public key -> (hashing) -> pubkeyhash -> (base58check) -> bitcoinadres.

Tot slot

Pffff... Al met al behoorlijk complex, maar je hoeft dus geen expert te zijn om veilig bitcoins te bewaren of versturen. Door de werking van Bitcoin kun je een bitcoinadres genereren, de private key uitprinten en op een veilige plek bewaren. Vervolgens kan je bitcoins op je adres laten storten en over 10 jaar waar ook ter wereld met behulp van je geprinte key jouw bitcoins alsnog anoniem uitgeven. En er is dus nog veel meer mee mogelijk!

Meer weten over de techniek of over de mogelijkheden? Wellicht is Bitonic Academie interessant voor u of uw organisatie.

Over Bitcoin Demo video

Demo video

Mining

Onderstaande video geeft een heldere en leerzame introductie over hoe een blockchain werkt en de verschillende concepten die daar een rol spelen. De demotool is hier beschikbaar om het zelf uit te proberen.

Het Bitcoinprotocol