Случайное создание биткойнов

Из https://en.bitcoin.it/wiki/Address :

  

Биткойн-адрес или просто адрес - это идентификатор из 27-34 буквенно-цифровых символов, начиная с номера 1 или 3, который представляет собой возможный пункт назначения для оплаты биткойнов.

Является ли какой-либо случайный адрес, который я создаю, следуя приведенным выше правилам, который будет адресом, который я могу с успехом отправить на биткойн?

Например, если я произвольно создаю эти адреса:

  • 1AAAAAAAAAAAAAAAAAAAAAAAAAA
  • 3111111111111111111111111111111111
  • 2FWIOHFEWNFEOWEFHO34234242244EFDE

Являются ли эти все действительные адреса, на которые я всегда могу отправлять платежи Bitcoin? Или они должны уже «существовать» в некоторой емкости?

3 голоса | спросил Tom Gullen 31 +04002013-10-31T17:20:42+04:00312013bEurope/MoscowThu, 31 Oct 2013 17:20:42 +0400 2013, 17:20:42

2 ответа


4

Адреса генерируются случайным образом, начиная с закрытого ключа. Частный ключ является единственно истинно случайным значением во всей цепочке интересных значений. Эти значения затем математически выводятся из закрытого ключа. На другом конце цепочки значений находится адрес.

Теперь, если вы можете просто выбрать адрес и восстановить закрытый ключ, который, передавая его через механизм деривации адресов, дает вам этот адрес, у нас будет много проблем. Люди могли просто слушать транзакции в сети, извлекать получающий адрес, восстанавливать закрытый ключ и тратить средства, даже если они не были предполагаемым получателем. Поэтому на данном этапе должно быть ясно, что просто выбрать адрес и перейти оттуда невозможно, другими словами некоторые из функций в цепочке не обратимы.

Итак, начиная с закрытого ключа, мы создаем открытый ключ. Уже этот первый шаг является необратимым, иначе криптосистемы с открытым ключом перестанут работать. Это должно быть нецелесообразно вычислить, чтобы восстановить закрытый ключ из открытого ключа. Биткойн продолжает идти вперед и дважды хеширует открытый ключ. Этот шаг также не обратим.

Первый символ адреса зависит от версии адреса и не может быть свободно выбран. Тогда возникает вопрос о кодировке Base58, которая в отличие от других механизмов обратима.

Наконец, последние несколько символов в адресе являются контрольной суммой, которая снова вычисляется как двойной хэш уже хэшированного открытого ключа. Таким образом, для этих последних символов просто нет способа «выбрать» их, чтобы адрес выглядел определенным образом.

Итак, чтобы ответить на ваш вопрос: нет, вы не можете просто выбрать адрес, который выглядит красиво и использовать его как ваш. Это также является причиной того, что существуют такие инструменты, как vanitygen : они просто выбирают случайный закрытый ключ, преобразуют его до тех пор, пока они получают адрес, а затем проверяют, есть ли у него нужные функции, например, ваше имя в нем. Чем более ограничительным является то, с чем вы хотите, чтобы ваш адрес выглядел, тем сложнее найти тот, который делает. Эта трудность возрастает экспоненциально, следовательно, термин, который невозможно вычислить выше.

ответил cdecker 31 +04002013-10-31T18:35:23+04:00312013bEurope/MoscowThu, 31 Oct 2013 18:35:23 +0400 2013, 18:35:23
0

«адрес» в биткойне состоит из двоичной формы:

[1 prefix byte] + [20 bytes of ~public key] + [4 checksum bytes] = 25 bytes

Затем эта двоичная форма преобразуется в base 58 , причем 58 символов действительны для ее записи (буквы и цифры, за исключением «0, O, I, l», которые запутывают). Это приводит к 26-35 строкам символов, которые обычно используются.

Префикс фиксирует символ «1» или «3» (P2PKH, P2SH), а последние 4 байта рассчитываются из предыдущих 21 байта.

Итак, те 20 байтов в середине могут быть выбраны случайным образом .

Но если эти 20 байтов были случайными, частный ключ был бы неизвестен, и поэтому средства, переведенные на этот «адрес», были бы безвозвратными. Процесс correct состоит в том, чтобы выбрать частный случайный ключ, вывести его из него и затем заполнить эти 20 байтов.

Итак, причины, по которым случайная комбинация из 26-35 букв и цифр не приведет к действительному адресу биткойна , даже если он начинается с «1» или «3» и «0 , O, I, l "нет:

  • при передаче в двоичный код количество полученных байтов может быть не совсем точным.
  • , если он сопоставлен с 25 байтами, контрольная сумма не будет проверять предыдущие 21 байт.

Что касается последнего вопроса, любого адреса с теми 20 средними байтами, которые генерируются случайным образом, а контрольная сумма и префикс верны, действителен . Он будет иметь нулевое количество биткойнов, доступных при первом проверке (например, https://blockchain.info ), и любые средства, переданные ему, будут получены. Нет прежнего требования.

ответил circulosmeos 13 Jpm1000000pmSat, 13 Jan 2018 21:11:13 +030018 2018, 21:11:13

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132