Bereits das Ordinals-Protokoll spaltete die Bitcoin-Community in den vergangenen Wochen über die Frage, wie mit arbiträren Daten auf der Bitcoin Blockchain, die keinen direkten „finanziellen“ Nutzen haben, umgegangen werden soll. Mit dem vor wenigen Tagen veröffentlichten STAMPS-Protokoll könnte sich diese Debatte jetzt noch weiter verschärfen, und das aus berechtigten Gründen. Während bislang Daten, die mit Ordinals zusammenhängen, relativ einfach von Nutzern verworfen oder sogar aktiv abgelehnt werden können, wird sich dies mit STAMPs als deutlich schwieriger herausstellen.

Um die Gründe dafür nachvollziehen zu können, schauen wir uns den Ansatz dieses neuen Protokolls genauer an und versuchen die möglichen Auswirkungen für Bitcoin einzuordnen.

Der Witness Discount

Die Möglichkeit beliebige Daten auf der Bitcoin Blockchain zu verewigen gab es schon immer. Satoshi Nakamoto selbst führte im Genesis Block, dem ersten Block der Bitcoin Blockchain, die berühmt-berüchtigte Schlagzeile "Chancellor on brink of second bailout for banks" der britischen Zeitung "The Times" auf. Doch das Speichern von größeren Datenmengen stellte sich durch den eingeschränkten Speicherplatz immer als teures und unpraktisches Unterfangen dar.

Mit dem Segwit Update, welches 2017 im Bitcoin-Netzwerk aktiviert wurde, führte man eine künstliche Vergünstigung für Daten im sogenannten Witness-Teil von Transaktionen ein. Dort stehen üblicherweise digitale Signaturen, die bestätigen, dass eine bestimmte Menge Bitcoin ausgegeben werden darf. Das Ordinals-Protokoll nutzt eben diese Vergünstigung für Inscriptions von Bildern, Texten, GIFs und sonstigen Dateien aus. Es war damit erstmals relativ effizient, größere Datenmengen auf der Bitcoin Blockchain zu verewigen – natürlich trotzdem mit einer vergleichsweise hohen Netzwerkgebühr.

Die stetig steigende Anzahl an Ordinal Inscriptions | Quelle: ordinals.hiro.so

Pruning

Ein zusätzlicher Vorteil, der mit der Nutzung des Witness-Teils einhergeht, ist die relativ einfache Möglichkeit, sämtliche Daten nach der Verifizierung der Transaktion zu verwerfen. Diese sind aus der Sicht einer Full-Node schließlich nicht mehr relevant. Hat man also keine Lust, irgendwelche Bilder der NFT-Community abzuspeichern, kann darauf auch verzichtet werden.

Im Grunde redet man in so einem Fall von einer sogenannten Pruned Node. In den meisten Fällen gehen solche Nodes noch einen Schritt weiter: Anders als bei einer normalen Full-Node, welche die gesamte Bitcoin Blockchain ohne Einschränkung speichert, verwerfen sie Blöcke und Transaktionen nach der Verifizierung vollständig. Ideal ist das für Nutzer, die nicht viel Speicherplatz zur Verfügung haben, aber trotzdem verifizieren wollen, dass im Bitcoin-Netwerk alles mit rechten Dingen zugeht.

Einen besonders wichtigen Datensatz speichern und aktualisieren aber auch solche Pruned Nodes...

Das UTXO-Set

Lese-Tipp: Was ist ein Unspent Transaction Output (UTXO)?

Eine Bitcoin Node hat jederzeit alle Outputs, die zum aktuellen Zeitpunkt ausgegeben werden können, griffbereit im sogenannten UTXO-Set. Diese Datenmenge wird ständig, also mit jedem neuen Block, aktualisiert, da natürlich andauernd Bitcoin ausgegeben und damit wieder neue UTXO erstellt werden. Ein großer Teil des UTXO-Sets wird sogar im Arbeitsspeicher „warm gehalten“, um die Verifizierung von neuen Blöcken bzw. Transaktionen so effizient wie möglich abzuwickeln.

