1. Bitcoin-Hintergrund

Bitcoin verwendet ein bargeldähnliches Transaktionsmodell (Bargeldsystem) und seine Zahlungsmethode basiert auf einem Modell namens UTXO, das sich vom traditionellen, auf dem Kontostand basierenden Modell unterscheidet.

图片

Beispiel: Wenn A im Kontobuchhaltungsmodellprozess der Bank 100 Yuan an B überweist, zeichnet die Bank drei Schritte auf, die einen Transaktionsprozess darstellen. Der erste Schritt besteht darin, 100 Yuan vom Konto von A abzubuchen. Die Datensatz-ID dieses Schritts ist tid1. Der zweite Schritt besteht darin, 100 Yuan auf das Konto von B einzuzahlen. Die Datensatz-ID dieses Schritts ist tid2. Der dritte Schritt besteht darin, einen Übertragungsdatensatz aufzuzeichnen, der tid1 und tid2 verknüpft und angibt, dass Konto A um 100 Yuan abnimmt und Konto B um 100 Yuan zunimmt.

Auf diese Weise wird die Übertragungsbeziehung zwischen A und B erfasst und kann in Zukunft abgefragt und nachverfolgt werden. Nun erklären wir die Zahlungsmethode von Bitcoin anhand der Einführung von UTXO und des Zahlungsmodells.

UTXO

In der Bitcoin-Blockchain werden alle Salden in einer Liste namens „Unspent Transaction Outputs“ (UTXO) gespeichert. Jedes UTXO enthält eine bestimmte Menge an Bitcoin, Eigentümerinformationen und den Verfügbarkeitsstatus, ähnlich einem Scheck mit dem Namen des Inhabers. Dieser Scheck kann unterschrieben und an eine andere Person übertragen werden.

Der Saldo einer Adresse entspricht der Summe aller ihrer UTXOs. Der aktuelle Saldo jeder Adresse kann durch Durchlaufen der UTXO-Liste ermittelt werden, und die Summe dieser UTXOs stellt den aktuellen Gesamtvorrat aller Bitcoins dar.

图片

In der Bitcoin-Transaktionsstruktur enthält jede Transaktion Eingaben und Ausgaben. Jede Eingabe ist eine Referenz auf ein vorhandenes UTXO, und jede Ausgabe gibt eine neue Empfangsadresse und einen neuen Betrag an. Sobald eine Transaktion erstellt wurde, wird das mit der Eingabe verknüpfte UTXO vorübergehend gesperrt, um eine Wiederverwendung zu verhindern, und der zugehörige UTXO-Status ändert sich erst, nachdem es erfolgreich gepackt und vom Miner bestätigt wurde.

Konkret wird das Eingabe-UTXO entfernt und die Ausgabe generiert ein neues UTXO und fügt es der Liste hinzu. Dies ähnelt der Erstellung eines neuen Schecks nach Ablauf des alten Schecks, wobei das Eigentum am neuen Scheck auf den Namen des neuen Inhabers übertragen wird.

Es sollte betont werden, dass jedes UTXO nur einmal in einer Transaktion verwendet werden kann. Nach der Verwendung wird es dauerhaft entfernt und eine neue Ausgabe erstellt und zur UTXO-Liste hinzugefügt. Die UTXO-Liste wird ständig aktualisiert, wenn neue Blöcke erstellt werden. Durch die Analyse des Transaktionsverlaufs kann der Status der UTXO-Liste zu einem bestimmten Zeitpunkt rekonstruiert werden.

Darüber hinaus übersteigt der Gesamteingabebetrag einer Transaktion in der Regel geringfügig den Gesamtausgabebetrag, und diese Differenz wird zur Transaktionsgebühr und dient als Anreiz für K-Arbeiter. Transaktionsgebühren sind proportional zur Transaktionskomplexität, sodass eine Transaktion mit mehr Ein- und Ausgängen im Allgemeinen höhere Netzwerkgebühren erfordert.

图片

Um die Transaktionsstruktur von Bitcoin anschaulicher zu verstehen, können wir anhand des folgenden Beispiels mehr erfahren, wobei „vin“ die Eingabe der Transaktion und „vout“ die Ausgabe der Transaktion darstellt. Bitcoin-Transaktionen verwenden einen Input-Output-Ansatz anstelle des traditionellen Kontostandmodells.

图片

Wir können zufällig einen Transaktionsdatensatz auf Blockchain.com zur Analyse auswählen. Die folgende Abbildung zeigt die Hash-ID

Transaktion für 0627052b6f28912f2703066a912ea577f2ce4da4caa5a5fbd8a57286c345c2f2. Es enthält einen Eingang und zwei Ausgänge.

