Bitcoin.nl

Laatste nieuws

Erlay: een niet-technische uitleg

erlaynodes

Erlay beoogt een optimalisatie te realiseren voor al het dataverkeer dat tussen bitcoinnodes uitgewisseld wordt. Het zou de nodes minder moeten belasten, wat de vereisten voor het draaien van een node verlaagt. Maar wat doet Erlay precies?

Broadcasten op dit moment

Dit is Bob.

erlay

Bob wil een bitcointransactie verzenden. De reden is niet relevant, al kan je die wellicht raden.

Hij wil natuurlijk dat zijn transactie zo snel mogelijk opgenomen wordt in de bitcoinblockchain. Om dit te bewerkstelligen is het van belang dat zoveel mogelijk nodes in het netwerk op de hoogte zijn van de transactie die Bob met zijn wallet heeft verzonden. Dit verspreiden van de transactie gebeurt van node op node, wat dus erg belangrijk is voor een goed functionerend netwerk. Dit vergroot immers de kans dat zijn transactie door een miner wordt opgemerkt, waarna die in het volgende block meegenomen kan worden.

Aangezien Bob liever zijn geld uitgeeft aan andere dingen, heeft hij geen eigen node in het bitcoinnetwerk. In plaats daarvan vertrouwt hij op de node van Alice om zijn transactie naar alle andere nodes door te sturen.

erl</img>ay

Bob weet dat zijn bitcoins niet door Alice gestolen kunnen worden, wanneer hij haar node slechts gebruikt voor de propagatie van de transactie.

De node van Alice bekijkt de transactie van Bob eerst goed, om de geldigheid van de transactie te controleren.

t="erlay" />

Daarnaast kijkt Alice haar node ook of Bob de verstuurde bitcoins niet stiekem eerder al heeft uitgegeven. Dit doet het door in de lijst met unspent transaction outputs (UTXO's) – bitcoins die zijn aangekomen op een adres, maar nog niet zijn uitgegeven – te kijken naar het balans van dat adres.

Als alles gecontroleerd is, zal de node van Alice de transactie goedkeuren en naar acht andere nodes doorsturen.

erlay

Bob mag de node van Alice dan blindelings vertrouwen, de nodes die Bob's transactie via Alice ontvangen hebben dit vertrouwen niet. Ook zij zullen de checks uitvoeren die Alice heeft gedaan; de geldigheid van de transactie en of de bitcoins nog wel uitgegeven mogen worden.

Zoals je je nu kunt voorstellen, zullen steeds meer nodes de transactie van Bob ontvangen, en weer doorsturen. Echter weten nodes niet wie de transactie al hebben ontvangen. Het wordt dus willekeurig doorgestuurd. Dit heeft het gevolg dat nodes dus meerdere keren dezelfde transactie – die van Bob – zullen ontvangen.

erlay

Er wordt dus een hoop teveel aan berichten uitgewisseld tussen de nodes. Dit geeft natuurlijk een grotere zekerheid dat alle nodes de transactie zullen ontvangen. Echter moeten de nodes de last van alle extra ontvangen data wel zelf dragen.

erlay

Zo ontvangen de nodes dus veel meer data dan nodig is. Uit het onderzoek van de Erlay bedenkers komt naar voren dat 44% van al het verkeer tussen nodes onnodig is. Dat is dus een hele hoop verspilde data! Dit legt onnodige druk op nodes, zeker degene waarvan het internet niet al te best is of waar er zelfs per MB betaald moet worden.

Dit probleem wordt dus aangepakt met Erlay.

Broadcasten met Erlay

Terwijl wij langzaam wegwijs werden in de wereld van UTXO's en de onnodige data die tussen nodes uitgewisseld wordt, heeft Bob een eigen node opgezet.

erlay

Bob heeft ook meteen maar een connectie gemaakt met de node van Alice. De transactie die hij verstuurt wordt nu dus via zijn node naar Alice en zeven andere peers gestuurd. Deze acht ontvangers versturen zoals eerder ook al uitgelegd, na het controleren en verifiëren, de transactie weer door naar andere participanten van het netwerk.

="img/posts/382/erlay9.png" alt="erlay" />

Bob's peers in het groen, en hun peers in het blauw.

Nadat de transactie over het netwerk is gegaan, blijkt dat niet elke node de transactie heeft ontvangen. Dit is het gevolg van het niet overspoelen van alle nodes met dezelfde transacties.

Dit lijkt op het eerste gezicht een probleem, maar dat is het niet. De nodes hoeven niet bang te zijn dat het een transactie mist en zo niet goed kunnen functioneren. Eens in de zoveel tijd vraagt de node een zogenaamde schets op. Deze schets bevat alle transacties die alle peers zelf hebben ontvangen. Dit gaat als volgt:

  1. Elke peer stuurt een schets van alle transacties die in hun bezit zijn. Zo'n schets is kleiner dan wanneer elke transactie afzonderlijk verspreid moet worden.

  2. De node maakt vervolgens een schets van zijn eigen transacties, en vergelijkt deze met de ontvangen schetsen. Verschillen deze? Dan mist er dus iets! Een soort zoek het verschil.

  3. De node kan vervolgens op basis van de schets de ontbrekende transactie alsnog opvragen bij zijn peers, waarna de transactiecollectie dus weer compleet is.

Een goede metafoor om het verschil tussen de schets en de transactie duidelijk te maken is een panorama zicht van een landschap (alle transacties) of een close up van een specifieke bloem of rots in dat landschap (één specifieke transactie).

g src="img/posts/382/erlay10.png" alt="erlay" />

Voordelen en nadelen

Er is wel een keerzijde wanneer je de schetsen aan het vergelijken bent, opzoek naar het verschil. Het duurt zo'n 2,6 seconde langer om jouw transactie bekend te laten zijn bij het hele bitcoinnetwerk. Een stukje langzamer dan wanneer alle transacties in het wilde weg worden geschoten.

Aangezien Bitcoin gemiddeld elke 10 minuten nieuwe transacties opneemt in de blockchain, lijkt deze kleine vertraging wel overkomelijk. Er staat namelijk tegenover dat de nodes een stuk minder data hoeven te verwerken. Dit zou meer mensen kunnen stimuleren om een eigen node te gaan draaien; iets wat de decentralisatie van Bitcoin maakt of kraakt.

Wanneer kan ik upgraden?

Op dit moment wordt er nog feedback verzameld op basis van het researchdocument.

Als er geen bezwaren aan het licht komen van andere onderzoekers, ontwikkelaars of de community, zal het voorstel formeel gepubliceerd worden om het toegevoegd te krijgen in de bitcoinsoftware.

Erlay is geen extreem zware upgrade; er zijn 'slechts' 548 regels code voor nodig, waarbij geen van de kernregels van Bitcoin aangepast hoeven te worden. Hierdoor blijven dus ook oudere versies van de software werken, wanneer Erlay wordt toegevoegd. Het is nu dus wachten totdat het voorstel goed geanalyseerd is, en de eerste concrete plannen in een BIP gepresenteerd zullen worden.

Dit artikel is geschreven op basis van het artikel van Sam Wouters. Sam spreekt over Bitcoin en blockchain gerelateerde onderwerpen, met het doel deze complexe onderwerpen zo eenvoudig mogelijk begrijpelijk te maken.