Meewerken aan de crypto-space: Een eigen Bitcoin en Lighting node met myNode op de Raspberry Pi bakken

Meewerken aan de crypto-space: Een eigen Bitcoin en Lighting node met myNode op de Raspberry Pi bakken

Eerder heb ik al aangegeven dat het belangrijkste is dat de crypto’s daadwerkelijk gebruikt worden. Buiten het ontvangen en verzenden van Bitcoin, de fun apps, en hier en daar een bonus moet het gebruikt worden. Een significant onderdeel daarin is het meedoen aan de decentralisatie. Bijvoorbeeld door het participeren in het Bitcoin netwerk, zijn veiligheid en de transacties door een node te hosten. Er zijn diverse projecten om op je eigen hardware (of kant en klaar aan te schaffen, wat buiten deze blog post gehouden wordt) een Bitcoin node te draaien. En deze bijvoorbeeld uit te breiden met een Lighting node functionaliteit.

Daarnaast moet ik gewoon af en toe mijn inner-nerd onderhouden….. (hoewel ik de laatste jaren mijzelf aardig kan inhouden met naast het fulltime werken meerdere thuis projectjes er op nahouden. Die veel tijd vreten…). En ik heb ik toch een externe harddisk van 2TB en Raspberry Pi 3 liggen die op dit moment niets aan het doen zijn. Tijd voor wat nerd magie, met een eerste post over het waarom en de initiële installatie. De waarom en wat, en de hoe.

Start de motoren voor project VeelVoorminder’s myNode.

 

myNodeRunning.png

 

Waarom een Bitcoin node?

 

Bitcoin Nodes.png

 

De waarde van een cryptocurrency is zo veilig als het netwerk. Binnen de context van Bitcoin vertaalt deze beveiliging zich in het valideren en verifiëren van transacties in de nodes die in het Bitcoin netwerk actief zijn. Echter het valideren van transacties in elke node binnen bitcoin is een tijd- en resource intensieve activiteit. Dit kan in sommige situaties leiden tot een verstopping of vertragingen in de verwerking van de transacties.

Om dit soort problemen op te lossen, is het netwerk van bitcoin verdeeld in lichtgewicht en volledige nodes (de light en full varianten). De eerste (light) zijn sneller in het verwerken van transacties dan de laatste. De Light nodes downloaden niet de volledige en alle transacties van de blockchain van Bitcoin, deze downloaden een gedeelte. Bij de delen van transacties die wel gedownloaded worden, wordt snelheid bereikt door alleen koptekstgegevens (headers) te downloaden die betrekking hebben op die transacties.

De Bitcoin full node is een node welke transacties en blokken volledig valideert. Bijna alle nodes helpen het Bitcoin netwerk door transacties en blokken van andere full nodes te accepteren, die transacties en blokken te valideren, en ze vervolgens door te geven aan andere nodes. De meeste full nodes bedienen ook clients door hen in staat te stellen hun transacties naar het netwerk te verzenden en door hen te informeren wanneer een transactie hun portemonnee beïnvloedt. Als niet genoeg knooppunten deze functie uitvoeren, kunnen clients geen verbinding maken via het peer-to-peer-netwerk – ze moeten in plaats daarvan gecentraliseerde services gebruiken.

Veel mensen en organisaties helpen door vrijwillig full nodes te gebruiken met behulp van (reserve-) computers en Internet bandbreedte. Er zijn altijd meer vrijwilligers nodig om Bitcoin te laten groeien. En dan helpt het ook om makkelijke kant-en-klaren software oplossingen te hebben. Dat maakt de instap vriendelijker.

Notitie: er zijn naast myNode ook andere opties voor het draaien van een full node. Voor nu heb ik het bij myNode gehouden.

 

Waarom Lightning node?

Lighting Network.png

 

