Jüngste Diskussionen darüber, ob Menschen ihre eigenen Änderungen am Bitcoin-Protokoll vornehmen dürfen, haben eine wichtige Idee hervorgehoben: Vielleicht ist die Entwicklung von Bitcoin Core, der Referenzversion des Codes, nicht der einzige Weg für Leute, die etwas beitragen.

Eine kürzliche Änderung des Bitcoin-Codes, der in eine Linux-Variante namens Gentoo überging, ließ einige Leute wütend werden, bevor der Entwickler sie standardmäßig ausgeschaltet hat.

"Diese werden niemals in das Bitcoin-Repository auf Github integriert, aber Leute, die sie benutzen wollen, können", sagte Bitcoin-Entwickler Wladimir J van der Laan.

Aber was ist Github, warum hat van der Laan die Autorität zu wählen, was in ihm steckt und wie wird Bitcoin überhaupt entwickelt?

Wie Bitcoin entwickelt wird

Die Referenzimplementierung für das Bitcoin-Protokoll heißt Bitcoin Core. Dies ist der Code, den Satoshi ursprünglich einer Kerngruppe von Entwicklern übergab, bevor er verschwand.

Diese "Jünger" pflegen diesen Code zusammen mit der Hilfe einer größeren Gemeinschaft von Entwicklern. Der Fokus liegt darauf, den Code effizienter zu machen, aber vorsichtig und konservativ, damit nichts kaputt geht.

Bitcoin Core wird mit einem Software-Versionskontrollsystem namens Git verwaltet. So können die Benutzer verfolgen, an welchen Versionen ihres Codes sie arbeiten und welche Änderungen sie vorgenommen haben.

Bitcoin-Entwickler, die Git auf ihren Computern ausführen, stellen eine Verbindung zu einem zentralen Dienst her, damit sie alle gleichzeitig an demselben Projekt arbeiten können. Dieser Dienst, der Github genannt wird, hat viele verschiedene Projekte, die von verschiedenen Personengruppen unterhalten werden. Bitcoin ist eines dieser Projekte und es hat eine eigene Github-Seite.

Der Code für das Projekt wird an einem einzigen Ort auf Github gespeichert, einem Repository. Die offizielle, implementierbare Version des Bitcoin-Repositorys ist als Upstream-Repository bekannt, aber Personen, die an ihren eigenen Änderungen am Code arbeiten möchten, können ihre eigenen Versionen des Repositorys erstellen, indem sie sie in eine Online-Fork kopieren.

Entwickler können ihre Gabeln beliebig ändern. Sie können verlangen, dass ihre Verzweigung zurück in das Master-Repository zusammengeführt wird, indem sie eine "Pull-Anforderung" ausgibt, die ihre Version des Repositorys anderen Projektmitgliedern zugänglich macht, die sie überprüfen und kommentieren können.

"Die Idee ist, dass andere Entwickler in der Community die Änderung überprüfen werden", erklärte van der Laan. Dann behebt der Übergeber die Probleme, die von anderen aufgeworfen wurden. Es kann auch erforderlich sein, einige Leute zu sammeln, um die Änderung zu testen, insbesondere wenn es kompliziert ist oder wenn es eine subjektive Komponente gibt (z. B. für UI- oder RPC-Änderungen). "

Wenn genügend Personen die in a Pull-Request, dann wird es wieder in das Master-Repository zusammengeführt.Aber wer kann eigentlich den Zug zusammenführen?

Es stellt sich heraus, dass es ein Bitcoin-Priestertum gibt, das Stewards ist, was es schließlich in den Bitcoin Core-Code schafft. Van der Laan, Chefwissenschaftler und ehemaliger leitender Entwickler Gavin Andresen, Jeff Garzik, Gregory Maxwell und Pieter Wuille sind das Team, das die endgültige Entscheidung trifft, und das ist nicht etwas, das durch das Wählen entschieden wird, wie man es in einer Demokratie finden kann.

"Einzelne Github-Repositories sind nicht demokratisch", erklärte van der Laan. "Die Betreuer kooperieren bei der Entwicklung und entscheiden, was zusammengelegt wird und wann und was nicht. Schwierige technische Probleme werden nicht durch populäre Abstimmungen gelöst. "

BIPS und Pull-Anfragen

