Autoren: Ash Li, Noah Ho
Mit der Einführung des Ordinal-Protokolls, das die Möglichkeit bietet, Bitcoins zu nummerieren und zu beschriften, wurde die Produktpalette des Bitcoin-Ökosystems erweitert und eine neue Dynamik in das Bitcoin-Ökosystem gebracht. In diesem Artikel werden wir uns mit den Details des Ordinal-Protokolls befassen, einschließlich der Nummerierung und Nachverfolgung jedes Bitcoins und der Beziehung zwischen Beschriftungen und der Nummerierung. Doch bevor wir uns in dieses Thema vertiefen, müssen wir zunächst einige grundlegende Hintergründe zu Bitcoin verstehen, damit wir das Folgende besser verstehen.
Nach Abschluss dieses Artikels beherrschen Sie den Transaktionsmechanismus und das Zahlungsmodell von Bitcoin, verstehen, wie Ordinals die Nummerierung und Nachverfolgung für jeden Satoshi implementiert und wie Inschriften erstellt und gehandelt werden. Darüber hinaus verstehen Sie die Unterschiede zwischen verschiedenen Arten von Geldbörsen.
I. Bitcoin-Hintergrund
Bitcoin verwendet ein bargeldähnliches Transaktionsmodell und seine Zahlungen basieren auf einem Modell namens UTXO, das sich vom traditionellen, auf Kontoständen basierenden Modell unterscheidet. Wenn beispielsweise in einem Bankkontobuchhaltungsmodellprozess A 100 $ an B überweist, zeichnet die Bank drei Schritte auf, die einen Transaktionsprozess ausmachen. Der erste Schritt besteht darin, 100 $ von A's Konto abzubuchen, und die Datensatz-ID für diesen Schritt ist tid1. Der zweite Schritt besteht darin, 100 $ auf B's Konto einzuzahlen, und die Datensatz-ID für diesen Schritt ist tid2. Der dritte Schritt besteht darin, einen Überweisungsdatensatz aufzuzeichnen, der tid1 mit tid2 verknüpft und angibt, dass A's Konto um 100 $ reduziert und B's Konto um 100 $ erhöht wird. Auf diese Weise wird die Überweisungsbeziehung zwischen A und B aufgezeichnet und kann in Zukunft abgefragt und verfolgt werden. Nun erklären wir, wie Bitcoin-Zahlungen vorgenommen werden, indem wir UTXO und das Zahlungsmodell vorstellen.
UTXO
In der Bitcoin-Blockchain werden alle Guthaben in einer Liste namens Unspent Transaction Output (UTXO) gespeichert. Jedes UTXO enthält eine bestimmte Anzahl von Bitcoins sowie Informationen über den Besitzer dieser Bitcoins und gibt an, ob sie verfügbar sind. Man kann es sich wie einen auf den Namen des Inhabers unterschriebenen Scheck vorstellen, der an eine andere Person zur Verwendung übertragen werden kann, solange der Inhaber ihn unterschreibt. Für eine bestimmte Adresse ergeben alle UTXO-Beträge den Kontostand des Wallets an dieser Adresse. Indem wir alle UTXOs durchlaufen, können wir den aktuellen Kontostand für jede Adresse ermitteln. Die Summe aller UTXO-Beträge ergibt die Gesamtmenge der derzeit im Umlauf befindlichen Bitcoins.
In der Transaktionsstruktur von Bitcoin besteht jede Transaktion aus mehreren Ein- und Ausgaben, wobei jede Eingabe ein Verweis auf eine vorhandene UTXO ist und jede Ausgabe die neue Adresse angibt, an der die Gelder empfangen werden, sowie den entsprechenden Betrag. Sobald eine Transaktion eingeleitet wurde, wird die in ihrem Eingabeabschnitt referenzierte UTXO vorübergehend gesperrt, um eine Wiederverwendung zu verhindern, bis die Transaktion abgeschlossen ist. Erst wenn diese Transaktion vom Miner erfolgreich in einen Block gepackt und vom Netzwerk bestätigt wurde, ändert sich der zugehörige UTXO-Status. Insbesondere werden die als Eingabe für die Transaktion verwendeten UTXOs aus der UTXO-Liste entfernt, was darauf hinweist, dass sie verbraucht wurden, während die Ausgabe der Transaktion neue UTXOs generiert, die der UTXO-Liste hinzugefügt werden. Es ist verständlich, dass die alten Bargeldschecks verwendet werden und dann ablaufen, wodurch neue Bargeldschecks generiert werden, deren Eigentum dem neuen Inhaber gehört.
Es ist hervorzuheben, dass jeder UTXO nur einmal in einer einzigen Transaktion verwendet werden kann. Sobald er als Input verwendet wird, wird er dauerhaft aus der UTXO-Liste entfernt. Gleichzeitig wird der neu generierte Output als neuer UTXO zur Liste hinzugefügt. Die UTXO-Liste ändert sich ständig und wird bei der Erstellung jedes neuen Blocks entsprechend aktualisiert. Und indem wir den Transaktionsverlauf in der Blockchain analysieren, können wir den Status der UTXO-Liste zu jedem beliebigen Zeitpunkt rekonstruieren.
Darüber hinaus übersteigt der Gesamtbetrag der Eingaben einer Transaktion normalerweise geringfügig den Gesamtbetrag der Ausgabe. Diese Differenz, die als Transaktionsgebühr oder Netzwerkgebühr bezeichnet wird, dient als Anreiz für die Miner, die für das Packen der Transaktionen in Blöcke verantwortlich sind. Die Höhe der Netzwerkgebühr ist proportional zur Komplexität der Transaktion. Daher ist für eine Transaktion mit mehr Eingaben und Ausgaben normalerweise eine höhere Netzwerkgebühr erforderlich.
Um die Struktur von Bitcoin-Transaktionen anschaulicher zu verstehen, werden wir nun ein konkretes Beispiel durchgehen. Die Struktur einer Bitcoin-Transaktion ist wie folgt, wobei die Variablen vin und vout jeweils den „Input“ und „Output“ einer Bitcoin-Transaktion darstellen. Bitcoin-Transaktionen werden nicht durch Inputs und Outputs dargestellt, im Gegensatz zu traditionellen Kontostandsmodellen, die kontoförmige Datenänderungen aufzeichnen.

