Em 2001, quando o BitTorrent foi inventado, outra rede p2p que já era bem conhecida e trabalhava na mesma maioria dos princípios, começaram a desistir de suas posições. Ela foi vítima de seu próprio sucesso: tinha quase 150.000 usuários e os servidores de diretório suportados pela comunidade não conseguiram lidar com a carga. Três horas após a conexão, o novo “servidor” atingiu os limites de largura de banda e desconectou.
artigo relacionado: Ele sofreu bullying na escola, mas agora vive um estilo de vida luxuoso graças à negociação de Bitcoin e outras criptomoedas
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.
artigo relacionado: Investidor australiano comprou uma propriedade de 2.800m² em Charleville com dinheiro que ganhou com ferramenta financeira inovadora
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
Você pode desenhar muitos paralelos da criptosfera comcompartilhamento de arquivos P2P. Muitos deles são maravilhosamente descritos em uma série de quatro partes dos artigos "Bittorrent Lessons for Crypto" de Simon Morris. Eu concordo com a maioria dos pontos dele, exceto por uma coisa: o BitTorrent foi não o primeiro sistema a fornecer uma solução simples ecompartilhamento de arquivos confiável em canais lentos e não confiáveis. Mesmo que você não leve em consideração o Z-Modem de 1986, que já tinha muitas funções para estabilidade, a BT era apenas simplificado versão de uma tecnologia existente: um sistema que permite que muitas pessoas carreguem um único arquivo e compartilhem fragmentos entre si para aumentar a velocidade do download e, o mais importante, reduzir a carga sobre quem baixou o arquivo. Esse sistema também permitiu colocar hiperlinks para arquivos compartilhados em sites regulares. Havia pelo menos um desses sistemas - eDonkey 2000 ou eDonkey ou ed2k. Os princípios de operação do BitTorrent e do eDonkey são tão semelhantes que o BitTorrent dificilmente pode ser chamado de clone do ú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ê primeiro precisa encontrar e baixar um arquivo torrent de 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 dados de arquivos válidos, portanto, não infringe direitos autorais diretamente. 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 da eDonkey enviaram uma lista de todos os servidores que eles conheciam durante a conexão. Permitiu ... envie uma solicitação de arquivo para todos os servidores. É por isso que a rede eDonkey morreu.
Um número ilimitado de servidores eDonkey poderia existir na Internet. Todo cliente pode solicitar um arquivo do seu servidor. A adição de 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 aprendiam sobre o servidor eDonkey, sua conexão com a Internet, e muitas vezes era uma conexão DSL doméstica, ficava muito ocupada. A única maneira de continuar era obter um endereço IP diferente do provedor.
Adicionando novo cliente também afetou todos os servidores que esse cliente pôde encontrar. Mas vou falar sobre como essa descoberta aconteceu outra vez. Verificou-se que a quantidade máxima clientes 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ê souber algo sobre registros distribuídos, talvez saiba que todos de pleno direito o cliente dessas redes deve ter cópia completa do registro (ou pelo menos a versão atual de cadaconta de registro e algum histórico), o que significa que você precisa baixar todas as atualizações de rede. Como no caso dos servidores edonkey, a criação de outro cliente completo não reduz a carga em outros clientes completos, mas apenas sobrecarrega a todos, pois os clientes precisam enviar cópias de transações para mais um computador que também gera transações.
Criar um cliente "fácil" ou "lich" não tem um efeito positivo em clientes completos. Nesse caso, todos eles também você precisa processar as transações de outro cliente, no entanto, pelo menos um deles agora recebe solicitações de clientes light sempre que precisa verificar o 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 aconteceu antes da criação de tabelas de hash distribuídas.
O DHT (Tabelas de Hash Distribuído - “Tabelas de Hash Distribuído”) distribui tabelas de hash, bancos de dados essencialmente comuns, em uma rede de computadores, para que cada um seja responsável por parte dados. No futuro, direi que dessa maneira você pode armazenar muito mais dados do que caber na memória de qualquer um dos computadores participantes. Se tudo for feito corretamente, cada participante receberá solicitações apenas da parte "deles" da tabela de hash, que distribui a carga entre muitos nós. Adicionando nós ao DHT reduz carregar em cada nó, mas não o aumenta. É por isso que hoje as opções DHT são usadas em quase todos os lugares, começando pelo Google.
De fato, o DHT também é uma solução para o ed2k(mais precisamente para o protocolo Overnet) e para o problema de segregação do rastreador BitTorrent. No Overnet, como no DHT BitTorrent, cada cliente se torna um rastreador para uma determinada parte da rede, fornecendo muito mais recursos para pesquisa. A overnet elimina a necessidade de toda uma rede 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.
Obviamente, você pode copiar partes repetidamenteregistro para garantir a presença de um número suficiente de clientes ... Mas o suficiente - quanto? É bom quando todo o seu dinheiro pode ficar offline com uma chance de 1 em mil? 1 a um milhão? Desde que todos os nós pertençam a pessoas comuns, você nunca sabe quantos participantes podem ficar offline em um determinado momento. E se ocorrer uma queda de energia massiva no Sudão e todas as cópias da sua carteira forem armazenadas lá, mesmo se você estiver nos Estados Unidos?
Claro, você sempre pode se servircliente completo e o protocolo de fragmentação garantirá uma disponibilidade constante de uma cópia da carteira e do histórico de transações no seu computador. Mas você pode vê-lo do outro lado: digamos que você esteja vendendo alguma coisa, e o comprador é o único participante que tem evidências da disponibilidade de fundos ... Você concorda com esse 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:
- Negligência lógica (ninguém será capaz de capturar todos os nós nos quais um determinado fragmento está armazenado).
- Estatísticas (a probabilidade de que todos os nós com um determinado fragmento estejam na mesma rede é muito pequena).
- Criptografia (a proteção criptográfica evita esse problema).
O problema é que as pessoas tendem a subestimar o tamanho e a força das redes de criminosos cibernéticos no mundo das criptomoedas. Por exemplo, no início de 2019, houve um ataque de 51% ao Ethereum Classic, que poderia atacantes custam US $ 55 milhões (ou pelo menospelo menos metade desse valor, dada a queda nos preços das criptomoedas). Mais tarde, os atacantes devolveram os tokens roubados por US $ 100 mil, e acabou sendo apenas um teste ou aviso. Parece que, para o atacante, esse ataque não custou mais de US $ 1 milhão, porque supostamente havia aproximadamente esse valor 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 carregado,você fez pipoca no microondas e, sentado no sofá com sua alma gêmea, ligou o filme e ... Eles fecharam imediatamente, porque acabou sendo pornô hardcore.
Após longas explicações com, possivelmente, o seualma gêmea, você começará a entender o que aconteceu. E aconteceu o seguinte. Para endereçar o arquivo, foi utilizado o algoritmo de hash MD4. Você não pode descriptografar o hash em dados devido à perda de informações; 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.