CachePoW

Sistema de armazenamento descentralizado e anônimo baseado em Proof of Work

Image for post
Image for post

Apesar de hoje todos os softwares e protocolos de transferência de dados em redes P2P, como BitTorrent e IPFS, permitirem a descentralização e distribuição da entrega de conteúdos, há ainda uma grande centralização quando falamos de metadados e banco de dados dinâmicos.

Ao precisar baixar um arquivo torrent, você antes provavelmente precisará entrar em websites comuns para encontrar o magnet link do arquivo. É praticamente como se houvesse um ponto central de falha.

É preciso um protocolo que permita aos usuários buscarem por seus arquivos em bancos de dados descentralizados e auto-replicáveis. Uma das aplicações mais populares seriam sistemas Blockchain (ledger públicas), no entanto cadeias de armazenamentos permanente de dados não-financeiros tendem a ser inviáveis à longo prazo, uma vez que a escalabilidade sendo limitada à disponibilidade de seus nodes, demanda-se exponencial armazenamento dos mesmos para manter a ledger sincronizada.

Além disso, ao exigir a transferência de um criptoativo como parte de um sistema de incentivos e impedimento de spam, sacrifica-se consideravelmente a privacidade dos usuários, uma vez que a compra desses criptoativos pode ser rastreada.

Ao mesmo tempo, redes descentralizadas gratuitas devem enfrentar problemas como fragilidade à spam, que esgotam o armazenamento dos nodes sem custo para o atacante ou a inacessibilidade dos dados quando os peers que os semeiam encontram-se offline, ainda que por um curto espaço de tempo.

É preciso replicar os dados suficientemente para garantir sua entrega ao mesmo tempo que é preciso desincentivar o spam na rede sem comprometer a privacidade dos usuários. Por isso, o CachePoW vêm com uma proposta mais adequada à estas necessidade, armazenando os dados com maior eficiência e privacidade.

Ao mandar um arquivo para a rede, o usuário envia também a hash checksum do mesmo (que garante sua integridade) e uma prova de trabalho proporcional ao tamanho do arquivo. Quanto maior o arquivo, mais processamento ele empregará, desincentivando assim o abuso do armazenamento da rede.

Essa prova de trabalho trata-se de um “puzzle” matemático que exige uma certa quantidade de processamento para ser resolvido, assim demandando tempo e energia elétrica. No entanto sua validação é instantânea e não exige significativa computação dos nodes.

Um algorítimo útil para tal funcionalidade seria o blake2b, usado na criptomoeda Nano para evitar spam de transações, já que a mesma não possui taxas. O sistema é inspirado no Hashcash, um algoritimo de prova de trabalho criado inicialmente para impedir ataques spam e Denial of Service em serviços de email; também serviu para a mineração do Bitcoin. Com Blake2b podemos adicionar 2 parametros: hash e dificuldade. O dispositivo do usuário então realiza diversas tentativas até conseguir um resultado válido que satisfaça a dificuldade. Quanto maior a dificuldade, mais tempo leva-se pra obter o trabalho, porém a verificação continua sendo instantânea. O Blake2b, em particular usado pela Nano (com certa modificação), também possui a vantagem de, até o momento, ser resistente à ASICs (super computadores especializados em resolver esses tipos de cálculos matemáticos).

No sistema do CachePoW, cada nó pode ter um nounce específico pra Prova de Trabalho ou fazer parte de uma federação de nodes, que usariam o mesmo nounce e demais regras de armazenamento e poderiam sincronizar-se automaticamente uns com os outros. Assim estes exigiriam sua própria prova-de-trabalho e então segurariam o arquivo do usuário pelo tempo combinado.

O armazenamento dos dados é adequado sob demanda, pois caso os usuários não atualizem o PoW do arquivo, ele simplesmente poderá ser deletado para dar espaço a novos arquivos. Porém, os usuários não precisam ficar online 100% do tempo, apenas eventualmente mandarem a nova prova de trabalho, isto permite, por exemplo, que os arquivos mais acessados continuam sempre online.

Suponhamos que cada Prova de Trabalho seja suficiente para manter o arquivo online por 1 semana.

