RandomX: a nova arma do Monero na guerra contra os ASICs

A atualização programada de novembro de 2019 trará uma novidade aguardada com muita expectativa pela comunidade da criptomoeda Monero. A atualização marcará a introdução de um novo algoritmo de mineração, conhecido como RandomX.

Usando um método dinâmico, que é modificado automaticamente a cada execução, o RandomX promete ser um algoritmo extremamente eficiente em processadores comuns (CPUs), tornando viável a mineração em computadores desktop, laptops e, possivelmente, tablets e celulares.

O RandomX é um marco na história do Monero, que foi marcada pela guerra contra os ASICs, os chips superespecializados que acabaram centralizando a mineração do Bitcoin e de muitas outras criptomoedas. Confira nesse artigo um pouco da história da mineração do Bitcoin e do Monero, assim como as vantagens que o RandomX trará para a Monero.

Um computador, um voto

A proposta inicial do Bitcoin era de que todos os usuários (nodos) fossem mineradores na rede, desta forma todos estariam contribuindo de alguma forma para a segurança da rede. Assim como Satoshi Nakamoto descreveu no white paper do Bitcoin, cada computador deveria corresponder a um voto no consenso da rede.

O mecanismo geral de mineração do Bitcoin é o mesmo que o do Monero: o mecanismo de prova-de-trabalho (proof-of-work). Esse mecanismo fornece algumas moedas como recompensa para os mineradores por eles terem realizado cálculos matemáticos. Para obterem lucro, os mineradores precisam ganhar mais dinheiro com as criptomoedas mineradas do que com o dinheiro que eles gastam em energia elétrica. A eficiência de um equipamento de mineração é diretamente proporcional ao número de moedas que ele minera por kWh de energia elétrica consumido.

A especialização do hardware de mineração

No primeiro ano de existência do Bitcoin, todos os usuários usavam computadores comuns para minerar. Os computadores comuns possuem um processador, também conhecido como Unidade Central de Processamento (Central Processing Unit ou CPU).

Cerca de um ano depois, com a valorização inicial do Bitcoin, os mineradores começaram a usar placas de vídeo, que são mais eficientes para realizar o trabalho necessário para a prova-de-trabalho. Essas placas possuem um processador chamado Unidade de Processamento Gráfico (Graphic Processing Unit ou GPU).

A partir de 2013, alguns mineradores amadores resolveram dar um passo além e começaram a criar equipamentos de hardware com chips especializados, cuja única função era minerar o Bitcoin. Esses equipamentos especializados em mineração são chamados de ASICs, sigla do termo em inglês Application Specific Integrated Circuits (Circuitos Integrados de Aplicação Especifica). Eles são customizados e extremamente otimizados para o algoritmo do Bitocin, possuindo um alto custo de produção, pesquisa e desenvolvimento. O primeiro ASIC minerava 50x mais rápido do que os CPUs.

Os ASICs são extremamente eficientes, pois são peças de hardware projetadas e construídas para realizar uma única função: executar determinado algoritmo de mineração de criptomoeda. E o algoritmo que o Bitcoin usa é o SHA256, um algoritmo que já existia antes do próprio Bitcoin, e, por causa disso, foi projetado para ser muito simples de ser processado. Essa simplicidade em ser processado facilitou, e muito, a criação de ASICs para o Bitcoin.

O surgimento dos ASICs modificou completamente o cenário da mineração de criptomoedas. Empresas multimilionárias passaram a desenvolver ASICs muito mais modernos, que hoje chegam a ter uma eficiência milhões de vezes maior do que os CPUs. Progressivamente, os lucros da mineração passaram a ficar cada vez mais nas mãos das grandes empresas mineradoras que possuem ASICs, e cada vez menos nas mãos dos mineradores comuns, que mineravam em casa por hobby ou que possuíam uma pequena fazenda de mineração com GPUs. O resultado disso foi que o uso de CPUs e placas de vídeos (GPU) se tornou inviável na mineração do Bitcoin, que hoje é totalmente dominada por ASICs.