Daher kommt auch der Anreiz, das UTXO-Set so klein wie möglich zu halten, um die allgemeinen Anforderungen für den Betrieb einer Bitcoin Node nicht zu groß werden zu lassen. Vor allem die eben erwähnten Pruned Nodes werden bei einem immer größer werdenden UTXO-Set zunehmend unattraktiver, da plötzlich große Datenmengen an Informationen gespeichert werden müssen, die eigentlich nicht gebraucht werden.

OP_RETURN

Schreibt man arbiträre Daten in einen Bitcoin Output, z.B. dass man frisch verheiratet ist oder ein Neugeborenes zur Welt gebracht hat, ist das zwar ein nettes Andenken; für Bitcoin Nodes allerdings eine vollkommen nutzlose Information. Trotzdem stehen solche Daten in der Regel in einem UTXO, der von allen Nodes auf dem Servierteller bereitgehalten werden muss. Völlig unnötigerweise würden also Daten, die nie mehr für die Verifizierung von Transaktionen relevant sein werden, wertvollen Speicherplatz im UTXO-Set belegen.

Genau aus diesem Grund hat man bereits im Jahr 2014 mit Bitcoin Core v0.9.0 einen neuen Opcode für die Bitcoin Script Sprache eingeführt, mit dem Namen OP_RETURN. Dieser Befehl erlaubt es 80 Byte an beliebigen Daten in einen Output zu schreiben, sorgt aber gleichzeitig dafür, dass die Ausführung des Skripts sofort fehlschlägt. Bitcoin, die man an einen OP_RETURN Output schickt, sind also beweisbar für immer verloren, da man das Skript unter keinen Umständen lösen kann.

Damit erlaubt man den verifizierenden Nodes sämtliche OP_RETURN Outputs aus dem UTXO-Set zu werfen, da man sie schließlich sowieso niemals ausgeben kann. Es gibt keinen Grund, ein Mittagessen warmzuhalten, das niemals jemand abholen wird.

STAMPS

In den vorherigen Abschnitten haben wir jetzt gehört, wie man idealerweise, wenn überhaupt, Daten in die Bitcoin Blockchain schreiben sollte. Vielleicht ist dem ein oder anderen sogar aufgefallen, dass viele dieser Eigenschaften relativ gut mit dem Ordinals-Protokoll harmonieren und dieses eigentlich gar nicht so schlimm ist – zumindest aus technischer Sicht.

Doch all das wird mit Bitcoin STAMPS, Secure, Tradeable Art Maintained Permanently, komplett über Bord geworfen.

Wer sich bereits über das Ordinals-Protokoll aufgeregt hat, sollte sich besser anschnallen:

  • Anstatt den vergünstigten Witness-Teil der Transaktionen für das Speichern der „Bitcoin NFTs“ zu nutzen, erstellt man einfach ganz viele Outputs, also neue UTXOs, und verteilt die Daten in diesen. Damit vervierfachen sich die Transaktionsgebühren erstmal, da nicht mehr vom "Segwit-Rabatt" profitiert werden kann. Darüber hinaus sorgt man für einen zusätzlichen Überhang an Daten, da verhältnismäßig viele Outputs erstellt werden müssen.

  • Anstatt den extra dafür vorgesehenen OP_RETURN Befehl zu nutzen, um unnötige Daten im UTXO-Set zu vermeiden, versteckt man die Daten einfach in „ganz normalen“ Outputs. Zwar sind diese Outputs alles andere als normal, doch zumindest kann man sie in der Theorie ausgeben. Bitcoin Nodes müssen diese Outputs also in ihr UTXO-Set aufnehmen und dort langfristig aufbewahren!

Aber wozu das alles? Der Grund solche Kompromisse einzugehen steht bereits im Namen: Maintained Permanently, also permanente Aufbewahrung. Während sich in der Diskussion um das Ordinals-Protokoll viele Nutzer dazu entschieden haben, bewusst Daten von Inscriptions zu verwerfen oder sogar bei der Weiterleitung von Transaktionen abzulehnen, wird dies mit STAMPs deutlich erschwert.

