데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      브라우저를 IPFS 노드로 쓰는 것에 관하여

      ingee.kim 23.02.22
      2,424 16 2

      IPFS는 Inter Planetary File System (행성간 파일시스템)입니다.

      웅장한 이름만큼 웹3 세상에서 큰 역할을 할 프로토콜이라고 생각합니다.

      관련 과제를 진행하다 메모한 것을 공유합니다.

      "IPFS? 들어봤던 건데?" 정도의 느낌만 가져가셔도 성공입니다.


      IPFS 실행체의 종류

      스탠드얼론 노드
      • kubo (예전에 go-ipfs라고 불리던 것)

      • rust-ipfs

      • node.js-ipfs (js-ipfs를 node.js 환경에서 실행한 것)

      브라우저 노드
      • js-ipfs를 크롬, 파이어폭스, 사파리에서 실행한 것


      브라우저 노드의 제약

      1. 네트워크 전송 수단으로 WebSocket과 WebRTC만 쓸 수 있다
      • (당연히) TCP와 UDP를 사용할 수 없다

      2. Secure Context에서만 사용 가능하다
      • localhost 서버 또는 httpS 서버만 사용할 수 있다

      3. DHT를 일부만 지원한다
      • DHT (Distributed hash tables)는 peer 검색과 컨텐츠 검색에 이용된다

      • 브라우적 노드는 피어 탐색과 컨텐츠 탐색을 다른 서버/서비스에 의존해야 한다


      IPFS in JS 관련 용어

      Kubo
      • go-ipfs에서 바뀐 프로젝트 이름

      js-ipfs
      • JavaScript로 만든 IPFS 구현체

      • Helia가 릴리즈되면 개발을 중단할 예정

      Helia
      • 개발 진행 중인 JavaScript IPFS 구현체

      • 최종 이름은 TBD (아직 확정되지 않음)

      Delegate node (위임 노드)
      • 브라우저 노드는 DHT 기능이 부족하기 때문에 Delegate node의 도움이 필요

      • Delegate node는 /api/v0/dht/* API를 제공

      Preload node
      • 브라우저 노드는 브라우저 탭을 닫으면 종료됨 (수시로 운영이 중단되는 불안정한 IPFS 노드)

      • 브라우저 노드가 IPFS 네트워크에 추가하는 데이터를 안정적으로 유지하기 위해 Preload node가 필요

      • Preload node는 /api/v0/refs API를 제공


      IPFS in JS 개발 현황

      시간이 지나면서 드러난 IPFS in JS의 사용 패턴
      1. Kubo를 원격으로 제어

        • 장점 : 기능 제약 없는 IPFS 노드를 제어

        • 단점 : Kubo 서버 별도 운영이 필요

      2. Node.js 환경에서 js-ipfs를 실행

        • 장점 : 아키텍처가 간단하고 디버깅이 용이

        • 단점 : 항상 Kubo에 비해 뒤쳐지는 개발 진도

      3. 브라우저 환경에서 js-ipfs를 실행

        • 장점 : 진정한 P2P (WebRTC를 이용한 브라우저-브라우저 통신)

        • 단점 : 가용성 확보를 위해 Centralized 인프라 의존 필요 (WebRTC 통신 수립을 위한 *-star 시그널링 서버)

      2022년~ 2023년 개발 계획
      • 브라우저 친화적 p2p 전송 계층을 구현할 것이다 (Cetnralized 인프라 의존성 제거 목표)

      • 2023년 Helia를 릴리즈 할 것이다

        • 브라우저, electron, node, deno, bun 등 모든 웹 실행체를 위한 개발할 예정

        • 기존 js-ipfs와의 호환성을 생각하지 않고 JS 개발자에게 친화적인 API를 제공할 예정

        • 기존 라이브러리를 활용할 예정 (js-libp2p, js-bitswap, ...)

        • 브라우저 사용성에 집중할 예정 (브라우저가 Helia의 특별한 런타임)

      • Helia가 릴리즈되면 js-ipfs에 대한 메인테넌스는 중단될 것이다


      브라우저 IPFS 베스트 프랙틱스

      1. *-star 시그널링 서버를 직접 운영하라
      • IPFS 개발팀이 운영하는 디폴트 *-star 서버들은 안정적이지 않다 (사용 서비스에 사용하면 안된다)

      2. preload 노드를 직접 운영하라
      • IPFS 개발팀이 운영하는 디폴트 preload 노드는 안정적이지 않다 (사용 서비스에 사용하면 안된다)

      3. 인프라를 운영하고 싶지 않다면 Web3 Storage 같은 IPFS pinning 서비스의 사용을 고려하라


      Ref.

      Web3를 위한 DB, OrbitDB
      • IPFS 기반 탈중앙화 DB 소개

      IPFS in JS 현황
      • https://blog.ipfs.tech/state-of-ipfs-in-js/

      • IPFS in JS의 과거, 현재, 미래

      GitHub libp2p-webrtc-star 소스레포
      GitHub js-ipfs 소스레포
      Web3 세상의 데이터 네트워크와 블록체인 서비스 인프라 현황 Tech 세미나 영상

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      ingee.kim 님의 최신 블로그

      더보기
      동영상 기고하기