Erlay: Eine Methode, um die Konnektivität des Bitcoin-Netzwerks zu verbessern
Mit Erlay stellen Gregory Maxwell, Pieter Wuille und zwei Forscher der British University of Columbia ein Protokoll vor, um die Bandbreite, die Bitcoin-Knoten konsumieren, erheblich zu verringern. Dies würde es erlauben, die innere Konnektivität des Netzwerks ohne Kosten zu erhöhen. Der Vorschlag ist mutig, weil er an einer Grundsäule des Bitcoin-Protokolls rüttelt.
Ein Bitcoin Full Node konsumiert viele verschiedene System-Ressourcen. Um eine davon – die Bandbreite – handelt ein kürzlich erschienenes Paper von Core-Entwickler Gregory Maxwell, Blockstream-Entwickler Pieter Wuille sowie zwei Forschern der British University of Columbia, Sasha Fedorova und Gleb Naumenko.
Bandbreite meint den notwendigen Internettraffic, den ein Full Node braucht, um Transaktionen, Blöcke und andere Nachrichten zu empfangen und zu versenden. Dies umfasst sowohl den Download als auch den Upload dieser Daten. Die Bandbreite gilt als einer der Flaschenhälse, der die Skalierung von Bitcoin so schwierig macht.
Eine Flut an Nachrichten
Bisher wächst die notwendige Bandbreite linear mit der Anzahl von Peers, die ein Node hat. Ist klar: Mit je mehr anderen Nodes man verbunden ist, desto mehr Bandbreite braucht man, um mit diesen Nachrichten auszutauschen. Der Grund dafür liegt in einer fundamentalen Eigenschaft von Bitcoin: Informationen werden durch das “Flooding”-Modell verbreitet: Jeder Knoten erzählt sie jedem Knoten, den er erreichen kann. Das Netzwerk wird mit ihnen geflutet. Das hat den Effekt, dass sich Transaktionen und Blöcke rasend schnell ausbreiten – aber es hat den Nachteil, dass die Redundanz ziemlich hoch ist.
Immerhin fragen Knoten ihre Peers, bevor sie ihnen Transaktionen senden. Das geschieht durch die sogenannten INV (Inventar) Nachrichten: “Wenn ein Bitcoin-Node eine Transaktion empfängt, kündigt er sie allen seinen Peers an, außer dem Peer, von dem er sie erhalten hat. Um eine Transaktion anzukündigen, sendet der Node eine Hash der Transaktion als INV-Nachricht. Wenn ein anderer Knoten dadurch von einer Transaktion zum ersten Mal gehört hat, wird er die volle Transaktion anfordern.” Das Ergebnis ist, dass “ein Node mit n Verbindungen zwischen n und 2n INV-Nachrichten für jede Transaktion senden und versenden wird.”
Dies macht Flooding ineffizient. Es gibt sehr viele redundante INV-Nachrichten, deren Menge mit der Anzahl der Verbindungen wächst, die ein Knoten unterhält. Die Autoren des Papers haben gemessen, wie viel Bandbreite ein Knoten braucht, um diese Nachrichten auszutauschen: 9 Gigabyte im Monat. Wenn man die Anzahl der Verbindungen von acht auf 24 erhöht, wächst diese Menge auf 15 Gigabyte. Das macht einen erheblichen Teil der Bandbreite aus, die ein Knoten verbraucht. Von dieser Datenmenge seien 88 Prozent unnötig, um Transaktionen tatsächlich im Netzwerk zu verbreiten.
Die Konnektivität
Da der Bedarf an Bandbreite mit der Anzahl von Verbindungen wächst, die ein Knoten unterhält, ist es schwierig, die “Konnektivität” des Netzwerks, also die Vernetzung der Knoten, zu erhöhen. Dies aber ist ein Faktor, der für die Sicherheit essentiell sein kann: “Die Sicherheit von Bitcoin hängt von einer adäquaten Netzwerk-Konnektivität ab.” Die Forschung habe “wiederholt empfohlen, die Anzahl von Verbindungen zwischen Knoten zu erhöhen, um das Netzwerk robuster zu machen.” So sinkt die Erfolgsrate von Eclipe-Angriffen sowie einem erst kürzlich entdeckten Angriff über die Inventar-Nachrichten, wenn die Knoten besser verbunden sind.
Die Kernfrage, die die Autoren bewegt, ist daher: Wie kann man diese Verbindung lösen? Wie kann man es dem Netzwerk erlauben, die Konnektivität zu steigern, ohne gleichzeitig die Anforderungen an die Bandbreite für Full Nodes zu erhöhen? Die Lösung, die sie dabei gefunden haben, ist Erlay – ein neues Protokoll, um Transaktionen im Netzwerk zu verbreiten.
Abgleich anstatt Flooding
Erlay bricht dabei mit dem Flooding-Verfahren. Das Protokoll begrenzt das Flooding der Nodes auf acht ausgehende Verbindungen, “selbst wenn die Anzahl dieser Verbindungen höher ist”. Das hat den Effekt, “dass die Erhöhung der Konnektivität nicht auch die Kosten der Transaktions-Verbreitung proportional steigert.”
Das ist grundsätzlich einfach zu verstehen. Wenn man seine Daten nur an acht Peers weitergibt, egal mit wie vielen man verbunden ist, ist das Datenvolumen unabhängig von der Anzahl an Peers. Aber hat es nicht den Effekt, dass sich Transaktionen dadurch langsamer im Netzwerk ausbreiten? Macht es nicht eben einen zentralen Effekt einer höheren Konnektivität zunichte? An sich natürlich schon. Der Großteil des Papers geht daher darum, wie man diesen Nachteil ausbügeln kann.
Dies geschieht durch eine Methode der Abstimmung (“Reconsiliation”). Dazu berechnen die Nodes eine Skizze des Sets von unbestätigten Transaktionen, die bei ihnen liegen, und tauschen diese bzw. deren geschätzte Größe mit ihren Peers aus. Sobald die Knoten darin Abweichungen erkennen, können sie von den anderen fehlende Transaktionen anfordern. Eine solche Skizze wird einmal je Sekunde ausgetauscht. Dieser Zeitraum ist variabel, je höher er ist, desto höher kann die Latenz im Netzwerk werden, je geringer, desto geringer fallen die Einsparungen an Bandbreite aus.
Die Autoren haben diese Methode in einem simulierten Bitcoin-Netzwerk mit 6.000 öffentlichen und 54.000 privaten Knoten getestet. Ein solches Netzwerk entspreche dem tatsächlichen Bitcoin-Netzwerk. Um die Effekte von Erlay auf die Konnektivität zu testen, haben sie dabei auch die Anzahl der Verbindungen je Knoten erhöht. Das Ergebnis fiel wie erwartet aus: Erlay spart massiv Bandbreite. Um genau zu sein: 84 Prozent der Daten, die für die Ankündigung von Transaktionen bisher verwendet werden.
“Der Verbrauch von Bandbreite wächst signifikant langsamer. Erlay befördert reibungslos eine höhere Konnektivität, was eine bessere Sicherheit ermöglicht.” Anders ausgedrückt: Ein Bitcoin-Netzwerk, das Erlay benutzen würde, um Transaktionen zu verteilen, würde es den Knoten erlauben, sich besser zu verbinden. Es würde die “Dichte” des Netzwerkes erhöhen.
Die Latenz wird etwas höher
Es gibt aber auch einen Nachteil: “Erlay erhöht die Latenz im Vergleich zu Flooding.” Latenz meint den Zeitraum, den eine Transaktion benötigt, um sich im Netzwerk auszubreiten. Um alle Knoten zu erreichen, braucht eine Transaktion durch Flooding 3,15 Sekunden, während sie mit Erlay 5,75 Sekunden benötigt. Um dagegen bei 80 Prozent der Knoten anzukommen, benötigt eine Transaktion mit Flooding weniger als einer Sekunde und mit Erlay beinah drei Sekunden.
Zudem sinkt bei Flooding die Latenz des Netzwerks mit einer steigenden Konnektivität. Wenn alle Knoten 32 anstatt acht Verbindungen hätte, würde eine Transaktion weniger als eine Sekunde benötigen, um alle anderen Knoten zu erreichen. Mit Erlay bleibt die Latenz beinah unberührt von der Konnektivität.
Die Autoren räumen ein, dass User, die unbestätigte Transaktionen akzeptieren, die Erhöhung der Latenz von etwas über 2 Sekunden spüren werden. Aber sie verstehen das als annehmbaren Tradeoff: “Wir haben uns entschieden, diesen Nachteil in Kauf zu nehmen, weil es ein akzeptabler Preis dafür ist, um die Effizient der Bandbreite zu maximieren.” Man könnte Erlay aber auch so justieren, dass es eine ähnliche Latenz wie Flooding erreicht, während es weiterhin Bandbreite einspart. Dies würde die Konnektivität ohne Nachteile verbessern.
wie würde man denn soetwas umsetzen? Ein Update der Full-Node Software und gut is? Könnte es Kompatibilitätsprobleme geben? Wieviele Nutzer müssten die neueste Version von Bitcoin Core nutzen, damit es Sinn macht?
Müsste darüber nicht erstmal abgestimmt werden, so ein update ist doch schon ein größerer Eingriff in bitcoin?
eigentlich nicht, ist ja kein eingriff in die akzeptanzkriterien für die blockchain, man sendet lediglich tx an höchstens 8 verbindungen weiter. Das kann jeder machen ohne dass es auswirkungen auf die blockchain hat…
Abgesehen vom Problem, wie man Abstimmungen bei Bitcoin führen kann, ist dies lediglich eine Eigenschaft der Wallet und keine Konsensänderung. Da die (offizielle) Bitcoin Wallet Open Source ist, könnte sie auch schon heute jeder “forken” (das gibt es übrigens seit der Erfindung von Open Source) und so verändern, dass sie ihre Transaktionen z.B. nur an einen Peer broadcastet. Trotzdem wären diese im Netzwerk valide, da sie den Konsensregeln entsprechen.
Man könnte sogar so weit gehen und selbst als “Full Node” ein “Selfish Node” sein, der nur seine eigenen Transaktionen broadcastet und keine anderen. Interessanterweise führt das allerdings zu einem Verlust jeglicher Privatsphäre, denn alle von diesem Node verbreiteten Transaktionen stammen dann auch von diesem und sind eindeutig zuordenbar…
Ein kleiner Zusatz:
Diese Überlegungen zur Steigerung der Effizienz bei Bitcoin sind wichtig und gut, allerdings lösen sie keine bestehenden Probleme, sondern hypothetische. 20GB Sync pro Monat wird jeder Full Node Betreiber heute schon problemlos verkraften, da schlagen die (schnellen) Speichermedien wahrscheinlich mehr zu Buche als die Bandbreite. Und mehr wird es nicht, denn die Blöcke sind ja begrenzt…
Heute habe ich übrigens erstmalig mehr als 15 Euro an Fees in BTC für eine Transaktion ausgegeben, nur weil sie 5 Inputs hatte und damit ca. 800 Byte “groß” war. Da kann Western Union mittlerweile mit Bitcoin konkurrieren…
Der Mempool leert sich derzeit fast jeden Tag komplett, wie schaffst du es nur immer wieder, so hohe Gebühren zu zahlen? Und wenn du es so eilig hast und unbedingt in den nächsten Block musst: Das ist eben der Preis.
https://whatthefee.io und https://jochen-hoenicke.de/queue/#1,24h sind wahrscheinlich bekannt.
@Wayne
Das “Problem” ist wahrscheinlich, dass ich Bitcoin mittlerweile als Altcoin sehe und mit allen Shitcoins im Exodus “verwalte”, wo ich die Fee leider nicht manuell nachjustieren kann. Welche BIP39 Wallet kannst Du mir denn empfehlen, mit der ich die Fees runterschrauben kann? Wahrscheinlich müsste ich meinen Full Node, den ich irgendwann zwecks Tracking aufgesetzt habe, per CLI nutzen…
BIP39-Wallets mit manueller Gebühren-Auswahl:
Trezor (Hardware)
Samourai (Android)
Electrum (Desktop)
Als Beispiel. Gibt sicher noch mehr.
Bitcoin kann per Definition kein Altcoin sein.
MySpace anyone? Tripod? AudioGalaxy? eDonkey? …
Bitcoin kann in seiner jetzigen Form nicht über Jahre überleben, da die Blockgröße festgeschrieben ist und der Coinbase Reward sinkt. Derzeit macht der Coinbase Reward über 90% der gesamten Einnahmen der Miner aus, deutlich unter 10% sind Transaktionsgebühren. Diese aktuell ca. 100k Euro pro Block müssten durch 4-5k Transaktionen ersetzt werden, was im Schnitt dann schon 20 Euro macht. So wird Bitcoin eben zum Altcoin / MySpace 😉
Electrum werde ich testen, mit Jaxx (auch wenn die ziemlich unprofessionell sind) konnte ich kurzfristig schon meine Gebühren senken…
Gold ist ebenfalls nicht kostengünstig zu bewegen. Trotzdem hat gold überlebt und wird als wertespeicher genutzt. Bitcoin einen altcoin zu nennen ist totaler quatsch.
Der vergleich mit privaten firmen hinkt auch total.
Und ja wenn es ihnen um gebühren geht, sollten sie den coin wechseln, denn wie sie sehen gibt es selbst für kostenlose unbegrenzte transaktionen mit lightning einfach kaum bedarf.
Vielleicht liegt es an der tatsache das die meisten nutzer hodler sind
Der “Gold”-Vergleich von Bitcoin war für mich schon immer abwegig, denn ein digitales Asset ist für mich per Definition effizient und Gold ist das Gegenteil von Effizienz und hat seinen Wert nur darin begründet, dass es relativ begrenzt verfügbar (allerdings ziemlich fungibel) ist. Im physischen Warenhandel ist es auch sehr praktisch und beliebig teilbar und in täglich üblichen Transaktionsgrößen auch nicht aufwendig zu transferieren, da spielt eher die Stückelung eine Rolle.
Ich habe nicht nur Firmen, sondern einst führende Technologien aufgelistet, welche durch bessere ersetzt wurden, da sie dem Fortschritt nicht Stand halten konnten. Der Vergleich ist für Bitcoin durchaus angebracht. Und “Hodler” sind für mich per Definition keine Nutzer und tragen eigentlich nichts zum Ökosystem bei. Lightning wird nicht deswegen nicht genutzt, weil es keinen Bedarf an günstigen Transaktionen gibt, sondern weil es 1. zu umständlich ist und 2. zu unsicher für die meisten. Wie man auf https://bitcoinfees.info/ deutliche erkennen kann, ist der Bedarf an Transaktionen groß, auch wenn er die letzten Tage wieder etwas abgeflacht ist…
Bitcoin wird ohne entscheidende Änderungen am Protokoll über kurz oder lang zum Altcoin, alleine das starre Blocksize Limit zusammen mit dem Block Reward Halving kann auf Dauer nicht funktionieren und falls jetzt keine entsprechenden Weichen gelegt werden, wird Bitcoin zum MySpace oder von mir aus die VHS Kassette des 21. Jahrhunderts. War auch Mal nützlich, aber etliche Male überholt… Wenn “Hodln” der einzige Einsatzzweck eines “neuen Geldsystems” sein soll, dann ist das alleine in sich schon zu absurd für mich.
Das ist doch alles akademisches Gefasel.
Ich betreibe seit Jahren einen full-node und Bandbreite war nie ein Problem, auch nicht bei vielen Verbindungen.
Der limitierende Faktor bei Bitcoin ist die Blockgröße, und solange das so ist ist Bandbreite kein Problem.
100% Zustimmung. Bandbreite ist zwar der limitierendste Faktor, denn Speicher(kosten) und Verifizierung sind im Vergleich dazu nichtig, dazu gibt es Pruning. Bandbreite auf großen Nodes praktisch auch, aber wenn man weiterhin von “P2P” ausgehen möchte, ist spätestens um die 100MB Schluss, denn eine 10Mbit/s Leitung schafft maximal 750MB Durchsatz pro 10 Minuten bei optimalen Bedingungen und bereits diesen Durchsatz dürften die wenigsten Privatanschlüsse (zumindest im Upload) haben.
Bei “Meganodes”, die z.B. Gigabyte Blöcke verarbeiten sollten, spielen dagegen Latenzen und auch der Verifizierungsaufwand eine Rolle.