@paraswap/dex-lib 2.23.2 → 2.23.3-uniswap-v2-pairs-distant-cache.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/.idea/aws.xml +17 -0
  2. package/.idea/codeStyles/Project.xml +19 -0
  3. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  4. package/.idea/misc.xml +6 -0
  5. package/.idea/modules.xml +8 -0
  6. package/.idea/paraswap-dex-lib.iml +9 -0
  7. package/.idea/vcs.xml +6 -0
  8. package/build/dex/aave-v3/tokens/arbitrum.json +50 -0
  9. package/build/dex/aave-v3/tokens/avalanche.json +74 -0
  10. package/build/dex/aave-v3/tokens/fantom.json +62 -0
  11. package/build/dex/aave-v3/tokens/optimism.json +50 -0
  12. package/build/dex/aave-v3/tokens/polygon.json +116 -0
  13. package/build/dex/pancakeswap-v3/types.d.ts +14 -0
  14. package/build/dex/{algebra → pancakeswap-v3}/types.js.map +1 -1
  15. package/build/dex/solidly/forks-override/ramses.d.ts +8 -0
  16. package/build/dex/solidly/forks-override/ramses.js +15 -0
  17. package/build/dex/solidly/forks-override/ramses.js.map +1 -0
  18. package/build/dex/uniswap-v2/constants.d.ts +1 -0
  19. package/build/dex/uniswap-v2/constants.js +2 -1
  20. package/build/dex/uniswap-v2/constants.js.map +1 -1
  21. package/build/dex/uniswap-v2/uniswap-v2.d.ts +5 -2
  22. package/build/dex/uniswap-v2/uniswap-v2.js +36 -18
  23. package/build/dex/uniswap-v2/uniswap-v2.js.map +1 -1
  24. package/package.json +1 -1
  25. package/src/dex/uniswap-v2/constants.ts +2 -0
  26. package/src/dex/uniswap-v2/uniswap-v2.ts +55 -18
  27. package/build/abi/algebra/AlgebraPool.abi.json +0 -727
  28. package/build/abi/algebra/AlgebraQuoter.abi.json +0 -138
  29. package/build/abi/algebra/AlgebraStateMulticall.abi.json +0 -801
  30. package/build/dex/algebra/algebra-pool.d.ts +0 -41
  31. package/build/dex/algebra/algebra-pool.js +0 -267
  32. package/build/dex/algebra/algebra-pool.js.map +0 -1
  33. package/build/dex/algebra/algebra.d.ts +0 -53
  34. package/build/dex/algebra/algebra.js +0 -457
  35. package/build/dex/algebra/algebra.js.map +0 -1
  36. package/build/dex/algebra/config.d.ts +0 -4
  37. package/build/dex/algebra/config.js +0 -41
  38. package/build/dex/algebra/config.js.map +0 -1
  39. package/build/dex/algebra/lib/AlgebraMath.d.ts +0 -14
  40. package/build/dex/algebra/lib/AlgebraMath.js +0 -274
  41. package/build/dex/algebra/lib/AlgebraMath.js.map +0 -1
  42. package/build/dex/algebra/lib/AlgebraXUniV3.d.ts +0 -5
  43. package/build/dex/algebra/lib/AlgebraXUniV3.js +0 -45
  44. package/build/dex/algebra/lib/AlgebraXUniV3.js.map +0 -1
  45. package/build/dex/algebra/lib/Constants.d.ts +0 -5
  46. package/build/dex/algebra/lib/Constants.js +0 -10
  47. package/build/dex/algebra/lib/Constants.js.map +0 -1
  48. package/build/dex/algebra/lib/DataStorage.d.ts +0 -24
  49. package/build/dex/algebra/lib/DataStorage.js +0 -388
  50. package/build/dex/algebra/lib/DataStorage.js.map +0 -1
  51. package/build/dex/algebra/lib/DataStorageOperator.d.ts +0 -9
  52. package/build/dex/algebra/lib/DataStorageOperator.js +0 -66
  53. package/build/dex/algebra/lib/DataStorageOperator.js.map +0 -1
  54. package/build/dex/algebra/lib/Sqrt.d.ts +0 -3
  55. package/build/dex/algebra/lib/Sqrt.js +0 -60
  56. package/build/dex/algebra/lib/Sqrt.js.map +0 -1
  57. package/build/dex/algebra/lib/TickManager.d.ts +0 -10
  58. package/build/dex/algebra/lib/TickManager.js +0 -3
  59. package/build/dex/algebra/lib/TickManager.js.map +0 -1
  60. package/build/dex/algebra/types.d.ts +0 -55
  61. /package/build/dex/{algebra → pancakeswap-v3}/types.js +0 -0
