Site menu Bitcoin: tradução seletiva do artigo original
e-mail icon
Site menu

Bitcoin: tradução seletiva do artigo original

e-mail icon

O texto traduzido está com tipo normal. Meus comentários, a começar por este, estão em itálico.

A motivação de traduzir o "paper" original, ainda que parcialmente, veio da constatação que muita gente tem escrito coisas sobre o Bitcoin — geralmente sem conhecimento de causa, e ainda por cima adicionando erros técnicos e comentários políticos tendenciosos.

Dando uma olhada nos textos disponíveis, pareceu-me que o artigo original que descreve o Bitcoin, de Satoshi Nakamoto, ainda é a melhor referência. É certo que a clareza do trabalho original ajudou muito na rápida adoção do Bitcoin.

Nos comentários, farei uma tentativa de tornar o texto inteligível para pessoas de fora da área da informática. Não creio que vou atingir plenamente este objetivo, mas não custa tentar. Por conta disso, vez por outra vou mudar um pouco o estilo do texto, desviando um pouco da tradução exata.

Revisão: Jaison Carvalho

Bitcoin: um sistema de dinheiro eletrônico peer-to-peer.
Satoshi Nakamoto
www.bitcoin.org

Resumo

Uma versão puramente peer-to-peer [1] de dinheiro eletrônico permitiria remessa de pagamentos on-line direta entre as partes interessadas, sem passar por uma instituição financeira. Assinaturas digitais [2] provêem parte da solução, mas os principais benefícios são perdidos se um intermediário confiável ainda é necessário a fim de evitar duplo dispêndio [3].

[1] "Peer-to-peer" é uma rede onde há pouca ou nenhuma coordenação central. Um exemplo é o Bittorrent, onde os usuários obtém arquivos uns dos outros; não existe um repositório central de filmes piratas :) Um contra-exemplo seria o Facebook, totalmente centralizado. Um serviço "peer-to-peer" lida melhor com problemas catastróficos de rede.

[2] Para entender como funciona a assinatura digital, é preciso entender o conceito de chave pública, que será introduzido mais à frente.

[3] Duplo dispêndio é quando uma mesma "moeda digital" é gasta duas ou mais vezes, já que é fácil fazer cópias de qualquer coisa em formato digital.

Nós propomos uma solução para o problema do duplo dispêndio usando uma rede peer-to-peer. A rede "carimba" o horário [1] nas transações por meio de hashes [2], dentro de uma cadeia [3] contínua de prova de trabalho [4] baseada em hashes, formando um registro que não pode ser modificado sem refazer toda a prova de trabalho.

[1] Do inglês "timestamp": atribuir, de forma indelével, data e hora a um objeto digital qualquer. Este carimbo não precisa ser necessariamente a hora local; pode ser hora de Greenwich, ou um simples número crescente.

[2] "Hash", às vezes traduzido como "somatório" ou "resumo", é um número de tamanho fixo, que relaciona-se com um código maior. Por exemplo, o dígito verificador é um "hash", assim como os últimos dois dígitos do CPF. A relação entre o dígito e o número principal permite verificar se o código (da conta ou do CPF) é válido.

A principal característica do "hash" é ser irreversível: não podemos obter o código original a partir do "hash".

Um "hash" serve para muitas coisas, por exemplo para provar conhecimento. Se o celular de uma pessoa é 8811-1256, eu posso "provar" (com 99% de certeza) que conheço o número dele fornecendo apenas o número "56". Ou seja, provei meu conhecimento sem ter revelado o número completo.

Por outro lado, fornecer o prefixo "88" não seria uma prova muito convincente do meu conhecimento, ou seja, não é um bom "hash". (Voce saberia dizer porquê?)

[3] A palavra "cadeia" está sendo usada aqui como sinônimo de seqüência. Cada bloco de transações do Bitcoin possui uma referência ao bloco anterior, formando assim uma cadeia ou corrente bastante comprida.

