CPU-утилита для вычисления публичных ключей на эллиптической кривой secp256k1.
ecloop вычисляет публичные ключи на эллиптической кривой secp256k1 и ищет их hash160, compressed и uncompressed. Написан на C и заточен под CPU: фиксированная 256-битная модульная арифметика, групповое обращение для сложения точек, предвычисленные таблицы для умножения, SHA-256 через SHA extension на ARM и x86 и RIPEMD-160 через SIMD на AVX2 и NEON. Работает на macOS и Linux, а на Windows через WSL.
Он для тех, кому интересно, как такая математика становится быстрой, и для любителей Bitcoin Puzzles. Я сделал его, чтобы разобраться в математике эллиптических кривых и попрактиковаться в низкоуровневом программировании. Поиск Bitcoin Puzzles добавил как реальный use case. Шансы найти приватный ключ от использованного адреса стремятся к нулю, так что перебирать их бессмысленно. Для меня это коллекция трюков, про один из них я написал в посте про RIPEMD-160 на SIMD.
Сборка
git clone https://github.com/vladkens/ecloop.git && cd ecloop
make buildНа macOS сначала может понадобиться xcode-select --install. У некоторых версий компиляторов бывают проблемы со встроенными функциями, которые используются в коде, поэтому проверь сборку:
make add
make mulmake add должен найти 9 ключей, а make mul — 1080. Посмотреть скорость внутренних функций на своей машине:
./ecloop bench