lançamento do sistema de arquivos descentralizado (InterPlanetary File System), formando um armazenamento global de arquivos versionado, implementado na forma de uma rede P2P, composta por sistemas de participantes. O IPFS combina ideias anteriormente implementadas em sistemas como Git, BitTorrent, Kademlia, SFS e Web, e se assemelha a um único 'cardume' BitTorrent (pares que participam da distribuição), trocando objetos Git. O IPFS se caracteriza por endereçamento baseado em conteúdo, em vez de local de armazenamento e nomes arbitrários. O código da implementação de referência está escrito na linguagem Go e sob as licenças Apache 2.0 e MIT.
A nova versão é notável pela inclusão, por padrão, de um transporte baseado em protocolo , que é uma camada sobre o protocolo UDP, suportando multiplexação de múltiplas conexões e fornecendo métodos de criptografia equivalentes ao TLS/SSL. No IPFS, o socket para receber conexões UDP é automaticamente iniciado no mesmo endereço e porta de rede que o manipulador de transporte baseado em TCP. O QUIC é utilizado tanto para conexões de entrada quanto de saída, e ao se conectar a novos nós, em caso de indisponibilidade do QUIC, há um fallback para o uso do TCP.
Outra novidade importante foi o suporte a transporte seguro , no protocolo e desenvolvido dentro do , um stack modular de rede para aplicações P2P. Após a negociação inicial da conexão, toda a troca subsequente de dados entre os participantes é criptografada e protegida contra escuta.
O NOISE substituiu o transporte , mas como método prioritário de criptografia entre nós, o TLS 1.3 ainda é o utilizado. O NOISE é bastante simples de implementar e se posiciona como um transporte universal multiplataforma, que pode ser implementado em várias linguagens de programação.
Na nova versão, também foi disponibilizada a possibilidade de adicionar páginas próprias para "404 Not Found" e foi adicionada a opção de suporte ao método de codificação Base36, que é otimizado para dados alfanuméricos sem distinção entre maiúsculas e minúsculas, como nomes de domínio (ao usar Base32, as chaves Ed25519 IPNS excedem em dois bytes o limite de tamanho do subdomínio, enquanto no Base36 se encaixam no limite). Além disso, uma opção foi adicionada às configurações
«", que define uma lista de nós para conexão, manutenção de conexão e reconexão, visando identificar vínculos "pegajosos" entre pares usados com frequência.
Vale lembrar que no IPFS o link para acessar um arquivo está diretamente relacionado ao seu conteúdo e inclui um hash criptográfico do conteúdo. O endereço do arquivo não pode ser renomeado aleatoriamente; ele só pode mudar após uma alteração no conteúdo. Da mesma forma, não é possível modificar um arquivo sem alterar seu endereço (a versão antiga permanecerá no endereço antigo e a nova estará acessível por outro endereço, uma vez que o hash do conteúdo do arquivo mudará). Considerando que o identificador do arquivo muda a cada alteração, para evitar o envio de novos links, são fornecidos serviços para vincular endereços permanentes que consideram diferentes versões do arquivo,), ou para fixar um apelido, semelhante aos FSS e DNS tradicionais, ( (Sistema de Arquivos Mutáveis) e ).
Assim como no BitTorrent, os dados são armazenados diretamente nos sistemas dos participantes, que trocam informações em modo P2P, sem depender de nós centralizados. Quando é necessário obter um arquivo com um conteúdo específico, o sistema encontra participantes que possuem esse arquivo e o fornece a partir de seus sistemas em partes, através de múltiplos fluxos. Após o download do arquivo para seu sistema, o participante se torna automaticamente um dos pontos de distribuição. Para identificar os participantes da rede nos nós onde o conteúdo de interesse está presente, uma tabela hash distribuída (). Para acessar o FSS global, o IPFS pode usar o protocolo HTTP ou montar um FSS virtual /ipfs usando o módulo FUSE.
O IPFS ajuda a resolver questões como a confiabilidade do armazenamento (se o armazenamento original falhar, o arquivo pode ser baixado de sistemas de outros usuários), resistência à censura de conteúdo (para bloquear, seria necessário bloquear todos os sistemas dos usuários que possuem uma cópia dos dados) e organização de acesso em caso de ausência de conexão direta à internet ou em situações de baixa qualidade de canal (é possível baixar dados através dos participantes mais próximos na rede local). Além de armazenar arquivos e trocar dados, o IPFS pode servir como base para criar novos serviços, por exemplo, para organizar o funcionamento de sites não vinculados a servidores, ou para criar aplicações descentralizadas. .
Fonte: opennet.ru
