Der Puls von Bitcoin

tl;dr: Ich begegne meiner Herausforderung, das Bitcoin Netzwerk als Ganzes zu begreifen, indem ich seine organische Natur in menschliche Körperfunktionen transformiere und akustisch darstelle. Ableton Plugins ermöglichen es, mit diesen Metriken zu spielen und in Kooperation mit dem Netzwerk Musik zu erschaffen.

„Bitcoin is a living organism, and we should try to understand it as such if we want to live in harmony with it."

— Gigi, Proof of Life1

Motivation

Das Netzwerk Bitcoin und seine Währung bitcoin faszinieren mich schon viele Jahre und haben mich sogar bewegt, diese Firma zu gründen und Menschen im Thema zu unterstützen. Das Konstrukt Bitcoin befindet sich an der Kreuzung von grossen Forschungsdisziplinen: Kryptographie, Informationstechnologie/Netzwerke, Wirtschaft und Geldpolitik. Die Beleuchtung des Gebildes ändert sich mit jedem Betrachter. Jeder Betrachter kann Bitcoin nur von den Seiten ausleuchten und erfassen, die ihm zugänglich sind.

Oft wird der Bitcoin-Begriff nur mit Charts und Preisen assoziiert und beurteilt. Das Netzwerk als organisches Wesen zu beschreiben ist nicht neu12, wird aber nur in Nischen diskutiert. Wie Gigi sehe ich das Betreiben eines eigenen Bitcoin Nodes als Abkürzung dazu, Bitcoin zu verstehen. Es leistet einen wichtigen Beitrag für das Netzwerk und erhöht die Souveränität in der Verwaltung des eigenen Geldes. Ich treibe diesen interaktiven Ansatz weiter und mache die Körperfunktionen des „Wesens" hör- und im eigenen Körper erfahrbar. Und ich ermögliche, mit dem Netzwerk zu spielen.

Das Netzwerk als Organismus

Briefly, and non-technically, Bitcoin is the first example of a new form of life. It lives and breathes on the internet.

— Ralph C. Merkle, DAOs, Democracy and Governance

Die hohe Komplexität und sein Lebensraum im Internet drängen den Vergleich zu einem lebenden Organismus auf. Bitcoin entstand, wuchs, nimmt Information auf und gibt neue ab. Seine Zellen bestehen aus Teilen von Vorfahren (Kryptographie/Signaturen, P2P-Netzwerke, Merkle-Bäume und Wurzeln). Seine Unfassbarkeit löst in uns, die wir uns schon lange damit beschäftigen, Analogien zum Wunder des Lebens aufblühen.

Unweigerlich drängt sich dadurch die alte Frage nach Künstlichkeit und Natürlichkeit auf. Wo ist die Trennlinie? Wo wird aus einem Protokoll oder einer Maschine ein Organismus? Besonders wenn dieses von Organismen geschaffen und ausschliesslich aus Material gebaut wurde, das die Natur dieses Planeten zur Verfügung stellt? Hier halte ich es in diesem Aspekt oft mit James Bridle, den ich für seine Ansichten und Inspiration schätze.

„All artifacts of life are also outcomes of evolution in various forms. There's nothing unnatural about a computer. It's just another different way of putting silicon and hydrocarbons and a bunch of other stuff together to do things, just as evolution has put together all kinds of other interesting forms. After a while, for me, those kinds of distinctions — between the natural or the unnatural, the artificial and the real — became completely meaningless. I see all these things as processes of relationship and becoming."

— James Bridle, im Gespräch mit Grow by Ginkgo (2023), zu seinem Buch Ways of Being3

Organe sind ein Teil eines Ganzen (Organismus), die verschiedene Funktionen zur Verfügung stellen. Im Fall dieses Projekts entstand die Wahl, welche Organe abgebildet werden sollen, rückwirkend, indem ich die wichtigsten messbaren Metriken analysiert und eingeordnet habe. Ich habe also versucht zu bestimmen, welcher Messwert am ehesten für welches Organ stehen könnte. Die Organe, mit denen ich das Projekt gestartet habe, sind: Herz, Gehirn und Hände.

