Voltar

Introdução a sistemas descentralizados (P2P)

Publicado por Thaís (op3n/op3ny)
20:32

Introdução

Ei gente! Tudo bem? Nesse artigo quero falar sobre uma tecnologia muito interessante, e que apesar de não ser para todos, é algo que vale muito a pena estudar. Aqui, vou tentar trazer algumas informações introdutórias sobre o tema.

A tecnologia à qual me refiro é o P2P (Peer to Peer), e mais especificamente, tecnologias descentralizadas que permitem que tudo funcione sem um ponto central. Isso torna o serviço muito mais resistente a adulterações e censuras, além de introduzir um conceito muito interessante de rede horizontal, onde todos estão no mesmo nível, diferente de uma rede verticalizada baseada em cliente-servidor.

O P2P já é utilizado em diversos lugares, e um dos maiores exemplos é o Bitcoin, uma das criptomoedas mais conhecidas do mundo. Sua blockchain, responsável pelo registro de transações, funciona de forma descentralizada. Ao longo desse artigo, vou explicar como essas redes garantem identidade, consistência de dados, como conseguem resistir a restrições impostas por provedores de internet, e por que isso pode ser um diferencial interessante para você como desenvolvedor.


O que é P2P?

A sigla P2P significa Peer to Peer, ou pessoa para pessoa. É uma rede formada por várias máquinas conectadas entre si, que trocam informações diretamente umas com as outras. Isso aumenta a disponibilidade dos arquivos e dificulta muito a remoção de conteúdos da rede.

Um exemplo simples pode ser o seguinte: imagine três máquinas conectadas. A máquina 1 conhece a máquina 2, e a máquina 2 conhece a máquina 3. A máquina 1 possui os arquivos A e B, a máquina 2 possui os arquivos B e D, e a máquina 3 possui o arquivo C.

Se a máquina 1 pedir os arquivos B e C para a máquina 2, ela receberá o arquivo B diretamente. Já o arquivo C não está na máquina 2, então ela responde indicando a máquina 3. A máquina 1 então entra em contato com a máquina 3 e obtém o arquivo desejado.

Perceba que não existe um servidor central coordenando tudo. Cada máquina contribui com o que tem e ajuda a rede a crescer. Dependendo da implementação, os arquivos podem ser replicados ou distribuídos em partes, o que aumenta ainda mais a disponibilidade.

Isso torna a rede bastante resistente, porque basta um caminho indireto entre duas máquinas para que um arquivo seja encontrado. Quanto mais pessoas possuem um arquivo, mais difícil se torna removê-lo completamente.

Mas isso levanta uma questão importante: e se alguém modificar um arquivo e distribuir uma versão adulterada?

É aqui que entram os hashes.


O que é hash?

Hash é um conceito fundamental em redes P2P. Basicamente, é uma função que transforma um conteúdo em uma sequência única de caracteres que representa aquele conteúdo.

Algoritmos como MD5 ou SHA-256 fazem exatamente isso. Qualquer pessoa pode calcular o hash de um arquivo, e se o conteúdo for o mesmo, o hash também será.

Se qualquer detalhe do arquivo for alterado, o hash muda completamente.

Por exemplo, se você tiver o texto “Oi mundo!”, ele gera um hash específico. Se você mudar para “Oi Mundo!”, apenas alterando uma letra, o hash já será totalmente diferente.

Isso permite verificar a integridade de um arquivo sem precisar confiar em quem enviou. Você simplesmente compara o hash esperado com o hash recebido.

Mas ainda falta uma coisa: e se você quiser provar que foi você quem criou aquele conteúdo?


O que é Assinatura PGP?

Os nodos de uma rede P2P não precisam necessariamente de identidade tradicional, como nome ou conta. No entanto, se você quiser provar autoria, existe uma solução.

A assinatura PGP funciona com um par de chaves: uma chave privada, que só você possui, e uma chave pública, que pode ser compartilhada com qualquer pessoa.

Você utiliza sua chave privada para assinar um conteúdo, e qualquer pessoa pode usar sua chave pública para verificar essa assinatura. Isso garante que o conteúdo realmente foi criado por você e não foi alterado.

Na prática, você gera uma assinatura com sua chave privada e a associa ao arquivo. Quem recebe o arquivo pode validar a assinatura matematicamente usando sua chave pública.

Isso permite que redes descentralizadas tenham tanto integridade de dados, através de hashes, quanto verificação de autoria, através de assinaturas.

Mas ainda existe uma pergunta importante: como os nodos se encontram dentro da rede?

É aqui que entra o DHT.


O que é DHT?

DHT significa Distributed Hash Table, ou Tabela de Hash Distribuída.

Ela é o mecanismo que permite que a rede funcione sem um servidor central. Em vez de perguntar a um servidor quem possui determinado arquivo, você pergunta para a própria rede.

Cada nodo possui um ID único, e cada dado também possui um ID, que normalmente é um hash. Esses IDs existem no mesmo espaço lógico, e a rede utiliza essa estrutura para organizar onde cada informação deve ficar.

Quando você procura por um dado, você pergunta a um nodo qualquer. Se ele não souber a resposta, ele indica outros nodos que estão mais próximos daquele ID. Esse processo se repete até que você encontre quem possui a informação.

Esse comportamento é implementado por algoritmos como o Kademlia, que garante que cada nodo conheça apenas uma parte da rede, mas ainda assim consiga encontrar qualquer dado de forma eficiente.

Na prática, a DHT funciona como uma agenda distribuída. Cada nodo sabe um pouco, e juntos eles formam um sistema capaz de localizar qualquer coisa dentro da rede.


E por que saber disso?

Essa é a pergunta mais importante.

Vivemos em um cenário onde existem constantes discussões sobre controle, censura e acesso à informação. Entender tecnologias descentralizadas permite que você compreenda melhor como sistemas podem ser construídos sem depender de uma autoridade central.

Isso não significa que tudo deve ser descentralizado, mas entender esse modelo abre portas para novas formas de construir aplicações.

Com redes descentralizadas, a remoção de conteúdo se torna progressivamente mais difícil conforme mais nodos passam a possuir aquele dado. Isso cria uma resistência natural contra censura e adulteração.

Um exemplo interessante é o caso de países com forte controle de internet. Em ambientes como o da China, conhecido pelo sistema de restrições frequentemente chamado de “Great Firewall”, o acesso a diversas informações é limitado. Em uma rede descentralizada, se múltiplos usuários possuírem determinado conteúdo, sua disseminação se torna muito mais difícil de conter.

Mas isso não significa ausência de responsabilidade. Redes descentralizadas não são ambientes sem regras. A dinâmica muda, mas ainda existem formas de moderação, muitas vezes baseadas no próprio comportamento dos usuários.

Se um conteúdo não é buscado, ele tende a desaparecer com o tempo. Se não é replicado, perde relevância. Existe uma espécie de seleção natural da informação dentro da rede.


Finalização

Agradeço pela leitura e espero que esse conteúdo tenha despertado seu interesse.

Se você quiser se aprofundar, recomendo estudar melhor o funcionamento do Bitcoin, pois ele demonstra na prática como é possível construir sistemas descentralizados em larga escala. Também vale muito a pena explorar tecnologias como BitTorrent e IPFS, que aplicam esses conceitos de formas diferentes.

É o tipo de tecnologia que, quanto mais você estuda, mais percebe que não é apenas sobre rede, mas sobre como distribuímos controle.

Até o próximo artigo!