Gulden & Florin BIP39 tool

Inleiding

De afgelopen tijd heb ik me wat meer verdiept in de daadwerkelijke techniek achter Bitcoin, Gulden, Florin en wat er nu precies gebeurd met de herstelzin. Hoe dit precies werkt; wat er aan de achterkant gebeurd. De werking van een nieuw adres elke keer als er een transactie plaatsvindt en alle dingen die met deze techniek te maken hebben vind ik fascinerend.

Zo ook de website van Ian Coleman waar hij een tool gemaakt heeft om een herstelzin terug te kunnen herleiden en vanuit de herstelzin inzichtelijk te maken welke publieke adressen er aan deze herstelzin gekoppeld zijn.

Ik wilde deze website ook gebruiken voor Gulden; maar kwam helaas tot de conclusie dat als ik een herstelzin invoerde en de “coin” op NLG zette; het helaas niet werkte zoals ik wilde dat het werkt. En helaas deze site heeft Florin nog niet geïmplementeerd, maar ook voor Florin zou ik willen dat deze site werkt.

Voor deze post maak ik gebruik van een herstelzin precies zoals jullie zelf ook een herstelzin hebben; maar dit keer maak ik er een publiek om aan te tonen hoe bepaalde dingen werken. De herstelzin die ik in deze post gebruik (en die je zelf kan gebruiken om te checken of alles correct werkt) is:

“female piece crime balance clump option faint refuse innocent require art humble”

Doel

Het doel van dit alles is meervoudig. Ik wil zelf de techniek snappen; tevens ben ik bezig met een aantal projecten waar ik nog niet veel over wil delen, omdat ik niet weet of ik het technisch geprogrammeerd krijg. Wel zal het de Gulden en Florin community kunnen helpen en deze post zorgt hopelijk ook voor meer duidelijkheid hoe de techniek werkt.

Deze post kan op verschillende punten wat technisch zijn; maar ik heb het doel gehad om iets te maken waar elke Gulden en Florin gebruiker iets aan heeft. Ook de mensen die niets met techniek hebben, zouden bepaalde punten in deze post moeten kunnen gebruiken.

Mijn eerste doel is in ieder geval om een tool werkend te hebben zoals Ian Coleman deze gemaakt heeft, maar dat het dan werkt voor Gulden en voor Florin.

Uitwerking – zonder de technische mambo jambo

Dat doel is gelukt. Jullie kunnen die tools vinden op:

Gulden: Gulden – BIP39 – Mnemonic Code (paulwillen.nl)
Florin: Florin – BIP39 – Mnemonic Code (paulwillen.nl)

Ik heb er voor nu nog even twee aparte tools van gemaakt; wellicht ga ik in de toekomst ervoor zorgen dat het één tool wordt, maar vanwege de technische uitdaging was dit even het makkelijkste. Voor het vervolg van de uitleg gebruik ik de Gulden tool en de Gulden wallet; maar het werkt voor Florin exact hetzelfde.

// LET OP: Vertrouw alleen je zelf en ook mij niet! Ik raad je aan om op deze tools NOOIT je eigen 12 woorden in te geven (Daarom heb ik als demo-doeleinden een herstelzin aangegeven, zodat getest kan worden hoe het werkt). Het ingeven van 12 woorden die jijzelf beheert is gevaarlijk op zulk soort tools, en dus ook op mijn site. Als iemand kwaad wil; hackt hij mijn server, plaatst een script op deze pagina’s die de 12 woorden naar zijn email adres stuurt en zo krijgt de hacker een mailtje als iemand de 12 woorden ingeeft. Daarmee heeft hij jou herstelzin en kan je je Guldens/Florin verliezen.

Daar is echter een oplossing voor: Offline opslaan

Offline opslaan kan je in (bijna) elke browser door rechts te klikken en “save as” te kiezen of door te toetsencombinatie “Ctrl+S” te gebruiken. Zet het .html bestandje op een computer zonder internet verbinding (of verbreek de internetverbinding met je huidige computer) en je zult zien dat de tool nog steeds werkt.

Functionaliteiten: De tools bieden onder andere de volgende functionaliteiten:

  1. Het ingeven van een herstelzin (private key) en vervolgens herleiden welke publieke adressen daaraan gekoppeld zijn.
  2. Een eigen herstelzin genereren en daarmee dus publieke adressen genereren zonder dat je een nieuwe wallet hoeft te starten.
  3. Genereren van een groot aantal ontvangstadressen die allemaal herleid worden vanuit deze herstelzin.
  4. Offline opslag van deze tools (zoals eerder al aangegeven)

Omdat er vanuit een herstelzin een cryptografische berekening plaatsvindt om de publieke adressen uit te rekenen is geen internetverbinding nodig. Daarom zijn deze pagina’s ook te downloaden en kunnen ook gebruikt worden op een computer die geen internet verbinding heeft.

Laten we eens kijken wat de publieke adressen zijn op het moment dat ik de herstelzin die hierboven staat in geef in de Gulden App (via Restore wallet):

Eerste publieke adres in de Gulden App: GcAGK86vNcNMqoSQ3P9eAQEa1Esyhup8JN

Als ik nu in de tool dezelfde herstelzin gebruik krijg ik deze lijst met publieke adressen:

Eerste publieke adres die de tool teruggeeft: GcAGK86vNcNMqoSQ3P9eAQEa1Esyhup8JN

