O nascimento do bitcoin e do blockchain envolve dois problemas de longa data na moeda digital: o problema do gasto duplo e o problema dos generais bizantinos
Em comparação com a moeda física na vida cotidiana, a maior dificuldade no desenvolvimento do dinheiro eletrônico é como superar o “problema de confiança”. A razão pela qual as primeiras conchas e metais preciosos podem ser usados como equivalentes gerais é que eles têm uma certa escassez, e as notas físicas posteriores dependem da credibilidade do estado para resolver o problema de confiança.
Essas moedas físicas tinham valor e eram capazes de concluir a transferência de valor instantaneamente. Na era digital, qualquer conteúdo é essencialmente uma combinação de códigos 0 e 1, e o dinheiro digital pode ser copiado em duas cópias e liberado para dois destinatários diferentes ao mesmo tempo, o que é o chamado “problema do gasto duplo”. A própria Internet não tem a capacidade de representar valor, então as pessoas anteriormente tinham que usar um sistema de contas centralizadas com um servidor centralizado, como um banco, para usar cartões de crédito e outros tipos de dinheiro eletrônico.
Mas se existe um terceiro realmente confiável é uma questão. Existe o risco de pontos únicos de falhas, como ataques a servidores centralizados, e até mesmo os governos podem coletar uma “senhoriagem” ao emitir dinheiro em excesso. A solução proposta pelo Bitcoin é abandonar intermediários terceirizados e construir um livro-razão distribuído onde todos estão no centro do livro-razão.
Considere uma aldeia onde há apenas um “chefe” encarregado de manter o livro contábil, e todas as despesas dos membros da aldeia são registradas com o chefe da aldeia, que é o centro do sistema contábil. O sistema pode funcionar bem se o chefe da aldeia for confiável; no entanto, se o chefe, que é o centro do sistema, for um ladrão, pode ser difícil para os outros detectarem.
Considere uma aldeia “descentralizada” na qual cada membro possui um livro-razão idêntico. Quando um membro deseja fazer uma alteração no livro, deve notificar os outros membros via “broadcast” para que eles possam confirmar os lançamentos e copiá-los para seus próprios livros. O processo de transação não está completo até que todos os membros tenham confirmado e atualizado seus livros contábeis. É basicamente assim que a rede Bitcoin opera.
Bitcoin inventou um novo tipo de sistema digital para registrar a transação de ativos conhecido como livro-razão distribuído. Em contraste com a gravação centralizada, onde os dados são armazenados em servidores centralizados, o blockchain é um banco de dados descentralizado, com cada nó na rede atuando como detentor e mantenedor do banco de dados.
O Bitcoin foi a primeira aplicação em larga escala do blockchain, e o blockchain é a base subjacente do Bitcoin.
O sistema Bitcoin pode ser dividido em três camadas: a camada de dados, a camada de protocolo e a camada de aplicação. Vamos começar com o “ledger” (camada de dados) que cada membro do sistema Bitcoin possui.
Um blockchain é essencialmente um registro distribuído mantido por todos os nós da rede, com cada nó armazenando todos os dados do blockchain. A “cadeia” de blocos armazenada por um nó é uma cadeia ordenada de blocos conectados entre si, e o próprio bloco é uma estrutura inalterável de dados mantida pelo algoritmo Cryptographic Hash.
A função hash (SHA-256 e RipeMD160) é um algoritmo criptográfico crítico em Bitcoin que pode converter um valor de entrada de comprimento arbitrário em uma saída de valor de comprimento fixo com recursos aleatórios e sem colisão. E é difícil adivinhar o valor de entrada para uma função hash de sua saída. Uma pequena mudança na entrada pode resultar em uma saída drasticamente diferente. A saída de uma função hash pode ser facilmente derivada da entrada, mas inferir a entrada da saída requer enumeração de força bruta, que leva uma quantidade significativa de tempo e poder de computação. O uso repetido de funções de hash simplifica e define a estrutura de dados do Bitcoin.
Um bloco Bitcoin consiste em duas partes: o corpo do bloco e o cabeçalho do bloco. O corpo do bloco contém todas as informações da transação naquele bloco, que é hash várias vezes para formar uma estrutura conhecida como árvore Merkle, que compõe o corpo do bloco. A primeira mensagem de transação em cada um desses blocos também é conhecida como transação coinbase e é a transação que gera novos bitcoins e os recompensa ao minerador, enquanto todas as outras transações são transferências entre usuários entre si.
Essas transações passam por várias operações de hashing para finalmente chegar a um valor chamado Merkle Hash, que é a soma de todos os dados da transação. O Merkle Hash, junto com Nunce, timestamps, hashes do bloco pai e outros dados, constituem o cabeçalho do bloco, e o cálculo do valor de hash do cabeçalho do bloco pode obter o Block Hash deste bloco. Como o cabeçalho de cada bloco contém o valor de hash do bloco pai, todos os blocos são conectados em uma cadeia. Os blocos estão interligados e qualquer alteração nos dados do bloco resultará em uma alteração no hash do bloco, que interromperá a cadeia.
Depois de apresentar o “ledger” (camada de dados) mantido por cada nó, vamos passar para a camada de consenso do Bitcoin, que é responsável pela segurança da rede.
Antes de mergulhar no consenso distribuído, é fundamental entender o problema dos “generais bizantinos”.
O problema dos generais bizantinos remonta ao período medieval, quando o exército bizantino dependia de mensageiros para transmitir informações devido ao vasto território de Bizâncio. Se um traidor deliberadamente deturpasse as informações operacionais dos superiores, isso levaria a planos operacionais inconsistentes, resultando no “Problema dos Generais Bizantinos”.
A rede Bitcoin consiste em vários nós descentralizados, cada um dos quais é um “corpo” independente, autônomo e igual. Cada nó na rede tem sua própria cópia exclusiva dos dados do blockchain, e todos querem ser os primeiros a empacotar transações e ganhar as recompensas do bitcoin. Então, qual nó terá sucesso em obter os direitos do livro-razão e convencer toda a rede a chegar a um consenso para modificar os dados do blockchain?
A resposta do Bitcoin é o mecanismo de consenso Proof-of-Work (PoW), comumente conhecido como “mineração”, que é um processo de computação digital realizado por nós, onde o primeiro nó a encontrar a “resposta” obtém os direitos do livro-razão. Especificamente, o nó precisa continuar tentando alterar o Nunce do cabeçalho do bloco, calculando o hash do bloco e, finalmente, obter um hash do bloco em que os primeiros bits sejam zero.
Neste ponto, o valor Nunce é a resposta para a pergunta. Depois de encontrar a resposta, o nó irá transmiti-la para outros nós da rede e, após verificar a resposta, os outros nós rapidamente tomarão o bloco como o novo nó pai e continuarão a próxima rodada de operações de mineração.
Isso apresenta um problema porque os dados levam tempo para serem transmitidos entre os nós, e é totalmente possível que dois ou mais nós tenham descoberto a resposta para o quebra-cabeça ao mesmo tempo antes que a comunidade como um todo chegue a um acordo. No entanto, como dois nós empacotam diferentes transações coinbase, isso resulta em dois blocos válidos distintos. Devido às diferentes sequências de sinalização, os nós do minerador irão operar em ambas as cadeias de garfos. Neste ponto, a rede Bitcoin seguirá a “regra da cadeia mais longa”, tratando a cadeia bifurcada com mais blocos como a única blockchain reconhecida. Essa competição de fork é normalmente concluída em menos de 6 blocos e todas as transações na outra cadeia abandonada são anuladas.
Os nós Bitcoin podem sincronizar atualizações para o ledger distribuído por mineração e a regra da cadeia mais longa para chegar a um consenso. Esse registro distribuído baseado em consenso também possibilita moedas digitais ponto a ponto, como o Bitcoin.
As moedas eletrônicas tradicionais usam um sistema de contas centralizado onde as contas são criadas para cada usuário em um servidor central e os dados de saldo são armazenados para todas as contas. Após cada transação, o saldo da conta aumenta ou diminui em ordem cronológica. O Bitcoin, por outro lado, usa um modelo UXTO, que representa a saída de transações não gastas.
A criptografia assimétrica é usada para proteger as transações de bitcoin. Cada usuário Bitcoin deve ter um par de chaves públicas e privadas, semelhantes a uma conta e senha. O usuário deve assinar os dados da transação com a chave privada e publicar os dados da transação, assinatura e chave pública juntos. No entanto, em cada transação, o usuário não transfere diretamente o saldo da conta, mas usa o “valor não gasto” das múltiplas transações anteriores, ou seja, UTXO.
No sistema Bitcoin, não existe o conceito de conta ou saldo de conta, apenas o UTXO de todas as transações no registro histórico. As carteiras Bitcoin podem escanear os dados de todas as transações anteriores e calcular o UTXO total de um endereço específico (ou seja, chave pública) para determinar o saldo da conta. Além disso, quando uma transação é iniciada, as carteiras bitcoin podem combinar automaticamente o UTXO com o saldo correto para concluir a transferência.
O nascimento do bitcoin e do blockchain envolve dois problemas de longa data na moeda digital: o problema do gasto duplo e o problema dos generais bizantinos
Em comparação com a moeda física na vida cotidiana, a maior dificuldade no desenvolvimento do dinheiro eletrônico é como superar o “problema de confiança”. A razão pela qual as primeiras conchas e metais preciosos podem ser usados como equivalentes gerais é que eles têm uma certa escassez, e as notas físicas posteriores dependem da credibilidade do estado para resolver o problema de confiança.
Essas moedas físicas tinham valor e eram capazes de concluir a transferência de valor instantaneamente. Na era digital, qualquer conteúdo é essencialmente uma combinação de códigos 0 e 1, e o dinheiro digital pode ser copiado em duas cópias e liberado para dois destinatários diferentes ao mesmo tempo, o que é o chamado “problema do gasto duplo”. A própria Internet não tem a capacidade de representar valor, então as pessoas anteriormente tinham que usar um sistema de contas centralizadas com um servidor centralizado, como um banco, para usar cartões de crédito e outros tipos de dinheiro eletrônico.
Mas se existe um terceiro realmente confiável é uma questão. Existe o risco de pontos únicos de falhas, como ataques a servidores centralizados, e até mesmo os governos podem coletar uma “senhoriagem” ao emitir dinheiro em excesso. A solução proposta pelo Bitcoin é abandonar intermediários terceirizados e construir um livro-razão distribuído onde todos estão no centro do livro-razão.
Considere uma aldeia onde há apenas um “chefe” encarregado de manter o livro contábil, e todas as despesas dos membros da aldeia são registradas com o chefe da aldeia, que é o centro do sistema contábil. O sistema pode funcionar bem se o chefe da aldeia for confiável; no entanto, se o chefe, que é o centro do sistema, for um ladrão, pode ser difícil para os outros detectarem.
Considere uma aldeia “descentralizada” na qual cada membro possui um livro-razão idêntico. Quando um membro deseja fazer uma alteração no livro, deve notificar os outros membros via “broadcast” para que eles possam confirmar os lançamentos e copiá-los para seus próprios livros. O processo de transação não está completo até que todos os membros tenham confirmado e atualizado seus livros contábeis. É basicamente assim que a rede Bitcoin opera.
Bitcoin inventou um novo tipo de sistema digital para registrar a transação de ativos conhecido como livro-razão distribuído. Em contraste com a gravação centralizada, onde os dados são armazenados em servidores centralizados, o blockchain é um banco de dados descentralizado, com cada nó na rede atuando como detentor e mantenedor do banco de dados.
O Bitcoin foi a primeira aplicação em larga escala do blockchain, e o blockchain é a base subjacente do Bitcoin.
O sistema Bitcoin pode ser dividido em três camadas: a camada de dados, a camada de protocolo e a camada de aplicação. Vamos começar com o “ledger” (camada de dados) que cada membro do sistema Bitcoin possui.
Um blockchain é essencialmente um registro distribuído mantido por todos os nós da rede, com cada nó armazenando todos os dados do blockchain. A “cadeia” de blocos armazenada por um nó é uma cadeia ordenada de blocos conectados entre si, e o próprio bloco é uma estrutura inalterável de dados mantida pelo algoritmo Cryptographic Hash.
A função hash (SHA-256 e RipeMD160) é um algoritmo criptográfico crítico em Bitcoin que pode converter um valor de entrada de comprimento arbitrário em uma saída de valor de comprimento fixo com recursos aleatórios e sem colisão. E é difícil adivinhar o valor de entrada para uma função hash de sua saída. Uma pequena mudança na entrada pode resultar em uma saída drasticamente diferente. A saída de uma função hash pode ser facilmente derivada da entrada, mas inferir a entrada da saída requer enumeração de força bruta, que leva uma quantidade significativa de tempo e poder de computação. O uso repetido de funções de hash simplifica e define a estrutura de dados do Bitcoin.
Um bloco Bitcoin consiste em duas partes: o corpo do bloco e o cabeçalho do bloco. O corpo do bloco contém todas as informações da transação naquele bloco, que é hash várias vezes para formar uma estrutura conhecida como árvore Merkle, que compõe o corpo do bloco. A primeira mensagem de transação em cada um desses blocos também é conhecida como transação coinbase e é a transação que gera novos bitcoins e os recompensa ao minerador, enquanto todas as outras transações são transferências entre usuários entre si.
Essas transações passam por várias operações de hashing para finalmente chegar a um valor chamado Merkle Hash, que é a soma de todos os dados da transação. O Merkle Hash, junto com Nunce, timestamps, hashes do bloco pai e outros dados, constituem o cabeçalho do bloco, e o cálculo do valor de hash do cabeçalho do bloco pode obter o Block Hash deste bloco. Como o cabeçalho de cada bloco contém o valor de hash do bloco pai, todos os blocos são conectados em uma cadeia. Os blocos estão interligados e qualquer alteração nos dados do bloco resultará em uma alteração no hash do bloco, que interromperá a cadeia.
Depois de apresentar o “ledger” (camada de dados) mantido por cada nó, vamos passar para a camada de consenso do Bitcoin, que é responsável pela segurança da rede.
Antes de mergulhar no consenso distribuído, é fundamental entender o problema dos “generais bizantinos”.
O problema dos generais bizantinos remonta ao período medieval, quando o exército bizantino dependia de mensageiros para transmitir informações devido ao vasto território de Bizâncio. Se um traidor deliberadamente deturpasse as informações operacionais dos superiores, isso levaria a planos operacionais inconsistentes, resultando no “Problema dos Generais Bizantinos”.
A rede Bitcoin consiste em vários nós descentralizados, cada um dos quais é um “corpo” independente, autônomo e igual. Cada nó na rede tem sua própria cópia exclusiva dos dados do blockchain, e todos querem ser os primeiros a empacotar transações e ganhar as recompensas do bitcoin. Então, qual nó terá sucesso em obter os direitos do livro-razão e convencer toda a rede a chegar a um consenso para modificar os dados do blockchain?
A resposta do Bitcoin é o mecanismo de consenso Proof-of-Work (PoW), comumente conhecido como “mineração”, que é um processo de computação digital realizado por nós, onde o primeiro nó a encontrar a “resposta” obtém os direitos do livro-razão. Especificamente, o nó precisa continuar tentando alterar o Nunce do cabeçalho do bloco, calculando o hash do bloco e, finalmente, obter um hash do bloco em que os primeiros bits sejam zero.
Neste ponto, o valor Nunce é a resposta para a pergunta. Depois de encontrar a resposta, o nó irá transmiti-la para outros nós da rede e, após verificar a resposta, os outros nós rapidamente tomarão o bloco como o novo nó pai e continuarão a próxima rodada de operações de mineração.
Isso apresenta um problema porque os dados levam tempo para serem transmitidos entre os nós, e é totalmente possível que dois ou mais nós tenham descoberto a resposta para o quebra-cabeça ao mesmo tempo antes que a comunidade como um todo chegue a um acordo. No entanto, como dois nós empacotam diferentes transações coinbase, isso resulta em dois blocos válidos distintos. Devido às diferentes sequências de sinalização, os nós do minerador irão operar em ambas as cadeias de garfos. Neste ponto, a rede Bitcoin seguirá a “regra da cadeia mais longa”, tratando a cadeia bifurcada com mais blocos como a única blockchain reconhecida. Essa competição de fork é normalmente concluída em menos de 6 blocos e todas as transações na outra cadeia abandonada são anuladas.
Os nós Bitcoin podem sincronizar atualizações para o ledger distribuído por mineração e a regra da cadeia mais longa para chegar a um consenso. Esse registro distribuído baseado em consenso também possibilita moedas digitais ponto a ponto, como o Bitcoin.
As moedas eletrônicas tradicionais usam um sistema de contas centralizado onde as contas são criadas para cada usuário em um servidor central e os dados de saldo são armazenados para todas as contas. Após cada transação, o saldo da conta aumenta ou diminui em ordem cronológica. O Bitcoin, por outro lado, usa um modelo UXTO, que representa a saída de transações não gastas.
A criptografia assimétrica é usada para proteger as transações de bitcoin. Cada usuário Bitcoin deve ter um par de chaves públicas e privadas, semelhantes a uma conta e senha. O usuário deve assinar os dados da transação com a chave privada e publicar os dados da transação, assinatura e chave pública juntos. No entanto, em cada transação, o usuário não transfere diretamente o saldo da conta, mas usa o “valor não gasto” das múltiplas transações anteriores, ou seja, UTXO.
No sistema Bitcoin, não existe o conceito de conta ou saldo de conta, apenas o UTXO de todas as transações no registro histórico. As carteiras Bitcoin podem escanear os dados de todas as transações anteriores e calcular o UTXO total de um endereço específico (ou seja, chave pública) para determinar o saldo da conta. Além disso, quando uma transação é iniciada, as carteiras bitcoin podem combinar automaticamente o UTXO com o saldo correto para concluir a transferência.