Skip to content

분산 해시 테이블 (DHT)

IPFS 노드가 서로를 찾고 찾고 있는 콘텐츠를 누가 가지고 있는지 발견하는 방법입니다.

DHT란 무엇인가요?

분산 해시 테이블은 탈중앙화된 검색 시스템입니다. 아무도 전체를 가지고 있지 않은 전화번호부라고 생각하세요 — 각 참여자가 몇 페이지를 가지고 있고, 가지고 있지 않은 페이지는 누구에게 물어봐야 하는지 알고 있습니다.

IPFS에서 DHT는 CID를 해당 콘텐츠를 가진 노드의 네트워크 주소에 매핑합니다. CID로 파일을 요청하면, DHT가 어떤 노드가 이를 제공할 수 있는지 찾는 것을 도와줍니다.

IPFS에서의 작동 방식

IPFS는 Kademlia DHT의 변형을 사용합니다. 각 노드는 인접 노드(노드 ID 간의 XOR 거리 기준)의 라우팅 테이블을 유지합니다. 노드가 콘텐츠를 찾으려 할 때:

  1. CID와 알려진 노드 ID 사이의 XOR 거리를 계산합니다
  2. 가장 가까운 알려진 노드에 묻습니다: "이 CID를 누가 가지고 있나요?"
  3. 해당 노드들은 콘텐츠를 가지고 있거나 더 가까운 노드를 가리킵니다
  4. 검색이 수렴합니다 — 각 홉마다 파일을 가진 노드에 더 가까워집니다
  5. 콘텐츠를 제공하는 노드에서 직접 가져옵니다

TIP

이 검색은 보통 몇 홉만 필요합니다 — 수백만 노드의 네트워크에서도 파일은 20-30단계 내에 찾을 수 있습니다.

제공자 레코드

노드가 콘텐츠를 피닝하면 DHT에 제공자 레코드를 발행하여 "CID X를 가지고 있으며, 주소는 Y입니다"라고 알립니다. 이 레코드는 약 24시간 후 만료되며 주기적으로 갱신해야 합니다. 활성 피닝이 중요한 이유가 바로 이것입니다 — 피닝이 없으면 제공자 레코드가 만료되고 콘텐츠를 발견할 수 없게 됩니다.

DHT에 대해 생각할 필요가 없는 이유

IPFS.NINJA가 모든 DHT 상호작용을 처리합니다. 파일을 업로드하면:

  • 클러스터가 파일을 피닝하고 자동으로 제공자 레코드를 발행합니다
  • 제공자 레코드는 지속적으로 갱신됩니다 — 콘텐츠가 발견 가능한 상태를 유지합니다
  • 게이트웨이는 요청을 처리할 때 DHT를 통해 CID를 해석합니다
  • CID와 게이트웨이 URL만 사용하면 됩니다 — DHT는 보이지 않습니다