图片

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

图片

Im Bitcoin-Netzwerk enthält die Ausgabe jeder Transaktion zwei Schlüsselinformationen: die Adresse (Hash des öffentlichen Schlüssels) und den Betrag (in Bitcoins).

Wenn die Ausgabe einer Transaktion nicht für die Eingabe anderer Transaktionen verwendet wurde, wird diese Ausgabe als nicht ausgegebene Transaktionsausgabe (UTXO) bezeichnet. Jeder, der den privaten Schlüssel besitzt, der dem öffentlichen Schlüssel im UTXO entspricht, hat das Recht, dieses UTXO zu verwenden (d. h. auszugeben).

Schauen wir uns die Informationen in „vin“ im obigen Code an. Sie zeigen an, dass die von dieser Transaktion ausgegebenen UTXO von der 0. Ausgabe (eine Transaktion kann mehrere Ausgaben haben, Index) einer anderen Transaktion stammen (ihre ID ist 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18). von 0).

Den Betrag dieses UTXO (zum Beispiel 0,1 Bitcoin) können wir aus der Transaktionshistorie ermitteln. Daher hat dieser Benutzer in dieser Transaktion 0,1 Bitcoin ausgegeben, und der Wert 0,1 muss nicht explizit in die Transaktion geschrieben werden, sondern wird durch Abfrage der UTXO-Informationen erhalten.

Der „vout“ dieser Transaktion enthält zwei Ausgaben, die zwei neue UTXOs darstellen, entsprechend dem neuen Kontostand und Besitzer. Diese neuen UTXOs bleiben bestehen, bis eine andere Transaktion sie als Eingabe verwendet.

图片

Zahlungsmodell

Um das Zahlungsmodell des Bitcoin-Netzwerks besser zu verstehen, stellen wir anhand eines Beispiels den Zahlungsprozess einer von A an B gezahlten Menge von n Bitcoins vor. Die folgende Abbildung zeigt den Vorgang, bei dem Benutzer A 3 Bitcoins an Benutzer B sendet.

图片

Für Benutzer A muss zunächst die Menge aller UTXOs ermittelt werden, die er besitzt, also alle Bitcoins, die Benutzer A kontrollieren kann;

A wählt einen oder mehrere UTXOs aus diesem Satz als Eingabe der Transaktion aus. Die Summe der Beträge dieser Eingaben beträgt m (2+0,8+0,5=3,3 BTC), was größer ist als der benötigte Betrag n (3 BTC). bezahlt werden;

Benutzer A legt zwei Ausgänge für die Transaktion fest, ein Ausgang wird an die Adresse von B gezahlt, der Betrag beträgt n (3 BTC), und der andere Ausgang wird an die eigene Wechseladresse von A gezahlt, der Betrag beträgt mn-fee (3,3-3-0,001). =0,299 BTC). Die Brieftasche des Benutzers besteht normalerweise aus mehreren Adressen. Im Allgemeinen wird jede Adresse nur einmal verwendet und die Änderung wird standardmäßig an eine neue Adresse zurückgegeben.

Sobald Arbeiter K die Transaktion auf der Blockchain verpackt und bestätigt, kann Empfänger B Informationen über die Transaktion erhalten.

图片

Da die Größe jedes Blocks begrenzt ist (normalerweise etwa 1 MB), priorisieren K-Worker Transaktionen mit hohen Transaktionsraten (fee_rate=fee/size), um die höchsten Gebührenrenditen zu erzielen.

Wir können die K-Mining-Transaktionsrate in Echtzeit im unbestätigten Transaktionspool (Mempool) überprüfen. Wenn wir während des Überweisungsprozesses so schnell wie möglich eine Bestätigung erhalten möchten, können wir „Hohe Priorität“ wählen oder eine geeignete Transaktionsrate anpassen.

图片

2. Cong-Nummerierung und -Verfolgung

Der Gesamtvorrat an Bitcoin beträgt 21 Millionen und jeder Bitcoin enthält 10^8 Satoshi (Sat). Im Bitcoin-Netzwerk haben wir also insgesamt 21 Millionen * 10^8 Satoshis.

Das Ordinals-Protokoll verwendet eine einzigartige Methode zur Nummerierung jedes Satoshi, um seine Einzigartigkeit und die Möglichkeit zu gewährleisten, das Konto, zu dem er gehört, genau zu verfolgen. Darüber hinaus wird die Seltenheitsklassifizierung von Satoshis vereinfacht.

Satoshis Nummer

