Boa noite amigos!

Começamos, no último versículo, a tradução de “Bitcoin: A Peer-to-Peer Eletronic Cash System“, hoje a segunda.
5. Rede
Os passos para rodar a rede são os seguintes:
- Novas transações são emitidas para todos os nodos.
- Cada nodo coleta novas transações em um bloco.
- Cada nodo trabalha para encontrar uma prova de trabalho difícil para seu bloco.
- Quando um nodo encontra uma prova de trabalho, ele emite o bloco para todos os nodos.
- Os nodos aceitam o bloco apenas se todas as transações nele são válidas e ainda não foram gastas.
- Os nós expressam sua aceitação do bloco trabalhando na criação do próximo bloco na cadeia, usando o hash do bloco aceito como o hash anterior.
Os nodos sempre consideram a cadeia mais longa como a correta e continuarão trabalhando para estendê-la. Se dois nós transmitem versões diferentes do próximo bloco simultaneamente, alguns nós podem receber um ou o outro primeiro. Nesse caso, eles trabalham no primeiro que receberam, mas salvam o outro ramo para o caso de ficar mais longo. O empate será desfeito quando a próxima prova de trabalho for encontrada e uma ramificação ficar mais longa; os nós que estavam trabalhando na outra ramificação mudarão para a mais longa.
As novas transmissões de transação não precisam necessariamente atingir todos os nós. Contanto que alcancem muitos nós, eles entrarão em um bloco em pouco tempo. As transmissões em bloco também são tolerantes com mensagens perdidas. 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 apoiarem a rede e fornece uma maneira de inicialmente distribuir as moedas em circulação, uma vez que não existe uma autoridade central para emiti-las. O acréscimo constante de uma quantidade constante de novas moedas é análogo ao gasto de recursos dos mineiros de ouro para adicionar ouro à circulação. Em nosso caso, é o tempo de CPU e a eletricidade que são 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 do que seu 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 tenha entrado em circulação, o incentivo pode mudar inteiramente para taxas de transação e ser completamente livre de inflação.
O incentivo pode ajudar a encorajar os nodos a permanecerem honestos. Se um atacante ganancioso é capaz de reunir mais poder de CPU do que todos os nodos honestos, ele teria que escolher entre usá-lo para fraudar pessoas roubando seus pagamentos ou usá-lo para gerar novas moedas. Ele deveria achar mais lucrativo jogar de acordo com as regras, 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 última transação em uma moeda é enterrada sob blocos suficientes, as transações gastas podem ser descartadas para economizar espaço em disco. Para facilitar isso sem quebrar o hash do bloco, as transações são hasheadas em uma Árvore Merkle [7] [2] [5], com apenas a raiz incluída no hash do bloco. Blocos antigos podem ser compactados removendo galhos da árvore. Os hashes internos não precisam ser armazenados.
Um cabeçalho de bloco sem transações teria cerca de 80 bytes. Se supormos que os blocos são gerados a cada 10 minutos, 80 bytes * 6 * 24 * 365 = 4,2 MB por ano. Com os sistemas de computador normalmente vendendo com 2 GB de RAM em 2008 e a Lei de Moore prevendo um crescimento atual de 1,2 GB por ano, o armazenamento não deve ser um problema, mesmo que os cabeçalhos dos blocos devam ser mantidos na memória.
[7] R.C. Merkle, “Protocols for public key cryptosystems,” In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980
[2] H. Massias, X.S. Avila, and J.-J. Quisquater, “Design of a secure timestamping service with minimal trust requirements,” In 20th Symposium on Information Theory in the Benelux, May 1999
[5] S. Haber, W.S. Stornetta, “Secure names for bit-strings,” In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997.
Vista a segunda parte desta tradução, no próximo versículo a terceira.
