Генератор private key bitcoin

Адреса Bitcoin. Часть I, теория. Адреса Bitcoin. Часть II, практика.

В предыдущей части статьи мы подробно рассмотрели по каким правилам генерируется Bitcoin адреса , теперь перейдем к практическим занятиям. В этой части мы научимся практическим приемам генерации адресов и закрытых ключей к ним с помощью утилиты Vanitygen и интеграции их в существующий кошелек.

Описанные действия производились под Windows 7 64bit. Первым делом качаем кошелек Bitcoin, лучше всего в .zip версии. Распаковываем, я это сделал в корень диска C :\

Создаем в этой папке папку key, где будем хранить ключи. Настройка ACL на папки на совести пользователя, рекомендую про них не забывать, если это боевой кошелек. В данном случае это был экспериментальный, и настройки прав доступа я не трогал. Создаем файл run.cmd с следующим содержанием:

Запускаем run.cmd, и пока скачиваются блоки, изучим вопрос создания адресов.

Vanitygen — утилита, работающая через командную строку, которая способна генерировать биткоин адреса. Если вам надоели рандомные криптоадреса, которые генерируются биткоин клиентами, вы можете использовать Vanitygen для создания более персонализированных адресов. Можно повысить свою уникальность, когда вы говорите человеку, чтобы он отправил вам биткоины на кошелек, который как-либо ассоциируется с вами, например для сайта BTCsec.com можно сделать адрес, который начинается на 1BTCSEC*. Кроме того, Vanitygen может использоваться для генерации случайных адресов в offline.

Vanitygen принимает в качестве входных данных шаблон или список шаблонов, после чего он подбирает варианты адресов и закрытых ключей к ним. Подбор Vanitygen основан на вероятностном поиске, на который требуется некоторое время. Время зависит от сложности заданного шаблона, скорости вашего компьютера и вашей удачливости. Vanitygen использует ресурсы вашего процессора. А его собрат — oclvanitygen — использует OpenCL-совместимые GPU. Они оба могут быть cобраны из исходников, или скачаны в виде бинарных пакетов, в том числе для Windows.

Скачиваем архив Vanitygen, распаковываем. Я для примера распаковал в корень диска C:

Заходим в папку, создаем файл gen.cmd с следующим содержанием:

Подробную расшифровку ключей и FAQ по Vanitygen можно найти ниже, пока разберем только этот пример: oclvanitygen.exe — Используем версию генератора для OpenCL устройств -p 0 -d 1 — Указание устройства, на котором производится расчет: платформа 0 устройство 1 -o result.txt — Сохранить результаты работы в файл result.txt 1BTCSEC — начало искомого адреса.

Стоит сразу отметить, что в искомой строке нельзя использовать 0 (ноль), O (большое o), I (большое i), l (маленькое L), и он должен начинаться с 1(единицы).

Запускаем gen.cmd:

vanitygen

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

Отлично, у нас есть адрес и приватный ключ! Чтобы было интереснее продолжать, я отправил 0,01 BTC на этот адрес. Теперь задача импортировать этот адрес с ключом в кошелек и убедиться в его работоспособности.

Предположим, что клиент все блоки докачал, а кошелек зашифрован, пароль «yourpassphrase». Открываем клиент, в верхнем меню нажимаем «Help», в нем «Debug window» и переходим на вкладку «Console». В нижнюю строку вводим:

Эта команда разблокирует кошелек на указанное количество секунд, в данном примере — на 2 минуты.

Эта команда непосредственно импортирует наш свежеполученный ключ в кошелек. Стоит обратить внимание, что может показаться, что клиент завис. На самом деле это не так, он проверяет базу, и это может занять довольно длительное время.

import bitcoin key

Если все прошло успешно, и все блоки скачаны, то на вкладке транзакций отобразится наша транзакция поступления 0,01 BTC, на которую, кстати, увеличится и итоговый баланс кошелька.

bitcoin private key ok

Для окончательной проверки, что мы можем управлять средствами на этом адресе, отправим эти же 0,01 BTC на другой адрес, для примера я отправил их на адрес для добровольных пожертвований на развитие BTCsec.com — 1BQ9qza7fn9snSCyJQB3ZcN46biBtkt4ee

bitcoin send ok

Как видно, транзакция прошла, эксперимент можно считать успешно завершенным.

FAQ по Vanitygen:

  • Какие типы шаблонов адреса можно давать vanitygen для соответствующего подбора?