@@ -44,6 +44,7 @@ const UniswapV2ExchangeRouter_json_1 = __importDefault(require("../../abi/Uniswa
44
44
  const config_1 = require("./config");
45
45
  const uniswap_v2_constant_product_pool_1 = require("./uniswap-v2-constant-product-pool");
46
46
  const token_transfer_fee_1 = require("../../lib/token-transfer-fee");
47
+ const constants_2 = require("./constants");
47
48
  const DefaultUniswapV2PoolGasCost = 90 * 1000;
48
49
  exports.RESERVE_LIMIT = 2n ** 112n - 1n;
49
50
  const LogCallTopics = [
@@ -151,7 +152,7 @@ class UniswapV2 extends simple_exchange_1.SimpleExchange {
151
152
  this.decoderIface = decoderIface;
152
153
  this.adapters = adapters;
153
154
  this.router = router;
154
- this.pairs = {};
155
+ this.pairToPoolMap = {};
155
156
  this.feeFactor = 10000;
156
157
  this.hasConstantPriceLargeAmounts = false;
157
158
  this.isFeeOnTransferSupported = true;
@@ -169,12 +170,17 @@ class UniswapV2 extends simple_exchange_1.SimpleExchange {
169
170
  }
170
171
  async addPool(pair, reserves0, reserves1, feeCode, blockNumber) {
171
172
  const { callEntry, callDecoder } = this.getFeesMultiCallData(pair) || {};
172
- pair.pool = new UniswapV2EventPool(this.dexKey, this.dexHelper, pair.exchange, pair.token0, pair.token1, feeCode, this.logger, this.isDynamicFees, callEntry, callDecoder, this.decoderIface);
173
- pair.pool.addressesSubscribed.push(pair.exchange);
174
- await pair.pool.initialize(blockNumber, {
173
+ const [token0, token1] = this.getSortedPair(pair.token0, pair.token1);
174
+ this.pairToPoolMap[this.getKeyForPair(token0, token1)] = new UniswapV2EventPool(this.dexKey, this.dexHelper, pair.exchange, pair.token0, pair.token1, feeCode, this.logger, this.isDynamicFees, callEntry, callDecoder, this.decoderIface);
175
+ this.pairToPoolMap[this.getKeyForPair(token0, token1)].addressesSubscribed.push(pair.exchange);
176
+ await this.pairToPoolMap[this.getKeyForPair(token0, token1)].initialize(blockNumber, {
175
177
  state: { reserves0, reserves1, feeCode },
176
178
  });
177
179
  }
180
+ getPool(pair) {
181
+ const [token0, token1] = this.getSortedPair(pair.token0, pair.token1);
182
+ return this.pairToPoolMap[this.getKeyForPair(token0, token1)];
183
+ }
178
184
  async getBuyPrice(priceParams, destAmount) {
179
185
  return uniswap_v2_constant_product_pool_1.Uniswapv2ConstantProductPool.getBuyPrice(priceParams, destAmount, this.feeFactor);
180
186
  }
@@ -195,16 +201,23 @@ class UniswapV2 extends simple_exchange_1.SimpleExchange {
195
201
  }
196
202
  return price;
197
203
  }
204
+ getSortedPair(from, to) {
205
+ return from.address.toLowerCase() < to.address.toLowerCase()
206
+ ? [from, to]
207
+ : [to, from];
208
+ }
209
+ getKeyForPair(token0, token1) {
210
+ return `${token0.address.toLowerCase()}-${token1.address.toLowerCase()}`;
211
+ }
198
212
  async findPair(from, to) {
199
213
  if (from.address.toLowerCase() === to.address.toLowerCase())
200
214
  return null;
201
- const [token0, token1] = from.address.toLowerCase() < to.address.toLowerCase()
202
- ? [from, to]
203
- : [to, from];
204
- const key = `${token0.address.toLowerCase()}-${token1.address.toLowerCase()}`;
205
- let pair = this.pairs[key];
206
- if (pair)
207
- return pair;
215
+ const [token0, token1] = this.getSortedPair(from, to);
216
+ const key = this.getKeyForPair(token0, token1);
217
+ const cachedPair = await this.dexHelper.cache.getAndCacheLocally(this.dexKey, this.network, key, constants_2.UNISWAP_V2_PAIRS_CACHE_TTL_S);
218
+ if (cachedPair)
219
+ return JSON.parse(cachedPair);
220
+ let pair;
208
221
  const exchange = await this.factory.methods
209
222
  .getPair(token0.address, token1.address)
210
223
  .call();
@@ -214,7 +227,7 @@ class UniswapV2 extends simple_exchange_1.SimpleExchange {
214
227
  else {
215
228
  pair = { token0, token1, exchange };
216
229
  }
217
- this.pairs[key] = pair;
230
+ this.dexHelper.cache.setexAndCacheLocally(this.dexKey, this.network, key, constants_2.UNISWAP_V2_PAIRS_CACHE_TTL_S, JSON.stringify(pair));
218
231
  return pair;
219
232
  }
220
233
  async getManyPoolReserves(pairs, blockNumber) {
@@ -270,10 +283,11 @@ class UniswapV2 extends simple_exchange_1.SimpleExchange {
270
283
  const pair = await this.findPair(_pair[0], _pair[1]);
271
284
  if (!(pair && pair.exchange))
272
285
  continue;
273
- if (!pair.pool) {
286
+ const pool = this.getPool(pair);
287
+ if (!pool) {
274
288
  pairsToFetch.push(pair);
275
289
  }
276
- else if (!pair.pool.getState(blockNumber)) {
290
+ else if (!pool.getState(blockNumber)) {
277
291
  pairsToFetch.push(pair);
278
292
  }
279
293
  }
@@ -286,18 +300,22 @@ class UniswapV2 extends simple_exchange_1.SimpleExchange {
286
300
  for (let i = 0; i < pairsToFetch.length; i++) {
287
301
  const pairState = reserves[i];
288
302
  const pair = pairsToFetch[i];
289
- if (!pair.pool) {
303
+ const pool = this.getPool(pair);
304
+ if (!pool) {
290
305
  await this.addPool(pair, pairState.reserves0, pairState.reserves1, pairState.feeCode, blockNumber);
291
306
  }
292
307
  else
293
- pair.pool.setState(pairState, blockNumber);
308
+ pool.setState(pairState, blockNumber);
294
309
  }
295
310
  }
296
311
  async getPairOrderedParams(from, to, blockNumber, tokenDexTransferFee) {
297
312
  const pair = await this.findPair(from, to);
298
- if (!(pair && pair.pool && pair.exchange))
313
+ let pool = null;
314
+ if (pair)
315
+ pool = this.getPool(pair);
316
+ if (!(pair && pool && pair.exchange))
299
317
  return null;
300
- const pairState = pair.pool.getState(blockNumber);
318
+ const pairState = pool.getState(blockNumber);
301
319
  if (!pairState) {
302
320
  this.logger.error(`Error_orderPairParams expected reserves, got none (maybe the pool doesn't exist) ${from.symbol || from.address} ${to.symbol || to.address}`);
303
321
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"uniswap-v2.js","sourceRoot":"","sources":["../../../src/dex/uniswap-v2/uniswap-v2.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"uniswap-v2.js","sourceRoot":"","sources":["../../../src/dex/uniswap-v2/uniswap-v2.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paraswap/dex-lib",
3
- "version": "2.23.2",
3
+ "version": "2.23.3-uniswap-v2-pairs-distant-cache.2",
4
4
  "main": "build/index.js",
5
5
  "types": "build/index.d.ts",
6
6
  "repository": "https://github.com/paraswap/paraswap-dex-lib",
@@ -5,6 +5,8 @@ import { BiSwapConfig } from './biswap';
5
5
  import { DfynConfig } from './dfyn';
6
6
  import { ExcaliburConfig } from './excalibur';
7
7
 
8
+ export const UNISWAP_V2_PAIRS_CACHE_TTL_S = 60; // 1 hour
9
+
8
10
  // BakerySwap and Dystopia were removed from AllUniswapForks and UniswapForksWithNetwork
9
11
  // as they have a modified pool implementation which are not compatible with
10
12
  // standard contract methods
@@ -52,6 +52,7 @@ import { Contract } from 'web3-eth-contract';
52
52
  import { UniswapV2Config, Adapters } from './config';
53
53
  import { Uniswapv2ConstantProductPool } from './uniswap-v2-constant-product-pool';
54
54
  import { applyTransferFee } from '../../lib/token-transfer-fee';
55
+ import { UNISWAP_V2_PAIRS_CACHE_TTL_S } from './constants';
55
56
 
56
57
  const DefaultUniswapV2PoolGasCost = 90 * 1000;
57
58
 
@@ -186,7 +187,7 @@ export class UniswapV2
186
187
  extends SimpleExchange
187
188
  implements IDex<UniswapV2Data, UniswapParam>
188
189
  {
189
- pairs: { [key: string]: UniswapV2Pair } = {};
190
+ pairToPoolMap: { [key: string]: UniswapV2EventPool } = {};
190
191
  feeFactor = 10000;
191
192
  factory: Contract;
192
193
 
@@ -258,7 +259,9 @@ export class UniswapV2
258
259
  blockNumber: number,
259
260
  ) {
260
261
  const { callEntry, callDecoder } = this.getFeesMultiCallData(pair) || {};
261
- pair.pool = new UniswapV2EventPool(
262
+
263
+ const [ token0, token1 ] = this.getSortedPair(pair.token0, pair.token1);
264
+ this.pairToPoolMap[this.getKeyForPair(token0, token1)] = new UniswapV2EventPool(
262
265
  this.dexKey,
263
266
  this.dexHelper,
264
267
  pair.exchange!,
@@ -271,13 +274,19 @@ export class UniswapV2
271
274
  callDecoder,
272
275
  this.decoderIface,
273
276
  );
274
- pair.pool.addressesSubscribed.push(pair.exchange!);
277
+ this.pairToPoolMap[this.getKeyForPair(token0, token1)].addressesSubscribed.push(pair.exchange!);
275
278
 
276
- await pair.pool.initialize(blockNumber, {
279
+ await this.pairToPoolMap[this.getKeyForPair(token0, token1)].initialize(blockNumber, {
277
280
  state: { reserves0, reserves1, feeCode },
278
281
  });
279
282
  }
280
283
 
284
+ protected getPool(pair: UniswapV2Pair): UniswapV2EventPool {
285
+ const [ token0, token1 ] = this.getSortedPair(pair.token0, pair.token1);
286
+
287
+ return this.pairToPoolMap[this.getKeyForPair(token0, token1)];
288
+ }
289
+
281
290
  async getBuyPrice(
282
291
  priceParams: UniswapV2PoolOrderedParams,
283
292
  destAmount: bigint,
@@ -322,16 +331,32 @@ export class UniswapV2
322
331
  return price;
323
332
  }
324
333
 
325
- async findPair(from: Token, to: Token) {
326
- if (from.address.toLowerCase() === to.address.toLowerCase()) return null;
327
- const [token0, token1] =
328
- from.address.toLowerCase() < to.address.toLowerCase()
334
+ getSortedPair(from: Token, to: Token): [ Token, Token ] {
335
+ return from.address.toLowerCase() < to.address.toLowerCase()
329
336
  ? [from, to]
330
337
  : [to, from];
338
+ }
339
+
340
+ getKeyForPair(token0: Token, token1: Token) {
341
+ return `${token0.address.toLowerCase()}-${token1.address.toLowerCase()}`
342
+ }
343
+
344
+ async findPair(from: Token, to: Token): Promise<UniswapV2Pair | null> {
345
+ if (from.address.toLowerCase() === to.address.toLowerCase()) return null;
346
+ const [token0, token1] = this.getSortedPair(from, to);
331
347
 
332
- const key = `${token0.address.toLowerCase()}-${token1.address.toLowerCase()}`;
333
- let pair = this.pairs[key];
334
- if (pair) return pair;
348
+ const key = this.getKeyForPair(token0, token1);
349
+
350
+ const cachedPair = await this.dexHelper.cache.getAndCacheLocally(
351
+ this.dexKey,
352
+ this.network,
353
+ key,
354
+ UNISWAP_V2_PAIRS_CACHE_TTL_S,
355
+ );
356
+
357
+ if (cachedPair) return JSON.parse(cachedPair);
358
+
359
+ let pair: UniswapV2Pair;
335
360
  const exchange = await this.factory.methods
336
361
  .getPair(token0.address, token1.address)
337
362
  .call();
@@ -340,7 +365,15 @@ export class UniswapV2
340
365
  } else {
341
366
  pair = { token0, token1, exchange };
342
367
  }
343
- this.pairs[key] = pair;
368
+
369
+ this.dexHelper.cache.setexAndCacheLocally(
370
+ this.dexKey,
371
+ this.network,
372
+ key,
373
+ UNISWAP_V2_PAIRS_CACHE_TTL_S,
374
+ JSON.stringify(pair),
375
+ );
376
+
344
377
  return pair;
345
378
  }
346
379
 
@@ -406,9 +439,10 @@ export class UniswapV2
406
439
  for (const _pair of pairs) {
407
440
  const pair = await this.findPair(_pair[0], _pair[1]);
408
441
  if (!(pair && pair.exchange)) continue;
409
- if (!pair.pool) {
442
+ const pool = this.getPool(pair);
443
+ if (!pool) {
410
444
  pairsToFetch.push(pair);
411
- } else if (!pair.pool.getState(blockNumber)) {
445
+ } else if (!pool.getState(blockNumber)) {
412
446
  pairsToFetch.push(pair);
413
447
  }
414
448
  }
@@ -426,7 +460,8 @@ export class UniswapV2
426
460
  for (let i = 0; i < pairsToFetch.length; i++) {
427
461
  const pairState = reserves[i];
428
462
  const pair = pairsToFetch[i];
429
- if (!pair.pool) {
463
+ const pool = this.getPool(pair);
464
+ if (!pool) {
430
465
  await this.addPool(
431
466
  pair,
432
467
  pairState.reserves0,
@@ -434,7 +469,7 @@ export class UniswapV2
434
469
  pairState.feeCode,
435
470
  blockNumber,
436
471
  );
437
- } else pair.pool.setState(pairState, blockNumber);
472
+ } else pool.setState(pairState, blockNumber);
438
473
  }
439
474
  }
440
475
 
@@ -445,8 +480,10 @@ export class UniswapV2
445
480
  tokenDexTransferFee: number,
446
481
  ): Promise<UniswapV2PoolOrderedParams | null> {
447
482
  const pair = await this.findPair(from, to);
448
- if (!(pair && pair.pool && pair.exchange)) return null;
449
- const pairState = pair.pool.getState(blockNumber);
483
+ let pool: UniswapV2EventPool | null = null;
484
+ if(pair) pool = this.getPool(pair);
485
+ if (!(pair && pool && pair.exchange)) return null;
486
+ const pairState = pool.getState(blockNumber);
450
487
  if (!pairState) {
451
488
  this.logger.error(
452
489
  `Error_orderPairParams expected reserves, got none (maybe the pool doesn't exist) ${