Algoritmos de mineração são as funções que tornam possível a tarefa de mineração de criptomoedas. Existem vários algoritmos, cada um com características próprias adaptadas às criptomoedas que os utilizam.
LOs algoritmos de mineração são os algoritmos encarregados de tornar possível a mineração de criptomoeda. Normalmente, esses algoritmos são funções criptográficas de hash muito complexo e podem ajustar a dificuldade de mineração. Um processo que ajuda a tornar mais ou menos difícil a montagem dos quebra-cabeças que devem ser resolvidos pelos mineiros. Isso faz com que os mineiros realizem um trabalho computacional complexo que, uma vez resolvido, permite que eles acessem uma recompensa por esse trabalho.
Neste artigo vamos mostrar alguns dos algoritmos de mineração mais usados no mundo das criptomoedas, mostrando algumas de suas características e potencialidades.
Algoritmo de mineração: quais são os mais usados?
SHA-256, o algoritmo do Bitcoin
SHA-256 é um algoritmo criptográfico que começou sua história como um sistema de hashing de dados. Basicamente, o que o SHA-256 faz é pegar uma determinada quantidade de informação e resumi-la em um único bloco alfanumérico de 64 caracteres que é gerado deterministicamente. Isso significa que, se você inserir os mesmos dados uma infinidade de vezes, terá a mesma saída todas as vezes.
Isso é vital para proteger a integridade dos dados, pois a menor alteração altera completamente a saída do hash SHA-256. É por esse motivo que ele é amplamente usado na Internet para proteger documentos e outras informações valiosas que você deseja manter intactas. Deve-se notar que o SHA-256 não é um algoritmo de criptografia, mas sim apenas um algoritmo de integridade de dados e a única maneira de verificar é inserir as mesmas informações obtendo o mesmo resultado. Da mesma forma, o processo oposto é praticamente impossível de ser realizado.
O SHA-256 foi projetado pela Agência de Segurança Nacional dos EUA (NSA) e publicado pelo Instituto Nacional de Padrões e Tecnologia (NIST) em 2001 como um padrão de integridade de dados. O sistema pode ser implementado para ser gerado por meio de CPUs, GPUs, FPGAs e ASICs. Portanto, a mineração de Bitcoin, que usa SHA-256, pode ser feita em todas essas mídias sem problemas. Claro, a potência é diferente em cada caso, sendo a menor a que podemos obter em CPUs, passando por FPGAs, GPUs e finalmente ASICs, que são os que atualmente dominam a mineração SHA-256.
Projetos de criptomoeda usando SHA-256 como algoritmo de mineração incluem Bitcoin, Bitcoin Cash, Bitcoin SV, Namecoin (usando mineração mesclada), RSK (mineração mesclada) e Stacks (mineração mesclada). Existem muitos outros projetos que usam SHA-256, mas a maioria deles são projetos sem nenhuma inovação e, portanto, de pouco valor dentro da comunidade.
Ethash, “o algoritmo Ethereum”
Ethash era o algoritmo de mineração Proof of Work da Ethereum. A prova de trabalho no Ethereum foi completamente desativada com o The Merge, e agora o Ethereum é protegido usando a prova de aposta.
Esta foi a função de hash projetada para Ethereum e uma de suas principais características foi o alto requisito de memória graças ao uso de um DAG estendido para mineração. Em princípio, o Ethash foi projetado para impedir a mineração ASIC. No entanto, o custo da memória era tão alto que a mineração Ethash ainda era possível com GPUs, onde as GPUs se beneficiam da grande quantidade de memória que possuem, facilitando a criação do DAG para mineração.
Ethash contava com uma função chamada Keccak ou SHA-3, além de usar versões dos hashes Dagger-Hashimoto, então o algoritmo foi inicialmente conhecido como Dagger-Hashimoto e posteriormente mudou seu nome para Ethash.
Scrypt, a função criptográfica mais completa
Scrypt é uma função de hash/criptografia projetada pelo conhecido desenvolvedor do FreeBSD Colin Percival. O recurso foi projetado para fazer parte de um produto comercial que ele criou chamado tarsnap, cuja finalidade é criar backups remotos de dados para usuários e empresas. Tarsnap é um produto conhecido por sua alta segurança e velocidade, algo no qual o Scrypt desempenha um papel fundamental.
Scrypt é uma função de hash extremamente otimizada projetada para processar grandes quantidades de dados, oferecer garantias criptográficas de integridade e também facilitar a recuperação de dados, se necessário. Sua capacidade de fazer criptografia e descriptografia segura adiciona funcionalidades extras que outras funções de hash não possuem, por isso Scrypt é considerado uma das funções mais completas e seguras que existem, além de ser uma implementação de software livre, graças à sua licença BSD 2. Scrypt é um algoritmo que pode ser minerado usando implementações para CPUs, GPUs, FPGAs e ASICs, sendo este último o mais poderoso.
Entre as principais criptomoedas que utilizam o Scrypt como função de mineração estão Litecoin e Dogecoin.
X11, o algoritmo Dash
O algoritmo de mineração X11 não é na verdade um algoritmo de hash, mas a união de 11 deles que são aplicados serialmente para que o hash final seja obtido no final. A ideia por trás de sua criação é garantir a segurança completa dos hashes resultantes e adicionar uma certa complexidade que impedirá a criação de ASICs que centralizem a mineração.
Vale dizer que a primeira ideia é considerada por muitos especialistas em criptografia, como um completo absurdo. Isso porque muitos algoritmos usados no X11 nem sequer possuem verificação formal de seu funcionamento. Isso prejudica a segurança do sistema ao apostar em um esquema de “segurança por obscuridade”, já que essa obscuridade é a falta de testes criptográficos específicos que garantam que essas funções sejam realmente seguras.
Embora a segunda ideia de oferecer resistência ASIC fosse verdadeira, não demorou muito para os desenvolvedores de ASIC superarem esse desafio e começarem a oferecer ASICs para X11. Em resposta, os desenvolvedores começaram a criar variações no algoritmo X11 que impediam a mineração ASIC até que uma futura atualização de firmware fizesse as máquinas voltarem a funcionar. Desses esforços improdutivos, surgiram derivados como X13 (aplicando 13 funções hash diferentes), X15 e até mesmo X17.
O algoritmo X11 foi projetado por Evan Duffield, o criador do Dash, sendo a primeira criptomoeda a usar o X11 e a única moeda de qualquer valor a usá-lo.
Equihash, um algoritmo baseado em um problema matemático complexo
Equihash foi criado graças ao trabalho de Alex Biryukov e Dmitry Khovratovich, que buscaram criar um algoritmo de hash que oferecesse resistência à mineração ASIC. Para conseguir isso, Biryukov e Khovratovich usaram um curioso problema matemático no qual projetaram sua função hash: o "Problema do Aniversário" e os resultados de seu trabalho foram apresentados em 2016 na Universidade de Luxemburgo. Este projeto foi executado por um grupo chamado CryptoLUX, do qual eles faziam parte no Simpósio sobre Segurança de Redes e Sistemas Distribuídos 2016 em San Diego.
O “Problema do Aniversário” nos diz que:
De um conjunto de 23 pessoas, há 50,7% de chance de que pelo menos duas delas façam aniversário no mesmo dia. Para 57 ou mais pessoas a probabilidade é superior a 99,666%. Estritamente falando, isso não é um paradoxo, pois não é uma contradição lógica.
No entanto, é uma verdade matemática que contradiz a intuição comum. Muitas pessoas pensam que a probabilidade é muito menor e que são necessárias muito mais pessoas para atingir a probabilidade de 50,666%. Se uma sala tivesse 367 pessoas, pelo Princípio da Casa dos Pombos sabemos que haveria pelo menos duas pessoas fazendo aniversário na mesma data, já que um ano normal tem 365 dias e um ano bissexto tem 366.
Com base nisso, a função Equihash leva os computadores a realizar operações com uso intensivo de memória que dificultam a computação paralela. Isso ocorre porque é extremamente caro criar ASICs com grandes quantidades de memória de alta velocidade e alta largura de banda.
Como resultado, Equihash é um dos algoritmos resistentes a ASIC mais problemáticos. De fato, ainda hoje esse algoritmo representa um grande desafio para os ASICs (que finalmente conseguiram superar a resistência), pois não são capazes de atingir altos níveis de soluções para o problema, o que torna esses dispositivos bastante ineficientes em termos energéticos, embora muito mais rápidos do que suas contrapartes de CPU, FPGA e GPU.
A principal moeda que usa esse algoritmo é o Zcash, embora também seja usado pelo Bitcoin Gold e Komodo.
Cryptonight, o primeiro algoritmo para moedas anônimas
O CryptoNight é um algoritmo único por um motivo bem conhecido na comunidade: destina-se a facilitar a criação de moedas anônimas. Na verdade, a pessoa (ou grupo de pessoas) que construiu o algoritmo é um completo mistério, no mesmo nível de Satoshi Nakamoto. Diferentes usuários afirmam que o criador do CryptoNote (o algoritmo de consenso básico do CryptoNight) é o próprio Satoshi Nakamoto agindo sob um novo pseudônimo: Nicholas van Saberhagen. Para adicionar mais misticismo, CryptoNote foi apresentado em 12/12/12, um enigma completo que ninguém conseguiu resolver até hoje.
De qualquer forma, o CryptoNight foi desenvolvido como uma função de hash para o CryptoNote e a primeira moeda a implementá-lo foi o Bytecoin. O algoritmo foi projetado desde o início para fornecer um nível muito alto de privacidade, anonimato e resistência a ASICs e GPUs. Para fornecer um alto nível de segurança e anonimato, uma de suas principais características é sua alta resistência à mineração ASIC e GPU, tornando extremamente difícil o desenvolvimento para esses dispositivos.
No entanto, com o abandono do Bytecoin, Monero, a segunda moeda a implementar a função para sua mineração, assumiu as rédeas do desenvolvimento graças a um grupo de desenvolvimento maior e mais especializado, juntamente com uma comunidade mais ativa. Assim, Monero se tornou o principal desenvolvedor do CryptoNight e o atualizou constantemente para evitar que os ASICs causem estragos contra ele. Apesar do esforço, o CryptoNight perdeu a batalha e entendendo esse ponto, os desenvolvedores do Monero anunciaram que estavam trabalhando em seu sucessor, declarando que o CryptoNight seria abandonado em breve.
Atualmente, o CryptoNight é um algoritmo pouco usado e abandonado. De fato, a maioria dos projetos que o utilizam são abandonados.
RandomX, a evolução do CryptoNight
A comunidade Monero, vendo que havia perdido a batalha no CryptoNight, entendeu a necessidade de desenvolver um novo algoritmo do zero, desta forma, uma nova frente poderia ser aberta para moedas de privacidade.
O resultado de todo esse esforço é RandomX. Este é um algoritmo para moedas de privacidade tão complexo que é teoricamente impossível de implementar em um ASIC. Na verdade, é extremamente complexo implementar de forma eficiente para GPUs e FPGAs.
O RandomX deve seu funcionamento a uma implementação que funciona com base em uma máquina virtual de introspecção computacional. Basicamente, RandomX cria uma máquina virtual com certas características criptográficas que são geradas aleatoriamente. Nesta máquina virtual, é lançada sua função criptográfica para mineração Monero. Tudo isso torna o RandomX exigente. Requer capacidade de memória RAM, instruções de CPU e cache, bem como o cálculo criptográfico necessário para seu funcionamento, que é baseado em AES-256, e também faz uso das funções Blake2b e Argon2d.
A implementação foi tão bem sucedida que quase 3 anos após a criação do algoritmo, ainda não existe uma implementação eficiente para GPUs e FPGAs. E, de fato, a implementação do ASCI ainda é teoricamente impossível. Tudo isso acaba inviabilizando o uso dessas ferramentas, levando todos a minerar com a CPU, objetivo do RandomX.
CuckooCycle, Cuckaroo e Beam, mineração para GPUs e moedas privadas
CuckooCycle é um algoritmo de mineração PoW usado pelo projeto Aeternity. O algoritmo destina-se a ser usado em GPUs, onde é eficiente e resistente à mineração ASIC. O CuckooCycle consome muita memória, exigindo pelo menos 4 GB de RAM da GPU para iniciar o processo de mineração. No momento não há ASIC que opere neste algoritmo e a única moeda de relevância que o usa é Aeternidade.
Por sua vez, Cuckaroo é um algoritmo de mineração usado por moedas de privacidade como Grin y MimbleWimble. O algoritmo destina-se a ser usado em GPUs e resistir à mineração ASIC. No entanto, o algoritmo passou por várias atualizações, pois muitas de suas iterações antigas não são mais consideradas resistentes a ASIC. Isto levou à criação de variantes como Cuckarood29, Cuckatoo31 ou Cuckatoo32, que procuram resolver este problema.
Finalmente, o Beam é o algoritmo de mineração usado pela criptomoeda de privacidade viga. Este algoritmo é um derivado do Equihash e foi projetado para ser usado em GPUs. Em termos de Beam mining, as placas Nvidia apresentam os melhores resultados, embora a diferença com as GPUs AMD seja mínima e a eficiência energética destas últimas seja muito maior.