Das Bitcoin-Skript ist die Sprache, die Bitcoin verwendet, um alles zu tun, was es kann, vom Senden von Geldern aus einer Wallet bis hin zur Erstellung von Mehrbenutzerkonten. Alle diese Funktionen sind in einem einfachen, erweiterbaren und leistungsstarken Tool enthalten, das wir weiter unten kennenlernen werden.
Cwenn wir darüber reden BitcoinScript, Wir sprechen von einer einfachen Programmiersprache, die in Bitcoin zur Verarbeitung von Transaktionen verwendet wird und von links nach rechts gelesen wird. Dies basiert auf einer Reihe linearer Strukturen, bekannt als Stapel, die vorhandene Daten der Reihe nach enthalten LIFO (Last In – First Out). Jede Anweisung in dieser Sprache wird nacheinander ausgeführt.
Diese Sprache ist es nicht Turing abgeschlossen weil seine Funktionalität eingeschränkt ist und es keine Schleife geben kannS. Es ist also nicht in der Lage, irgendein Problem zu lösen Turingmaschinen. Diese Einschränkung ist jedoch beabsichtigt, da dadurch vermieden wird, in eine Endlosschleife zu geraten und Fehler auszuführen. Wo bösartige Teile des Programms frei sein können, um komplizierte Vorgänge zu erstellen, um die Rate zu verbrauchen Hash- und das Bitcoin-System durch Endlosschleifen verlangsamen.
Eine Programmiersprache ist notwendig, weil sie es uns ermöglicht, Programme zu schreiben und Computer unsere Wünsche ausführen zu lassen. In Bitcoin, um unsere Wünsche zu kommunizieren, die Operationscodes (OP CODES), die mehrere Funktionen erfüllen. Zum Beispiel Speichermanipulation, Mathematik, Schleifen, Funktionsaufrufe und viele andere.
Durch ello, Bitcoin Script besteht im Wesentlichen aus einer Reihe programmierter Anweisungen, die bei jeder durchgeführten Transaktion aufgezeichnet werden. Diese Anweisungen beschreiben, wie Benutzer auf im Netzwerk verfügbare Bitcoins zugreifen und diese verwenden können.
Was ist ein OP_CODE oder Operationscode?
Beim Rechnen ist a OP_CODE (Operation Code, auf Englisch) oder Operationscode ist ein Teil einer maschinensprachlichen Anweisung, der die auszuführende Operation angibt. Seine Spezifikation und sein Format werden durch die Befehlssatzarchitektur (ISA) der Komponente bestimmt, die den Befehl verarbeitet. Im Allgemeinen wird diese Verarbeitung durch Computerhardware (normalerweise eine CPU) durchgeführt.
Es kann sich aber auch um Software handeln, die speziell darauf ausgelegt ist, den Betrieb einer CPU zu emulieren und die besagten Anweisungen zu verarbeiten. Im Allgemeinen enthält eine vollständige Maschinenspracheanweisung einen OP_CODE und optional die Spezifikation eines oder mehrerer Operanden, auf die der Opcode einwirken muss. Einige Operationen haben implizite Operanden oder gar keine.
Bei Bitcoin und vielen anderen Kryptowährungen sind OP_CODES das Rückgrat des Systems, das die Programmierung von Transaktionsanweisungen ermöglicht. Denken wir daran, dass Bitcoin (und andere davon abgeleitete Kryptowährungen) programmierbares Geld sind. Und hier ist das Schlüsselwort „programmierbar“, da Bitcoin Script eigentlich eine Programmiersprache ist, bei der die Anweisungen in OP_CODES gegeben werden, die das Bitcoin-Netzwerk im Voraus für seinen Betrieb definiert hat. Tatsächlich besteht aufgrund der Struktur, in der BItcoin erstellt wurde, die Möglichkeit, 256 OP_CODES zu definieren, verschiedene, beginnend mit der Zahl 0 bis 255. Von diesen 256 OP_CODES sind derzeit insgesamt 116 aktiv.
Diese OP_CODES ermöglichen die Ausführung verschiedener Vorgänge in Bitcoin und seiner Transaktionsprogrammierung, wie z. B. Datenflusskontrolle, Konstantenverwaltung, Stapelverwaltung, logische Verwaltung, Arithmetik, Zeitschloss, Pseudowörter, kryptografische Operationen und reservierte Wörter. Eine vollständige und aktualisierte Liste der verschiedenen OP_CODES finden Sie direkt im Bitcoin-Code.
scritpSig und scriptPubKey, die wesentlichen Bestandteile aller Bitcoin-Skripte
Im Bitcoin-Netzwerk ist jedes Bitcoin-Skript in zwei Arten von Skripten unterteilt: scriptSig y scriptPubKey. Zuerst, Das scriptSig ist das Entsperrskript, das einen öffentlichen Schlüssel und eine digitale Signatur erfordert. Nachdem in den ersten Versionen der Bitcoin-Software mehrere Probleme festgestellt wurden, wurden tatsächlich Signaturüberprüfungen integriert. Daher akzeptiert das System Transaktionen nur dann, wenn die Signaturen und deren Überprüfung einer Reihe festgelegter Regeln entsprechen, die ein angemessenes Verhalten im Netzwerk gewährleisten.
Der zweite, Der scriptPubKey ist das Sperrskript, das einen Hash des öffentlichen Schlüssels, auch Bitcoin-Adresse genannt, enthält. Einige Bitcoin-Skripte erfordern Multisignaturen, also die Berechtigung mehrerer Benutzer zur Durchführung der Transaktion. In diesem Fall ist das Skript komplizierter, da es sich um einen viel umfangreicheren Vorgang handelt als der Standard-Peer-to-Peer-Vorgang. Tatsächlich ist in diesem Teil des Skripts die eigentliche Programmierung von Bitcoin-Transaktionen gespeichert.
Ziel seiner Entstehung
Der Zweck der Erstellung einer Skriptsprache in Bitcoin besteht darin, eine Reihe einfacher und flexibler Parameter bereitzustellen, um eine Transaktion zu ermöglichen. also wann Satoshi Nakamoto Bitcoin entwickelte, mehrere Funktionen deaktiviert, einschließlich der Multiplikation. Daher ist das Skript programmtechnisch einfach gehalten. Also, Diese Programmiersprache bestimmt, ob eine Operation ausgeführt werden kann oder nicht.. Das heißt, wenn dieser Vorgang für den Geldtransfer zugelassen ist.
Einfach ausgedrückt ist es die Erstellung des Bitcoin-Skripts, die Bitcoin seine programmierbare Natur verleiht. Dies ermöglicht es uns beispielsweise, eine Transaktion zu senden, die nur dann validiert wird, wenn bestimmte Bedingungen erfüllt sind. Diese Eigenschaft ist etwas Einzigartiges für Bitcoin und Kryptowährungen, etwas, das aktuelles digitales Geld nicht erreichen kann, geschweige denn archaisches physisches Geld. Es ist die Entwicklung des Geldes, die einen Punkt erreicht, an dem selbst es unabhängig und dezentral agieren kann, indem es sich einfach um die darin eingebettete Programmierung kümmert.
Außerdem Das Bitcoin-Skript vermeidet außerdem die Entstehung von Fehlern im System und die unnötige Verwendung sehr komplexer Transaktionen. Tatsächlich macht das Skript die Berechnung von Transaktionen relativ einfach. Darüber hinaus erfordern Endlosschleifen, wie eingangs erwähnt, viel mehr Rechenleistung und verlangsamen Netzwerke.
Beispiel eines Bitcoin-Skripts
Bevor wir tiefer darauf eingehen, was es ist und welche verschiedenen Elemente ein Bitcoin-Skript ausmachen, schauen wir uns ein kleines Beispiel dafür an. Unten sehen wir ein kleines Bitcoin-Skript, das heute häufig für Bitcoin-Transaktionen verwendet wird. Wir erklären sein Verhalten und seine Funktionsweise sowie seine verschiedenen Teile und gehen dann auf seine Eigenschaften ein.
Beispiel für ein Bitcoin-Skript: Bitcoin-Transaktionen mit P2PKH-Skript
Bitcoin-Skripte sind in allen Bitcoin-Aktien vorhanden. Die Wahrheit ist, dass jede Operation in Bitcoin von einem bestimmten Skript ausgeführt wird, das definiert, was ausgeführt werden soll. Außer dem, was das Drehbuch sagt, kann nichts passieren.
Wenn wir beispielsweise eine Transaktion durchführen möchten, wäre ein Skript dafür das folgende:
Der gesamte oben genannte Inhalt ist eine einfache Bitcoin-Transaktion dieser Art P2PKH (Pay to Public Key Hash). Diese Art von Skript ist ein Standardskript und tatsächlich die am häufigsten verwendete Methode zum Senden von Bitcoins. Auf den ersten Blick scheint es etwas sehr kryptisches und schwer verständliches zu sein. Die Wahrheit ist, dass hinter dieser Komplexität ein einfaches System steckt, das wir jetzt erklären werden.
Erklären Sie die Transaktion ausführlich
Das obige Bitcoin-Skript ist in zwei Teile unterteilt: scriptPubKey y scriptSig. Im ersten sind die auszuführenden Aktionen aufgeführt, im zweiten sind die Signatur und der öffentliche Schlüssel enthalten, um die Authentizität dieser Aktionen zu überprüfen. Auf diese Weise wird sichergestellt, dass nur diejenigen, die Zugang zu den Mitteln haben, eine Operation damit durchführen können. Andererseits gibt es die OP_CODES, die im Betrieb wie folgt lauten:
- OP_DUP: Duplizieren Sie das Element im obersten Stapel.
- OP_HASH160: Die Eingabe wird zweifach verschlüsselt: zuerst mit SHA-256 und dann mit RIPEMD-160.
- OP_EQUALVERIFY: Stellen Sie sicher, dass die eingegebenen Daten korrekt und gültig sind.
- OP_CHECKSIG: Die Ausgaben, Eingaben und das Skript der gesamten Transaktion werden in einem Hash zusammengefasst. Die verwendete Signatur muss eine gültige Signatur für diesen Hash sein und neben dem öffentlichen Schlüssel stehen.
Was nun während der Ausführung des Skripts passiert, ist Folgendes:
- Zunächst wird der ursprüngliche öffentliche Schlüssel des Eigentümers (der sich im scriptSig befindet) der Gelder dupliziert.
- Der doppelte öffentliche Schlüssel wird dann einem Hashing-Prozess unterzogen. Dabei wird zunächst ein Hash angewendet SHA-256 und dann wird ein RIPEMD-160-Hash auf das Ergebnis angewendet.
- Das Ergebnis der Hashes wird mit dem Hash des öffentlichen Schlüssels im scriptPubKey verglichen, um sicherzustellen, dass es EQUALVERIFY ist (d. h. es ist derselbe Schlüssel und wird als gültig verifiziert).
- Bei Übereinstimmung wird das Skript weiter ausgeführt und CHECKSIG wird ausgeführt, um die Signatur mit dem öffentlichen Schlüssel zu überprüfen.
Auf diese Weise wird alles, was im Skript angegeben ist, auf sichere und geplante Weise ausgeführt. Wenn Sie mehr über die Funktionsweise von Bitcoin Script erfahren möchten, können Sie dies tun Besuchen Sie unseren Bit2Me-TV-Dienst, wo Sie einige Videos sehen können, die viel mehr über diese interessante Sprache erklären.
Bitcoin Script, die intelligente Vertragssprache von Bitcoin
Viele Menschen sind der Meinung und argumentieren, dass Bitcoin nicht in der Lage ist, dies zu tun Smart Contracts. Die Wahrheit ist, dass dies nicht stimmt, da Sie mit Bitcoin Script selbst intelligente Verträge erstellen. Sicherlich sind seine Fähigkeiten im Vergleich zu beispielsweise dem, was es leisten kann, begrenzt. Ethereum, aber das bedeutet nicht, dass Bitcoin Script die Fähigkeit hat, intelligente Verträge zu erstellen. Aber lassen Sie uns das einfacher und detaillierter erklären.
Zunächst einmal ist Bitcoin Script, wie bereits erwähnt, keine Turing-Complete-Sprache. Dies liegt daran, dass zur Ausführung der beabsichtigten Funktionen keine größere Komplexität erforderlich ist. Aber einer der Hauptgründe ist, dass man durch den Verzicht auf Schleifen mit Sicherheit wissen kann, wann und wie ein bestimmtes Programm enden wird. Es können keine Fehler auftreten, was für mehr Sicherheit sorgt. Ebenso besteht keine Möglichkeit, dass die Programme sich selbst oder ihren Ausführer, in diesem Fall Bitcoin, blockieren.
Ein gutes Beispiel für die Bedeutung dieser Schutzmaßnahmen wäre, dass es mit Bitcoin Script unmöglich ist, Skripte zu erstellen, die ewig laufen. Tatsächlich besteht das Risiko eines Skripts, das ewig läuft, darin, dass es die Tür für einen Angriff auf das Netzwerk öffnet Denial-of-Service-Angriff (DoS)..
Aber die Tatsache, dass Bitcoin Script diese Art von Operationen einschränkt, schützt das Netzwerk vor solchen Angriffen. Es besteht also keine Chance, dass ein Skriptprogramm mit einer Endlosschleife die korrekte Funktion von Bitcoin verhindern kann. Einfach ausgedrückt ist Bitcoin Script viel sicherer als seine komplexeren Gegenstücke, wie sie von vorgestellt werden Ethereum o NEO.
Evolution des Bitcoin-Skripts
Die Skriptsprache ist in Bitcoin seit seiner ersten Version vorhanden. Satoshi Nakamoto, der Entwickler von Bitcoin, analysierte die Struktur digitaler Zahlungen und kam zu dem Schluss, dass ein Modell erforderlich sei, das es der Maschine ermöglichen würde, zu bestimmen, ob Transaktionen durchgeführt wurden, indem die Ausgaben erfolgreich ausgegeben wurden oder nicht. Das heißt, es wird überprüft, ob die Signaturen korrekt waren und mit dem öffentlichen Schlüssel übereinstimmten.
Hierbei handelt es sich um eines der am besten untersuchten Probleme in der Informatik. Dabei geht es darum, festzustellen, ob Ausgaben erfolgreich sind oder nicht, mit dem Ziel, doppelte Ausgaben zu vermeiden. Und die Lösung hierfür bestand darin, eine Maschine zu verwenden, die bestimmte festgelegte Kriterien erfüllte. Bei Bitcoin muss dies immer aufhören, daher ist die Implementierung einer Turing Incomplete-Sprache basierend auf einem Stack-System ideal. Daher ist der Mechanismus zur Verarbeitung von Skripten in Bitcoin sehr einfach und sicher.
In seinen Anfängen wies das Skript mehrere schwerwiegende Fehler auf, von denen einige noch heute bestehen. Ein Beispiel ist das OP_LSHIFT-Fehler, was bekannt war als der Fehler, der Bitcoin töten könnte. Oder das auch Bekannte Fehler bei der Skriptüberprüfung, den Gavin Andressen und Satoshi Nakamoto im Jahr 2010 behoben haben.
Das Vorhandensein dieser Art von Fehlern lässt viele vermuten, dass Nakamoto das Skript vor der Einführung von Bitcoin nicht ausreichend getestet hat. Tatsächlich spekulieren viele, dass das Drehbuch ein nachträglicher Einfall war. Vielleicht bestand Nakamotos ursprüngliche Idee darin, Bitcoins direkt an öffentliche Schlüssel zu senden, aber durch die Unterstützung von Bitcoin-Adressen erkannte er, dass eine Skriptsprache wirklich nützlich sein würde, um Vorwärtskompatibilität zu gewährleisten.
Beschreibung
Die Bitcoin-Skriptsprache weist mehrere Merkmale und Qualitäten auf, unter denen wir erwähnen können:
- Es ist einfach und erfordert nur minimale Verarbeitung.
- Seine Funktionalität ist eingeschränkt, was dem System eine größere Sicherheit verleiht.
- Da es sich um eine unvollständige Turing-Sprache handelt, gibt es keine Schleifen, sodass sichergestellt ist, dass sich das Programm nicht mehr wiederholt und endet. Dadurch wird die Möglichkeit von Fehlern und Schadcodes im Bitcoin-Netzwerk vermieden.
- Aufgrund seiner Einfachheit kann es auf einer Vielzahl von Geräten implementiert werden.
- Es gibt keinen Status vor oder nach der Ausführung des Skripts. Alle für die Ausführung des Skripts notwendigen Informationen müssen darin enthalten sein.
- Es ist stapelbasiert und kann zwei Typen verwenden. Eine Haupt- und eine weitere Alternative. Letzteres wird zur Speicherung von Daten für Berechnungen von Zwischenschritten verwendet. Ganz ähnlich wie die Speichertaste bei Taschenrechnern.
- Die Bitcoin-Skriptsprache ist recht klein. Es kann nur 256 Anweisungen enthalten, da jede Anweisung in einem Byte ausgedrückt wird.