[4] "Prova de trabalho", neste contexto, é um número, seqüência de números ou um "hash", cujo cálculo num computador seja reconhecidamente demorado.

Exemplo: obter uma longa seqüência de números primos. Se alguém apresenta esta sequência já calculada, está provando que trabalhou nela. Este trabalho custou tempo e dinheiro, já que computador gasta eletricidade.

Um análogo do mundo real é o livro-caixa ou o livro contábil uma empresa. É perfeitamente possível forjar toda uma contabilidade e os respectivos comprovantes para enganar um auditor ou fiscal, mas é extremamente trabalhoso. A credibilidade dos livros é derivada em grande parte da "prova de trabalho" que sua existência representa.

A cadeia mais longa [1] serve não apenas como prova da seqüência de eventos testemunhada pelos participantes, mas também como prova de que ela veio do maior parque [2] de poder de processamento. Enquanto a maior parte do poder de processamento for controlada por elementos que não estejam em conluio para atacar a rede, eles produzirão a cadeia mais longa e estarão à frente dos participantes hostis.

[1] Uma das idéias centrais do Bitcoin é que absolutamente todas as transações têm uma "data e hora" única; não há duas transações concomitantes. Assim, a "história de transações" tem uma seqüência perfeitamente conhecida.

[2] "Parque de poder de processamento" significa o poder combinado de todos os computadores dos participantes da rede Bitcoin. Isto inclui simples usuários, casas de câmbio Bitcoin, os "mineiros", etc.

A rede em si precisa de uma infra-estrutura muito pequena. As mensagens são difundidas [1] na base do melhor esforço [2] e elementos podem deixar e reingressar na rede à vontade, aceitando a maior cadeia de prova de trabalho como autenticação do que aconteceu enquanto estiveram fora.

[1] Difusão é a forma mais "burra", porém mais resistente, de transmitir informações na rede. Cada participante comunica uma mensagem nova aos participantes com quem tem contato direto, e cedo ou tarde todos terão recebido a mensagem. Não é tão eficiente porque um mesmo participante receberá a mesma mensagem diversas vezes.

[2] "Melhor esforço" significa que o participante individual não verifica se a mensagem foi realmente entregue. A certeza de que a mensagem será entregue é proporcionada pelo sistema de difusão.

1. Introdução

O comércio na Internet veio a depender quase que exclusivamente das instituições financeiras, no papel de intermediários confiáveis, para processar pagamentos eletrônicos. Embora o sistema funcione bem o suficiente para a maioria das transações, ele ainda sofre da fraqueza inerente de um modelo baseado em confiança.

Transações completamente irreversíveis não são realmente possíveis, já que as instituições financeiras não podem excusar-se de mediar disputas. O custo da mediação encarece as transações, na prática impondo um valor mínimo aceitável para cada transação [1], impedindo a existência de transações pequenas e casuais.

[1] Aqui a minha tradução desviou bastante do original. Por exemplo, preferi usar "valor mínimo" que "tamanho mínimo". No mais, todo mundo está familiarizado com o fato de comerciantes não gostarem quando você paga uma conta de R$ 2,50 com cartão de crédito.

Há um custo embutido no sistema, pelo fato das transações bancárias serem reversíveis. Se uma transação pode ser desfeita, aumenta a necessidade de um intermediário confiável. Comerciantes temem seus clientes, requisitando deles mais informações pessoais do que seria, de outra forma, necessário. Uma certa taxa de fraude é aceita como inevitável.

Estes custos e incertezas no pagamento podem ser evitadas pelo uso de dinheiro vivo, porém ele implica pagamento presencial. Nenhum mecanismo existe para fazer pagamentos através de um canal de comunicações — não sem a figura de um intermediário confiável.

O que é necessário, é um sistema de pagamento eletrônico baseado em criptografia em lugar de confiança, permitindo duas partes quaisquer transacionarem diretamente, sem a figura do intermediário confiável. Transações que sejam tecnicamente difíceis de reverter protegeriam os vendedores das fraudes, e mecanismos rotineiros de custódia poderiam ser implementados facilmente para proteger os compradores. [1]