Gemäß dem Ordinals-Protokoll werden Satoshis entsprechend der Reihenfolge nummeriert, in der sie abgebaut werden. Die folgende Abbildung zeigt die Darstellung des 0. Satoshi, der im 0. Block abgebaut wurde.

图片

Es gibt viele Möglichkeiten, Satoshi auszudrücken:

Ganzzahliges Symbol: Zum Beispiel 2099994106992659, das die Seriennummer darstellt, die dem Satoshi gemäß der Mining-Reihenfolge zugewiesen wurde.

Dezimalschreibweise: Zum Beispiel 3891094.16797, die erste Ziffer gibt die Höhe des Blocks an, in dem der Satoshi abgebaut wurde, und die zweite Ziffer gibt die Satoshi-Nummer im Block an.

Gradsymbol: Zum Beispiel 3°111094′214″16797‴, die erste Ziffer ist der Punkt, nummeriert beginnend bei 0, die zweite Ziffer ist der Blockindex der Halbierungsepoche und die dritte Ziffer ist der Blockindex während der Schwierigkeit Anpassungszeitraum, die letzte Ziffer ist der Index der Sat im Block.

Prozentsymbol: Beispielsweise gibt 99,99971949060254 % die Position des Satoshi im Bitcoin-Angebot an, ausgedrückt als Prozentsatz.

Name: Zum Beispiel Satoshi. Ein Name, der die Sequenznummer mit den Zeichen a bis z kodiert.

图片

Nehmen wir ein Beispiel, um zu erklären, wie man neu geschürfte Bitcoins nummeriert. Betrachtet man den 795952. Block der Bitcoin-Blockchain, so enthält er eine Transaktion mit dem Namen „Tx 3a1f...b177“, die die Belohnung des K-Arbeiters aufzeichnet (Coinbase-Transaktion). Diese Transaktion umfasst neu geschürfte Bitcoins, die als Belohnung für K-Arbeiter verwendet werden, sowie die Bearbeitungsgebühren, die der Transaktionsinitiator an K-Arbeiter zahlt.

Wenn wir uns den Eingabeteil ansehen, können wir die ID des UTXO sehen, die aus einer Folge von Nullen und der Höhe des Blocks besteht. Und im Ausgabebereich können wir die Adressen sehen, die diese Belohnungen und Gebühren erhalten haben, sowie deren Gesamtbetrag.

图片

Wenn wir die Teilausgabe an K Arbeiter weiter untersuchen, können wir die Verteilung der Adressen, Beträge und enthaltenen Satoshis sehen. Wie bereits erwähnt, umfassen diese K-Mining-Belohnungen und Bearbeitungsgebühren.

Darunter sind die grünen Sats-Nummerninformationen 1941220000000000–1941220625000000 die neuen Satoshi, die durch den Abbau von K-Belohnungen generiert werden, und die verbleibenden 712 Satoshi-Datensätze entsprechen allen Bearbeitungsgebühren im Block.

图片

Wir können die Nummer Sa 1941220000000000 verifizieren.

Seine Blocknummer ist 795952, und die Dezimalschreibweise (dezimal) ist 795952,0, was bedeutet, dass die Blockhöhe dieses Satoshi 795952 beträgt, die Anzahl der Satoshi in diesem Block 0 ist und die nachfolgende Seltenheit als ungewöhnlich markiert ist wird es in den folgenden Abschnitten ausführlich vorstellen.

图片

Die Verbreitung von Cong

Das Transaktionsmodell von Bitcoin verwendet das Unspent Transaction Output (UTXO)-Modell, was bedeutet, dass jeder Bitcoin (BTC) bis zu seiner Quelle zurückverfolgt werden kann. Lassen Sie uns diesen Prozess anhand eines Beispiels veranschaulichen:

Angenommen, Benutzer A hat durch das Mining von K eine Belohnung erhalten, die Bitcoins vom 100. bis zum 110. Satoshi enthält. Diese Bitcoins werden alle im selben UTXO (Unspent Transaction Output) gespeichert. Die ID dieses UTXO ist adc123.

Wenn Benutzer A nun Benutzer B 5 Satoshis zahlen möchte, entscheidet er sich dafür, UTXO mit der ID abc123 als Eingabe für die Transaktion zu verwenden. Diese Transaktion sendet 5 Satoshis an Benutzer B und gibt 5 Satoshis als Wechselgeld an Benutzer A zurück.

Diese beiden 5 Satoshis werden zu einem Ganzen, werden aber in zwei verschiedenen UTXOs gespeichert, wie zum Beispiel abc456 und abc789.

