Все программы для поиска ключей в конечном итоге делают одно и то же. Разница между ними заключается в том, какой из двух миров, описанных в Уроке 1 предыдущего модуля, они атакуют, на каком оборудовании работают и сколько работы уже было проделано для ускорения арифметики. Знание карты помогает избежать потери недель на использование неправильного инструмента.

VanitySearch, разработанный французом Жан-Люком Понсом, появился в 2019 году для невинной задачи: находить адреса, начинающиеся с выбранного префикса, для тех, кто хочет, чтобы адрес начинался с их имени. Это поиск по адресу, работающий на видеокартах, и он стал важным по другой причине — его код на практике продемонстрировал оптимизации, которые все начали использовать: пакетное обращение и использование симметрии, присущей secp256k1, что экономит треть работы.
Kangaroo, от того же автора, — это реализация метода из предыдущего Урока 4. Он решает дискретный логарифм в известном интервале, требует открытого ключа, использует отличительные точки и имеет режим клиент-сервер: несколько машин прыгают и отправляют отличительные точки на центральный сервер, который обнаруживает коллизию. Это инструмент, который победил самые сложные задачи.
Keyhunt, от разработчика, известного как albertobsd, — это швейцарский нож в этой области. Работает на процессоре, и его полезность заключается в количестве режимов: поиск по адресу, поиск по открытому ключу, поиск по хэшу и практическая реализация метода "шаг младенца и шаг гиганта". Это правильный инструмент, когда нужно протестировать миллионы целей одновременно, а не одну.
BitCrack старше и более прямолинеен: это грубая сила по интервалам на видеокарте, ищущая адреса. Он продолжает использоваться, потому что прост в эксплуатации.
Стоит упомянуть деталь, поддерживающую поиск по многим целям одновременно, потому что она изобретательна. Сравнение каждого кандидата с десятью миллионами адресов потребовало бы десяти миллионов сравнений; решение — фильтр Блума, структура, которая отвечает очень быстро и с полезной асимметрией. Когда он говорит, что кандидата нет в списке, он прав с абсолютной уверенностью. Когда говорит, что, возможно, есть, нужно проверить на самом деле — и это происходит так редко, что стоимость исчезает.

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

И правило, которое было озвучено в предыдущем уроке, остается в силе здесь, потому что оно отделяет упражнение от преступления: поиск ключей адресов, которые были опубликованы как вызов, является законным, потому что тот, кто положил туда деньги, сделал это для их поиска. Направление тех же инструментов на чужие кошельки — это другое дело, и это не технический вопрос.
Вы прошли весь курс: от бартерной торговли до white paper, от ключа до подписи, от семени до узла, от кривой до кенгуру. Остался только один шаг — как создается вызов, проверяется и оплачивается на этой платформе. В следующем уроке, последнем.