From cc648fd50f69e79e57f382a20921198041de950e Mon Sep 17 00:00:00 2001 From: Rick Staa Date: Sat, 10 Jan 2026 10:23:12 +0100 Subject: [PATCH 1/2] fix: restore gateways to active set after long inactivity Ensure gateways which were inactive for >90 days are added to the active set again so 30/60/90-day fee sums update. --- src/mappings/ticketBroker.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/mappings/ticketBroker.ts b/src/mappings/ticketBroker.ts index b929106..83a88c2 100644 --- a/src/mappings/ticketBroker.ts +++ b/src/mappings/ticketBroker.ts @@ -110,6 +110,13 @@ export function winningTicketRedeemed(event: WinningTicketRedeemed): void { protocol.totalVolumeETH = protocol.totalVolumeETH.plus(faceValue); protocol.totalVolumeUSD = protocol.totalVolumeUSD.plus(faceValueUSD); + // Add broadcaster to activeBroadcasters if not already present + let activeBroadcasters = protocol.activeBroadcasters; + if (!activeBroadcasters.includes(broadcaster.id)) { + activeBroadcasters.push(broadcaster.id); + protocol.activeBroadcasters = activeBroadcasters; + } + protocol.winningTicketCount = protocol.winningTicketCount + 1; protocol.save(); From acfddddb215fd1b93b5c56d199e3e76485eb1ff6 Mon Sep 17 00:00:00 2001 From: Rick Staa Date: Tue, 13 Jan 2026 16:33:00 +0100 Subject: [PATCH 2/2] fix: move active braodcaster tracking to ticket handler Move active broadcaster updates into `winningTicketRedeemed` to avoid stale protocol saves and ensure inactive gateways rejoin the active set for rolling fee totals. --- schema.graphql | 2 +- src/mappings/ticketBroker.ts | 2 +- utils/helpers.ts | 8 -------- 3 files changed, 2 insertions(+), 10 deletions(-) diff --git a/schema.graphql b/schema.graphql index 9febcfc..ab1f10a 100755 --- a/schema.graphql +++ b/schema.graphql @@ -54,7 +54,7 @@ type Protocol @entity { pendingDeactivation: [Transcoder!]! "Total number of delegators on the network" delegatorsCount: BigInt! - "Broadcasters active within the current 90 day fee window" + "Broadcasters that paid tickets within the current 90 day fee window" activeBroadcasters: [String!]! } diff --git a/src/mappings/ticketBroker.ts b/src/mappings/ticketBroker.ts index 83a88c2..5f9c3a2 100644 --- a/src/mappings/ticketBroker.ts +++ b/src/mappings/ticketBroker.ts @@ -110,7 +110,7 @@ export function winningTicketRedeemed(event: WinningTicketRedeemed): void { protocol.totalVolumeETH = protocol.totalVolumeETH.plus(faceValue); protocol.totalVolumeUSD = protocol.totalVolumeUSD.plus(faceValueUSD); - // Add broadcaster to activeBroadcasters if not already present + // Track active broadcasters based on ticket activity. let activeBroadcasters = protocol.activeBroadcasters; if (!activeBroadcasters.includes(broadcaster.id)) { activeBroadcasters.push(broadcaster.id); diff --git a/utils/helpers.ts b/utils/helpers.ts index d068d43..457db2d 100644 --- a/utils/helpers.ts +++ b/utils/helpers.ts @@ -194,14 +194,6 @@ export function createOrLoadBroadcaster(id: string): Broadcaster { broadcaster.save(); } - let protocol = createOrLoadProtocol(); - let activeBroadcasters = protocol.activeBroadcasters; - if (!activeBroadcasters.includes(id)) { - activeBroadcasters.push(id); - protocol.activeBroadcasters = activeBroadcasters; - protocol.save(); - } - return broadcaster; }