Esto es útil en el libro de Andreas Antonopoulos, Mastering Bitcoin:
"En los primeros años del desarrollo de bitcoin, los desarrolladores introdujeron algunas limitaciones en los tipos de scripts que podía procesar el cliente de referencia. Estas limitaciones están codificadas en una función llamada isStandard(), que define cinco tipos de transacciones "estándar". ."
¿Dónde están los cinco tipos enumerados en el código base de Bitcoin Core?
Esto es más fácil decirlo que hacerlo, en mi opinión. Hay un montón de pequeñas páginas web de hojas informativas (por ejemplo, https://www.cryptocompare.com/coins/guides/what-are-the-bitcoin-transaction-types/ ) que dan una lista de los Bitcoin "estándar". Tipos de transacciones, pero nada superautoritario.
Sin embargo, creo que la fuente más autorizada en este momento es el código fuente central de Bitcoin.
Hice mi propia búsqueda, recientemente, para prepararme para la reunión de Andreas Antonopoulos mañana:
El libro Mastering Bitcoin se refiere a él en tres capítulos diferentes:
https://github.com/bitcoinbook/bitcoinbook/search?utf8=%E2%9C%93&q=%22standard+transactions%22&type=
https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch07.asciidoc#multi-firma
También encontré un buen enlace a una lista completa de ellos aquí:
Y los 5 tipos, pubkey, pubkey_hash, multisig, script_hash, op_return, tienen algunas estadísticas geniales aquí: https://webbtc.com/stats
Para resumir, creo que solo tendrá que leer la viñeta y pedirle a un amigo que sepa C ++ que policy.cpp
le explique el contenido del archivo:
https://github.com/bitcoin/bitcoin/blob/master/src/policy/policy.cpp#L44
Ese amigo seré yo, en breve...
(algún tiempo después)
Parece que hay dos funciones que indican si una transacción es 'Estándar' según la lógica de Bitcoin Core: IsStandard()
y IsStandardTx()
.
Encabezado: https://github.com/bitcoin/bitcoin/blob/master/src/policy/policy.h#L75
Código fuente:
IsStandard()
: https://github.com/bitcoin/bitcoin/blob/master/src/policy/policy.cpp#L34
IsStandard()
primero verifica la transacción contra el Solver. https://github.com/bitcoin/bitcoin/blob/master/src/policy/policy.cpp#L37IsStandard()
verifica si la transacción es una N de 3 multisig: https://github.com/bitcoin/bitcoin/blob/master/src/policy/policy.cpp#L40IsStandard()
verifica que la transacción sea uno de los dos tipos estándar de witness
transacciones. https://github.com/bitcoin/bitcoin/blob/master/src/policy/policy.cpp#L53IsStandardTx()
: https://github.com/bitcoin/bitcoin/blob/master/src/policy/policy.cpp#L59
scriptPubKey
contra la IsStandard()
función. https://github.com/bitcoin/bitcoin/blob/master/src/policy/policy.cpp#L97OP_RETURN
salida. Pero no vaciar transacciones multisig o desempolvar. https://github.com/bitcoin/bitcoin/blob/master/src/policy/policy.cpp#L103 https://github.com/bitcoin/bitcoin/blob/master/src/policy/policy.cpp#L114Supongo que este es un estándar bastante razonable para realizar transacciones "estándar".
Los comentarios explican algo de eso.
Si desea ver qué entradas y testigos se consideran estándar, puede mirar más abajo en la página o hacer otra pregunta en este sitio.
greg hewgill
Nathan Basanese
Nathan Basanese