Mineração de moedas virtuais: vale a pena?

Introdução

Quando publiquei a foto da rig de mineração alguns dias atrás algumas pessoas me perguntaram como foi feito e se compensava. Este artigo tem como objetivo discutir se mineração vale a pena. Para isso se explica o processo de mineração empregado em blockchains como Bitcoin e Ethereum. Embora pareça um tanto abstrato demais para muitas pessoas, é um trabalho sério e fará parte de toda uma nova geração de empregos que veremos nos próximos anos. A conclusão é que compensa minerar moedas — porém é importante saber qual o objetivo que se busca e realizar contas e ter em mente a expectativa de retorno.

Esta rig de mineração foi montada e está sendo mantida por:

Um pouco de teoria

Mineração é o processo de adicionar registros transacionais para o livro público de transações registrado em uma Blockchain. [Adaptado de Wikipedia]

Em termos computacionais, mineração se refere a descobrir uma resposta para um dado problema matemático. Alguns anos atrás, alguns aplicativos se popularizaram em um processo parecido, tal como o programa SETI — Search for Extraterrestrial Intelligence. Este programa consistia em instalar um pequeno aplicativo que rodaria quando o computador estivesse ocioso — ou seja, já que o computador estaria ligado e sem fazer nada, que essa ociosidade poderia ser útil para encontrar evidências de vida extraterrestre. Naquela época esse desafio consistia em analisar dados de satélites e outros equipamentos para encontrar algo que pudesse ser de interesse dos cientistas.

Em 2008 surgiu o Bitcoin, a primeira moeda virtual, com base num artigo de Satoshi Nakamoto. Ele definiu um processo para que as transações ocorridas envolvendo a moeda virtual pudessem ser validadas e aceitas pela rede. Tal processo envolve encontrar a resposta para um dado desafio matemático — um desafio que seja de difícil resolução e, ao mesmo tempo, de fácil verificação.

Mineração é o processo de gastar poder computacional para processar transações, proteger a rede, e manter todo mundo sincronizado no sistema. É uma rede inteiramente descentralizada com mineradores operando em todos os países e com ninguém tendo controle sobre essa rede. No caso de algumas Blockchains como Ethereum e Bitcoin esse trabalho de mineração é recompensado com a criação de novas moedas e com uma taxa pela validação das operações. Na prática trata-se de um prêmio pago aos mineradores em troca de ajudar a manter a rede operando de forma segura.

Para se realizar o trabalho de mineração é necessário recursos computacionais alocados para esta atividade. Hoje se tem até algumas medidas usadas para comparar a velocidade de mineração dos equipamentos, tais como:

  • 1 kH/s significa 1.000 (mil) hashes por segundo
  • 1 MH/s é 1.000.000 (um milhão) de hashes por segundo
  • 1 GH/s é 1.000.000.000 (um bilhão) de hashes por segundo
  • 1 TH/s é 1.000.000.000.000 (um trilhão) de hashes por segundo
  • 1 PH/s é 1.000.000.000.000.000 (um quadrilhão) de hashes por segundo
  • 1 EH/s é 1.000.000.000.000.000.000 (um quintilhão) de hashes por segundo

Mas o que significa hashes por segundo? Inicialmente irei explicar o que significa hash. Se trata de uma função algoritmica que transforma um conteúdo (imagem, mensagem, documento, vídeo) em um código alfanumérico (ou sequência de bytes). Por exemplo, o código abaixo em Java ilustra como obter o hash de uma determinada String:

byte hash[] =  digest.digest(str.getBytes(StandardCharsets.UTF_8));

Para melhor compreensão veja abaixo três variações de uma string e o hash correspondente numa representação hexadecimal. Esse hash é calculado mediante um algoritmo tal como o SHA-256 usado nesse exemplo.

str=[www.linkedin.com], hash=[823fb5b298a0ab38bf099380c7e914794131da7e597872c0cd2fcf1d5cf665b3].
str=[www.linkedin.com/], hash=[ea63c29b247573cb3b6dab0358520c3301e628372338d4fd5a0422e0f5212961].
str=[www.linkedin.com/sales], hash=[37bb0d42c1669f49a4d6336d798a1ae64acffe2275c4022f8aded320cef1f1f3].