Wenn möglich, funktioniert die Bitcoin-Entwicklung typischerweise über einen populären Konsens. Es gibt im Großen und Ganzen zwei Kategorien von Änderungen.

Der Bitcoin-Kern "Es wird bewusst konservativ gehalten, und die meisten Änderungen werden in einer" nicht-kontroversen und Hausmeister "Weise gemacht, sagte van der Laan. Sie befassen sich mit kleinen, inkrementellen Änderungen, anstatt großen, revolutionären. Ein Bitcoin Patch könnte einige bewegen Code umschreiben, um es lesbarer zu machen, oder vielleicht etwas Speicherverbrauch zu optimieren.

Es gibt eine andere Klasse von Änderungen an Bitcoin, die weit mehr Verzweigungen haben, und diese sind diejenigen, die die Konsensregeln ändern Die Konsensregeln sind die technischen Regeln, die Alle Bitcoin-Clients müssen sich daran halten, dass das Bitcoin-Netzwerk ordnungsgemäß funktioniert.

"Das muss genau hinterfragt werden. Sie müssen zuerst auf der Mailing-Liste diskutiert werden, und es muss eine BIP geben, und die Pulls sind in der Regel kontrovers und offen für eine lange Zeit zu diskutieren ", sagte er.

Eine BIP - Abkürzung für Bitcoin Improvement Proposal - ist ein Dokument, das eine globale Änderung in einigen Aspekten von Bitcoin vorschlägt. Es kann sich auf Dinge außerhalb von Bitcoin Core erstrecken, einschließlich mobiler Geldbörsen oder Schlüsselgenerierung in Hardware-Brieftaschen. Es kann auch Prozesse um Bitcoin, wie Änderungen im Entscheidungsfindungsprozess, steuern.

Jeder kann ein BIP erstellen, solange sie in diesem Format geschrieben sind. Die Community spricht darüber und wenn es den Leuten gefällt, kann ihr Status auf "aktiv" oder "endgültig" geändert werden.

Änderungen in dieser Richtung sind die Änderung in BIP 62, die eine Änderung darstellt, die sich mit dem Fehler der Transaktionsmallability in Bitcoin befasst.

Was verbessert die Wahrscheinlichkeit, dass eine vorgeschlagene Änderung im Protokoll implementiert wird? Es ist hilfreich für den Autor einer BIP, ein Beispiel für den Code zu schreiben, den Menschen testen und überprüfen können, fügte van der Laan hinzu.

Überprüfung und Genehmigung

Bitcoin-Berater und Sicherheitsprüfer Sergio Lerner wünscht sich mehr Formalisierung für den Code-Genehmigungsprozess.

"Wenn Sie eine Pull-Anforderung sehen, die zusammengeführt wurde, ist es schwierig zu sagen, wer sie genehmigt hat [und] in welchem ​​Umfang der Patch überprüft wurde", sagte er. "Sie müssen viele Kommentare und einige '+" lesen 1 ', die Sie als' Ich stimme zu, es zu verschmelzen 'interpretieren, aber Sie können es auch als' Ich mag es 'interpretieren, aber ich habe den Code nicht wirklich überprüft.''

Lerner würde gerne einen Patch-Genehmigungsprozess mit mehreren Signaturen sehen, bei dem ein gewisser Anteil der Entwickler den Code offiziell genehmigt, indem er den Review abschließt. Das wäre eine größere Version des Prozesses, der derzeit in einigen Brieftaschen verwendet wird. wo mehrere Signaturen verwendet werden müssen, um eine Bitcoin-Adresse zu verwenden.

Andere Dinge, die Lerner sehen möchte, beinhalten ein Logbuch der gefundenen Fehler und eine Analyse, warum sie nicht rechtzeitig abgefangen wurden. Englisch: www.doc-o-matic.com/webhelp/TdlgEditEdit.html Fokussierte externe Code - Überprüfung, eine formale Beschreibung der Dokumentation, die mit einem Patch einhergehen sollte und eine Beschreibung dessen, was eine Überprüfung eines Patches bedeutet.

"Heißt das eine Überprüfung des Quelltexts Zeile für Zeile? Veränderung ist genug? ", fragte Lerner." Heißt das, die Veränderung gegen bekannte Angriffsvektoren zu analysieren? "

