Bitcoin: Um sistema de dinheiro eletrônico ponto a ponto

Satoshi Nakamoto

October 31, 2008

Abstract

Uma versão puramente peer-to-peer de dinheiro eletrônico permitiria que pagamentos online fossem enviados diretamente de uma parte para outra sem passar por uma instituição financeira. Assinaturas digitais fornecem parte da solução, mas os principais benefícios são perdidos se um terceiro confiável ainda for necessário para evitar o double-spending. Propomos uma solução para o problema do double-spending usando uma rede peer-to-peer. A rede marca o tempo das transações, fazendo hash delas em uma cadeia contínua de provas de trabalho baseadas em hash, formando um registro que não pode ser alterado sem refazer a prova de trabalho. A cadeia mais longa não apenas serve como prova da sequência de eventos presenciados, mas prova que veio da maior concentração de poder de CPU. Enquanto a maioria do poder da CPU é controlada por nós que não estão cooperando para atacar a rede, eles irão gerar a cadeia mais longa e superar os atacantes. A própria rede exige uma estrutura mínima. As mensagens são transmitidas com o melhor esforço possível e os nós podem sair e retornar à rede à vontade, aceitando a cadeia mais longa de prova de trabalho como prova do que aconteceu enquanto estavam ausentes.

1. Introdução

O comércio na Internet passou a depender quase exclusivamente de instituições financeiras como terceiros confiáveis para processar pagamentos eletrônicos. Embora o sistema funcione bem o suficiente para a maioria das transações, ainda sofre das fraquezas inerentes ao modelo baseado em confiança. Transações completamente irreversíveis não são realmente possíveis, uma vez que as instituições financeiras não podem evitar resolver disputas. O custo da mediação aumenta os custos das transações, limitando o tamanho mínimo prático da transação e eliminando a possibilidade de transações pequenas casuais, e há um custo mais amplo na perda da capacidade de fazer pagamentos não reversíveis por serviços não reversíveis. Com a possibilidade de reversão, a necessidade de confiança se espalha. Os comerciantes precisam estar atentos aos seus clientes, importunando-os por mais informações do que precisariam. Um certo percentual de fraude é aceito como inevitável. Esses custos e incertezas de pagamento podem ser evitados pessoalmente usando moeda física, mas não existe um mecanismo para fazer pagamentos por meio de um canal de comunicação sem um terceiro confiável.

O que é necessário é um sistema de pagamento eletrônico baseado em prova criptográfica em vez de confiança, permitindo que duas partes dispostas a transacionar diretamente uma com a outra sem a necessidade de um terceiro confiável. Transações que são computacionalmente impraticáveis de reverter protegeriam os vendedores contra fraudes, e mecanismos de garantia rotineiros poderiam ser facilmente implementados para proteger compradores. Neste artigo, propomos uma solução para o problema do double-spending usando um servidor de timestamp distribuído peer-to-peer para gerar prova computacional da ordem cronológica das transações. O sistema é seguro contanto que nós honestos controlem coletivamente mais poder de CPU do que qualquer grupo cooperativo de nós atacantes.

2. Transações

Definimos uma moeda eletrônica como uma cadeia de assinaturas digitais. Cada proprietário transfere a moeda para o próximo assinando digitalmente o hash da transação anterior e a chave pública do próximo proprietário e adicionando isso ao final da moeda. Um beneficiário pode verificar as assinaturas para verificar a cadeia de propriedade.

O problema, é claro, é que o beneficiário não pode verificar se um dos proprietários não gastou a moeda duas vezes. Uma solução comum é introduzir uma autoridade central confiável, ou casa de moeda, que verifica cada transação para double-spending. Após cada transação, a moeda deve ser devolvida à casa de moeda para emitir uma nova moeda, e apenas moedas emitidas diretamente pela casa de moeda são confiáveis e não propensas a double-spending. O problema com esta solução é que o destino de todo o sistema monetário depende da empresa que administra a casa da moeda, com cada transação tendo que passar por eles, assim como um banco.

