A partir de r, el verificador reconstruye los puntos candidatos R con coordenada x igual a r (con dos valores posibles de y; en raras ocasiones, también con r + n) y calcula Q = r⁻¹·(s·R − z·G). Un ID de recuperación selecciona el candidato: normalmente 0 o 1, según la paridad de la coordenada y de R. Ethereum lo pone en v: 27 o 28 para personal_sign y los mensajes heredados, chainId × 2 + 35 o + 36 para las transacciones EIP-155, y 0 o 1 en las transacciones tipadas. El formato de mensaje firmado de Bitcoin lo pone en un byte de encabezado (de 27 a 42 según el tipo de dirección, BIP-137).
El contrato precompilado ecrecover en la dirección 0x01 devuelve la dirección de 20 bytes de la clave recuperada; así comprueban los contratos las firmas personal_sign, EIP-712 y permit sin almacenar claves públicas. La recuperación siempre produce alguna clave a partir de una firma bien formada, así que no demuestra nada hasta que el resultado se compara con la dirección esperada; además, si falla, ecrecover devuelve la dirección cero, que los contratos deben rechazar.
La recuperación funciona con ECDSA en cualquier curva, incluida P-256. Las firmas Schnorr (BIP-340) y EdDSA no la permiten, porque la clave pública forma parte de su hash de desafío.