25 de abril de 2024

Blockchain e P2P Exchange: Repetindo Erros de Escalabilidade

Em 2001, quando o BitTorrent foi inventado, outra rede p2p que já era bastante conhecida e funcionava no mesmoprincípios, começou a perder terreno.Ele foi vítima de seu próprio sucesso: tinha quase 150 mil usuários e os servidores de diretório apoiados pela comunidade não conseguiam lidar com a carga. Três horas após a conexão, o novo “servidor” atingiu o limite de largura de banda e desligou.

</p>

Como a criptomoeda pode (não) aprender com os erros de outras pessoas

Como isso está relacionado às criptomoedas? Você pode encontrar problemas semelhantes ao tentar sincronizar completamente uma carteira de criptografia, por exemplo, o cliente Ethereum completo. A tecnologia distribuída tem problemas de escalabilidade. Para aqueles que começaram sua “carreira on-line” documentando inconscientemente o declínio da rede p2p, mencionada acima, essa situação é surpreendentemente familiar.

Neste artigo, tentarei descrever as raízesproblemas, identifique sua conexão com criptomoedas, analise como foi resolvido na rede p2p e também considere por que essas soluções são parcial ou completamente inadequadas para a criptosfera.

Histórico de escalabilidade distribuída

Existem muitos paralelos que podem ser traçados entre a criptosfera ecompartilhamento de arquivos p2p. Muitos deles são lindamente abordados na série de quatro partes, “Bittorrent Lessons for Crypto”, de Simon Morris. Concordo com a maioria de seus pontos, exceto um: o BitTorrent eranãoo primeiro sistema que forneceu simples eTroca confiável de arquivos em canais lentos e não confiáveis. Mesmo deixando de lado o Z-Modem de 1986, que já contava com muitos recursos de estabilidade, a BT só foisimplificadoversão de uma tecnologia existente:um sistema que permitiu que muitas pessoas baixassem um único arquivo e compartilhassem partes dele entre si para aumentar a velocidade de download e, o mais importante, reduzir a carga da pessoa que baixou o arquivo. Este sistema também possibilitou a publicação de hiperlinks para arquivos compartilhados em sites regulares. Havia pelo menos um sistema semelhante - eDonkey 2000 ou eDonkey ou ed2k. Os princípios de operação do BitTorrent e do eDonkey são tão semelhantes que é difícil não chamar o BitTorrent de clone deste último.

A principal diferença entre BT e ed2k éque no ed2k você pode acessar arquivos sem um site de terceiros. Não há necessidade de ir para Pirate Bay. Você pode simplesmente procurar no servidor de diretório eDonkey conectado e acessar todos os arquivos compartilhados por outros membros. Isso pode ser feito usando a boa e velha barra de pesquisa. O que aconteceu fora dessa linha de pesquisa foi a felicidade e a maldição da web.

Se você não possui conhecimentos técnicos, basta pular o texto abaixo em itálico.

Para baixar um arquivo do BitTorrent, você deve primeiro encontrar e baixar o arquivo torrentde algum servidor webe coloque-o no cliente BT. Então ele próprio lidará com todas as coisas bastante simples: ele se conectará ao rastreador ou rastreadores para obter acesso ao arquivo desejado e, em seguida, obterá uma lista de todos que podem baixar fragmentos desse arquivo e iniciar o download.

Nem o rastreador nem os participantes podem ser encontrados sem um arquivo torrent, que deve ser postado por alguém no site. Isso significa que, se você deseja publicar um arquivo, é necessário:

  • executar rastreador para este arquivo
  • crie um arquivo torrent com o caminho para o rastreador
  • upload de arquivo torrent para o site
  • distribuir o link para o arquivo torrent

Aqui surge um nível adicional de complexidade, um intermediário adicional. Obviamente, sites que publicam esses links, como o Pirate Bay, muitas vezes infringem a lei.

Para publicar um arquivo no eDonkey, você precisava:

  • iniciar o cliente eDonkey
  • coloque o arquivo na pasta desejada no computador

E é isso aí! Qualquer pessoa pode se conectar ao mesmo "servidor eDonkey" digitando apenas parte do nome do arquivo na barra de pesquisa. Aperte o botão e pronto. Todos que carregaram o mesmo arquivo compartilharam automaticamente fragmentos dele com outras pessoas, como no BitTorrent. Assim, o servidor ed2k desempenhou o papel de um site e um rastreador.

