Список всех адресов bitcoin
List all bitcoin addresses with positive balance.
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
This branch is not ahead of the upstream twistys01:master.
No new commits yet. Enjoy your day!
This branch is not behind the upstream twistys01:master.
No new commits to fetch. Enjoy your day!
This branch is even with the upstream and has conflicts that must be resolved. and we weren’t able to determine if it could be merged.
Open a pull request to fetch upstream and review changes or resolve conflicts.
Latest commit
Git stats
Files
Failed to load latest commit information.
readme.md
Dump Bitcoin addresses with positive balance
Simple utility to list all bitcoin addresses with positive balance. It works by analysing the current unspent transaction output set (UTXO), aggregating outputs to same addresses together and write them to csv file.
run pip install -r requirements.txt
or install following packages with pip manualy
To use you will need copy of chainstate database as created by bitcoin core client. I’ve not tried different clients.
To get current addresses with positive balance, let the full node client sync with the network. Stop the bitcoin-core client before running this utility. If you not stop the client, the database might get corrupted.
Then run this program with path to chainstate directory (usualy $HOME/.bitcoin/chainstate).
Following will read from /home/USER/.bitcoin/chainstate , and write result to /home/USER/addresses_with_balance.csv .
- That the output may not be complete as there are some transactions which are not understood by the decoding lib, or that which do not have «address» at all. Such transactions are not processed. Number of them and the total ammount is displayed after the analysis.
- The output csv file only reflects the chainstate leveldb at your disk. So it will always be few blocks behind the network as you need to stop the bitcoin-core client.
Converting to RIPEMD160
Per request, I’m adding script which is able to convert BTC address to RIPEMD160 representation. BTC address must be in fist column, RIPEMD160 is added to csv. Output goes to stdout.
This utility builds on very nice bitcoin_tools lib, which does the UTXO parsing.
If you like this utility, please consider supporting the bitcoin_tools library which does all the heavy lifting.
If this particular functionality made your life easier you can support coffee consumption in BTC 1FxC1mgJkad63beJcECfZMRaFSf4PBLr2f.
About
List all bitcoin addresses with positive balance.
Источник
Адреса 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(единицы).
В процессе работы программа покажет сложность нахождения адреса по указанному шаблону, скорость генерации и вероятностное ожидание. После нахождения ключа окно закроется, а в файле result.txt будет примерно такой результат:
Отлично, у нас есть адрес и приватный ключ! Чтобы было интереснее продолжать, я отправил 0,01 BTC на этот адрес. Теперь задача импортировать этот адрес с ключом в кошелек и убедиться в его работоспособности.
Предположим, что клиент все блоки докачал, а кошелек зашифрован, пароль «yourpassphrase». Открываем клиент, в верхнем меню нажимаем «Help», в нем «Debug window» и переходим на вкладку «Console». В нижнюю строку вводим:
Эта команда разблокирует кошелек на указанное количество секунд, в данном примере — на 2 минуты.
Эта команда непосредственно импортирует наш свежеполученный ключ в кошелек. Стоит обратить внимание, что может показаться, что клиент завис. На самом деле это не так, он проверяет базу, и это может занять довольно длительное время.
Если все прошло успешно, и все блоки скачаны, то на вкладке транзакций отобразится наша транзакция поступления 0,01 BTC, на которую, кстати, увеличится и итоговый баланс кошелька.
Для окончательной проверки, что мы можем управлять средствами на этом адресе, отправим эти же 0,01 BTC на другой адрес, для примера я отправил их на адрес для добровольных пожертвований на развитие BTCsec.com — 1BQ9qza7fn9snSCyJQB3ZcN46biBtkt4ee
Как видно, транзакция прошла, эксперимент можно считать успешно завершенным.
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 библиотеки старой версии ( Как защитить адрес, генерируемый данной программой? Может ли кто-то разгадать мой закрытый ключ и украсть мои BTC?
Vanitygen использует OpenSSL для генерации случайных чисел. Это такой же RNG (генератор случайных чисел), как и используемый в bitcoin и большинстве серверов, использующих HTTPS. Они рассматриваются как хорошо изученные. В Linux RNG берутся из /dev/urandom. Отгадывание приватного ключа для адреса подобранного vanitygen не проще, чем отгадывание приватного ключа, сгенерированного самим приложением bitcoin. Vanitygen использует генератор случайных чисел для создания закрытого ключа и адресов, сравнивая полученные адреса с исходным шаблоном. Он обновляет закрытый ключ после 10,000,000 неудачных попыток подбора (100M для oclvanitygen), или пока не найдется соответствие
Какие опции можно задавать ключами Vanitygen?
Можно ли совместно искать адреса?
Да, можно. Для этого существует vanitypool.
Какая вероятность нахождения нужного адреса?
| — количество вариантов bitcoin адресов; |
| — количество не подходящих нам bitcoin адресов; |
| — вероятность не найти подходящий нам адрес; |
| — вероятность не найти подходящий нам адрес за х попыток; |
| — вероятность, что за х попыток требуемый адрес будет найден; |
| V — скорость поиска (ключей в секунду) T – время поиска. |
Возьмем вероятность нахождения 50% и посчитаем время, которое потребуется для этого.
Скорость генерации возьмем к примеру 2*10 7 ключей/с . Что равно примерно 6,3*10 14 ключей в год.
= 1,6*10 33 лет.
Источник
Какие форматы бывают у биткоин-адресов?
Что такое биткоин-адрес в формате legacy?
Legacy-адрес — это стандартный для сети биткоина адрес, предложенный Сатоши Накамото. Иначе это формат называют P2PKH (Pay To Public Key Hash), поскольку он требует от получателя подпись, вычисленную из приватного ключа, и публичный ключ. Скрипт транзакции выхода с помощью криптографических функций сверяет их с хешем публичного ключа — и в случае совпадения позволяет расходовать средства. Вероятность того, что система примет некорректно введенный адрес составляет 1 в 232 степени, то есть один случай из 4,29 млрд.Legacy-адрес можно узнать по префиксу 1 (и m или n в тестовой сети). К основным минусам такого адреса относятся чувствительность к регистру при вводе данных, более высокие комиссии за операции, низкая скорость двойного хеширования контрольной суммы, больший вес в QR-кодах и неудобство записи на мобильном устройстве или на бумаге.
Из каких частей состоит биткоин-адрес в формате legacy?
Legacy-адреса уникальны, обычно состоят из 26-35 символов и представляют собой 160-битные хэши открытого ключа ECDSA ключевой пары. С появлением SegWit-адресов их стали называть старыми, однако изначально они были достаточно эффективным средством представления locking scripts в более удобном для пользователей виде и уменьшения рисков отправки средств на некорректный адрес.Стандартный биткоин-адрес состоит из таких частей:
- префикс;
- сгенерированный в результате применения к приватному ключу алгоритмов SHA256 и RIPEMD публичный ключ;
- контрольная сумма.
Почему в биткоин-адресах бывает разное количество знаков?
Как зашифрованы части legacy-адреса?
Все части биткоин-адреса в формате legacy зашифрованы с защитой от опечаток по системе кодирования Base58Check. В основе кода лежит латинский алфавит. Вы никогда не увидите в таком биткоин-адресе символы, которые легко спутать между собой (знаки плюс и минус, косая черта, ноль, прописные буквы “o” и “i”, строчная “L”). Согласно системе Base58Check в них применяются только следующие 58 символов:
Что такое биткоин-адрес в формате P2SH?
P2SH-адреса (Pay to script hash) появились в предложении по улучшению биткоина BIP-0016 в январе 2012 года благодаря главному научному сотруднику Bitcoin Foundation Гэвину Андресену. Они имеют ту же структуру, что и legacy-адреса, но начинаются с цифры 3.Такие адреса предполагают, что при переводе средств получатель должен иметь скрипт, подходящий к скрипту хеша. Эта особенность позволяет снижать комиссию за перевод биткоинов отправителем, перекладывать комиссионные затраты на получателя и создавать адреса с мультиподписью.
Технология P2SH может разрешить использование средств любым пользователем или, наоборот, запретить для всех. Важно помнить, что биткоин-адреса в формате P2SH поддерживают SegWit, но не являются его нативным решением. Не поддерживающие SegWit криптокошельки могут проводить SegWit-транзакции благодаря механизмам P2WPKH-в-P2SH и P2WSH-в-P2SH.
Что такое биткоин-адрес в формате SegWit?
- легко читаемой человеком части,
- разделителя (1),
- данных и контрольной суммы.
Если при введении адреса было допущено до четырех ошибок, контрольная сумма, входящая в Bech32-адрес, не сойдется. Благодаря примененному в решении коду Боуза-Чоудхури -Хоквингема (БЧХ-коду) ошибки будут автоматически исправлены.
При записи Bech32-адрес применяются следующие 32 символа:
Какие плюсы и минусы использования Bech32-адресов?
C новыми адресами QR-коды стали меньше, а защита от ошибки выше. Кроме того, использование биткоин-адресов в формате Bech32 на сегодня для пользователей более выгодно, ведь комиссия за отправку средств с них ниже, а скорость обработки выше. Главный минус Bech32-адресов — их поддерживают не все криптокошельки и сервисы.Среди первых поддержку таких адресов добавили аппаратные криптокошельки Ledger Nano S, TREZOR и Digital Bitbox, десктоп-криптокошельки Electrum и Armory, мобильные криптокошельки Edge, GreenAddress (для iOS- и Android-устройств), а также Samourai Wallet, Wasabi Wallet, GreenBits и Electrum (для Android-устройств).
Можно ли переводить биткоины с legacy-адреса на SegWit-адрес?
Активация SegWit в сети биткоина была софтфорком — это значит, что новая и предыдущая версии сохранили совместимость. То есть вы можете без проблем переводить средства с legacy-адреса на SegWit-адреса. На уровне блокчейна проблем с разницей в форматах адресов не существует.На практике сложности возникают, если пользователь хочет перевести средства со своего legacy-адреса, например, созданного на криптобирже, на bc1-адрес, а торговая площадка технически еще не внедрила поддержку нового формата адресов. В таком случае стоит использовать пусть и менее эффективный, чем bc1-, но все же более продвинутый, чем legacy- P2SH-адрес.
В обратном направлении, с bc1-адреса на legacy-адрес, средства должны поступить без проблем.
Какие обозреватели блоков отслеживают bc1-адреса?
Источник