@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.
- package/build/dex/bebop/bebop.d.ts +3 -0
- package/build/dex/bebop/bebop.js +67 -22
- package/build/dex/bebop/bebop.js.map +1 -1
- package/build/dex/bebop/constants.d.ts +5 -0
- package/build/dex/bebop/constants.js +7 -1
- package/build/dex/bebop/constants.js.map +1 -1
- package/build/dex/bebop/types.d.ts +7 -0
- package/build/dex/bebop/types.js +8 -0
- package/build/dex/bebop/types.js.map +1 -1
- package/build/dex/bebop/validators.js +0 -12
- package/build/dex/bebop/validators.js.map +1 -1
- package/build/lib/fetcher/wsFetcher.js +3 -1
- package/build/lib/fetcher/wsFetcher.js.map +1 -1
- package/package.json +1 -1
- package/src/dex/bebop/bebop-e2e.test.ts +1 -1
- package/src/dex/bebop/bebop.ts +126 -26
- package/src/dex/bebop/constants.ts +6 -0
- package/src/dex/bebop/types.ts +9 -0
- package/src/dex/bebop/validators.ts +0 -14
- package/src/lib/fetcher/wsFetcher.ts +8 -1
|
@@ -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;
|
package/build/dex/bebop/bebop.js
CHANGED
|
@@ -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
|
-
|
|
265
|
+
const isRestricted = await this.isRestricted();
|
|
266
|
+
if (isRestricted) {
|
|
267
|
+
return null;
|
|
268
|
+
}
|
|
264
269
|
try {
|
|
265
|
-
|
|
266
|
-
(
|
|
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
|
-
|
|
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 (
|
|
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:
|
|
407
|
-
decimals: this.tokensMap[
|
|
408
|
-
symbol: this.tokensMap[
|
|
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:
|
|
418
|
-
decimals: this.tokensMap[
|
|
419
|
-
symbol: this.tokensMap[
|
|
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:
|
|
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(
|
|
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
|
|
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
|
|
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;
|
package/build/dex/bebop/types.js
CHANGED
|
@@ -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,
|
|
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":";;;AAEA,yCAGmB;AAEnB,MAAa,eAAe;IAC1B,YAAmB,UAAU,EAAE;QAAZ,YAAO,GAAP,OAAO,CAAK;IAAG,CAAC;CACpC;AAFD,0CAEC;AAiBD,MAAa,gBAAgB;IAO3B,YAAY,YAAuC,EAAU,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QALpE,uBAAkB,GAAY,KAAK,CAAC;QACnC,SAAI,GAAY,IAAI,CAAC;QACrB,OAAE,GAAoB,IAAI,kBAAe,EAAE,CAAC;QAC5C,eAAU,GAA+B,IAAI,CAAC;QAGpD,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC;QAC7B,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,CAAC;IAEO,SAAS,CAAC,UAA+B;QAC/C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,CAAC;IAEO,aAAa,CAAC,KAAU;QAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,KAAK,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QACzE,iCAAiC;QACjC,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;IAEO,OAAO;QACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QACvD,iCAAiC;QACjC,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;IAEO,OAAO,CAAC,KAAU;QACxB,IAAI,CAAC,MAAM,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"wsFetcher.js","sourceRoot":"","sources":["../../../src/lib/fetcher/wsFetcher.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/dex/bebop/bebop.ts
CHANGED
|
@@ -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
|
-
|
|
369
|
+
const isRestricted = await this.isRestricted();
|
|
370
|
+
if (isRestricted) {
|
|
371
|
+
return null;
|
|
372
|
+
}
|
|
361
373
|
|
|
362
374
|
try {
|
|
363
|
-
|
|
364
|
-
limitPools
|
|
365
|
-
|
|
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
|
-
|
|
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 (
|
|
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:
|
|
556
|
-
decimals: this.tokensMap[
|
|
557
|
-
symbol: this.tokensMap[
|
|
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:
|
|
566
|
-
decimals: this.tokensMap[
|
|
567
|
-
symbol: this.tokensMap[
|
|
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:
|
|
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(
|
|
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
|
|
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
|
|
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;
|
package/src/dex/bebop/types.ts
CHANGED
|
@@ -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(
|
|
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,
|