Quando você realiza uma transação em Monero ou Bitcoin, ela é inserida em um “bloco” pelos mineradores. Os blocos do Monero são produzidos aproximadamente a cada 2 minutos, enquanto os blocos do Bitcoin a cada 10 minutos. Cada transação possui um tamanho em bytes que é introduzido no bloco. Os blocos do Bitcoin possuem um tamanho máximo em megabytes, o que significa que se a sua transação ficar de fora, será preciso esperar um novo bloco. Essa característica congestiona a rede do Bitcoin. E por isso que às vezes vemos transações que demoram horas ou até mesmo dias para serem confirmadas no Bitcoin. Para que sua transação seja confirmada mais rapidamente, é preciso pagar taxas maiores à rede.
Essa limitação no tamanho do bloco não deve ser considerada como um mero detalhe. Lembre-se que foi exatamente este debate que levou à criação da moeda Bitcoin Cash. O Bitcoin Cash foi um hardfork do Bitcoin que aumentou o tamanho dos blocos de 1 megabyte para 8 megabytes
O Monero, no entanto, foi desenhado de forma que seu bloco não possui um tamanho máximo. Ele se adapta de forma automática de acordo com o número de transações na rede. Ou seja, mesmo se o número de transações aumentar drasticamente, o Monero poderá acomodá-las sem problemas.
Recompensa da mineração
Todos as moedas novas do Monero são originadas como recompensas que são pagas aos mineradores que conseguiram minerar blocos com sucesso. O tamanho desse pagamento de recompensa depende da oferta atual (A) e o número inicial de unidades atômicas (S = 2^64 – 1). Uma unidade atômica é a menor divisão do Monero atualmente reconhecida pela rede (1×10^-12 XMR).
Recompensa Base = 2* ((S – A) * 2^-20 * 10^-12)
Monero possui uma emissão em cauda, que é uma pequena recompensa base fixa que irá continuar após a maior parte da oferta ter sido minerada. A recompensa base mínima do Monero é de 0,6 XMR por bloco (ou 0,3 XMR/min.), e ela existe para que os mineradores não precisem depender apenas das taxas para se manter.
Função de penalidade
Para prevenir o aumento excessivo do tamanho do bloco, o protocolo de mineração do Monero inclui uma função de penalidade que reduz a recompensa dos blocos que estão com um tamanho excessivo. Os autores do protocolo CryptoNote incluíram essa regra de consenso para limitar a taxa de expansão do tamanho do bloco e evitar que a blockchain crescesse muito rapidamente.
Se um bloco é minerado com um tamanho de bloco (B) que é maior do que a mediana do tamanho dos últimos 100 blocos (Mn), parte da recompensa do bloco é retida como uma penalidade, de acordo com a seguinte fórmula:
Penalidade = RecompensaBase * ((B / Mn) – 1)²
Os mineradores receberão a recompensa completa se minerarem blocos de até 300 kB; quando minerarem blocos maiores do que 300 kB, a função de penalidade é ativada. O tamanho de bloco máximo é 2*Mn, nesse ponto a penalidade é máxima e o minerador não recebe nada como recompensa.
Tamanho de blocos em outras moedas
Basicamente as moedas se dividem entre as que possuem bloco com tamanho pequeno/fixo (Bitcoin), bloco com tamanho grande/adaptável (Bitcoin Cash) e bloco com tamanho adaptável (Monero).
Além disso, as moedas podem ter um limite máximo de emissão (como o Bitcoin, que terá um máximo de 21 milhões de unidades mineradas) ou uma emissão base (como o Monero, que sempre produzirá moedas).
Muitas pessoas consideram que uma moeda com tamanho pequeno/fixo é inviável, pois não haveria recompensa suficiente para os mineradores e isso poderia limitar a utilização de soluções de segunda camada, como a Lightining Network. No entanto, antes de considerarmos se um bloco com tamanho adaptável é viável, devemos nos questionar se é possível que um mercado de taxas possa funcionar na ausência de uma emissão base.
Confira abaixo uma avaliação de cada moeda, baseada em uma análise de ArticMine, um dos membros do Core Team do Monero:
- Tamanho de bloco muito grande ou com limites adaptáveis, sem emissão base (Bitcoin Cash): neste cenário os blocos aumentam indefinidamente e a competição entre os mineradores irá fazer com que as taxas se tornem cada vez menores, visto que não há escassez de espaço no bloco. O lucro da mineração acaba reduzindo, e isso irá fazer com que a dificuldade e a segurança da moeda diminuam, o que acaba gerando pouca ou nenhuma demanda.
- Tamanho de bloco muito pequeno ou fixo (Bitcoin): como o tamanho do bloco é pequeno, surge escassez de espaço no bloco, o que por sua vez causa um aumento nas taxas. Há uma demanda potencialmente infinita para uma oferta fixa de espaço no bloco. Portanto, em teoria, as taxas iriam aumentar até o infinito. À medida que a demanda legítima cresce em direção ao limite fixo, se torna economicamente atrativo para os mineradores realizarem spam na rede, enchendo a rede de transações para eles mesmos, fazendo com que as taxas aumentem no geral. Quando os blocos estão totalmente cheios, apenas competidores externos à moeda podem impedir que a taxa suba infinitamente. Estes competidores externos basicamente são as moedas fiat e outras criptomoedas. Os usuários vão pensar: “por que vou pagar essa taxa de transação de 30 reais do bitcoin para comprar essa pizza, se eu posso pagar apenas uma taxa pequena com o cartão de crédito ou uma taxa pequena com outra criptomoeda?” Então esses competidores externos acabam reduzindo a demanda pela moeda, o que leva à redução do seu preço. E isso evolui até que o sistema colapse para pouca ou nenhuma demanda. Esse processo que leva à redução do preço da moeda acaba sendo retardado por dois fatores principais: 1) as exchanges (que realizam as transações entre os usuários internamente, só realizando a transação na rede bitcoin quando o cliente realiza um saque ou depósito de bitcoins) e 2) o spam dos mineradores: como o preço está reduzindo, os mineradores irão aumentar o spam para preservar o poder de compra de suas taxas.
- Tamanho de bloco com limite adaptável + emissão base (Monero): neste sistema, os mineradores teoricamente tem a permissão para aumentar o bloco o quanto eles quiserem. Porém, eles tem um desincentivo para fazer isso: quando eles aumentarem o tamanho do bloco acima de um certo limite, eles irão pagar uma penalidade, que é descontada da recompensa do bloco. Em função disso, para que o sistema se mantenha viável a longo prazo, é necessário que haja uma emissão base (emissão em cauda), ou seja, que sempre sejam mineradas moedas, assim fazendo com que sempre existam recompensas para serem usadas como penalidade.
As moedas que não usam o sistema do Monero são inerentemente instáveis. Ou o lucro da mineração acaba primeiro (ex: Bitcoin Cash) ou o poder de compra do lucro da mineração acaba primeiro (ex: Bitcoin).
Seria possível criar uma formula com tamanho de bloco com limite adaptável que não acaba, a longo prazo, convergindo para os cenários 1 e 2 acima? Meu instinto diz que não, pois a rede não possui uma maneira de medir o parâmetro “quantia de taxas coletadas por bloco” devido aos pagamentos sem limites para os mineradores. Além disso diversas mentes brilhantes já analisaram essa questão e não conseguiram chegar a uma conclusão. O que a emissão em cauda do Monero faz é fornecer uma âncora estável fora do controle dos mineradores no topo da qual um tamanho de bloco com limite adaptável e um mercado de taxas possam surgir, evitando a instabilidade acima.
Considerações técnicas
Penalidade = RecompensaBase * ((TamanhoDoBloco / MedianaDoTamanhoDosUltimos100Blocos) – 1)²
RecompensaFinal = RecompensaBase – Penalidade
A taxa máxima depende da penalidade atual da rede. Ela é considerada uma transação de tamanho infinitesimal com a penalidade máxima: Fee máxima por byte = 2 x RecompensaInicial / MedianaDoTamanhoDosUltimos100Blocos
As taxas baixa e alta são definidas arbitrariamente de acordo com a taxa normal, sendo a baixa 0,2x a taxa normal e a alta 5x a taxa normal.
Taxas (por byte):
- Taxa baixa = 0,2x a fee normal
- = 0,002 x RecompensaBase / MedianaDoTamanhoDosUltimos100Blocos
- Taxa normal
- 0,01 x RecompensaBase / MedianaDoTamanhoDosUltimos100Blocos
- Taxa alta = 5x a fee normal
- 0,05 x RecompensaBase / MedianaDoTamanhoDosUltimos100Blocos
- Taxa máxima
- 2 x RecompensaBase / MedianaDoTamanhoDosUltimos100Blocos
Mn = a mediana do tamanho do bloco nos últimos 100 blocos
Modificações em 2019
- Introdução de uma mediana de longo prazo acima de 100.000 blocos
- Limite no crescimento da mediana de curto prazo a 50x a mediana de longo prazo
- Calculating the long term median using the lower of the block weight of the individual blocks and 1.4x the existing long term median. This is equivalent to limiting the block weight for a new block to 2x the existing short term median.
- Calculating the fees based upon the long term median. The rationale for this is that under normal use a sharp increase of the short term median is due to a seasonal increase in transactional rates (for example, the December shopping season),