Wir können einen zufälligen Transaktionsdatensatz bei blockchain.com zur Analyse auswählen. Die folgende Abbildung zeigt eine Transaktion mit der Hash-ID 0627052b6f28912f2703066a912ea577f2ce4da4caa5a5fbd8a57286c345c2f2. Sie enthält einen Input und zwei Outputs.

Mithilfe der Bitcoin-CLI-Befehle getrawtransaction und decoderawtransaction können wir die zugrunde liegende Struktur der obigen Transaktionen sehen:

Im Bitcoin-Netzwerk enthält der Transaktions-Output zwei wichtige Informationen: die Adresse (Public-Key-Hash) und den Betrag (in Bitcoins). Wenn der Output einer Transaktion nicht im Input anderer Transaktionen verwendet wird, dann wird dieser Transaktions-Output als unspent transaction output (UTXO) bezeichnet. Wer den privaten Schlüssel besitzt, der dem öffentlichen Schlüssel im UTXO entspricht, hat das Recht, diesen UTXO zu verwenden oder auszugeben.
Schauen wir uns die Information in der „vin“ im obigen Code an, die darauf hinweist, dass die für diese Transaktion ausgegebene UTXO aus einer anderen Transaktion (mit der ID 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18) des 0. Outputs stammt (eine Transaktion kann mehrere Outputs haben, der Index beginnt bei 0). Wir können die Menge dieser UTXO dem Transaktionsverlauf entnehmen (z. B. 0,1), daher muss dieser Wert 0,1 nicht explizit in die Transaktion geschrieben werden, sondern wird durch Nachschlagen der UTXO-Informationen ermittelt. „vout“ dieser Transaktion hat zwei Outputs, nämlich zwei neue UTXOs, die dem neuen Guthaben und dem Inhaber entsprechen, bis eine andere Transaktion sie als Input verbraucht.
Zahlungsmodell
Um das Zahlungsmodell des Bitcoin-Netzwerks besser zu verstehen, stellen wir ein Beispiel für den Zahlungsprozess einer Zahlung von A an B in Höhe von n Bitcoins dar. Das folgende Diagramm zeigt den Prozess des Sendens von 3 Bitcoins von Benutzer A an Benutzer B.

Für Benutzer A ist es zunächst notwendig, die Menge aller UTXOs zu bestimmen, die er besitzt, d. h. alle Bitcoins, die Benutzer A zur Verfügung stehen;
A wählt aus diesem Satz einen oder mehrere UTXOs als Eingaben für die Transaktion aus, und die Summe dieser Eingaben beträgt m(2+0,8+0,5=3,3 BTC) und ist größer als der zu zahlende Betrag n(3 BTC);
Benutzer A legt zwei Ausgaben für die Transaktion fest, eine Ausgabe zur Zahlung des Betrags n (3 BTC) an Bs Adresse und die andere Ausgabe zur Zahlung des Betrags m-n-fee (3,3-3-0,001=0,299 BTC) an eine von A‘s eigenen Wechselgeldadressen. (b) Die Brieftasche des Benutzers besteht normalerweise aus mehreren Adressen, von denen jede normalerweise nur einmal verwendet wird, und das Wechselgeld wird standardmäßig an eine neue Adresse zurückgegeben;
Während B wartet, bis der Miner diese Transaktion zur Bestätigung in die Kette packt, kann er diese Transaktionsinformationen erhalten. Da die Blockgröße eine Obergrenze hat (ca. 1 MB), werden Miner Transaktionen mit hoher Transaktionsrate (Fee_Rate = Gebühr/Größe) vorrangig bestätigen, um die höchste Gebührenrendite zu erzielen. Wir können die Mining-Transaktionsgebühr in Echtzeit im Mempool sehen. Wenn wir während des Übertragungsprozesses die schnellste Bestätigung wünschen, können wir „Hohe Priorität“ wählen oder eine geeignete Transaktionsgebührenrate anpassen.

