Estoy tratando de averiguar cómo encuentra la clave pública utilizada para firmar una transacción de v, r y s. Antes de que alguien lo diga, esto no es un duplicado de Get public key of any ethereum account . Esa pregunta pregunta cómo lo hace solo desde la dirección, no desde una transacción. Las respuestas a esa pregunta solo dicen que se puede hacer con algunas bibliotecas, pero no explican cómo funcionan realmente las matemáticas.
Estoy tratando de seguir los pasos en el artículo de Wikipedia sobre ECDSA ( https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm ). Estoy bien hasta el paso 6 del algoritmo de verificación de firma. Podemos obtener u1 y u2 de r, s y la transacción misma. El punto generador es parte de la especificación secp256k1, pero no veo de dónde proviene la clave pública (Q_A en el artículo de Wikipedia). Todavía no hemos usado v (no me queda claro qué es), pero es solo un byte y perdimos más de un byte cuando pasamos de la clave pública a la dirección de Ethereum (hash Keccak-256, luego eliminamos 12 bytes), así que no veo cómo eso puede llevarnos de vuelta a la clave pública.
Para ser claro, estoy tratando de averiguar cómo funcionan realmente las matemáticas. Sé que hay algunos métodos de caja negra en Python, JavaScript, etc., pero no puedo entender cómo funcionan. Gracias.
La clave pública del originador se puede calcular directamente a partir de la firma ECDSA. Una vez que tenga la clave pública, puede calcular la dirección fácilmente. El proceso de recuperación de la clave pública del firmante se denomina recuperación de clave pública.
Dorian Lee
Juan Stanford
Dorian Lee
Juan Stanford
Dorian Lee
ismael
Juan Stanford