Как сгенерировать “красивый” Биткоин-адрес

Наш новый адрес для пожертвований выглядит так: 1cnsde2fSExCaU8qoJZfRoPrLNjAGp72X. Хотите себе такой же красивый? Продолжайте читать, но сначала немного теории:

Биткоин-адрес — это 160-ти битный хеш более длинного публичного ECDSA-ключа. С публичным ключом в паре идет приватный ключ, владение которым позволяет осуществлять переводы (и “утечка” которого, еще раз напоминаем, может привести к краже средств из кошелька).

В свою очередь хеш — это необратимая функция, с ее основными свойствами вы можете ознакомиться здесь (под пунктом “Минимальные основы криптографии”). Вычисляя хеш от какого-либо текста невозможно заранее предсказать результат. Поэтому, чтобы получить “красивый” адрес, придется сгенерировать пару публичных/приватных ключей, вычислить хеш, сравнить его с искомой подстрокой и повторить процесс до достижения нужного результата.

Ищем “козырный” Биткоин-адрес

Процесс поиска красивых Биткоин-адресов давно автоматизирован — мы воспользуемся программой под названием vanitygen. Для наших экспериментов нам понадобится Linux: я продемонстрирую на примере дистрибутива Debian. Впрочем, для Ubuntu отличия минимальны, на Macos X также все работает, а объяснять как это сделать под Windows будет дольше, чем взять USB-флешку, записать на нее Ubuntu и перезагрузиться.

Итак, сначала поставим необходимые пакеты:

$ sudo apt-get install git libpcre3-dev

Теперь заберем проект с гитхаба:

$ git clone https://github.com/samr7/vanitygen.git

Соберем:

$ cd vanitygen; make

И можно начинать эксперименты (посмотреть опции программы можно просто запустив ./vanitygen без параметров). Допустим мы хотим сгенерировать “козырный” Биткоин-адрес, начинающийся с 1BTCyx (единица в начале адреса обязательна), тогда так и пишем:

$ ./vanitygen 1BTCyx

и процесс пошел. Время поиска адреса очень зависит от длины подстроки, которую вы ищите — в нашем примере для моего железа это полчаса. Если вас не волнует регистр букв, можете дать опцию “-i” — это очень ускорит процесс, но есть способ получше.

В комплекте идет OpenCL-версия этой же программы. Если у вас мощная видеокарта, то можно задействовать ее ресурсы и получить ускорение более чем в 10 раз. К сожалению процесс установки драйверов видеокарт под Линукс не тривиален и зависит от производителя/модели вашей видокарты, поэтому здесь мы его опустим (но неплохую инструкцию можно найти здесь).

Находясь в директории vanitygen (узнать это можно при помощи команды pwd), установим заголовочные файлы OpenCL и скомпилируем oclvanitygen:

$ sudo apt-get install opencl-headers; make oclvanitygen

Как и раньше, с опциями командной строки можно ознакомиться просто запустив ./oclvanitygen вообще без аргументов. Снова попробуем заняться поиском:

$ ./oclvanitygen 1BTCyx

Но OpenCL-версия так просто работать отказывается и предлагает выбрать из списка совместимых устройств. Одно из них (скорее всего первое) обязательно центральный процессор — на нем искать медленно, поэтому мы выберем видео-карту. В моем случае это:

  1: [NVIDIA] GeForce GT 650M

Берем номер номер требуемого устройства и передаем в качестве параметра “-d” программе:

$ ./oclvanitygen -d 1 1BTCyx
WARNING: Built with OpenSSL 0.9.8y 5 Feb 2013
WARNING: Use OpenSSL 1.0.0d+ for best performance
Difficulty: 259627881
Pattern: 1BTCyx
Address: 1BTCyxPdP9iBgxj4FPs3KhQ8AB8rN9o1AH
Privkey: 5KY7At1DUPWtmARxaB53L5eU7QVNAaH5jzb6mZiaCCha12hN6U5

Теперь поиск занял что-то около минуты. Не рекомендую никому пользоваться моим результатом: каждый кто знает приватный ключ 5KY7At1DUPWtmARxaB53L5eU7QVNAaH5jzb6mZiaCCha12hN6U5, автоматически является владельцем адреса 1BTCyxPdP9iBgxj4FPs3KhQ8AB8rN9o1AH.

Стоит заметить, что oclvanitygen может работать и одновременно с несколькими видеокартами, опция “-D”. Адреса Namecoin также поддерживаются, а порт для Litecoin можно найти здесь.

В нашем примере мы сгенерировали “красивый” адрес, состоящий из заданных начальных пяти символов. Добавление в поисковый запрос каждого следующего символа увеличивает время поиска в 58 раз. Это связано с тем, что Биткоин-адрес представлен в стандартной кодировке Base58. В этой кодировке специально отсутствуют символы O, 0 (ноль), I (и), l (эль) для того, чтобы их нельзя было спутать. Соответственно, если вы попробуете найти адрес, содержащий эти символы, vanitygen вас об этом честно предупредит.

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

Удачи в поиске красивых адресов!

По теме

  • Шум Шумов

    “Добавление в поисковый запрос каждого следующего символа увеличивает
    время поиска в 58 раз. Это связано с тем, что Биткоин-адрес представлен в
    стандартной кодировке Base58″… Ну и В ЧЁМ же связь заключается? Что за бред?