É possível fazer isto de diferentes maneiras:

  1. Uma competição, em que os arquivos com maior PoW permaneçam online
  2. Cada node definir por quanto tempo cada arquivo com um PoW padrão ficará online, assim rejeitando novos arquivos.
  3. Uma relação entre dificuldade do PoW e tempo que ele ficará online.

O PoW pode estar associado também à um timestamp, que cada node aceita se considerar numa faixa de sincronização adequada e/ou cada node/federação de nodes pode impedir acumulação de PoW criando nounces dinamicos.

Ao exigir nada mais que o conteúdo do arquivo, a hash e a prova de trabalho do mesmo, nenhuma informação extra é exigida do usuário, assim se o mesmo utilizar proxies como Tor, VPN e etc poderá armazenar seus dados de forma totalmente anônima na rede.

O CachePoW pode ser comparável à um CDN descentralizado, distribuindo conteúdo em diversos servidores espalhados geograficamente pelo mundo, anônimos ou não. De fato, nada impede os nodes de também estarem anônimos, talvez com a desvantagem de uma pequena perda de velocidade na rede.

Tudo isso garante não só a privacidade do usuário, como bloqueia a tirânica censura que tanto vivemos nos dias atuais. Sistemas de moderação autônomos e descentralizados podem continuar existindo, mas individuais ou por consenso (voluntário) por meio de blacklists compartilhadas... este processo pode ser delegado e em alguns casos automatizado por inteligencia artificial.

Pela simplicidade do protocolo, ao exigir apenas a hash e prova de trabalho, diversas camadas de protocolos podem ser desenvolvidas encima do CachePoW, como adicionar metadados aos arquivos, permitindo que diversas aplicações encontre-os facilmente usando seu próprio protocolo.

Chats, redes sociais, blogs, trackers p2p, plataformas de download P2P e de streaming que usem os CachePoW para armazenar os metadados das midias, jogos online e etc são exemplos de usos; as possibilidades são inimagináveis.

Qualquer um pode desenvolver seu protocolo encima do CachePoW, seja deixando os dados “crus” e transparentes, seja usando métodos de encapsulamento de dados, escolhendo seus proprios algoritimos de criptografia, assinaturas para garantir autenticidade dos dados, usando links e hashs referentes de outras redes e etc.

Um dos problemas da descentralização é que ela multiplica os custos computacionais. Enquanto que num sistema centralizado a informação pode ser armazenada num único computador com ou sem backup, numa rede descentralizada costuma-se replicar o conteúdo para todos os nós.

O preço por impedir um agente de censurar ou corromper todos estes nodes é uma variável a ser considerada. Embora cada detentor de um node só precise se preocupar com seu próprio custo, é preciso balancear e a pergunta se torna:

Até que ponto vale a pena a replicação dos dados ?

A resposta não é exata, pois existem diferentes necessidades. Então, por que não deixar cada usuário escolher, como um sistema espontâneo de livre mercado ?

Cada nó pode operar individualmente ou em conjunto (como federações), cada um exigindo uma prova de trabalho unica para cada arquivo. O usuário então escolherá para quantos nodes e/ou federações quer mandar, arcando com os custos de prova de trabalho (tempo de processamento) para manter seu arquivo online.

No conceito atual, a tokenização não é implementada, evitando assim a necessidade de registros imutáveis e impedindo a rastreabilidade dos ativos.

O custo dos usuários é expresso pela Prova de Trabalho.

Proprietários dos nodes podem regular quanto poder computacional (armazenamento, rede, processamento) querem ceder. A participação sem fins lucrativos imediatos é interessante para dar inicio ao projeto. Mas os nodes com suas federações podem financiar-se num sistema aberto ou anonimo de doações com criptomoedas ou outros meios. Bem como o uso da rede em aplicativos com fins lucrativos pode incentivar diferentes individuos, empresas e instituições à rodarem seus próprios nodes e federações.

************************

“Idéias e somente idéias podem iluminar a escuridão”

Ludwig von Mises

***********************

Este artigo está em desenvolvimento.

Gostaria de falar mais sobre o tema ou dar suporte ao projeto ?

Entre no grupo: https://www.facebook.com/groups/661649487964738

Ou me mande um email: anarkrypto@gmail.com

Desenvolvedor, cripto-entusiasta e criptolibertário

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store