¿Lista de códigos de operación actuales?

Alguien sabe cómo/dónde correr

enum optypecode

(o algún otro método) para obtener una lista de códigos de operación actuales? Como este resultado...ingrese la descripción de la imagen aquí

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

Respuestas (2)

Esta es la lista de códigos de operación compatibles con Bitcoin Core v0.14.0:

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

Gracias. Esa parece ser la sección de código de la captura de pantalla.

No creo que haya un comando que pueda ejecutar, además de mirar el código fuente de Bitcoin. (buscar enum opcodetype)

Tenga en cuenta que muchos de los códigos de operación enumerados allí

  • están deshabilitados para reducir la complejidad, ( OP_CAT)
  • cambiar los significados dependiendo de qué bifurcaciones suaves se apliquen ( OP_CHECKLOCKTIMEVERIFYy OP_NOP2tengan el mismo código de operación) o
  • puede no tener significado en un script. ( OP_SMALLINTEGER)

Para obtener una lista de los que realmente se pueden usar sin que falle un script, debe mirar el código que realmente evalúa los scripts . (buscar Bool EvalScript)

Aquí hay una lista de códigos de operación legales, al momento de escribir:

(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 tiene una excelente página sobre este tema, si está tratando de descubrir qué es posible en el script de Bitcoin.

Gracias por la respuesta detallada y los enlaces. Muy útil. (No tengo suficiente reputación para votar tu respuesta)
Muchas gracias de nuevo. Solo me preguntaba, ¿de dónde sacaste la lista de códigos de operación legales (sin valores hexadecimales)? ¿Lo redactaste tú mismo o está disponible en alguna parte? Es muy útil tenerlo formateado limpiamente de esa manera.
@ColmanMcMahon Tenía una copia de interpreter.cpp. Usé grep para encontrar declaraciones de casos y sed para reducirlo. Esto no atrapó todos los códigos de operación, porque algunos códigos de operación de inserción se manejan de manera diferente. En cuanto a los valores hexadecimales, puedo agregarlos a la lista si te resulta útil.
Gracias. Gracias realmente útil. La forma en que lo tiene aquí es excelente para lo que necesito actualmente (presentar códigos de operación en una diapositiva). Solo estoy pensando en cuándo tendré que revisar la lista en el futuro.