|
| 1 | +1. A Estrutura Lógica (O Fluxo) |
| 2 | +Imagine a biblioteca como uma usina de reciclagem de caos. O fluxo de dados será: |
| 3 | + |
| 4 | +Os Coletores (Harvesters): Agentes independentes que ficam "ouvindo" o mundo. Eles não param. |
| 5 | + |
| 6 | +O Misturador (The Mixer): Onde os dados crus entram. Aqui usamos criptografia para garantir que o dado de entrada altere o estado da piscina de forma irreversível. |
| 7 | + |
| 8 | +A Piscina (The Pool): Um buffer de bytes (ex: 4096 bits) que representa o "estado atual do universo" segundo o computador. |
| 9 | + |
| 10 | +O Extrator (The Tap): A função que o usuário chama. Ela retira entropia da piscina e entrega um número limpo (0.0 a 1.0). |
| 11 | + |
| 12 | +2. Mapeamento das Fontes de Dados (De onde vamos tirar o caos?) |
| 13 | +Para uma Lib Python que se preze, precisamos de fontes que funcionem em qualquer SO (Linux, Windows, Mac). Aqui estão os 4 pilares de dados que usaremos: |
| 14 | + |
| 15 | +A. Fonte Cronológica (O Caos do Tempo) |
| 16 | +Computadores tentam ser precisos, mas em níveis nanoscópicos, eles "tremen". |
| 17 | + |
| 18 | +O Dado: O "Jitter" (tremulação) da execução do código. |
| 19 | + |
| 20 | +Onde pegar: Diferença entre o time.perf_counter_ns() (relógio de alta precisão) antes e depois de uma operação simples (como criar uma lista vazia). |
| 21 | + |
| 22 | +Por que funciona: O sistema operacional interrompe o processo o tempo todo (scheduling). A duração exata de uma operação simples nunca é igual duas vezes seguidas. É o caos do agendador da CPU. |
| 23 | + |
| 24 | +B. Fonte de Rede (O Caos da Infraestrutura) |
| 25 | +A internet é um sistema físico sujeito a temperatura, tráfego e colisões de pacotes. |
| 26 | + |
| 27 | +O Dado: Latência de conexão (Ping). |
| 28 | + |
| 29 | +Onde pegar: Fazer uma requisição HEAD leve para um servidor robusto (Google, Cloudflare) e medir o tempo de resposta até a casa dos decimais. |
| 30 | + |
| 31 | +Por que funciona: O tempo que um elétron/fóton leva para viajar quilômetros de fibra ótica varia devido ao congestionamento da rede global. É o "clima" da internet. |
| 32 | + |
| 33 | +C. Fonte de Sistema (O Caos do Hardware) |
| 34 | +O estado interno da máquina muda milhares de vezes por segundo. |
| 35 | + |
| 36 | +O Dado: Estatísticas voláteis do Sistema Operacional. |
| 37 | + |
| 38 | +Onde pegar: |
| 39 | + |
| 40 | +Uso exato de memória RAM livre (em bytes). |
| 41 | + |
| 42 | +Número de processos ativos no momento. |
| 43 | + |
| 44 | +Posição do ponteiro do mouse (se houver interface gráfica). |
| 45 | + |
| 46 | +Tempo desde o último boot (uptime) em milissegundos. |
| 47 | + |
| 48 | +Por que funciona: É impossível prever o número exato de bytes livres na RAM em um dado microssegundo, pois o SO está alocando e desalocando memória constantemente. |
| 49 | + |
| 50 | +D. Fonte Externa (O Caos do Mundo - Opcional/API) |
| 51 | +Conectar a lib a fenômenos naturais reais. |
| 52 | + |
| 53 | +O Dado: Dados ambientais ao vivo. |
| 54 | + |
| 55 | +Onde pegar: APIs públicas. |
| 56 | + |
| 57 | +Sismologia: Última magnitude registrada (USGS). |
| 58 | + |
| 59 | +Cripto: Preço do Bitcoin com 8 casas decimais (o mercado financeiro é um sistema caótico de psicologia humana). |
| 60 | + |
| 61 | +Por que funciona: Traz entropia de fora da caixa do computador. |
| 62 | + |
| 63 | +3. O Mecanismo da "Entropy Pool" (O Coração) |
| 64 | +Não podemos apenas somar esses números. Precisamos de uma Função de Absorção. |
| 65 | + |
| 66 | +A Estratégia de Mistura (Whitening): Cada vez que um dado novo chega (ex: latência de rede = 45ms), não guardamos "45". Nós pegamos o estado atual da piscina + o dado novo e aplicamos um Hash SHA-256. |
| 67 | + |
| 68 | +Fórmula: Novo_Estado = SHA256(Estado_Anterior + Dado_Novo) |
| 69 | + |
| 70 | +Isso garante que cada bit de entrada afete cada bit da piscina. Se a latência mudar de 45ms para 46ms, o resultado final muda completamente (efeito avalanche). |
| 71 | + |
| 72 | +4. O Planejamento da Biblioteca (Modularidade) |
| 73 | +Para disponibilizar no PIP, a estrutura deve ser pensada para que o usuário não precise configurar nada, mas possa configurar tudo se quiser. |
| 74 | + |
| 75 | +Módulo Core (pool): |
| 76 | + |
| 77 | +Gerencia o buffer de bytes. |
| 78 | + |
| 79 | +Contém a função de Hashing. |
| 80 | + |
| 81 | +Contém a proteção contra "esvaziamento" (se tirarmos muita entropia, a piscina bloqueia até coletar mais dados). |
| 82 | + |
| 83 | +Módulo Coletores (harvesters): |
| 84 | + |
| 85 | +Thread de Background: O ideal é que a lib tenha uma opção de rodar uma thread silenciosa que fica alimentando a piscina a cada X segundos com dados de rede/sistema. Assim, quando o usuário pedir um número, a piscina já está cheia. |
| 86 | + |
| 87 | +Módulo Matemático (math): |
| 88 | + |
| 89 | +Converte o Hash (hexadecimal) em: |
| 90 | + |
| 91 | +Float (0.0 - 1.0) -> Probabilidade. |
| 92 | + |
| 93 | +Booleano (True/False) -> Decisão. |
| 94 | + |
| 95 | +Inteiro (Range A-B) -> Seleção. |
| 96 | + |
| 97 | +5. O Diferencial "Místico" |
| 98 | +Para sua lib ter apelo, adicione um método chamado entropy_health(). |
| 99 | + |
| 100 | +Ele retorna uma pontuação de 0 a 100 de quão "caótica" está a piscina no momento. |
| 101 | + |
| 102 | +Se o computador estiver muito ocioso e sem internet, a "saúde" cai. Se estiver rodando muita coisa, a "saúde" sobe. Isso dá uma sensação de "vida" ao código. |
0 commit comments