Deze adressen komen met elkaar overeen! Wat je dus kan verwachten is dat als je in de tool via de knop “Generate” 12 woorden genereert (iets wat de Gulden app, bij het starten van een nieuwe wallet ook doet) dat deze woorden ook op in de tool werken en dat je dus een mogelijkheid hebt om een wallet te maken, zonder dat je de Gulden App hoeft te gebruiken.

Waar komen de overige adressen vandaan?

Elke keer als er in de Gulden Wallet een transactie plaatsvindt wordt daarna een bepaald commando uitgevoerd om een nieuw adres te tonen. Dit kan ook handmatig gegenereerd worden door in de Gulden App te gaan naaar: Help-Debug Window – Tabblad Console en daar in te tikken: getnewaddress. Als ik dat in een wallet doe waar bovenstaande herstelzin is ingevoerd krijg ik de volgende output:

Het tweede adres welke ik terugkrijg is: GbZ7ZpnVzchJGiVxbCKiX2S2979eKHswbo

En als we kijken in de lijst in de tool zien we dat als tweede adres exact dit adres ook naar voren komt.

Accounts

Een belangrijke functie van de Gulden Wallet is het gebruik van accounts. Als ik een nieuw account aanmaak in de Gulden Wallet – krijg ik weer een nieuw ontvangstadres. Deze is ook in de tool te herleiden:


Het adres welke naar voren komt bij een nieuw account: GTUx4A5s1QqRBqcLFcyJEcgjNwowanUDRS

Als ik in de tool de waarde “account” ophoog van 0 naar 1, zal een compleet nieuwe lijst met adressen gegenereerd worden..

Aanpassing van account naar “1”

De nieuwe adressen die gegenereerd zijn.

En het eerste adres in deze lijst komt (uiteraard) weer overeen met het adres welke ook in de Gulden App getoond wordt als er een nieuw account gemaakt wordt.

Gebruikersscenario’s

Wat kan je nu zoal met deze tools?

Met deze tools kan je, zonder gebruik te maken van de Gulden software, zien welke adressen gekoppeld zijn aan een herstelzin. Dit is handig voor het geval je een complete cold-wallet wil maken, die nog nooit verbonden is aan het internet.

Ook is het mogelijk om een groot aantal ontvangstadressen voor je wallet te weten; voordat je ze daadwerkelijk in de app ziet. Hier zijn een hele hoop use-cases op te verzinnen die je kan gebruiken bij bijvoorbeeld betalingen.

Verder dient deze tool als basis om hier verder te kunnen bouwen naar leuke applicaties/services. De tool van Ian Coleman is echt geweldig om te kunnen gebruiken, en ik wilde gewoon graag deze ook voor Gulden en Florin werkend hebben om hier in de toekomst verder te kunnen bouwen.

Ik hoop dat deze tools helpen bij het beter begrijpen wat de Gulden software nu precies doet bij het uitgeven van een nieuw adres; ook hoop ik dat mensen er wat aan zullen hebben bij het maken van een cold-wallet en kan deze tool voor een hoop andere toepassingen (die ik nu niet kan bedenken) gebruikt worden.

Kopje Koffie

Uiteraard heb ik zoals ik in het begin aangaf veel geleerd van het proces hoe het principe van een HD-wallet werkt. Dit heeft me echter ook erg veel tijd gekost en ik hoop dat ik iets voor de community kan betekenen door deze tools publiekelijk openbaar te maken.

Mochten deze tools je geholpen hebben, dan zou ik het op prijs stellen als je me een kopje koffie over wil maken:

Gulden: GKki8GKC11YZXiJGGXrU3WynBpPMT9DsQ7
Florin: NZEdCNSDbB6uWqwY3T2sFix7JDeUHmybAu

Calculate Gulden Witness yield

First of all – Pow2 isn’t released yet – So this post is hypothetical. The contents of this post will be valid once the Gulden PoW2 update rolls out and witnessing is enabled.

We get a lot of questions about how you can calculate the yield of your witness account. Basically you cannot calculate it; but there is a site which attempts to give you an estimate: https://projectify.me/witness/

To have the complete picture:

The yield of your witnessing is based on a variable witch is currently unknown AND changes every day/hour/minute That value is the “TotalNetworkWeight”
Every Witness account has a Weight – That weight can be calculated through a formula in the PoW2 Whitepaper (Page 34).
TotalNetworkWeight is the weight of all the witness accounts combined and can currently only be estimated.

When Witnessing is released TotalNetworkWeight is a value that can be retrieved from RPC (through the Gulden-app) and so that value is transparant. Thus you can calculate what your weight is compared to the total network weight. Based on that you can estimate how often your witness account is selected for witnessing and thus how often you should be able to witness. When your weight is more than 2% of the TotalNetworkWeight your weight will be reduced to 2% for the selection. If you’re account is selected to witness you’ll get in a “cool-of” period of 100 blocks.During that time you cannot witness with that specific Witness account. Based on an estimation of 576 blocks per day IF you have a super strong network weight theoretically you can only witness 5.76 times per day (or 115 Gulden per day; because each witness action gives you 20 Gulden).

Therefore I think your maximum yield is 126.144 Gulden in 3 years per witness account. And that is based on super positive values (like your account gets selected every time the first time you’re selected to witness).

I think the values on the website https://projectify.me/witness/ are WAY over-estimated and don’t represent anywhere near what’s able to witness in 3 years.