JavaScript로 구현된 완전한 P2P 프로토콜

P2P JavaScript 프로토콜

js-ipfs는 IPFS 프로토콜을 브라우저에서 구현할 수 있는 길을 열어줍니다. 전부 JavaScript로 작성되었으며 브라우저, 서비스 워커, 확장 프로그램 그리고 Node.js에서 작동하며 여러 가능성을 보여줍니다.

js-ipfs는 브라우저, 서비스 워커, 확장 프로그램 그리고 Node.js에서 실행되며 여러 가능성을 보여줍니다.

애니메이션 비활성화
현재 js-ipfs 라이브러리는 Alpha 버전입니다.소스코드는 보안 전문가가 감사하지 않았으므로, 중요한 정보를 저장하거나 공유 또는 게시하는데 사용해서는 안 됩니다.

기능

당신이 IPFS에 대해 알고 사랑하는 모든 것들로 이루어졌습니다. 이 구현은 브라우저에 몇 가지 특별한 기능과 추가적인 사항을 전달하며, 당신의 모든 DWeb 애플리케이션을 위한 유용한 도구입니다.

Node.js와 브라우저에서 작동

js-ipfs는 Node.js, Electron 과 어떠한 현대적인 브라우저에서든 즉시 사용할 수 있습니다. 그렇기 때문에 설계에 따라서 당신이 원하는 런타임에 맞춰 사용할 수 있습니다.

IPFS Stack의 모든 구현

구현되지 않은 기능이 없습니다. js-ipfs 는 라이트 클라이언트가 아니며, IPFS 프로토콜의 전체 구현을 담고 있습니다.

PubSub을 이용하여 다른 노드와 실시간으로 통신

IPFS 노드들은 이벤트를 실시간으로 전송하기 위해 관심사를 기반으로 네트워크 배치를 만들 수 있습니다.

IPFS 네트워크 어디에서나 파일의 추가와 탐색

IPFS는 당신이 찾고 있는 콘텐츠를 가지고 있는 노드를 네트워크에서 찾기 위해 콘텐츠 주소 지정 기능을 사용하도록 설계되었습니다. 같은 방법으로 당신은 데이터를 추가할 수 있고 다른 노드는 그것을 찾을 수 있습니다.

DAG API를 이용하여 해시로 연결된 데이터 구조 탐색

IPFS는 IPLD (InterPlanetary Linked-Data)를 사용하며, 이 모델은 git, Blockchain과 같은 다양한 데이터 소스와 상호 작용할 수 있습니다.

libp2p 내장

libp2p는 IPFS를 위해 만들어진 Modular Networking Stack이며 그리고 IPFS를 통해 당신의 애플리케이션에 직접적으로 사용할 수 있습니다.

데몬으로 실행가능

js-ipfs는 또한 데몬으로 실행할 수 있어서, go-ipfs로 HTTP API를 사용했던 것 처럼 js-ipfs를 이용하여 동일하게 상호 작용할 수 있습니다.

변경되는 데이터에 안정적인 주소 생성

이것을 IPNS(Interplanetary Naming System)라 부릅니다. 증명할 수 있고 인증된 방식으로 업데이트를 배포하기 위해, 변경할 수 있는 포인터(레코드)를 작성하는 방법입니다.

시작하기

IPFS는 DWeb의 모든 데이터에 대해서 원시적인 콘텐츠 주소를 제공합니다. 그것은 콘텐츠 식별자인 CID(Content IDentifier)를 통해 네트워크에 데이터를 쓰거나, 기존 데이터를 가져올 수 있습니다. 아래에서 체험해 보세요.

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)
  })
})

결과

IPFS로부터 데이터 가져오기

Browser 또는 Node.js에서 JavaScript로 사용하기

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())
  })
})

결과

CLI 사용하기

npm install ipfs -g
jsipfs cat QmPChd2hVbrJ6bfo3WBcTW4iZnpHm8TEzWkLHmLpXhF68A

HTTP 게이트웨이 사용하기

https://ipfs.io/ipfs/QmPChd2hVbrJ6bfo3WBcTW4iZnpHm8TEzWkLHmLpXhF68A
더 알아보기

서비스 워커 게이트웨이

이 페이지를 IPFS 게이트웨이로 전환하세요. 서버를 작동시키거나, HTTP를 사용하여 네트워크에서 콘텐츠를 가져오지 않아도 됩니다. 그래요! 서비스 워커 게이트웨이를 가진 js-ipfs가 IPFS 네트워크에 직접 연결됩니다.

서비스 워커 활성화

이것을 이용하여 어떤 사람들이 무엇을 만들고 있을까요?

Paratii는 js-ipfs와 Ethereum 계약을 통해, 비디오 스트리밍 및 추천을 위한 오픈소스 기술을 구축합니다. Portal은 IPFS로 실행되며, 암호와 관련있는 비디오들이 있는 웹 애플리케이션 입니다.

Project Preview

JS-IPFS를 사용해 만들 수 있는 것

당신이 js-ipfs를 사용하는 가능성은 무한합니다. 다음은 js-ipfs로 만들 수 있는 아이디어를 제공합니다. 한 번 시도해 보세요!

Browser Video Streaming
Exchange Files in Browser

어떤 아이디어와 제안을 가지고 있나요?여기에 쓰세요!

발행물 & 대담

IPFS의 JavaScript IPFS 커뮤티니의 데모들과 다른 대담의 프로젝트 업데이트를 지켜보세요. 우리는 곧 수십개의 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!

커뮤니티

js-ipfs는 IPFS 커뮤니티의 MIT 라이센스 이며, 오픈소스 프로젝트 입니다. 여기에 기여하는 방법은 다양합니다. libp2p를 이용하여 명세를 작성하는데 도움을 주고, 코드와 도구를 구현하세요. 예제와 튜토리얼을 작성하고, 정기적으로 우리와 함께 libp2p에 대해 논의합시다.

같이 어울려요!