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...)
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. ________________________ Enige kanttekeningen van mijzelf bij die Bitcoin In tegenstelling tot "gewone"" valuta
en edelmetalen vertoont de waarde van de bitcoin tot nog toe geen
dalende momenten.
Wanneer zou de bitcoin kunnen devalueren?
Verder met de workshop: 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.
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.
|
|