Como poucas empresas e indivíduos possuem ASICs de mineração de Bitcoin, a maior parte do poder computacional da moeda está nas mãos de um pequeno número de pessoas. Toda essa centralização aumenta o risco de um ataque conhecido como “ataque de 51%”, no qual um único minerador consegue atingir mais de 51% do poder computacional da moeda. Com todo esse poder, esse minerador ganha a capacidade de reescrever a história da blockchain. Ele poderá minerar blocos que apagam transações recentes, efetivamente censurando-as. Além disso, ele poderá até mesmo minerar blocos que incluem transações com gastos duplos, que usam novamente uma moeda que foi usada recentemente.

Outro problema é a centralização da produção dos ASICs. Atualmente cerca de 80% dos ASICs do Bitcoin são produzidos por uma única empresa. Além disso, os fabricantes não colocam suas ASICs à venda no mercado logo que elas são desenvolvidas. Eles primeiro mineram por conta própria, até desenvolverem uma ASIC mais eficiente. Ou seja, quando um ASIC chega nas lojas, ele geralmente já está com a tecnologia defasada e provavelmente já foi usado à exaustão pelo fabricante, restando pouco tempo de vida útil.

ASICS da empresa Bitmain

O protocolo CryptoNote e o algoritmo CryptoNight: uma tentativa de barrar os ASICs

A criptomoeda Monero foi lançada em 2014, derivada do protocolo CryptoNote, lançado em 2013. Este protocolo foi projetado como uma resposta às deficiências evidentes que existiam no Bitcoin. Um de seus principais diferencias era o fato de usar o algoritmo CryptoNight, que foi planejado para ser resistente aos ASICs, tornando muito difícil de se criar ASICs para minerar as moedas do protocolo.

Para resistir aos ASICS, o algoritmo CryptoNight exigia uma quantidade muito grande de memória para o processamento. Inicialmente isso priorizava principalmente os CPUs, no entanto, como as placas de vídeo evoluíram com o tempo, e com isso a memória disponível, elas acabaram se tornando mais eficientes que os CPUs na mineração do Monero.

A principal vantagem de se barrar os ASICs é a descentralização do processo de mineração. Hoje a mineração do Bitcoin é centralizada em poucos países que possuem energia elétrica barata, e em poucas empresas que possuem ASICs. Praticamente todos as novas moedas de Bitcoin são geradas nesses países, sendo distribuídas para esse pequeno número de pessoas.

Toda essa especialização no hardware de mineração faz com que seja economicamente inviável para uma pessoa comum participar do processo de mineração, pois ela sempre vai ter prejuízo, pagando mais com a conta de luz do que ela consegue minerar de criptomoeda.

Em contraste, o Monero sempre buscou usar algoritmos de mineração que gerassem uma mineração o mais descentralizada possível. Este ponto é importante pois significa que toda e qualquer pessoa que tenha acesso a um computador ou laptop pode participar do processo de mineração do Monero. Isso é importante para a descentralização da rede, para a resistência a governos tiranos e para uma melhor distribuição das moedas recém-mineradas.

O fim da resistência aos ASICs

A resistência do Monero aos ASICs funcionou muito bem durante 3-4 anos, até que, no final de 2017, os mineradores viram que o hashrate da rede começou a aumentar subitamente de maneira exponencial. Muitos suspeitavam que ASICs haviam sido criados para minerar o Monero especificamente, mas até então não havia uma prova concreta.

A suspeita se confirmou quando a equipe Monero anunciou em março de 2018 que um hard fork de emergência seria realizado em abril de 2018, com um novo algoritmo de mineração. Logo após a atualização ser anunciada para a comunidade, a empresa de mineração Bitmain anunciou o início das vendas de um novo ASIC, o Antminer X3s, que servia exclusivamente para minerar o algoritmo CryptoNight do Monero. Essa foi a confirmação definitiva de que os ASICs realmente existiam e estavam sendo usadas na rede. Foi também a confirmação de que a exigência de uma grande quantidade de memória no chip (a estratégia adotada pela CryptoNight) não era suficiente para barrar o desenvolvimento de ASICs.