Jede Bitcoin Node muss die Daten der besagten Outputs aufbewahren, da es sich augenscheinlich um einen gewöhnlichen UTXO handelt. Durch die hohe Anzahl an benötigten Outputs bläht sich somit das UTXO-Set mit Daten auf, die für zukünftige finanzielle Transaktionen nie relevant sein werden. Vor allem für Pruned Nodes bedeutet dies höhere Speicheranforderungen, denn auf das UTXO-Set kann schließlich nicht einfach so verzichtet werden.

Darstellung einer STAMP-Transaktion auf mempool.space

Dadurch versprechen sich die Nutzer von STAMPs maximale Sicherheit und dezentrale Verteilung ihrer digitalen Kunst. Der Entwickler rechtfertigt seinen neuen Ansatz auf Twitter:

"Bitcoin Stamps profitieren nicht von der ‚unfairen‘ Vergünstigung von Witness Daten wie Ordinals, wir nehmen also am Wettbewerb um Speicherplatz fair und ehrlich teil.

Das mag euch nicht gefallen, aber so sieht ein [freier] Gebührenmarkt aus."

@mikeinspace

Eine Gefahr für Bitcoin?

Wie so oft lautet die Antwort auf diese, in diesem Fall gar nicht unberechtigte Frage: Nein, nicht wirklich. Wie auch schon bei der Debatte um Ordinals schreitet als Erstes das Argument der Netzwerkgebühren ein. Ineffizienter wie vom STAMPS-Protokoll vorgeschlagen kann man Daten eigentlich gar nicht in der Bitcoin Blockchain verewigen. Steigt die Nachfrage nach finanziellen Transaktionen, dürften STAMPs relativ schnell aus dem Markt verdrängt werden, alleine weil die deutlich günstigere Alternative, das Ordinals-Protokoll, immer um ein Vielfaches attraktiver sein wird. Jene Daten werden außerdem von den meisten Nodes sowieso ohne Einschränkung aufbewahrt, weshalb das Argument der "unverwerfbaren" Verwahrung sowieso nicht wirklich schlüssig ist.

Man könnte also fast schon meinen, dass es hier eher darum geht, Kritiker des Ordinals-Protokolls noch weiter auf die Palme zu bringen als sie ohnehin schon sind. Der wirkliche „Vorteil“ eines STAMPs gegenüber einer normalen Inscription wirkt ziemlich konstruiert.

Aktuell gibt es bereits über 4500 STAMPs, die man sich in einem dafür eingerichteten Explorer auch genauer anschauen kann. Schnell fällt auf, dass die allermeisten nur eine Auflösung von 24 auf 24 Pixeln haben, da größere Bilder einfach viel zu teuer wären.

Auszug aus dem stampchain.io Explorer

Da in den UTXOs eines STAMPs neben den arbiträren Daten auch ein echter Schlüssel hinterlegt ist, können diese theoretisch jederzeit ausgegeben werden, und damit auch nicht einfach ähnlich wie OP_RETURN behandelt bzw. ignoriert werden. Ein Block mit einer Transaktion, die einen STAMP-UTXO ausgibt, könnte bei einem unvollständigen UTXO-Set ansonsten nicht verifiziert werden und wäre, für die Node, ungültig.

Am Ende des Tages kann man allerdings immer argumentieren, dass Bitcoin benutzt wird. Zwar auf eine fast schon missbräuchliche Weise, doch diese Auffassung ist vollkommen subjektiv. Das Bitcoin-Netzwerk interessiert sich nicht dafür, wie es verwendet wird, solange die Regeln eingehalten werden und für Transaktionen bezahlt wird. Und vor allem auf letzteres müssen sich Nutzer des STAMP-Protokolls einstellen!


[partnerlink kategorie='premiumpartner']