Dirección de Ethereum -> correspondencia de clave privada

Se sabe que las direcciones de Ethereum se generan mediante el hash de la clave pública (ref. this post ). Sin embargo, no estoy seguro de que una sola clave pública corresponda a una sola dirección.

caso de uso

Me gustaría implementar un esquema de intercambio de tokens en el que un usuario pueda enviar un solo token solo una vez (una especie de votación). El usuario genera un par de claves y deriva una dirección de la clave pública. Luego, el usuario descarta el par de claves. Me gustaría estar seguro de que un votante no pueda generar otra dirección usando el mismo par de claves, lo que me haría contar su token dos veces.

¿Podría aclarar si está preguntando "¿Puede la misma dirección provenir de dos claves privadas diferentes?" (Sí, pero es difícil encontrar tal colisión) o "¿Puede la misma clave privada producir dos direcciones diferentes?" (No.) o tal vez "¿Puede la misma clave pública producir dos direcciones diferentes?" (No por la misma razón.)

Respuestas (2)

Como se señaló en los comentarios:

¿Podría aclarar si está preguntando "¿Puede la misma dirección provenir de dos claves privadas diferentes?" (Sí, pero es difícil encontrar tal colisión) o "¿Puede la misma clave privada producir dos direcciones diferentes?" (No.) o tal vez "¿Puede la misma clave pública producir dos direcciones diferentes?" (No por la misma razón.) – smarx

responde perfectamente a mi pregunta. Gracias.

¿Por qué no resuelve el problema del "doble gasto" simplemente manteniendo saldos, como con la balancesvariable en un contrato estándar?

La idea es la siguiente: habrá un contrato que acuñará los tokens. El número de votantes es bien conocido (n - el número total de votantes). Cualquier usuario nuevo puede retirar un solo token de la menta. El historial de retiros se puede rastrear si una dirección ha retirado su token de la casa de la moneda. Si una dirección intenta retirar un token de la menta dos veces, fallará. Sin embargo, esto solo tiene sentido si solo se puede derivar una única dirección de una clave pública. Una variable de saldo no puede resolver este problema si ocurre lo contrario.