Частина 2 Баланс гаманця
ЧАСТИНА II — Баланс гаманця
Розділ 1. Перевірка балансу адрес
Уявімо, що після тривалого пошуку ти зібрав значну кількість Bitcoin-адрес. Наступний логічний крок — перевірити їх баланс.
Це потрібно для двох речей:
переконатися, що адреси дійсно використовувались;
зрозуміти, чи залишились на них кошти.
Якщо у тебе є відповідні приватні ключі — задача практично завершена. Якщо ж ні, то хоча б з’являється розуміння, де їх шукати.
- Онлайн-перевірка (найпростіший спосіб)
Перевірити баланс можна через онлайн-сервіси.
Перевірка гаманців:
https://privatekeyfinder.io/wallet-viewer
https://www.walletexplorer.com/wallet/
Перевірка адрес:
1 адреса: https://live.blockcypher.com/
до 50 адрес: https://awebanalysis.com/en/bitcoin-multiple-address-check-balance/
до 350 адрес: https://bitcoindata.science/bitcoin-balance-check
до 5000 адрес: https://cointool.app/batchCheckBalance/btc
Також:
https://www.oklink.com/ru/bitcoin/address/
- Швидка перевірка через пошук (лайфхак)
Онлайн-сервіси не завжди зручні, особливо при великій кількості адрес.
Можна використати простий підхід через пошук у файлах.
Підготовка:
Створи файл strings.txt — список адрес.
Підготуй папку з базою адрес (наприклад: 1000.txt, 10000.txt, 100000.txt).
Команда:
findstr /i /n /g:strings.txt 1*.* >results.txt
Результат — знайдені адреси з балансом у файлі results.txt.
Швидший варіант (ripgrep):
ripgrep -f mylist.txt blockchair_bitcoin_addresses_and_balance_LATEST.tsv
Це значно швидше при великих об’ємах даних.
- Оффлайн-бази даних
Рекомендується використовувати актуальні дампи адрес:
http://addresses.loyce.club/
(файл: blockchair_bitcoin_addresses_and_balance_DATE.tsv.gz)
- Чому краще працювати оффлайн
Хоча перевірка онлайн здається безпечною, є нюанси:
пароль може бути слабким або відсутнім;
онлайн-сервіси обмежують кількість запитів;
можливі блокування або зниження швидкості;
ти “світиш” свої адреси.
Оффлайн-скрипти:
працюють значно швидше;
не мають обмежень;
повністю автономні.
На практиці — мільйони адрес перевіряються за хвилини.
- Робота з wallet.dat
Bitcoin-гаманці шифрують приватні ключі, але публічні залишаються відкритими.
Їх можна витягнути.
Дамп wallet.dat:
db_verify wallet.bak
db_dump.exe -f wallet.txt wallet.dat
(папка:
C:\Program Files\Oracle\Berkeley DB 12cR1 6.2.38\bin)
Пошук адрес у тексті
У Notepad++:
76a914.{40}88ac
Далі:
видалити 76a914 і 88ac
конвертувати HEX → Base58
- Перевірка через Python-скрипти
Мій підхід:
Потрібно:
wallet_compare.py
база:
blockchair_bitcoin_addresses_and_balance_LATEST.tsv
файл адрес:
Провірити_Адреса.txt
Команда:
C:\Users\Admin\AppData\Local\Programs\Python\Python39\python.exe wallet_compare.py -f1 blockchair_bitcoin_addresses_and_balance_LATEST.tsv -f2 Провірити_Адреса.txt
Результат:
час: 2–3 хвилини
основна затримка — завантаження бази
Є також версія з фільтром Блума:
швидша
але можливі false positive
- Робота з pywallet
Рекомендований варіант:
pywallet.py --dumpwallet --datadir= --wallet=wallet.dat
Або:
python pywallet.py --dumpwallet wallet.dat > Walleykeys.txt
Важливо:
працює тільки з Python 2.7
правильний файл ~142 KB
версії від Joric — не підходять
- Альтернативні інструменти
wallet-key-tool-1.4.2.exe
простий у використанні
показує ключі одразу
walletco-master
python pywallet.py --dumpwallet -w wallet.dat > 56565.json
C:\App\python.exe walletco1.py 56565.json --dumpwallet -w wallet.dat
Добре доповнює pywallet.
- Генерація адрес з xpub
Для гаманців типу Electrum:
cat xpub.txt | coinaddress bitcoin 0 -n 1000
Наступний блок:
cat xpub.txt | coinaddress bitcoin 1000 -n 1000
10. Фальшиві гаманці
Схема:
береться пустий гаманець
підставляються адреси з балансом
ставиться пароль 256 символів
Як виявити:
Bitcoin Core → помилка (типу “error 14”)
Онлайн-перевірка не показує всі адреси
- Про небезпечні сервіси
Є сайти, які просять ввести приватний ключ або мнемоніку.
Приклад:
https://privatekeyfinder.io/mnemonic-converter
Це критично небезпечно.
Ніколи не вводь приватні ключі онлайн.
Висновок
Перевірка балансу — це:
або повільний онлайн-процес,
або швидка оффлайн-обробка великих даних.
Найефективніший шлях:
витяг адрес → оффлайн база → швидкий пошук/скрипт
Розділ 3. Фальшиві гаманці та пастки
- Суть проблеми
У процесі пошуку Bitcoin-гаманців рано чи пізно з’являється ситуація, яка виглядає як удача:
гаманець відкривається
в ньому видно адреси
на адресах є баланс
Здається, що залишилось лише отримати доступ.
Але саме тут найчастіше і криється пастка.
- Як створюється фальшивий гаманець
Схема досить проста:
Береться реальний гаманець (часто пустий або з мінімальним балансом)
У нього підставляються чужі адреси з реальним балансом
Встановлюється складний пароль (часто максимально можливий — до 256 символів)
У результаті отримуємо файл, який:
виглядає “цінним”
містить адреси з балансом
але не містить відповідних приватних ключів
- У чому суть обману
Головна ідея — створити ілюзію, що:
“Тут є гроші, їх просто потрібно розблокувати”
Але насправді:
адреси і баланс — справжні
гаманець — підроблений
доступ до коштів — неможливий
- Чому це працює
Цей тип пастки б’є по психології:
людина бачить баланс → виникає азарт
складний пароль → здається, що це “серйозний” гаманець
вкладений час → важко зупинитися
У результаті витрачаються:
години
дні
інколи тижні
на те, що не має рішення в принципі.
- Ознаки фальшивого гаманця
- Неможливість розшифрувати
Навіть при спробах підбору:
жодного результату
або миттєві помилки
У Bitcoin Core це може виглядати як повідомлення про помилку (наприклад, типу error 14).
- Невідповідність адрес
Онлайн-сервіси (наприклад):
WalletExplorer
Bitref
показують лише частину адрес або зовсім іншу структуру гаманця.
- Підозріло “ідеальний” баланс
багато адрес з великим балансом
відсутність історії
дивна структура
- Джерело файлу
Найчастіше такі гаманці розповсюджуються через:
форуми
оголошення типу “куплю/продам гаманець”
випадкові архіви
- Як перевірити гаманець
Перед будь-якими діями:
✔ Витягни адреси локально
(через pywallet, walletco або інші інструменти)
✔ Перевір баланс незалежно
оффлайн база
або кілька різних сервісів
✔ Порівняй структуру
чи відповідають адреси одному гаманцю
чи є логіка у їх появі
- Практичне правило
Якщо адреси і баланс є, а доступу до ключів немає — це не “виклик”, а сигнал зупинитися. - Чого не варто робити
❌ Не витрачати час на “злом”
❌ Не довіряти одному джерелу
❌ Не вводити приватні ключі або seed-фрази на сайтах
Особливо це стосується сервісів, які прямо просять:
“Введіть свій приватний ключ для перевірки”
- Висновок
Фальшиві гаманці — це не рідкість, а закономірність.
Їх задача:
не приховати гроші, а змусити тебе витратити час.
Тому ключове правило:
Спочатку перевірка — потім будь-які дії.
- Місце цього розділу в книзі
Цей розділ логічно використовується як фільтр:
ти вже вмієш знаходити адреси
вмієш перевіряти баланс
тепер вмієш відсівати сміття.
Розділ 4 Блюм фільтр
В інтернеті повно «розумних» сайтів, де пояснюють, що таке фільтр Блюма. Часто це просто переписані одне в одного набори термінів, у яких інколи й професор не відразу розбереться. Якщо хочеш — можеш почитати самостійно, але краще поясню простими словами, як я це розумію.
Для чого потрібен фільтр Блюма?
Це корисний інструмент для офлайн-перевірки знайдених біткоїн-адрес, якщо для тебе важлива швидкість роботи.
При використанні графічної карти можна досягати швидкості в кілька мільйонів перевірок адрес за секунду. Щоправда, для цього потрібне правильне налаштування та спеціальна реалізація фільтра, адаптована під GPU.
Що таке фільтр Блюма?
Простими словами, це своєрідне решето.
Через нього «просіюються» хешовані фрагменти даних, і ті, що відповідають заданим параметрам, проходять далі, а решта відсіюється.
Фільтр Блюма перевіряє не сам факт належності елемента до множини, а дає одну з трьох відповідей:
елемент можливо належить множині;
елемент точно не належить множині.
І саме в цьому його сила.
Фільтр може помилятися в позитивний бік (показати можливий збіг там, де його немає), але ніколи не пропустить те, чого точно немає. Це дозволяє швидко відсіювати величезну кількість сміття й значно полегшує пошук.
Трохи історії
Не всі знають, що ідея, схожа на фільтр Блюма, існувала задовго до появи комп’ютерів.
Поясню «на пальцях».
Колись використовували карткові системи сортування інформації. Кожна картка мала набір отворів по краях. Для пошуку потрібних записів через стос карток протягували металеві стрижні, схожі на в’язальні спиці.
Картки з потрібними вирізами випадали, а непотрібні залишалися.
Фактично це був механічний спосіб фільтрації даних.
Уяви собі картотеку військових.
На кожній картці закодовані параметри:
колір волосся;
зріст;
вік;
спеціальність;
сімейний стан тощо.
Наприклад:
позиція 17 — руде волосся: так → є отвір;
позиція 28 — зріст 165–170 см: ні → отвору немає;
позиція 31 — зріст понад 190 см: так → отвір є.
Кілька рухів спицею — і з тисяч карток відбирається потрібна група людей.
Принцип дуже схожий на сучасний фільтр Блюма.
Сучасні варіації
За десятки років з’явилися вдосконалені версії.
Наприклад:
покращений Bloom Filter;
Cuckoo Filter (зозулин фільтр).
Зозулин фільтр (Cuckoo Filter)
Це більш ефективна за пам’яттю імовірнісна структура даних, яка також перевіряє належність елемента до множини.
Як і фільтр Блюма:
можливі хибнопозитивні результати;
відсутні хибнонегативні.
Тобто відповідь буде або:
«можливо належить»;
«точно не належить».
Але є перевага: зозулин фільтр дозволяє видаляти елементи, чого класичний Bloom Filter не вміє.
Також він часто використовує менше пам’яті.
Технічна частина
Якщо просто створити текстовий файл і назвати його BloomFilter, нічого не вийде.
Файл повинен містити правильну структуру даних, службові значення та потрібний обсяг пам’яті. Тому краще використовувати бібліотеку, яка створить його коректно.
b = BloomFilter(max_elements=1000, error_rate=0.1)
Тут задаються параметри:
max_elements=1000 — планується до 1000 елементів;
error_rate=0.1 — допускається 10% хибнопозитивних результатів.
Встановлення
Спочатку встановлюється бібліотека:
C:\Users\Admin\AppData\Local\Programs\Python\Python39\python.exe setup.py install
Створення фільтра
- Підготовка адрес
Береш адреси біткоїна з балансом, наприклад від 10$.
Це зменшує базу в десятки, а інколи й у сотні разів.
Далі програмно перетворюєш адреси в hash160.
Я використовую:
C:\Users\Admin\AppData\Local\Programs\Python\Python39\python.exe address2_hex160.py > hex160.txt
Важливий нюанс: деякі програми не додають префіксні нулі. Через це при зворотному перетворенні можна отримати некоректний результат, тому перевіряй уважно.
- Створення .blf
Далі формуєш bloom-файл:
hex2blf.exe hash160.txt bloom.blf
У мене файл займає приблизно 2,06 ГБ.
Простий варіант
Файл:
поліпшений_BloomFilter.py
Усі тестові дані вже всередині:
items_to_check = ["apple", "grape", "banana", "kiwi", "melon"]
Запуск:
C:\Users\Admin\AppData\Local\Programs\Python\Python39\python.exe поліпшений_BloomFilter.py
На виході отримуєш два файли:
definite_not.txt — точно немає;
probable.txt — ймовірно є в наборі.
Складніший варіант
Встановлюєш Git:
Git-2.53.0-64-bit.exe
Після цього запускаєш:
C:\Program Files\Git\bin\bash.exe адреса_LoyceV-фильтр_Блума.sh
Скрипт зробить усе автоматично, хоча завантаження адрес може зайняти час.
Практичний варіант
В одну папку кладеш:
wallet_compare15Blum.py
blockchair_bitcoin_addresses_and_balance_LATEST.tsv
Провірити_Адреса.txt
Запуск:
C:\Users\Admin\AppData\Local\Programs\Python\Python39\python.exe wallet_compare15Blum.py -f1 blockchair_bitcoin_addresses_and_balance_LATEST.tsv -f2 Провірити_Адреса.txt
Час виконання — приблизно 48 секунд.
Корисні матеріали
Відео:
https://youtu.be/_Ra_N00ZxLQ
Файли:
Фільтр Блюма — як виглядає
https://drive.google.com/drive/folders/17AfgMnkZIV4NBTk8xh7LZDGKGyASZG9S?usp=drive_link
Інструменти Bloom Filter
https://drive.google.com/file/d/1bzmB26J0scN10cIO-wJM6FceWBg2hV3q/view?usp=drive_link
Усі файли додаються виключно для ознайомлення та практики.
Перед запуском будь-якого стороннього ПЗ рекомендую перевіряти файли власними засобами безпеки та запускати лише те, що розумієш.
Подяки
Окрема подяка авторам open-source інструментів, дослідникам і ентузіастам, які публікують технічні матеріали у відкритому доступі. Більша частина практичних знань приходить не лише з документації, а й через спільноту, експерименти та чужий досвід.
Корисні ресурси та джерела
Під час підготовки матеріалу використовувалися відкриті технічні ресурси, документація та практичні приклади з таких джерел:
Gate Learn — матеріали про Bloom Filter
https://www.gate.com/uk/learn/articles/what-is--bloom-filter-in-blockchain/809
Devopedia — пояснення принципу роботи Bloom Filter
https://devopedia.org/bloom-filter
GitHub repositories з реалізаціями Bloom Filter
https://github.com/jaybaird/python-bloomfilter
GeeksforGeeks — практичні приклади та структури даних
https://www.geeksforgeeks.org/python/bloom-filters-introduction-and-python-implementation/
Brainflayer та суміжні інструменти