Kürzlich haben Gleb Naukenko und ich, zusammen mit unserem früheren Kollegen Greg Maxwell Minisketch vorgestellt, eine Software-Bibliothek welche die Anforderungen an Bandbreite von dezentralisierten Test Suggestionbeim Synchronisieren senkt.
Minisketch wurde ursprünglich als Teil eines Projekts entwickelt, welches die Abstimmung von Sets von Transaktionsdaten zwischen Bitcoin Nodes erforschte, genannt “Set Reconciliation Relay” oder SRR. Das Ziel von SRR ist es, signifikant den Konsum von Bandbreite beim Betreiben einer vollen Bitcoin Node zu reduzieren.
Das Team traf die Entscheidung, Minisketch separat von SRR zu veröffentlichen weil es erwartet, dass dieses Werkzeug bei Anwendungen außerhalb und innerhalb der Bitcoin Industrie nützlich ist.
Warum Minisketch?
Alle dezentralisierten Systeme haben traditionell Schwierigkeiten, Daten zwischen Nodes zu synchronisieren - es ist viel einfacher in einem zentralisierten System Nodes mitzuteilen welche Daten sie haben und nicht haben sollen.
Ein Ansatz um Daten zwischen Nodes in dezentralisierten Netzen zu synchronisieren sind beispielsweise “Invertible Bloom Lookup Tables” (IBLT). Während IBLT relativ wenig CPU Rechenkraft verlangen, erfordern sie relativ hohe Bandbreite, besonders wenn die Anzahl der Differenzen zwischen den Sets klein ist. Minisketch verwendet einen Bandbreite-Effizienteren Algorithmus bekannt als PinSketch.
Verglichen mit anderen Bandbreite-Effizienten Abstimmungs Set Algorithmen wie CPISync und Pinsketchs originaler Implementierung, verwendet Minisketch viel weniger Rechenkraft. Es ist 20 bis 100 mal schneller als PinSketch und teilweise über 1.000 mal schneller als CPISync.
Wie werden die Verbesserungen erzielt?
Set Abstimmung, wie in Minisketch implementiert, ist mehr Bandbreite-Effizienter als einfach nur eine Liste von Daten zu senden und erlaubt Nodes stattdessen eine mathematische Skizze der Liste zu senden. Die Node schickt diese dann anderen Nodes zum Vergleich. Die Größe dieser Skizze hängt nur von der zu erwarteten Zahl der Unterschiede zwischen den Nodes ab, und nicht von der absoluten Größe des Sets. Dennoch erlaubt es Nodes mit Sicherheit zu unterscheiden, welche Daten sie von anderen Nodes brauchen.
Wenn wir es nur zu einer einzigen Differenz simplifizieren ist es einfach zu sehen wie das funktionieren kann: Sagen wir ich habe das Set {3,5,7,11}, and Sie haben das Set {3,5,7,9,11}, so ist die Differenz {9}. Wir errechnen beide die Summe unserer Elemente, ich erhalte 3+5+7+11=26, and Sie erhalten 3+5+7+9+11=35. Ich sende meine Summe 26 an Sie, und Sie subtrahieren diese von Ihrer Summe. Die Differenz ist 9. Dies funktioniert, ist aber auf das Finden einer einzigen Differenz beschränkt. Minisketch generalisiert dies, indem es verschiedene Arten von ‘Summen’ der Daten schickt. Das Ergebnis ist, dass wir mit N verschiedenen Summen N verschiedene Differenzen finden können … solange die Anzahl der Differenzen zwischen den Sets nicht größer ist als die Anzahl der ‘Summen’ kann Minisketch immer erfolgreich alle Unterschiede finden.
Minisketch auf Bitcoin
Die Robustheit des Bitcoin Netzwerks ist abhängig davon, sicherzustellen dass genug Verbindungen zwischen Nodes erhalten bleiben um Sybil und Partitioning Attacken standzuhalten.
Unglücklicherweise wird die Mehrheit des Datenverbrauchs einer Bitcoin Node (typischerweise zwischen 40% und 70%) nicht für Transaktionsdaten benutzt, sondern um neue Transaktionen zu verkünden um herauszufinden, welche weiterzuleiten sind. Momentan erhöht die Anzahl der Verbindungen zwischen Nodes proportional die Bandbreite Unkosten. Dies limitiert die Anzahl der Verbindungen welche jede Node unterstützen kann.
Durch das Benutzen von Abstimmungs Sets ist es möglich effizient herauszufinden welche Transaktionen noch nicht weitergeleitet wurden ohne jede einzelne Transaktion an jeden Peer verkünden zu müssen. Bandbreite Unkosten um Transaktionen zum Weiterleiten zu finden wird Unabhängig von der Anzahl der Verbindungen, was möglicherweise die Anzahl der Verbindungen erhöht welche jede Node unterstützen kann.
Das Gute dieser Lösung ist dass es keine Veränderungen an den Konsens Regeln des Bitcoin Netzwerks erfordert. SRR wird aktiviert wenn die Software beider Seiten das SRR Protokoll unterstützt und hat keine negativen Auswirkungen auf Nodes welches dies nicht tun.
Das SRR Protokoll ist noch in den frühen Stadien der Forschung und es kann noch eine lange Zeit brauchen bevor es im Bitcoin Netzwerk Anwendung findet, aber Fortschritte wie Minisketch repräsentieren eine sehr wichtige Weiterbildung darin die Annahme und Zugänglichkeit von vollen Bitcoin Nodes zu Verbessern (sowie die Optimierung von anderen dezentralisierten Netzwerken). Kommen Sie hierher zurück für Updates zum Fortschritt des Projekts!
Falls Sie mehr über Minisketch lernen wollen, besuchen Sie auch das Minisketch GitHub Repository.