Die obige UTXO-ID und die Anzahl der Satoshis werden nur als Beispiele angezeigt. In tatsächlichen Situationen ist die Mindestanzahl der gesendeten Satoshis auf 546 begrenzt und die UTXO-ID wird nicht in dieser Form ausgedrückt.

图片

In der obigen Transaktion ist der Umlaufpfad der 10 Satoshis von Benutzer A:

Mining K produziert 10 Satoshis mit den Nummern [100, 110]. Das bedeutet, dass der 100. bis 109. Satoshi im UTXO mit der ID abc123 gespeichert ist und sein Besitzer Benutzer A ist.

Wenn A die Überweisung vornimmt, werden die 10 Satoshis in zwei Teile geteilt, von denen jeder 5 Satoshis ist. Dabei gilt das „First in, first out“-Prinzip, das heißt, die Reihenfolge der Satoshi-Zahlen wird anhand ihres Index in der Transaktionsausgabe bestimmt.

Angenommen, die Ausgabereihenfolge ist zuerst Benutzer A, dann Benutzer B, dann ist die Sequenznummer der verbleibenden 5 Satoshis von Benutzer A [100, 105), die im UTXO mit der ID abc456 gespeichert ist, und die 5 Satoshis von Benutzer B sind die Reihenfolge Die Nummer ist [105, 110) und wird im UTXO mit der ID abc789 gespeichert.

图片

Seltenheit (Seltener Satoshi)

Als Ableger des Ordinals-Protokolls kann die Seltenheit von Satoshi anhand der Reihenfolge definiert werden, in der sie abgebaut werden. Dies wird dazu führen, dass einige spezielle Satoshis unterschiedliche Seltenheiten haben. Hier sind die Seltenheitsstufen verschiedener Satoshis:

gemeinsames gemeinsames Niveau: alle Satoshi außer dem ersten Satoshi des Blocks (Gesamtvorrat beträgt 2100 Billionen)

ungewöhnliches ausgezeichnetes Niveau: der erste Satoshi jedes Blocks (Gesamtvorrat beträgt 6929999)

selten: Der erste Satoshi jeder Schwierigkeitsanpassungsperiode (Gesamtvorrat beträgt 3437)

episch: der erste Satoshi nach jeder Halbierung (Gesamtvorrat beträgt 32)

legendär: der erste Satoshi in jedem Zyklus (Gesamtvorrat beträgt 5)

mythisch: der erste Satoshi im Genesis-Block (Gesamtvorrat ist 1)

Dieses Konzept seltener Satoshis kann dem Bitcoin-Ökosystem mehr Interesse und Wert verleihen. Satoshis unterschiedlicher Seltenheit können auf dem Markt unterschiedliche Werte haben, was Sammler und Investoren anzieht.

图片

3. Beschriftungsmethode

Ein wesentlicher Unterschied zwischen Ordinals und anderen Nicht-Bitcoin-Ketten-NFTs besteht darin, dass ihre Metadaten nicht an einem bestimmten Ort gespeichert werden.

Stattdessen werden diese Metadaten in die Zeugendaten (Zeugenfeld) der Transaktion eingebettet, weshalb wir sie als „Inschrift“ bezeichnen, da die Daten wie eine Inschrift auf einem bestimmten Teil der Münztransaktion „eingraviert“ sind , diese Daten sind einem bestimmten Satoshi zugeordnet.

Dieser Eintragungsprozess wird durch Segregated Witness (SegWit) und Pay-to-Taproot (P2TR) implementiert. Er umfasst zwei Phasen: Festschreiben und Offenlegen jeglicher Form von Inhalten (z. B. Text, Bilder oder Videos) auf dem angegebenen Satoshi.

Als Nächstes werden wir eine andere, direktere Speichermethode, OP_RETURN, näher erläutern und erklären, warum sie mit Inschriften nicht funktioniert. Gleichzeitig werden wir die Konzepte von Segwit und Pay-to-Taproot und ihre Rolle bei der Inschrift untersuchen. Abschließend befassen wir uns mit den Methoden der Inschrift.

图片

OP_RETURE

In Version 0.9 des Bitcoin Core-Clients wurde schließlich ein Kompromiss mithilfe des RETURN-Operators erreicht. Mit RETURN können Entwickler der Transaktionsausgabe 80 Byte Nichtzahlungsdaten hinzufügen. Im Gegensatz zu Pseudozahlungen erstellt RETURN eine Ausgabe, die explizit überprüfbar, aber nicht ausgabefähig ist und nicht in einer UTXO-Sammlung (Unspent Transaction Output) gespeichert werden muss.​

