Recuperación de la clave pública ECDSA de la firma

¿Cómo recuperar la clave pública ECDSA de la firma?

Sé que todo lo que se necesita es un hash del mensaje sin firmar y la firma.

¿Pero puede haber algún método detallado para calcular la clave pública ECDSA?

¿Quiere firmar un mensaje o quiere extraer la clave pública de un tx ya firmado?
estoy interesado en la extracción de clave pública de tx ya firmado
@HughMarstonHefner ¿Está preguntando sobre transacciones o está buscando una forma general de derivar una clave pública ECDSA de una firma y un mensaje determinados?
@ sr-gi señalé muy claramente
Esa puede ser la forma entonces: crypto.stackexchange.com/questions/18105/…
@sr-gi Actually, it is not possible to uniquely recover the public key from an ECDSA signaturedesde este enlace
Lea un poco más, "Sin embargo, con la firma y el mensaje que se firmó, y el conocimiento de la curva, es posible generar dos claves públicas, una de las cuales será la clave pública correspondiente a la clave privada utilizada"

Respuestas (1)

al mirar un tx firmado (P2PKH), la firma se ve así:

483045022100A428348FF55B2B59BC55DDACB1A00F4ECDABE282707BA5185D39FE9CDF05D7F0022074232DAE76965B6311CEA2D9E5708A0F137F4EA2B0E36D0818450C67C9BA259D0121025F95E8A33556E9D7311FA748E9434B333A4ECFB590C773480A196DEAB0DEDEE1

Esto se puede dividir en dos partes:

firma: 483045022100A428348FF55B2B59BC55DDACB1A00F4ECDABE282707BA5185D39FE9CDF05D7F0022074232DAE76965B6311CEA2D9E5708A0F137F4EA2B0E36D0818450C69D0C697C

clave pública: 21025F95E8A33556E9D7311FA748E9434B333A4ECFB590C773480A196DEAB0DEDEE1

y además se ve así en detalle (con la dirección de pubkey al final):

  ##################################################################
    48: OP_DATA_0x48:     push hex 48 (decimal 72) bytes as data
    30: OP_SEQUENCE_0x30: type tag indicating SEQUENCE, begin sigscript
    45: OP_LENGTH_0x45:   length of R + S
    02: OP_INT_0x02:      type tag indicating INTEGER
    21: OP_LENGTH_0x21:   this is SIG R
        00A428348FF55B2B:59BC55DDACB1A00F
        4ECDABE282707BA5:185D39FE9CDF05D7
        F0
    02: OP_INT_0x02:      type tag indicating INTEGER
    20: OP_LENGTH_0x20:   this is SIG S
        74232DAE76965B63:11CEA2D9E5708A0F
        137F4EA2B0E36D08:18450C67C9BA259D
    01: OP_SIGHASHALL:    this terminates the ECDSA signature (ASN1-DER structure)
    #########################################################
    21: OP_DATA_0x21:     type tag indicating LENGTH
    02: OP_INT_0x02:      type tag indicating INTEGER
        5F95E8A33556E9D7:311FA748E9434B33
        3A4ECFB590C77348:0A196DEAB0DEDEE1

    * This terminates the Public Key (X9.63 COMPRESSED form)
    * corresponding bitcoin address is:
   1HTNtayFkoBV28wqDygMbW33qSnRjxAuNR
Indique dónde está el hash que se necesita para la verificación de la firma con la clave pública correspondiente.
hmmm, creo que no lo entiendo... el hash se construye antes de firmar, o se puede reconstruir, como se describe aquí bitcoin.stackexchange.com/questions/60051/… - Achow lo explicó con otro enlace. Entonces, el hash no está incluido en el tx en sí.
Mmm no entiendo la respuesta. La pregunta es sobre la recuperación de claves, mientras que la respuesta habla de firmas sin recuperación de claves.
tal vez necesito ayuda entonces... la primera línea de la pregunta dice: "¿Cómo recuperar la clave pública ECDSA de la firma?", Pensé en mostrar cómo llegar a la clave pública de la firma... Ahí está está en formato X9.63 (comprimido). ¿Está op buscando un formato diferente, como el formato p, r, s y z?
tarde, pero de todos modos: según el comentario de @ Jus12, revisé algunas otras publicaciones en ECDSA y encontré este enlace, al que también se hace referencia en algunos otros hilos: bitcointalk.org/index.php?topic=6430.0 - muestra que pubkey se incluye en la firma en sí, pero no se implementa en Bitcoin, debido a más ciclos de CPU, y probablemente requiera una bifurcación.