Quando se fala em hashes por segundo, significa que se pode calcular vários desses hashes em um determinado segundo. E esse é o trabalho realizado pela mineração: calcular vários desses hashes, porém com um objetivo específico. Encontrar um número que somado ou concatenado com a mensagem original irá resultar em um hash iniciando com uma determinada sequência. Por exemplo, 00. Este número um nome: nonce, que se refere a algo que precisa alterar toda vez que a mensagem original muda.

No caso do texto www.linkedin.com, podemos criar um algoritmo que irá começar com um nonce=0, calcular o hash correspondente e verificar se começa com 00. Essa interação está mostrada no resultado abaixo. Neste trabalho de mineração, note que após 1.090 interações se conseguiu encontrar um hash começando com 00.

str=[www.linkedin.com+0], hash=[d94566f79c4808bcc44df4ee50dcafd6e69739010af8c103d742c59efe6ca677].
str=[www.linkedin.com+1], hash=[5bed8f2703eed5208f6cf3cdf9ef35530c16bee888d1560a3cae0df9187906a1].
str=[www.linkedin.com+2], hash=[f4c8c844edcfc41d2efa7d53f41ea98d1398e36bc14b4fc527185e4ce0bd4c74].
str=[www.linkedin.com+3], hash=[f24db4a3826517d4d4eef5edc98a42ba81098464b1378589b8e969736f70ed10].
...
...
...
str=[www.linkedin.com+1090], hash=[00eb89d2b40f0361bb9141665283449f6d0bed556533fa75dcbb467970a5dade]

O tempo dispendido para encontrar o nonce varia em função do tamanho do bloco (ou da mensagem) e do grau de dificuldade. Por isso se mensura essa análise em hashes por segundo. Para se ter uma ideia a rede do Bitcoin chegou a ter 8.215.055 TH/s em 18/08/2017.

Importante ressaltar que diferentes redes possuem diferentes formas de realizar o trabalho de mineração. Bitcoin e Ethereum usam algoritmos similares — embora mudanças estejam sendo cogitadas para tornar o uso energético desse processo mais eficiente.

Montando a rig

Em julho de 2017 decidimos (eu, Ilan e Egami) montar uma rig de mineração, para avaliar melhor este assunto e termos assim resultados práticos para emitir uma opinião. Os componentes dessa rig de mineração envolveram a aquisição dos seguintes componentes:

  • placas gráficas (GPU)
  • uma placa mãe
  • uma fonte de energia
  • um processador
  • cooler
  • memória RAM
  • PCI risers
  • Sistema Operacional Windows 10
  • HD
  • Frame da rig
  • Medidor de energia
  • além de custos com impostos, entrega e montagem

Um dos grandes problemas com o processo de mineração é o custo de energia elétrica. Em países como Rússia e China o custo é muito baixo. No Brasil temos uma das energias mais caras do mundo. Em São Paulo o preço do Kwh gira em torno de R$ 0,64.

Uma mineradora tal como a que montamos consome 500 Watts. Logo ela possui um custo mensal em torno de:

  • 500 Watts / 1000 = 0.5 Kwh
  • em um mês: 30 dias x 24 horas por dia x 0,5 Kwh = 360 Kwh
  • 360 Kwh x R$ 0,64 é igual a aproximadamente R$ 230,00.

A primeira decisão foi definir qual moeda minerar. Mediante algumas considerações optamos por minerar ETH — Ethereum. Vale a pena, para quem tiver interesse, visitar o site whattomine.com que permite comparar a capacidade de hashes por segundo mais o custo de energia elétrica com uma variedade de algoritmos de mineração.