[1] Note que o Bitcoin não resolve o problema que serviços de proteção ao pagador, como o depósito judicial ou o MercadoPago, se propõem a resolver.

Neste artigo, vamos propor uma solução para o problema do duplo dispêndio lançando mão de um servidor de carimbo de horário, distribuído e peer-to-peer de modo a gerar prova matemática da ordem cronológica das transações.

O sistema é seguro desde que os participantes honestos controlem, no somatório geral, mais poder de processamento que qualquer grupo coordenado de participantes hostis.

2. Transações

Nós definimos uma moeda digital (unidade monetária digital) como uma cadeia de assinaturas digitais. Cada dono transfere a moeda para o próximo dono assinando o hash [1] da transação anterior acompanhada da chave pública [2] do próximo dono [3], e adicionando estas informações ao final da moeda [4]. O recebedor pode verificar as assinaturas de modo a fiscalizar a cadeia de propriedade.

[1] Como o "hash de transação" é um código baseado na transação, ele representa a transação para todos os efeitos práticos. Assinar digitalmente o "hash" é equivalente a assinar a transação inteira.

[2] Criptografia de chave pública é aquela onde duas chaves diferentes são utilizadas. A chave pública encripta a mensagem, mas é preciso conhecer a chave privada para decriptá-la. A chave pública pode ser amplamente divulgada sem quebra da segurança.

A assinatura digital utiliza este mecanismo de forma invertida: o assinante encripta a mensagem (ou um "hash" da mensagem) usando a chave *privada*, que só ele conhece. Qualquer outra pessoa pode conferir a legitimidade da assinatura, "decriptando" a mensagem com a chave pública.

[3] Quando o dono anterior da moeda assina digitalmente a chave pública do próximo dono, está reconhecendo que transferiu a moeda para ele.

[4] Imagine que a "moeda digital" é na verdade um arquivo no computador, que pode ser modificado e, neste caso, ampliado.

O problema é que o recebedor não tem como saber se o pagador gastou a mesma moeda com outros recebedores (problema do duplo dispêndio). Uma solução comum é introduzir uma autoridade central, uma "Casa da Moeda" ou banco central, que verifica cada transação.

Após cada transação, a moeda digital tem de ser devolvida ao banco central, que emite uma nova moeda. Apenas moedas emitidas pelo banco central são confiáveis no tocante ao duplo dispêndio.

O problema desta solução é que o destino do sistema monetário depende unicamente da instituição mantenedora do banco central, e toda transação tem de passar por ela, exatamente como num banco.

Precisamos que o recebedor tenha uma maneira de descobrir que os donos anteriores da moeda não assinaram nenhuma outra transação. Para nossos propósitos, a transação mais antiga é a que vale, portanto não vamos nos importar com tentativas subseqüentes de duplo dispêndio.

A única forma de confirmar a inexistência de uma transação, é estar ciente de todas as transações [1]. No modelo baseado em banco central, este estava ciente de todas as transações e decidia qual tinha primazia.

[1] Este é um conceito central do Bitcoin: os clientes completos fazem download de *todo* o histórico de *todas* as transações já realizadas. A redundância massiva deste histórico, copiado em milhões de computadores mundo afora, é uma das garantias.

Este esquema permite inclusive que um participante receba um pagamento sem nunca ter conectado na rede. Quando (ou se) o novo dono da moeda ingressar na rede, obterá todo o histórico e localizará as transações que lhe dizem respeito.

Para obter o mesmo sem um intermediário confiável, as transações precisam ser anunciadas publicamente, e precisamos de um sistema em que os participantes concordem com um único histórico de transações ordenadas [1]. O recebedor precisa de uma prova que, no momento de cada transação, a maioria dos participantes concorda que ela foi a primeira a ser recebida.

[1] Garantir a ordem das transações é importante pois é como o sistema sabe quando um participante recebeu um pagamento, e se ainda está de posse das moedas digitais.