O hard fork de emergência foi então realizado em abril de 2018, fazendo com que as Antminer X3 se tornassem completamente inúteis para minerar Monero. A partir do hard fork, as moedas voltaram a ser distribuídas de maneira justa e descentralizada para vários mineradores, e não mais apenas para a Bitmain.

No entanto, no ínicio de 2019 notou-se novamente o surgimento de um aumento exponencial na dificuldade de mineração (veja o gráfico abaixo). Em função disso, a equipe Monero teve que se apressar e adiantou o primeiro hard fork do ano.

A linha preta no gráfico representa a dificuldade de mineração (hashrate) no Monero. No eixo X está a altura do bloco e no eixo Y estão os nonces, que são números arbitrários escolhidos pelos próprios mineradores. O padrão de distribuição dos nonces pode ser usado para se inferir a presença de ASICs na rede, pois os equipamentos são programados para minerar usando sempre os mesmos nonces. Note que os dois aumentos exponenciais que ocorreram na dificuldade de mineração ocorreram simultaneamente a uma mudança drástica no padrão de distribuição dos nonces. No primeiro aumento de dificuldade, houve o surgimento de linhas horizontais espessas e igualmente espaçadas. Já no segundo aumento, houve um aumento isolado em um grupo de nonces com valores mais baixos, localizados na porção inferior do gráfico.

Mudança regular do algoritmo de mineração: uma solução temporária

Como solução temporária para resolver o problema dos ASICs, os desenvolvedores do Monero resolveram realizar mudanças regulares no algoritmo de mineração, como forma de ganhar tempo até que se conseguisse criar uma solução definitiva para o problema.

Após o hard fork de emergência de abril de 2018, foram realizadas pequenas modificações no algoritmo de mineração a cada 6 meses, apenas com o intuito de “quebrar” possíveis ASICs que existissem na rede. Essas atualizações do algoritmo de mineração foram realizadas junto com as atualizações programadas da moeda, que ocorreram nos hard forks de outubro de 2018 e de março de 2019. Essa mudança no algoritmo de mineração pode ser facilmente observada no gráfico histórico do hashrate da rede Monero (veja no gráfico abaixo), no qual é possível observar que a partir de abril de 2018 houve quedas abruptas a cada 6 meses, que representam os hard forks, quando todos os mineradores tiveram que reprogramar seus computadores para usar o novo algoritmo.

A troca regular do algoritmo de mineração, no entanto, não era a solução ideal. Realizar um hard fork introduzindo um novo algoritmo de mineração sempre é uma operação arriscada, que acaba expondo a moeda a riscos de bugs na implementação do código. Além disso, embora essa solução temporária descentralizava a mineração, ela acabava centralizando a tomada de decisões em poucos desenvolvedores do Monero. Algo precisava ser feito para dar um fim definitivo aos ASICs.

Histórico do hashrate da rede Monero. Note o aumento exponencial do hashrate no final de 2017, quando foram introduzidos ASICs na rede. Note as quedas abruptas que ocorrem nos hard forks (a cada 6 meses)

O algoritmo RandomX: uma solução definitiva?

Para solucionar o problema, era necessário criar um algoritmo para o qual os ASICs fossem pouco eficientes. Como os ASICs só podem ser projetados para trabalhar em uma única tarefa, e os CPUs são projetados para realizarem múltiplas tarefas diferentes ao mesmo tempo, a saída foi criar um algoritmo de mineração dinâmico, que gera um programa aleatório em uma máquina virtual cada vez que é executado, dificultando a criação de um circuito específico para minerar o algoritmo.

Projetado por Howard Chu (@hyc_symas), desenvolvedor responsável pela implementação do banco de dados LMDB da blockchain do Monero, o algoritmo RandomX foi planejado para o uso em processadores comuns (CPUs), que são muito mais prevalentes e acessíveis do que as placas de vídeo (GPUs) e as ASICs. A execução do programa gerado pelo algoritmo RandomX é projetada para utilizar o máximo de componentes possíveis do CPU. O novo algoritmo também força o uso da memória física (RAM) do próprio computador (externa ao CPU), pois a sua execução requer no mínimo 2 GB de memória, uma quantia maior do que a encontrada no interior dos CPUs. Por usar muito mais memória RAM do que os algoritmos anteriores do Monero, será mais fácil detectar que o computador está minerando, o que dificultará a vida de hackers que mineram de maneira escondida em computadores de terceiros.