Observe que nenhuma das partes armazena os dados reais do arquivo, portanto, nenhuma violação de direitos autoraisdiretamente. Obviamente, todo mundo que carrega ou baixa um arquivo real viola esses direitos.

Além disso, para usar o ed2k, foi possívelPublique hiperlinks para sites. Se fosse mais conveniente para os usuários receberem um link por meio de um site confiável, eles também poderiam usar esta opção.

Claro, ninguém pensou que apenas um servidorfará todo o trabalho do serviço de pesquisa e rastreará informações sobre todos os arquivos na Internet. Portanto, qualquer pessoa pode executar seu servidor eDonkey. Os servidores se conectam, formando sua própria rede, como é o caso das criptomoedas.

No entanto, houve um pequeno problema. Como encontrar os arquivos que "meu servidor" - o servidor ao qual eu me conecto - não rastreia?

Como o BitTorrent resolveu esse problema? De jeito nenhum, pelo menos no começo. Se o seu arquivo torrent não tiver um rastreador ativo, nada funcionará. (Esse recurso do sistema também impediu a ocorrência de alguns problemas de BT, mas falarei sobre isso outra vez *.)

Por outro lado, os servidores eDonkey enviaram uma lista de todos os servidores que conheciam no momento da conexão. Isso permitiu&#8230;envie uma solicitação de arquivo para todos os servidores.É por isso que a rede eDonkey morreu.

Poderia haver um número ilimitado de servidores eDonkey na Internet.Todo clientepoderia solicitar ao seu servidor a presença de um arquivo.Adicionar um novo servidor não reduziu a carga em outros servidores, mas apenas aumentou o tráfego geral de pesquisa do eDonkey na Internet. À medida que mais e mais clientes tomavam conhecimento do servidor eDonkey, sua conexão com a Internet, geralmente uma conexão DSL doméstica, ficava sobrecarregada. A única maneira de continuar era obter um endereço IP diferente do ISP.

Adiçãonovo clientetambém afetou todos os servidores que este cliente conseguiu encontrar. Mas contarei como essa descoberta aconteceu em outra ocasião. Descobriu-se que o número máximoclientes em toda a redeos servidores suportam cerca de 150.000, o que não é nada comparado aos padrões modernos, mas devemos lembrar que a largura de banda da conexão DSL era de 256 Kbps.

Eu participei da comunidade eDonkey eestava no meio desse desastre. Tentei encontrar soluções para o problema e tentei, sem sucesso, convencer as pessoas de que elas não usavam ferramentas de carregamento de rede que aumentavam o tráfego e, portanto, ficaram fora de controle.

É por isso que quando ouvi pela primeira vez sobre comoO Bitcoin funciona, o que aconteceu muito antes de sua aparição oficial, eu ri. E você teve que começar a minerar. Compreender as limitações técnicas não garante a compreensão do princípio da ganância.

O problema da escalabilidade de criptomoedas

Se você sabe alguma coisa sobre livros distribuídos, provavelmente sabe que cadade pleno direitoum cliente de tais redes deve tercópia completa do registro(ou pelo menos a versão atual dos dadoscada conta de registro e algum histórico), o que significa que todas as atualizações de rede devem ser baixadas. Como é o caso dos servidores edonkey, a criação de outro cliente completo não reduz a carga de outros clientes completos, mas apenas coloca um fardo ainda maior para todos, uma vez que os clientes precisam enviar cópias das transações paramaisum computador que também gera transações.

Criar um cliente “light” ou “lich” não tem um efeito positivo em clientes gordos. Neste caso, todos elestambémMais uma transação de cliente precisa ser processada, mas pelo menos um deles agora recebe solicitações de clientes light sempre que precisa consultar seu saldo.

Assim, a carga na rede aumenta com oo surgimento de cada novo cliente, seja um cliente completo ou leve. Ele não pode ser reduzido de forma alguma embutido nas ferramentas. Não se parece com nada?

Se houver mineradores na rede, o mesmo problemaaparece também para eles: eles devem processar e assinar cada transação. Normalmente, esses computadores e suas conexões são mais adequados para a função de servidor; no final, eles ganham dinheiro com transações. Mas mesmo neste caso, sobrecarregar a conexão é apenas uma questão de tempo. Especialmente se as mineradoras se tornarem servidores reais na rede, quando todos os clientes se tornarem clientes leves, pois os requisitos para clientes completos são muito altos para uso não comercial.

