cpuminer-multi: Mine CryptoNight com Baixo Consumo de CPU
TL;DR
- O que é: Minerador multi-threaded para CPU, fork melhorado pelo @CanalQb com foco em baixo consumo de hardware e estabilidade.
- O que minera: Algoritmo CryptoNight (Monero/XMR e derivadas) — não minera Bitcoin diretamente.
- O que muda: Prioridade nice 19, throttle ajustável, affinity por thread, 2 MiB de RAM a menos por thread, Docker otimizado e documentação em português.
Substitua o ID DUDla8aBy8M pelo vídeo oficial do @CanalQb
sensors (Linux) ou HWMonitor (Windows). Nunca ultrapasse 80°C por longos períodos. Use --throttle para reduzir carga em desktops.
O que faz o cpuminer-multi ser diferente de outros mineradores?
A maioria dos mineradores para CPU foi escrita para aproveitar ao máximo o hardware, muitas vezes deixando a máquina inutilizável durante a mineração. O cpuminer-multi do @CanalQb resolve isso com três mecanismos:
- --priority (nice 19): as threads rodam com a menor prioridade do sistema. O sistema operacional só entrega CPU ao minerador quando nenhum outro processo precisa dela.
- --throttle (0-100): insere uma pausa (em milissegundos) entre ciclos de hash. Um throttle de 10 já reduz o consumo de CPU em até 30% sem derrubar o hashrate na mesma proporção.
- --no-affinity: desliga a fixação de threads a núcleos específicos. Em notebooks com thermal throttling, isso pode evitar superaquecimento.
Antes, o minerador tentava elevar a própria prioridade com setpriority(-14) — exigindo root e deixando o sistema lento. Agora o padrão é nice 19, seguro para rodar sem privilégios.
Quais moedas posso minerar com CryptoNight?
CryptoNight foi o algoritmo original do Monero, projetado para ser resistente a ASICs — ou seja, feito para rodar em CPUs e GPUs comuns. Embora o Monero tenha migrado para RandomX, muitas moedas menores e testnets ainda usam variantes do CryptoNight. O cpuminer-multi conecta-se a qualquer pool que aceite o protocolo stratum (tcp://pool:port).
Importante: Bitcoin usa SHA-256d, que exige ASICs. Este minerador não minera BTC. Para Bitcoin, você precisa de hardware dedicado (Antminer, Whatsminer etc.).
| Algoritmo | Moedas | Minerador recomendado |
|---|---|---|
| CryptoNight (v0/v1/v2) | XMR, AEON, derivadas | cpuminer-multi (este) |
| RandomX | Monero (XMR) atual | xmrig |
| SHA-256d | Bitcoin (BTC), Bitcoin Cash (BCH) | ASICs (Antminer etc.) |
| Ethash / Etchash | Ethereum Classic (ETC), ETHW | GPU (Nvidia/AMD) |
Tokens ERC-20 (USDT, LINK) e BEP-20 (CAKE, BNB) não são minerados — são emitidos por contratos inteligentes. Você os obtém comprando ou sendo recompensado em DeFi.
Como compilar e rodar no Windows, Linux ou Docker?
Linux (Ubuntu/Debian):
sudo apt update && sudo apt install -y build-essential autoconf libtool libcurl4-openssl-dev libssl-dev libjansson-dev automake git
# Clonar e compilar
git clone https://github.com/canalqb/cpuminer-multi.git
cd cpuminer-multi
./autogen.sh && ./configure CFLAGS="-O2 -march=native" && make -j$(nproc)
# Rodar com CryptoNight
./cpuminer -a cryptonight -o stratum+tcp://pool.minexmr.com:4444 -u SEU_WALLET -p x --priority=19 --throttle=5
Docker:
docker run --rm cpuminer-multi --help
Windows (MSYS2): instale MSYS2, depois pacman -S mingw-w64-x86_64-{gcc,make,autoconf,libtool,curl,openssl,jansson} e siga o mesmo fluxo ./autogen.sh && ./configure && make.
Para desempenho máximo, use CFLAGS="-O2 -march=native" no configure. O Dockerfile aceita ARG MARCH=native para ajustar a arquitetura.
Quais bugs foram corrigidos nesta versão?
| # | Problema | Correção |
|---|---|---|
| 1 | persistentctxs[i] nunca era atribuído — contexto não alocado, munmap(NULL) no free |
Array global persistentctxs[] + free_cryptonight_ctxs() com atribuição persistentctxs[thr_id] |
| 2 | Opção -a era ignorada; qualquer algoritmo era aceito sem validação |
-a agora só aceita cryptonight; erro em outros valores |
| 3 | rpc2_id copiado com sprintf sem limite de tamanho |
Substituído por strncpy(rpc2_id, ...) com limite |
| 4 | Divisão por zero em rpc2_job_decode e share_result quando thr_times[i] == 0 |
Guardas if (thr_times[i] > 0) antes de dividir |
| 5 | setpriority(-14) exigia root e deixava o sistema lento |
opt_priority=19 (nice alto) + opção --priority |
| 6 | sources.list desatualizado (Debian stretch) |
Atualizado para Ubuntu Jammy (22.04) |
Perguntas Frequentes
O cpuminer-multi é um minerador de criptomoedas baseado em CPU, originalmente desenvolvido por tpruvot e adaptado pelo @CanalQb para oferecer mais estabilidade, menor consumo de hardware e documentação em português. Ele implementa o algoritmo CryptoNight, que foi projetado para ser resistente a ASICs — ou seja, permite que CPUs comuns (Intel, AMD) participem da mineração de moedas como Monero (XMR) e suas derivadas. Diferente de mineradores genéricos, esta versão inclui controles finos de prioridade do processo (nice 19), throttle para reduzir uso de CPU em desktops e fixação de threads a núcleos específicos (affinity). O projeto é open source sob licença GPLv2 e pode ser compilado em Linux, Windows (via MSYS2) e Docker. O foco principal é educacional: demonstrar na prática como a mineração em CPU funciona, os desafios de concorrência e memória, e como otimizar o aproveitamento de hardware sem comprometer o uso normal do computador.
O CryptoNight é a família de algoritmos de proof-of-work que foi originalmente usada pelo Monero (XMR) antes da migração para RandomX em 2019. Apesar dessa transição, várias moedas menores e testnets continuam usando variantes do CryptoNight, como Aeon (AEON), Wownero (WOW) e algumas moedas de nicho focadas em privacidade. Além disso, o cpuminer-multi pode ser usado em redes de teste ou moedas baseadas em forks do Monero que mantiveram o CryptoNight como algoritmo. O minerador se conecta a qualquer pool que aceite o protocolo stratum (formato tcp://pool:porta) e negocia automaticamente a variante do algoritmo. É importante verificar junto à pool qual variante do CryptoNight está sendo usada (v0, v1, v2) para garantir compatibilidade. Moedas como Bitcoin (SHA-256d), Ethereum (Ethash) ou tokens ERC-20/BEP-20 não são mineráveis com este software — cada uma exige hardware e algoritmos específicos.
Bitcoin utiliza o algoritmo SHA-256d (dupla aplicação de SHA-256), que é extremamente eficiente em hardware ASIC (Application-Specific Integrated Circuit). Um ASIC moderno como o Antminer S19 faz cerca de 100 trilhões de hashes por segundo (100 TH/s). Um processador Core i9 topo de linha, rodando SHA-256d, entrega aproximadamente 10 a 20 milhões de hashes por segundo (10-20 MH/s) — uma diferença de 10 milhões de vezes. Na prática, minerar Bitcoin com CPU não encontraria um bloco sequer em milhares de anos. O cpuminer-multi implementa exclusivamente o algoritmo CryptoNight, que foi criado exatamente para ser resistente a ASICs, nivelando o campo entre CPUs, GPUs e hardware especializado. Por isso, Bitcoin está fora do escopo deste projeto. Para minerar Bitcoin, é necessário investir em hardware ASIC e usar software como o Braiins OS ou o firmware de fábrica do próprio equipamento. O cpuminer-multi é uma ferramenta educacional e prática para moedas baseadas em CryptoNight, não para a rede Bitcoin.
O cpuminer-multi oferece três mecanismos principais para controle de consumo. O primeiro é a opção --priority, que define a prioridade das threads do minerador no sistema operacional. O valor padrão é 19 (a menor prioridade possível no Linux), o que significa que o minerador só recebe tempo de CPU quando nenhum outro processo precisa. Em sistemas Unix, isso equivale a rodar com nice 19. O segundo mecanismo é o --throttle, que aceita um valor em milissegundos (0 a 100). Cada thread, após calcular um hash, dorme por esse período. Um throttle de 10 ms reduz o consumo de CPU em cerca de 30% com impacto pequeno no hashrate. O terceiro é --no-affinity, que desliga a fixação de threads a núcleos específicos. Em notebooks com thermal throttling, isso permite que o sistema operacional distribua as threads de forma mais dinâmica, evitando picos de temperatura. Para uso em desktop durante o trabalho, recomenda-se --priority=19 --throttle=10. Para servidores dedicados, --priority=10 --throttle=0 oferece bom equilíbrio entre desempenho e impacto no sistema.
Hashrate baixo pode ter várias causas. A primeira e mais comum é o thermal throttling: quando a CPU superaquece, ela reduz a frequência para se proteger. Monitore a temperatura com sensors (Linux) ou HWMonitor (Windows) e mantenha abaixo de 80°C. A segunda causa é concorrência com outros processos: feche navegadores pesados, IDEs e aplicativos em segundo plano. Use --priority=19 para garantir que o minerador não atrapalhe, mas lembre-se de que prioridade baixa significa menos tempo de CPU. A terceira causa é compilação sem otimizações: sempre compile com CFLAGS="-O2 -march=native" para ativar instruções AES-NI e outras otimizações da sua CPU. A quarta causa é throttle muito alto: se você definiu --throttle acima de 20, o hashrate cai significativamente. Para testes de desempenho, use --throttle=0. Por fim, verifique se a pool está respondendo: algumas pools variam a dificuldade dinamicamente, o que pode dar a impressão de hashrate baixo nas primeiras horas. Execute o minerador por pelo menos 30 minutos antes de avaliar a média.
Sim, desde que você tome alguns cuidados. O cpuminer-multi é um software de código aberto (GPLv2), auditável e sem componentes ocultos. O código não contém keyloggers, miners ocultos ou qualquer funcionalidade maliciosa — você mesmo compila o binário a partir do código-fonte. Os riscos reais são elétricos e térmicos: mineração em CPU aumenta o consumo de energia e a temperatura do processador. Em um desktop com bom resfriamento (cooler adequado, pasta térmica em dia), rodar o minerador com --priority=19 --throttle=10 é seguro 24/7. Em notebooks, o risco é maior devido ao resfriamento limitado — recomenda-se monitorar a temperatura a cada 30 minutos na primeira hora. O maior risco indireto é financeiro: você pode gastar mais em eletricidade do que ganha em moedas, especialmente se a cotação estiver baixa. Use uma calculadora de lucratividade (como whattomine.com) antes de começar. O @CanalQb recomenda tratar a mineração em CPU como aprendizado, não como fonte de renda. Para uso educacional, configure o minerador para enviar os hashes para uma pool de teste ou para a rede de testes (testnet) da moeda escolhida.
Para iniciar o minerador automaticamente ao ligar o computador, você pode configurá-lo como serviço no Linux ou como tarefa agendada no Windows. No Linux com systemd, crie o arquivo /etc/systemd/system/cpuminer.service com o conteúdo: [Unit] Description=cpuminer-multi CryptoNight Miner After=network.target [Service] ExecStart=/caminho/para/cpuminer -a cryptonight -o stratum+tcp://pool:port -u WALLET -p x --priority=19 --throttle=5 Restart=always User=seu_usuario [Install] WantedBy=multi-user.target. Depois execute sudo systemctl enable --now cpuminer.service. No Windows, use o Agendador de Tarefas: crie uma tarefa básica com gatilho "Ao iniciar o computador", ação "Iniciar um programa" apontando para o cpuminer.exe com os argumentos desejados. Marque "Executar mesmo quando o usuário não estiver logado" e "Executar com maiores privilégios" se necessário. Lembre-se de que o minerador precisa de conexão com a internet, então defina uma dependência de rede se possível. Em ambos os casos, o arquivo de configuração JSON (example-cfg.json) pode ser usado com a opção --config=arquivo.json para evitar expor a wallet na linha de comando.