3. Servidor de carimbo

A solução que propomos começa com um servidor de carimbo de data/hora. Um servidor de carimbo funciona obtendo um hash de um bloco de itens [1] a ser carimbado, e divulgando amplamente este hash, talvez num jornal [2] ou num post da Usenet.

[1] Mais à frente, veremos que o bloco de itens é na verdade um bloco de transações. O "hash" é um código que representa o bloco inteiro, para alguns efeitos práticos.

[2] Tem aquele velho truque de fotografar ou deixar-se fotografar segurando um jornal do dia. Não é um "timestamp" perfeito mas fornece evidência de quando a fotografia foi feita. Mais eficiente é conseguir que o jornal emita uma nota ou artigo sobre determinado tema, caso em que a coleção do jornal assume o papel de intermediário confiável.

O carimbo prova que os dados obrigatoriamente existiam no momento da publicação, obviamente para calcular-se o hash.

Cada carimbo inclui o carimbo anterior no cálculo do hash, e cada carimbo adicional aumenta a confiança nos antecessores. [1]

[1] Vemos que neste caso o carimbo de data/hora realmente não usa a hora civil. O objetivo deste esquema é produzir uma linha do tempo imutável, não importando se o tempo civil decorrido entre dois blocos foi dez segundos ou dez anos.

4. Prova de trabalho

Para implementar um serviço de carimbo de forma distribuída peer-to-peer, precisamos usar um sistema de prova de trabalho, similar ao HashCash [1] de Adam Back, em lugar do jornal ou post Usenet.

[1] HashCash não é moeda digital. É um sistema que emprega prova de trabalho para filtrar spam, consumindo um segundo de CPU por e-mail. Isto é um custo razoável para quem manda algumas dezenas de e-mails por dia, mas (em tese) é insuportável para quem manda milhões ou bilhões de spams.

A prova de trabalho envolve procurar por um bloco, cujo hash comece com um certo número de zeros [1]. Na média, o trabalho exigido para encontrar um hash assim aumenta exponencialmente com o número requerido de zeros.

[1] O valor do "hash" é imprevisível. Para obter um "hash" no valor desejado, o único jeito é tentar diferentes códigos até topar com um "hash" bom.

Já a verificação da validade do hash é rápida, sendo levada a cabo calculando-se o hash apenas uma vez.

Para nossa rede de carimbo, nós implementamos a prova de trabalho incrementando um número mágico [1] pertencente ao bloco, até que um dado número mágico faça o hash do bloco resultar com a qualidade exigida (começando com zeros).

[1] Um "número mágico" é um número que só tem significado especial no contexto onde ele é utilizado. Neste caso, o número mágico do bloco é aquele que vai permitir "fechar" o bloco. Cada bloco tem um número mágico diferente (a chance de coincidência é minúscula) e só se pode descobrí-lo por tentativa e erro.

A prova de trabalho também resolve o problema de determinar a representação na tomada de decisão por maioria. Se a maioria fosse baseada em "um endereço IP, um voto" ela seria facilmente subvertida por qualquer um que pudesse obter muitos endereços IP.

Prova de trabalho é essencialmente "uma CPU, um voto". A decisão majoritária é representada pela cadeia mais longa, que demanda o maior volume de trabalho investido nela [1]. Se uma maioria de poder de processamento é controlada pelos participantes honestos, a cadeia legítima crescerá mais rápido e ultrapassará todas as cadeias concorrentes.

[1] Como a busca pelo "número mágico" do bloco é um processo de tentativa e erro, ele é totalmente paralelizável. Se um atacante possuir um supercomputador equivalente a 1000 PCs, basta haver 1001 participantes honestos, cada um com seu PC doméstico, para formar maioria. Neste caso, não há vantagem no fato do poder de processamento estar concentrado.

Para modificar um bloco pretérito, um participante desonesto teria de refazer todo o trabalho sobre o bloco, bem como sobre todos os blocos sucessores, e então alcançar e ultrapassar os competidores honestos.