Precisamos de uma maneira para o beneficiário saber que os proprietários anteriores não assinaram transações anteriores. Para os nossos propósitos, a transação mais antiga é a que conta, então não nos importamos com tentativas posteriores de double-spending. A única maneira de confirmar a ausência de uma transação é estar ciente de todas as transações. No modelo baseado em casa da moeda, a casa da moeda estava ciente de todas as transações e decidia qual chegou primeiro. Para realizar isso sem um terceiro confiável, as transações devem ser anunciadas publicamente [1], e precisamos de um sistema para que os participantes concordem com uma única história da ordem em que foram recebidos. O beneficiário precisa de prova de que no momento de cada transação, a maioria dos nós concordou que foi a primeira recebida.

3. Servidor de Timestamp

A solução que propomos começa com um servidor de timestamp. Um servidor de timestamp funciona fazendo hash de um bloco de itens a serem registrados no timestamp e publicando amplamente o hash, como em um jornal ou postagem no Usenet [2-5]. O timestamp prova que os dados devem ter existido na época, obviamente, para entrar no hash. Cada timestamp inclui o timestamp anterior em seu hash, formando uma cadeia, com cada timestamp adicional reforçando os anteriores.

4. Prova de Trabalho

Para implementar um servidor de timestamp distribuído em uma base peer-to-peer, precisaremos usar um sistema de prova de trabalho semelhante ao Hashcash de Adam Back [6], em vez de jornais ou postagens Usenet. A prova de trabalho envolve a busca por um valor que, quando hashado, como com SHA-256, o hash comece com um número de bits zero. O trabalho médio necessário é exponencial no número de bits zero necessários e pode ser verificado executando um hash único.

Para nossa rede de timestamp, implementamos a prova de trabalho incrementando um nonce no bloco até encontrar um valor que dê ao hash do bloco os bits zero necessários. Uma vez que o esforço da CPU foi gasto para fazer com que ele satisfaça a prova de trabalho, o bloco não pode ser alterado sem refazer o trabalho. À medida que blocos posteriores são encadeados após ele, o trabalho para alterar o bloco incluiria refazer todos os blocos depois dele.

A prova de trabalho também resolve o problema de determinar a representação na tomada de decisões em maioria. Se a maioria fosse baseada em um endereço IP, um voto, poderia ser subvertida por qualquer pessoa capaz de alocar muitos IPs. A prova de trabalho é essencialmente um processador, um voto. A decisão da maioria é representada pela cadeia mais longa, que tem o maior esforço de prova de trabalho investido nela. Se a maioria do poder de CPU for controlada por nós honestos, a cadeia honesta crescerá mais rapidamente e superará quaisquer cadeias concorrentes. Para modificar um bloco anterior, um atacante teria que refazer a prova de trabalho do bloco e de todos os blocos após ele e depois alcançar e superar o trabalho dos nós honestos. Mostraremos posteriormente que a probabilidade de um atacante mais lento se recuperar diminui exponencialmente à medida que blocos subsequentes são adicionados.

Para compensar o aumento da velocidade do hardware e o interesse variável em executar nós ao longo do tempo, a dificuldade da prova de trabalho é determinada por uma média móvel visando um número médio de blocos por hora. Se forem gerados muito rapidamente, a dificuldade aumenta.

5. Rede

Os passos para executar a rede são os seguintes:

  1. Novas transações são transmitidas para todos os nós.
  2. Cada nó coleta novas transações em um bloco.
  3. Cada nó trabalha para encontrar uma prova de trabalho difícil para seu bloco.
  4. Quando um nó encontra uma prova de trabalho, ele transmite o bloco para todos os nós.
  5. Os nós aceitam o bloco apenas se todas as transações nele forem válidas e não forem gastas.
  6. Os nós expressam sua aceitação do bloco trabalhando para criar o próximo bloco na cadeia, usando o hash do bloco aceito como o hash anterior.

