Ein OP_CODE oder Operationscode ist ein Code oder eine primitive Anweisung, die es uns ermöglicht, Operationen innerhalb einer Blockchain wie Bitcoin zu programmieren. Dank dieser Codes können wir tatsächlich fortschrittliche Programmierstrukturen oder intelligente Verträge erstellen, die dann von den Knoten eines Blockchain-Netzwerks gelesen und ausgeführt werden.
LDie in der Informatik zum Programmieren von Computergeräten und virtuellen Maschinen verwendeten Anweisungen und Anweisungen werden als bezeichnet OP_CODE (Operationscode) o Betriebscodes.
Diese Codes geben die Vorgänge oder Funktionen an, die von der Hardware oder Software ausgeführt und ausgeführt werden müssen. Bei Hardware wird die Form des OP_CODE je nach Typ definiert Operations-Set-Architektur (ISA) des Computers. Das heißt, gemäß den Anweisungen, die das Gerät zur Interpretation und Ausführung der Betriebscodes hat. Im Fall von Software werden OP_CODE mit einer Art ISA oder Operations-Architektur erstellt, die speziell für die Interpretation durch die entwickelt wurde virtuellen Maschine oder der Byte-Interpreter.
Operationscodes ermöglichen es einem Computerprogramm, dem Computer einen Befehl zu erteilen, ihn zu interpretieren und auszuführen.
Wie funktioniert ein OP_CODE?
Damit Maschinen, Geräte und Computer einen bestimmten Befehl empfangen und ausführen können, ist es notwendig, Anweisungen in einer für sie verständlichen Sprache zu erteilen. Daher sind diese Anweisungen in einer Programmiersprache geschrieben, die enthält Betriebscodes oder wird letztendlich in eine Reihe von Opcodes übersetzt.
Diese Codes sind in einer Sprache geschrieben, die wir allgemein kennen, beispielsweise Englisch, und werden dann von einem übersetzt Compiler- oder Übersetzerprogramm damit Maschinen es in ihrer Binärsprache verstehen. Das heißt, die in unserer Sprache geschriebenen mnemonischen Anweisungen zur Interpretation durch uns Menschen haben ihr Äquivalent in binärer Sprache, sodass Maschinen sie leicht interpretieren können. Und so in der Lage sein, auf die erhaltene Anweisung zu reagieren und sie korrekt auszuführen.
Beispiel für einen OP_CODE
Ein gutes Beispiel für OP_CODE sehen wir im folgenden Bild:
Darin sehen wir einige OP_CODES, die zu den Anweisungen gehören, die einen Prozessor oder ausführen können CPU Computer (insbesondere Intel x86). Wie Sie sehen, ist es etwas kryptisch zu lesen und lässt sich damit kaum programmieren (obwohl einige Entwicklungen aufgrund der Geschwindigkeit in dieser Art von Sprache erfolgen).
Die Situation in der Kryptowelt ist nicht sehr anders und in Bitcoin Wir können zum Beispiel so etwas sehen:
Es ist sicherlich genauso kryptisch, aber diese einfache Aussage entspricht einer Transaktion in Bitcoin. Wenn Sie mehr darüber erfahren möchten, können Sie unseren Artikel dazu lesen Bitcoin-Skript wo wir ausführlich erklären, was genau diese Anleitung bewirkt.
Arten von Opcodes im Bitcoin-Skript
Die OP_CODES Denn das Bitcoin-Skript kann nach der Funktion und den Hinweisen klassifiziert werden, die es im System ausführen wird. Diese Codes können beispielsweise zum Löschen, Hinzufügen, Verschieben oder Drehen von Elementen auf dem Stapel, zum Analysieren und Durchführen arithmetischer Operationen, zum Validieren oder Ungültigmachen von Transaktionen und vielen anderen Funktionen verwendet werden.
Nachfolgend präsentieren wir eine Liste von Operationscodes, die nach Typ und Funktion klassifiziert sind. Es ist jedoch wichtig zu beachten, dass diese Liste weder abschließend noch radikal ist, da es im Bitcoin-Skript viele Operationscodes gibt und nur einige davon hier erwähnt werden.
Codes einbetten
OP_0 = 0x00 y OP_FALSE = OP_0: beide Codes sie drängen oder sie fügen dem Stapel ein Element oder ein leeres Byte-Array hinzu. Beides sollte nicht mit NO_OP verwechselt werden
OP_PUSHDATA1 = 0x4c, OP_PUSHDATA2 = 0x4d y OP_PUSHDATA4 = 0x4e: Im ersten Code die nächstes Byte enthält die Anzahl der Bytes, die auf den Stapel verschoben werden sollen. Im zweiten Code die nächsten 2 Bytes enthalten die Anzahl der Bytes, die in den Stapel eingefügt werden sollen, während die dritten die Anzahl sind nächsten 4 Bytes diejenigen, die die Anzahl der Bytes enthalten, die dem Stapel hinzugefügt werden sollen. In diesen Codes erfolgt das Hinzufügen der Bytes im Format Endian.
OP_NEGATIVE = 0x4f y OP_TRUE = OP_1: In diesem Fall wird die negative Zahl -1 auf den Stapel geschoben, während in OP_TRUE Die positive Zahl 1 wird auf den Stapel geschoben.
Steuercodes
OP_NOP = 0x61: Dieser Code führt keine Operation aus, wird aber in Fällen verwendet, in denen etwas Platz im Programm gefüllt werden muss.
OP_IF = 0x63 y OP_NOTIF = 0x64- Beide Codes werden zur Ausführung der Anweisungen verwendet. Im ersten Code werden sie ausgeführt, wenn der oberste Stapelwert vorliegt nicht ist falsch; Im zweiten Code werden sie ausgeführt, wenn die Werte auf dem obersten Stapel liegen si ist falsch. In beiden Fällen wird also der Wert vom obersten Stapel entfernt.
OP_ELSE = 0x67: wird verwendet, um Aussagen zu bestätigen oder zu verneinen. Wenn die beiden vorherigen Codes ausgeführt wurden (OP_IF und OP_NOTIF) Aussagen werden dementiert. Im Falle von nicht Nach der Ausführung werden die Aussagen bestätigt.
OP_ENDIF = 0x68– Wird zum Beenden eines Blocks verwendet, da sonst Transaktionen ungültig wären. Ein Code OP_ENDIF ohne Code OP_IF oben sind ebenfalls nicht gültig.
OP_RETURN = 0x6a– Wird verwendet, um eine Transaktionsausgabe als ungültig zu markieren.
Anwendungscodes und Stack-Operationen
OP_TOALTSTACK = 0x6b y OP_FROMALTSTACK = 0x6c: Der erste Code wird verwendet, um den Eintrag oben auf den alternativen Stapel zu verschieben und ihn vom Hauptstapel zu entfernen. Der zweite Code führt den umgekehrten Prozess aus; Verschiebt den Eintrag an die Spitze des Hauptstapels und entfernt ihn vom Alternativstapel.
OP_DROP = 0x75 y OP_DUP = 0x76: sind gewöhnt an entfernen ein Element vom obersten Stapel und bis duplizieren jeweils ein Element aus dem obersten Stapel.
Operationscodes zusammenfügen
OP_SIZE = 0x82– Dieser Code verschiebt die Länge der Zeichenfolge vom obersten Element des Stapels, ohne sie zu löschen.
Codes OP_SUBSTR = 0x7f, OP_LEFT = 0X80 y OP_RIGHT = 0x81 wurden deaktiviert. Sie wurden verwendet für:
- Zurück ein Abschnitt in einer Kette.
- Behalten nur die verbleibenden Zeichen ab einem bestimmten Punkt in einer Zeichenfolge und
- Behalten jeweils nur die verbleibenden Zeichen rechts von einem bestimmten Punkt in einer Zeichenfolge.
Codes für numerische Operationen
OP_1ADD = 0x8b y OP_1SUB = 0x8c: wird zum Hinzufügen verwendet (Sumar) oder löschen (subtrahieren) jeweils 1 am Eingang.
OP_2MUL = 0x8d y OP_1DIV = 0x8e: wurden verwendet für Multiplicar o dividir für 2 jeweils der Eingang, aber beide waren deaktiviert.
OP_ABS = 0x90 y OP_NEGATE = 0x8f: werden verwendet, um das Vorzeichen der Eingabe umzukehren, d. h. um die Eingabe positiv bzw. negativ zu machen.
OP_MIN = 0xa3 y OP_MAX = 0xa4- Diese Codes werden verwendet, um die zurückzugeben niedrigster Wert von a und b, oder ggf. zur Rückgabe der höchster Wert von a und b jeweils.
Codes zur Kodierung und Verschlüsselung
OP_RIPEMD160 = 0xa6: Es wird verwendet, um die Eingabe mit dem RIPEMD-160-Algorithmus zu kodieren, um kürzere, aber gleichermaßen sichere Hashes für die Erstellung von Adressen zu erhalten.
OP_SHA1 = 0xa7: Wird zum Codieren der Eingabe mit dem SHA-1-Algorithmus verwendet, der zum Berechnen und Erhalten eines einzelnen Prüfwerts für alle Eingaben verwendet wird, die nicht größer als 264 – 1 Bit sind.
OP_SHA256 = 0xa8: Wird verwendet, um die Eingabe mit dem Algorithmus zu kodieren SHA-256.
OP_HASH160 = 0xa9: Wird verwendet, um die Eingabe zweimal zu kodieren. Die erste Kodierung durch den SHA-2-Algorithmus und die zweite mit dem RIPEMD-256-Algorithmus
OP_HASH256 = 0xaa– Wird verwendet, um die Eingabe zweimal über den SHA-2-Algorithmus zu kodieren.
OP_CHECKMULTISIG = 0xae: Wird verwendet, um einen Vergleich zwischen der ersten Signatur und jedem öffentlichen Schlüssel durchzuführen, bis eine Übereinstimmung gefunden wird ECDSA. Anschließend wiederholen Sie den Vorgang mit der zweiten Signatur und den nachfolgenden öffentlichen Schlüsseln usw., bis alle Signaturen verifiziert sind.
Zeitsperrcodes
OP_CHECKLOCKTIMEVERIFY = 0xb1: Dieser Code markiert als nicht Der Eintrag ist gültig, wenn das oberste Element des Stapels größer ist als das eingestellte Feld nLockTime, was die Bedingung darstellt, die erfüllt sein muss. Bei der Anwendung dieses Codes gibt es mehrere Implikationen, die den Eintrag ebenfalls ungültig machen. Zum Beispiel, wenn der Stapel leer ist oder sein oberstes Element unter anderem negativ ist.
OP_CHECKSEQUENCEVERIFY = 0xb2: Wird auch verwendet, um den Eintrag als zu markieren nicht gültig, wenn die Sperrzeit vom Wert des obersten Elements des Stapels abweicht oder größer ist.
Jeder dieser OP_CODEs führt eine genau definierte Funktion aus, und die gemeinsame Anordnung dieser OP_CODEs ermöglicht es Bitcoin, so zu funktionieren, wie es funktioniert. OP_CODEs gelten jedoch nicht nur für Bitcoin. Ethereum verfügt beispielsweise auch über ein eigenes OP_CODE-Register, in das Sie Anweisungen eingeben können Astraleum Virtuelle Maschine, und von dort aus alle Vorgänge ausführen Blockchain. Dies reicht von den einfachsten Transaktionen bis hin zu komplexen Smart-Contract-Operationen auf dieser Plattform. Das Gleiche gilt für den Rest criptomonedas die auch ihre OP_CODES oder analoge Tools für ihre Bedienung haben.
Daher ist es wichtig, sie nicht nur zu kennen, sondern auch weiterzuentwickeln, um die Funktionalitäten von Kryptowährungen und den darin enthaltenen Ökosystemen zu erweitern.
OP_CODES auf anderen Blockchains
Wenn wir hören, dass Kryptowährungen programmiert werden können, sagen wir in Wahrheit, dass Blockchains und ihre Token dank OP_CODES manipuliert werden können. Das erste klingt sicherlich viel einfacher, aber die technische Realität ist: OP_CODES sind in allen Blockchains enthalten und ermöglichen es uns, Transaktionen und andere Funktionalitäten davon zu programmieren.
Aber wie groß und fortgeschritten können diese OP_CODES in anderen Blockchains in Bezug auf Bitcoin sein? Die Antwort darauf ist einfach: Es gibt keine Grenzen, nur die Fantasie der Entwickler.
Um uns ein gutes und klares Beispiel zu geben, schauen wir uns Ethereum an. In Ethreum sehen wir eine Blockchain, die aus drei Elementen besteht: dem Ether-Token, dem Konzept der Gas- oder Betriebskosten und der Ethereum Virtual Machine. Für sich genommen scheinen sie nichts miteinander zu tun zu haben, aber die Wahrheit ist, dass sie eng miteinander verbunden sind, und diese Integration hängt von der Beziehung ab, die durch die OP_CODES innerhalb von Ethereum geschaffen wird.
Jedes Mal, wenn wir eine Transaktion in Ethereum durchführen, programmieren wir den Vorgang mit OP_CODES. Dieser Vorgang ermöglicht es uns, Ether zu verwalten und wir werden den Vorgang mit GAS bezahlen, aber die gesamte Programmierung wird von der virtuellen Maschine von Ethereum gelesen und ausgeführt. Somit ist uns klar, wie diese drei Elemente kommunizieren und welche wichtige Rolle OP_CODES beim Betrieb des Netzwerks spielen.
Das Gleiche können wir auch in Netzwerken beobachten Litecoin (das ein Äquivalent zu Bitcoin Script verwendet), Dash, EOS, Bitcoin Cash (Es verwendet auch ein Äquivalent, wenn auch modifiziert, von Bitcoin Script) und wir können dasselbe bei den übrigen Kryptowährungen sehen. Kurz gesagt, OP_CODES gibt es nicht nur in Bitcoin, sie sind ein wesentlicher Bestandteil der Kryptowährungen und Blockchains, in denen Sie sich befinden.