segunda-feira, 9 de abril de 2018

A Rede Bitcoin

Leitura:
Capítulo 6 do livro "Mastering Bitcoin" de Andreas M. Antonopoulos

Audiovisual:
Bitcoin Protocol Tutorial #7: The Network
Bitcoin Q&A: What is the role of nodes?
Bitcoin Nodes Explained
Bitcoin Protocol Tutorial: Simplified Payment Verification
Bitcoin's P2P Network: The Soft Underbelly of Bitcoin

12 comentários:

  1. O material de hoje desfiou nuances importantes da rede Bitcoin como: suas quatro principais funções: Carteira - usando, principalmente, conceitos de chave pública e privada, Minerar - usando conceitos de curvar elípticas, Blockchain - usando hash e prova de trabalho e Nó de roteamento - usando a flexibilidade das redes P2P. A beleza do Bitcoin é exatamente reunir conceitos diversos, alguns já consagrados, e construir um novo conceito: a "propriedade sobre de um bit". E a flexibilidade vai além e permite construir protocolos diversos que tentam adicionar funcionalidade ou permitir que aplicação rode em hardware limitado (SPV - Simplified Payment Verification), com boa segurança.

    ResponderExcluir
  2. A rede do Bitcoin é composta por múltiplos nós, estes com diferentes funções e características.
    O Full-Node é um tipo de nó importante para a segurança do protocolo do Bitcoin que armazena uma cópia do blockchain e faz roteamento na rede, ele faz download de todo bloco e transação, e checa se estes estão de acordo com as regras de consenso do protocolo como se o valor da transação coinbase(a recompensa do bloco) está com a saída correta de bitcoins, se o formato de dados do bloco ou transação está correto, dentre outros.

    ResponderExcluir
  3. Foi interessante ver como os tipos de "nós" interagem na rede P2P, e como é importante que as pessoas que participam dessa ecossistema tenham noção das tecnologias usadas no bitcoin (mining technology, blockchain, P2P e etc), para terem melhor aproveitamento, dependendo do que querem fazer na rede.

    Uma situação que podemos analisar são os "nós" de validação completa (que contém a cópia completa do blockchain). Eles não precisam confiar em outros nós, devem ser auto-suficientes nas validações. Isso é interessante, pois na teoria construída no bitcoin, os nós nunca devem confiar em outros, por isso, possuem variadas métricas de validação de transações.

    Mas o custo de guarda todos o blockchain localmente (atualmente mais de 160MB), gera todo um estudo de possibilidades de ainda participar do processo de verificação de transações sem tê-la completa localmente. A aplicação do Merkle Trees veio para simplificar todo o processo: utilizando o cabeçalho dos blocos, é possível percorrer as transações por uma estrutura de árvore, sendo mais rápido a busca e verificação das transações. E isso permite que múltiplos “nós” façam esse processo em seus blocos, paralelizando o processo.

    ResponderExcluir
  4. Cada nó presente no Bitcoin tem a autonomia de decidir qual papel irá desempenhar na rede conforme transações ocorrem diariamente. Como a moeda opera sobre um protocolo P2P, todos os nós têm a capacidade de interagir entre si em busca de um consenso acerca dos trâmites da tecnologia. A divisão de papéis por entre os nós proporciona versatilidade à rede, já que certas decisões precisam de poder computacional elevado, permitindo que peers simples possam contribuir para a autonomia da rede. Achei bastante interessante a citação de Andreas M. Antonopoulos, possivelmente em uma conferência para um público indiano, de que um nó não precisa de terceiros para validar transações, ele mesmo tem a autonomia de checá-las e decidir de forma autoritária e independente se certas ações são maliciosas ou não. Em suma, tal fato permite aos nós controle sobre seus recursos na rede. Como visto em sala, fica difícil para um nó ter acesso a todas as transações não gastas por todos os peers da rede. Mas, ainda assim, o protocolo fornece aparatos que simplificam a verificação de tais transações, permitindo que um nó, dependendo do seu papel associado à rede, não precise de elevado poder computacional.

    ResponderExcluir
  5. As diferentes aplicações de softwares para rede bitcoin permitem ao usuario usar apenas aquilo
    que lhe convém, seja um simples carteria para transacionar bitcoin, um software de mineração para participar da validação e ter um chance de criar novos bitcoins em seu nome ou apenas fazer parte da rede. Porém, é notavel que para participar da rede de forma completa (autenticando as transações) é preciso de um notavel quantidade de armazenamento de dados, visto que a blockchain ocupa atualmente 160tb de espaço. Isto pode se tornar um problema serio para a rede uma vez que quanto maior a especificacao tecnicas para participar da rede, menor o numero de pessoas aptas, o que leva a problemas de centralização. O Bitcoin parece sofrer de um problema de escabilidade que deve ser resolvido para que o mesmo dê seus proximos passos.

    ResponderExcluir
  6. A divisão da rede bitcoin em diversos tipos de aplicação auxilia à capacidade dessa rede de adquirir usuarios, devido ao fato de que essa diversidade permite que os usuarios que desejam apenas possuir seus bitcoins e fazer suas transferências não precisarem possuir toda a blockchain para isso, assim como tambem permite a aqueles que desejam utilizar a aplicação de mineração, a fim de ganhar a recompensa pela verificação e aceitação de blocos para a blockchain. Todas as possibilidades de aplicações nodes existentes na rede garantem a criação de transações, outras alem disso , garantem a verificação de validade de transições mas apenas algumas permitem a validação e aceitação na blockchain como os fullnodes e os miner nodes.

    ResponderExcluir
  7. Achei realmente fantástico a forma como a rede do bitcoin foi pensada, tendo em mente diferentes tipos de nós que se adaptam às necessidades dos usuários, seja para aqueles que só desejam possuir uma carteira e fazer transações, ou para quem deseja de fato minerar, ou até mesmo participar de uma pool. É interessante também pensar em como esses nós são criados também, a primeira conexão sendo necessário se conectar com um nós inicial para poder receber o endereço de outros nós, uma forma de 2-step 'verification' para criar novos nós. Se tornou mais interessante estudar sobre bitcoins depois de entender o processo da rede, as regras. Muito bom o video do block geek explicando sobre os nós! recomendo muito pra quem não viu!

    ResponderExcluir
  8. Hugo Ricardo Baia da Silva23 de abril de 2018 às 05:52

    A rede Bitcoin consiste de nós que são nada mais nada menos que máquinas rodando o software do Bitcoin. Através de uma arquitetura P2P os nós podem se conectar e enviar transações e blocos. A rede é bastante colaborativa, ou seja, os nós trocam entre si a lista de nós disponíveis, blocos que estejam faltando, entre outras informações. Os nós da rede podem ter diferentes funções, dependendo das funcionalidades que eles implementam, que podem ser de: Routing, Wallet, Miner e full Blockchain. De forma bem simplificada essas funcionalidades são descritas a seguir: Routing é a funcionalidade mais básica que permite se conectar à rede e descobrir outros nós; O Wallet não necessita de uma cópia inteira da Blockchain e possui um sistema simplificado para verificação de pagamentos; Miner é reponsável por criar novos blocos, através da resolução de problemas que envolvem custo computacional; Full Blockchain possui uma cópia completa da Blockchain.

    ResponderExcluir
  9. É muito curioso saber que a rede Bitcoin é formada por uma arquitetura P2P, onde todos os integrantes da rede são nós que funcionam como servidores e como clientes, e tudo isso sem nenhum tipo de hierarquia especial entre um nó ou outro. Os nós que estão na rede trocam mensagens entre si, que possuem as informações das transações, blocos e endereços IP de outros pontos. Vendo algumas simulações de transações, pude observar que quando se cria uma transação e ela é enviada para a rede, o cliente manda a transação para alguns peers, que por sua vez mandam para outros, e assim por diante, até que um minerador valide essa transação e a inclua num bloco. Depois disso, esse bloco é transmitido da mesma forma (de um peer a outro), assim a confirmação da transação chegará até o cliente que a enviou inicialmente.

    ResponderExcluir
  10. A divisão que os nós tem, é bem interessante. Existem quatro características/funções básicas que um nó pode ter na rede, que são: carteira, minerador, blockchain completa e roteamento na rede P2P. O legal é que nem todos os nós apresentam todas as quatro características/funções, podendo apresentar desde apenas uma ou mais delas até todas elas. A falta de hierarquia especial na rede continua a mesma e a única coisa que muda é a funcionalidade que o operador do nó escolhe ter. Outro fato interessante é que os softwares dos nós podem ser modificados nas funcionalidades que apresentam e de que forma as implementam de acordo com a necessidade do operador. O mínimo que se precisa para ser considerado um nó na rede Bitcoin é a participação com a funcionalidade de rede passando e recebendo mensagens.

    ResponderExcluir
  11. A rede bitcoin é uma coleção de nós que executam o protocolo Bitcoin peer to peer (P2P). Todo computador que se conecta à rede Bitcoin é chamado de nó. Os nós na rede bitcoin possuem diferentes funções, e todos os nós participam na validação de transações, mas apenas um full node possui uma cópia atualizada de toda a blockchain, e verifica as transações de acordo com as regras de consenso do Bitcoin. Uma das características importantes de full nodes é que se um full node identificar que uma transação quebra alguma das regras de consenso, então a transação é rejeitada, mesmo que todos os outros nós na rede achem que a transação é válida.

    ResponderExcluir
  12. A rede bitcoin permite um alto grau de abstração para usuários comuns, que desejam apenas receber e enviar bitcoins. Eles não precisam entender sobre as entrelinhas da rede, os diferentes tipos de nós existentes e etc.

    Já usuários que desejam contribuir com a rede em um grau mais alto, podem escolher entre diferentes tipos de nós, como por exemplo o full-node que possui uma cópia atualizada de toda a cadeia de blocos já gerada para o bitcoin. Esses nós são os únicos capazes de efetivamente rejeitar uma transação. Outro tipo de nó interessante é o Miner, capaz de gerar blocos com diversas transações. Diferentes Mineradores podem gerar blocos diferentes com transações em comum, sendo assim, o bloco que entra primeiro na cadeia de blocos tem preferência, fazendo com que o outro seja descartado e as transações que ainda não entraram em algum bloco precisem ser acopladas noutro bloco futuro.

    ResponderExcluir