Das alles kostet Zeit und Personal, sagte Lerner:

" All das zu implementieren erfordert natürlich mehr Hauswirtschaft , eine höhere Rente t, und mehr Core-Entwickler-Ressourcen (die derzeit knapp sind). Aber eine Software, die eine Industrie von $ 6 Milliarden verwaltet, erfordert es. "

Beyond Bitcoin Core

Während Lerner einige Anforderungen für Code-Reviews umreißt, wiederholt van der Laan Gavin Andresen auf der Bitcoin 2014 Konferenz, wo er sagte Es könnte mehr getan werden, um die BIP-Genehmigung zu rationalisieren.

"Der BIP-Prozess könnte etwas Arbeit erfordern. Ich würde mich freuen, wenn Entwickler anderer (vollständiger) Node-Implementierungen aktiver bei der Kommentierung von Vorschlägen wären (oder Vorschläge machen)," er sagte.

Andresen schlägt auch vor, BIP-Diskussionen und andere Cross-Implementation-Anliegen von der allgemeinen Bitcoin-Entwicklungs-Mailingliste auf eine bestimmte BIP-Mailingliste zu verlagern.

Wie bei der Softwareentwicklung bei einem Open-Source-Projekt immer auf Benutzer, um es geschehen zu lassen.

"Da es sich um einen globalen, verteilten, desorganisierten Prozess handelt, ist es nicht Aufgabe eines einzelnen Unternehmens, den BIP-Prozess zu managen, sondern Menschen und Organisationen, die sich darum kümmern und etwas tun ", schlug van der Laan vor.

Aber sollte sich die Bitcoin Foundation, die wichtigste Handelsorganisation von Bitcoin, nicht um solche Dinge kümmern? Nein, argumentiert er. Stattdessen dehnen sich die Dinge in der Bitcoin-Welt darüber hinaus aus, und das Entwicklungsteam begrüßt verschiedene Implementierungen von Bitcoin.

Van der Laan sagte:

"Gavins Rede auf der Bitcoin 2014 hat deutlich gemacht, dass sein Fokus auf der Diversifizierung liegt. Er sprach über verschiedene Vollknoten-Implementierungen und sagte sogar" mehr ist besser. "Auch wenn Bitcoin Core beibehalten wird Job, ich neige dazu, dem zuzustimmen. "

Es sollte nicht länger die Entwicklung von Bitcoin Core sein, glaubt van der Laan.

"In den Anfangsjahren war Bitcoin Core vielleicht übermäßig wichtig, und seine Entwickler mussten das Licht für die Node-Infrastruktur anschalten (und nachts wach bleiben, um Bugs zu beheben, sobald sie auftauchten). Aber vorwärts, für Bitcoin zu sei das globale verteilte System, das es sein sollte, sollten wir darüber hinausgehen."

Es kann also eine wohlwollende Priestertum für Bitcoin Core geben, in dem Sinne, dass die endgültige Entscheidung darüber, was in den Code einfließt, bei einer kleinen Gruppe von Menschen liegt. Aber das bedeutet nicht, dass diese Gruppe etwas will Sei exklusiv oder elitär - weit entfernt davon.

Zumindest einige der Kernentwickler ermutigen aktiv andere, das Netzwerk mit ihren eigenen Implementierungen zu erweitern, unter der Annahme, dass die Mehrheit von ihnen sich an die Konsensregeln halten wird Es wird nicht mehr synchron sein, es wird offensichtlich, wer in der Minderheit ist und sie zwingen, es zu beheben.

Die Entwicklung von Bitcoin in diese Richtung könnte Raum für die Arten von politischen Abweichungen schaffen, die einige Leute gefordert haben, während sie erhalten Die Konsensregeln: die Teile, die wirklich Bitcoin machen, was es ist, und es würde auch den Druck auf eine überbelastete Gruppe von Menschen verringern, die versuchen, die Technologie zu unterstützen, die einem schnell wachsenden Geschäft zugrunde liegt Das verlangt nach Teilnehmern wie Lerner.

Die Frage ist: Wie wird Bitcoin eine solche Vielfalt alternativer Implementierungen sauber, effizient und ohne jegliches Drama entwickeln?

Bild über Shutterstock