RETURN-Ausgaben werden in der Blockchain aufgezeichnet, was Speicherplatz belegt und zu einer Vergrößerung der Blockchain führt. Sie belegen jedoch nicht die UTXO-Sammlung und führen daher nicht zu einer Aufblähung der UTXO-Sammlung, noch erhöhen sie die teuren Speicherkosten des vollständigen Knotens.

Obwohl OP_RETURN eine Methode zum Speichern von Informationen direkt in der Bitcoin-Blockchain ist, birgt sie auch einige Herausforderungen. Erstens kann OP_RETURN nur 80 Byte Daten speichern, was für Situationen, in denen mehr Daten gespeichert werden müssen, offensichtlich nicht ausreicht.

Zweitens werden OP_RETURN-Daten in der Transaktionsausgabe gespeichert, obwohl sie nicht die UTXO-Sammlung belegen, sondern den Speicherplatz der Blockchain belegen, was zu einer Vergrößerung der Blockchain führt.

Schließlich erhöht die Verwendung von OP_RETURN die Transaktionsgebühren, da für die Buchung dieser Transaktionen mehr gezahlt werden muss.

图片

Getrennter Zeuge

Im Vergleich zu früheren Methoden bietet SegWit eine neue Lösung, mit der die oben genannten Probleme gelöst werden können.

SegWit ist ein wichtiges Protokoll-Upgrade für Bitcoin. Es wurde erstmals 2015 vom Bitcoin-Kernentwickler Pieter Wuille vorgeschlagen und schließlich 2017 in Version 0.16.0 offiziell übernommen.

„Segregated“ in Segregated Witness (SegWit) bedeutet Trennung oder Isolation, während „Witness“ die mit der Transaktion verbundenen Signaturdaten umfasst. Daher besteht das Kernkonzept von SegWit darin, bestimmte Transaktionssignaturdaten (auch Zeugendaten genannt) von den tatsächlichen Transaktionsdaten zu trennen.

Der Hauptvorteil der Trennung von Signaturdaten und Transaktionsdaten besteht darin, dass die Größe der in Bitcoin-Blöcken gespeicherten Daten reduziert wird. Dies führt zu mehr verfügbarer Kapazität pro Block, um mehr Transaktionen abzuwickeln, was auch bedeutet, dass das Netzwerk mehr Transaktionen verarbeiten kann und Benutzer niedrigere Transaktionsgebühren zahlen.

Technisch gesehen bedeutet dies, dass die ursprünglich in der Basisblockstruktur enthaltenen Skriptsignaturdaten (scriptSig) in eine neue Datenstruktur verschoben werden. Validierungsknoten und K-Worker überprüfen auch die Skriptsignatur in dieser neuen Datenstruktur, um die Gültigkeit der Transaktion sicherzustellen.

图片

Das SegWit-Upgrade führt außerdem ein neues Zeugendatenfeld ein, um den Datenschutz und die Effizienz zu verbessern. Obwohl Zeugendaten nicht speziell für die Speicherung von Transaktionsdaten im Klartext konzipiert sind, bieten sie uns tatsächlich die Möglichkeit, Dinge wie Inschriftenmetadaten zu speichern.

Wir verwenden die folgende Abbildung, um Segregated Witness besser zu verstehen:

图片

Pfahlwurzel

P2TR ist ein Transaktionsausgabetyp von Bitcoin, der mit dem Taproot-Upgrade 2021 eingeführt wurde und es ermöglicht, verschiedene Transaktionsbedingungen privater in der Blockchain zu speichern.

In dieser Architektur spielt P2TR eine entscheidende Rolle bei der Dateneinschreibung von Ordinals. Inscription bettet tatsächlich bestimmte Daten in Bitcoin-Transaktionen ein, und Taproot-Upgrades, insbesondere P2TR, machen diese Dateneinbettung flexibler und wirtschaftlicher.

Erstens können wir aufgrund der Speichermethode der Taproot-Befehlscodes Inschriftendaten im Taproot-Befehlspfad speichern, und diese Befehlscodes unterliegen nahezu keinen inhaltlichen Einschränkungen. Gleichzeitig können wir auch Rabatte auf Zeugendaten genießen. Dies macht die Speicherung von Beschriftungsdaten relativ wirtschaftlich.

Da der Verbrauch von Taproot-Anweisungen jedoch nur aus der vorhandenen Taproot-Ausgabe erfolgen kann, erfolgt die Speicherung von Inschriften über einen zweistufigen Commit-/Reveal-Prozess. Zunächst wird in der Commit-Transaktion eine Taproot-Ausgabe erstellt, die verspricht, die Inskriptionsdaten zu enthalten.

