1+ const { config } = require ( '@0x-event-extractor/shared' ) ;
12const fillExtractorV1 = require ( '@0x-event-extractor/fill-extractor-v1' ) ;
23const fillExtractorV2 = require ( '@0x-event-extractor/fill-extractor-v2' ) ;
34const fillExtractorV3 = require ( '@0x-event-extractor/fill-extractor-v3' ) ;
45const transformedERC20Extractor = require ( '@0x-event-extractor/transformed-erc20-extractor' ) ;
6+ const uniswapV2Extractor = require ( '@0x-event-extractor/uniswap-v2-swap-extractor' ) ;
57
68const { getLogger } = require ( '../util/logging' ) ;
79const BlockRange = require ( '../model/block-range' ) ;
810const Event = require ( '../model/event' ) ;
11+ const getBlock = require ( '../ethereum/get-block' ) ;
912const getCurrentBlock = require ( '../ethereum/get-current-block' ) ;
1013const getNextBlockRange = require ( '../events/get-next-block-range' ) ;
1114const withTransaction = require ( '../util/with-transaction' ) ;
1215
13- const performExtraction = async ( currentBlock , extractorConfig ) => {
16+ const performExtraction = async ( maxBlockNumber , extractorConfig ) => {
1417 const {
1518 eventType,
1619 fetchLogEntries,
@@ -21,7 +24,7 @@ const performExtraction = async (currentBlock, extractorConfig) => {
2124 // Scope all logging for the job to the specified protocol version and event type
2225 const logger = getLogger ( `extract v${ protocolVersion } ${ eventType } events` ) ;
2326
24- const rangeConfig = { currentBlock , eventType , protocolVersion } ;
27+ const rangeConfig = { eventType , maxBlockNumber , protocolVersion } ;
2528 const nextBlockRange = await getNextBlockRange ( rangeConfig ) ;
2629
2730 if ( nextBlockRange === null ) {
@@ -93,24 +96,37 @@ const performExtraction = async (currentBlock, extractorConfig) => {
9396 }
9497} ;
9598
99+ const determineMaxQueryableBlock = currentBlock => {
100+ const minConfirmations = config . get ( 'minConfirmations' ) ;
101+ const maxBlock = currentBlock - minConfirmations ;
102+
103+ return maxBlock ;
104+ } ;
105+
96106const extractEvents = async ( ) => {
97107 const logger = getLogger ( 'event extractor' ) ;
98108
99109 logger . info ( 'beginning event extraction' ) ;
100110 logger . info ( 'fetching current block' ) ;
101111
102- const currentBlock = await getCurrentBlock ( ) ;
112+ const currentBlockNumber = await getCurrentBlock ( ) ;
113+ const maxBlockNumber = determineMaxQueryableBlock ( currentBlockNumber ) ;
103114
104- logger . info ( `current block is ${ currentBlock } ` ) ;
115+ logger . info ( `current block is ${ currentBlockNumber } ` ) ;
116+ logger . info ( `max block is ${ maxBlockNumber } ` ) ;
105117
106118 /**
107119 * Extractors are run sequentially to help avoid issues with rate
108120 * limiting in the Ethereum RPC provider.
109121 */
110- await performExtraction ( currentBlock , fillExtractorV1 ) ;
111- await performExtraction ( currentBlock , fillExtractorV2 ) ;
112- await performExtraction ( currentBlock , fillExtractorV3 ) ;
113- await performExtraction ( currentBlock , transformedERC20Extractor ) ;
122+ await performExtraction ( maxBlockNumber , fillExtractorV1 ) ;
123+ await performExtraction ( maxBlockNumber , fillExtractorV2 ) ;
124+ await performExtraction ( maxBlockNumber , fillExtractorV3 ) ;
125+ await performExtraction ( maxBlockNumber , transformedERC20Extractor ) ;
126+
127+ const maxBlock = await getBlock ( maxBlockNumber ) ;
128+
129+ await performExtraction ( maxBlock . timestamp , uniswapV2Extractor ) ;
114130
115131 logger . info ( 'finished event extraction' ) ;
116132} ;
0 commit comments