Outra decisão foi escolher se iríamos minerar de forma isolada ou através de uma pool de mineração. Como funcionam esses dois tipos:

  • Mineração solo: se conecta a Blockchain Ethereum, baixa a base de dados, e daí se recebe o bloco a ser minerado. O prêmio para conseguir minerar é de 5 ETH. Neste cenário se concorre com todos os demais mineradores para vencer o desafio — o que pode levar muito tempo e termos a desvantagem na competição.
  • Pool de mineração: uma pool irá receber os blocos a serem minerados e daí distribui o desafio entre todos os mineradores conectados. Dessa forma ao invés de se procurar o nonce de forma isolada se faz isso em parceria com outros mineradores do mundo. Quando se vence o desafio o prêmio de 5 ETH é distribuido entre todos os participantes que contribuiram para o processo.

Escolhemos então fazer o processo através de uma pool de mineração e escolhemos a ethermine.

Usamos também o software claymore para minerar. Este software tem uma configuração bastante simples, muito fácil de ser instalado e em poucos minutos a mineração já começa.

Depois disso é aguardar os ETHs sendo gerados numa carteira :-)

Resultados

No primeiro mês de funcionamento da rig, tivemos um custo de R$ 168 em termos de energia elétrica e recebemos cerca de 0.6 ETH. Hoje nos aproximamos de 50 dias de funcionamento da rig e finalmente estamos com 1.00 ETH minerado.

  • Calculando uso de energia elétrica em 50 dias:
  • 500 Watts = 0,5 Kwh
  • 0,5 Kwh x 24 horas x 50 dias x R$ 0,60 = R$ 360,00

O valor de 1 ETH hoje é de USD 335.71 na Bitstamp. Considerando o valor aproximado de conversão 1 USD = R$ 3,20, temos uma mineração total de R$ 1.074,27. Descontando o custo de energia elétrica, temos um lucro de R$ 714,27.

Ainda temos o custo pago com a aquisição dos equipamentos. No nosso caso cada um dos participantes colocou disponibilizou USD 1,000. Ou seja, um total de USD 3,000. Em valores de hoje isso corresponde a R$ 9.600,00. Isso significa que os equipamentos serão pagos em aproximadamente 13 meses de mineração — se mantivermos a mesma performance, custos estáveis de energia elétrica e supondo que o valor do ETH não será menor que o atual. A expectativa é de valorização do ETH.

Conclusão

A mineração vale a pena. Porém talvez a questão possa ser elaborada novamente da seguinte forma: Compensa minerar no Brasil? Nossos custos são muito altos de energia elétrica. No site Statista.com se tem uma compilação dos custos de energia elétrica de diversos países. O Brasil aparece como uma das energia mais caras do mundo.

Note que países como China e Índia possuem custos de energia elétrica muito baratos. Da mesma forma Rússia e Paraguai também possuem custos baixíssimos. Por isso que muitas empresas mineradoras acabam oferecendo serviços no país mas a operação em outros lugares. O custo de energia elétrica é outro que temos em nosso país, e que afeta toda a cadeia produtiva nacional.

Além disso, temos os impostos. Montar uma rig de mineração vai custar também uma grande quantidade de impostos. Os equipamentos significativos dessa rig foram as placas de vídeo — que precisam ser atuais e ter um bom desempenho em hashes por segundo. Seria muito interessante ver iniciativas como estão ocorrendo na Rússia e na China para incentivar o trabalho de mineração também no Brasil.

Por essa razão o tempo de retorno do trabalho de mineração é alto no Brasil. De quase um ano no país, em lugares como China e Rússia esse tempo cai bastante — poucos meses.

Importante salientar que esta estrutura de mineração está provendo cerca de 72 MH/s — o que é um número muito bom. Porém apenas uma fração do total de hash power da rede Ethereum, que hoje está em torno de 91 TH/s.

Este projeto foi conduzido em caráter experimental e de maneira geral, estamos satisfeitos com os resultados. Temos um melhor entendimento dos custos envolvidos com a mineração e sobre a rentabilidade do processo no Brasil. Além de tudo, ETH tem um alto potencial de valorização.

Futuros trabalhos irão incluir como criar aplicações descentralizadas em Ethereum e como emitir tokens. Aguarde!

— — — — —

Fernando Galdino é Arquiteto de Soluções para o Setor Público da Oracle do Brasil. As opiniões emitidas neste artigo são de caráter pessoal e não representam as opiniões da Oracle ou de seus empregados.