Como uma cadeia de bloqueio evita o gasto duplo de Bitcoins?

Publicado por Javier Ricardo


Uma das principais preocupações de qualquer desenvolvedor de criptomoeda é a questão do gasto duplo.
Isso se refere à incidência de um indivíduo gastar um saldo dessa criptomoeda mais de uma vez, criando efetivamente uma disparidade entre o registro de gastos e a quantidade dessa criptomoeda disponível, bem como a forma como ela é distribuída.


A questão do gasto duplo é um problema que o dinheiro não tem;
se você paga por um sanduíche com uma nota de $ 10, entregando-a ao fabricante do sanduíche, não pode virar e gastar os mesmos $ 10 em outro lugar. Uma transação usando uma moeda digital como bitcoin, no entanto, ocorre inteiramente digitalmente. Isso significa que é possível copiar os detalhes da transação e retransmiti-los de forma que o mesmo BTC possa ser gasto várias vezes por um único proprietário. Abaixo, examinaremos como os desenvolvedores de criptomoedas garantiram que não ocorram gastos em dobro.


Principais vantagens

  • Um problema técnico que surge com a noção de uma moeda digital é a capacidade de alguém duplicar o dinheiro digital e gastá-lo simultaneamente em dois ou mais lugares.
  • Este problema de ‘gasto duplo’ é evitado em criptomoedas baseadas em blockchain, como Bitcoin, usando um mecanismo de consenso conhecido como prova de trabalho (PoW).
  • Este PoW é realizado por uma rede descentralizada de ‘mineradores’ que não apenas garantem a fidelidade das transações anteriores no livro razão do blockchain, mas também detectam e evitam gastos duplos.

Compreendendo o Blockchain


O blockchain que sustenta uma moeda digital como o bitcoin não é capaz de evitar gastos em dobro por conta própria.
Em vez disso, todas as diferentes transações envolvendo a criptomoeda relevante são postadas no blockchain, onde são verificadas separadamente e protegidas por um processo de confirmação. No caso do bitcoin e de muitas outras criptomoedas, as transações que foram confirmadas dessa forma tornam-se irreversíveis; eles são postados publicamente e mantidos para sempre.


O Bitcoin foi a primeira grande moeda digital a resolver a questão do duplo gasto.
Isso foi feito por meio da implementação desse mecanismo de confirmação e da manutenção de um sistema de contabilidade universal comum. Desta forma, o blockchain bitcoin retém registros de transações com carimbo de data / hora desde a fundação da criptomoeda em 2009.


Em termos de Bitcoin, um “bloco” é um arquivo de dados gravados permanentemente.
Todas as transações recentes são gravadas em blocos, como um livro-razão de transações de ações em uma bolsa. As informações dos blocos são adicionadas ao razão a cada poucos minutos; todos os nós da rede mantêm uma cópia do livro razão do blockchain. Os usuários podem navegar no blockchain para bitcoin e revisar as transações apenas em termos de quantidade. Detalhes sobre as identidades do comprador e do vendedor em qualquer transação são protegidos por criptografia de alto nível, que também protege o livro-razão de adulteração por fontes externas. Quando o livro razão do blockchain é atualizado, todas as carteiras bitcoin também o são.

Lidando com gastos em dobro


Imagine que você tem 1 BTC e tenta gastá-lo duas vezes em duas transações separadas.
Você pode tentar fazer isso enviando o mesmo BTC para dois endereços de carteira bitcoin separados. Ambas as transações irão para o pool de transações não confirmadas. A primeira transação seria aprovada por meio do mecanismo de confirmação e depois verificada no bloco subsequente. No entanto, a segunda transação seria reconhecida como inválida pelo processo de confirmação e não seria verificada. Se ambas as transações forem retiradas do pool para confirmação simultaneamente, a transação com o maior número de confirmações será incluída no blockchain, enquanto a outra será descartada.


Embora isso trate efetivamente da questão da duplicação de gastos, não deixa de ter seus problemas.
Por exemplo, o destinatário pretendido da segunda transação (com falha) não teria parte na própria falha da transação e, ainda assim, essa pessoa não receberia o bitcoin que havia previsto. Muitos comerciantes aguardam pelo menos 6 confirmações de uma transação (o que significa que seis blocos subsequentes de transações foram adicionados ao blockchain após a transação em questão). Neste ponto, o comerciante pode assumir com segurança que a transação é válida.


Restam outras vulnerabilidades neste sistema que podem permitir a ocorrência de ataques de gasto duplo.
Por exemplo, se um invasor é de alguma forma capaz de controlar pelo menos 51% do poder da rede, ele pode cometer o dobro dos gastos. Se um invasor conseguisse de alguma forma obter o controle de todo esse poder computacional, ele poderia reverter as transações e criar uma cadeia de blocos privada separada. No entanto, o rápido crescimento do bitcoin praticamente garantiu que esse tipo de ataque seja impossível.

Prova de trabalho e ‘mineração’ explicada


Agora vamos ser um pouco mais técnicos.
A maneira como os usuários detectam adulterações, como uma tentativa de gastar o dobro na prática, é por meio de hashes, longas sequências de números que servem como prova de trabalho (PoW). Coloque um determinado conjunto de dados por meio de uma função hash (bitcoin usa SHA-256) e só gerará um hash. Devido ao “efeito avalanche”, no entanto, mesmo uma pequena alteração em qualquer parte dos dados originais resultará em um hash totalmente irreconhecível. Qualquer que seja o tamanho do conjunto de dados original, o hash gerado por uma determinada função terá o mesmo comprimento. O hash é uma função unilateral: não pode ser usado para obter os dados originais, apenas para verificar se os dados que geraram o hash correspondem aos dados originais.


Gerar qualquer hash para um conjunto de transações bitcoin seria trivial para um computador moderno, portanto, para transformar o processo em “trabalho”, a rede bitcoin define um certo nível de “dificuldade”.
Esta configuração é ajustada para que um novo bloco seja “extraído” – adicionado ao blockchain gerando um hash válido – aproximadamente a cada 10 minutos. A definição da dificuldade é realizada estabelecendo-se um “destino” para o hash: quanto menor o destino, menor o conjunto de hashes válidos e mais difícil é gerar um. Na prática, isso significa um hash que começa com uma longa sequência de zeros: o hash para o bloco nº 429818, por exemplo, é 000000000000000004dd3426129639082239efd583b5273b1bd75e8d78ff2e8d. Esse bloco contém 2.012 transações envolvendo pouco mais de 1.000 bitcoin, bem como o cabeçalho do bloco anterior.


Visto que um determinado conjunto de dados pode gerar apenas um hash, como os mineiros se certificam de que geram um hash abaixo do destino?
Eles alteram a entrada adicionando um inteiro, chamado nonce (“número usado uma vez”). Depois que um hash válido é encontrado, ele é transmitido para a rede e o bloco é adicionado ao blockchain.


A mineração é um processo competitivo, mas é mais uma loteria do que uma corrida.
Em média, alguém irá gerar provas de trabalho aceitáveis ​​a cada dez minutos, mas quem será, ninguém sabe. Os mineradores se unem para aumentar suas chances de blocos de mineração, o que gera taxas de transação e, por um tempo limitado, uma recompensa de bitcoins recém-criados.


A prova de trabalho torna extremamente difícil alterar qualquer aspecto do blockchain, uma vez que tal alteração exigiria reminerar todos os blocos subsequentes.
Também torna difícil para um usuário ou grupo de usuários monopolizar o poder de computação da rede, uma vez que o maquinário e o poder necessários para completar as funções hash são caros.