paint-brush
A Rede Waku: Escalando P2P, Comunicações Focadas na Privacidadepor@logos
664 leituras
664 leituras

A Rede Waku: Escalando P2P, Comunicações Focadas na Privacidade

por Logos10m2024/02/27
Read on Terminal Reader

Muito longo; Para ler

A Rede Waku é a primeira rede descentralizada e que preserva a privacidade que fornece proteções contra negação de serviço (DoS) para mensagens ponto a ponto. O objetivo é aumentar a privacidade e a segurança na comunicação peer-to-peer através da implementação de protocolos e tecnologias inovadoras.
featured image - A Rede Waku: Escalando P2P, Comunicações Focadas na Privacidade
Logos HackerNoon profile picture

Em dezembro passado, anunciamos a Rede Waku .


A Rede Waku é a primeira rede descentralizada e que preserva a privacidade que fornece proteções contra negação de serviço (DoS) para mensagens ponto a ponto. O objetivo é aumentar a privacidade e a segurança na comunicação peer-to-peer através da implementação de protocolos e tecnologias inovadoras.


Vamos nos aprofundar no porquê e no que é a Rede Waku.

Origem

Se você segue Waku ou Status , provavelmente conhece a origem do Waku. O aplicativo móvel Status foi criado como um superaplicativo web3, um portal para o ecossistema Ethereum que aproveita os três pilares originais: Ethereum para consenso, Swarm para armazenamento e Whisper para comunicação.


A equipe de desenvolvimento do Status tentou construir o Status com o Whisper, mas esse protocolo tinha limitações fundamentais, especialmente para dispositivos com recursos restritos, como telefones celulares. Waku nasceu como sucessor do Whisper, aprendendo com suas falhas para fornecer uma rede de comunicação ponto a ponto escalável, adequada para dispositivos móveis e navegadores.

Desafios/Propriedades Desejadas

Waku pretende superar os seguintes desafios:

  • Mensagens generalizadas: Waku visa fornecer protocolos e uma rede que permite a transferência de cargas arbitrárias. Embora o Waku tenha sido originalmente criado para um aplicativo de bate-papo, o Status, o objetivo é ser generalizado o suficiente para construir qualquer aplicativo descentralizado de comunicação ou sinalização no Waku.


  • Mensagens efêmeras: Waku visa resolver o problema da comunicação em tempo real, que visa fornecer latência justa para permitir que um ou vários usuários troquem pequenas cargas de dados. Isto contrasta com o IPFS ou outros sistemas de armazenamento descentralizados, que fornecem uma forma de armazenar grandes quantidades de dados em detrimento da latência e da capacidade de resposta.


  • Resistência à censura: Waku visa fornecer uma solução resistente à censura onde atores externos não possam bloquear o acesso dos usuários à infraestrutura Waku. Mas também para que os desenvolvedores de aplicativos possam construir com uma mentalidade que não pode fazer o mal , onde eles não têm a chave do reino e a capacidade de deplataformar seus usuários.


  • Preocupado com a privacidade: fornecer aos desenvolvedores de aplicativos a capacidade de operar com base no princípio de não poder fazer o mal em termos de coleta de dados e metadados de seus usuários. Isso significa que mesmo que quisessem ou fossem pressionados, eles ou qualquer terceiro não poderiam coletar metadados, como gráficos sociais ou padrões de atividade de seus usuários.


  • Anonimato: Da mesma forma que a privacidade, é a capacidade dos usuários de não vincular Informações de Identificação Pessoal (PII) às suas atividades na rede Waku ou no aplicativo que usa a rede. As PII consideradas aqui referem-se à rede (endereço IP), blockchain (por exemplo, endereço Ethereum) e roteamento (correlação de mensagens).


  • Dispositivos com recursos restritos: como mencionado anteriormente, ao projetar o Waku, é feito um esforço para considerar ambientes como dispositivos móveis e navegadores para permitir que os desenvolvedores construam DApps para essas plataformas e forneçam o máximo possível das propriedades listadas acima.


  • Escalabilidade: Waku visa oferecer suporte a milhões de usuários, mantendo os princípios acima; isso precisa ser cuidadosamente projetado e testado.


