From c9cb958b89a9597d0ff6c30468ca55066d040b8a Mon Sep 17 00:00:00 2001 From: achingbrain Date: Mon, 30 Oct 2023 17:53:48 +0000 Subject: [PATCH 1/2] fix: replace IPNI gateway with delegated routing client Removes proprietary IPNI content routing implementation with `@helia/delegated-routing-v1-http-api-client` which also gives us better peer routing and IPNS support. --- packages/helia/package.json | 2 +- packages/helia/src/utils/libp2p-defaults.browser.ts | 7 +++---- packages/helia/src/utils/libp2p-defaults.ts | 7 +++---- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/packages/helia/package.json b/packages/helia/package.json index 041d32e9..0a52113d 100644 --- a/packages/helia/package.json +++ b/packages/helia/package.json @@ -77,13 +77,13 @@ "@chainsafe/libp2p-gossipsub": "^10.0.0", "@chainsafe/libp2p-noise": "^13.0.0", "@chainsafe/libp2p-yamux": "^5.0.0", + "@helia/delegated-routing-v1-http-api-client": "^1.1.0", "@helia/interface": "^2.0.0", "@ipld/dag-cbor": "^9.0.0", "@ipld/dag-json": "^10.0.1", "@ipld/dag-pb": "^4.0.3", "@libp2p/bootstrap": "^9.0.2", "@libp2p/interface": "^0.1.1", - "@libp2p/ipni-content-routing": "^2.0.0", "@libp2p/kad-dht": "^10.0.2", "@libp2p/logger": "^3.0.1", "@libp2p/mdns": "^9.0.2", diff --git a/packages/helia/src/utils/libp2p-defaults.browser.ts b/packages/helia/src/utils/libp2p-defaults.browser.ts index a7e16e22..e2b8dad5 100644 --- a/packages/helia/src/utils/libp2p-defaults.browser.ts +++ b/packages/helia/src/utils/libp2p-defaults.browser.ts @@ -1,8 +1,8 @@ import { gossipsub } from '@chainsafe/libp2p-gossipsub' import { noise } from '@chainsafe/libp2p-noise' import { yamux } from '@chainsafe/libp2p-yamux' +import { createDelegatedRoutingV1HttpApiClient } from '@helia/delegated-routing-v1-http-api-client' import { bootstrap } from '@libp2p/bootstrap' -import { ipniContentRouting } from '@libp2p/ipni-content-routing' import { type DualKadDHT, kadDHT } from '@libp2p/kad-dht' import { mplex } from '@libp2p/mplex' import { webRTC, webRTCDirect } from '@libp2p/webrtc' @@ -21,6 +21,7 @@ import type { Libp2pOptions } from 'libp2p' export interface DefaultLibp2pServices extends Record { dht: DualKadDHT + delegatedRouting: unknown pubsub: PubSub identify: IdentifyService autoNAT: unknown @@ -54,14 +55,12 @@ export function libp2pDefaults (): Libp2pOptions { peerDiscovery: [ bootstrap(bootstrapConfig) ], - contentRouters: [ - ipniContentRouting('https://cid.contact') - ], services: { identify: identifyService(), autoNAT: autoNATService(), pubsub: gossipsub(), dcutr: dcutrService(), + delegatedRouting: () => createDelegatedRoutingV1HttpApiClient('https://trustless-gateway.link'), dht: kadDHT({ clientMode: true, validators: { diff --git a/packages/helia/src/utils/libp2p-defaults.ts b/packages/helia/src/utils/libp2p-defaults.ts index b55fe4c9..e230a132 100644 --- a/packages/helia/src/utils/libp2p-defaults.ts +++ b/packages/helia/src/utils/libp2p-defaults.ts @@ -1,8 +1,8 @@ import { gossipsub } from '@chainsafe/libp2p-gossipsub' import { noise } from '@chainsafe/libp2p-noise' import { yamux } from '@chainsafe/libp2p-yamux' +import { createDelegatedRoutingV1HttpApiClient } from '@helia/delegated-routing-v1-http-api-client' import { bootstrap } from '@libp2p/bootstrap' -import { ipniContentRouting } from '@libp2p/ipni-content-routing' import { type DualKadDHT, kadDHT } from '@libp2p/kad-dht' import { mdns } from '@libp2p/mdns' import { mplex } from '@libp2p/mplex' @@ -23,6 +23,7 @@ import type { Libp2pOptions } from 'libp2p' export interface DefaultLibp2pServices extends Record { dht: DualKadDHT + delegatedRouting: unknown pubsub: PubSub relay: CircuitRelayService identify: IdentifyService @@ -61,15 +62,13 @@ export function libp2pDefaults (): Libp2pOptions { mdns(), bootstrap(bootstrapConfig) ], - contentRouters: [ - ipniContentRouting('https://cid.contact') - ], services: { identify: identifyService(), autoNAT: autoNATService(), upnp: uPnPNATService(), pubsub: gossipsub(), dcutr: dcutrService(), + delegatedRouting: () => createDelegatedRoutingV1HttpApiClient('https://trustless-gateway.link'), dht: kadDHT({ validators: { ipns: ipnsValidator From 78837a3d6693656815371fc87ff5a2aa174f5215 Mon Sep 17 00:00:00 2001 From: achingbrain Date: Thu, 2 Nov 2023 12:33:12 +0000 Subject: [PATCH 2/2] chore: update endpoint link --- packages/helia/src/utils/libp2p-defaults.browser.ts | 2 +- packages/helia/src/utils/libp2p-defaults.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/helia/src/utils/libp2p-defaults.browser.ts b/packages/helia/src/utils/libp2p-defaults.browser.ts index e2b8dad5..2e704a1d 100644 --- a/packages/helia/src/utils/libp2p-defaults.browser.ts +++ b/packages/helia/src/utils/libp2p-defaults.browser.ts @@ -60,7 +60,7 @@ export function libp2pDefaults (): Libp2pOptions { autoNAT: autoNATService(), pubsub: gossipsub(), dcutr: dcutrService(), - delegatedRouting: () => createDelegatedRoutingV1HttpApiClient('https://trustless-gateway.link'), + delegatedRouting: () => createDelegatedRoutingV1HttpApiClient('https://delegated-ipfs.dev'), dht: kadDHT({ clientMode: true, validators: { diff --git a/packages/helia/src/utils/libp2p-defaults.ts b/packages/helia/src/utils/libp2p-defaults.ts index e230a132..0f6ce3f8 100644 --- a/packages/helia/src/utils/libp2p-defaults.ts +++ b/packages/helia/src/utils/libp2p-defaults.ts @@ -68,7 +68,7 @@ export function libp2pDefaults (): Libp2pOptions { upnp: uPnPNATService(), pubsub: gossipsub(), dcutr: dcutrService(), - delegatedRouting: () => createDelegatedRoutingV1HttpApiClient('https://trustless-gateway.link'), + delegatedRouting: () => createDelegatedRoutingV1HttpApiClient('https://delegated-ipfs.dev'), dht: kadDHT({ validators: { ipns: ipnsValidator