Interview mit Chris Stewart

Bitcoin flipping: „Scala passt perfekt zu Bitcoin“

Redaktion JAXenter

© Chris Stewart

Mehr als 95 % aller Bitcoin User nutzen Bitcoin Core, die Open-Source-Referenzimplementierung der Bitcoin-Kryptowährung. Fast 400 Leute haben Code für BitCoin Core geschrieben. Aber es sollen mehr werden. Wir haben mit Chris Stewart geredet, CEO und Mitbegründet von SuredBits, über den momentanen Stand von Bitcoin, die Rolle von Bitcoin Core und wie es sich anfühlt, einen SPV-Node für das Bitcoin-Protokoll in Scala zu schreiben.

JAXenter: Du bist ein Contributor von Bitcoin Core. Wie hat sich Bitcoin Core entwickelt? Sind viele Entwickler bestrebt, zu dem Open-Source-Projekt beizutragen?

Chris Stewart: Bitcoin wurde anfangs von einer Person (oder einer Gruppe von Leuten) unter dem Pseudonym ‚Satoshi Nakamoto’ entwickelt. Satoshi hatte sein White Paper veröffentlicht und ein wenig Code online gestellt, der sein Konzept von Bitcoin aufzeigt. Die Idee von digitalem Bargeld war nicht neu; jedoch war Satoshi in der Lage, verschiedene existierende Systeme zu kombinieren, um das Double- spending-Problem zu lösen. Bitcoin Core hat weiter Entwickler angezogen. Tatsächlich haben fast 400 Leute Code geschrieben und ihn zu Bitcoin Core gemergt. Und noch viel mehr haben zu Reviews, Design etc. beigetragen. Wir haben auch eine laufende Initiative, die versucht, mehr Developer mit der Bitcoin-Core-Codebasis vertraut zu machen.

JAXenter: Laut der offiziellen Website, ist Bitcoin Core „ein direkter Nachfolger des originalen Software-Clients, veröffentlicht von Satoshi Nakamoto, nachdem er das berühmte Bitcoin Whitepaper veröffentlich hatte“. Was hältst Du davon? Ist Bitcoin Core eine ernstzunehmende Größe oder nur ein Versuch, die Arbeit von Satoshi Nakamoto fortzusetzen? Könntest du das ein wenig erläutern?

Chris Stewart: Bitcoin Core ist die Rerefenzimplementierung von Bitcoin. Einiges vom Code in der Codebasis ist wirklich von Satoshi Nakamoto geschrieben, der 2011 verschwunden ist. Eigentlich benutzen alle Bitcoin-User Bitcoin Core (mehr als 95 %). Bitcoin Core hat außerdem das talentierteste Entwicklerteam in diesem Bereich, die einige wirklich innovative Ideen in Bitcoin eingebracht haben. Es gibt auch noch andere Implementierungen, wie Bitcoin-s, ein Projekt an dem ich arbeite, das andere Plattformen wie die JVM anvisiert.

„Wir haben laufende Initiativen, die versuchen, mehr Entwickler mit der Bitcoin-Core-Codebasis vertraut zu machen.“

JAXenter: Wieso ist Bitcoin Core 0.13.0 ein Major Release und was steht bei Bitcoin Core als nächstes an?

Chris Stewart: Wir nennen alle Release, die mit einer „.0“ aufhören major. Dieses Release enthält den Code, um Segregated Witnesses in das Netzwerk zu deployen. Dies löst ein paar Probleme, die das Projekt für eine Weile geplagt haben, während es zugleich den Transaktions-Durchsatz im Netzwerk erhöht. Tatsächlich werden Segregated Witnesses in das Netzwerk 0.13.0 deployt. Danach kann man Arbeit am Support für Dinge wie Lightning und Sidechains auf der Protokollebene erwarten.

„Meiner Meinung nach, gibt es es keine erfolgreiche Blockchain außer Bitcoin-Blockchain.“

JAXenter: Was hat dich zu Bitcoin gebracht?

Chris Stewart: Es ist eine schnelle und vertrauenswürdige Möglichkeit, um Geld im Internet zu überweisen. Das war vor Bitcoin nicht möglich. Jetzt ist es möglich, Zahlungsanwendungen zu bauen, die auf mathematischen Systemen beruhen, anstatt auf finanziellen Institutionen, die von einer Agenda bestimmt werden. Es erlaubt auch Innovationen, ohne nach Erlaubnis zu fragen. Es hat sich wieder und wieder gezeigt, dass dies zu wirtschaftlichem Wachstum und für viele Menschen zu einem besseren Leben führt.

JAXenter: Es ist inzwischen klar, dass Blockchain eine Zukunft jenseits von Bitcoin hat. Aber glaubst du, es kann die Kryptowährung kannibalisieren? Kann Bitcoin obsolet werden?

Chris Stewart: Es wird definitiv nicht die Kryptowährung kannibalisieren. Meiner Meinung nach, gibt es es keine erfolgreiche Blockchain außer Bitcoin-Blockchain. Es gab viel Schall und Rauch, Verkaufsmaschen und unvollendete Produkte, jedoch nichts, was tatsächlich für den Transfer von Geld und Dienstleistungen verwendet wird. Ich bezweifle wirklich, dass Bitcoin obsolet werden könnte, schlicht und ergreifend wegen der talentierten Gruppe von Leuten, die an dem Projekt arbeitet.