Lightning Network is een laag bovenop het Bitcoin netwerk, een soort laag 2 als we in technische termen blijven. De oorsprong hierin is dat Bitcoin goed geschikt is om onderling extreem veilig data te versturen (bijvoorbeeld voor waarde), alleen is Bitcoin minder geschikt om dat snel, anoniem en goedkoop te doen voor kleine bedragen. Bijvoorbeeld die snelheid. Bitcoin zelf heeft hier al een potentiële bottleneck. Het Bitcoin netwerk kan namelijk maar een stuk of 10 transacties per seconde aan. Mede daarom is (en wordt) het Lightning Network ontwikkeld als laag bovenop Bitcoin om dit soort dingen wel mogelijk te maken. Waarom dan je eigen node? Nou, wederom meedoen. Je kan je eigen node gebruiken om lightning netwerk betalingen mee te versturen en ontvangen. Hoe meer vrijwilligers met hun eigen nodes, hoe beter het is voor het Bitcoin en Lightning ecosysteem. Daarnaast is het mogelijk er satoshi’s (kleinste deel van de Bitcoin) mee te verdienen als vergoeding van het hebben van een Lightning node, kanalen open te hebben met andere nodes en in je node/kanalen waarde te hebben. Oja en andere je kanalen gebruiken om Bitcoin te verplaatsen dan is daar een kleine vergoeding (en als je je stroomrekening en je Internet abonnement hebt afgeschreven kan je dus wat verdienen 😉 ).

 

Wat is myNode dan?

myNode logo

Dit is een kant-en-klare manier om een BTC full node en een Lighting Node te hosten. myNode is software die een aantal Bitcoin-gerelateerde open source-projecten integreert en toegang geeft tot de Bitcoin- en Lightning-netwerken samen met een aantal andere functionaliteiten.

Een myNode wordt standaard geleverd met:

  • Full Bitcoin Node
  • Lightning Wallet
  • Een simpele UI / Web Interface
  • Bitcoin Explorer
  • Electrum Server – BTC Light Wallet Server
  • Ride the Lightning – Lightning Wallet
  • LND Hub – Lightning Wallet Server
  • Bitcoin CLI
  • QuickSync – Quickly sync Bitcoin blockchain
  • LND Connect – Generate QR Codes for connecting wallets
  • En nog veel meer…

Wil je meer weten over myNode? Kijk dan vooral op hun site: https://mynodebtc.com/.

 

Architectuur en benodigdheden van een myNode

De architectuur is makkelijk, een Raspberry PI met mynodeBTC service aangesloten op je netwerk met een Internet toegang.

  • Raspberry Pi 3 (of 4, bijvoorbeeld een nieuwe starter set via Bol). 1GB geheugen is voor nu het minimale.
  • USB Harddisk (let op deze wordt compleet gewiped). 1TB+ (ik gebruik bijvoorbeeld 2TB, dan heb ik nog wat ruimte). Bijvoorbeeld via Bol.com.
  • SD-Card ( 16GB is een mooie, als reserve binnen een starter set zit er vaak al een).
  • Voeding (wederom in de starter set al meegeleverd).
  • Network (bekabeld) met permanente Internet toegang.
  • Mac of PC voor het downloaden en testen van de image. Verder de mogelijkheid om het image naar SD-Card te schrijven.

Notitie: een Raspberry of Rock64 is gezien het feit dat de myNode constant aan moet staan qua stroomverbruik “vriendelijk”. Vooral ten opzichte van PC of Mac.

Optioneel:

  • Een HDMI connectie naar een scherm voor het bijhouden van de boot.
  • Keyboard (let op de layout en de keuze van het wachtwoord).

Deze zijn niet per se noodzakelijk, indien de Raspberry boot en connectiviteit heeft met het netwerk, kan je direct met de webservice connecteren.

 

Hoe doe je dat dan – Stappenplan

Downloaden

  • Vanaf https://mynodebtc.com/download download je het correcte image, in dit geval heb ik een Pi 3 dus gebruik ik deze image versie. Die lijkt achter net lopen in versie, maar dat komt wel goed bij het updaten.
  • ! Check mdsum of verifieer de image anders.

 

Schrijven van het image naar de SD-card.

Ik gebruik Balena Etcher voor de Mac. Downloaden kan hier. (Hoeft niet, gebruik vooral de software welke je het prettigst vindt werken).

Daarnaast heb ik een USB naar sd-card, die via een USB-C dongle in de MacBook kan worden gebruikt. Die Macbook van mij heeft alleen maar usb-c aansluitingen.

  • Start Balena Etcher.
  • Selecteer gedownloade image.
  • Selecteer sd-card.
  • Gaan met die banaan (standaard staat verify aan, doe dit ook).

Flash Complete.png

 