Os nós sempre consideram a cadeia mais longa como a correta e continuam trabalhando para estendê-la. Se dois nós transmitirem versões diferentes do próximo bloco simultaneamente, alguns nós podem receber um ou outro primeiro. Nesse caso, eles trabalham no primeiro que receberam, mas salvam o outro ramo caso ele se torne mais longo. O desempate será feito quando a próxima prova de trabalho for encontrada e um ramo se tornar mais longo; os nós que estavam trabalhando no outro ramo então mudarão para o mais longo.

As novas transmissões de transações não precisam necessariamente atingir todos os nós. Desde que atinjam muitos nós, elas entrarão em um bloco em breve. As transmissões de bloco também são tolerantes a mensagens descartadas. Se um nó não receber um bloco, ele o solicitará quando receber o próximo bloco e perceber que perdeu um.

6. Incentivo

Por convenção, a primeira transação em um bloco é uma transação especial que inicia uma nova moeda de propriedade do criador do bloco. Isso adiciona um incentivo para os nós suportarem a rede e fornece uma maneira de distribuir inicialmente as moedas em circulação, uma vez que não há uma autoridade central para emiti-las. A adição constante de uma quantidade constante de novas moedas é análoga aos mineradores de ouro que gastam recursos para adicionar ouro em circulação. Em nosso caso, é tempo de CPU e eletricidade gastos.

O incentivo também pode ser financiado com taxas de transação. Se o valor de saída de uma transação for menor que seu valor de entrada, a diferença é uma taxa de transação que é adicionada ao valor do incentivo do bloco que contém a transação. Uma vez que um número predeterminado de moedas tenha entrado em circulação, o incentivo pode transitar completamente para taxas de transação e ser absolutamente livre de inflação.

O incentivo pode ajudar a encorajar os nós a permanecerem honestos. Se um atacante ganancioso for capaz de reunir mais poder de CPU do que todos os nós honestos, ele terá que escolher entre usá-lo para fraudar as pessoas roubando seus pagamentos de volta, ou usá-lo para gerar novas moedas. Ele deveria achar mais lucrativo jogar seguindo as regras, tais regras que o favorecem com mais moedas novas do que todos os outros combinados, do que minar o sistema e a validade de sua própria riqueza.

7. Recuperando Espaço em Disco

Uma vez que a transação mais recente em uma moeda tenha sido enterrada sob blocos suficientes, as transações gastas antes dela podem ser descartadas para economizar espaço em disco. Para facilitar isso sem quebrar o hash do bloco, as transações são hashadas em uma Merkle Tree [7] para incluir apenas a raiz no hash do bloco. Blocos antigos podem então ser compactados cortando ramos da árvore. Os hashes internos não precisam ser armazenados.

Um cabeçalho de bloco sem transações seria de cerca de 80 bytes. Se supusermos que blocos são gerados a cada 10 minutos, 80 bytes * 6 * 24 * 365 = 4,2MB por ano. Com sistemas de computador geralmente vendidos com 2 GB de RAM em 2008 e a lei de Moore prevendo crescimento atual de 1,2 GB por ano, o armazenamento não deve ser um problema mesmo que os cabeçalhos dos blocos precisem ser mantidos na memória.

8. Verificação Simplificada de Pagamento

É possível verificar pagamentos sem executar um nó de rede completo. Um usuário só precisa manter uma cópia dos cabeçalhos de bloco da cadeia mais longa de prova de trabalho, que ele pode obter consultando nós de rede até se convencer de que tem a cadeia mais longa, e obter o ramo Merkle ligando a transação ao bloco em que é timestamped. Ele não pode verificar a transação por si mesmo, mas vinculando-a a um local na cadeia, ele pode ver que um nó de rede a aceitou, e blocos adicionados posteriormente confirmam ainda mais que a rede a aceitou.