Mostraremos mais à frente que a probabilidade de um atacante lento alcançar os competidores diminui exponencialmente conforme mais blocos são encadeados.

Para compensar a crescente velocidade dos computadores e o interesse variável dos participantes ao longo do tempo, a dificuldade da prova de trabalho é dinâmica, sendo determinada por uma média móvel cujo alvo é um certo número de blocos por hora. Se os blocos estão sendo gerados depressa demais, a dificuldade aumenta [1].

[1] A dificuldade do Bitcoin é atualizada aproximadamente a cada duas semanas, de modo que em média um bloco seja fechado a cada dez minutos. Conforme veremos, este ritmo regula tanto a confirmação das transações quanto a geração de novas moedas.

Na verdade, a atualização acontece após 2016 blocos gerados, o que dá duas semanas se o ritmo de geração for exatamente 10 minutos por bloco.

5. Rede

Os passos para fazer a rede funcionar são os seguintes:

  1. Novas transações são difundidas para todos os participantes.
  2. Cada participante coleta novas transações para formar um bloco [1].
  3. Cada participante trabalha no problema difícil de encontrar o hash de prova de trabalho para o bloco [2].
  4. Quando um participante encontra o hash de prova de trabalho, ele difunde o bloco para os demais participantes.
  5. Os outros participantes apenas aceitam o novo bloco, se todas as transações contidas nele são válidas, e não sejam encontráveis em outros blocos [3].
  6. Os participantes expressam aceitação do novo bloco iniciando o trabalho num próximo bloco da cadeia, usando o hash do bloco aceito como o hash anterior.

[1] Aqui finalmente se esclarece do que os blocos são feitos. São coleções de transações.

[2] Hoje em dia a dificuldade de fechar o bloco é tão grande que apenas "pools" de mineração e participantes que possuem computadores especialmente construídos para a tarefa (ASICs) têm feito este trabalho. Fazer isso num computador doméstico seria perda de tempo.

[3] Exatamente para evitar o problema do duplo dispêndio.

Os participantes sempre consideram a cadeia mais longa como a correta, e trabalharão para estendê-la. Se dois participantes difundem diferentes versões de um novo bloco [1] simultaneamente, é imprevisível qual versão será recebida primeiro pelos demais.

[1] É perfeitamente possível que isto aconteça de forma "honesta". Dois participantes podem encontrar diferentes números mágicos e diferentes "hashes", ambos preenchendo o requisito de começar com vários zeros. Os parágrafos seguintes esclarecem como o conflito é resolvido.

Neste caso, eles começam a trabalhar imediatamente sobre o primeiro bloco que recebem, mas salvam as demais versões para o caso de uma delas passar a integrar a cadeia mais longa [1].

[1] O artigo não menciona o fato de que o comprimento total dos blocos (em transações), não apenas a contagem de blocos, é levada em conta nesta métrica. Isto evita que um atacante crie rapidamente uma cadeia longa composta de blocos minúsculos, mais fáceis de "fechar".

O conflito é resolvido quando a próxima prova de trabalho é resolvida e uma das possíveis cadeias torna-se mais longa. Os participantes que estavam trabalhando para alongar as outras versões, desistem e passam a trabalhar na nova cadeia mais longa.

A difusão de novas transações não precisa necessariamente atingir todos os participantes. Desde que muitos participantes sejam atingidos, as transações acabarão incluídas em algum bloco novo [1].

[1] Quando um candidato a bloco é desprezado, as transações que estavam nele e porventura não estejam também no bloco definitivo, voltam ao estado pendente e entram no próximo bloco.

A difusão de novos blocos também é tolerante a perdas. Se um participante não receber um bloco, ele terá de requisitá-lo quando receber um bloco subseqüente e descobrir que não possui um elo da cadeia.

6. Incentivo

Por convenção, a primeira transação de um bloco é uma transação especial que cria uma nova moeda digital, cujo dono é o criador do bloco [1]. Isto cria um incentivo para os participantes suportarem a rede, e proporciona um caminho para a distribuição inicial de novas moedas à circulação, já que não há autoridade central para cunhá-las.

