@paraswap/dex-lib 3.8.41-bebop → 3.8.41-bebop.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.
@@ -45,10 +45,13 @@ export declare class Bebop extends SimpleExchange implements IDex<BebopData> {
45
45
  getCalldataGasCost(poolPrices: PoolPrices<BebopData>): number | number[];
46
46
  getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: BebopData, side: SwapSide): AdapterExchangeParam;
47
47
  updatePoolState(): Promise<void>;
48
+ setTokensMap(): Promise<void>;
48
49
  getMaxLiquidity(levels: BebopLevel[]): number;
49
50
  getTopPoolsForToken(tokenAddress: Address, limit: number): Promise<PoolLiquidity[]>;
50
51
  getDexParam(srcToken: Address, destToken: Address, srcAmount: NumberAsString, destAmount: NumberAsString, recipient: Address, data: BebopData, side: SwapSide): DexExchangeParam;
51
52
  preProcessTransaction(optimalSwapExchange: OptimalSwapExchange<BebopData>, srcToken: Token, destToken: Token, side: SwapSide, options: PreprocessTransactionOptions): Promise<[OptimalSwapExchange<BebopData>, ExchangeTxInfo]>;
53
+ restrict(): Promise<void>;
54
+ isRestricted(): Promise<boolean>;
52
55
  getCachedPrices(): Promise<BebopPricingResponse | null>;
53
56
  getCachedTokens(): Promise<TokenDataMap | null>;
54
57
  getTokenFromAddress(address: Address): Token;
@@ -31,6 +31,7 @@ const ts_essentials_1 = require("ts-essentials");
31
31
  const constants_1 = require("../../constants");
32
32
  const CALLDATA_GAS_COST = __importStar(require("../../calldata-gas-cost"));
33
33
  const utils_1 = require("../../utils");
34
+ const types_1 = require("./types");
34
35
  const BebopSettlement_abi_json_1 = __importDefault(require("../../abi/bebop/BebopSettlement.abi.json"));
35
36
  const simple_exchange_1 = require("../simple-exchange");
36
37
  const config_1 = require("./config");
@@ -92,6 +93,7 @@ class Bebop extends simple_exchange_1.SimpleExchange {
92
93
  this.rateFetcher.start();
93
94
  await sleep(constants_2.BEBOP_INIT_TIMEOUT_MS);
94
95
  }
96
+ await this.setTokensMap();
95
97
  }
96
98
  // Returns the list of contract adapters (name and index)
97
99
  // for a buy/sell. Return null if there are no adapters.