Assim, a verificação é confiável desde que nós honestos controlem a rede, mas é mais vulnerável se a rede for dominada por um atacante. Enquanto os nós de rede podem verificar transações por si mesmos, o método simplificado pode ser enganado por transações fabricadas por um atacante pelo tempo que o atacante puder continuar superando a rede. Uma estratégia para se proteger disso seria aceitar alertas dos nós de rede quando detectarem um bloco inválido, fazendo com que o software do usuário faça o download do bloco completo e das transações alertadas para confirmar a inconsistência. Empresas que recebem pagamentos frequentes provavelmente ainda desejarão executar seus próprios nós para uma segurança mais independente e verificações mais rápidas.

9. Combinando e Dividindo o Valor

Embora fosse possível manipular moedas individualmente, seria desajeitado fazer uma transação separada para cada centavo em uma transferência. Para permitir que o valor seja dividido e combinado, as transações contêm múltiplas entradas e saídas. Normalmente haverá ou uma única entrada de uma transação anterior maior ou várias entradas combinando quantias menores, e no máximo duas saídas: uma para o pagamento e outra retornando o troco, se houver, de volta ao remetente.

Deve-se observar que a dispersão, onde uma transação depende de várias transações, e essas transações dependem de muitas mais, não é um problema aqui. Nunca há necessidade de extrair uma cópia completa e independente do histórico de transações.

10. Privacidade

O modelo bancário tradicional alcança um nível de privacidade limitando o acesso às informações apenas para as partes envolvidas e ao terceiro confiável. A necessidade de anunciar todas as transações publicamente impede esse método, mas a privacidade ainda pode ser mantida quebrando o fluxo de informações em outro lugar: mantendo as chaves públicas anônimas. O público pode ver que alguém está enviando uma quantidade para outra pessoa, mas sem informações que vinculem a transação a alguém em específico. Isso é semelhante ao nível de informações liberadas pelas bolsas de valores, onde o tempo e o valor das negociações individuais

Satoshi Nakamoto

October 31, 2008

Abstract

Uma versão puramente peer-to-peer de dinheiro eletrônico permitiria que pagamentos online fossem enviados diretamente de uma parte para outra sem passar por uma instituição financeira. Assinaturas digitais fornecem parte da solução, mas os principais benefícios são perdidos se um terceiro confiável ainda for necessário para evitar o double-spending. Propomos uma solução para o problema do double-spending usando uma rede peer-to-peer. A rede marca o tempo das transações, fazendo hash delas em uma cadeia contínua de provas de trabalho baseadas em hash, formando um registro que não pode ser alterado sem refazer a prova de trabalho. A cadeia mais longa não apenas serve como prova da sequência de eventos presenciados, mas prova que veio da maior concentração de poder de CPU. Enquanto a maioria do poder da CPU é controlada por nós que não estão cooperando para atacar a rede, eles irão gerar a cadeia mais longa e superar os atacantes. A própria rede exige uma estrutura mínima. As mensagens são transmitidas com o melhor esforço possível e os nós podem sair e retornar à rede à vontade, aceitando a cadeia mais longa de prova de trabalho como prova do que aconteceu enquanto estavam ausentes.

1. Introdução

O comércio na Internet passou a depender quase exclusivamente de instituições financeiras como terceiros confiáveis para processar pagamentos eletrônicos. Embora o sistema funcione bem o suficiente para a maioria das transações, ainda sofre das fraquezas inerentes ao modelo baseado em confiança. Transações completamente irreversíveis não são realmente possíveis, uma vez que as instituições financeiras não podem evitar resolver disputas. O custo da mediação aumenta os custos das transações, limitando o tamanho mínimo prático da transação e eliminando a possibilidade de transações pequenas casuais, e há um custo mais amplo na perda da capacidade de fazer pagamentos não reversíveis por serviços não reversíveis. Com a possibilidade de reversão, a necessidade de confiança se espalha. Os comerciantes precisam estar atentos aos seus clientes, importunando-os por mais informações do que precisariam. Um certo percentual de fraude é aceito como inevitável. Esses custos e incertezas de pagamento podem ser evitados pessoalmente usando moeda física, mas não existe um mecanismo para fazer pagamentos por meio de um canal de comunicação sem um terceiro confiável.