II. Satoshis Nummerierung und Verfolgung
Die Gesamtzahl der Bitcoins beträgt 21 Millionen, und jeder Bitcoin enthält 10^8 Satoshi (Sat). Somit gibt es 21 Millionen * 10^8 Satoshi im Bitcoin-Netzwerk. Das Ordinals-Protokoll unterscheidet diese Satoshi, indem es jeden einzelnen eindeutig nummeriert. Dieser Abschnitt beschreibt, wie das Protokoll dies tut und wie es die Konten verfolgt, in denen sich jeder Satoshi befindet. Darüber hinaus wird die Seltenheitsklassifizierung der Satoshi beschrieben.
Satoshis Nummerierung
Gemäß dem Ordinals-Protokoll werden Satoshi in der Reihenfolge nummeriert, in der sie abgebaut werden. Die folgende Abbildung zeigt die Darstellung des 0. Satoshi, der aus dem 0. Block abgebaut wurde.

Es gibt verschiedene Darstellungen für Ordinalzahlen: (https://docs.ordinals.com/overview.html)
Ganzzahlnotation: [2099994106992659]() Die Ordnungszahl, die entsprechend der Reihenfolge zugewiesen wird, in der die Satoshi geschürft wurden.
Dezimalnotation: [3891094,16797]() Die erste Zahl ist die Blockhöhe, in der der Satoshi geschürft wurde, die zweite der Versatz des Satoshi innerhalb des Blocks.
Gradnotation: [3°111094′214″16797‴](). Die erste Zahl ist der Zyklus, beginnend bei 0, die zweite ist der Index des Blocks in der Halbierungsepoche, die dritte Zahl ist der Index des Blocks in der Schwierigkeitsanpassungsperiode und die letzte Zahl ist der Index des Sat im Block.
Perzentilnotation: [99,99971949060254 %] (). Die Position des Satoshi im Bitcoin-Angebot, ausgedrückt als Prozentsatz.
Name: [satoshi](). Eine Kodierung der Ordnungszahl mit den Zeichen a bis z.
Wir werden ein Beispiel durchgehen, wie die neu geschürften Bitcoins nummeriert werden. Wenn wir uns Block 795952 der Bitcoin-Blockchain ansehen, können wir sehen, dass die erste dieser Transaktionen, Tx 3a1f...b177, die Belohnung des Miners aufzeichnet (die Coinbase-Transaktion). Diese Transaktion enthält neu geschürfte Bitcoins, die als verpackte Belohnung für den Miner verwendet werden, sowie eine Gebühr, die der Initiator der Transaktion an den Miner zahlt. Wenn wir uns die Eingabe des folgenden Diagramms ansehen, können wir sehen, dass seine UTXO-ID aus einer Folge von Nullen und der Blockhöhe besteht. Die Ausgabeadresse ist dann die Wallet-Adresse des Miners und der Betrag ist die Summe der oben genannten Belohnungen und Gebühren.

Wenn wir uns den Abschnitt der Ausgabe an die Miner weiter ansehen, können wir die Verteilung der Adressen, Beträge und der enthaltenen Satoshi erkennen. Diese enthalten, wie bereits erwähnt, die Mining-Belohnungen und Gebühren. Davon sind die grünen Sats-Nummerninformationen 1941220000000000–1941220625000000 die neuen Satoshi, die durch die Mining-Belohnung generiert werden, während die restlichen 712 Satoshi-Datensätze allen Gebühren im Block entsprechen.

Wir können die Nummer Sat 1941220000000000 überprüfen. Ihre Blocknummer ist 795952 und die Dezimalstelle ist 795952,0, was bedeutet, dass die Blockhöhe für das Mining dieses Satoshi 795952 ist und Satoshis Nummer in diesem Block 0 ist, gefolgt von der Seltenheitsmarkierung für ungewöhnlich, die wir im späteren Teil ausführlich beschreiben werden.

Satoshis Flow
Da jeder BTC durch Mining-Belohnungen generiert wird, sind sie alle nachvollziehbar. Bitcoin-Konten verwenden das UTXO-Modell. Nehmen wir an, dass Benutzer A den 100.-110. Satoshi durch Mining erhalten hat (die 10 Satoshi werden als Ganzes im selben UTXO mit der ID adc123 gespeichert). Wenn Benutzer A Benutzer B 5 Satoshi zahlen möchte, wählt er die ID abc123 als Eingabe der Transaktion, wobei Benutzer B 5 Satoshi gegeben und Benutzer A 5 Satoshi als Wechselgeld zurückgegeben werden. Beide Kopien von 5 Satoshi werden als Ganzes in zwei UTXOs mit den IDs abc456 bzw. abc789 gespeichert. Die obigen UTXO-IDs und die Anzahl der Satoshi werden nur als Beispiele angezeigt. In der Praxis beträgt die Mindestanzahl 546 Satoshi und die UTXO-IDs werden nicht in dieser Form ausgedrückt.

In der obigen Transaktion ist der Flusspfad von 10 Satoshi von Benutzer A
Beim Mining werden 10 Satoshi mit der Nummer [100, 110] generiert. Dies bedeutet, dass die Satoshi mit den Nummern 100 bis 109 im UTXO mit der ID abc123 gespeichert sind und sein Besitzer Benutzer A ist.
Wenn A die Überweisung durchführt, werden die 10 Satoshi in zwei Teile mit jeweils 5 Satoshi aufgeteilt. Dabei wird das „First-in-First-out“-Prinzip verwendet, d. h. die Nummerierung der Satoshi wird durch ihren Index im Transaktions-Output bestimmt. Angenommen, die Reihenfolge des Outputs ist Benutzer A und dann Benutzer B, dann werden die verbleibenden 5 Satoshi von Benutzer A nummeriert [100, 105) und im UTXO mit der ID abc456 gespeichert, während die 5 Satoshi von Benutzer B nummeriert [105, 110) und im UTXO mit der ID abc789 gespeichert werden.
Seltener Satoshi
Als abgeleitetes Spiel des Ordinals-Protokolls kann die Seltenheit von Satoshi anhand der Reihenfolge definiert werden, in der sie abgebaut werden. Dies führt dazu, dass einige spezielle Satoshi unterschiedliche Seltenheitsgrade haben. Im Folgenden sind die Seltenheitsstufen verschiedener Satoshi aufgeführt:
Common: Jeder Sat, der nicht der erste Sat seines Blocks ist (Gesamtangebot: 2,1 Billiarden)
ungewöhnlich: Der erste Satz jedes Blocks (Gesamtangebot: 6.929.999)
selten: Der erste Sat jeder Schwierigkeitsanpassungsperiode (Gesamtangebot: 3437)
Epos: Der erste Sat jeder Halbierungsepoche (Gesamtangebot: 32)
legendär: Der erste Sat jedes Zyklus (Gesamtvorrat: 5)
mythisch: Der erste Sat des Genesis-Blocks (Gesamtangebot: 1)
Dieses Konzept seltener Satoshi kann das Bitcoin-Ökosystem interessanter und wertvoller machen. Satoshi unterschiedlicher Seltenheit können auf dem Markt unterschiedliche Werte haben und Sammler und Investoren anziehen.
III. Beschriftungsmethode
Ordinals unterscheidet sich erheblich von anderen NFTs auf Nicht-Bitcoin-Ketten. Einer der Hauptunterschiede besteht darin, dass die Metadaten von Ordinals nicht an einem bestimmten Ort gespeichert werden. Stattdessen sind die Metadaten in die Zeugendaten der Transaktion eingebettet, weshalb wir sie als „Inschrift“ bezeichnen, weil sie wie eine Inschrift auf einem bestimmten Teil der Bitcoin-Transaktion „eingraviert“ sind. Die Daten sind an einen bestimmten Satoshi angehängt. Dieser Inschriftprozess wird durch Segregated Witness (SegWitness) und Pay-to-Taproot (P2TR) implementiert, der aus zwei Phasen besteht: Commit und Reveal. Es ist möglich, jede Art von Inhalt (z. B. Text, Bild oder Video) auf einen bestimmten Satoshi zu schreiben. Wir werden weiter unten eine weitere direktere Speichermethode, OP_RETURN, vorstellen und erklären, warum sie nicht als Mittel zur Inschrift verwendet wird. Außerdem werden wir beschreiben, was isolierter Zeuge und Pay-to-Taproot sind und welche Rolle sie bei der Inschrift spielen. Abschließend werden wir die Art der Inschrift vorstellen.
OP_RETURE
Im Bitcoin Core-Client Version 0.9 wurde der Kompromiss schließlich durch die Übernahme des RETURN-Operators erreicht. RETURN ermöglicht Entwicklern, der Transaktionsausgabe 80 Byte an Nichtzahlungsdaten hinzuzufügen. Anders als Pseudozahlungen erzeugt RETURN eine explizit überprüfbare, nicht verbrauchbare Ausgabe; solche Daten müssen nicht im UTXO-Set gespeichert werden. RETURN-Ausgaben werden in der Blockchain aufgezeichnet, sie verbrauchen Speicherplatz und führen zu einer Vergrößerung der Blockchain, sie werden jedoch nicht im UTXO-Set gespeichert und vergrößern daher weder den UTXO-Speicherpool noch erhöhen sie die hohen Speicherkosten des vollständigen Knotens.
Während OP_RETURN ein sehr einfaches Mittel zum Speichern von Informationen in der Bitcoin-Blockchain ist, ist es auch ein potenzielles Mittel zur Eintragung. Aufgrund der Einschränkungen von OP_RETURN ergeben sich jedoch einige Herausforderungen bei der Speicherung von Metadaten. Erstens kann OP_RETURN nur 80 Byte Daten speichern, eine Einschränkung, die in Fällen, in denen größere Datenmengen gespeichert werden müssen, eindeutig nicht eingehalten wird. Zweitens werden OP_RETURN-Daten im Transaktionsausgabeabschnitt gespeichert, und obwohl solche Daten nicht im UTXO-Satz gespeichert sind, belegen sie Speicherplatz in der Blockchain, was zu einer Vergrößerung der Blockchain führt. Schließlich führt die Verwendung von OP_RETURN zu einer Erhöhung der Transaktionsgebühren, da für die Buchung dieser Transaktionen mehr Gebühren gezahlt werden müssen.
Abgesonderter Zeuge
Im Gegensatz dazu bietet SegWit einen neuen Ansatz, der diese Probleme überwindet. SegWit ist ein wichtiges Protokoll-Upgrade für Bitcoin, das 2015 von Pieter Wuille, einem zentralen Bitcoin-Entwickler, vorgeschlagen und 2017 schließlich in Version 0.16.0 offiziell übernommen wurde. Segregated in Segregated Witness bedeutet getrennt, isoliert, und Witness ist eine signierte Sache, die mit einer Transaktion verbunden ist. SegWit ist also die Trennung bestimmter Transaktionssignaturdaten (Zeugendaten) von der Transaktion.
Der Hauptvorteil der Trennung von Signatur- und Transaktionsdaten besteht darin, dass die Größe der in einem Bitcoin-Block gespeicherten Daten reduziert wird. Dadurch erhält jeder Block zusätzliche Kapazität, um mehr Transaktionen zu speichern, und das Netzwerk kann mehr Transaktionen verarbeiten und der Absender zahlt geringere Gebühren. Technisch gesehen bedeutet dies, dass die scriptSig-Informationen aus dem Basisblock entfernt und in eine neue Datenstruktur eingefügt werden. Das Segwit-Upgrade führt ein neues Zeugenfeld in der Transaktionsausgabe ein, um Datenschutz und Leistung zu gewährleisten. Obwohl die Zeugendaten nicht für die Datenspeicherung konzipiert sind, bieten sie uns tatsächlich die Möglichkeit, Inhalte wie Inschriftmetadaten zu speichern. Lassen Sie uns die getrennte Zeugenaussage anhand des folgenden Diagramms grafischer verstehen:



Pfahlwurzel
P2TR ist ein Transaktionsausgabetyp von Bitcoin, der im Taproot-Upgrade von 2021 eingeführt wurde und es ermöglicht, verschiedene Transaktionsbedingungen privater in der Blockchain zu speichern. P2TR spielt eine entscheidende Rolle bei den Inschriften von Ordinalzahlen. Inschriften betten im Wesentlichen spezifische Dateninhalte in Bitcoin-Transaktionen ein, und das Taproot-Upgrade und insbesondere P2TR machen diese eingebetteten Daten flexibler und wirtschaftlicher.
Erstens können wir aufgrund der Art und Weise, wie Taproot-Skripte gespeichert werden, Inschriftinhalte in Taproot-Skriptpfad-Ausgabeskripten speichern, die inhaltlich praktisch unbegrenzt sind, und trotzdem einen Rabatt auf Zeugendaten erhalten, was die Speicherung von Inschriftinhalten relativ wirtschaftlich macht. Da Taproot-Skripte nur aus bereits vorhandener Taproot-Ausgabe verwendet werden können, werden Inschriftinhalte in einem zweistufigen Übermittlungs-/Offenlegungsprozess übermittelt/offengelegt. Zunächst wird in der Übermittlungstransaktion eine Taproot-Ausgabe erstellt, die ein Skript mit dem Inschriftinhalt verspricht. Dann wird in der Offenlegungstransaktion die durch die Übermittlungstransaktion erstellte Ausgabe verwendet, wodurch der Inschriftinhalt in der Kette offengelegt wird.
Dieser Ansatz reduziert den Ressourcenverbrauch erheblich. Wenn P2TR nicht verwendet wird, werden die Zeugeninformationen im Output der Transaktion gespeichert. Solange dieser Output nicht verbraucht wird, bleiben die Zeugeninformationen also im UTXO-Set gespeichert. Im Gegensatz dazu erscheinen die Zeugeninformationen bei Verwendung von P2TR nicht in den während der Commit-Phase generierten Transaktionen und werden daher nicht in das UTXO-Set geschrieben. Erst wenn dieses UTXO verbraucht wird, erscheinen die Zeugeninformationen während der Reveal-Phase im Transaktions-Input. p2tr ermöglicht das Schreiben von Metadaten in die Bitcoin-Blockchain, erscheint aber nie im UTXO-Set. Da das Verwalten/Ändern des UTXO-Sets mehr Ressourcen erfordert, spart dieser Ansatz viele Ressourcen.
Inschriften
Das Ordinals-Protokoll nutzt die von SegWit eingeführte Lockerung der Größenbeschränkungen beim Schreiben in Bitcoin-Netzwerkinhalte, indem Inschriftinhalte in Zeugendaten gespeichert werden. Taproot erleichtert das Speichern beliebiger Zeugendaten in Bitcoin-Transaktionen und ermöglicht es dem Ordinals-Entwickler Casey Rodarmor, alte Opcodes (OP_FALSE, OP_IF, OP_PUSH) für das, was er als „Umschläge“ bezeichnet, wiederzuverwenden, um beliebige Daten für sogenannte „Inschriften“ zu speichern.
Der Prozess des Gießens einer Inschrift besteht aus den folgenden zwei Schritten:
Zunächst muss eine Commit-to-Taproot-Ausgabe des Skripts erstellt werden, die den Inhalt der Inschrift in der übermittelten Transaktion enthält. Das gespeicherte Format ist Taproot, d. h. die Ausgabe der vorherigen Transaktion ist P2TR (Pay-To-Taproot) und die Eingabe der letzteren Transaktion, wobei ein bestimmtes Format in das bezeugte Taproot-Skript eingebettet ist; zuerst wird die Zeichenfolge ord auf den Stapel gelegt, um die Inschrift von anderen Verwendungsmöglichkeiten zu unterscheiden. OP_PUSH 1 gibt an, dass der nächste Push den Inhaltstyp enthält, und OP_PUSH 0 gibt an, dass nachfolgende Daten-Pushs den Inhalt selbst enthalten. Große Inschriften müssen mehrere Daten-Pushs verwenden, da eine der wenigen Einschränkungen von Taproot darin besteht, dass einzelne Daten-Pushs nicht größer als 520 Bytes sein dürfen. Zu diesem Zeitpunkt entsprechen die Daten für die Inschrift bereits dem UTXO der Transaktionsausgabe, werden jedoch nicht öffentlich gemacht.

Die Textbeschriftung mit der Zeichenfolge „Hallo Welt!“ wird wie oben serialisiert Zweitens ist es notwendig, die Ausgabe zu verwenden, die durch die Übermittlung der Transaktion in der Offenlegungstransaktion erstellt wurde. In dieser Phase wird die Transaktion eingeleitet, indem als Eingabe der UTXO verwendet wird, der dieser Inschrift entspricht. An diesem Punkt wird der Inhalt der entsprechenden Inschrift dem gesamten Netzwerk offengelegt.
Mit den beiden oben beschriebenen Schritten wurde der Beschriftungsinhalt an den zu beschriftenden UTXO gebunden. Wiederum wird gemäß der oben beschriebenen Positionierung des Satoshi die Beschriftung auf dem ersten Satoshi vorgenommen, der seinem Eingabe-UTXO entspricht, und der Beschriftungsinhalt wird in die Eingabe aufgenommen, die die Transaktion zeigt. Gemäß der oben beschriebenen Einführung in den Fluss und die Verfolgung des Satoshi können diese mit speziellem Inhalt beschrifteten Satoshi übertragen, gekauft, verkauft, verloren und wiederhergestellt werden. Es ist zu beachten, dass Beschriftungen nicht wiederholt werden können, da sonst die späteren Beschriftungen ungültig sind.
Wir werden diesen Prozess im Detail veranschaulichen, indem wir ein Beispiel eines kleinen BTC-NFT-Bildes eintragen, das aus den beiden zuvor erwähnten Hauptphasen besteht: Commit und Reveal. Zunächst sehen wir, dass die Hash-ID der ersten Transaktion 2ddf9...f585c ist. Es ist zu beachten, dass die Ausgabe dieser Transaktion keine Zeugendaten enthält und es keine relevante Einschreibung auf der Webseite gibt.

Als nächstes schauen wir uns die zweite Stufe des Datensatzes an, dessen Hash-ID e7454...7c0e1 ist. Hier können wir die Informationen der Ordinal-Inschrift sehen, die den Inhalt der Zeugeninschrift darstellen. Die Eingabeadresse dieser Transaktion ist die Ausgabeadresse der vorherigen, während die Ausgabe von 0,00000546 BTC (546 Satoshi) dieses NFT an seine eigene Adresse sendet. Außerdem können wir den Satoshi finden, in dem sich diese Inschrift in Sat 1893640468329373 befindet.


In der Bitcoin-Wallet können wir diesen Vermögenswert sehen. Wenn wir diesen NFT handeln möchten, können wir ihn direkt an die Adresse einer anderen Person senden, was bedeutet, dass wir diesen UTXO senden, wodurch der Inschriftfluss abgeschlossen wird.

IV. Bitcoin Wallet
Nachdem wir verstanden haben, was Ordinalzahlen sind, den Satoshi-Fluss und das Wissen über Inschriften, gibt es viele Anwendungsszenarien, die derzeit auftauchen, sei es BRC-20, ORC-20, BRC-721, GBRC-721 und andere verwandte abgeleitete Protokolle, die erfordern, dass wir entsprechende Wallets haben, um Token-Informationen oder kleine NFT-Bilder zu unterstützen und anzuzeigen. In diesem Abschnitt stellen wir das Konzept und die Eigenschaften verschiedener Bitcoin-Wallet-Adressen vor.
Bitcoin-Adressen beginnen mit 1, 3 oder bc1. Genau wie E-Mail-Adressen können sie mit anderen Bitcoin-Benutzern geteilt werden, die damit Bitcoins direkt an ihre Wallets senden können. Aus Sicherheitsgründen enthält eine Bitcoin-Adresse keinen vertraulichen Inhalt. Sie kann überall veröffentlicht werden, ohne die Sicherheit des Kontos zu gefährden. Im Gegensatz zu E-Mail-Adressen können wir so oft wie nötig neue Adressen erstellen, die alle Geld direkt auf Ihr Wallet einzahlen. Tatsächlich erstellen viele moderne Wallets automatisch für jede Transaktion eine neue Adresse, um maximale Privatsphäre zu gewährleisten. Ein Wallet ist einfach eine Sammlung von Adressen und den Schlüsseln zum Entsperren der darin enthaltenen Gelder. Zuerst müssen wir wissen, wie die Adressen von Bitcoin-Wallets erstellt werden.
Private und öffentliche Bitcoin-Schlüssel
Bitcoin verwendet die elliptische Kurve Secp256k1, wobei der „private Schlüssel“ eine Zufallszahl zwischen 1 und n-1 ist, wobei n eine sehr große Zahl (256 Bit) ist und n in wissenschaftlicher Notation ungefähr wie folgt ausgedrückt wird: 1,15792*10^77.
Der Bereich ist so groß, dass es fast unmöglich ist, den privaten Schlüssel einer anderen Person zu erraten. Dieser private Schlüssel mit zufälliger Ganzzahl kann durch 256 Bit dargestellt werden und es gibt viele Möglichkeiten, ihn zu verschlüsseln. Wenn der private Schlüssel in WIF- oder WIF-komprimierter Form unverschlüsselt ist, kann er dekodiert werden, um die ursprüngliche „zufällige Ganzzahl“ zu erhalten. Eine andere Möglichkeit ist BIP38, das vorschlägt, den privaten Schlüssel mit dem AES-Algorithmus zu verschlüsseln. Der mit diesem Schema erhaltene private Schlüssel beginnt mit dem Zeichen 6P und dieser private Schlüssel muss als Kennwort eingegeben werden, um in verschiedene Bitcoin-Wallets importiert zu werden. Dies ist der private Schlüssel, den wir normalerweise verwenden.
Wir werden dann die elliptische Kurvenformel K = kG verwenden, um den öffentlichen Schlüssel K von Bitcoin aus dem privaten Schlüssel k zu generieren. G ist der Basispunkt, der ein Parameter von secp256k1 ist. Die beiden Koordinaten von K sind die beiden Ausdrücke des öffentlichen Schlüssels, nämlich „Unkomprimiertes Format“ und „Komprimiertes Format“.

Unkomprimiert, d. h. eine direkte Verkettung zweier Koordinaten x und y, denen ein 0x04-Präfix vorangestellt ist;
Komprimierte Form, die als 02 x codiert ist, wenn y gerade ist, und als 03 x, wenn y ungerade ist;
Bitcoin-Adressen
Die verschiedenen Arten von Bitcoin-Adressen können im folgenden Diagramm mit vier Darstellungen dargestellt werden:

Legacy-Format (P2PKH)
Beispiel: 1Fh7ajXabJBpZPZw8bjD3QU4CuQ3pRty9u
Die Adresse beginnt mit einer „1“ und ist das ursprüngliche Adressformat für Bitcoin, das noch heute verwendet wird. Es ist auch als P2PKH bekannt, was für Pay To PubKey Hash steht, und wird durch die Berechnung des öffentlichen Schlüssels durch einen Hash erhalten.
Verschachteltes SegWit-Format (P2SH)
Beispiel: 3KF9nXowQ4asSGxRRzeiTpDjMuwM2nypAN
Verschachteltes P2SH, das eine vorhandene P2SH-Adresse (beginnend mit „3“) nimmt und sie mit einer SegWit-Adresse umschließt.
Natives SegWit-Format (Bech32)
Beispiel: bc1qf3uwcxaz779nxedw0wry89v9cjh9w2xylnmqc3
In BIP0173 werden Adressen vorgeschlagen, die mit bc1 beginnen, und sie sind native Isolated Witness-Adressen. bech32-codierte Adressen, ein speziell für SegWit entwickeltes Adressformat. bech32 wurde Ende 2017 in BIP173 definiert, und eines der Hauptmerkmale des Formats besteht darin, dass es nicht zwischen Groß- und Kleinschreibung unterscheidet (die Adresse enthält nur 0-9, az,), wodurch Verwechslungen wirksam vermieden werden und die Adresse bei der Eingabe besser lesbar ist. Da die Adresse weniger Zeichen benötigt, wird die Adresse mit Base32 statt dem herkömmlichen Base58 codiert, was die Berechnung einfacher und effizienter macht. Daten können im QR-Code kompakter gespeichert werden. bech32 bietet höhere Sicherheit, eine bessere Optimierung der Prüfsumme und Fehlererkennungscodes und minimiert die Wahrscheinlichkeit ungültiger Adressen.
Bech32-Adressen selbst sind mit SegWit kompatibel. Es wird kein zusätzlicher Platz benötigt, um SegWit-Adressen in P2SH-Adressen zu packen, daher sind die Gebühren bei Adressen im Bech32-Format niedriger. Bech32-Adressen haben mehrere Vorteile gegenüber älteren Base58-Adressen (Base58Check-Kodierung wird verwendet, um Byte-Arrays in Bitcoin in von Menschen kodierbare Zeichenfolgen zu kodieren): kleinere QR-Codes; bessere Fehlervermeidung; sicherer; unterscheidet nicht zwischen Groß- und Kleinschreibung; und besteht nur aus Kleinbuchstaben, sodass sie leichter zu lesen, einzugeben und zu verstehen sind.
Taproot-Format (P2TR)
Bech32 hat einen Nachteil: Wenn das letzte Zeichen der Adresse p ist, führt das Einfügen oder Löschen einer beliebigen Anzahl von Zeichen q unmittelbar vor p nicht dazu, dass die Prüfsumme ungültig wird.
Um diesen Nachteil von Bech32 zu verringern, wird in BIP0350 die Bech32m-Adresse vorgeschlagen:
Verwenden Sie für eine native isolierte Zeugenadresse der Version 0 das vorherige Bech32;
Für eine native isolierte Zeugenadresse der Version 1 (oder höher) wird das neue Bech32m verwendet.
Bei Bech32m-Adressen beginnen sie bei Verwendung von Version 1 immer mit bc1p (d. h. Taproot-Adresse). Genau wie ein lokaler isolierter Zeuge kann eine Wallet aus einer Seed-Phrase und einer kryptografischen Phrase bestehen. Diese werden verwendet, um erweiterte öffentliche und private Schlüssel zu generieren, die zum Ableiten beliebiger Pfadadressen in einer hierarchisch deterministischen Wallet verwendet werden. Der Hauptzweck besteht darin, BRC-20 sowie NFTs für BTC usw. zu speichern.
V. Über uns
Spectrum Labs ist ein Team aus Master- und PhD-Absolventen, die sich auf Blockchain-Forschung konzentrieren, sowie Veteranen der Blockchain-Branche. Wir widmen uns der Blockchain-Forschungskettentechnologie und ihren Anwendungen, um Menschen zu helfen, Blockchain besser zu verstehen. Zu den Hauptaktivitäten von Spectrum Labs gehören das Verfassen von Forschungsberichten, die Entwicklung von Lehrplänen und die Entwicklung von Tools.
Die BTC NFT Chinese Community (中文社区) ist ein BTC NFT Chinese-Kommunikationszentrum für Neulinge in der globalen chinesischen Community.
