Как клиенты Ethereum генерируют уникальные адреса?

Как клиенты Ethereum, такие как Ethereum Wallet или Eth-Lightwallet, генерируют уникальные адреса, которые ранее не использовались, и какова вероятность того, что эти адреса уже использовались?

Ответы (4)

Адрес получается из случайного закрытого ключа. Клиент не проверяет, использовался ли он ранее, потому что вероятность этого практически равна нулю.

Что ж, давайте не будем забывать золотое правило закона Мерфи: что может случиться, то и случится, или, как он сказал, «все, что может пойти не так, пойдет не так».

Я думаю, что самая важная фраза в вашем вопросе - «какова вероятность».

Другие ответы верны при определении того, что вероятность обнаружения столкновения составляет 1 из 2 ^ 160 со 100% вероятностью .

Из-за парадокса дня рождения криптографы присваивают хеш-функции с длиной выходного бита 160 побитовый рейтинг безопасности 80. Это связано с тем, что с 2 ^ 80 адресами более вероятно, чем нет (то есть вероятность более 50%) , что вы будете иметь конфликт адресов .

Для визуального сравнения с приведенными выше ответами проблема дня рождения подразумевает, что столкновение произойдет с вероятностью 1 из 1 208 925 819 614 629 174 706 176, да.

Проблема дня рождения говорит о том, что если вы генерируете адреса, используя 2 ^ 80 случайных семян, вероятность того, что какая-то пара сгенерированных адресов будет одинаковой, составляет ~ 50%. Это отличается от утверждения, что если вы создадите новый адрес, вероятность того, что он уже использовался, составляет 1 к 2^80. Правильная вероятность составляет 1 из 2^160, умноженных на количество адресов, которые уже были сгенерированы.
Ах, да, я понимаю различие, я думаю, я интерпретировал вопрос больше как «когда мы, вероятно, получим коллизию адресов», и меньше как «какова вероятность того, что каждое новое поколение адресов (начиная с 0 адресов) приведет к коллизии».

Кошелек Ethereum (официальный кошелек, который будет использовать Mist) используется web3.personal.newAccountдля создания учетной записи. Это вызов web3.js, который эквивалентен geth account new.

Адресное пространство в Ethereum представляет собой 20-байтовое значение (160-битное адресное пространство, такое же, как у Биткойна).

какова вероятность того, что эти адреса были использованы?

2^160 или около 1 из 1 461 501 637 330 902 918 203 684 832 716 283 019 655 932 542 976

При создании учетной записи проверяется, не использовались ли ранее другие транзакции по этому адресу?
@paulmorriss Я не смог его найти, но, возможно, я просто что-то пропустил.
Нет, если вы создадите учетную запись, которая указывает на существующий кошелек, вы сможете потратить все находящиеся там ETH.

Ethereum использует адреса длиной 160 бит. Таким образом, вероятность того, что какой-либо один адрес совпадает с любым другим заданным адресом, составляет 1 из 2^160. Однако из-за парадокса дня рождения вероятность того, что новый адрес Ethereum совпадает с любым уже существующим адресом Ethereum, экспоненциально возрастает с каждым новым адресом Ethereum и рассчитывается следующим образом:

Количество возможных пар: ( количество уникальных адресов Ethereum + 1 / количество уникальных адресов Ethereum) = ((4 807 984 + 1) * 4 807 984) / 2 = 11 558 357 476 120

Вероятность уникальной пары: ((2^160)-1)/2^160) = 0,99999999999999999999999999999999999999999999999315772234

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

Вероятность совпадения = 1 - 0,999999999999999999999999999999999992091451 = 7,908549 × 10^-36

На сегодняшний день (26 июля 2017 г.) вероятность того, что новый адрес Ethereum будет таким же, как уже существующий адрес Ethereum, составляет ~ 8 × 10 ^ -36.