O que é necessário é um sistema de pagamento eletrônico baseado em prova criptográfica em vez de confiança, permitindo que duas partes dispostas a transacionar diretamente uma com a outra sem a necessidade de um terceiro confiável. Transações que são computacionalmente impraticáveis de reverter protegeriam os vendedores contra fraudes, e mecanismos de garantia rotineiros poderiam ser facilmente implementados para proteger compradores. Neste artigo, propomos uma solução para o problema do double-spending usando um servidor de timestamp distribuído peer-to-peer para gerar prova computacional da ordem cronológica das transações. O sistema é seguro contanto que nós honestos controlem coletivamente mais poder de CPU do que qualquer grupo cooperativo de nós atacantes.

2. Transações

Definimos uma moeda eletrônica como uma cadeia de assinaturas digitais. Cada proprietário transfere a moeda para o próximo assinando digitalmente o hash da transação anterior e a chave pública do próximo proprietário e adicionando isso ao final da moeda. Um beneficiário pode verificar as assinaturas para verificar a cadeia de propriedade.

O problema, é claro, é que o beneficiário não pode verificar se um dos proprietários não gastou a moeda duas vezes. Uma solução comum é introduzir uma autoridade central confiável, ou casa de moeda, que verifica cada transação para double-spending. Após cada transação, a moeda deve ser devolvida à casa de moeda para emitir uma nova moeda, e apenas moedas emitidas diretamente pela casa de moeda são confiáveis e não propensas a double-spending. O problema com esta solução é que o destino de todo o sistema monetário depende da empresa que administra a casa da moeda, com cada transação tendo que passar por eles, assim como um banco.

Precisamos de uma maneira para o beneficiário saber que os proprietários anteriores não assinaram transações anteriores. Para os nossos propósitos, a transação mais antiga é a que conta, então não nos importamos com tentativas posteriores de double-spending. A única maneira de confirmar a ausência de uma transação é estar ciente de todas as transações. No modelo baseado em casa da moeda, a casa da moeda estava ciente de todas as transações e decidia qual chegou primeiro. Para realizar isso sem um terceiro confiável, as transações devem ser anunciadas publicamente [1], e precisamos de um sistema para que os participantes concordem com uma única história da ordem em que foram recebidos. O beneficiário precisa de prova de que no momento de cada transação, a maioria dos nós concordou que foi a primeira recebida.

3. Servidor de Timestamp

A solução que propomos começa com um servidor de timestamp. Um servidor de timestamp funciona fazendo hash de um bloco de itens a serem registrados no timestamp e publicando amplamente o hash, como em um jornal ou postagem no Usenet [2-5]. O timestamp prova que os dados devem ter existido na época, obviamente, para entrar no hash. Cada timestamp inclui o timestamp anterior em seu hash, formando uma cadeia, com cada timestamp adicional reforçando os anteriores.

4. Prova de Trabalho

Para implementar um servidor de timestamp distribuído em uma base peer-to-peer, precisaremos usar um sistema de prova de trabalho semelhante ao Hashcash de Adam Back [6], em vez de jornais ou postagens Usenet. A prova de trabalho envolve a busca por um valor que, quando hashado, como com SHA-256, o hash comece com um número de bits zero. O trabalho médio necessário é exponencial no número de bits zero necessários e pode ser verificado executando um hash único.

Para nossa rede de timestamp, implementamos a prova de trabalho incrementando um nonce no bloco até encontrar um valor que dê ao hash do bloco os bits zero necessários. Uma vez que o esforço da CPU foi gasto para fazer com que ele satisfaça a prova de trabalho, o bloco não pode ser alterado sem refazer o trabalho. À medida que blocos posteriores são encadeados após ele, o trabalho para alterar o bloco incluiria refazer todos os blocos depois dele.