Todas as propriedades acima significam que outros problemas precisam ser superados ao projetar o Waku:

  • Proteção DOS: garante que a rede não seja inundada com mensagens, fazendo com que usuários com menos recursos sejam inicializados da rede.


  • Sustentabilidade e incentivos da rede: Como podemos garantir recursos suficientes na rede para permitir que dispositivos como navegadores e dispositivos móveis acessem a rede?


  • Descentralização: Waku precisa ser descentralizado em vários níveis para viabilizar essas propriedades. Como mantemos um nível justo de descentralização para garantir que essas propriedades permaneçam ao longo do tempo?

A Rede Waku

Como a Waku Network ajuda a entregar as propriedades acima?


Vamos revisar os diferentes protocolos Waku combinados na rede e como eles nos permitem alcançar esse feito.

Descoberta de pares

Para que qualquer sistema ponto a ponto seja confiável e descentralizado, deve haver um mecanismo para encontrar novos pares ou nós nesse sistema, geralmente chamado de descoberta de pares .


Waku usa discv5, semelhante ao Ethereum. Pequenas melhorias no ENR foram feitas para permitir que o nó Waku anuncie:


  • os shards em que estão operando (consulte roteamento de mensagens - sharding )
    • o protocolo que eles ativaram

    • multiaddr alternativo que eles podem ter, por exemplo, para o navegador se conectar ao referido nó via WebSocket.


O Discv5 é descentralizado, o que pode evitar possíveis ataques sybil em que um invasor tenta cercar o nó da vítima para fornecer uma visão manipulada da rede.


Isso ajuda a permitir o anonimato, a privacidade e a resistência à censura.


Graças ao protocolo anunciado, ele permite que os telefones celulares e o navegador encontrem nós que possam atendê-los.

Roteamento de mensagens - Gossipsub

Semelhante ao Ethereum, Waku usa libp2p-gossipsub. Isso traz vários benefícios:

  • melhor desempenho de largura de banda em comparação ao Whisper: no gossipsub, os nós formam um grupo de vizinhos (malha) para os quais enviam mensagens. Um determinado nó tentará apenas manter conexões e trocar mensagens ativamente com outros nós. Reduzindo o número de vezes que cada mensagem é carregada ou baixada.


  • Confiabilidade: o gossipsub possui redundância integrada, o que oferece confiabilidade razoável ao operar em uma rede ponto a ponto descentralizada, onde nenhum nó pode ser considerado confiável ou bem comportado.


  • Anonimato: como os nós encaminham mensagens de outros nós em sua malha e nenhum metadado está presente em mensagens individuais (por exemplo, nenhuma assinatura de texto simples), isso proporciona um anonimato justo, pois não é possível para um observador saber se seu vizinho originou ou encaminhou uma mensagem. Isso funciona quando combinado com um mecanismo descentralizado de descoberta de pares, como o discv5.


Nomeamos o uso do gossipsub pelo Waku, o protocolo e a rede. Relé Waku.

Roteamento de mensagens - Fragmentação

Uma das desvantagens do Gossipsub é que cada nó da rede recebe e envia todas as mensagens da rede, com alguma amplificação. Pode-se ver como isto limita a escalabilidade: não se pode esperar trafegar todo o tráfego da rede a partir de uma ligação doméstica à Internet.


Para resolver esse problema, o sharding é usado em vez de ter uma rede gossipsub. A rede Waku é subdividida em várias sub-redes distintas de roteamento de mensagens, ou fragmentos. Atualmente, a rede Waku está dividida em oito fragmentos. Isso significa que qualquer usuário de um aplicativo Waku retransmitiria apenas o tráfego de um fragmento ou um oitavo (aproximadamente) de toda a rede.


Para começar, oito era um número pequeno e arbitrário. Nossa análise teórica mostra que um shard pode suportar cerca de 10 mil usuários ativos, mantendo um requisito médio de largura de banda de cerca de 4 Mbps, o que significa 80 mil para toda a rede.