图片

Dann wird in einer Offenlegungstransaktion die durch die Festschreibungstransaktion erstellte Ausgabe verbraucht, wodurch der Inhalt der Inschrift in der Kette enthüllt wird.

Dieser Ansatz reduziert den Ressourcenverbrauch erheblich. Wenn P2TR nicht verwendet wird, werden die Zeugendaten in der Transaktionsausgabe gespeichert. Solange diese Ausgabe nicht verbraucht wird, sind die Zeugendaten immer im UTXO-Satz vorhanden.

Wenn dagegen P2TR verwendet wird, erscheinen die Zeugendaten nicht in der während der Commit-Phase generierten Transaktion und werden daher nicht in den UTXO-Satz geschrieben. Erst wenn dieses UTXO verbraucht ist, erscheinen die Zeugendaten während der Offenlegungsphase in der Transaktionseingabe.

P2TR ermöglicht das Schreiben von Originaldaten in die Bitcoin-Blockchain, belegt jedoch nicht immer den in UTXO konzentrierten Platz. Da die Wartung/Änderung des UTXO-Sets mehr Ressourcen erfordert, kann diese Methode erheblich Ressourcen einsparen.

图片

Inschrift

Das Ordinals-Protokoll erweitert die Schreibgrößenbeschränkung im Bitcoin-Netzwerk, indem SegWit zum Speichern von Klartextinhalten im Zeugen verwendet wird, wodurch bis zu 4 MB Metadatenspeicher möglich sind.

Taproot vereinfacht den Prozess der Speicherung beliebiger Zeugendaten in Bitcoin-Transaktionen und ermöglicht es Ordinals-Entwickler Casey Rodarmor, alte Opcodes (OP_FALSE, OP_IF, OP_PUSH) wiederzuverwenden, um sogenannte „Umschläge“ zum Speichern von sogenannten „Inscription“-Informationen zu erstellen.

Der Gussprozess der Inschrift besteht aus den folgenden zwei Schritten:

Zunächst müssen Sie in der Commit-Transaktion ein Promise erstellen, das auf die Taproot-Ausgabe verweist, die den Inhalt der Inschrift enthält. Das Format dieses Speichers ist Taproot, die Ausgabe der vorherigen Transaktion muss P2TR (Pay-To-Taproot) sein und der Inhalt eines bestimmten Formats ist in das Taproot-Zeugenskript eingebettet.

Zuerst wird die Zeichenfolge „ordn“ auf den Stapel geschoben, um den Zweck der Inschrift eindeutig zu machen. Verwenden Sie dann OP_PUSH 1, um anzugeben, dass der nächste Push den Inhaltstyp enthält, und OP_PUSH 0, um anzugeben, dass nachfolgende Datenpushs den Inhalt selbst enthalten.

Da eine der Einschränkungen von Taproot darin besteht, dass ein einzelner Daten-Push 520 Bytes nicht überschreiten darf, sind mehrere Daten-Pushs erforderlich, um große Inschriften zu speichern. Zu diesem Zeitpunkt wurden die Inskriptionsdaten mit der nicht ausgegebenen Transaktionsausgabe (UTXO) der Transaktionsausgabe verknüpft, aber noch nicht veröffentlicht.

图片

Zweitens muss in der Offenlegungstransaktion die erzeugte Ausgabe verbraucht werden. In dieser Phase wird die Transaktion eingeleitet, indem das der Inschrift entsprechende UTXO als Eingabe verwendet wird. Zu diesem Zeitpunkt wird der Inhalt der Inschrift im Zusammenhang mit UTXO dem gesamten Netzwerk zugänglich gemacht.

Durch die oben genannten zwei Schritte wurde der Inhalt der Inschrift einem bestimmten UTXO zugeordnet. Gemäß der zuvor eingeführten Positionierungsmethode von Satoshi (UTXO) wird die Inschrift in den ersten Satoshi eingraviert, der seinem eingegebenen UTXO entspricht, und der Inhalt der Inschrift ist in der Eingabe enthalten, die die Transaktion zeigt.

Gemäß der oben genannten Verbreitung und Verfolgung von Satoshi (UTXO) kann dieser Satoshi mit speziellen Inhalten übertragen, gekauft, verkauft, verloren und wiederhergestellt werden. Es ist zu beachten, dass die Eintragung nicht wiederholt werden kann, da sonst spätere Eintragungen ungültig werden.

Um diesen Vorgang genauer zu erklären, gehen wir ein Beispiel durch, das zeigt, wie man ein kleines Bild eines Bitcoin-NFT einschreibt. Dieser Prozess umfasst die beiden zuvor erwähnten Phasen Commit und Reveal.