Die tiefe Analyse von Aufbau und Funktion des Bitcoin Netzwerks und die Organ Metapher decken Ungereimtheiten auf, aber auch Inspiration für weitere Organe oder anatomische Strukturen (s. Ausblick).

Die Darstellung als Körperfunktionen hatte unerwartete Effekte, die erst beim ersten Experiment spürbar wurden.

  • Mit einigen Stereo-Modifikationen können die einzelnen Klänge räumlich verortet werden. Das Herz eher links, das Rauschen mitten im Kopf. Das führt zu einer höheren Identifikation mit dem, was im Netzwerk passiert, weil es scheinbar im eigenen Körper stattfindet.
  • Beim ersten Hören der Daten und noch ohne musikalische Begleitung wird sofort klar, in welchem Zustand sich das Netzwerk befindet. Die Sonifikation vermittelt einen intuitiven Eindruck davon, wie viel gerade passiert, ohne eine einzige Zahl oder Grafik zu sehen oder gar etwas vom Netzwerk zu verstehen.

Datenquellen

OrganMetrikQuelleAktualisierung
btcHeartempfohlene Gebühr (hourFee, sat/vB)eigener Umbrel-Node, Mempool-Instanz …:3006/api/v1/fees/recommendedalle 30 s
btcBrainMempool-Füllstand (count, unbestätigte Tx)eigener Umbrel-Node …:3006/api/mempoolalle 5 s
btcHandsCommits (All-Time-Aggregation pro Wochentag × Stunde)GitHub Repo-Statistikpro Aktivierung

Die Mempool- und Gebührendaten stammen aus einer eigenen Mempool-Instanz auf einem selbst betriebenen Umbrel-Node (erreichbar über Tailscale). Damit entsteht einerseits eine Datensouveränität und andererseits die Möglichkeit, sich einen Teil des Organismus (der in diesem Moment wächst) direkt in seine Umgebung zu holen. Die so entstandenen Daten werden direkt am Objekt gemessen. Unabhängig und manipulationssicher.

Die Organe

btcHeart — Der Herzschlag

Metrik. Die aktuelle Gebührenlage als Maß dafür, wie fest das Herz schlagen muss. Hohe Gebühren bedeuten in der Regel, dass viele Transaktionen um Platz in der Blockchain konkurrieren; um diese zu verarbeiten, steigt der Puls. Die Gebühr sagt dabei etwas über die Dringlichkeit aus, wie schnell die anstehenden Transaktionen in einen Block platziert werden möchten. Das ist ein gutes Mass für die Vitalität des Netzwerks.

Klangliche Übersetzung. Übersetzt in den Bereich eines menschlichen Herzschlags setzt dieses Plugin das globale Tempo für ein Ableton Projekt und gibt gleichzeitig diesen Beat als MIDI-Instrument aus.

Technische Umsetzung.

  • maxurl GET auf …/fees/recommended, getaktet per metro 30000 (30 s).
  • dict.deserializedict.unpack body:dict.unpack hourFee:.
  • scale 1 100 → 50 200: Gebühr (1–100 sat/vB) auf 50–200 BPM.
  • live.path live_setset tempo $1: schreibt direkt das globale Tempo.
  • Puls: metro 4nmakenote → MIDI-Note (Pitch und Velocity vom Regler) als hörbarer Schlag.
btcHeart — Max-for-Live-Gerät, Puls im Takt der Gebühren
btcHeart — der Puls im Takt der Gebühren

btcBrain — Das Gehirn (Stimmen im Kopf)

Hinweis: btcBrain.amxd ist die aktuelle Fassung. Der ältere BTCmem.maxpat (reines gefiltertes Rauschen) ist überholt und wird hier nicht mehr dokumentiert.

Metrik. Der Mempool als das, was dem Netzwerk gerade „durch den Kopf geht": die Transaktionen, die noch nicht in die Chain (das Langzeitgedächtnis) übergegangen sind. Je voller, desto reger das Denken.

Klangliche Übersetzung. Stimmen im Kopf: ein Sinuston, der im Random Walk in der Tonhöhe auf und ab wandert, während sich zufällig seine Lautstärke verändert — ein murmelnder innerer Monolog. Darunter weisses Rauschen, das mit einem Hochpass Filter moduliert wird. Der Mempool-Füllstand bestimmt, wie viel Tiefen dem Rauschen genommen werden. Wenig Gedanken bedeutet tiefes, breites Rauschen.

