22 Junho 2021 23:32

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

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. A seguir, 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.
  • Esse 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 confirmadas dessa forma tornam-se irreversíveis; eles são postados publicamente e mantidos para sempre.

Bitcoin foi a primeira grande moeda digital a resolver a questão do gasto duplo. 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. Os 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, em seguida, 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 efetivamente lide com a 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 é gerá-lo. 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. Se um usuário alterasse o valor de uma transação em 0,0001 bitcoin, o hash resultante seria irreconhecível e a rede rejeitaria a fraude.

Uma vez que um determinado conjunto de dados pode gerar apenas um hash, como os mineradores se certificam de que geram um hash abaixo do destino? Eles alteram a entrada adicionando um inteiro, chamado  nonce  (“número usado uma vez”). Assim 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 mineiros 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 a remineração de 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.