Zunächst können wir sehen, dass die Hash-ID der ersten Transaktion 2ddf9...f585c ist. Es ist zu beachten, dass die Ausgabe dieser Transaktion keine Zeugendaten enthält und auf der Webseite keine relevanten Inschrifteninformationen vorhanden sind.

图片

Als nächstes überprüfen wir den Datensatz der zweiten Stufe, dessen Hash-ID e7454…7c0e1 ist. Hier können wir die Informationen der Ordinalinschrift sehen, die den Inschrifteninhalt des Zeugnisses darstellt.

Die Eingabeadresse dieser Transaktion ist die Ausgabeadresse der vorherigen Transaktion, und die Ausgabe 0,00000546BTC (546 Satoshi) dient dazu, diesen NFT an seine eigene Adresse zu übertragen. Gleichzeitig können wir auch den Satoshi finden, in dem sich diese Inschrift in Sat 1893640468329373 befindet.

图片图片

Im Bitcoin-Wallet können wir diesen Vermögenswert sehen. Wenn wir diesen NFT handeln möchten, können wir ihn direkt an die Adressen anderer Personen übertragen, also den UTXO übertragen und so die Übertragung der Inschrift abschließen.

图片

4. Bitcoin-Wallet

Nachdem wir die Ordnungsökologie, die Zirkulation von Satoshis und das damit verbundene Wissen über Inschriften verstanden haben, gibt es derzeit viele Anwendungsszenarien, sei es die Entstehung von BRC-20, ORC-20, BRC-721, GBRC-721 usw andere verwandte abgeleitete Protokolle, die entsprechende Wallets erfordern, um Token-Informationen oder kleine NFT-Bilder zu unterstützen und anzuzeigen.

In diesem Abschnitt stellen wir die Konzepte und Eigenschaften verschiedener Bitcoin-Wallet-Adressen vor.

Bitcoin-Adressen beginnen normalerweise mit 1, 3 oder bc1 und können wie E-Mail-Adressen mit anderen Bitcoin-Benutzern geteilt werden, um Bitcoin direkt auf Ihr Wallet zu übertragen.

Aus Sicherheitsgründen enthalten Bitcoin-Adressen keine sensiblen Informationen und können daher jederzeit öffentlich geteilt werden, ohne die Sicherheit Ihres Kontos zu gefährden. Im Gegensatz zu E-Mail-Adressen können Sie bei Bedarf neue Bitcoin-Adressen erstellen und alle von ihnen zahlen Geld direkt in Ihr Wallet ein.

图片

Tatsächlich richten viele moderne Wallets für jede Transaktion automatisch eine neue Adresse ein, um den Datenschutz zu maximieren. Eine Wallet ist einfach eine Sammlung von Adressen und Schlüsseln, die die darin enthaltenen Gelder freischalten. Zuerst müssen wir wissen, wie die Bitcoin-Wallet-Adresse generiert wird.

Private und öffentliche Bitcoin-Schlüssel

Bitcoin verwendet die elliptische Kurve Secp256k1. Der „private Schlüssel“ ist eine sehr große Zahl (256 Bits).

图片

Dieser Bereich ist sehr breit und macht es nahezu unmöglich, die privaten Schlüssel anderer Leute zu knacken. Dieser private Schlüssel ist eine zufällige Ganzzahl, die normalerweise durch 256 Binärbits dargestellt wird und auf verschiedene Arten codiert werden kann. Private Schlüssel im WIF-Format (Wallet Import Format) oder im WIF-komprimierten Format sind unverschlüsselt und können direkt in rohe Zufallszahlen dekodiert werden.

Eine weitere Methode ist BIP38 (Bitcoin Improvement Proposal 38), die die Verwendung des AES-Algorithmus zur Verschlüsselung des privaten Schlüssels empfiehlt. Der durch dieses Schema generierte private Schlüssel beginnt mit dem Zeichen 6P und es muss ein Passwort eingegeben werden, um ihn in verschiedene Bitcoin-Wallets zu importieren. Auf diese Weise verwenden wir normalerweise den privaten Schlüsselschutz.

Als nächstes verwenden wir die Formel für die elliptische Kurve K = kG, wobei k der private Schlüssel und G der Basispunkt ist, der ein Argument für die elliptische Kurve secp256k1 ist.

Durch diese Formel können wir die beiden Koordinaten von K erhalten, die die beiden Ausdrücke des öffentlichen Schlüssels sind, nämlich „Unkomprimiertes Format“ und „Komprimiertes Format“.