A prova de trabalho também resolve o problema de determinar a representação na tomada de decisões em maioria. Se a maioria fosse baseada em um endereço IP, um voto, poderia ser subvertida por qualquer pessoa capaz de alocar muitos IPs. A prova de trabalho é essencialmente um processador, um voto. A decisão da maioria é representada pela cadeia mais longa, que tem o maior esforço de prova de trabalho investido nela. Se a maioria do poder de CPU for controlada por nós honestos, a cadeia honesta crescerá mais rapidamente e superará quaisquer cadeias concorrentes. Para modificar um bloco anterior, um atacante teria que refazer a prova de trabalho do bloco e de todos os blocos após ele e depois alcançar e superar o trabalho dos nós honestos. Mostraremos posteriormente que a probabilidade de um atacante mais lento se recuperar diminui exponencialmente à medida que blocos subsequentes são adicionados.

Para compensar o aumento da velocidade do hardware e o interesse variável em executar nós ao longo do tempo, a dificuldade da prova de trabalho é determinada por uma média móvel visando um número médio de blocos por hora. Se forem gerados muito rapidamente, a dificuldade aumenta.

5. Rede

Os passos para executar a rede são os seguintes:

  1. Novas transações são transmitidas para todos os nós.
  2. Cada nó coleta novas transações em um bloco.
  3. Cada nó trabalha para encontrar uma prova de trabalho difícil para seu bloco.
  4. Quando um nó encontra uma prova de trabalho, ele transmite o bloco para todos os nós.
  5. Os nós aceitam o bloco apenas se todas as transações nele forem válidas e não forem gastas.
  6. Os nós expressam sua aceitação do bloco trabalhando para criar o próximo bloco na cadeia, usando o hash do bloco aceito como o hash anterior.

Os nós sempre consideram a cadeia mais longa como a correta e continuam trabalhando para estendê-la. Se dois nós transmitirem versões diferentes do próximo bloco simultaneamente, alguns nós podem receber um ou outro primeiro. Nesse caso, eles trabalham no primeiro que receberam, mas salvam o outro ramo caso ele se torne mais longo. O desempate será feito quando a próxima prova de trabalho for encontrada e um ramo se tornar mais longo; os nós que estavam trabalhando no outro ramo então mudarão para o mais longo.

As novas transmissões de transações não precisam necessariamente atingir todos os nós. Desde que atinjam muitos nós, elas entrarão em um bloco em breve. As transmissões de bloco também são tolerantes a mensagens descartadas. Se um nó não receber um bloco, ele o solicitará quando receber o próximo bloco e perceber que perdeu um.

6. Incentivo

Por convenção, a primeira transação em um bloco é uma transação especial que inicia uma nova moeda de propriedade do criador do bloco. Isso adiciona um incentivo para os nós suportarem a rede e fornece uma maneira de distribuir inicialmente as moedas em circulação, uma vez que não há uma autoridade central para emiti-las. A adição constante de uma quantidade constante de novas moedas é análoga aos mineradores de ouro que gastam recursos para adicionar ouro em circulação. Em nosso caso, é tempo de CPU e eletricidade gastos.

O incentivo também pode ser financiado com taxas de transação. Se o valor de saída de uma transação for menor que seu valor de entrada, a diferença é uma taxa de transação que é adicionada ao valor do incentivo do bloco que contém a transação. Uma vez que um número predeterminado de moedas tenha entrado em circulação, o incentivo pode transitar completamente para taxas de transação e ser absolutamente livre de inflação.

