obtener la dirección bitcoin de los archivos blk*.dat

Sé que obtener la dirección de los blk*.datarchivos se discute muchas veces. Pero no entiendo porque? Cuando tengo el scriptSig sin procesar, ¿puedo codificarlo y obtener la dirección de bitcoin o no?

Por ejemplo, el primer bloque de la primera transacción:

scriptSig de entrada (este valor es correcto, como se define aquí: https://en.bitcoin.it/wiki/Genesis_block ):

04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73

guion de salidaSig:

4104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac

como está escrito aquí: https://en.bitcoin.it/wiki/Genesis_block la dirección de la salida es:

1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

ahora, ¿cómo llegar desde scriptSig 4104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5faca la dirección 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa?

Si lo prueba aquí: http://gobittest.appspot.com/Address , el resultado NO es la dirección esperada "1A1..."

Respuestas (2)

Primero, tenga en cuenta que el scriptSig en el bloque de génesis estaba antes de que se usaran las direcciones. El scriptSig allí se llama p2pk, o pay-to-pub-key. Las direcciones (del tipo que comienza con 1) son en realidad p2pkh, o pay-to-pub-key-hash. Puede convertir uno a otro con bastante facilidad y eso es lo que está pasando aquí.

El scriptSig real se puede analizar así:

41 = number of bytes in hex of the element (65 bytes)
04...5f = public key
ac = OP_CHECKSIG

Introduzca 04...5f en la clave ECDSA pública en http://gobittest.appspot.com/Address y verá que la dirección sí coincide.

Mi culpa fue que tomé el primer y último byte también como parte de la clave de publicación. cuando lo quite todo estaba correcto
Pero, ¿cómo convertir todos los demás en una dirección (además de los del bloque de génesis)? como: 76a91487bfdc1e986af9671805a902e0b2ca853f587d6288ac
Saque el 76a914 al principio (OP_DUP, OP_HASH160, 20 bytes de longitud) y el 88ac al final (OP_EQUALVERIFY, OP_CHECKSIG) y colóquelo en el cuadro 3.
Gracias lo intentare! Pero, ¿existe un enfoque general para eso? Porque tengo algunos otros guiones y creo que pedir cada caso daría lugar a una gran explosión...
¿Debo interpretar el guión y tomar la pila?
porque "a9149cb09d17e24e9b985a4efccf44ee4debce48ef0b87" es otro problema y probé muchos rellenos a la izquierda y a la derecha
La forma de obtener esto generalmente es tomar el binario y convertirlo en forma de script. OP_HASH160 <hash> OP_EQUAL parece ser la forma, así que si sacas el a914 al frente y el 87 al final, tendrás el hash160 (casilla 3). Tenga en cuenta que esto significa que no es necesario que haya una firma, por lo que es un script muy peligroso que no debe usarse.
OK,. I take Transaction e99783084c44b670c8206c8b3071878963bcf691812005bb416666ba1f500301 At out1 script sig is: a914564960b6d6eb2d10e4580b1441fd69793a184c0287 and then based on walletexplorer.com, the address there should be: 39ZFwRH6LrYwSttfWU8Kme7vMpC1jpZVvM So I take "a914" (begin) and "87" (end) away. Firma de script restante: 564960b6d6eb2d10e4580b1441fd69793a184c02 Ahora probé esto en cada cuadro en el sitio gobittest.appspot.com/Address pero nunca obtuve la dirección: 39ZFwRH6LrYwSttfWU8Kme7vMpC1jpZVvM.
Tal vez alguien más tenga alguna información.

O tal vez tengo razón con las siguientes suposiciones: hay tres tipos de scriptSig

  1. OP_DUP OP_HASH160 .... OP_EQUALVERIFY OP_CHECKSIG
  2. OP_HASH160 ... OP_EQUAL
  3. OP_m ... OP_CHECKMULTISIG

Pero, ¿qué hacer ahora con estas opciones? En la tercera opción solo tengo que tomar todos los bytes representados como "..." y decodificarlo. Pero ¿qué pasa con los demás?

Por ejemplo: caliente para obtenerlo de: 76a91490bb78d00b26139e4d51ceb9655295c2bd98aed688ac