Uma implementação completa de um protocolo P2P escrito integralmente em JavaScript

Um protocolo P2P escrito em JavaScript

js-ipfs estabelece o caminho para a implementação do protocolo IPFS no Browser. Programado competamente em JavaScript, pode ser usado no Browser, num Service Worker, numa Web Extension e em Node.js, abrindo as portas para um mundo de possibilidades.

js-ipfs pode ser usado no Browser, num Service Worker, numa Web Extension e em Node.js, abrindo as portas para um mundo de possibilidades.

Desligar Animação
O js-ipfs ainda se encontra em estado Alfa.O código ainda não foi revisto por especialistas em segurança e por consequência não é recomendado que seja usado para guardar, partilhar e/ou publicar informação que tenha um caracter sensível.

Características

Com todas as funcionalidades que tu conheces e adoras sobre o IPFS. Esta implementação também carrega alguns extras que são únicos para uma implementação que funciona no browser. É a caixa de ferramenta ideal para todas as tuas aplicações para a DWeb.

Corre em Node.js e no Browser

js-ipfs funciona automaticamente em Node.js, Electron e em qualquer browser moderno. É também customizável de forma a que o possas usar na tua plataforma favorita.

Implementação completa da Stack IPFS

Nenhuma funcionalidade foi deixada de lado. O js-ipfs não é um light client, é uma implementação completa do protocolo IPFS.

Usa PubSub para comunicar em tempo real com todos os outros peers

Os nós do IPFS criam topologias de rede dedicadas à volta dos tópicos de interesse de forma a que os eventos sejam propagados em tempo real.

Providencia e/ou encontra ficheiros de qualquer parte da rede IPFS

IPFS foi desenhado para tirar proveito do endereçamento de conteúdo para encontrar nós na rede com os dados que procuras. Da mesma forma, quaisquer dados adicionados também vão estar disponíveis para qualquer outro nó.

Usa a DAG API para atravessar qualquer estrutura de dados que seja ligada por hashes

IPFS usa o IPLD, a \"InterPlanetary Linked-Data\", um modelo de dados que permite interagir com dados de muitas fontes, como por exemplo git, blockchains entre outras.

libp2p incluída

libp2p é a stack de rede modular que foi criada para o IPFS e agora podes usar também diretamente na tua aplicação através do IPFS.

Executa como um processo independente

js-ipfs vem também com a opção de ser executado como um processo independente com o qual podes interagir através da API HTTP que já estás familiarizado do go-ipfs.

Cria endereços estáveis para os dados em constante mudança

O IPNS, \"Interplanetary Naming System\", oferece uma forma de criar ponteiros mutáveis (registos) para propagar atualizações de uma forma certificada.

Iniciação

IPFS oferece-te uma primitiva de endereçamento baseada no seu conteúdo para todos os dados que possuis na DWeb. Podes disponibilizar dados para a rede ou obter dados já disponibilizados através da CID (Content Identifier), Identificador de Conteúdo. Experimenta agora!

Adicionar dados ao IPFS

const node = new IPFS()

const data = 'Hello, <YOUR NAME HERE>'

// once the node is ready
node.once('ready', () => {
  // convert your data to a Buffer and add it to IPFS
  node.files.add(node.types.Buffer.from(data), (err, files) => {
    if (err) return console.error(err)

    // 'hash', known as CID, is a string uniquely addressing the data
    // and can be used to get it again. 'files' is an array because
    // 'add' supports multiple additions, but we only added one entry
    console.log(files[0].hash)
  })
})

Resultado

Obter dados do IPFS

Usando JavaScript no Browser or Node.js

const node = new IPFS()

node.once('ready', () => {
  node.files.cat('QmPChd2hVbrJ6bfo3WBcTW4iZnpHm8TEzWkLHmLpXhF68A', (err, data) => {
    if (err) return console.error(err)

    // convert Buffer back to string
    console.log(data.toString())
  })
})

Resultado

Usando a CLI

npm install ipfs -g
jsipfs cat QmPChd2hVbrJ6bfo3WBcTW4iZnpHm8TEzWkLHmLpXhF68A

Usando a Gateway de HTTP

https://ipfs.io/ipfs/QmPChd2hVbrJ6bfo3WBcTW4iZnpHm8TEzWkLHmLpXhF68A
Descobre mais

Service Worker Gateway

Transforma esta página num Gateway de IPFS sem tocar em nenhum servidor ou usar HTTP para obter conteúdo da rede do IPFS. Sim, leste bem, o Service Worker Gateway com o js-ipfs conseguem conectar-se à rede do IPFS.

Ativar Service Worker

O que está a ser criado

Paratii implementa tecnologia open source para streaming e gestão de vídeo, utilizando js-ipfs e contratos Ethereum. Portal é uma web app de vídeos curados relacionados com criptografia que corre sobre IPFS.

Project Preview

Publicações & Palestras

Vê as atualizações dos projetos, demonstrações e outras palestras da comunidade IPFS no projeto de IPFS em JavaScript. Brevemente iremos adicionar dezenas de novas palestras dos Dev Meetings de IPFS.

IPFS on the Brave Browser, Alan Shaw

CRDTs as the foundation for Distributed Web Apps, Pedro Teixeira

A Regular JS Core Dev Call, join us!

Comunidade

js-ipfs é um projeto open source com licença MIT. Podes contribuir de várias formas: ajudar a escrever as specs, implementação de código e ferramentas usando libp2p, criar exemplos e tutoriais, e podes também juntar-te às nossas chamadas regulares para discutir connosco sobre libp2p.

Diverte-te connosco!