Vanitygen может делать подборку для простых префиксов и регулярных выражений. Префиксом является строчка, с которой начинается адрес. Когда подбирается адрес с установленным префиксом, Vanitygen проверяет, что такой префикс в принципе возможен и выдаст оценку сложности такого подбора. По умолчанию, префикс чувствителен к регистру, однако можно использовать ключик —i для поиска без учета регистра. Регулярные выражения представляют собой фильтрующие шаблоны. Они очень мощны и могут использоваться для подбора соответствующих префиксов, суффиксов, ключей различной длины и подбора последовательностей символов, и т.д. Чтобы использовать регулярные выражения, укажите ключ —r. К сожалению, подбор по регулярным выражениям очень медленный и сложность сильно влияет на скорость поиска ключей. Поэтому регулярные выражения следует использовать только если это действительно требуется. Регулярные выражения не будут эффективно отрабатывать с oclvanitygen, так как на настоящий момент oclvanitygen не может работать с регулярными выражениями на GPU.

  • Как я могу указать список шаблонов?

Vanitygen может искать по списку шаблонов из командной строки или взятых из файла, используя ключ —f. Файл источник должен быть сформирован так, чтобы каждый шаблон шел с новой строки. Найдя соответствие заданному шаблону, vanitygen остановит поиск других соответствий данному шаблону. Для поиска нескольких соответствий используйте ключ —k.

  • Могу ли я использовать Vanitygen для поиска чьего-то еще закрытого ключа зная его bitcoin адрес?

Конечно! Фактически, Vanitygen — это приложение для подбора ключей. Однако, чтобы найти полностью соответствующий bitcoin адрес, даже используя все компьютертные мощности на планете, вам понадобится неприемлемо большое количество времени.

  • Как я могу собрать vanitygen из исходников?

Все это указано в файле INSTALL в дистрибутиве исходника.

  • Какую скорость поиска ключей я могу ожидать от устройства X?

Некоторые приблизительные оценки:

Dual-core desktop CPUs, 32-bit mode: 100-250 тыс. ключей/сек. Dual-core desktop CPUs, 64-bit mode: 150-450 тыс. ключей/сек Quad-core desktop CPUs, 32-bit mode: 200-400 тыс. ключей/сек Quad-core desktop CPUs, 64-bit mode: 300-750 тыс. ключей/сек NVIDIA GT200 GPUs: до 6.5 млн. ключей/сек AMD Radeon 58XX, 68XX GPUs: до 23.5 млн. ключей/сек. AMD Radeon 69XX GPUs: до 19.5 млн. ключей/сек.

vanitygen выполняет множество крупных целочисленных арифметических операций, и запуск утилиты на 64 битной системе дает существенное увеличение в скорости поиска ключей, приблизительно 50% увеличения по сравнению с 32-х битной. Для 64-х битной версии Windows, при условии, что используется не GPU, не забудьте использовать vanitygen64.exe.

Radeon 58XX превосходит Radeon 69XX. Oclvanitygen использует умножение целых чисел, а Radeon 58XX производит умножение параллельно с другими оперциями. За одинаковое время Radeon 5830 превзойдет Radeon 6970.

В пользовательских сборках производительность CPU будет меньше ожидаемой, если OpenSSL библиотеки старой версии (<1.0.0d) либо не собирались с включённой оптимизацией.

  • Как защитить адрес, генерируемый данной программой? Может ли кто-то разгадать мой закрытый ключ и украсть мои BTC?

Vanitygen использует OpenSSL для генерации случайных чисел. Это такой же RNG (генератор случайных чисел), как и используемый в bitcoin и большинстве серверов, использующих HTTPS. Они рассматриваются как хорошо изученные. В Linux RNG берутся из /dev/urandom. Отгадывание приватного ключа для адреса подобранного vanitygen не проще, чем отгадывание приватного ключа, сгенерированного самим приложением bitcoin. Vanitygen использует генератор случайных чисел для создания закрытого ключа и адресов, сравнивая полученные адреса с исходным шаблоном. Он обновляет закрытый ключ после 10,000,000 неудачных попыток подбора (100M для oclvanitygen), или пока не найдется соответствие

  • Какие опции можно задавать ключами Vanitygen?
  • Можно ли совместно искать адреса?

Да, можно. Для этого существует vanitypool.

Какая вероятность нахождения нужного адреса?

Возьмем вероятность нахождения 50% и посчитаем время, которое потребуется для этого.

Тогда:

Скорость генерации возьмем к примеру 2*107 ключей/с . Что равно примерно 6,3*1014 ключей в год.

= 1,6*1033 лет.

Источник

Источник