¿Cómo generan direcciones únicas los clientes de Ethereum?

¿Cómo generan los clientes de Ethereum, como Ethereum Wallet o Eth-Lightwallet, direcciones únicas que no se han utilizado antes y cuál es la probabilidad de que estas direcciones se hayan utilizado?

Respuestas (4)

La dirección se deriva de una clave privada aleatoria. El cliente no comprueba si se ha utilizado anteriormente porque la posibilidad de que eso suceda es casi nula.

Bueno, no olvidemos la regla de oro de la ley de Murphy: lo que puede suceder, sucederá o, como él dijo, "lo que pueda salir mal, saldrá mal".

Creo que la frase más importante en su pregunta es 'cuál es la probabilidad'.

Las otras respuestas son correctas al determinar que hay una probabilidad de 1 en 2^160 de encontrar una colisión con una probabilidad del 100 % .

Debido a la paradoja del cumpleaños , los criptógrafos otorgan a una función hash con una longitud de bits de salida de 160 una clasificación de seguridad bit a bit de 80. Esto se debe a que con 2^80 direcciones, es más probable que no (es decir, la probabilidad es superior al 50%) que tendrá una colisión de direcciones .

Para una comparación visual con las respuestas anteriores, el problema del cumpleaños implica que ocurrirá una colisión con una probabilidad de 1 en 1,208,925,819,614,629,174,706,176, yikes.

Lo que dice el problema del cumpleaños es que si genera direcciones usando 2^80 semillas aleatorias, la posibilidad de que algún par de direcciones generadas sean iguales es ~50%. Eso es diferente a decir que si genera una nueva dirección, la probabilidad de que se haya utilizado antes es de 1 en 2^80. La probabilidad correcta es 1 en 2^160 veces el número de direcciones que ya se han generado.
Ah, sí, entiendo la distinción, supongo que interpreté la pregunta como más 'cuándo es probable que tengamos una colisión de direcciones' y menos 'cuál es la probabilidad de que cada nueva generación de direcciones (a partir de 0 direcciones) resulte en una colisión'.

Ethereum Wallet (la billetera oficial que usará Mist) se usa web3.personal.newAccountpara crear una cuenta. Esta es una llamada web3.js que hace el equivalente a geth account new.

El espacio de direcciones en Ethereum es un valor de 20 bytes (espacio de direcciones de 160 bits, igual que Bitcoin).

¿Cuál es la probabilidad de que se hayan utilizado estas direcciones?

2^160 o aproximadamente 1 en 1,461,501,637,330,902,918,203,684,832,716,283,019,655,932,542,976

Cuando se crea la cuenta, ¿se comprueba si alguna otra transacción ha utilizado esta dirección anteriormente?
@paulmorriss No pude encontrar uno, pero es posible que me haya perdido algo.
No, si crea una cuenta que apunta a una billetera existente, puede gastar todo el ETH que hay allí.

Ethereum utiliza direcciones de 160 bits de longitud. La probabilidad de que cualquier dirección sea la misma que cualquier otra dirección dada es, por lo tanto, de 1 en 2^160. Sin embargo, debido a la paradoja del cumpleaños , la posibilidad de que una nueva dirección de Ethereum sea la misma que cualquier dirección de Ethereum ya existente aumenta exponencialmente con cada nueva dirección de Ethereum y se calcula de la siguiente manera:

Número de pares posibles: ( número de direcciones únicas de Ethereum + 1 / número de direcciones únicas de Ethereum) = ((4 807 984 + 1) * 4 807 984) / 2 = 11 558 357 476 120

Probabilidad de un par único: ((2^160)-1) / 2^160) = 0.99999999999999999999999999999999999999999999999999315772234

Chance of 11,558,357,476,120 unique pairs = 0.999999999999999999999999999999999999999999999999315772234 ^ 11,558,357,476,120 = 0.999999999999999999999999999999999992091451

Probabilidad de alguna coincidencia = 1 - 0.999999999999999999999999999999999992091451 = 7.908549 × 10^-36

A partir de hoy (26 de julio de 2017), la posibilidad de que una nueva dirección de Ethereum sea la misma que una dirección de Ethereum ya existente es ~8 × 10^-36