Liste der aktuellen Opcodes?

Jeder weiß, wie / wo zu laufen

enum optypecode

(oder eine andere Methode), um eine Liste der aktuellen Opcodes zu erhalten? Wie dieses Ergebnis ...Geben Sie hier die Bildbeschreibung ein

https://www.slideshare.net/gvrooyen/20140220-bitcoin/34-We_just_used_4_opcodesenum

Antworten (2)

Dies ist die Liste der von Bitcoin Core v0.14.0 unterstützten Opcodes:

https://github.com/bitcoin/bitcoin/blob/v0.14.0/src/script/script.h#L46L187

Danke. Das scheint der Codeabschnitt aus dem Screenshot zu sein.

Ich glaube nicht, dass es einen Befehl gibt, den Sie ausführen können, außer sich den Quellcode von Bitcoin anzusehen. (suchen enum opcodetype)

Beachten Sie, dass viele der dort aufgeführten Opcodes

  • sind deaktiviert, um die Komplexität zu reduzieren, ( OP_CAT)
  • ändern Sie die Bedeutung, je nachdem, welche Softforks angewendet werden ( OP_CHECKLOCKTIMEVERIFYund OP_NOP2denselben Opcode haben) oder
  • kann in einem Skript keine Bedeutung haben. ( OP_SMALLINTEGER)

Um eine Liste mit denen zu erhalten, die tatsächlich verwendet werden können, ohne dass ein Skript fehlschlägt, müssen Sie sich den Code ansehen, der Skripte tatsächlich auswertet . (suchen Bool EvalScript)

Hier ist eine Liste der legalen Opcodes zum Zeitpunkt des Schreibens:

(direct push, opcode 0x01-0x4b)
OP_PUSHDATA1
OP_PUSHDATA2
OP_PUSHDATA4
OP_0-16
OP_TRUE
OP_FALSE
OP_1NEGATE
OP_CHECKLOCKTIMEVERIFY
OP_CHECKSEQUENCEVERIFY
OP_NOP
OP_NOP1-10
OP_IF
OP_NOTIF
OP_ELSE
OP_ENDIF
OP_VERIFY
OP_RETURN
OP_TOALTSTACK
OP_FROMALTSTACK
OP_2DROP
OP_2DUP
OP_3DUP
OP_2OVER
OP_2ROT
OP_2SWAP
OP_IFDUP
OP_DEPTH
OP_DROP
OP_DUP
OP_NIP
OP_OVER
OP_PICK
OP_ROLL
OP_ROT
OP_SWAP
OP_TUCK
OP_SIZE
OP_EQUAL
OP_EQUALVERIFY
OP_NUMNOTEQUAL
OP_1ADD
OP_1SUB
OP_NEGATE
OP_ABS
OP_NOT
OP_0NOTEQUAL
OP_1ADD
OP_1SUB
OP_NEGATE
OP_ABS
OP_NOT
OP_0NOTEQUAL
OP_ADD
OP_SUB
OP_BOOLAND
OP_BOOLOR
OP_NUMEQUAL
OP_NUMEQUALVERIFY
OP_NUMNOTEQUAL
OP_LESSTHAN
OP_GREATERTHAN
OP_LESSTHANOREQUAL
OP_GREATERTHANOREQUAL
OP_MIN
OP_MAX
OP_ADD
OP_SUB
OP_BOOLAND
OP_BOOLOR
OP_NUMEQUAL
OP_NUMEQUALVERIFY
OP_NUMNOTEQUAL
OP_LESSTHAN
OP_GREATERTHAN
OP_LESSTHANOREQUAL
OP_GREATERTHANOREQUAL
OP_MIN
OP_MAX
OP_WITHIN
OP_RIPEMD160
OP_SHA1
OP_SHA256
OP_HASH160
OP_HASH256
OP_CODESEPARATOR
OP_CHECKSIG
OP_CHECKSIGVERIFY
OP_CHECKMULTISIG
OP_CHECKMULTISIGVERIFY

Bitcoin Wiki hat eine ausgezeichnete Seite zu diesem Thema, wenn Sie versuchen herauszufinden, was in Bitcoin-Skript möglich ist.

Danke für die ausführliche Antwort und die Links. Sehr hilfreich. (Ich habe nicht genug Ruf, um Ihre Antwort positiv zu bewerten.)
Vielen Dank nochmal. Ich frage mich nur, woher hast du die Liste der legalen Opcodes (ohne Hex-Werte)? Hast du es selbst erstellt oder ist es irgendwo erhältlich? Es ist sehr praktisch, es so sauber formatiert zu haben.
@ColmanMcMahon Ich hatte eine Kopie von interpreter.cpp. Ich habe grep verwendet, um Fallaussagen zu finden, und sed, um sie zu reduzieren. Dies hat nicht jeden Opcode erfasst, da einige Push-Opcodes unterschiedlich behandelt werden. Was Hex-Werte betrifft, kann ich das der Auflistung hinzufügen, wenn das für Sie hilfreich ist.
Danke. Danke wirklich hilfreich. Die Art und Weise, wie Sie es hier haben, ist großartig für das, was ich derzeit brauche (Präsentation von Opcodes auf einer Folie). Ich überlege gerade, wann ich die Liste in Zukunft überarbeiten muss.