Всем привет, хотела рассказать не большую историю, однажды мне требовалось создать более 100 кошельков метамаск для прохождения тестнета уже точно не помню какого не в нем даже суть, я написала бота который бы создавал кошельки и сохранял сид в отдельный тхт, а когда пришло время поработать ручками я крайне удивилась что на одном кошельке был баланс 125 зелеными в эфире, я проверила транзакции и оказалось что в данный кошелек транзакция была отправлена не с моих кошельков, вот собственно вопрос возник! Значит кто то ошибся и когда-то отправил эфир на этот кошель, тут то и пришла идея написать скрипт который будет создавать кошельки и проверять баланс и если будет что то на нем то сид фраза с адресом сохранялась в отдельный файл.
Обственно вот скрипт вдруг кто то захочет побаловаться, только нужно на infura.io/ получить свой id для работы
Прошу строго не судить я малоопытная))))
Обственно вот скрипт вдруг кто то захочет побаловаться, только нужно на infura.io/ получить свой id для работы
Прошу строго не судить я малоопытная))))
Python:
import logging
import asyncio
from web3 import Web3, HTTPProvider
from web3.middleware import geth_poa_middleware
from bip_utils import Bip39SeedGenerator
from eth_account import Account
from concurrent.futures import ThreadPoolExecutor
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(levelname)s %(message)s')
# Создаем объект Web3 с помощью HTTPProvider
w3 = Web3(HTTPProvider('https://mainnet.infura.io/v3/сюда вставлять айди'))
# Добавляем middleware для совместимости с сетью Geth POA
w3.middleware_onion.inject(geth_poa_middleware, layer=0)
# Функция для генерации новых кошельков
def generate_wallet():
# Создаем новый кошелек
account = Account.create()
# Получаем адрес кошелька
address = account.address
# Получаем баланс кошелька в Ether
balance = w3.eth.get_balance(address) / 10**18
# Выводим информацию в лог
logging.info(f"Address: {address}, Balance: {balance} ETH")
# Если на кошельке есть баланс, то выводим сид фразу и записываем адрес и сид фразу в файл
if balance > 0:
mnemonic = Bip39SeedGenerator.to_mnemonic(account.key)
logging.info(f"Seed phrase: {mnemonic}")
# Записываем адрес и сид фразу в файл
with open("wallets.txt", "a") as f:
f.write(f"Address: {address}, Seed phrase: {mnemonic}\n")
async def main():
with ThreadPoolExecutor(max_workers=5) as executor:
loop = asyncio.get_event_loop()
while True:
tasks = [
loop.run_in_executor(executor, generate_wallet)
for i in range(5)
]
await asyncio.gather(*tasks)
await asyncio.sleep(5)
if __name__ == '__main__':
asyncio.run(main())
