Guia sobre Redes Peer-to-Peer
O que é Peer-to-Peer (P2P)?
Na ciência da computação, uma rede peer-to-peer (P2P) consiste em um grupo de dispositivos que armazenam e compartilham arquivos colectivamente. Cada participante (nó) atua como um par individual. Normalmente, todos os nós têm poder igual e desempenham as mesmas funções.
Na tecnologia financeira, o termo peer-to-peer geralmente se refere ao intercâmbio de criptomoedas ou ativos digitais através de uma rede distribuída. Uma plataforma P2P permite que compradores e vendedores executem trades sem a necessidade de intermediários. Em alguns casos, sites também podem fornecer um ambiente P2P que conecta usuários para realização de empréstimos.
A arquitetura P2P pode ser adequada para vários casos de uso, mas se tornou especialmente popular nos anos 90, quando foram criados os primeiros programas de compartilhamento de arquivos. Hoje, as redes P2P servem de base para a maioria das criptomoedas, constituindo grande parte da indústria blockchain. No entanto, essa tecnologia também é aproveitada em outros aplicativos de computação distribuída, incluindo mecanismos de pesquisa da web, plataformas de streaming, mercados online e o protocolo de web InterPlanetary File System (IPFS).
Como funciona um sistema P2P?
Essencialmente, um sistema P2P é mantido por uma rede distribuída de usuários. Geralmente, o sistema não tem um administrador ou servidor central pois cada nó mantém uma cópia dos arquivos - agindo tanto como cliente quanto servidor para outros nós. Sendo assim, cada nó pode baixar arquivos de outros nós ou fazer upload de arquivos para eles. É isso que diferencia as redes P2P dos sistemas cliente-servidor tradicionais, nos quais os dispositivos clientes baixam arquivos de um servidor central.
Nas redes P2P, os dispositivos conectados compartilham arquivos armazenados em seus discos rígidos. Usando softwares projetados para mediar o compartilhamento de dados, os usuários podem consultar outros dispositivos na rede para encontrar e baixar arquivos. Depois que um usuário faz o download de determinado arquivo, ele pode atuar como mais uma fonte desse arquivo.
Em outras palavras, quando um nó atua como um cliente, ele baixa arquivos de outros nós da rede. Mas quando ele está funcionando como servidor, ele é uma fonte da qual outros nós podem baixar arquivos. Na prática, entretanto, ambas as funções podem ser executadas ao mesmo tempo (por exemplo, baixar o arquivo A e fazer upload do arquivo B).
Como todo nó armazena, transmite e recebe arquivos, as redes P2P tendem a ser mais rápidas e eficientes à medida que a quantidade de usuários aumenta. Além disso, sua arquitetura distribuída torna os sistemas P2P muito resistentes a ataques. Diferentemente dos modelos tradicionais, as redes P2P não têm um ponto único de falha.
Podemos classificar os sistemas peer-to-peer de acordo com sua arquitetura. Os três principais tipos são redes P2P não estruturadas, estruturadas e híbridas.
Redes P2P não estruturadas
As redes P2P não estruturadas não apresentam nenhuma organização específica dos nós. Os participantes se comunicam aleatoriamente entre si. Esses sistemas são considerados robustos devido à alta taxa de rotatividade (ou seja, muitos nós entram e saem da rede com frequência).
Embora seja mais fácil de construir, redes P2P não estruturadas podem exigir maior uso de CPU e memória, pois as consultas de pesquisa são enviadas para o maior número possível de pares. Isso tende a inundar a rede com consultas, especialmente se apenas um pequeno número de nós fornecer o conteúdo desejado.
Redes P2P estruturadas
Por outro lado, as redes P2P estruturadas apresentam uma arquitetura organizada, permitindo que os nós pesquisem arquivos com eficiência, mesmo que não seja um conteúdo amplamente disponível. Na maioria dos casos, isso é feito através do uso de funções de hash que facilitam pesquisas em banco de dados.
Embora as redes estruturadas possam ser mais eficientes, elas tendem a apresentar maiores níveis de centralização e geralmente requerem custos mais altos de configuração e manutenção. Além disso, as redes estruturadas são menos robustas em sistemas com altas taxas de rotatividade.
Redes P2P híbridas
As redes P2P híbridas combinam o modelo cliente-servidor convencional com alguns aspectos da arquitetura peer-to-peer. É possível, por exemplo, criar um servidor central que facilite a conexão entre pares.
Quando comparados aos outros dois tipos, os modelos híbridos tendem a apresentar um melhor desempenho geral. Eles geralmente combinam algumas das principais vantagens de cada abordagem, alcançando simultaneamente, graus significativos de eficiência e descentralização.
Distribuído vs. descentralizado
Embora a arquitetura P2P seja distribuída, é importante observar que existem vários graus de descentralização. Portanto, nem todas as redes P2P são descentralizadas.
Na verdade, muitos sistemas contam com uma autoridade central para orientar a atividade da rede, o que os torna, de certa forma, centralizados. Por exemplo, alguns sistemas de compartilhamento de arquivos P2P permitem que usuários pesquisem e baixem arquivos de outros usuários, mas eles não podem participar de outros processos, como gerenciar consultas de pesquisa.
Além disso, pode-se dizer que pequenas redes controladas por uma quantidade menor de usuários com objetivos compartilhados, possuem maior grau de centralização, mesmo com a falta de uma infraestrutura de rede centralizada.
O papel da rede P2P em blockchains
Nos estágios iniciais da Bitcoin, Satoshi Nakamoto a definiu como “um sistema Peer-to-Peer de dinheiro eletrônico”. A Bitcoin foi criada como uma forma digital de dinheiro. Ela pode ser transferida de um usuário para outro através de uma rede P2P, que gerencia um ledger distribuído chamado blockchain.
Nesse contexto, a arquitetura P2P inerente à tecnologia blockchain é o que permite que a Bitcoin e outras criptomoedas sejam transferidas em todo o mundo, sem a necessidade de intermediários nem de um servidor central. Além disso, qualquer usuário pode estabelecer um nó da Bitcoin participando do processo de verificação e validação de blocos.
Portanto, não há bancos processando ou registrando transações na rede Bitcoin. Em vez disso, a blockchain atua como um ledger digital que registra publicamente todas as atividades. Basicamente, cada nó mantém uma cópia da blockchain e a compara com outros nós para garantir que os dados sejam válidos. A rede rejeita rapidamente qualquer atividade maliciosa ou inconsistência de dados.
No contexto das blockchains de criptomoedas, os nós podem assumir várias funções diferentes. Os "full nodes", por exemplo, são os que fornecem segurança à rede, verificando as transações com base nas regras de consenso do sistema.
Cada nó completo (full node) mantém uma cópia completa e atualizada da blockchain - permitindo que eles participem do trabalho coletivo de verificação do verdadeiro estado do ledger distribuído. Vale ressaltar, no entanto, que nem todos os full nodes de validação são mineradores.
Vantagens
A arquitetura peer-to-peer de blockchains oferece muitos benefícios. Dentre os mais importantes, está o fato de as redes P2P oferecerem mais segurança do que a arquitetura tradicional de cliente-servidor. A distribuição de blockchains em um grande número de nós, os torna praticamente imunes a ataques Denial-of-Service (DoS) que prejudicam muitos sistemas.
Da mesma forma, como a maioria dos nós deve estabelecer um consenso antes que os dados sejam adicionados à blockchain, é quase impossível que um invasor altere os dados. A alteração de dados é ainda mais improvável para grandes redes como a da Bitcoin. Blockchains menores são mais suscetíveis a ataques porque uma pessoa ou grupo pode, eventualmente, obter controle sobre a maioria dos nós (esse tipo de ataque é conhecido como Ataque de 51%).
Como resultado, a rede peer-to-peer distribuída, combinada com um requisito de consenso que majoritário, oferece às blockchains um grau relativamente alto de resistência a agentes maliciosos. O modelo P2P é uma das razões pelas quais a Bitcoin (e outras blockchains) foram capazes de alcançar a chamada tolerância a falhas bizantinas.
Além da segurança, o uso da arquitetura P2P em blockchains de criptomoedas também proporciona resistência à censura de autoridades centrais. Diferentemente de contas bancárias padrão, as carteiras de criptomoedas não podem ser congeladas ou sofrer qualquer interferência do governo. Essa resistência também se estende às ações de censura por parte de plataformas privadas de pagamento e provedoras de conteúdo em geral. Alguns traders e criadores de conteúdo online, adotaram pagamentos em criptomoedas como uma maneira de evitar que seus pagamentos sejam bloqueados ou sofram interferência de terceiros.
Limitações
Apesar das muitas vantagens, a utilização de redes P2P em blockchains também apresenta algumas limitações.
Como os ledgers distribuídos devem ser atualizados em todos os nós e não em um servidor central, adicionar transações à blockchain requer muito poder computacional. Apesar de fornecer mais segurança, esse sistema possui baixa eficiência e esse é um dos principais obstáculos quando se trata de escalabilidade e adoção em massa. No entanto, os desenvolvedores de blockchain estão pesquisando alternativas que podem ser usadas como soluções de dimensionamento. Exemplos promissores incluem a Lightning Network, a Ethereum Plasma e o protocolo Mimblewimble.
Outra potencial limitação está relacionada a ataques que podem surgir durante eventos de hard fork. Como a maioria das blockchains é descentralizada e de código aberto, grupos de nós podem copiar e modificar o código e se separar da cadeia principal para formar uma nova rede paralela. Hard forks são completamente normais e não são uma ameaça por si só. Porém, se determinados métodos de segurança não forem adotados adequadamente, ambas as cadeias podem ficar vulneráveis a ataques de repetição.
Além disso, a natureza distribuída das redes P2P as torna relativamente difíceis de controlar e regular, não só no ambiente blockchain. Várias empresas e aplicações P2P acabaram se envolvendo com atividades ilegais e violações de direitos autorais.
Considerações finais
A arquitetura peer-to-peer pode ser desenvolvida e usada de várias maneiras diferentes e é o principal componente das blockchains que tornam possíveis as criptomoedas. Através dos ledgers de transações distribuídos por toda a rede de nós, a arquitetura P2P oferece segurança, descentralização e resistência à censura.
Além de sua utilidade na tecnologia blockchain, os sistemas P2P também podem atender às necessidades de outras aplicações de computação distribuída, desde redes de compartilhamento de arquivos até plataformas de negociação de energia.