Aansluiten Raspberry

  • Let op netwerkkabel, aangezien er in deze versie standaard WiFi niet standaard aan staat (en daarnaast wil je dat ook?).
  • SD-card in Pi plaatsen
  • USB harddisk aan Pi (wordt gewiped! Dus geen data die belangrijk voor je is er op laten staan) koppelen
  • Aanzetten van Pi

Notitie: een keyboard/muis en HDMI is niet nodig. De eerst boot check ik via HDMI of alles goed gaat met booten. Via het bootscherm is het ip zichtbaar. Anders kan je die makkelijk uit je DHCP van je thuisnetwerk halen. De hostnaam is myNode.

Checken van de ip doe je op de console of via je lokale DHCP. Dan er met een browser naar toe surfen, dus in chrome, Brave of zoiets http://internipadres (nee, geen ssl voor nu dus) als adres. Daarna neemt de myNode interface het over.

 

myNode eerste keer opstarten en configureren

Ik maak gebruik van de community edition dus er wordt geen licentie ingevoerd.

Je kan inloggen met standaard admin en wachtwoord bolt. Dit is informatie welke op het Internet staat, en dus direct wordt gebruikt in aanvallen. Verander deze direct bij Settings (aan de onderkant van het scherm).

Als je inlogt met ssh dan merk je dat de timezone niet juist is. Tijd en tijdzone is belangrijk dat deze goed staan in een netwerk van nodes. De huidige timezone is:

ls -al /etc/localtime

lrwxrwxrwx 1 root root 35 Oct 10 19:50 /etc/localtime -> /usr/share/zoneinfo/America/Chicago

Dan is knap wat uren in offset met de tijdzone waar ik ben. Dit moet Europe/Amsterdam zijn. Pas deze aan via ‘sudo timedatectl set-timezone Europe/Amsterdam’. Dan staat die goed (eventueel kan je dit controleren met date).

QuickSync van myNode wordt gestart met een download en verify (laatste alleen zichtbaar in de logs). Die daarna wordt gevolgd met een copying files.

myNode QuickSync Download.png

myNode QuickSync Copy

mynode-Syncing BLockchain.png

Dit duurt even afhankelijk van de netwerk, sd-card doorvoer en harddisk doorvoer. Voor mij was de card en hdd de bottleneck (of beter alleen de USB-2 poorten van de Raspberry PI 3). De Quicksync download kwam uit tussen 5 en 8 MB/s. Nog snel hoor, binnen ongeveer 12 uur was deze binnen in de download. De copy actie duurde nog eens een paar uur. Daarna gaan de Bitcoin Blockchain gesynced worden. Dat duurt ook even. Dus al met al ben je wel een twee dagen zoet.

Let wel dit is de initiële synchronisatie. Heb je al een keer gesynchroniseerd (al dan niet op dit device), dan is deze slag al gedaan. Als je een ander device hebt gebruikt, moet je die dan nog wel naar je myNode kopiëren. Deze stap valt buiten deze eerste post.

 

Updaten

 