Estamos trabalhando na execução de novas simulações para confirmar nossas suposições. Também integramos desenvolvedores e usuários na rede para testar a teoria. O objetivo é aumentar o número de fragmentos na rede ao longo do tempo.


Graças às melhorias feitas no discv5, os nós podem saber quais fragmentos outros peers estão atendendo antes de se conectarem a eles.

Roteamento de mensagens - fragmentação automática

Um problema com o sharding é que os usuários e aplicativos devem saber qual shard usar.


Um aplicativo pode decidir arbitrariamente qual fragmento deseja usar, mas isso pode exigir muito trabalho, especialmente ao adicionar novos fragmentos. É também mais uma decisão a ser tomada pelo desenvolvedor; preferimos tornar a experiência do desenvolvedor o mais fácil possível. Ele também permite que os desenvolvedores criem aplicativos que se espalham por vários fragmentos sem delegar escolhas de fragmentos ao usuário.


Autosharding é um protocolo simples que despacha mensagens em um fragmento baseado no aplicativo.

Roteamento de Mensagens - Retransmissão RLN

Waku é generalizado e preserva a privacidade, o que significa que qualquer tipo de carga pode ser transportada. Portanto, não existe uma definição estrita de “spam”. Quer a mensagem contenha um meme ou uma nota zk para DeFi privado , Waku nem deveria saber o conteúdo; metadados e dados devem permanecer privados.


Conseqüentemente, existe o risco de alguém enviar gigabits de dados para a rede. Isso pode ser um problema em diferentes níveis:

  • Uso de largura de banda: Isso pode fazer com que a largura de banda do usuário fique sobrecarregada e afete outros serviços (streaming, piquetagem) ou uma conta surpresa.


  • Conectividade: se um nó não tiver largura de banda suficiente para enviar/receber todas as mensagens na camada gossipsub, então seu comportamento poderá ser visto como incorreto por outros nós que possam se desconectar dele.


  • Confiabilidade: Se o tráfego for superior à largura de banda disponível, um nó pode não ser capaz de enviar e receber mensagens de forma confiável.


  • Outros recursos: o uso da memória está correlacionado com o tráfego, assim como o espaço em disco para um serviço de armazenamento.


Portanto, em vez de definir a aparência de uma mensagem de “spam”, introduzimos um limite de taxa na rede para permitir o uso justo do Waku, com um limite de uso de largura de banda por fragmento. Isso é feito com RLN, ou Rate Limiting Nullifier, que limita a taxa de mensagens enviadas por um determinado editor. Atualmente está definido para 1 msg/s.


Juntamente com um tamanho máximo de mensagem (150kB) e um número máximo de editores (80k, TBD), podemos assumir um uso máximo de largura de banda por fragmento (cerca de 10Mbps).


É difícil limitar os editores de maneira privada e resistente à censura; é por isso que estamos usando tecnologia de conhecimento zero:

  1. Os usuários enviam suas credenciais RLN para um contrato inteligente (atualmente na rede de teste Ethereum Sepolia).


  2. Os nós controlam todas as associações registradas no contrato.


  3. Ao enviar uma mensagem, o usuário anexa uma prova RLN à mensagem com a época atual (timestamp em segundos).


  4. Os nós podem verificar a prova sem conseguir correlacionar o endereço Ethereum do usuário (usado no contrato inteligente) com a mensagem enviada, preservando o anonimato.


  5. Se um usuário tentar enviar mais de 1 msg/s, os nós podem detectar isso e descartar o excesso de mensagem ou spam, protegendo a rede.

Manutenção de dispositivos principalmente off-line e com recursos restritos

