.. | ||
README.md |
IPFS é a Web Distribuída
Um protocolo hipermídia ponto a ponto para tornar a web mais rápida, segura e aberta.
Bem vindo ao IPFS! Por que não assiste um vídeo de demonstração para começar? Por favor, poste perguntas e idéias em https://discuss.ipfs.io
Índice
Visão Geral
IPFS (the InterPlanetary File System) é um novo protocolo de distribuição hipermídia, endereçado por conteúdo e identidades. O IPFS permite a criação de aplicativos completamente distribuídos. O objetivo é tornar a web mais rápida, segura e aberta.
O IPFS é um sistema de arquivos distribuídos que procura conectar todos os dispositivos computacionais com o mesmo sistema de arquivos. De certa forma, isso é semelhante aos objetivos originais da Web, mas o IPFS funciona como um único bittorrent swarm trocando objetos git. Você pode ler mais sobre suas origens no documento IPFS - Content Addressed, Versioned, P2P File System.
O IPFS está se tornando um novo grande subsistema da Internet. Se construído corretamente, pode complementar ou substituir o HTTP. Pode complementar ou substituir. Parece loucura. É uma loucura.
Quer ver mais? Confira a palestra de Juan Benet no Sourcegraph - IPFS: The Permanent Web.
Sumário
O IPFS é um protocolo que:
- define um sistema de arquivos endereçado ao conteúdo
- coordena a entrega de conteúdo
- combina o Kademlia + BitTorrent + Git
IPFS é um sistema de arquivos que:
- tem diretórios e arquivos
- tem sistemas de arquivos montáveis (via FUSE)
IPFS é uma web que:
- pode ser usada para visualizar documentos, como na web
- arquivos acessíveis via HTTP em
https://ipfs.io/<path>
- navegadores ou extensões podem aprender a usar os esquemas de URL
ipfs://
oudweb:/ipfs/
diretamente - garante a autencidade via conteúdo endereçado
O IPFS é modular e possui:
- camada de conexão sobre qualquer protocolo de rede
- camada de roteamento
- camada de roteamento DHT (kademlia/coral)
- um serviço de nomenclatura baseado em caminho
- usa a troca de blocos inspirada no bittorrent
O IPFS usa criptografia com:
- endereçamento de conteúdo hash criptográfico
- desduplicação em nível de bloco
- integridade de arquivos + versionamento
- execução em nível de sistema de arquivos + suporte a assinatura
O IPFS é P2P:
- transferências de arquivos peer-to-peer em todo o mundo
- arquitetura completamente descentralizada
- não possui um ponto central de falha
O IPFS é um cdn:
- adicionar um arquivo ao sistema de arquivos localmente está disponível para o mundo
- amigável ao cache (nomenclatura de conteúdo hash)
- distribuição de largura de banda baseada em bittorrent
O IPFS tem um serviço de nome:
- IPNS, um sistema de nomes inspirado em SFS
- namespace global baseado em PKI
- serve para construir cadeias de confiança
- compatível com outros NSes
- pode mapear DNS, .onion, .bit, etc para IPNS
Como o IPFS Funciona?
Para saber mais sobre como funciona o IPFS, dê uma olhada nos Papers ou Conversas. Você também pode explorar as Especificações por escrito.
Papers IPFS
- IPFS - Content Addressed, Versioned, P2P File System (draft 3)
- Especificações (em progresso)
- veja também: https://github.com/ipfs/papers
Conversas IPFS
Esta é uma breve seleção de palestras introdutórias. Com o tempo, coletaremos mais.
- 2014-07-21 - IPFS: The Permanent Web at Sourcegraph (primeira conversa pública)
- 2015-02-20 - IPFS Alpha Demo
- 2015-06-03 - IPFS Hands on Introduction at Ethereum SV Meetup
- 2015-10-22 - IPFS: The Distributed, Permanent Web no Seminário de Stanford (melhor visão geral do projeto)
- 2016-09-14 - Distributed Apps with IPFS
- 2016-10-22 - The Decentralized Web, IPFS and Filecoin
Veja a lista completa em IPFS Media
Mais Sobre IPFS
O projeto IPFS busca evoluir a infraestrutura da Internet e da Web, com muitas coisas que aprendemos com sistemas de sucesso, como o Git, BitTorrent, Kademlia, Bitcoin, e muitos, muitos outros. Esse é o tipo de coisa que teria saído no ARPA/DARPA/IETF/BellLabs em outra época. IPFS é um projeto Open Source Livre, com centenas de colaboradores.
Estado Atual do IPFS
O IPFS é um trabalho em andamento!
Observe que o IPFS é um trabalho em andamento. É um plano ambicioso para tornar a Internet mais livre, aberta, segura e de alto desempenho. Baseia-se nas boas ideias de numerosos sistemas distribuídos testados em campo.
Hoje, há uma implementação principal do protocolo IPFS (em Go) com mais projetos a caminho (JavaScript e Python).
Distribuição Alpha
Em fevereiro de 2015, a implementação do go-ipfs foi lançada como uma "Distribuição Alfa". Desde então, o go-ipfs vem fazendo lançamentos regulares no caminho da Beta. Ambos js-ipfs e py-ipfs estão em andamento.
Para um tutorial detalhado, clique aqui e mãos à obra!.
Questões de Segurança e Divulgações
O protocolo IPFS e suas implementações estão em desenvolvimento pesado. Isso significa que pode haver problemas em nossos protocolos ou pode haver erros em nossas implementações. E - embora o IPFS ainda não esteja pronto para produção - muitas pessoas já estão executando nós em suas máquinas. Por isso, levamos as vulnerabilidades de segurança muito a sério. Se você descobrir um problema de segurança, por favor, chame a nossa atenção imediatamente!
Se você encontrar uma vulnerabilidade que pode afetar implementações ativas - por exemplo, expondo uma exploração de execução remota - envie seu relatório de maneira privada para security@ipfs.io. Por favor, NÃO torne um problema público.
Se o problema for uma falha do protocolo que não pode ser imediatamente explorada ou algo ainda não implementado, basta discuti-lo abertamente.
Projeto e Comunidade
O Projeto IPFS é agora muito grande, com centenas de colaboradores em nossa comunidade. Você está convidado a participar! Aqui estão alguns links para nossos canais de comunicação:
- Fóruns da Comunidade IPFS para Discussão e Suporte
- Sprints e Administração do Projeto
- Guideline de Contribuição
Você também pode encontrar nossa comunidade em:
- IRC: #ipfs on chat.freenode.net for live help and some dev discussions (Logs)
- Google Group: ipfs-users@groups.google.com (low traffic)
- Twitter: @IPFSbot for news.
Links do projeto
O Projeto IPFS é grande - há muitos subprojetos e esforços relacionados. Vamos documentar os principais aqui, mas você deve dar uma olhada. O espaço está explodindo e muitos novos projetos estão surgindo o tempo todo.
Para uma lista com curadoria da comunidade de projetos incríveis usando o IPFS, confira awesome-ipfs!
Implementações do Protocolo
Linguagem | Projeto | Completude |
---|---|---|
Go | https://github.com/ipfs/go-ipfs | referência |
JavaScript | https://github.com/ipfs/js-ipfs | alpha |
Python | https://github.com/ipfs/py-ipfs | iniciando |
C | https://github.com/Agorise/c-ipfs | iniciando |
Se você deseja iniciar sua própria implementação de linguagem do IPFS, confira o Guia de implementação do IPFS e Especificações. As especificações ainda estão evoluindo, mas os principais formatos são estáveis e podem ser construídos. Certifique-se de postar uma issue caso queira iniciar uma, já que muitas pessoas expressaram interesse em contribuir para novas implementações.
Bibliotecas de Clientes HTTP
Por favor ajude contribuindo para uma das bibliotecas acima. Caso você queira implementar em outra linguagem, consulte o Guia de Implementação do Cliente HTTP IPFS e avise-nos para que possamos ajudar!
Diretório de Projetos
Este tem como objetivo ser um diretório de todos os repositórios da Organização do IPFS Github e outras coisas relacionadas.
Temos um quadro de status que verifica todos os repositórios do IPFS com informações sobre CI, Readmes, cobertura de testes e assim por diante, neste link: http://project-repos.ipfs.io/
Organização do Projeto
- ipfs - Repositório Master, introdução e notícias.
- discourse - Discussões da comunidade e fórum de suporte.
- tm - Equipe IPFS Planejamento e Gestão do Projeto.
Obtenha ajuda!
O melhor lugar para procurar ajuda é no fórum da comunidade do IPFS ou no IRC (freenode) no canal # ipfs
.
Há dois repositórios depreciados contendo FAQ e support. Use-os como referência, mas publique novas perguntas ou solicitações de ajuda em https://discuss.ipfs.io.
Documentos
- papers - Papers acadêmicos sobre IPFS.
- specs - Especificações no protocolo IPFS.
- notes - Várias notas e discussões relevantes (que não se encaixam em outro lugar).
- reading-list - Artigos para entender o IPFS.
Discussões
- archives - Coordenar os esforços de arquivamento com o IPFS.
- archive-format - Formato de arquivo DAG.
- research-bitswap - Repo para discutir pesquisa Bitswap.
- bitswap-ml - Bitswap e Machine Learning.
- research-crdt - Repor para discutir sobre pesquisas sobre crdt.
- research-pubsub - Repo para discutir a pesquisas sobre pubsub.
- blockchain-data - Usando o IPFS para armazenar dados para aplicativos Blockchain.
- POST - Uma estrutura de dados para comunicação humana.
Implementações de Protocolo
- go-ipfs - Implementação em Go.
- js-ipfs - Implementação em Javascript.
- py-ipfs - Implementação em Python.
IPFS DSLs
- fsharp-ipfs-dsl - Embedded declarative F# DSL over net-ipfs-api
IPFS GUIs
- ipfs-companion - A extensão do navegador web.
- ipfs-desktop - Um aplicativo de desktop.
- ipfs-webui - O aplicativp IPFS WebUI.
- i18n - O Projeto de Tradução IPFS: traduções de crowdsourcing de GUIs do IPFS e sites.
- pm-ipfs-gui - Coordenação de desenvolvimento e manutenção de aplicativos GUI.
Apps no IPFS
Você pode encontrar uma lista cada vez maior em Awesome IPFS
Infraestrutura da Comunidade
- blog - O blog IPFS.
- community forum
- distributions - Scripts para construir o /install da página html.
- newsletter - Prepare e armazene resumos de boletins IPFS. Assine aqui.
- infrastructure - Ferramentas e sistemas para a comunidade.
- ops-requests - Solicitações sobre operações de infraestrutura.
- project-repos Status do IC e outras métricas de integridade.
- website - O source do site da comunidade do IPFS em http://ipfs.io.
Listas de Referência
- refs - Ferramentas para publicar listas de cabeçalhos de referência do IPFS.
- refs-denylists-dmca - Avisos de remoção do DMCA para o IPFS Public Gateway.
- refs-solarnet-storage - Inventário de conteúdo armazenado nos hosts de armazenamento do Solarnet.
Outros Recursos da Comunidade
- examples - Exemplos de como usar o go-ipfs.
- awesome-ipfs - Recursos úteis para usar o IPFS e construir coisas sobre ele.
- logo - O logotipo para o IPFS.
Meetups sobre IPFS
Há uma infinidade de Meetups IPFS em todo o mundo agora. Encontre o seu no Community Repo
Encorajamos e apoiamos os Meetups do IPFS, por favor, avise-nos caso você queira iniciar um. Sinta-se à vontade para se organizar através das discussões da comunidade e para anunciar eventos no repositório principal.
Ferramentas
Instalando
- install-go-ipfs - Instale o script de shell go-ipfs.
- install-js-ipfs - Instale o js-ipfs através do npm ou por uma script tag.
- ipfs-update - Uma ferramenta de atualização para o IPFS.
- fs-repo-migrations - Estas são migrações para as versões IPFS fs-repo.
- npm-go-ipfs - Instale o go-ipfs a partir do npm.
Outros
- connections-globe - Um globo interativo para visualizar todos os seus pares IPFS.
- dataviz - Visualizações de dados do IPFS.
- dir-index-html - Listagem de diretórios html.
- dnslink-deploy - Configurar automaticamente registros DNS no Digital Ocean.
- file-browser - Arquivos genéricos do browser UI
- fs-stress-test - Teste de estresse dos recursos do sistema de arquivos IPFS.
- js-ipfsd-ctl - Controlar daemons IPFS do JavaScript.
- ipfs-hubot - Hubot para uso IPFS.
- ipfs-blob-store - Uma implementação do abstract blob store usando IPFS.
- Encontre uma lista cada vez maior em Awesome IPFS
Licença
MIT