Pełna implementacja protokołu P2P w JavaScript

Protokół P2P w JavaScript

js-ipfs dostarcza implementację protokołu IPFS dla przeglądarek internetowych. Napisana w pełni w JavaScript działa w kontekstach takich jak: przeglądarka, Service Worker, WebExtension oraz Node.js, otwierając drzwi do świata nowych możliwości.

js-ipfs działa w kontekstach takich jak: przeglądarka, Service Worker, WebExtension oraz Node.js, otwierając drzwi do świata nowych możliwości.

Disable Animation
Biblioteka js-ipfs jest w stane Alfa.Kod źródłowy nie został jeszcze poddany audytowi bezpieczeństwa i nie powinien być używany do przechowywania i wymiany wrażliwych informacji.

Główne cechy

Zawiera wszystko co istotne w IPFS. Implementacja dostarcza również dodatkowe funkcje usprawniające pracę w przeglądarce. Idealny fundament do budowy aplikacji DWeb.

Uruchom w Node.js oraz przeglądarce

js-ipfs działa w Node.js, Electron oraz każdej nowoczesnej przeglądarce. Umożliwia presonalizację, dzięki czemu może być używana w dowolnym środowisku uruchomieniowym.

Pełna implementacja IPFS

Żadna funkcja nie została pominięta. js-ipfs nie jest lekkim klientem, jest pełną implementacją protokołu IPFS.

PubSub umożliwia komunikację w czasie rzeczywistym

Węzły IPFS mogę tworzyć tematyczne topologie sieciowe w celu rozgłaszania zdarzeń w czasie rzeczywistym.

Publikuj i pobieraj dane z sieci IPFS

IPFS został zaprojektowany aby wykorzystywać siłę Content Addressing oraz Process Addressing w celu odnajdywania węzłów posiadających treści których szukasz. Analogicznie, możesz dodać dowolne dane i mieć pewność, że inne węzły będą mieć do nich dostęp.

DAG API umożliwia przemieszczanie się po strukturach danych

IPFS używa IPLD (InterPlanetary Linked-Data), który jest modelem danych umożliwiającym interakcję z danymi z różnych źródeł takich jak git, blockchain i inne.

Wbudowany libp2p

libp2p jest modularnym stosem sieciowym stworzonym na potrzeby IPFS. Możliwy jest bezpośredni dostęp do libp2p, dzięki czemu możesz go wykorzystać we własnych aplikacjach.

Uruchom jako demon

js-ipfs może być uruchomiony jako demon udostępniający HTTP API. Dzięki temu może być używany analogicznie do go-ipfs.

Stwórz stabilne adresy dla zmiennych danych

Zawiera IPNS (Interplanetary Naming System): mechanizm publikacji zmiennych odnośników umożliwiający propagację zmian w kryptograficznie bezpieczny sposób.

Wprowadzenie

IPFS wspiera adresowanie oparte o treść (Content Addressing) dla wszystkich twoich danych. Możesz udostępnić lub pobrać dane za pomocą CID, unikalnego identyfikatora treści. Wypróbuj poniżej!

Dodawanie danych do 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)
  })
})

Wynik

Pobieranie danych z IPFS

Przy użyciu Javascript w przeglądarce lub 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())
  })
})

Wynik

Przy użyciu lini komend

npm install ipfs -g
jsipfs cat QmPChd2hVbrJ6bfo3WBcTW4iZnpHm8TEzWkLHmLpXhF68A

Przy użyciu bramki HTTP

https://ipfs.io/ipfs/QmPChd2hVbrJ6bfo3WBcTW4iZnpHm8TEzWkLHmLpXhF68A
Dowiedz się więcej

Service Worker jako bramka

Zmień tę stronę w pełni funkcjonalną bramkę IPFS bez zewnętrznego serwera, bez wysyłania zapytań HTTP. Właśnie tak, js-ipfs działający jako Service Worker jest w stanie pobierać dane bezpośrednio z IPFS!

Włącz Service Worker

Przykładowe projekty

Paratii buduje technologie open source do transmisji i kuracji wideo. Wykorzystuje js-ipfs oraz kontrakty Ethereum. Portal jest aplikacją webową z materiałami wideo na IPFS.

Project Preview

TODO Title

Istnieje nieskończenie wiele zastosowań dla js-ipfs. Poniższe przykłady pokazują wybrane pomysły na to, co można zbudować z js-ipfs. Sprawdź je!

Browser Video Streaming
Exchange Files in Browser

Czy masz pomysł który chcesz zasugerować? Kliknij tu!

Publikacje i prezentacje

Obejrzyj nowości, dema oraz prezentacje przygotowane przez społeczność na temat IPFS i JavaScript. Wkrótce dodamy wiele nowych materiałów z tegorocznych spotkań deweloperów.

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!

Społeczność

js-ipfs jest projektem Open Source rozwijanym przez społeczność IPFS na licencji MIT. Istnieje wiele sposobów aby dołączyć: pomóż przy pisaniu specyfikacji, rozwijaj implementację oraz biblioteki, twórz przykładowe aplikacje i przewodniki, bierz udział w regularnych spotkaniach deweloperskich.