Finalmente, como o Waku é útil para dispositivos com recursos restritos, como telefones celulares e navegadores da web? Waku define uma série de [protocolos de solicitação-resposta ( https://rfc.vac.dev/spec/10/#requestreply-domain ) para permitir que tais dispositivos acessem a rede Waku sem ter que estar sempre online ou consumir grandes quantidades de largura de banda, ou seja, sem participar da rede Waku Relay.


O protocolo light push (links para documentos) permite que um cliente light envie uma mensagem para ser encaminhada para a rede Waku Relay, com confirmação de recepção do nó remoto. O protocolo de filtro permite que um cliente leve se inscreva em um ponto remoto e solicite apenas um subconjunto de mensagens em vez de todas as mensagens transmitidas em um fragmento.


Finalmente, o protocolo de armazenamento permite que clientes leves e nós de retransmissão recuperem mensagens históricas que possam ter sido perdidas.

A proposta de valor da Waku Network

Embora tenhamos definido as propriedades desejadas e a tecnologia, é importante compreender os casos de uso potenciais da Rede Waku. Esta edição descreve atualmente várias USPs (Propostas de Valor Únicas), e iremos documentar o assunto mais detalhadamente. Alguns casos de uso dignos de nota são, além da construção de qualquer aplicativo de comunicação máquina a máquina ou humano a humano:


  • No-Infra DApps: combinação de várias tecnologias descentralizadas (Waku, Ethereum, IPFS) para implantar um DApp sem pagar um provedor de hospedagem centralizado.


  • Acesso resistente à censura a uma rede descentralizada para clientes leves: usando protocolos de solicitação-resposta para permitir que clientes leves acessem sua rede ponto a ponto sem depender de um gateway web centralizado e censurável.


  • Rede de sinal: Use a Rede Waku para encontrar outros peers e negociar parâmetros específicos para formar sua própria rede peer-to-peer, Waku ou não, com regras diferentes (limite de taxa mais alto, etc.).

Já estamos em branco ?

Descrevemos as propriedades desejadas do Waku e como a Rede Waku as atende. Isso significa que o Waku é resistente à censura, privado, sustentável e escalável? Não exatamente.


Bootstrapping é um componente de todas as redes peer-to-peer que não abordamos: como um novo nó encontra outros nós na rede? Usamos a tecnologia Ethereum para inicialização (ENR + DNS Discovery). No entanto, esta tecnologia poderia ser mais descentralizada. Pretendemos melhorar esse potencial no final de 2024 ou 2025.


Em geral, a rede precisa ser descentralizada para atingir as propriedades desejadas. Embora parte da tecnologia permita essa descentralização (e estejamos a trabalhar para melhorar a parte que não o faz), este problema tem uma componente social. Se a equipe Waku for a única executando nós, então, inerentemente, a rede não pode ser considerada descentralizada, portanto resistente à censura, etc.


Para resolver isso, precisamos pressionar pela adoção da rede Waku para que possamos construir uma boa base de operadores e desenvolvedores de nós que executem nós sem depender da equipe Waku para fazê-lo.


Aumentamos esse esforço no ano passado e continuaremos este ano. Outro aspecto é fornecer incentivos monetários aos operadores de nós para operarem nós, para que a rede possa se tornar autossustentável. Não temos esse protocolo; estamos construindo o primeiro PoC.


A Rede Waku desempenha um papel importante aqui. Uma vez que tal protocolo esteja disponível, é necessário um local (mercado) comum para que desenvolvedores/usuários e operadores possam se encontrar; a Rede Waku seria um desses lugares.

Conclusão

Waku visa permitir comunicações soberanas com propriedades específicas. A Rede Waku é um marco crítico para atingir esse objetivo e criar uma rede comum e descentralizada na qual os desenvolvedores possam construir e adicionar mais protocolos. Embora não possamos dizer que o Waku é tudo o que pretende ser hoje, ele já não tem permissão e é descentralizado em várias camadas.


Estamos agora trabalhando não apenas para adicionar as peças que faltam aos protocolos, mas também para pressionar pela adoção do Waku para torná-lo descentralizado de fato, permitindo resistência privada e à censura para todos.


Se você deseja ingressar em uma comunidade com ideias semelhantes, focada em levar comunicações ponto a ponto a milhões de usuários, junte-se ao Waku Discord ou siga-nos no X.


Cadastre-se em nossa newsletter mensal para receber nossas novidades direto em sua caixa de entrada.


Se a tecnologia fala com você, confira nossas vagas de emprego abertas ou aproveite algumas de nossas recompensas .

Você também pode ajudar a garantir que permaneçamos descentralizados executando seu próprio Waku Node!