Solução de hospedagem de arquivos

Se você é um técnico ávido, pode pensar: "Por que eles não usaram apenas tabelas hash distribuídas?"

E aqui está o porquê: tudo aconteceuantes que as tabelas hash distribuídas fossem inventadas.

DHT (Distributed Hash Tables - “tabelas hash distribuídas”) distribuem tabelas hash, essencialmente bancos de dados comuns, através de uma rede de computadores, de modo que cada uma delas é responsávelpor partedados.Olhando para o futuro, direi que desta forma você pode armazenar muito mais dados do que cabe na memória de qualquer um dos computadores participantes. Se tudo for feito corretamente, cada participante receberá solicitações apenas para “sua” parte da tabela hash, que distribui a carga entre vários nós. Adicionando nós ao DHTreduzcarga em cada nó, em vez de aumentá-la. É por isso que as variantes do DHT são usadas em quase todos os lugares hoje, começando pelo Google.

Na verdade, DHT também é a solução para ed2k(mais precisamente para o protocolo “Overnet”) e para o problema de segregação do rastreador BitTorrent. No Overnet, assim como no DHT BitTorrent, cada cliente se torna um rastreador de uma parte específica da rede, fornecendo muito mais recursos para buscas. Overnet elimina a necessidade de uma rede inteira de servidores eDonkey.

A criptomoeda pode aprender com os erros dos outros?

Tabelas de hash distribuídas são como mágicaa varinha. Eles permitem "fragmentar" quase todas as informações, protegendo os nós de muitas solicitações. Esta solução pode ser usada para criptomoedas?

Em resumo, não (uma resposta mais detalhada é fornecida abaixo). Resposta mais longa: possível, mas todas as promessas iniciais da blockchain devem ser mantidas.

Confiabilidade do "registro distribuído" na maior partepartes é garantida pelo fato de que os registros distribuídos, diferentemente das tabelas de hash distribuídas, são distribuídos apenas como acontece com os jornais - todos obtêm sua própria cópia. A divisão de registros reduzirá a disponibilidade de dados e, consequentemente, sua confiabilidade.

Aqui está outra analogia com o compartilhamento de arquivos: Você pode baixar um filme apenas se houver fontes suficientes na rede ao mesmo tempo para baixar o arquivo inteiro. Se 300 fontes tiverem o início do arquivo e 50 tiverem o fim e ninguém tiver o meio do arquivo, o filme inteiro não será carregado. É triste, mas não o fim do mundo. É muito pior quando parte do dinheiro não é suficiente na carteira.

Claro, você pode copiar peças muitas vezesregistro para garantir a presença de um número suficiente de clientes&#8230; Mas quanto é suficiente? É bom quando todo o seu dinheiro pode “ficar off-line” com uma chance em mil? 1 em um milhão? Contanto que todos os nós pertençam a pessoas comuns, você nunca sabe quantos participantes podem ficar offline a qualquer momento. E se houver uma grande queda de energia no Sudão e todas as cópias da sua carteira estiverem armazenadas lá, mesmo se você estiver nos EUA?

Claro, você sempre pode fazer a manutenção sozinhocliente completo, e o protocolo de fragmentação garantirá que uma cópia da carteira e do histórico de transações esteja sempre disponível em seu computador. Mas você pode ver isso do outro lado: digamos que você esteja vendendo algo e o comprador seja o único participante que tem comprovante de seus fundos & # 8230; Você concordaria com tal acordo?

Há também um pequeno problema de segurança.rede - é fornecida por mineradores. Obviamente, nesse caso, o bloco não pode ser assinado por cada minerador. Caso contrário, em uma rede sem servidores, a função de servidor precisará ser transferida para mineradores: cada minerador terá que processar todas as transações na rede, carregando muito sua conexão.

Isso significa que a fragmentação é automaticamentereduzirá os custos de segurança da rede de criptomoedas e será mais fácil atacar. Hoje, existem apenas duas redes de criptomoedas que podem se dar ao luxo de reduzir os custos de segurança: Bitcoin e Ethereum. Quase todas as outras redes de criptomoedas já foram atacadas por 51%. Isso prova uma coisa: o poder computacional dos atacantes é simplesmente incrível.

