Mirando la fuente v0.9.3 en miner.cpp:
CBlockTemplate* CreateNewBlockWithKey(CReserveKey& reservekey)
{
CPubKey pubkey;
if (!reservekey.GetReservedKey(pubkey))
return NULL;
CScript scriptPubKey = CScript() << pubkey << OP_CHECKSIG;
return CreateNewBlock(scriptPubKey);
}
¿ El valor predeterminado scriptPubKey
es pay-to-pubkey? ¿Es necesario conservarlo para la compatibilidad? Estoy sorprendido de que no esté usando pay-to-pubkey-hash.
Pay-to-PubKey (P2PK) y pay-to-PubKey-Hash (P2PKH) se introdujeron en la versión original de Bitcoin 0.1. P2PK se utilizó de forma predeterminada para la minería y los pagos recibidos mediante el protocolo de pago interactivo de IP a IP ; P2PKH fue diseñado para usarse en pagos no interactivos, pero las transacciones P2PKH ocupan más espacio en la cadena de bloques que P2PK.
¿Es por este ahorro de espacio por lo que Nakamoto eligió usar P2PK para minería y pagos interactivos incluso cuando tenía P2PKH disponible, o tenía alguna otra razón para usar diferentes tipos de transacciones? Creo que solo él lo sabe.
En una situación en la que no necesite las direcciones P2PKH más cortas, como la minería, los pagos interactivos o el pago de su propia clave pública para cambio, usar un P2PK puede ser la mejor opción, aunque P2PKH tiene una ventaja de seguridad si no lo hace. No reutilice las direcciones y si ECDSA algún día se rompe de cierta manera que hace que los ataques sean posibles pero lentos de ejecutar.
Type Output Input Total Bytes
ScriptPubKey ScriptSig
push ....... 1 push ... 1
<key> ...... 33 <sig> ... ~72
P2PK checksig ... 1
-------------- -------------
Total ...... 35 Total ... ~73 ~108
dup ........ 1 push .... 1
hash160 .... 1 <sig> ... ~72
push ....... 1 push .... 1
P2PKH <hash> ..... 20 <key> ... 33
equal ...... 1
checksig ... 1
-------------- --------------
Total ...... 25 Total ... ~107 ~132
Los números anteriores asumen que está utilizando una clave pública comprimida , que se usa ampliamente en la actualidad pero no se implementó hasta Bitcoin Core 0.6.0 . Si desea considerar las claves públicas "sin comprimir" más antiguas, agregue 32 bytes a los <key>
tamaños de bytes. Además, ignoramos todos los factores constantes al crear una salida o entrada y solo consideramos la cantidad de bytes en el script.
No estoy al tanto de ningún problema de compatibilidad: muchos mineros y grupos de minería usan su propio software para pagar a las direcciones P2PKH, como puede ver en las bases de monedas en bloques recientes.
PREVOUT + SCRIPTSIG = 36 + (1 + 1 + 33 + 1 + (71 or 72)) = 143 or 144
la entrada P2PKH.
Nick ODell
codificador morse
Nick ODell
codificador morse
David A. Harding
Nick ODell