JAXenter: Du arbeitest im Moment an der Implementierung eines SPV-Nodes für das Bitcoin-Protokoll in Scala. Wieso Scala? Könntest du etwas über das Projekt erzählen?

Chris Stewart: Scala ist eine gute Balance zwischen Sprachen wie OCaml und Haskall und der Anwendbarkeit von Java. Scala hat Dinge wie ‚immutabilty by default‘ und algebraische Datentypen, die weit reichen, um den gegenwärtigen Zustand deines Systems zu beurteilen und wie das Hinzufügen neuer Dinge (wie neue Contract-Typen) dein System verändern.

SPV (Simple Payment Verification) soll ein leichtgewichtiger Bitcoin Client sein, der einem erlaubt, Zahlungen im Netzwerk zu verifizieren, indem die gesamte Blockchain heruntergeladen wird (ca. 100 GB an Daten). Um das zu schaffen, hat Scala eine schöne Library namens Akka. Damit kann eine asynchrones typensicheres System gebaut werden – das passt meiner Meinung nach perfekt zu Bitcoin und andere Zahlungsanwendungen.

An dem Bitcoin-s-SPV-Node-Projekt wird immer noch stark gearbeitet. Aber wenn man auf dem Laufenden bleiben möchte oder etwas beitragen will, kann man uns auf Github folgen.

Bitcoin-Zahlungen mit einem Endlichen Automaten modelieren

Wir arbeiten gegenwärtigen an der Implementierung eines SPV-Nodes für das Bitcoin-Protokoll in Scala. Eines der offensichtlichsten Dinge, die man mit Bitcoin anstellen möchte, ist eine Zahlung zu erhalten. Es gibt verschiedene Wege das zu tun, aber einer ist der einfachsten für mich: und zwar die Modellierung mit einem Endlichen Automaten. Von Wikipedia:

„Ein endlicher Automat (EA, auch Zustandsmaschine, Zustandsautomat; englisch finite state machine (FSM)) ist ein Modell eines Verhaltens, bestehend aus Zuständen, Zustandsübergängen und Aktionen.“

Wenn wir abstrakt über einen Zahlvorgang im Bitcoin-Netzwerk nachdenken, hat die Zahlung, die wir von einem anderen Nutzer erhalten, einen bestimmten Satz von Zuständen. Wir können diese verschiedenen Zustände mit einem Endlichen Automaten ziemlich einfach modellieren. Wann immer ein Zustand komplett ist, wechseln wir in einen anderen Zustand. Scala hat eine sehr nützliche Library namens Akka, die wir für das Vernetzen im Bitcoin-Netz verwenden. Innerhalb von Akka gibt es Support für Endliche Automaten, indem das ‚become’-Konstrukt verwendet wird.

Innerhalb Bitcoin-s’ Payment Actor benutzen wir dies, um zwischen den verschiedenen Zuständen innerhalb des Actors zu wechseln. Wenn zum Beispiel eine Zahlung an eine Adresse gemacht wird, fordern wir die volle Transaktion mittels der GetData– Nachricht im Bitcoin-Netzwerk an. Wenn wir die volle Transaktion erst einmal erhalten haben, verifizieren wir, dass ein Output für diese Transaktion an unsere Adresse gezahlt hat.

Es gibt sechs Zustände, die unser Payment Actor durchläuft, wenn er eine Zahlung im Bitcoin-Netzwerk verifiziert:

  1. Es wird ein Bloom-Filter erzeugt. Dieser Bloom-Filter wird zu einem Node im Netzwerk geschickt.
  2. Passt der Node zu dem Bloom-Filter, wird eine Txid, die zu dem Filter passt, über die Inventory-nachricht zurückgeschickt.
  3. Wir fordern die volle Transaktion mit einer Data Message an.
  4. Wir verifizieren, dass die Transaktion einen Output erzeugt hat, der zu der Adresse passt, für die wir eine Zahlung erwarten.
  5. Wenn ein weiterer Block im Netzwerk angekündigt wird, schicken wir eine Merkle-Block-Nachricht an unseren Peer im Netzwerk, um zu sehen, ob die Transaktion im Block enthalten war.
  6. Wir verifizieren, dass die Transaktion im Block enthalten war, mittels der Information aus der Merkle-Block-Nachricht, wie in BIP37 vorgegeben.

Das ist wirklich hilfreich, um die verschiedenen Zustände zu beherrschen, mit denen eine Bitcoin-Zahlung gemacht werden kann. Wir haben Endliche Automaten auch an anderen Stellen genutzt, zum Beispiel bei unserem PeerMessageHandler, der die ganze Logik bei der Verbindungen zu einem Peer im Bitcoin-Netzwerk erledigt.

Wer auf dem Laufenden bleiben will, kann uns auf Bitcoin-s oder Bitcoin-s-SPV-Node folgen.

Dieser Artikel ist zuerst auf Medium veröffentlicht worden.

Geschrieben von
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: