Executando verificação de segurança...
-2

HPS, o exemplo perfeito

Antes de começar

Este post foi feito para o meu blog, ao qual é integrado ao meu projeto principal (Hsyst), e ele basicamente faz parte de uma trilogia, então, eu recomendo a leitura pelo blog.

Introdução

Hey! Nesse artigo, vamos falar um pouco sobre uma plataforma que eu mesma desenvolvi, o HPS (Hsyst Peer to Peer (P2P) Service). Essa plataforma resolve problemas reais de aplicações P2P típicos, e principalmente, não deixa de ser um projeto "além do código".

Para quem não entendeu a referência, no último artigo falei um pouco, de forma introdutória, mas bem reflexiva, sobre o fato de que a programação é uma área extremamente versátil e que vai muito além da lógica e da sintaxe. Programar consegue tranquilamente se expandir para várias outras áreas, saindo desde economia e filosofia, até artes e psicologia.

Ainda seguindo com o tema do artigo anterior, meu objetivo aqui é falar um pouco mais a fundo sobre um dos pontos que deixei em aberto no artigo “A programação além do código”, que é justamente: “Afinal, qual projeto realmente implementa várias áreas de conhecimento em um lugar só?” e também “Qual é a sua visão de mundo refletida em código?”. Na minha opinião, o HPS responde essas duas perguntas de forma bem clara.

Esse artigo não é apenas uma explicação técnica do HPS. Ele é, acima de tudo, uma tentativa de mostrar como uma visão filosófica, econômica e política acaba inevitavelmente moldando a arquitetura de um software.

O que é o HPS?

No artigo anterior, durante a introdução, eu abordei de forma introdutória o que seria “programar além do código”, e deixei em aberto várias perguntas, como por exemplo a minha visão de mundo e a ausência de um exemplo real de um projeto que implementasse várias áreas de conhecimento em um único código. É exatamente isso que vou tentar explicar aqui com o HPS.

Antes de falar sobre filosofia, economia e visão de mundo aplicadas ao HPS, é necessário responder uma pergunta básica: afinal, o que é o HPS?

Eu poderia responder isso de forma bem resumida dizendo que o HPS é algo como um “sistema pseudo descentralizado federado”, ou simplesmente “um protocolo P2P que tem servidor”. Porém, essa definição soa contraditória, afinal, como um sistema descentralizado (P2P) poderia ser centralizado (servidores)? Essa aparente contradição exige uma explicação mais detalhada.

O HPS é um protocolo, no sentido mais literal da palavra: ele define como máquinas devem se comunicar entre si. Esse protocolo é aplicado a dois componentes principais: o HPS Server, que é o servidor que executa uma instância HPS para acesso público, e o HPS Browser, que é a aplicação que permite o uso da rede por pessoas leigas (ou pelo menos, por pessoas que não leriam o código inteiro para usar a API via Postman ou algo assim skskask).

Falando de forma prática, o HPS possui um mecanismo econômico próprio. Nele, você pode minerar uma moeda chamada HPS. Essa moeda permite que você realize uploads na rede, registre DNSs e interaja com os serviços do protocolo.

Quando você realiza um upload, o arquivo gera um HASH, que serve tanto para acessar o arquivo quanto para evidenciar adulterações. Além disso, esse arquivo possui uma assinatura PGP, que confirma a autoria daquele conteúdo. O mesmo vale para o registro de DNSs, como por exemplo teste.hps, que direciona para o HASH de um arquivo específico, também contendo assinatura e HASH para evidenciar adulterações no próprio DNS.

Mineração, vouchers e validações

A mineração permite que você receba quantidades de HPS, e esses HPS funcionam como o lastro da moeda. Cada unidade de HPS é, na prática, um voucher (um arquivo) que contém a assinatura do servidor emissor, um hash, a assinatura do(a) dono(a) daquele voucher, e o desafio de Proof of Work anexado para verificação.

Quanto mais você minera, mais pendências de assinatura você acumula. A cada duas pendências de assinatura, uma pode ser resolvida através do pagamento de uma multa, que vai diretamente para a custódia. Essa custódia subsidia o aumento de preços causado pela mineração, além das taxas de transferência. A outra pendência de assinatura só pode ser resolvida assinando uma transferência.

Na prática, se você estiver realizando um upload utilizando seu saldo de HPS, você transfere esse valor para o servidor. Antes dessa transferência ser concluída, um minerador precisa verificar o Proof of Work daquele voucher, a origem do voucher e a validade dele. Com o minerador aprovando, ele recebe uma taxa pela verificação, e a transação é realizada.

Uploads, armazenamento e recuperação de arquivos

O upload no HPS é, em essência, um upload comum, mas exige saldo em HPS ou a realização de um Proof of Work que vai diretamente para a custódia. Em outras palavras, você minera HPS para a custódia para pagar o seu próprio gasto.

Quando o arquivo chega ao servidor, ele fica acessível através do HASH designado no final do upload. Quando um cliente acessa esse arquivo, o browser guarda uma cópia local e exibe o conteúdo. Caso o arquivo seja apagado do servidor, qualquer cliente pode reenviar sua cópia para o servidor. Caso o arquivo esteja adulterado, a adulteração é facilmente identificável, já que o hash não corresponderá ao solicitado.

No processo de login, o cliente envia ao servidor atual uma lista de todos os servidores que ele conhece, além dos arquivos que ele possui. Isso permite que o servidor sincronize arquivos com outros servidores da rede e também defina um servidor de backup. Assim, caso o servidor atual caia, o cliente já sabe automaticamente para qual servidor se conectar.

Esse mecanismo reduz a perda de arquivos, já que quem acessou aquele servidor e possuía arquivos dele estará no mesmo servidor de backup que você. Isso facilita encontrar pessoas que possuam o arquivo desejado.

Além disso, se um servidor não possui determinado arquivo, ele atua como ponte, exatamente como qualquer sistema P2P. O servidor responde ao cliente informando que não possui o arquivo e, em seguida, pergunta à rede se alguém possui o hash solicitado. Quem tiver o arquivo envia ao servidor, o servidor armazena uma cópia e repassa o arquivo ao cliente que fez a requisição.

Qual problema o HPS resolve?

O problema central que o HPS tenta resolver está diretamente ligado à escassez de endereços IPV4. Por conta disso, os provedores passaram a utilizar um mecanismo chamado CGNAT. Outra alternativa seria o IPV6, mas devido à dificuldade de migração, os provedores optaram majoritariamente pelo CGNAT.

O CGNAT consiste basicamente em utilizar um mesmo IP para o maior número possível de dispositivos. Diferente do NAT convencional, onde o provedor fornece um IP para o roteador da sua casa e todos os dispositivos compartilham esse IP, o CGNAT é ainda mais agressivo, pois múltiplos roteadores, muitas vezes no mesmo bairro, compartilham o mesmo IP público.

O problema disso não é óbvio à primeira vista. Afinal, se vários roteadores usam o mesmo IP, e o IP é a identificação de um dispositivo, como se comunicar diretamente com ele?

A resposta é simples: não tem como. Para se comunicar, você precisa iniciar uma conexão com um IP que aceite conexões de entrada. Assim, o provedor sabe associar as respostas àquela requisição específica. Em sistemas P2P, onde vários usuários estão atrás de CGNAT, isso se torna um problema crítico, pois ninguém consegue se comunicar diretamente com ninguém. O sistema simplesmente não funciona.

A solução adotada pelo HPS é criar servidores com IP próprio e torná-los o mais descartáveis possível. A identificação é feita por chaves PGP, a integridade é garantida por HASHs, e todos esses mecanismos são universais. Dessa forma, se um servidor cair, os arquivos podem ser recuperados rapidamente, livres de adulterações.

Além disso, o HPS utiliza Proof of Work para atribuir custo às ações, o que inibe ataques, permite o acúmulo de poder computacional gasto na forma de $HPS e garante que a rede continue funcional. Como o PoW é globalmente verificável, falsificar uma prova de trabalho é simplesmente impossível sem gastar poder computacional igual ou maior.

Perfeito, e a economia?

À primeira vista, a economia do HPS parece simples: minerou, gastou poder computacional, recebeu recompensa. Porém, a estrutura é mais profunda do que parece.

O sistema cobra multas para resolver determinados tipos de pendências de assinatura, e esse valor ajuda a subsidiar a inflação gerada pela mineração e as taxas de assinatura. A conta responsável por isso é a custódia.

A custódia recebe o valor gasto em compras, como uploads, e isso inicia um ciclo de incentivos. A cada mineração realizada, você paga multas que subsidiam a inflação causada pela própria mineração e as taxas que você pode receber futuramente. Quando você gasta HPS, esse valor vai para a custódia e ajuda a reduzir os preços ao invés de aumentá-los, incentivando o gasto.

O dinheiro da custódia não fica preso. Ele é redistribuído em forma de taxas de assinatura para mineradores, e esse valor retorna à circulação.

Uma questão inevitável surge: e quando o HPS minerado em um servidor vale menos do que em outro? Afinal, servidores possuem economias diferentes.

É aí que entra o sistema de câmbio. Se um servidor A possui inflação de 2x e você transfere 100 HPS para um servidor B com inflação de 1x, um minerador do servidor B solicita relatórios econômicos do servidor A e verifica os vouchers. Se tudo estiver correto, o servidor A destrói 100 HPS, e o servidor B cria 50 $HPS. Assim, o poder de compra é mantido, garantindo justiça entre servidores.

Esse mecanismo incentiva o uso de servidores com economia estável, já que minerar em servidores desestabilizados se torna menos vantajoso. Isso também remove incentivos para que administradores manipulem a custódia.

Eu ouvi filosofia?

Sim, e bastante. O HPS possui um embasamento filosófico, especialmente filosófico-político. Ele busca dar soberania ao indivíduo, remover a soberania do controle central, garantir propriedade privada, responsabilidade individual e, principalmente, remover o poder do Estado.

Assim como citado no artigo anterior, o Bitcoin é uma grande inspiração. Satoshi Nakamoto criou uma moeda baseada em uma visão filosófica e econômica clara, removendo o poder do Estado e criando um sistema extremamente seguro.

O HPS se inspira fortemente no Bitcoin, desde o uso de Proof of Work como lastro até a ideia de remover autoridades centrais. Trata-se de um projeto libertário, e possivelmente cripto-anarquista, por sua estrutura e objetivos.

Caso um servidor seja obrigado a remover um arquivo por ordem estatal, isso não surte efeito real. Basta que uma única pessoa possua o arquivo para que ele volte à rede ou seja propagado para outros servidores.

Além disso, o projeto também possui um viés empreendedor. Em vez de apenas reclamar do CGNAT, foi criada uma solução prática para contornar o problema, mostrando que sempre haverá alguém disposto a tentar resolver um problema, por mais complexo que ele seja.

O fim da utopia...

Aqui é onde a utopia acaba. O HPS não é a solução para todos os problemas.

A interface e a documentação são confusas, o que dificulta a adoção. Esse é um problema clássico de projetos complexos como esse.

Existe também um trade-off claro: uploads exigem Proof of Work, mas arquivos enviados no login não. Isso permite que alguém envie vários arquivos legítimos realizando apenas uma prova de trabalho. Esse é um problema que ainda não possui solução clara, e deixo o convite para quem quiser sugerir uma ideia.

Outro problema é a centralização. Existe o risco de ciclos de censura, onde servidores surgem e são rapidamente derrubados. Uma alternativa seria a auto-custódia, com servidores pessoais sincronizando entre si, mas isso cria problemas de escalabilidade.

Uma decisão impopular foi o uso de certificados SSL/TLS auto-assinados, com a verificação desativada. Isso evita dependência de certificadoras, mas cria riscos de segurança. A reflexão que fica é: segurança do cliente ou segurança da rede? E escolher a segurança da rede não violaria um princípio filosófico do próprio projeto?

Por fim, fica a pergunta: por que criar um projeto tão complexo para resolver um problema que já possui soluções? Valeu a pena reinventar a roda?

Finalização

Talvez projetos como esse sejam chatinhos de planejar, mas reinventar a roda foi divertido e extremamente educativo. O HPS é um projeto de nicho, pessoal, quase como um “NAS distribuído” com ideias fora da curva.

Espero que tenham gostado do post. Até mais!

E-mail: [email protected] / [email protected]
Discord: op3n
GitHub: github.com/op3ny

--> Versão original
Deseja ver o rascunho do artigo, antes de ser revisado? https://github.com/op3ny/artigos/blob/main/artigo3.md

Carregando publicação patrocinada...