De maneira geral, pode-se dizer que um CPU nada mais é do que um “ASIC” projetado para realizar operações de computação de propósito geral. Como o RandomX foi projetado para ser extremamente eficiente em CPUs, caso alguma empresa quiser criar um ASIC dedicado, ela basicamente terá que criar um processador comum. E esse é um processo que custa muito tempo e dinheiro em pesquisa e desenvolvimento, em uma indústria que tem como concorrentes nomes de peso como a Intel e a AMD.

Por que não usar placas de vídeo?

O lançamento do RandomX revoltou muitos mineradores de Monero que já haviam investido pesado em placas de vídeo potentes. Howard Chu defende que a mineração deve ser realizada em processadores comuns, pois eles são de muito fácil acesso, podendo ser comprados em qualquer loja no varejo, e já estão presentes em muitos computadores, celulares, tablets e outros tipos de dispositivos ao redor do mundo, ao contrário das placas de vídeo, que geralmente são restritas a computadores de jogos e de uso profissional, e das ASICs, que só podem ser comprados da Bitmain.

Em comparação às GPUs das placas de vídeo, também há outras vantagens: as GPUs possuem muita variação dos conjuntos de instruções entre os diferentes fabricantes e muitos drivers são proprietários, com código-fonte fechado. Já nos CPUs os conjuntos de instruções são melhor documentados e existem múltiplos compiladores de código-fonte aberto disponíveis.

Howard Chu, programador e violinista, desenvolveu o banco de dados usado pelo Monero e participou da criação do algoritmo RandomX

Implementação e futuro do RandomX

A transição do algoritmo atual para o RandomX está agendada para a atualização programada (hard fork) de novembro de 2019. Depois de o algoritmo ser desenvolvido de maneira transparente, pública e com código aberto no GitHub, a comunidade realizou um financiamento coletivo no qual foram arrecadados 1.400 XMR para a realização de auditorias de segurança do código por quatro empresas independentes. Todas auditorias foram concluídas com sucesso, sem encontrar falhas críticas na implementação.

No mesmo semestre em que o RandomX foi anunciado, a fabricante de processadores AMD lançou seu novo processador Ryzen 9 3900X, que apesar do alto custo (cerca de R$2.800), rapidamente se tornou o preferido pelos mineradores do Monero por possuir um grande poder de mineração (cerca de 12.000 H/s) com baixo consumo energético.

Ninguém sabe ao certo se o novo algoritmo será suficiente para barrar o desenvolvimento de ASICs para o Monero. Howard Chu acredita que o algoritmo será vantajoso para os CPUs por pelo menos os próximos três a cinco anos. Alguns usuários são mais céticos, e acreditam que um ASIC será desenvolvido poucos meses após o lançamento do algoritmo.

Ainda não há um consenso sobre como o projeto seguirá em relação à guerra contra os ASICs no futuro. Alguns usuários acreditam que o RandomX é a última tentativa do Monero em tentar barrar os ASICs. Caso ela falhe (e um novo ASIC seja desenvolvido), muitos usuários defendem que a moeda deveria adotar um algoritmo amigável para ASICs, como o SHA-3. Outros usuários defendem que o Monero deve continuar pesquisando novos métodos para tentar combater os ASICs.

Embora o resultado final desta batalha contra os ASICs ainda seja incerto, o RandomX já foi uma demonstração de que a equipe Monero persistirá inovando para buscar seus ideais de descentralização, mesmo que isso signifique fazer o contrário do que outras moedas estão fazendo.


Gostou desse artigo? Minerar Monero é um processo que não precisa ser difícil e qualquer pessoa pode participar! Entenda melhor o processo de mineração e veja como os computadores de sua casa podem te ajudar a ganhar dinheiro.