Tengo entendido que una clave publica deriva de la clave privada por medio de una función unidireccional, por tanto se puede recuperar la clave publica a través de la privada, y esta privada es generada aleatoriamente.
Correcto
Mi duda viene al crear una cuenta, digamos en CoinBase este te crea una clave privada, y si lo lo hiciera usando otro medio por ejemplo usando alguna cartera que también te crea un dirección, entonces como sabe Coinbase u otro medio como Multilib que la dirección publica ya existe?, porque en caso que en ambos casos te crearan un dirección ya existente entonces no seria un caos?.
Si la clave privada se genera de manera realmente aleatoria, las posibilidades de que se obtenga la misma dirección es prácticamente nula durante toda la duración de nuestras vidas y más allá. Existen 2
160 direcciones Bitcoin diferentes, que es un número extremadamente alto.
No se si estoy mezclando los temas pero por ahí en un blog leí que Bitcoin es resistente a la colisión pero que no necesariamente significa que no exista (solo que aun no se ha probado lo contrario). Entonces si existiera una dirección que ya fue creada anteriormente otro podría gastar o recibir bitcoin que no pertenecen a la cuenta.
De hecho, en alguna ocasión ha ocurrido que se han generado direcciones Bitcoin iguales por programas diferentes y se ha conseguido robar bitcoins de esas direcciones. Esto se ha debido fundamentalmente a un brainwallet débil o a un generador de números aleatorios programado incorrectamente. Como se ha dicho anteriormente, si se generan los 256 bits de cada clave privada privada de manera completamente aleatoria, las 2
160 direcciones Bitcoin serán siempre diferentes durante muchísimos años.