Technische Umsetzung.

  • maxurl GET auf …/api/mempool, getaktet per metro 5000 (5 s) → dict.unpack count:.
  • scale 0 200000 → 1 128 („TX Count / Ranged"): Füllstand range-skaliert, steuert den Cutoff des Hochpass-Filters am Rausch-Bett (biquad~ in p varNoise).
  • Stimmen: cycle~ 440 (Sinus) mit Random Walk in der Frequenz (drunk 100 16scale 0 100 → 150 350 Hz), zufällig schwankende Lautstärke (random 100line~*~).
  • Rausch-Bett: noise~biquad~ mit jitterndem Cutoff (drunk 128 5, p varNoise).
  • Crossfade Rauschen ↔ Stimme über „noise level" / „speech level" / „activate speech".
  • Langsame Modulation: cycle~ 0.1snapshot~ 20.

btcHands — Die Hände

Metrik. Die Entwickler-Aktivität von Bitcoin Core (bitcoin/bitcoin) als Hände des Organismus: das Netzwerk kann sich nicht von selbst ändern, es wird von aussen weiterentwickelt. Nicht die letzten sieben Tage, sondern der eingeschliffene Wochenrhythmus über die ganze Historie4 — wann gewöhnlich gearbeitet wird, die Muskelerinnerung des Projekts.

Die Hände sind hier verantwortlich für die Evolution des Systems, das sich nicht von sich aus weiterentwickeln kann. Es sind nicht nur im übertragenen Sinn Hände, sondern wortwörtlich die der Entwickler, die ihre Ideen, Vorschläge und Umsetzungen über ein Keyboard in den Organismus übertragen.

Klangliche Übersetzung. Jeder Wochentag wird durch eine Tonhöhe der Oktave symbolisiert. Beim Einbinden in Ableton können daraus, z. B. durch Nachschalten des Scale-MIDI-Plugins, auch alternative Tonleitern werden wie Major, Minor, Blues, Pentatonik usw. Innerhalb eines Tages variiert der Anschlag (Velocity) mit der typischen stündlichen Aktivität: Stunden mit viel Arbeit bedeuten kräftigeren Anschlag. Der gewohnte Arbeitstakt wird damit zu einer einfachen, wiederkehrenden Melodie.

Technische Umsetzung.

  • Quelle: GET …/repos/bitcoin/bitcoin/stats/punch_card → Array [Wochentag, Stunde, Commits], 7 × 24.
  • Parsing: zl.slice / zl.group 3 / iter / zl.queue.
  • Wochentag → Tonhöhe: + 48 (Basis C3), 7 Tage über die Oktave.
  • Stunde → Velocity: scale 0 100 → 10 100, per zl.stream min/max-normalisiert („Check for max and min").
  • Wiedergabe im Transport-Sync: metro 8nmakenotemidiformatmidiout.

Hinweis zur Datenaussage: Der punch_card-Endpoint liefert eine All-Time-Aggregation pro Wochentag × Stunde (GitHub Docs). btcHands portraitiert damit den typischen Wochenrhythmus der Core-Entwicklung, nicht den Live-Stand. Eine frühere Fassung las bitcoin/bips — auf bitcoin/bitcoin (Core) umgestellt.

Zusammenspiel

Die drei Plugins lassen sich einzeln verwenden oder gemeinsam in einem Set kombinieren. Man kann sie grundsätzlich in zwei Modi betreiben:

  • Einzeln oder in Kombination, um die Vorgänge im Netzwerk hörbar zu machen.
  • Als Elemente für Musikprojekte. Hier wird in Kooperation mit dem Netzwerk neue Musik geschaffen. Diese kann entweder flüchtig im Augenblick entstehen und vergehen oder auch geplant, orchestriert und produziert werden.

Im Zusammenspiel gibt btcHeart über das globale Tempo den Takt vor, btcHands läuft transport-synchron darauf (metro 8n), btcBrain liegt als freilaufendes Audio darunter. Abgeleitet aus dem Herzschlag kann ein Blutfluss entstehen: Der MIDI-Ausgang des Herzens kann in diesem Fall den Druck und die Rate vorgeben, um sie in ein elastischeres Instrument einfliessen zu lassen.

Somit ergibt sich ein Klang-Körper, der, je nach Botschaft, die man vermitteln möchte, Betonung auf die einzelnen Funktionen und Teile legen kann.

Herausforderungen

  • Skalierung der Mappings gestaltete sich schwierig und ist zum Teil hardcoded. Min und Max Werte müssen bekannt sein oder geschätzt werden. Wertebereiche (z. B. count 0–40000, hourFee 1–100) sinnvoll auf hörbare Bereiche legen, ohne dass es bei realen Schwankungen kippt.
  • Sync zwischen freilaufendem Audio (Brain oder Heartbeat) und transport-gebundenen Organen ist nur problemlos, wenn es keinen Rhythmus gibt, wie im Fall des Brain. Besonders beim Heartbeat wird das problematisch: Bei einem späteren Start des Transports muss er von Hand synchronisiert werden, was schwierig ist und im besten Fall kreative Rhythmus-Variationen ergibt.
  • Datenlücken / leere oder fehlerhafte API-Antworten werden im Moment zum Teil mit Default-Werten abgefangen (heart), können aber auch zu Fehlfunktionen führen.

Ausblick

Weiterentwicklung und Bug Fixes

  • Zentrale Konfiguration: Um die Konfiguration zu erleichtern, sollte ein anderes Node eingesetzt werden, müsste die Node-IP zentral angepasst werden können.
  • Design Updates der Plugins. Die Plugins sind im Moment zweckmässig und bedienbar, folgen dabei aber keiner einheitlichen Designsprache oder einer bestimmten Ästhetik.
  • Trigger für den Heartbeat: Der Heartbeat ist nur beim ersten Mal laden und starten genau auf dem Beat. Wenn der Transport gestoppt wird, läuft der Heartbeat unabhängig weiter und ist, bei einem weiteren Start versetzt.

Weitere Organe

  • Blocks als Wirbel, die durch jeden neuen Block verstärkt werden und theoretisch unendlich weiter wachsen.
  • Die Verteilung der Netzwerkknoten als global umspannende Haut, die Schutz und Resilienz bietet.
  • Die Anpassung der Schwierigkeit als Mechanismus der Homöostase, welche die Bitcoin Neuschöpfung und damit Geldmenge im Gleichgewicht hält.

Anhang

Mapping-Übersicht

OrganEingangBereich EingangZielBereich ZielMax-Objekt
btcHearthourFee1–100Tempo (BPM)50–200scale 1 100 50 200
btcBraincount0–200000Verarbeitung (range)1–128scale 0 200000 1 128
btcBrainStimmen-Frequenz0–100 (Walk)Hz150–350scale 0 100 150 350
btcHandsCommits/Stunde0–100*Velocity10–100scale 0 100 10 100
btcHandsWochentag0–6Pitchab 48 (C3)+ 48

* normalisiert über zl.stream min/max je Datensatz.

API-Endpunkte

  • GET …:3006/api/v1/fees/recommended → u. a. hourFee
  • GET …:3006/api/mempool → u. a. count
  • GET https://api.github.com/repos/bitcoin/bitcoin/stats/punch_card[[Wochentag, Stunde, Commits], …] (All-Time-Aggregat)

Plugin-Dateien

  • btcHeart.amxd (Max for Live, Ableton 8.6)
  • btcBrain.amxd
  • btcHands.amxd

Quellen

  1. Gigi, Proof of Life — Why Bitcoin is a Living Organism.
  2. Ralph C. Merkle, DAOs, Democracy and Governance.
  3. James Bridle im Interview mit Claire L. Evans, „There's Nothing Unnatural About a Computer", Grow by Ginkgo, 14.03.2023: growbyginkgo.com — zum Buch Ways of Being: Beyond Human Intelligence (2022).
  4. GitHub — punch_card Endpoint (bitcoin/bitcoin).
Weiter
Weiter

Satelliten Selfies