Document attestatie op de blockchain

Interessant om zelf eens te ervaren. Het attesteren (echtheid bewijzen) van een document door de hash ervan op een blockchain te zetten. Dat heb ik recent gedaan. Ik koos voor de best beveiligde blockchain die er is: De Bitcoin blockchain.

Mijn vrouw heeft onlangs een post doctorale studie afgerond naar het welzijn van de vrouwen die in de naai-industrie werken in Bangladesh. Ze heeft er (o.a.) een artikel over geschreven. Misschien wordt het vertaald naar het Nederlands. Maar wat nou als de vertaler er mee vandoor gaat en claimt dat het van hem/haar komt?

Nou, als je zelf het originele bestand bewaart en de hash ervan op de blockchain zet, dan kan later altijd bewijzen dat jij dat document op dat tijdstip in je bezit moet hebben gehad. Een documentattestatie. Je moet dan wel het originele document goed bewaren en een degelijke blockchain gebruiken, zoals reeds genoemd.

We gaan aan de slag:

Stap 1. Creëer een PDF bestand van het artikel

Dat kan iedereen. Word, Export as PDF.

Het bestand met het artikel

Stap 2. Genereer een hash

Om te beginnen, wat is een hash? Een hash is een soort digitale vingerafdruk van een bestand. Het is een unieke samenvatting van de gegevens in één of een set bestand(en). Die samenvatting is altijd even kort. Bijvoorbeeld 64 karakters. (De lengte hang van het algoritme af). De bestanden kunnen enorm groot zijn. 15 bioscoop films kan je ook hashen tot een hash van 64 karakters. En je snap dat je niet de andere kant op kan! Vandaar de analogie met ‘vingerafdruk’: Van een vingerafdruk kan je geen mens maken, maar met een mens kan je wel een unieke vingerafdruk maken.

Waar waren we? Oja: Een hash maken van het PDF-bestand. Als je een developer bent zou je het het beste zelf kunnen doen. Je download dan een hashing alogoritme en op je eigen computer maak je de hash. Dan weet je zeker dat het klopt en hoef je niemand te vertrouwen. Helaas. Ik ben dus geen developer, dus ik maakte gebruik van www.bitkassa.nl/TimestampDemo. Ik vertrouw Bitkassa erop dat ze daar een goed algoritme hebben staan. Ik ken ze persoonlijk.

Document uploaden en voila:

Hash gegenereerd op 2018-11-24

Als je goed hebt opgelet valt je nu op dat er geen 64 karakters tellend adres uit is gerold. Dit kortere adres is geschikt om later op de Bitcoin blockchain te gaan zetten. Ik ga er van uit dat Bitkassa de expertise wel heeft om deze vertaalslag van 64 naar 34 goed te maken.

Dat adres, 1JrEzdtvmjrjDYf2xSpyob7u2SYWDmtkxW moet dus op de blockchain komen.

En nog even voor de duidelijkheid: Dit adres verraadt dus niet de inhoud van de publicatie van mijn vrouw, maar is wel bewijs van de publicatie, als je die publicatie goed bewaart.

Stap 3. Het adres op de blockchain zetten

Hoe zet je nou zo’n adres op de blockchain? Da’s eigenlijk simpel. Het adres is in een format dat geschikt is om Bitcoin naar toe te sturen. En als je dat doet, dan roept jouw wallet naar de Bitcoin blockchain cloud, dit adres uit, als een geldig adres waar geld op komt te staan.

Ja je begrijpt het goed: Ontvangstadressen worden dus ter plekke door wallets verzonnen. (Of door een persoon die ‘m genereert op basis van een PDF-bestand). En als er dan geld naartoe verzonden wordt, dan worden ze op de blockchain vastgelegd.

Kijk, voor ik een transactie verzond, was het adres nog leeg:

Adres is nog leeg, volgens blockcain.info

€ 0,10 in Bitcoin verzenden naar dit adres is meer dan genoeg om het adres op de blockchain te krijgen. Iedereen die al eens met Bitcoin heeft gewerkt weet dat het verzenden van geld in 3 stappen verloopt:

  1. Verzenden naar de cloud (mempool)
  2. Wachten tot de transactie wordt opgenomen in een block dat gemined wordt
  3. Klaar!

Dat gaan we nu doen.

Stap 3a. verzenden van €0,10 in Bitcoin

Vanuit mijn wallet verzond ik 0,00002676 BTC naar 1JrEzdtvmjrjDYf2xSpyob7u2SYWDmtkxW. Je ziet hier op een Australische Bitcoin block explorer dat deze transactie in de mempool terecht is gekomen. “0 Confirmations” wil zeggen dat de transactie nog niet in de blockchain is opgenomen.

€ 0,10 is verzonden en in de mempool zichtbaar in Australie

Ook Blockchain.info ziet ‘m:

TX is zichtbaar volgens blockchain.info

En ook dat ie nog niet bevestigd is, dus nog niet in een block zit.

Stap 3b. Wachten. (Ook leuk)

Nu is het afwachten.

Met een transactie als deze had ik geen haast. Dus ik zond een hele kleine commissie mee van 0,0000046 BTC (dat is minder dan 2 Eurocent, in Bitcoin). Het gevolg is dat miners zo’n transactie niet zo interessant vinden om in hun block te stoppen. Ze mogen namelijk de commissie houden, als ze succesvol zijn om als eerste wereldwijd een mathematische uitdaging op te lossen. De winnaar van die uitdaging is namelijk degene het volgende block mag uitroepen aan de andere deelnemers. Miners zullen dus voornamelijk transacties met veel commissie eerst minen.

Goed. Om het wachten aangenamer te maken, gaan we naar www.bitbonkers.com. Een site waar live een prachtige visuele weergave van de blockchain wordt getoond. Je ziet (echte) transacties en (echte) blokken op een plaat vallen. Nu is het dus een kwestie van wachten op het volgende block:

Wachten op het volgende block

Er waren nog meer kleine en grote transacties te bespeuren op de Bitcoin Blockchain die dag. (Eigenlijk altijd wel!)

Er zijn meer transacties

Ik hoopte op bevestiging in Block 551329. Maar dat feest ging niet door, door de lage commissie die ik met het dubbeltje meestuurde.

Een kijken hoe het met de commissie zat. We kijken op een site die de commissies op de bitcoin blockchain mooi in beeld brengt. De pijl was het moment van verzending. Ik stuurde een commissie mee met de kleur blauw. Bij elke zaagtand is er een block gevonden en wordt een aantal tracsacties opgenomen in de blockchain; Met name de lichtere kleuren, want die representeren hogere commissies. Mooi ook om te zien dat blokken onregelmatig worden gevonden in de Bitcoin blockchain. Gemiddeld elke 10 minuten, maar zeker niet regelmatig. Voor de mathematische uitdaging is geen strategie te bedenken. Het is puur gokwerk.

Dat was het moment van verzending

Stap 3c. Klaar!

Uiteindelijk kwam de transactie in block 551337.

Bevestigd!

En nu zie je in explorers dus ook bevestigingen.

Bevestigd!

Klik op deze link om zelf op de blockchain te kijken.

Hier zie je hoe lang het duurde. Iets meer dan een uur.

Daar zat ie in

Tot slot

Tja. En nu is het vooral zaak om dat PDF bestand

  • goed te bewaren,
  • echt nooit kwijt te raken
  • en met niemand te delen!

Want allen dan kunnen we bewijzen, als het ooit nodig zou zijn, dat het document voor het eerst bewijsbaar in ons bezit was.

En in de rechtszaal?

Houdt dit stand in een civiele rechtszaak? Dat vraag je je wellicht af.

Ja. Ik heb het uitgezocht met een advocaat van Watson Law. In Nederland is nog geen jurisprudentie hierover. Maar in Nederland heeft de rechter “vrij bewijsrecht”, d.w.z. dat hij zelf mag waarderen, mag bepalen wat hij als geschikt bewijs aanmerkt.

  • Als de rechter voldoende kennis van Bitcoin en blockchain zou hebben, dan zou hij dit dus als bewijs aanvaarden.
  • Echter, rechters zijn geen technici, en daarom kunnen ze een deskundige benoemen en de uitspraak van die deskundige overnemen.

WatsonLaw geeft stellig aan dat de rechter in dit geval de blockchain zal zien als sluitend bewijs dat de eigenaar van een PDF-bestand, gehashed in het verleden, toen dit bestand in z’n bezit moet hebben gehad.

Attestatie kompleet!