Aangezien de raspberry3 image best wel achterloopt (1.5.1), is er een update nodig om op 1.7.9 (ten tijden van schrijven) of hoger te komen. Wanneer je geen premium of ander abonnement hebt, worden de updates niet automagisch uitgevoerd. Dit moet je handmatig doen. Je hebt hier voor een PC of Mac nodig in hetzelfde netwerk als je myNode. Volg daarbij deze handelingen:

  • Zorg dat Git op de PC of Mac staan (bijvoorbeeld https://git-scm.com/download/mac)
  • Clone de git repository op de PC of Mac: git clone https://github.com/mynodebtc/mynode.git
  • Cd naar de gedownloade synode
  • Compileer de roots: make rootfs
  • Complileer de webservice voor de update (creëert een webservice op je PC of Mac): make start_file_server
  • Op de myNode: sudo mynode-local-upgrade ip-adres-van-pc-of-mac.
  • De nieuwe update wordt geladen, alle componenten worden geüpdatet en als deze klaar is wordt de mynode herstart. Dit kan even duren, en gedurende de update is je node niet via de services bereikbaar (behalve dan SSH).
  • Zorg dat je web service weer wordt gekilled na de update (make stop_file_server).

 

myNode latest

 

Conclusie

Binnen enkele makkelijke stappen heb je je eigen node actief. Dat kost bij elkaar nieuw rond de 190 euro, voor een Pi 4 starter set (de 3 die ik heb gebruikt zijn goedkoper), een SD-card van bijvoorbeeld 16GB en een USB harddisk (1TB/2TB). Kijk een beetje rond en dan ben je wellicht goedkoper uit. De inrichting kost vooral wat tijd om te doen, en je in te lezen. Wil je wat makkelijker uit zijn, dan worden er ook kant-en-klare nodes aangeboden. En ook via alternatieve opties en leveranciers.

Er moet hierna nog wel een en ander ingericht en verder gekoppeld worden. Er wordt nu alleen meegedaan in het netwerk. Er worden nog geen wallets gevuld, Lightning node gekoppeld in BleuWallet enzoverder. Daar hebben we nog wel wat ruimte voor op dit blog. Dus op naar een wordt vervolgd in een later deel.

Wil je nu ook nog Bitcoins opslaan en verwerken? Schaf deze dan aan via Bitcoin met Satos en dan gaan deze direct naar de wallet. Of schaf ze (iets goedkoper zie wat verder op) aan op de Bitvavo exchange. Als je via deze link je portfolio bij Bitvavo opbouwt, is tot de eerste 1000 euro investering binnen 7 dagen na aanmelden, de transactiekosten gratis. (en je sponsort met 15% van de gemaakte transactie kosten dit blog). Zie meer detail het volgende Bitvavo blog artikel (https://blog.bitvavo.com/invite-friends-earn-rewards-bitvavos-affiliate-program/).

Of bijvoorbeeld een andere exchange zoals BitPanda https://www.bitpanda.com/?ref=428943712167864641.

 

 

Investeren en Risico

Investeren brengt risico met zich mee. Het is belangrijk om te begrijpen dat investeringen ook (veel) minder waard kunnen worden, en je verliezen kunt hebben.  Investeer daarom alleen met wat je echt kunt missen, en niet nodig hebt als er onverwachtst wat gebeurd. Alle informatie in deze blog post betreft mijn eigen ervaringen, en geen professionele beleggingsadvies.

Veelvoor

4 reacties

Uitklokken Geplaatst op23:45 - 12 januari 2020

Erg leuk zo’n eigen node optuigen! Ik geloof wel in de blockchain, maar eigenlijk niet zo in cryptocurrencies.
Als er ooit iets van smart contracting komt wat ik ook zelf met een id kan signen vanuit huis, ben ik enthousiast.
Maar het is altijd leuk om met een rbpie aan de slag te gaan. Mooi wat je voor een paar tientjes al kan doen met zo’n ding.

    Veelvoor Geplaatst op08:02 - 13 januari 2020

    Zeker! Voor de eerste stapjes is crypto dan een makkelijk vervolg. En hobbyen met een Rasp of Rock is gewoon een erg fijn excuus, voor wat voor een toepassing dan ook 😉

Eric Krediet Geplaatst op08:47 - 18 februari 2020

Hoi, ik heb al een paar jaar een fullnode draaien op een Raspi3 emt gui. Standaard accepteert een fullnode geen inkomende peers. Dat is in de gui makkelijk aan te vinken net als UPnP. (of in bitcoin.conf: listen=1 en upnp=1) .
Daarmee ondersteun je het netwerk. Zoals je bovenstaand ook beschrijft. Echter in myNode staat beide opties standaard uit. Een myNode is leuk maar draagt dus ‘niet’ bij aan het netwerk.
Ok, ook hier is bitcoin.conf aan te passen maar dan moet je wel behoorlijk diep in het systeem duiken. De jongens achter myNode denken dat het aanzetten teveel is en dat een raspi4 dat niet aan zou kunnen… ik ga t testen.
met vr gr

    Veelvoor Geplaatst op10:09 - 18 februari 2020

    True. Ik zit de laatste tijd ook al te denken of deze methode als eigen node nu makkelijk is voor algemeen gebruik, aangezien het best nog wel wat configuratie en rekening houden met allerlei regels (vooral als je ook nog eens Lightning gebruikt/er overheen knal). Volgens mij zijn de peers standaard alleen een kleine hoeveelheid via Onion (Tor). Je kan het open knallen (en let dan ook op mogelijke je router/firewall instellingen). Laat het vooral weten wat je tests zijn.
    En dan heb ik nog een Rasp 3 om rekening mee te houden 😉

Geef een reactie