O incentivo pode ajudar a encorajar os nós a permanecerem honestos. Se um atacante ganancioso for capaz de reunir mais poder de CPU do que todos os nós honestos, ele terá que escolher entre usá-lo para fraudar as pessoas roubando seus pagamentos de volta, ou usá-lo para gerar novas moedas. Ele deveria achar mais lucrativo jogar seguindo as regras, tais regras que o favorecem com mais moedas novas do que todos os outros combinados, do que minar o sistema e a validade de sua própria riqueza.

7. Recuperando Espaço em Disco

Uma vez que a transação mais recente em uma moeda tenha sido enterrada sob blocos suficientes, as transações gastas antes dela podem ser descartadas para economizar espaço em disco. Para facilitar isso sem quebrar o hash do bloco, as transações são hashadas em uma Merkle Tree [7] para incluir apenas a raiz no hash do bloco. Blocos antigos podem então ser compactados cortando ramos da árvore. Os hashes internos não precisam ser armazenados.

Um cabeçalho de bloco sem transações seria de cerca de 80 bytes. Se supusermos que blocos são gerados a cada 10 minutos, 80 bytes * 6 * 24 * 365 = 4,2MB por ano. Com sistemas de computador geralmente vendidos com 2 GB de RAM em 2008 e a lei de Moore prevendo crescimento atual de 1,2 GB por ano, o armazenamento não deve ser um problema mesmo que os cabeçalhos dos blocos precisem ser mantidos na memória.

8. Verificação Simplificada de Pagamento

É possível verificar pagamentos sem executar um nó de rede completo. Um usuário só precisa manter uma cópia dos cabeçalhos de bloco da cadeia mais longa de prova de trabalho, que ele pode obter consultando nós de rede até se convencer de que tem a cadeia mais longa, e obter o ramo Merkle ligando a transação ao bloco em que é timestamped. Ele não pode verificar a transação por si mesmo, mas vinculando-a a um local na cadeia, ele pode ver que um nó de rede a aceitou, e blocos adicionados posteriormente confirmam ainda mais que a rede a aceitou.

Assim, a verificação é confiável desde que nós honestos controlem a rede, mas é mais vulnerável se a rede for dominada por um atacante. Enquanto os nós de rede podem verificar transações por si mesmos, o método simplificado pode ser enganado por transações fabricadas por um atacante pelo tempo que o atacante puder continuar superando a rede. Uma estratégia para se proteger disso seria aceitar alertas dos nós de rede quando detectarem um bloco inválido, fazendo com que o software do usuário faça o download do bloco completo e das transações alertadas para confirmar a inconsistência. Empresas que recebem pagamentos frequentes provavelmente ainda desejarão executar seus próprios nós para uma segurança mais independente e verificações mais rápidas.

9. Combinando e Dividindo o Valor

Embora fosse possível manipular moedas individualmente, seria desajeitado fazer uma transação separada para cada centavo em uma transferência. Para permitir que o valor seja dividido e combinado, as transações contêm múltiplas entradas e saídas. Normalmente haverá ou uma única entrada de uma transação anterior maior ou várias entradas combinando quantias menores, e no máximo duas saídas: uma para o pagamento e outra retornando o troco, se houver, de volta ao remetente.

Deve-se observar que a dispersão, onde uma transação depende de várias transações, e essas transações dependem de muitas mais, não é um problema aqui. Nunca há necessidade de extrair uma cópia completa e independente do histórico de transações.

10. Privacidade

O modelo bancário tradicional alcança um nível de privacidade limitando o acesso às informações apenas para as partes envolvidas e ao terceiro confiável. A necessidade de anunciar todas as transações publicamente impede esse método, mas a privacidade ainda pode ser mantida quebrando o fluxo de informações em outro lugar: mantendo as chaves públicas anônimas. O público pode ver que alguém está enviando uma quantidade para outra pessoa, mas sem informações que vinculem a transação a alguém em específico. Isso é semelhante ao nível de informações liberadas pelas bolsas de valores, onde o tempo e o valor das negociações individuais

https://nakamotoinstitute.or...
Show original content

2 users upvote it!

0 answer