@@ -260,10 +262,14 @@ class Bebop extends simple_exchange_1.SimpleExchange {
260
262
  // should be used. If limitPools is undefined then
261
263
  // any pools can be used.
262
264
  async getPricesVolume(srcToken, destToken, amounts, side, blockNumber, limitPools) {
263
- this.tokensMap = (await this.getCachedTokens()) || {};
265
+ const isRestricted = await this.isRestricted();
266
+ if (isRestricted) {
267
+ return null;
268
+ }
264
269
  try {
265
- const pools = limitPools ??
266
- (await this.getPoolIdentifiers(srcToken, destToken, side, blockNumber));
270
+ let pools = limitPools
271
+ ? limitPools.filter(p => p === this.getPoolIdentifier(srcToken.address, destToken.address))
272
+ : await this.getPoolIdentifiers(srcToken, destToken, side, blockNumber);
267
273
  if (pools.length === 0) {
268
274
  return null;
269
275
  }
@@ -350,12 +356,10 @@ class Bebop extends simple_exchange_1.SimpleExchange {
350
356
  networkFee: '0',
351
357
  };
352
358
  }
353
- // This is called once before getTopPoolsForToken is
354
- // called for multiple tokens. This can be helpful to
355
- // update common state required for calculating
356
- // getTopPoolsForToken. It is optional for a DEX
357
- // to implement this
358
359
  async updatePoolState() {
360
+ await this.setTokensMap();
361
+ }
362
+ async setTokensMap() {
359
363
  const tokens = await this.getCachedTokens();
360
364
  if (tokens) {
361
365
  this.tokensMap = tokens;
@@ -378,7 +382,9 @@ class Bebop extends simple_exchange_1.SimpleExchange {
378
382
  let liquidityUSD = 0;
379
383
  let token;
380
384
  const [base, quote] = pair.split('/');
381
- if (base.toLowerCase() == tokenAddress.toLowerCase()) {
385
+ const isBase = base.toLowerCase() == tokenAddress.toLowerCase();
386
+ const isQuote = quote.toLowerCase() == tokenAddress.toLowerCase();
387
+ if (isBase) {
382
388
  const liquidityInQuote = this.getMaxLiquidity(pairData.bids);
383
389
  token = {
384
390
  address: quote,
@@ -387,7 +393,7 @@ class Bebop extends simple_exchange_1.SimpleExchange {
387
393
  const quoteTokenUsd = await this.dexHelper.getTokenUSDPrice(token, BigInt(Math.round(liquidityInQuote)));
388
394
  liquidityUSD = liquidityInQuote * quoteTokenUsd;
389
395
  }
390
- else if (quote.toLowerCase() == tokenAddress.toLowerCase()) {
396
+ else if (isQuote) {
391
397
  const liquidityInBase = this.getMaxLiquidity(pairData.asks);
392
398
  token = {
393
399
  address: base,
@@ -397,15 +403,17 @@ class Bebop extends simple_exchange_1.SimpleExchange {
397
403
  liquidityUSD = liquidityInBase * baseTokenUsd;
398
404
  }
399
405
  if (liquidityUSD) {
406
+ (0, ts_essentials_1.assert)(token, 'Token not found');
407
+ const address = token.address.toLowerCase();
400
408
  if (pools.length === 0) {
401
409
  pools.push({
402
410
  exchange: this.dexKey,
403
411
  address: this.settlementAddress,
404
412
  connectorTokens: [
405
413
  {
406
- address: quote,
407
- decimals: this.tokensMap[quote.toLowerCase()].decimals,
408
- symbol: this.tokensMap[quote.toLowerCase()].ticker,
414
+ address: address,
415
+ decimals: this.tokensMap[address].decimals,
416
+ symbol: this.tokensMap[address].ticker,
409
417
  },
410
418
  ],
411
419
  liquidityUSD,
@@ -414,9 +422,9 @@ class Bebop extends simple_exchange_1.SimpleExchange {
414
422
  else {
415
423
  pools[0].liquidityUSD += liquidityUSD;
416
424
  pools[0].connectorTokens.push({
417
- address: quote,
418
- decimals: this.tokensMap[quote.toLowerCase()].decimals,
419
- symbol: this.tokensMap[quote.toLowerCase()].ticker,
425
+ address: address,
426
+ decimals: this.tokensMap[address].decimals,
427
+ symbol: this.tokensMap[address].ticker,
420
428
  });
421
429
  }
422
430
  }
@@ -431,7 +439,7 @@ class Bebop extends simple_exchange_1.SimpleExchange {
431
439
  return {
432
440
  exchangeData: tx.data,
433
441
  needWrapNative: this.needWrapNative,
434
- dexFuncHasRecipient: false,
442
+ dexFuncHasRecipient: srcToken.toLowerCase() !== constants_1.ETHER_ADDRESS,
435
443
  targetExchange: this.settlementAddress,
436
444
  returnAmountPos: undefined,
437
445
  };
@@ -445,7 +453,9 @@ class Bebop extends simple_exchange_1.SimpleExchange {
445
453
  sell_amounts: isSell ? optimalSwapExchange.srcAmount : undefined,
446
454
  buy_amounts: isBuy ? optimalSwapExchange.destAmount : undefined,
447
455
  taker_address: ethers_1.utils.getAddress(options.executionContractAddress),
448
- receiver_address: ethers_1.utils.getAddress(options.executionContractAddress),
456
+ receiver_address: ethers_1.utils.getAddress(srcToken.address.toLowerCase() === constants_1.ETHER_ADDRESS
457
+ ? options.executionContractAddress
458
+ : options.recipient),
449
459
  gasless: false,
450
460
  skip_validation: true,
451
461
  source: constants_2.BEBOP_AUTH_NAME,
@@ -470,7 +480,7 @@ class Bebop extends simple_exchange_1.SimpleExchange {
470
480
  .times(options.slippageFactor)
471
481
  .toFixed(0);
472
482
  if (quoteAmount < BigInt(requiredAmountWithSlippage)) {
473
- throw new Error(`Slipped, factor: ${quoteAmount.toString()} < ${requiredAmountWithSlippage}`);
483
+ throw new types_1.SlippageError(`Slipped, factor: ${quoteAmount.toString()} < ${requiredAmountWithSlippage}`);
474
484
  }
475
485
  }
476
486
  else {
@@ -480,7 +490,7 @@ class Bebop extends simple_exchange_1.SimpleExchange {
480
490
  .times(options.slippageFactor)
481
491
  .toFixed(0);
482
492
  if (quoteAmount > BigInt(requiredAmountWithSlippage)) {
483
- throw new Error(`Slipped, factor: ${options.slippageFactor} ${quoteAmount.toString()} > ${requiredAmountWithSlippage}`);
493
+ throw new types_1.SlippageError(`Slipped, factor: ${options.slippageFactor} ${quoteAmount.toString()} > ${requiredAmountWithSlippage}`);
484
494
  }
485
495
  }
486
496
  return [
@@ -496,9 +506,46 @@ class Bebop extends simple_exchange_1.SimpleExchange {
496
506
  catch (e) {
497
507
  const message = `${this.dexKey}-${this.network}: ${e}`;
498
508
  this.logger.error(message);
509
+ if (!e?.isSlippageError) {
510
+ this.restrict();
511
+ }
499
512
  throw new Error(message);
500
513
  }
501
514
  }
515
+ async restrict() {
516
+ const errorsDataRaw = await this.dexHelper.cache.get(this.dexKey, this.network, constants_2.BEBOP_ERRORS_CACHE_KEY);
517
+ const errorsData = utils_1.Utils.Parse(errorsDataRaw);
518
+ const ERRORS_TTL_S = Math.floor(constants_2.BEBOP_RESTRICT_CHECK_INTERVAL_MS / 1000);
519
+ if (!errorsData ||
520
+ errorsData?.addedDatetimeMs + constants_2.BEBOP_RESTRICT_CHECK_INTERVAL_MS <
521
+ Date.now()) {
522
+ this.logger.warn(`${this.dexKey}-${this.network}: First encounter of error OR error ocurred outside of threshold, setting up counter`);
523
+ const data = {
524
+ count: 1,
525
+ addedDatetimeMs: Date.now(),
526
+ };
527
+ await this.dexHelper.cache.setex(this.dexKey, this.network, constants_2.BEBOP_ERRORS_CACHE_KEY, ERRORS_TTL_S, utils_1.Utils.Serialize(data));
528
+ return;
529
+ }
530
+ else {
531
+ if (errorsData.count + 1 >= constants_2.BEBOP_RESTRICT_COUNT_THRESHOLD) {
532
+ this.logger.warn(`${this.dexKey}-${this.network}: Restricting due to error count=${errorsData.count + 1} within ${constants_2.BEBOP_RESTRICT_CHECK_INTERVAL_MS / 1000 / 60} minutes`);
533
+ await this.dexHelper.cache.setex(this.dexKey, this.network, constants_2.BEBOP_RESTRICTED_CACHE_KEY, constants_2.BEBOP_RESTRICT_TTL_S, 'true');
534
+ }
535
+ else {
536
+ this.logger.warn(`${this.dexKey}-${this.network}: Error count increased`);
537
+ const data = {
538
+ count: errorsData.count + 1,
539
+ addedDatetimeMs: errorsData.addedDatetimeMs,
540
+ };
541
+ await this.dexHelper.cache.setex(this.dexKey, this.network, constants_2.BEBOP_ERRORS_CACHE_KEY, ERRORS_TTL_S, utils_1.Utils.Serialize(data));
542
+ }
543
+ }
544
+ }
545
+ async isRestricted() {
546
+ const result = await this.dexHelper.cache.get(this.dexKey, this.network, constants_2.BEBOP_RESTRICTED_CACHE_KEY);
547
+ return result === 'true';
548
+ }
502
549
  async getCachedPrices() {
503
550
  const cachedPrices = await this.dexHelper.cache.get(this.dexKey, this.network, this.pricesCacheKey);
504
551
  if (cachedPrices) {
@@ -521,8 +568,6 @@ class Bebop extends simple_exchange_1.SimpleExchange {
521
568
  symbol: bebopToken.ticker,
522
569
  };
523
570
  }
524
- // This is optional function in case if your implementation has acquired any resources
525
- // you need to release for graceful shutdown. For example, it may be any interval timer
526
571
  releaseResources() {
527
572
  if (!this.dexHelper.config.isSlave) {
528
573
  this.rateFetcher.stop();
@@ -1 +1 @@
1
- {"version":3,"file":"bebop.js","sourceRoot":"","sources":["../../../src/dex/bebop/bebop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bebop.js","sourceRoot":"","sources":["../../../src/dex/bebop/bebop.ts"],"names":[],"mappings":"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"}
@@ -7,3 +7,8 @@ export declare const BEBOP_WS_API_URL = "wss://api.bebop.xyz";
7
7
  export declare const BEBOP_GAS_COST = 120000;
8
8
  export declare const BEBOP_AUTH_NAME = "paraswap";
9
9
  export declare const BEBOP_QUOTE_TIMEOUT_MS = 2000;
10
+ export declare const BEBOP_ERRORS_CACHE_KEY = "errors";
11
+ export declare const BEBOP_RESTRICTED_CACHE_KEY = "restricted";
12
+ export declare const BEBOP_RESTRICT_TTL_S: number;
13
+ export declare const BEBOP_RESTRICT_CHECK_INTERVAL_MS: number;
14
+ export declare const BEBOP_RESTRICT_COUNT_THRESHOLD = 3;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BEBOP_QUOTE_TIMEOUT_MS = exports.BEBOP_AUTH_NAME = exports.BEBOP_GAS_COST = exports.BEBOP_WS_API_URL = exports.BEBOP_API_URL = exports.BEBOP_TOKENS_POLLING_INTERVAL_MS = exports.BEBOP_TOKENS_CACHE_TTL = exports.BEBOP_PRICES_CACHE_TTL = exports.BEBOP_INIT_TIMEOUT_MS = void 0;
3
+ exports.BEBOP_RESTRICT_COUNT_THRESHOLD = exports.BEBOP_RESTRICT_CHECK_INTERVAL_MS = exports.BEBOP_RESTRICT_TTL_S = exports.BEBOP_RESTRICTED_CACHE_KEY = exports.BEBOP_ERRORS_CACHE_KEY = exports.BEBOP_QUOTE_TIMEOUT_MS = exports.BEBOP_AUTH_NAME = exports.BEBOP_GAS_COST = exports.BEBOP_WS_API_URL = exports.BEBOP_API_URL = exports.BEBOP_TOKENS_POLLING_INTERVAL_MS = exports.BEBOP_TOKENS_CACHE_TTL = exports.BEBOP_PRICES_CACHE_TTL = exports.BEBOP_INIT_TIMEOUT_MS = void 0;
4
4
  exports.BEBOP_INIT_TIMEOUT_MS = 5000;
5
5
  exports.BEBOP_PRICES_CACHE_TTL = 10;
6
6
  exports.BEBOP_TOKENS_CACHE_TTL = 60;
@@ -10,4 +10,10 @@ exports.BEBOP_WS_API_URL = 'wss://api.bebop.xyz';
10
10
  exports.BEBOP_GAS_COST = 120000;
11
11
  exports.BEBOP_AUTH_NAME = 'paraswap';
12
12
  exports.BEBOP_QUOTE_TIMEOUT_MS = 2000;
13
+ exports.BEBOP_ERRORS_CACHE_KEY = 'errors';
14
+ exports.BEBOP_RESTRICTED_CACHE_KEY = 'restricted';
15
+ // Restrict for BEBOP_RESTRICT_TTL_S if an error occured >= BEBOP_RESTRICT_COUNT_THRESHOLD times within BEBOP_RESTRICT_CHECK_INTERVAL_S interval
16
+ exports.BEBOP_RESTRICT_TTL_S = 10 * 60; // 10 min
17
+ exports.BEBOP_RESTRICT_CHECK_INTERVAL_MS = 1000 * 60 * 3; // 3 min
18
+ exports.BEBOP_RESTRICT_COUNT_THRESHOLD = 3;
13
19
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/dex/bebop/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,IAAI,CAAC;AAC7B,QAAA,sBAAsB,GAAG,EAAE,CAAC;AAC5B,QAAA,sBAAsB,GAAG,EAAE,CAAC;AAC5B,QAAA,gCAAgC,GAAG,EAAE,GAAG,IAAI,CAAC;AAC7C,QAAA,aAAa,GAAG,uBAAuB,CAAC;AACxC,QAAA,gBAAgB,GAAG,qBAAqB,CAAC;AACzC,QAAA,cAAc,GAAG,MAAO,CAAC;AACzB,QAAA,eAAe,GAAG,UAAU,CAAC;AAC7B,QAAA,sBAAsB,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/dex/bebop/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,IAAI,CAAC;AAC7B,QAAA,sBAAsB,GAAG,EAAE,CAAC;AAC5B,QAAA,sBAAsB,GAAG,EAAE,CAAC;AAC5B,QAAA,gCAAgC,GAAG,EAAE,GAAG,IAAI,CAAC;AAC7C,QAAA,aAAa,GAAG,uBAAuB,CAAC;AACxC,QAAA,gBAAgB,GAAG,qBAAqB,CAAC;AACzC,QAAA,cAAc,GAAG,MAAO,CAAC;AACzB,QAAA,eAAe,GAAG,UAAU,CAAC;AAC7B,QAAA,sBAAsB,GAAG,IAAI,CAAC;AAC9B,QAAA,sBAAsB,GAAG,QAAQ,CAAC;AAClC,QAAA,0BAA0B,GAAG,YAAY,CAAC;AACvD,gJAAgJ;AACnI,QAAA,oBAAoB,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS;AACzC,QAAA,gCAAgC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ;AAC1D,QAAA,8BAA8B,GAAG,CAAC,CAAC"}
@@ -74,3 +74,10 @@ export declare type RoutingInstruction = {
74
74
  pair: string;
75
75
  targetQuote: boolean;
76
76
  };
77
+ export declare class SlippageError extends Error {
78
+ isSlippageError: boolean;
79
+ }
80
+ export declare type RestrictData = {
81
+ count: number;
82
+ addedDatetimeMs: number;
83
+ } | null;
@@ -1,3 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SlippageError = void 0;
4
+ class SlippageError extends Error {
5
+ constructor() {
6
+ super(...arguments);
7
+ this.isSlippageError = true;
8
+ }
9
+ }
10
+ exports.SlippageError = SlippageError;
3
11
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dex/bebop/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dex/bebop/types.ts"],"names":[],"mappings":";;;AAkFA,MAAa,aAAc,SAAQ,KAAK;IAAxC;;QACE,oBAAe,GAAG,IAAI,CAAC;IACzB,CAAC;CAAA;AAFD,sCAEC"}
@@ -5,18 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.blacklistResponseValidator = exports.tokensResponseValidator = exports.pricesResponseValidator = void 0;
7
7
  const joi_1 = __importDefault(require("joi"));
8
- // const pairValidator = joi.object({
9
- // base: joi.string().min(1).required(),
10
- // quote: joi.string().min(1).required(),
11
- // liquidityUSD: joi.number().min(0).required(),
12
- // baseAddress: joi.string().min(1).required(),
13
- // quoteAddress: joi.string().min(1).required(),
14
- // baseDecimals: joi.number().min(0).required(),
15
- // quoteDecimals: joi.number().min(0).required(),
16
- // });
17
- // export const pairsResponseValidator = joi
18
- // .object()
19
- // .pattern(joi.string(), pairValidator);
20
8
  const levelValidator = joi_1.default.array().items(joi_1.default.number()).length(2);
21
9
  const pairValidator = joi_1.default.object({
22
10
  bids: joi_1.default.array().items(levelValidator).required(),
@@ -1 +1 @@
1
- {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/dex/bebop/validators.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAsB;AAEtB,qCAAqC;AACrC,0CAA0C;AAC1C,2CAA2C;AAC3C,kDAAkD;AAClD,iDAAiD;AACjD,kDAAkD;AAClD,kDAAkD;AAClD,mDAAmD;AACnD,MAAM;AAEN,4CAA4C;AAC5C,cAAc;AACd,2CAA2C;AAE3C,MAAM,cAAc,GAAG,aAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,aAAG,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAEjE,MAAM,aAAa,GAAG,aAAG,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE,aAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE;IAClD,IAAI,EAAE,aAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE;IAClD,cAAc,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC/C,CAAC,CAAC;AAEU,QAAA,uBAAuB,GAAG,aAAG;KACvC,MAAM,EAAE;KACR,OAAO,CAAC,aAAG,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC;AAExC,MAAM,cAAc,GAAG,aAAG;KACvB,MAAM,CAAC;IACN,MAAM,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACtC,eAAe,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC/C,QAAQ,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACzC,CAAC;KACD,OAAO,CAAC,IAAI,CAAC,CAAC;AAEJ,QAAA,uBAAuB,GAAG,aAAG,CAAC,MAAM,CAAC;IAChD,MAAM,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,aAAG,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC;CAC3D,CAAC,CAAC;AAEU,QAAA,0BAA0B,GAAG,aAAG,CAAC,MAAM,CAAC;IACnD,SAAS,EAAE,aAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC7D,CAAC,CAAC"}
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/dex/bebop/validators.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAsB;AAEtB,MAAM,cAAc,GAAG,aAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,aAAG,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAEjE,MAAM,aAAa,GAAG,aAAG,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE,aAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE;IAClD,IAAI,EAAE,aAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE;IAClD,cAAc,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC/C,CAAC,CAAC;AAEU,QAAA,uBAAuB,GAAG,aAAG;KACvC,MAAM,EAAE;KACR,OAAO,CAAC,aAAG,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC;AAExC,MAAM,cAAc,GAAG,aAAG;KACvB,MAAM,CAAC;IACN,MAAM,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACtC,eAAe,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC/C,QAAQ,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACzC,CAAC;KACD,OAAO,CAAC,IAAI,CAAC,CAAC;AAEJ,QAAA,uBAAuB,GAAG,aAAG,CAAC,MAAM,CAAC;IAChD,MAAM,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,aAAG,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC;CAC3D,CAAC,CAAC;AAEU,QAAA,0BAA0B,GAAG,aAAG,CAAC,MAAM,CAAC;IACnD,SAAS,EAAE,aAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC7D,CAAC,CAAC"}
@@ -41,7 +41,8 @@ class WebSocketFetcher {
41
41
  }, 3000);
42
42
  }
43
43
  onError(error) {
44
- this.logger.error(`Connection Error: ${error.toString()}. Reconnecting...`);
44
+ this.logger.error(`Connection Error: ${error.toString()}. Stopping & Reconnecting...`);
45
+ this.stopPolling();
45
46
  // reconnect on errors / failures
46
47
  setTimeout(() => {
47
48
  this.startPolling();
@@ -74,6 +75,7 @@ class WebSocketFetcher {
74
75
  if (typeof name !== 'string') {
75
76
  throw new Error('Name header is not a string');
76
77
  }
78
+ this.logger.info(`Connecting to ${this.requests.info.requestOptions.url}...`);
77
79
  this.ws.connect(this.requests.info.requestOptions.url, undefined, undefined, {
78
80
  Authorization: authorization,
79
81
  name: name,
@@ -1 +1 @@
1
- {"version":3,"file":"wsFetcher.js","sourceRoot":"","sources":["../../../src/lib/fetcher/wsFetcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wsFetcher.js","sourceRoot":"","sources":["../../../src/lib/fetcher/wsFetcher.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": "3.8.41-bebop",
3
+ "version": "3.8.41-bebop.2",
4
4
  "main": "build/index.js",
5
5
  "types": "build/index.d.ts",
6
6
  "repository": "https://github.com/paraswap/paraswap-dex-lib",
@@ -88,7 +88,7 @@ function testForNetwork(
88
88
  describe('Bebop E2E', () => {
89
89
  const dexKey = 'Bebop';
90
90
 
91
- describe('Mainnet', () => {
91
+ describe('Mainnetx', () => {
92
92
  const network = Network.MAINNET;
93
93
 
94
94
  const tokenASymbol: string = 'USDC';
@@ -13,9 +13,9 @@ import {
13
13
  NumberAsString,
14
14
  DexExchangeParam,
15
15
  } from '../../types';
16
- import { SwapSide, Network } from '../../constants';
16
+ import { SwapSide, Network, ETHER_ADDRESS } from '../../constants';
17
17
  import * as CALLDATA_GAS_COST from '../../calldata-gas-cost';
18
- import { getDexKeysWithNetwork } from '../../utils';
18
+ import { getDexKeysWithNetwork, Utils } from '../../utils';
19
19
  import { IDex } from '../../dex/idex';
20
20
  import { IDexHelper } from '../../dex-helper/idex-helper';
21
21
  import {
@@ -23,7 +23,9 @@ import {
23
23
  BebopLevel,
24
24
  BebopPair,
25
25
  BebopPricingResponse,
26
+ RestrictData,
26
27
  RoutingInstruction,
28
+ SlippageError,
27
29
  TokenDataMap,
28
30
  } from './types';
29
31
  import settlementABI from '../../abi/bebop/BebopSettlement.abi.json';
@@ -34,10 +36,15 @@ import { RateFetcher } from './rate-fetcher';
34
36
  import {
35
37
  BEBOP_API_URL,
36
38
  BEBOP_AUTH_NAME,
39
+ BEBOP_ERRORS_CACHE_KEY,
37
40
  BEBOP_GAS_COST,
38
41
  BEBOP_INIT_TIMEOUT_MS,
39
42
  BEBOP_PRICES_CACHE_TTL,
40
43
  BEBOP_QUOTE_TIMEOUT_MS,
44
+ BEBOP_RESTRICTED_CACHE_KEY,
45
+ BEBOP_RESTRICT_CHECK_INTERVAL_MS,
46
+ BEBOP_RESTRICT_COUNT_THRESHOLD,
47
+ BEBOP_RESTRICT_TTL_S,
41
48
  BEBOP_TOKENS_CACHE_TTL,
42
49
  BEBOP_TOKENS_POLLING_INTERVAL_MS,
43
50
  BEBOP_WS_API_URL,
@@ -124,6 +131,8 @@ export class Bebop extends SimpleExchange implements IDex<BebopData> {
124
131
  this.rateFetcher.start();
125
132
  await sleep(BEBOP_INIT_TIMEOUT_MS);
126
133
  }
134
+
135
+ await this.setTokensMap();
127
136
  }
128
137
 
129
138
  // Returns the list of contract adapters (name and index)
@@ -357,12 +366,18 @@ export class Bebop extends SimpleExchange implements IDex<BebopData> {
357
366
  blockNumber: number,
358
367
  limitPools?: string[],
359
368
  ): Promise<null | ExchangePrices<BebopData>> {
360
- this.tokensMap = (await this.getCachedTokens()) || {};
369
+ const isRestricted = await this.isRestricted();
370
+ if (isRestricted) {
371
+ return null;
372
+ }
361
373
 
362
374
  try {
363
- const pools =
364
- limitPools ??
365
- (await this.getPoolIdentifiers(srcToken, destToken, side, blockNumber));
375
+ let pools = limitPools
376
+ ? limitPools.filter(
377
+ p =>
378
+ p === this.getPoolIdentifier(srcToken.address, destToken.address),
379
+ )
380
+ : await this.getPoolIdentifiers(srcToken, destToken, side, blockNumber);
366
381
 
367
382
  if (pools.length === 0) {
368
383
  return null;
@@ -485,12 +500,11 @@ export class Bebop extends SimpleExchange implements IDex<BebopData> {
485
500
  };
486
501
  }
487
502
 
488
- // This is called once before getTopPoolsForToken is
489
- // called for multiple tokens. This can be helpful to
490
- // update common state required for calculating
491
- // getTopPoolsForToken. It is optional for a DEX
492
- // to implement this
493
503
  async updatePoolState(): Promise<void> {
504
+ await this.setTokensMap();
505
+ }
506
+
507
+ async setTokensMap() {
494
508
  const tokens = await this.getCachedTokens();
495
509
 
496
510
  if (tokens) {
@@ -522,7 +536,11 @@ export class Bebop extends SimpleExchange implements IDex<BebopData> {
522
536
  let liquidityUSD = 0;
523
537
  let token;
524
538
  const [base, quote] = pair.split('/');
525
- if (base.toLowerCase() == tokenAddress.toLowerCase()) {
539
+
540
+ const isBase = base.toLowerCase() == tokenAddress.toLowerCase();
541
+ const isQuote = quote.toLowerCase() == tokenAddress.toLowerCase();
542
+
543
+ if (isBase) {
526
544
  const liquidityInQuote = this.getMaxLiquidity(pairData.bids);
527
545
  token = {
528
546
  address: quote,
@@ -533,7 +551,7 @@ export class Bebop extends SimpleExchange implements IDex<BebopData> {
533
551
  BigInt(Math.round(liquidityInQuote)),
534
552
  );
535
553
  liquidityUSD = liquidityInQuote * quoteTokenUsd;
536
- } else if (quote.toLowerCase() == tokenAddress.toLowerCase()) {
554
+ } else if (isQuote) {
537
555
  const liquidityInBase = this.getMaxLiquidity(pairData.asks);
538
556
  token = {
539
557
  address: base,
@@ -545,16 +563,20 @@ export class Bebop extends SimpleExchange implements IDex<BebopData> {
545
563
  );
546
564
  liquidityUSD = liquidityInBase * baseTokenUsd;
547
565
  }
566
+
548
567
  if (liquidityUSD) {
568
+ assert(token, 'Token not found');
569
+ const address = token.address.toLowerCase();
570
+
549
571
  if (pools.length === 0) {
550
572
  pools.push({
551
573
  exchange: this.dexKey,
552
574
  address: this.settlementAddress,
553
575
  connectorTokens: [
554
576
  {
555
- address: quote,
556
- decimals: this.tokensMap[quote.toLowerCase()].decimals,
557
- symbol: this.tokensMap[quote.toLowerCase()].ticker,
577
+ address: address,
578
+ decimals: this.tokensMap[address].decimals,
579
+ symbol: this.tokensMap[address].ticker,
558
580
  },
559
581
  ],
560
582
  liquidityUSD,
@@ -562,9 +584,9 @@ export class Bebop extends SimpleExchange implements IDex<BebopData> {
562
584
  } else {
563
585
  pools[0].liquidityUSD += liquidityUSD;
564
586
  pools[0].connectorTokens.push({
565
- address: quote,
566
- decimals: this.tokensMap[quote.toLowerCase()].decimals,
567
- symbol: this.tokensMap[quote.toLowerCase()].ticker,
587
+ address: address,
588
+ decimals: this.tokensMap[address].decimals,
589
+ symbol: this.tokensMap[address].ticker,
568
590
  });
569
591
  }
570
592
  }
@@ -591,7 +613,7 @@ export class Bebop extends SimpleExchange implements IDex<BebopData> {
591
613
  return {
592
614
  exchangeData: tx.data,
593
615
  needWrapNative: this.needWrapNative,
594
- dexFuncHasRecipient: false,
616
+ dexFuncHasRecipient: srcToken.toLowerCase() !== ETHER_ADDRESS,
595
617
  targetExchange: this.settlementAddress,
596
618
  returnAmountPos: undefined,
597
619
  };
@@ -613,7 +635,11 @@ export class Bebop extends SimpleExchange implements IDex<BebopData> {
613
635
  sell_amounts: isSell ? optimalSwapExchange.srcAmount : undefined,
614
636
  buy_amounts: isBuy ? optimalSwapExchange.destAmount : undefined,
615
637
  taker_address: utils.getAddress(options.executionContractAddress),
616
- receiver_address: utils.getAddress(options.executionContractAddress),
638
+ receiver_address: utils.getAddress(
639
+ srcToken.address.toLowerCase() === ETHER_ADDRESS
640
+ ? options.executionContractAddress
641
+ : options.recipient,
642
+ ),
617
643
  gasless: false,
618
644
  skip_validation: true,
619
645
  source: BEBOP_AUTH_NAME,
@@ -654,7 +680,7 @@ export class Bebop extends SimpleExchange implements IDex<BebopData> {
654
680
  .times(options.slippageFactor)
655
681
  .toFixed(0);
656
682
  if (quoteAmount < BigInt(requiredAmountWithSlippage)) {
657
- throw new Error(
683
+ throw new SlippageError(
658
684
  `Slipped, factor: ${quoteAmount.toString()} < ${requiredAmountWithSlippage}`,
659
685
  );
660
686
  }
@@ -669,7 +695,7 @@ export class Bebop extends SimpleExchange implements IDex<BebopData> {
669
695
  .times(options.slippageFactor)
670
696
  .toFixed(0);
671
697
  if (quoteAmount > BigInt(requiredAmountWithSlippage)) {
672
- throw new Error(
698
+ throw new SlippageError(
673
699
  `Slipped, factor: ${
674
700
  options.slippageFactor
675
701
  } ${quoteAmount.toString()} > ${requiredAmountWithSlippage}`,
@@ -685,13 +711,89 @@ export class Bebop extends SimpleExchange implements IDex<BebopData> {
685
711
  },
686
712
  { deadline: BigInt(response.expiry) },
687
713
  ];
688
- } catch (e) {
714
+ } catch (e: any) {
689
715
  const message = `${this.dexKey}-${this.network}: ${e}`;
690
716
  this.logger.error(message);
717
+ if (!e?.isSlippageError) {
718
+ this.restrict();
719
+ }
691
720
  throw new Error(message);
692
721
  }
693
722
  }
694
723
 
724
+ async restrict() {
725
+ const errorsDataRaw = await this.dexHelper.cache.get(
726
+ this.dexKey,
727
+ this.network,
728
+ BEBOP_ERRORS_CACHE_KEY,
729
+ );
730
+
731
+ const errorsData: RestrictData = Utils.Parse(errorsDataRaw);
732
+ const ERRORS_TTL_S = Math.floor(BEBOP_RESTRICT_CHECK_INTERVAL_MS / 1000);
733
+
734
+ if (
735
+ !errorsData ||
736
+ errorsData?.addedDatetimeMs + BEBOP_RESTRICT_CHECK_INTERVAL_MS <
737
+ Date.now()
738
+ ) {
739
+ this.logger.warn(
740
+ `${this.dexKey}-${this.network}: First encounter of error OR error ocurred outside of threshold, setting up counter`,
741
+ );
742
+ const data: RestrictData = {
743
+ count: 1,
744
+ addedDatetimeMs: Date.now(),
745
+ };
746
+ await this.dexHelper.cache.setex(
747
+ this.dexKey,
748
+ this.network,
749
+ BEBOP_ERRORS_CACHE_KEY,
750
+ ERRORS_TTL_S,
751
+ Utils.Serialize(data),
752
+ );
753
+ return;
754
+ } else {
755
+ if (errorsData.count + 1 >= BEBOP_RESTRICT_COUNT_THRESHOLD) {
756
+ this.logger.warn(
757
+ `${this.dexKey}-${this.network}: Restricting due to error count=${
758
+ errorsData.count + 1
759
+ } within ${BEBOP_RESTRICT_CHECK_INTERVAL_MS / 1000 / 60} minutes`,
760
+ );
761
+ await this.dexHelper.cache.setex(
762
+ this.dexKey,
763
+ this.network,
764
+ BEBOP_RESTRICTED_CACHE_KEY,
765
+ BEBOP_RESTRICT_TTL_S,
766
+ 'true',
767
+ );
768
+ } else {
769
+ this.logger.warn(
770
+ `${this.dexKey}-${this.network}: Error count increased`,
771
+ );
772
+ const data: RestrictData = {
773
+ count: errorsData.count + 1,
774
+ addedDatetimeMs: errorsData.addedDatetimeMs,
775
+ };
776
+ await this.dexHelper.cache.setex(
777
+ this.dexKey,
778
+ this.network,
779
+ BEBOP_ERRORS_CACHE_KEY,
780
+ ERRORS_TTL_S,
781
+ Utils.Serialize(data),
782
+ );
783
+ }
784
+ }
785
+ }
786
+
787
+ async isRestricted(): Promise<boolean> {
788
+ const result = await this.dexHelper.cache.get(
789
+ this.dexKey,
790
+ this.network,
791
+ BEBOP_RESTRICTED_CACHE_KEY,
792
+ );
793
+
794
+ return result === 'true';
795
+ }
796
+
695
797
  async getCachedPrices(): Promise<BebopPricingResponse | null> {
696
798
  const cachedPrices = await this.dexHelper.cache.get(
697
799
  this.dexKey,
@@ -729,8 +831,6 @@ export class Bebop extends SimpleExchange implements IDex<BebopData> {
729
831
  };
730
832
  }
731
833
 
732
- // This is optional function in case if your implementation has acquired any resources
733
- // you need to release for graceful shutdown. For example, it may be any interval timer
734
834
  releaseResources(): AsyncOrSync<void> {
735
835
  if (!this.dexHelper.config.isSlave) {
736
836
  this.rateFetcher.stop();
@@ -7,3 +7,9 @@ export const BEBOP_WS_API_URL = 'wss://api.bebop.xyz';
7
7
  export const BEBOP_GAS_COST = 120_000;
8
8
  export const BEBOP_AUTH_NAME = 'paraswap';
9
9
  export const BEBOP_QUOTE_TIMEOUT_MS = 2000;
10
+ export const BEBOP_ERRORS_CACHE_KEY = 'errors';
11
+ export const BEBOP_RESTRICTED_CACHE_KEY = 'restricted';
12
+ // Restrict for BEBOP_RESTRICT_TTL_S if an error occured >= BEBOP_RESTRICT_COUNT_THRESHOLD times within BEBOP_RESTRICT_CHECK_INTERVAL_S interval
13
+ export const BEBOP_RESTRICT_TTL_S = 10 * 60; // 10 min
14
+ export const BEBOP_RESTRICT_CHECK_INTERVAL_MS = 1000 * 60 * 3; // 3 min
15
+ export const BEBOP_RESTRICT_COUNT_THRESHOLD = 3;
@@ -79,3 +79,12 @@ export type RoutingInstruction = {
79
79
  pair: string;
80
80
  targetQuote: boolean;
81
81
  };
82
+
83
+ export class SlippageError extends Error {
84
+ isSlippageError = true;
85
+ }
86
+
87
+ export type RestrictData = {
88
+ count: number;
89
+ addedDatetimeMs: number;
90
+ } | null;
@@ -1,19 +1,5 @@
1
1
  import joi from 'joi';
2
2
 
3
- // const pairValidator = joi.object({
4
- // base: joi.string().min(1).required(),
5
- // quote: joi.string().min(1).required(),
6
- // liquidityUSD: joi.number().min(0).required(),
7
- // baseAddress: joi.string().min(1).required(),
8
- // quoteAddress: joi.string().min(1).required(),
9
- // baseDecimals: joi.number().min(0).required(),
10
- // quoteDecimals: joi.number().min(0).required(),
11
- // });
12
-
13
- // export const pairsResponseValidator = joi
14
- // .object()
15
- // .pattern(joi.string(), pairValidator);
16
-
17
3
  const levelValidator = joi.array().items(joi.number()).length(2);
18
4
 
19
5
  const pairValidator = joi.object({
@@ -62,7 +62,11 @@ export class WebSocketFetcher<T> {
62
62
  }
63
63
 
64
64
  private onError(error: any) {
65
- this.logger.error(`Connection Error: ${error.toString()}. Reconnecting...`);
65
+ this.logger.error(
66
+ `Connection Error: ${error.toString()}. Stopping & Reconnecting...`,
67
+ );
68
+ this.stopPolling();
69
+
66
70
  // reconnect on errors / failures
67
71
  setTimeout(() => {
68
72
  this.startPolling();
@@ -103,6 +107,9 @@ export class WebSocketFetcher<T> {
103
107
  if (typeof name !== 'string') {
104
108
  throw new Error('Name header is not a string');
105
109
  }
110
+ this.logger.info(
111
+ `Connecting to ${this.requests.info.requestOptions.url}...`,
112
+ );
106
113
  this.ws.connect(
107
114
  this.requests.info.requestOptions.url!,
108
115
  undefined,