图片

Die unkomprimierte Form besteht darin, die beiden Koordinaten x und y direkt miteinander zu verbinden und dann das Präfix 0x04 voranzustellen.

Die komprimierte Form bedeutet, dass, wenn y eine gerade Zahl ist, der Code 02 x ist, und wenn y eine ungerade Zahl ist, der Code 03 x ist;

Bitcoin Adresse

In der folgenden Abbildung sind verschiedene Arten von Bitcoin-Adressen dargestellt. Es gibt vier Darstellungsmethoden:

图片

1. Legacy-Format (P2PKH).

Beispiel: 1Fh7ajXabJBpZPZw8bjD3QU4CuQ3pRty9u

Die Adresse beginnt mit „1“, was das ursprüngliche Adressformat von Bitcoin ist und auch heute noch verwendet wird. Es wird durch Hash-Berechnung aus dem öffentlichen Schlüssel erhalten, auch bekannt als P2PKH, was die Abkürzung für Pay To PubKey Hash (Payment to Public Key Hash) ist.

2. Nested SegWit (P2SH)-Format

Beispiel: 3KF9nXowQ4asSGxRRzeiTpDjMuwM2nypAN

Die Adresse beginnt mit „3“. P2SH ist die Abkürzung für Pay To Script Hash, das komplexere Funktionen unterstützt als Legacy-Adressen. Verschachteltes P2SH erhält die vorhandene P2SH-Adresse (beginnend mit „3“) und kapselt sie zusammen mit der SegWit-Adresse.

图片

3. Natives SegWit-Format (Bech32).

Beispiel: bc1qf3uwcxaz779nxedw0wry89v9cjh9w2xylnmqc3

Mit BIP0173 wurden Adressformate eingeführt, die mit „bc1“ beginnen. Dies sind die Adressen, die für natives Segregated Witness (SegWit) verwendet werden. Dieses Adressformat verwendet die Bech32-Kodierung und wurde speziell für SegWit entwickelt. Adressen im Bech32-Format wurden Ende 2017 in BIP173 definiert. Eines seiner Hauptmerkmale besteht darin, dass die Groß-/Kleinschreibung nicht beachtet wird, sodass Verwechslungen bei der Eingabe leichter vermieden werden können, und dass es auch einfacher zu lesen ist.

Im Vergleich zur herkömmlichen Base58-Kodierung verwendet Bech32 die Base32-Kodierung, sodass weniger Zeichen in der Adresse erforderlich sind, die Berechnung effizienter ist und kompakter im QR-Code gespeichert werden kann.

Darüber hinaus bietet Bech32 mehr Sicherheit und eine besser optimierte Prüfsummenfehlererkennung, wodurch das Risiko ungültiger Adressen minimiert wird.

Bech32-Adressen selbst sind mit SegWit kompatibel. Es ist kein zusätzlicher Platz erforderlich, um die SegWit-Adresse in die P2SH-Adresse einzufügen, sodass bei Verwendung der Adresse im Bech32-Format die Bearbeitungsgebühr niedriger ist.

Insgesamt haben Bech32-Adressen gegenüber herkömmlichen Base58-Adressen mehrere Vorteile: Die generierten QR-Codes sind kleiner, fehlersicherer, sicherer, unterscheiden nicht zwischen Groß- und Kleinschreibung und enthalten nur Kleinbuchstaben, sodass sie einfacher zu lesen, einzugeben und einfacher zu lesen sind verstehen.

图片

4. 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 direkt vor p nicht dazu, dass die Prüfsumme ungültig wird.

Um die oben genannten Mängel von Bech32 zu beheben, wurde in BIP0350 die Bech32m-Adresse vorgeschlagen:

  • Für native Segwit-Adressen mit Version 0 verwenden Sie das vorherige Bech32;

  • Für native Segwit-Adressen der Version 1 (oder höher) wird das neue Bech32m verwendet.

Wenn die Versionsnummer von Bech32m-Adressen 1 ist, beginnen sie immer mit „bc1p“, was bedeutet, dass es sich um Taproot-Adressen handelt. Ähnlich wie bei nativem Segwit können diese Adressen aus einer Seed-Phrase und einer Passphrase generiert werden, die zur Generierung der öffentlichen und privaten Schlüssel der erweiterten Suite verwendet werden, was die Ableitung von Adressen für verschiedene Pfade in einer hierarchischen deterministischen Wallet ermöglicht.

图片

Dies dient vor allem der Speicherung digitaler Vermögenswerte wie BRC-20-Tokens sowie der NFTs von Bitcoin.