Какое число использует модуль random (python) в качестве сида?

Я слышал, что это системное время, но я не знаю в чём оно. В секундах, в миллисекундах или в чём-то другом? Зачем мне это? Я хочу сделать программу, которая будет генерировать адреса биткоин кошельков, но я не хочу чтобы она их перебирала в "слепую". Я хочу реализовать алгоритм, которым (возможно) генерирует адреса какая-то другая чужая программа. Если учесть, что в компьютерах нет ничего случайного, то и генерация адресов может быть не случайной. Код прототипа программы:

import Words
import random
import aiohttp
import asyncio
import datetime
import bip32utils
from mnemonic import Mnemonic


flag = True
mnemo = Mnemonic()
seconds = None


def get_words():
    global seconds
    random.seed(seconds)
    word_list = [random.choice(Words.WORD_LIST) for _ in range(12)]
    phrase = " ".join(word_list)
    seconds -= 1
    return phrase


def get_seed(words: str):
    res = mnemo.to_seed(words)
    return res


async def addr(path: str = None):
    global seconds
    List = []
    if path is None:
        for _ in range(5):
            print("-----------------------------------------------------------------------------")
            async with aiohttp.ClientSession() as session:
                async with session.get(
                        "https://blockchain.info/unconfirmed-transactions?format=json"
                ) as response:
                    res = await response.json()
            for i in res["txs"]:
                address = i["inputs"][0]["prev_out"]["addr"]
                if address[0] == "1":
                    List.append(address)
                print(address)
            await asyncio.sleep(20)
    else:
        with open(path, "r") as file:
            for s in file.readlines():
                res = s.rstrip(";\n")
                List.append(res)
    List2 = []
    for address in List:
        try:
            async with aiohttp.ClientSession() as session:
                async with session.get(
                        f"https://blockchain.info/address/{address}?format=json"
                ) as response:
                    data = await response.json()
            transactions = data["txs"]
            transaction = min(transactions, key=lambda x: x["time"])
            List2.append(round(transaction["time"]))
            print(f"{address}: {round(transaction['time'])}")
        except Exception as EX:
            print(EX)
            break
    seconds = max(List2)
    print(f"seconds: {seconds}")
    return List


async def balance_check(wallet_address: str):
    async with aiohttp.ClientSession() as session:
        async with session.post(
                "http://blockchain.info/balance?active=" + wallet_address, timeout=0.1
        ) as response:
            res = await response.text()
            res = eval(res)
            return res[wallet_address]["final_balance"]


async def generate(addresses: list):
    global flag
    value = 0
    while flag:
        words = get_words()
        seed = get_seed(words)
        address = bip32utils.BIP32Key.fromEntropy(seed).Address()
        if str(address) in addresses:
            print(
                f"[{datetime.datetime.now()}] words: {words} | seed: {seed.hex()} | address: {address} | "
                f"value: {value}"
            )
            flag = False
        if value % 10 == 0:
            print(f"[{datetime.datetime.now()}] words: {words} | seed: {seed.hex()} | address: {address}")
            value = 0
        value += 1
    return None


async def main():
    addresses = await addr("balance12.txt")
    print(addresses)
    await generate(addresses)
    print("Всё!")


if __name__ == "__main__":
    try:
        asyncio.run(main())
    except Exception as ex:
        print(f"{datetime.datetime.now()} EX: {ex}")
    except KeyboardInterrupt:
        pass


Ответы (0 шт):