From 103f4ceb6972680ee1c5ef09dda337a36cad947f Mon Sep 17 00:00:00 2001 From: Nico Krause Date: Tue, 21 Jan 2025 10:50:51 +0500 Subject: [PATCH] feat: starting tipWatcher when peer height is heigher then local height --- relay/package.json | 2 +- relay/src/pinner/tipWatcher.js | 1 - relay/src/pubsubHandler.js | 19 ++++++++++++++++--- relay/src/relay.js | 5 +++-- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/relay/package.json b/relay/package.json index e195a75..9cd0b5d 100644 --- a/relay/package.json +++ b/relay/package.json @@ -1,6 +1,6 @@ { "name": "libp2p-relay", - "version": "0.12.37", + "version": "0.12.39", "private": true, "scripts": { "start:no-restart": "node src/relay.js", diff --git a/relay/src/pinner/tipWatcher.js b/relay/src/pinner/tipWatcher.js index a965c53..06c4ad8 100644 --- a/relay/src/pinner/tipWatcher.js +++ b/relay/src/pinner/tipWatcher.js @@ -2,7 +2,6 @@ import { EventEmitter } from 'events'; import logger from '../logger.js'; import fs from 'fs'; import path from 'path'; -import moment from 'moment/moment.js'; class TipWatcher extends EventEmitter { constructor(electrumClient) { diff --git a/relay/src/pubsubHandler.js b/relay/src/pubsubHandler.js index db266d9..3f5e8b6 100644 --- a/relay/src/pubsubHandler.js +++ b/relay/src/pubsubHandler.js @@ -26,7 +26,8 @@ export function setupPubsub( orbitdb, electrumClient, fsHelia, - contentTopic + contentTopic, + tipWatcher ) { const pinningService = new PinningService(helia, orbitdb, electrumClient); helia.libp2p.services.pubsub.subscribe(contentTopic); @@ -47,8 +48,20 @@ export function setupPubsub( console.log('Received message:', messageObject); if (messageObject.type == 'LIST') { console.log('Received LIST request:', messageObject); - const { dateString, pageSize, from, filter } = messageObject; - const pageSizeValue = parseInt(pageSize, 10) || 10; // Default to 100 if not specified + const { dateString, pageSize, from, filter, height } = messageObject; + const pageSizeValue = parseInt(pageSize, 10) || 10; + + // Check if peer height is higher than our current tip + if (height) { + console.log("height", height) + const currentTip = tipWatcher.getCurrentTip(); + console.log("currentTip", currentTip) + if (currentTip && height > currentTip.height) { + logger.info(`Peer height ${height} is higher than our tip ${currentTip.height}, requesting new blocks`); + tipWatcher.handleNewTip({ height }); + } + } + await handleListRequest( dateString, pageSizeValue, diff --git a/relay/src/relay.js b/relay/src/relay.js index fafd375..9d23462 100644 --- a/relay/src/relay.js +++ b/relay/src/relay.js @@ -92,15 +92,16 @@ const { helia, orbitdb, electrumClient } = await createNode( logger.info('Helia and OrbitDB are running'); const fsHelia = unixfs(helia); +const tipWatcher = new TipWatcher(electrumClient); setupPubsub( helia, orbitdb, electrumClient, fsHelia, - CONTENT_TOPIC + CONTENT_TOPIC, + tipWatcher ); -const tipWatcher = new TipWatcher(electrumClient); createHttpServer(helia, orbitdb, electrumClient, tipWatcher); if (!argv['disable-scanning']) {