File tree Expand file tree Collapse file tree 3 files changed +37
-3
lines changed
Expand file tree Collapse file tree 3 files changed +37
-3
lines changed Original file line number Diff line number Diff line change @@ -57,6 +57,14 @@ const readConfig = async (): Promise<
5757 new Option ( '--multicall-size <n>' , 'max number of calls in a multicall' )
5858 . default ( 100 )
5959 . argParser ( ( x ) => + x )
60+ )
61+ . addOption (
62+ new Option (
63+ '--query-logs-size <n>' ,
64+ 'max block range to use for eth_queryLogs'
65+ )
66+ . default ( 50000 )
67+ . argParser ( ( x ) => + x )
6068 ) ;
6169 program . parse ( ) ;
6270
@@ -69,6 +77,7 @@ const readConfig = async (): Promise<
6977 module : selectedModule ,
7078 lookbackRange,
7179 multicallSize,
80+ queryLogsSize,
7281 } = options ;
7382 const network = selectedNetwork || 'mainnet' ;
7483
@@ -124,6 +133,7 @@ const readConfig = async (): Promise<
124133 lookbackRange,
125134 targetSafe,
126135 multicallSize,
136+ queryLogsSize,
127137 } ,
128138 provider ,
129139 ] ;
Original file line number Diff line number Diff line change @@ -34,6 +34,7 @@ export interface IConfig {
3434 appData : string ;
3535 lookbackRange : number ;
3636 multicallSize : number ;
37+ queryLogsSize : number ;
3738}
3839
3940const toChainId = ( network : keyof typeof networkSpecificConfigs ) => {
@@ -88,6 +89,26 @@ export const chunkedMulticall = async (
8889 return ret ;
8990} ;
9091
92+ export const chunkedQueryFilter = async (
93+ contract : ethers . Contract ,
94+ filter : ethers . EventFilter ,
95+ fromBlock : number ,
96+ toBlock : number ,
97+ chunkSize : number
98+ ) => {
99+ const ret = [ ] ;
100+ for ( let i = fromBlock ; i <= toBlock ; i += chunkSize ) {
101+ ret . push (
102+ ...( await contract . queryFilter (
103+ filter ,
104+ i ,
105+ Math . min ( i + chunkSize - 1 , toBlock )
106+ ) )
107+ ) ;
108+ }
109+ return ret ;
110+ } ;
111+
91112const logger = pino ( ) ;
92113export const getLogger = ( name : string ) => {
93114 return logger . child ( { name, level : process . env . LOG_LEVEL || 'info' } ) ;
Original file line number Diff line number Diff line change @@ -2,14 +2,15 @@ import axios from 'axios';
22import {
33 IConfig ,
44 chunkedMulticall ,
5+ chunkedQueryFilter ,
56 getLogger ,
67 getMulticall3 ,
78 getOrderbookApi ,
89} from './common' ;
910import { BigNumber , ethers } from 'ethers' ;
1011import { erc20Abi , settlementAbi } from './abi' ;
1112
12- const logger = getLogger ( 'explorer-apis ' ) ;
13+ const logger = getLogger ( 'token-fetcher ' ) ;
1314
1415interface ITokenInfo {
1516 address : string ;
@@ -60,10 +61,12 @@ export const getTokenInfosFromChain = async (
6061 const currentBlock = await provider . getBlockNumber ( ) ;
6162 const fromBlock = currentBlock - config . lookbackRange ;
6263 logger . info ( `querying trades from ${ fromBlock } to ${ currentBlock } ` ) ;
63- const logs = await settlement . queryFilter (
64+ const logs = await chunkedQueryFilter (
65+ settlement ,
6466 tradeFilter ,
6567 currentBlock - config . lookbackRange ,
66- currentBlock
68+ currentBlock ,
69+ config . queryLogsSize
6770 ) ;
6871 logger . info ( `Found ${ logs . length } trades` ) ;
6972 const allTokens = Array . from (
You can’t perform that action at this time.
0 commit comments