[1] Este é o "pulo do gato" do Bitcoin: o trabalho despendido em autenticar transações é exatamente o que conta para "minerar" novas moedas. Isto refuta parcialmente o argumento que minerar Bitcoins é desperdício de recursos. (Já a energia elétrica consumida pelos bancos convencionais não gera nenhum subproduto útil. Não pude resistir à tentação de um argumento político besta...)

A adição contínua de um volume constante [1] de novas moedas é análoga à mineração do ouro, que despende recursos para colocar mais ouro em circulação [2]. No nosso caso, os recursos despendidos são poder de processamento (CPUs, equipamentos) e eletricidade.

[1] Lembrando que a dificuldade de fechar o bloco é regulada de forma que, em média, um novo bloco é encontrado a cada dez minutos.

[2] O Bitcoin especifica uma remuneração decrescente por bloco, de modo que o total de moedas cresce assintoticamente, nunca ultrapassando 21 milhões. Por outro lado, o ouro fica progressivamente mais difícil de encontrar e obviamente existe um volume total de ouro na crosta terrestre, mas ninguém sabe exatamente quanto.

O incentivo também pode ser financiado por taxas de transação. Se o valor de saída da transação for menor que o valor de entrada, a diferença é uma taxa de transação que é adicionada ao valor de incentivo do bloco que contém a transação.

Uma vez que um número predeterminado de moedas tiverem sido postas em circulação, o incentivo pode ser completamente baseado nas taxas, e ser completamente livre de inflação [1].

[1] Este é um aspecto polêmico do Bitcoin, porque muitos economistas atuais são particularmente alérgicos à deflação (e, porque não dizê-lo, tolerantes a inflação, esses neokeynesianos). Considerando que sempre haverá uma destruição de Bitcoins aqui e ali, porque o usuário perdeu a chave privada ou a senha, é difícil negar que o Bitcoin é deflacionário.

O incentivo pode ajudar a encorajar os participantes a permanecerem honestos. Se um atacante ganancioso puder reunir mais poder de processamento que todos os participantes honestos, ele teria de optar entre usá-lo para cometer fraude (alterando os blocos de pagamentos), ou usá-lo para gerar novas moedas.

Provavelmente ele acharia mais vantajoso manter-se honesto, pois as regras da rede renderiam mais moedas novas para ele do que para todos os demais participantes juntos. A outra opção é fraudar o sistema, o que abalaria a confiança no mesmo e destruiria a própria riqueza almejada pelo atacante.

7. Recuperando espaço em disco

Uma vez que a última transação envolvendo uma moeda está "enterrada" sob muitos blocos, as transações anteriores podem ser descartadas de modo a poupar espaço em disco [1].

[1] De fato, o problema de cada usuário ter de puxar e armazenar todo o histórico vai tornar-se impraticável se o Bitcoin alcançar grande aceitação.

Para facilitar isto sem invalidar o hash dos blocos, as transações são hasheadas numa "Árvore de Merkle", onde apenas a raiz é levada em conta para o hash do bloco. Blocos velhos podem então ser compactados cortando-se os galhos da árvore. Os hashes interiores não precisam ser armazenados.

Colocando a questão em termos mais práticos: contas com saldo zero podem ter suas transações elididas (removidas) quando não há interesse em conhecer todo o histórico de todas as moedas. Mas isto só pode ser feito quando as contas de pagamento (para onde foram as moedas) também tenham saldo zero.

Por exemplo, se a conta A é de um "mineiro", que transferiu tudo que tinha para B, que repassou tudo para C, apenas a transação B-C é essencial conhecer, mesmo que as contas A e B sejam reativadas no futuro.

Como a transação A-B está cristalizada num bloco, descartar a transação implica em descartar todo o bloco, e isto só pode acontecer se as demais transações do bloco forem igualmente redundantes. Num cenário em que os usuários de Bitcoin vão criando novas chaves e abandonando as antigas, o histórico pode ser regularmente "faxinado".