Tudo isso nos leva ao seguinte. Se você fragmentar o registro de criptomoedas, quem pode garantir que o fragmento que você possui realmente faz parte do registro? No final, verifica-se uma rede de nós não confiáveis ​​que não podem ser confiáveis. O que acontece se alguma parte do registro estiver "nas mãos" de um invasor?

Três argumentos são distinguidos aqui:

  1. Negligência lógica (ninguém será capaz de capturar todos os nós nos quais um determinado fragmento está armazenado).
  2. Estatísticas (a probabilidade de que todos os nós com um determinado fragmento estejam na mesma rede é muito pequena).
  3. Criptografia (a proteção criptográfica evita esse problema).

O problema é que as pessoas tendem a subestimar muito o tamanho e a força das redes de invasores no mundo das criptomoedas. Por exemplo, no início de 2019 houve um ataque de 51% ao Ethereum Classic, quepoderiacustou aos invasores US$ 55 milhões (ou pelo menospelo menos metade desse valor, dada a queda nos preços das criptomoedas). Mais tarde, os invasores devolveram US$ 100 mil em tokens roubados, mas descobriram que era apenas um teste ou um aviso. Parece que esse ataque não custou ao invasor mais do que US$ 1 milhão, porque presumivelmente ele tinha aproximadamente essa quantia em sua carteira.

Se alguém pode obter uma quantidade enormepoder de processamento a um preço relativamente baixo (comparado ao dinheiro que pode ser roubado), oferece oportunidades incríveis. Os itens 1 e 2 podem ser manipulados por um ataque DDOS de nós "reais", substituindo-os. Quanto ao parágrafo 3, proponho voltar à história.

Na rede eDonkey, o nome do arquivo não era a chave. Qualquer membro pode alterar o nome do arquivo. O caminho do arquivo foi obtido usando hashes criptográficos. Suponha que você clicou em um link verificado, por exemplo, para baixar um novo sucesso de bilheteria. Você obterá o tamanho do arquivo e do hash.

Depois de algumas horas ou dias, o filme foi baixado,você preparou pipoca no micro-ondas e sentou-se no sofá com sua cara-metade, ligou o filme e & # 8230; Foi imediatamente fechado porque era pornografia hardcore.

Depois de longas explicações com, talvez, o seusua outra metade, você começará a descobrir o que aconteceu. E aconteceu o seguinte. O algoritmo de hash MD4 foi usado para endereçar o arquivo. Você não pode descriptografar o hash em dados devido à perda de informações, mas vocêvocê podecom algum esforço para encontrar dados,que têm o mesmo hash e tamanho. É difícil decifrar um hash por meio de uma pesquisa exaustiva; é preciso muito poder e tempo de computação. Mas para decifrar o hash MD4, não é necessário fazer uma pesquisa exaustiva: há alguns anos atrás, foi encontrada uma vulnerabilidade no algoritmo que permitia recriar os dados de um hash específico.

Hackear hashes modernos requer maispoder de processamento do que antes. Mas, como já vimos, a quantidade de poder computacional dos atacantes é simplesmente colossal e, ao que parece, adquiri-lo é muito mais fácil do que parece. Por segurança, você precisa de mais do que alguns hashes criptográficos.

Eu não estou dizendo que é impossível escalarrede blockchain. Isso pode ser feito usando a conversão, sacrificando certas propriedades, que já foram mencionadas acima. O resultado será algo diferente do melhor registro distribuído duplicado do mundo, uma cópia da qual todos têm. Por que isso é necessário? É muito mais fácil resolver todos os problemas com bancos de dados tradicionais ou blockchains privados sem gastar uma quantidade enorme de eletricidade para provar o trabalho realizado.

*: Eu era uma daquelas pessoas que forneciam serviços ed2k para a comunidade que o BitTorrent simplesmente não precisava: listas de servidores. Os arquivos torrent foram um passo intermediário feio e incluíram um caminho para encontrar rastreadores. Os links Ed2k: // não eram assim e, na época, quase todo mundo tinha endereços IP dinâmicos, e o suporte ao DNS no protocolo edonkey estava em falta, o que tornava impossível entrar na rede eDonkey sem uma lista real de servidores.

</p>