From d5de0259abf74f7038c48c0cbfd38152ee0905e9 Mon Sep 17 00:00:00 2001 From: mateumiralles Date: Thu, 20 Feb 2025 17:17:55 +0100 Subject: [PATCH 1/3] fix: processingStarted call via backend --- shared/hooks/useLastRewardsFrame.ts | 57 +++++++++++++++++++++++++---- 1 file changed, 49 insertions(+), 8 deletions(-) diff --git a/shared/hooks/useLastRewardsFrame.ts b/shared/hooks/useLastRewardsFrame.ts index 41cc7ba5..b2ba76d8 100644 --- a/shared/hooks/useLastRewardsFrame.ts +++ b/shared/hooks/useLastRewardsFrame.ts @@ -9,6 +9,8 @@ import { useMergeSwr } from './useMergeSwr'; import { useMemo } from 'react'; import { BigNumber } from 'ethers'; import { Zero } from '@ethersproject/constants'; +import { fetchWithRetry } from 'dappnode/utils/fetchWithRetry'; // DAPPNODE +import useDappnodeUrls from 'dappnode/hooks/use-dappnode-urls'; // DAPPNODE const SECONDS_PER_SLOT = 12; @@ -143,21 +145,60 @@ export const useLastOperatorRewards = () => { ); }; +// DAPPNODE +interface Event { + RefSlot: number; + Hash: number[]; + Raw: { + address: string; + topics: string[]; + data: string; + blockNumber: string; + transactionHash: string; + transactionIndex: string; + blockHash: string; + logIndex: string; + removed: boolean; + }; +} + export const useLastRewrdsTx = (config = STRATEGY_CONSTANT) => { - const feeOracle = useCSFeeOracleRPC(); - const { deploymentBlockNumber } = getCsmConstants(); + // DAPPNODE + // const feeOracle = useCSFeeOracleRPC(); + // const { deploymentBlockNumber } = getCsmConstants(); + const { backendUrl } = useDappnodeUrls(); return useLidoSWR( ['fee-oracle-report-tx'], async () => { - const events = await feeOracle.queryFilter( - feeOracle.filters.ProcessingStarted(), - deploymentBlockNumber, - ); + // Original code + // const events = await feeOracle.queryFilter( + // feeOracle.filters.ProcessingStarted(), + // deploymentBlockNumber, + // ); + // const txs = events + // .sort((a, b) => a.blockNumber - b.blockNumber) + // .map((event) => { + // return event.transactionHash; + // }); + + const url = `${backendUrl}/api/v0/events_indexer/processing_started`; + const options = { + method: 'GET', + headers: { 'Content-Type': 'application/json' }, + }; + const response = await fetchWithRetry(url, options, 5000); + if (!response.ok) { + throw new Error('Failed to fetch processing started events'); + } + const events: Event[] = await response.json(); const txs = events - .sort((a, b) => a.blockNumber - b.blockNumber) + .sort( + (a, b) => + parseInt(a.Raw.blockNumber, 16) - parseInt(b.Raw.blockNumber, 16), + ) .map((event) => { - return event.transactionHash; + return event.Raw.transactionHash; }); return txs[txs.length - 1]; }, From 5297c4001d44ac75ce94047709a6b137f62b94cd Mon Sep 17 00:00:00 2001 From: mateumiralles Date: Fri, 21 Feb 2025 08:48:04 +0100 Subject: [PATCH 2/3] fix: relocating dapppnode hook --- dappnode/hooks/useLastRewardsFrame-api.ts | 51 ++++++++++++++++++++ features/dashboard/bond/last-rewards.tsx | 2 +- shared/hooks/useLastRewardsFrame.ts | 58 ++++------------------- 3 files changed, 61 insertions(+), 50 deletions(-) create mode 100644 dappnode/hooks/useLastRewardsFrame-api.ts diff --git a/dappnode/hooks/useLastRewardsFrame-api.ts b/dappnode/hooks/useLastRewardsFrame-api.ts new file mode 100644 index 00000000..3f9859c5 --- /dev/null +++ b/dappnode/hooks/useLastRewardsFrame-api.ts @@ -0,0 +1,51 @@ +import { useLidoSWR } from '@lido-sdk/react'; +import { STRATEGY_CONSTANT } from 'consts/swr-strategies'; +import { fetchWithRetry } from 'dappnode/utils/fetchWithRetry'; // DAPPNODE +import useDappnodeUrls from 'dappnode/hooks/use-dappnode-urls'; // DAPPNODE + +// DAPPNODE +interface Event { + RefSlot: number; + Hash: number[]; + Raw: { + address: string; + topics: string[]; + data: string; + blockNumber: string; + transactionHash: string; + transactionIndex: string; + blockHash: string; + logIndex: string; + removed: boolean; + }; +} + +export const useLastRewrdsTx = (config = STRATEGY_CONSTANT) => { + const { backendUrl } = useDappnodeUrls(); + + return useLidoSWR( + ['fee-oracle-report-tx'], + async () => { + const url = `${backendUrl}/api/v0/events_indexer/processing_started`; + const options = { + method: 'GET', + headers: { 'Content-Type': 'application/json' }, + }; + const response = await fetchWithRetry(url, options, 5000); + if (!response.ok) { + throw new Error('Failed to fetch processing started events'); + } + const events: Event[] = await response.json(); + const txs = events + .sort( + (a, b) => + parseInt(a.Raw.blockNumber, 16) - parseInt(b.Raw.blockNumber, 16), + ) + .map((event) => { + return event.Raw.transactionHash; + }); + return txs[txs.length - 1]; + }, + config, + ); +}; diff --git a/features/dashboard/bond/last-rewards.tsx b/features/dashboard/bond/last-rewards.tsx index e05582b2..f462bedb 100644 --- a/features/dashboard/bond/last-rewards.tsx +++ b/features/dashboard/bond/last-rewards.tsx @@ -17,7 +17,6 @@ import { getPrevRewardsFrame, useLastOperatorRewards, useLastRewardsSlot, - useLastRewrdsTx, useNodeOperatorInfo, } from 'shared/hooks'; import { formatDate, formatPercent } from 'utils'; @@ -29,6 +28,7 @@ import { RowHeader, RowTitle, } from './styles'; +import { useLastRewrdsTx } from 'dappnode/hooks/useLastRewardsFrame-api'; // DAPPNODE export const LastRewards: FC = () => { const { data: lastRewards, initialLoading: isLoading } = diff --git a/shared/hooks/useLastRewardsFrame.ts b/shared/hooks/useLastRewardsFrame.ts index b2ba76d8..1c399a51 100644 --- a/shared/hooks/useLastRewardsFrame.ts +++ b/shared/hooks/useLastRewardsFrame.ts @@ -9,8 +9,6 @@ import { useMergeSwr } from './useMergeSwr'; import { useMemo } from 'react'; import { BigNumber } from 'ethers'; import { Zero } from '@ethersproject/constants'; -import { fetchWithRetry } from 'dappnode/utils/fetchWithRetry'; // DAPPNODE -import useDappnodeUrls from 'dappnode/hooks/use-dappnode-urls'; // DAPPNODE const SECONDS_PER_SLOT = 12; @@ -145,60 +143,22 @@ export const useLastOperatorRewards = () => { ); }; -// DAPPNODE -interface Event { - RefSlot: number; - Hash: number[]; - Raw: { - address: string; - topics: string[]; - data: string; - blockNumber: string; - transactionHash: string; - transactionIndex: string; - blockHash: string; - logIndex: string; - removed: boolean; - }; -} - +// DAPPNODE: Replaced by 'dappnode/hooks/useLastRewardsFrame-api' export const useLastRewrdsTx = (config = STRATEGY_CONSTANT) => { - // DAPPNODE - // const feeOracle = useCSFeeOracleRPC(); - // const { deploymentBlockNumber } = getCsmConstants(); - const { backendUrl } = useDappnodeUrls(); + const feeOracle = useCSFeeOracleRPC(); + const { deploymentBlockNumber } = getCsmConstants(); return useLidoSWR( ['fee-oracle-report-tx'], async () => { - // Original code - // const events = await feeOracle.queryFilter( - // feeOracle.filters.ProcessingStarted(), - // deploymentBlockNumber, - // ); - // const txs = events - // .sort((a, b) => a.blockNumber - b.blockNumber) - // .map((event) => { - // return event.transactionHash; - // }); - - const url = `${backendUrl}/api/v0/events_indexer/processing_started`; - const options = { - method: 'GET', - headers: { 'Content-Type': 'application/json' }, - }; - const response = await fetchWithRetry(url, options, 5000); - if (!response.ok) { - throw new Error('Failed to fetch processing started events'); - } - const events: Event[] = await response.json(); + const events = await feeOracle.queryFilter( + feeOracle.filters.ProcessingStarted(), + deploymentBlockNumber, + ); const txs = events - .sort( - (a, b) => - parseInt(a.Raw.blockNumber, 16) - parseInt(b.Raw.blockNumber, 16), - ) + .sort((a, b) => a.blockNumber - b.blockNumber) .map((event) => { - return event.Raw.transactionHash; + return event.transactionHash; }); return txs[txs.length - 1]; }, From 34545a9f085f708516a462f7b956b3de5ab3ebc1 Mon Sep 17 00:00:00 2001 From: mateumiralles Date: Fri, 21 Feb 2025 08:49:27 +0100 Subject: [PATCH 3/3] fix: remove comments --- dappnode/hooks/useLastRewardsFrame-api.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/dappnode/hooks/useLastRewardsFrame-api.ts b/dappnode/hooks/useLastRewardsFrame-api.ts index 3f9859c5..96efb235 100644 --- a/dappnode/hooks/useLastRewardsFrame-api.ts +++ b/dappnode/hooks/useLastRewardsFrame-api.ts @@ -1,9 +1,8 @@ import { useLidoSWR } from '@lido-sdk/react'; import { STRATEGY_CONSTANT } from 'consts/swr-strategies'; -import { fetchWithRetry } from 'dappnode/utils/fetchWithRetry'; // DAPPNODE -import useDappnodeUrls from 'dappnode/hooks/use-dappnode-urls'; // DAPPNODE +import { fetchWithRetry } from 'dappnode/utils/fetchWithRetry'; +import useDappnodeUrls from 'dappnode/hooks/use-dappnode-urls'; -// DAPPNODE interface Event { RefSlot: number; Hash: number[];