Программа для проверки баланса биткоина

Коллайдер биткойн кошелька. Который перебирает случайные адреса кошельков Python 3.6 или выше Модули Python. Перечисленные в requirements.txt Минимальные требования к оперативной памяти

$ git clone https://github.com/Isaacdelly/Plutus.git plutus $ cd plutus && pip3 install -r requirements.txt 
$ python3 plutus.py 

Закрытый ключ-это секретный номер. Который позволяет тратить биткоины. Если в кошельке есть биткоины. То закрытый ключ позволит человеку контролировать кошелек и тратить любой баланс кошелька. Таким образом. Эта программа пытается найти закрытые ключи Биткойна. Которые коррелируют с кошельками с положительным балансом.

Однако, поскольку невозможно узнать. Какие секретные ключи управляют кошельками с деньгами. А какие-пустыми кошельками. Мы должны случайным образом искать каждый возможный секретный ключ. Который существует. И надеяться найти тот. Который имеет баланс.

Эта программа по сути является алгоритмом грубой силы. Он непрерывно генерирует случайные закрытые ключи биткойна. Преобразует закрытые ключи в соответствующие адреса кошельков. А затем проверяет баланс адресов. Если кошелек с балансом найден. То закрытый ключ. Открытый ключ и адрес кошелька сохраняются в текстовом файле

plutus.txtна жестком диске пользователя. Конечная цель состоит в том. Чтобы случайным образом найти кошелек с балансом из 2160 возможных существующих кошельков.

Закрытые ключи генерируются случайным образом для создания 32-байтовой шестнадцатеричной строки с использованием криптографически защищенной os.urandom()функции.

Закрытые ключи преобразуются в соответствующие им открытые ключи с помощью модуля starkbank-ecdsaPython. Затем открытые ключи преобразуются в адреса их биткойн-кошельков с помощью binasciihashlibстандартных библиотек и.

В этот проект включена предварительно рассчитанная база данных каждого биткойн-адреса P2PKH с положительным балансом.

Сгенерированный адрес ищется в базе данных. И если выясняется. Что адрес имеет баланс. То закрытый ключ. Открытый ключ и адрес кошелька сохраняются в текстовом файле plutus.txtна жестком диске пользователя.

Эта программа также использует многопроцессорную обработку через multiprocessing.Process()функцию для выполнения параллельных вычислений.

Этой программе требуется несколько 0.0032457721секунд. Чтобы перебить один биткойн-адрес.

Тем не менее. Через multiprocessing.Process()параллельный процесс создается для каждого процессора вашего компьютера.

Таким образом. Эта программа может перебирать адреса со скоростью 0.0032457721 ÷ cpu_count()в несколько секунд.

Автономная база данных используется для поиска баланса сгенерированных биткойн-адресов. Посетите /базу данных для получения информации.

Каждый раз, когда эта программа проверяет баланс сгенерированного адреса. Она будет печатать результат пользователю. Если будет найден пустой кошелек. То адрес кошелька будет напечатан на терминале. Примером может служить:

1Kz2CTvjzkZ3p2BQb5x5DX6GEoHX2jFS45

Однако если кошелек с балансом будет найден. То вся необходимая информация о кошельке будет сохранена в текстовый файл

plutus.txt. Примером может служить:

шестнадцатеричный закрытый ключ: 5A4F3F1CAB44848B2C2C515AE74E9CC487A9982C9DD695810230EA48B1DCEADD
WIF закрытый ключ: 5JW4RCAXDbocFLK9bxqw5cbQwuSn86fpbmz2hht9nvkmth68hjm
открытый ключ: 04393b30bc950f358326062ff28d194a5b28751c1ff2562c02ca4dfb2a864de63280cc140d0d540ea1a5711d1e519c842684f42445c41cb501b7ea00361699c320
адрес: 1kz2ctvjzkz3p2bqb5x5dx6geohx2jfs45

Эта программа использует примерно 2 ГБ оперативной памяти на процессор. Поскольку эта программа использует многопроцессорную обработку. Некоторые данные распределяются между потоками. Что затрудняет точное измерение использования оперативной памяти.

Имгур

Трассировка стека потребления памяти была сделана с помощью mprof для мониторинга этой программы грубой силы 10 000 адресов на 4-х логических процессорных машинах с 8 ГБ оперативной памяти. В результате было создано 4 дочерних процесса. Каждый из которых потреблял 2100 МБ оперативной памяти (~2 ГБ).

Создайте проблему, чтобы я мог добавить больше материала для улучшения