Um cabeçalho de bloco sem transações teria em torno de 80 bytes. Assumindo que novos blocos são gerados a cada 10 minutos, isso resulta em 4.2MB por ano [1]. Considerando a evolução tecnológica, o volume de armazenamento não deve ser um problema mesmo que os cabeçalhos de bloco precisassem ficar na memória RAM.

[1] Aqui eu pulei os cálculos e simplifiquei o texto, por brevidade.

8. Verificação simplificada de pagamentos

É possível verificar pagamentos sem participação integral na rede [1]. Um usuário só precisa manter cópia dos cabeçalhos de blocos da cadeia mais longa, que ele pode obter consultando os participantes da rede, até estar convencido de realmente possuir a cadeia mais longa; e então obter o galho de Merkle que liga a transação ao respectivo bloco.

Ele não pode verificar a transação por si mesmo. Mas, ligando-a a um elo da cadeia, ele constata que um outro participante da rede aceitou a transação, e os blocos adicionados a seguir corroboram a aceitação por parte da rede.

Desta forma, a verificação é confiável desde que os participantes honestos controlem a rede, mas é mais vulnerável se a rede for subjugada por um atacante. Muito embora os participantes integrais possam 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 manter a rede subjugada.

Uma estratégia de proteção contra este caso seria aceitar alertas dos participantes quando eles detectarem um bloco inválido, prevenindo o software do usuário para que ele faça download do bloco completo e das transações contestadas para confirmar a inconsistência.

Comércios que recebam pagamentos freqüentes, provavelmente vão querer ser participantes efetivos da rede, para que sua segurança seja mais independente e as verificações aconteçam mais rápido.

[1] Devo comentar ainda que, na prática, muita gente deixa seus bitcoins numa "casa de câmbio" online, não no seu PC. Neste caso não é necessário ser participante da rede, nem fazer download de nada. (O grande problema é se o site for à falência...)

9. Consolidação e fracionamento de valores

Embora seria possível lidar com moedas individualmente, seria custoso criar uma transação separada para cada fração monetária numa transferência.

De modo a permitir fracionamento e combinação de valores, cada transação possui múltiplas entradas e saídas [1]. Normalmente, haverá apenas uma entrada de uma transação anterior mais vultosa, ou múltiplas entradas de transações menores, e no máximo duas saídas: uma para o pagamento e outra devolvendo o troco (se houver) para o pagador [2].

[1] Aqui fica claro que não existe uma seqüência de bits que constitua uma moeda Bitcoin. A posse de uma moeda deriva de alguma transação no histórico global, que transferiu o recurso para o possuidor.

Um banco costuma manter o registro do saldo de cada conta, em paralelo ao extrato. Já uma conta ou carteira Bitcoin sempre deriva seu "saldo" da consolidação de todas as transações da conta. É mais semelhante a uma conta contábil antes do fechamento anual.

A criação de novas moedas ocorre na transação especial no início de cada bloco, que atribui novas moedas ao criador do bloco. Este tipo de transação é especial justamente porque não tem entrada de recursos; tem apenas uma saída, é análoga a um lançamento contábil de receita.

[2] Note a elegância com que o Bitcoin resolveu o problema de juntar moedas fracionárias, vindas de diferentes transações anteriores (e.g. pagar uma conta de 0,70 com duas moedas de 0,45) sem impor mais um fracionamento (e.g. 0,45 + 0,25 + 0,20). De certa forma, o Bitcoin "destrói" as moedas velhas e cria uma nova só para pagar o troco.

Note-se que o "espalhamento" [1] onde uma transação depende de múltiplas transações, que por sua vez dependem de muitas outras, não é um problema aqui. Nunca há a necessidade de extrair uma cópia de toda a história de uma transação.

[1] Do original "fan-out". O mecanismo de troco evita o problema potencial mencionado no parágrafo acima.

10. Privacidade

O modelo bancário tradicional atinge um certo nível de privacidade limitando o acesso da informação às partes envolvidas, e ao intermediário confiável.

A necessidade [do Bitcoin] de anunciar todas as transações publicamente inviabiliza esse modelo, mas a privacidade ainda pode ser mantida quebrando o fluxo de informação em outro ponto: mantendo as chaves públicas anônimas [1].

[1] Quando se instala um cliente Bitcoin no PC, ou quando se cria uma conta Bitcoin num "exchange" (casa de câmbio), um novo par de chaves é criado automaticamente, e a chave pública pode ser repassada a terceiros, para que e.g. possam mandar dinheiro.

Tanto a casa de câmbio quanto o software local permitem criar chaves adicionais, caso haja a necessidade ou desejo de privacidade conforme expresso no parágrafo acima do artigo.

O grande público pode ver que alguém está mandando dinheiro para outrem, mas não tem informações para ligar a transação às pessoas. É um nível de informação semelhante ao liberado pelas Bolsas de valores, onde a hora e o tamanho dos negócios individuais (a "fita") é publicada, mas a fita não contém a identidade dos negociantes.

Como proteção adicional, um novo par de chaves pode ser utilizado em cada transação, o que dificulta associar as múltiplas chaves com seu dono [1].

Um certo grau de associação é inevitável no caso de transações com múltiplas enterradas, que necessariamente revelam que as diversas entradas pertenciam a um mesmo indivíduo. O risco é que, se o dono de uma chave for revelado, as ligações podem revelar quais outras transações pertencem ao mesmo dono.

[1] Este mesmo mecanismo pode ser utilizado para criar moedas ou cédulas físicas, lastreadas em Bitcoin. A cédula pode ser e.g. uma "raspadinha" que contém a chave privada de uma conta, onde está depositado o valor correspondente. Raspando-se o papel, obtém-se a chave privada e acesso ao numerário digital.

Tal "dinheiro" poderia passar de mão em mão anonimamente, mas sempre existe a chance do emissor das cédulas cometer fraude. Vemos então que esta "materialização" de Bitcoins resolve um problema (privacidade perfeita) à custa de ressuscitar outro (confiar num intermediário).

11. Cálculos

Não traduzi esta parte, onde o autor calcula a probablidade de uma transação ser válida com base no número de blocos adicionais adicionados à cadeia.

No Bitcoin atual, seis "confirmações" (o bloco contendo a transação em escrutínio, seguido de mais cinco blocos novos) é o nível considerado perfeitamente seguro.

O mesmo patamar é utilizado no Litecoin, porém este gera blocos a cada 2.5 minutos em média, proporcionando uma confirmação em 15 minutos em vez de uma hora. É uma das vantagens alegadas do Litecoin.

12. Conclusão

Propusemos um sistema para transações eletrônicas que não depende de confiança. Começamos com o arcabouço usual de moedas criadas com assinaturas digitais, que oferecem controle forte da posse, mas é incompleto sem um método que evite o duplo dispêndio.

Para obter este último, propusemos uma rede peer-to-peer que usa prova de trabalho para registrar um histórico público de transações que rapidamente torna-se computacionalmente impossível de modificar, se os participantes honestos da rede controlam a maior parte do poder de processamento.

A rede é robusta na sua simplicidade sem estrutura. Os participantes trabalham todos ao mesmo tempo com pouca coordenação. Eles não precisam ser identificados, já que as mensagens não são roteadas para nenhum lugar em particular e precisam ser entregues apenas na base do melhor esforço.

Os participantes podem deixar e ingressar novamente na rede à vontade, aceitando a cadeia de prova de trabalho como prova do que aconteceu enquanto estiveram fora. Os participantes votam com seu poder de processamento, expressando sua aceitação de blocos válidos por meio do trabalho em estendê-los e rejeitando blocos inválidos mediante a recusa de trabalhar sobre eles. Quaisquer regras e incentivos necessários podem ser forçados a cumprirem-se com este mecanismo de consenso.

e-mail icon