@paraswap/dex-lib 4.1.7-pub-sub.2 → 4.1.7-pub-sub.4
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/angle-staked-stable/angle-staked-stable.js +2 -1
- package/build/dex/angle-staked-stable/angle-staked-stable.js.map +1 -1
- package/build/dex/angle-transmuter/angle-transmuter.js.map +1 -1
- package/build/dex/balancer-v1/config.js +2 -1
- package/build/dex/balancer-v1/config.js.map +1 -1
- package/build/dex/dexalot/dexalot.d.ts +2 -9
- package/build/dex/dexalot/dexalot.js +18 -62
- package/build/dex/dexalot/dexalot.js.map +1 -1
- package/build/dex/dexalot/rate-fetcher.d.ts +19 -4
- package/build/dex/dexalot/rate-fetcher.js +112 -8
- package/build/dex/dexalot/rate-fetcher.js.map +1 -1
- package/build/dex/dexalot/types.d.ts +0 -1
- package/build/dex/generic-rfq/rate-fetcher.js +0 -12
- package/build/dex/generic-rfq/rate-fetcher.js.map +1 -1
- package/build/dex/hashflow/constants.d.ts +2 -2
- package/build/dex/hashflow/constants.js +2 -2
- package/build/dex/hashflow/hashflow.d.ts +1 -6
- package/build/dex/hashflow/hashflow.js +9 -34
- package/build/dex/hashflow/hashflow.js.map +1 -1
- package/build/dex/hashflow/rate-fetcher.d.ts +12 -2
- package/build/dex/hashflow/rate-fetcher.js +54 -6
- package/build/dex/hashflow/rate-fetcher.js.map +1 -1
- package/build/dex/hashflow/types.d.ts +0 -1
- package/build/dex/weth/weth.js +2 -1
- package/build/dex/weth/weth.js.map +1 -1
- package/build/lib/pub-sub.d.ts +0 -2
- package/build/lib/pub-sub.js +0 -12
- package/build/lib/pub-sub.js.map +1 -1
- package/build/pricing-helper.d.ts +1 -1
- package/build/pricing-helper.js +13 -9
- package/build/pricing-helper.js.map +1 -1
- package/build/types.d.ts +1 -0
- package/package.json +1 -1
- package/src/dex/aave-gsm/aave-gsm-gas-estimation.test.ts +32 -0
- package/src/dex/aave-v2/aave-v2-gas-estimation.test.ts +28 -0
- package/src/dex/aave-v3/aave-v3-gas-estimation.test.ts +66 -0
- package/src/dex/aave-v3-stata/aave-v3-stata-gas-estimation.test.ts +41 -0
- package/src/dex/aave-v3-stata-v2/aave-v3-stata-v2-gas-estimation.test.ts +41 -0
- package/src/dex/angle-staked-stable/angle-staked-stable-gas-estimation.test.ts +29 -0
- package/src/dex/angle-staked-stable/angle-staked-stable.ts +2 -1
- package/src/dex/angle-transmuter/angle-transmuter-gas-estimation.test.ts +41 -0
- package/src/dex/angle-transmuter/angle-transmuter.ts +0 -1
- package/src/dex/balancer-v1/balancer-v1-gas-estimation.test.ts +29 -0
- package/src/dex/balancer-v1/config.ts +2 -1
- package/src/dex/balancer-v2/balancer-v2-gas-estimation.test.ts +98 -0
- package/src/dex/balancer-v3/balancer-v3-gas-estimation.test.ts +30 -0
- package/src/dex/bancor/bancor-gas-estimation.test.ts +30 -0
- package/src/dex/bebop/bebop-gas-estimation.test.ts +30 -0
- package/src/dex/concentrator-arusd/concentrator-arusd-gas-estimation.test.ts +29 -0
- package/src/dex/curve-v1/curve-v1-gas-estimation.test.ts +29 -0
- package/src/dex/curve-v2/curve-v2-gas-estimation.test.ts +29 -0
- package/src/dex/dexalot/dexalot.ts +27 -127
- package/src/dex/dexalot/rate-fetcher.ts +219 -9
- package/src/dex/dexalot/types.ts +0 -1
- package/src/dex/fluid-dex/fluid-dex-gas-estimation.test.ts +29 -0
- package/src/dex/fx-protocol-rusd/fx-protocol-rusd-gas-estimation.test.ts +29 -0
- package/src/dex/generic-rfq/rate-fetcher.ts +0 -30
- package/src/dex/hashflow/constants.ts +2 -2
- package/src/dex/hashflow/hashflow-gas-estimation.test.ts +30 -0
- package/src/dex/hashflow/hashflow.ts +11 -67
- package/src/dex/hashflow/rate-fetcher.ts +106 -8
- package/src/dex/hashflow/types.ts +0 -1
- package/src/dex/idle-dao/idle-dao--gas-estimation.test.ts +30 -0
- package/src/dex/lido/lido-gas-estimation.test.ts +29 -0
- package/src/dex/lite-psm/lite-psm-gas-estimation.test.ts +34 -0
- package/src/dex/maker-psm/maker-psm-gas-estimation.test.ts +34 -0
- package/src/dex/maverick-v1/maverick-v1-gas-estimation.test.ts +29 -0
- package/src/dex/maverick-v2/maverick-v2-gas-estimation.test.ts +29 -0
- package/src/dex/pancakeswap-v3/pancakeswap-v3-gas-estimation.test.ts +29 -0
- package/src/dex/polygon-migrator/polygon-migrator-gas-estimation.test.ts +41 -0
- package/src/dex/sky-converter/sky-converter-gas-estimation.test.ts +78 -0
- package/src/dex/solidly/solidly-gas-estimation.test.ts +29 -0
- package/src/dex/solidly-v3/solidly-v3-gas-estimation.test.ts +29 -0
- package/src/dex/spark/spark-gas-estimation.test.ts +29 -0
- package/src/dex/stader/stader-gas-estimation.test.ts +29 -0
- package/src/dex/stkgho/stkgho-gas-estimation.test.ts +29 -0
- package/src/dex/swaap-v2/swaap-v2-estimation.test.ts +29 -0
- package/src/dex/swell/swell-estimation.test.ts +29 -0
- package/src/dex/trader-joe-v2.1/trader-joe-v2.1-gas-estimation.test.ts +29 -0
- package/src/dex/uniswap-v2/uniswap-v2-gas-estimation.test.ts +98 -0
- package/src/dex/uniswap-v3/uniswap-v3-gas-estimation.test.ts +98 -0
- package/src/dex/usual/usual-gas-estimation.test.ts +54 -0
- package/src/dex/usual-pp/usual-pp-gas-estimation.test.ts +29 -0
- package/src/dex/weth/weth-gas-estimation.test.ts +42 -0
- package/src/dex/weth/weth.ts +3 -1
- package/src/dex/wombat/wombat-gas-estimation.test.ts +29 -0
- package/src/dex/wsteth/wsteth-gas-estimation.test.ts +41 -0
- package/src/dex/wusdm/wusdm-gas-estimation.test.ts +41 -0
- package/src/lib/pub-sub.ts +0 -27
- package/src/pricing-helper.ts +19 -11
- package/src/types.ts +1 -0
- package/tests/constants-e2e.ts +8 -0
- package/tests/tenderly-simulation-new.test.ts +151 -0
- package/tests/tenderly-simulation-new.ts +698 -0
- package/tests/token-storage-slots.json +532 -0
- package/tests/utils-e2e.ts +137 -1
|
@@ -4,6 +4,8 @@ exports.RateFetcher = void 0;
|
|
|
4
4
|
const fetcher_1 = require("../../lib/fetcher/fetcher");
|
|
5
5
|
const validators_1 = require("../../lib/validators");
|
|
6
6
|
const validators_2 = require("./validators");
|
|
7
|
+
const constants_1 = require("./constants");
|
|
8
|
+
const pub_sub_1 = require("../../lib/pub-sub");
|
|
7
9
|
class RateFetcher {
|
|
8
10
|
dexHelper;
|
|
9
11
|
dexKey;
|
|
@@ -11,23 +13,24 @@ class RateFetcher {
|
|
|
11
13
|
logger;
|
|
12
14
|
pairsFetcher;
|
|
13
15
|
pairsCacheKey;
|
|
14
|
-
pairsCacheTTL;
|
|
15
16
|
rateFetcher;
|
|
17
|
+
rateTokensPubSub;
|
|
16
18
|
pricesCacheKey;
|
|
17
19
|
pricesCacheTTL;
|
|
18
20
|
tokensAddrCacheKey;
|
|
19
21
|
tokensCacheKey;
|
|
20
22
|
tokensCacheTTL;
|
|
21
23
|
blacklistFetcher;
|
|
24
|
+
blacklistPubSub;
|
|
22
25
|
blacklistCacheKey;
|
|
23
26
|
blacklistCacheTTL;
|
|
27
|
+
restrictedPoolPubSub;
|
|
24
28
|
constructor(dexHelper, dexKey, network, logger, config) {
|
|
25
29
|
this.dexHelper = dexHelper;
|
|
26
30
|
this.dexKey = dexKey;
|
|
27
31
|
this.network = network;
|
|
28
32
|
this.logger = logger;
|
|
29
33
|
this.pairsCacheKey = config.rateConfig.pairsCacheKey;
|
|
30
|
-
this.pairsCacheTTL = config.rateConfig.pairsCacheTTLSecs;
|
|
31
34
|
this.pricesCacheKey = config.rateConfig.pricesCacheKey;
|
|
32
35
|
this.pricesCacheTTL = config.rateConfig.pricesCacheTTLSecs;
|
|
33
36
|
this.tokensAddrCacheKey = config.rateConfig.tokensAddrCacheKey;
|
|
@@ -35,6 +38,7 @@ class RateFetcher {
|
|
|
35
38
|
this.tokensCacheTTL = config.rateConfig.tokensCacheTTLSecs;
|
|
36
39
|
this.blacklistCacheKey = config.rateConfig.blacklistCacheKey;
|
|
37
40
|
this.blacklistCacheTTL = config.rateConfig.blacklistCacheTTLSecs;
|
|
41
|
+
this.rateTokensPubSub = new pub_sub_1.ExpKeyValuePubSub(dexHelper, dexKey, 'rateTokens');
|
|
38
42
|
this.pairsFetcher = new fetcher_1.Fetcher(dexHelper.httpRequest, {
|
|
39
43
|
info: {
|
|
40
44
|
requestOptions: config.rateConfig.pairsReqParams,
|
|
@@ -53,6 +57,7 @@ class RateFetcher {
|
|
|
53
57
|
},
|
|
54
58
|
handler: this.handleRatesResponse.bind(this),
|
|
55
59
|
}, config.rateConfig.pricesIntervalMs, logger);
|
|
60
|
+
this.blacklistPubSub = new pub_sub_1.NonExpSetPubSub(dexHelper, dexKey, 'blacklist');
|
|
56
61
|
this.blacklistFetcher = new fetcher_1.Fetcher(dexHelper.httpRequest, {
|
|
57
62
|
info: {
|
|
58
63
|
requestOptions: config.rateConfig.blacklistReqParams,
|
|
@@ -62,11 +67,23 @@ class RateFetcher {
|
|
|
62
67
|
},
|
|
63
68
|
handler: this.handleBlacklistResponse.bind(this),
|
|
64
69
|
}, config.rateConfig.blacklistIntervalMs, logger);
|
|
70
|
+
this.restrictedPoolPubSub = new pub_sub_1.ExpKeyValuePubSub(dexHelper, dexKey, 'restricted-pool',
|
|
71
|
+
// using default value, we can lazy load non-restricted pools
|
|
72
|
+
// and restrict them by subscribing to this channel
|
|
73
|
+
'false', constants_1.DEXALOT_RESTRICT_TTL_S);
|
|
65
74
|
}
|
|
66
|
-
start() {
|
|
67
|
-
this.
|
|
68
|
-
|
|
69
|
-
|
|
75
|
+
async start() {
|
|
76
|
+
if (!this.dexHelper.config.isSlave) {
|
|
77
|
+
this.pairsFetcher.startPolling();
|
|
78
|
+
this.rateFetcher.startPolling();
|
|
79
|
+
this.blacklistFetcher.startPolling();
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
this.rateTokensPubSub.subscribe();
|
|
83
|
+
this.restrictedPoolPubSub.subscribe();
|
|
84
|
+
const initSet = await this.getAllBlacklisted();
|
|
85
|
+
this.blacklistPubSub.initializeAndSubscribe(initSet);
|
|
86
|
+
}
|
|
70
87
|
}
|
|
71
88
|
stop() {
|
|
72
89
|
this.pairsFetcher.stopPolling();
|
|
@@ -95,9 +112,14 @@ class RateFetcher {
|
|
|
95
112
|
decimals: pairs[pair].quoteDecimals,
|
|
96
113
|
};
|
|
97
114
|
});
|
|
98
|
-
this.dexHelper.cache.setex(this.dexKey, this.network, this.pairsCacheKey, this.
|
|
115
|
+
this.dexHelper.cache.setex(this.dexKey, this.network, this.pairsCacheKey, this.tokensCacheTTL, JSON.stringify(dexPairs));
|
|
99
116
|
this.dexHelper.cache.setex(this.dexKey, this.network, this.tokensCacheKey, this.tokensCacheTTL, JSON.stringify(tokenMap));
|
|
100
117
|
this.dexHelper.cache.setex(this.dexKey, this.network, this.tokensAddrCacheKey, this.tokensCacheTTL, JSON.stringify(tokenAddrMap));
|
|
118
|
+
this.rateTokensPubSub.publish({
|
|
119
|
+
[this.pairsCacheKey]: dexPairs,
|
|
120
|
+
[this.tokensCacheKey]: tokenMap,
|
|
121
|
+
[this.tokensAddrCacheKey]: tokenAddrMap,
|
|
122
|
+
}, this.tokensCacheTTL);
|
|
101
123
|
}
|
|
102
124
|
handleRatesResponse(resp) {
|
|
103
125
|
const { prices } = resp;
|
|
@@ -106,10 +128,92 @@ class RateFetcher {
|
|
|
106
128
|
dexPrices[pair.toLowerCase()] = prices[pair];
|
|
107
129
|
});
|
|
108
130
|
this.dexHelper.cache.setex(this.dexKey, this.network, this.pricesCacheKey, this.pricesCacheTTL, JSON.stringify(dexPrices));
|
|
131
|
+
this.rateTokensPubSub.publish({ [this.pricesCacheKey]: dexPrices }, this.pricesCacheTTL);
|
|
109
132
|
}
|
|
110
133
|
async handleBlacklistResponse(resp) {
|
|
111
134
|
const { blacklist } = resp;
|
|
112
|
-
|
|
135
|
+
const data = blacklist.map(item => item.toLowerCase());
|
|
136
|
+
this.dexHelper.cache.setex(this.dexKey, this.network, this.blacklistCacheKey, this.blacklistCacheTTL, JSON.stringify(data));
|
|
137
|
+
this.blacklistPubSub.publish(data);
|
|
138
|
+
}
|
|
139
|
+
async getCachedTokens() {
|
|
140
|
+
const cachedTokens = await this.rateTokensPubSub.getAndCache(this.tokensCacheKey);
|
|
141
|
+
if (cachedTokens) {
|
|
142
|
+
return cachedTokens;
|
|
143
|
+
}
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
async getCachedPairs() {
|
|
147
|
+
const cachedPairs = await this.rateTokensPubSub.getAndCache(this.pairsCacheKey);
|
|
148
|
+
if (cachedPairs) {
|
|
149
|
+
return cachedPairs;
|
|
150
|
+
}
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
async getCachedTokensAddr() {
|
|
154
|
+
const cachedTokensAddr = await this.rateTokensPubSub.getAndCache(this.tokensAddrCacheKey);
|
|
155
|
+
if (cachedTokensAddr) {
|
|
156
|
+
return cachedTokensAddr;
|
|
157
|
+
}
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
async setBlacklist(txOrigin, ttl = constants_1.DEXALOT_BLACKLIST_CACHES_TTL_S) {
|
|
161
|
+
const blacklist = await this.getAllBlacklisted();
|
|
162
|
+
blacklist.push(txOrigin.toLowerCase());
|
|
163
|
+
this.dexHelper.cache.setex(this.dexKey, this.network, this.blacklistCacheKey, ttl, JSON.stringify(blacklist));
|
|
164
|
+
this.blacklistPubSub.publish([txOrigin.toLowerCase()]);
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
async getAllBlacklisted() {
|
|
168
|
+
const cachedBlacklist = await this.dexHelper.cache.get(this.dexKey, this.network, this.blacklistCacheKey);
|
|
169
|
+
if (cachedBlacklist) {
|
|
170
|
+
return JSON.parse(cachedBlacklist);
|
|
171
|
+
}
|
|
172
|
+
return [];
|
|
173
|
+
}
|
|
174
|
+
async isBlacklisted(txOrigin) {
|
|
175
|
+
const blacklisted = await this.blacklistPubSub.has(txOrigin.toLowerCase());
|
|
176
|
+
return blacklisted;
|
|
177
|
+
/*
|
|
178
|
+
rate-limit check was only if blacklist data set was not available,
|
|
179
|
+
in the current implementation it should not be the case,
|
|
180
|
+
so skip next check
|
|
181
|
+
*/
|
|
182
|
+
// To not show pricing for rate limited users
|
|
183
|
+
if (await this.isRateLimited(txOrigin)) {
|
|
184
|
+
return true;
|
|
185
|
+
}
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
async setRateLimited(txOrigin, ttl = constants_1.DEXALOT_RATE_LIMITED_TTL_S) {
|
|
189
|
+
await this.dexHelper.cache.setex(this.dexKey, this.network, this.getRateLimitedKey(txOrigin), ttl, constants_1.DEXALOT_RATELIMIT_CACHE_VALUE);
|
|
190
|
+
return true;
|
|
191
|
+
}
|
|
192
|
+
async isRateLimited(txOrigin) {
|
|
193
|
+
const result = await this.dexHelper.cache.get(this.dexKey, this.network, this.getRateLimitedKey(txOrigin));
|
|
194
|
+
return result === constants_1.DEXALOT_RATELIMIT_CACHE_VALUE;
|
|
195
|
+
}
|
|
196
|
+
getRateLimitedKey(address) {
|
|
197
|
+
return `rate_limited_${address}`.toLowerCase();
|
|
198
|
+
}
|
|
199
|
+
async getCachedPrices() {
|
|
200
|
+
const cachedPrices = await this.rateTokensPubSub.getAndCache(this.pricesCacheKey);
|
|
201
|
+
if (cachedPrices) {
|
|
202
|
+
return cachedPrices;
|
|
203
|
+
}
|
|
204
|
+
return null;
|
|
205
|
+
}
|
|
206
|
+
async restrictPool(poolIdentifier, ttl = constants_1.DEXALOT_RESTRICT_TTL_S) {
|
|
207
|
+
await this.dexHelper.cache.setex(this.dexKey, this.network, this.getRestrictedPoolKey(poolIdentifier), ttl, 'true');
|
|
208
|
+
await this.restrictedPoolPubSub.publish({ [this.getRestrictedPoolKey(poolIdentifier)]: 'true' }, ttl);
|
|
209
|
+
return true;
|
|
210
|
+
}
|
|
211
|
+
async isRestrictedPool(poolIdentifier) {
|
|
212
|
+
const result = await this.restrictedPoolPubSub.getAndCache(this.getRestrictedPoolKey(poolIdentifier));
|
|
213
|
+
return result === 'true';
|
|
214
|
+
}
|
|
215
|
+
getRestrictedPoolKey(poolIdentifier) {
|
|
216
|
+
return `${constants_1.DEXALOT_RESTRICTED_CACHE_KEY}-${poolIdentifier}`;
|
|
113
217
|
}
|
|
114
218
|
}
|
|
115
219
|
exports.RateFetcher = RateFetcher;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-fetcher.js","sourceRoot":"","sources":["../../../src/dex/dexalot/rate-fetcher.ts"],"names":[],"mappings":";;;AAEA,uDAAoD;AACpD,qDAAuD;
|
|
1
|
+
{"version":3,"file":"rate-fetcher.js","sourceRoot":"","sources":["../../../src/dex/dexalot/rate-fetcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,7 +22,6 @@ const reversePrice = (price) => [
|
|
|
22
22
|
price[1].times(price[0]),
|
|
23
23
|
];
|
|
24
24
|
exports.reversePrice = reversePrice;
|
|
25
|
-
const logPrefix = 'RateFetched[pub_sub]';
|
|
26
25
|
class RateFetcher {
|
|
27
26
|
dexHelper;
|
|
28
27
|
config;
|
|
@@ -97,23 +96,19 @@ class RateFetcher {
|
|
|
97
96
|
}
|
|
98
97
|
}
|
|
99
98
|
async initialize() {
|
|
100
|
-
this.logger.info(`${logPrefix} Initializing rate fetcher`);
|
|
101
99
|
const isContract = await (0, utils_2.isContractAddress)(this.dexHelper.web3Provider, this.config.maker);
|
|
102
100
|
if (isContract) {
|
|
103
101
|
this.verifierContract = (0, erc1271_utils_1.createERC1271Contract)(this.dexHelper.web3Provider, this.config.maker);
|
|
104
102
|
}
|
|
105
103
|
if (this.dexHelper.config.isSlave) {
|
|
106
|
-
this.logger.info(`${logPrefix} Subscribing to prices pubsub`);
|
|
107
104
|
this.pricesPubSub.subscribe();
|
|
108
105
|
if (this.blacklistPubSub) {
|
|
109
|
-
this.logger.info(`${logPrefix} Subscribing to blacklist pubsub`);
|
|
110
106
|
const initSet = await this.dexHelper.cache.smembers(this.blackListCacheKey);
|
|
111
107
|
this.blacklistPubSub.initializeAndSubscribe(initSet);
|
|
112
108
|
}
|
|
113
109
|
}
|
|
114
110
|
}
|
|
115
111
|
start() {
|
|
116
|
-
this.logger.info(`${logPrefix} Starting rate fetcher`);
|
|
117
112
|
this.tokensFetcher.startPolling();
|
|
118
113
|
this.rateFetcher.startPolling();
|
|
119
114
|
this.pairsFetcher.startPolling();
|
|
@@ -122,7 +117,6 @@ class RateFetcher {
|
|
|
122
117
|
}
|
|
123
118
|
}
|
|
124
119
|
stop() {
|
|
125
|
-
this.logger.info(`${logPrefix} Stopping rate fetcher`);
|
|
126
120
|
this.tokensFetcher.stopPolling();
|
|
127
121
|
this.pairsFetcher.stopPolling();
|
|
128
122
|
this.rateFetcher.stopPolling();
|
|
@@ -131,7 +125,6 @@ class RateFetcher {
|
|
|
131
125
|
}
|
|
132
126
|
}
|
|
133
127
|
handleTokensResponse(data) {
|
|
134
|
-
this.logger.info(`${logPrefix} Handling tokens response, tokens: `, Object.keys(data.tokens).length);
|
|
135
128
|
for (const tokenName of Object.keys(data.tokens)) {
|
|
136
129
|
const token = data.tokens[tokenName];
|
|
137
130
|
token.address = token.address.toLowerCase();
|
|
@@ -147,7 +140,6 @@ class RateFetcher {
|
|
|
147
140
|
}, {});
|
|
148
141
|
}
|
|
149
142
|
handlePairsResponse(resp) {
|
|
150
|
-
this.logger.info(`${logPrefix} Handling pairs response, pairs: `, Object.keys(resp.pairs).length);
|
|
151
143
|
this.pairs = {};
|
|
152
144
|
const pairs = {};
|
|
153
145
|
for (const pairName of Object.keys(resp.pairs)) {
|
|
@@ -156,12 +148,10 @@ class RateFetcher {
|
|
|
156
148
|
this.pairs = pairs;
|
|
157
149
|
}
|
|
158
150
|
handleBlackListResponse(resp) {
|
|
159
|
-
this.logger.info(`${logPrefix} Handling blacklist response, blacklist length: `, resp.blacklist.length);
|
|
160
151
|
for (const address of resp.blacklist) {
|
|
161
152
|
this.dexHelper.cache.sadd(this.blackListCacheKey, address.toLowerCase());
|
|
162
153
|
}
|
|
163
154
|
if (this.blacklistPubSub) {
|
|
164
|
-
this.logger.info(`${logPrefix} Publishing blacklist to pubsub, blacklist length: `, resp.blacklist.length);
|
|
165
155
|
this.blacklistPubSub.publish(resp.blacklist);
|
|
166
156
|
}
|
|
167
157
|
}
|
|
@@ -172,7 +162,6 @@ class RateFetcher {
|
|
|
172
162
|
return false;
|
|
173
163
|
}
|
|
174
164
|
handleRatesResponse(resp) {
|
|
175
|
-
this.logger.info(`${logPrefix} Handling rates response, prices length: `, Object.keys(resp.prices).length);
|
|
176
165
|
const pubSubData = {};
|
|
177
166
|
const ttl = this.config.rateConfig.dataTTLS;
|
|
178
167
|
const pairs = this.pairs;
|
|
@@ -252,7 +241,6 @@ class RateFetcher {
|
|
|
252
241
|
}
|
|
253
242
|
async getAvailablePairs() {
|
|
254
243
|
const pairs = await this.pricesPubSub.getAndCache(`pairs`);
|
|
255
|
-
this.logger.info(`${logPrefix} Getting available pairs, pairs: `, pairs?.length);
|
|
256
244
|
if (!pairs) {
|
|
257
245
|
return [];
|
|
258
246
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-fetcher.js","sourceRoot":"","sources":["../../../src/dex/generic-rfq/rate-fetcher.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rate-fetcher.js","sourceRoot":"","sources":["../../../src/dex/generic-rfq/rate-fetcher.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAqC;AACrC,mCAAuC;AACvC,yCAA0C;AAC1C,mEAAiD;AAGjD,uDAAoD;AAkBpD,mCAAqC;AACrC,6CAMsB;AACtB,yCAAgD;AAChD,qDAAuD;AACvD,2DAGiC;AACjC,uCAAgD;AAChD,+CAAuE;AAEvE,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAC/B,MAAM,YAAY,GAAG,CAAC,KAA8B,EAAE,EAAE,CAC7D;IACE,0BAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACE,CAAC;AAJlB,QAAA,YAAY,gBAIM;AAE/B,MAAa,WAAW;IAwBZ;IACA;IACA;IACA;IA1BF,aAAa,CAA0B;IACvC,YAAY,CAAyB;IACrC,WAAW,CAAyB;IACpC,gBAAgB,CAA8B;IAE9C,MAAM,GAAkC,EAAE,CAAC;IAC3C,iBAAiB,GAAkC,EAAE,CAAC;IACtD,KAAK,GAAY,EAAE,CAAC;IAEpB,YAAY,CAAoB;IAChC,eAAe,CAAmB;IAElC,YAAY,CAAoC;IAEjD,iBAAiB,CAAS;IAEzB,QAAQ,CAE+B;IAEvC,gBAAgB,CAAmB;IAE3C,YACU,SAAqB,EACrB,MAAiB,EACjB,MAAc,EACd,MAAc;QAHd,cAAS,GAAT,SAAS,CAAY;QACrB,WAAM,GAAN,MAAM,CAAW;QACjB,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAQ;QAEtB,IAAI,CAAC,QAAQ,GAAG,IAAA,6BAAkB,EAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACxD,IAAI,CAAC,aAAa,GAAG,IAAI,iBAAO,CAC9B,SAAS,CAAC,WAAW,EACrB;YACE,IAAI,EAAE;gBACJ,cAAc,EAAE,MAAM,CAAC,YAAY,CAAC,SAAS;gBAC7C,MAAM,EAAE,CAAC,IAAa,EAAE,EAAE;oBACxB,OAAO,IAAA,4BAAe,EACpB,IAAI,EACJ,oCAAuB,CACxB,CAAC;gBACJ,CAAC;gBACD,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;aACxD;YACD,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;SAC9C,EACD,MAAM,CAAC,YAAY,CAAC,UAAU,EAC9B,IAAI,CAAC,MAAM,CACZ,CAAC;QAEF,IAAI,CAAC,YAAY,GAAG,IAAI,iBAAO,CAC7B,SAAS,CAAC,WAAW,EACrB;YACE,IAAI,EAAE;gBACJ,cAAc,EAAE,MAAM,CAAC,WAAW,CAAC,SAAS;gBAC5C,MAAM,EAAE,CAAC,IAAa,EAAE,EAAE;oBACxB,OAAO,IAAA,4BAAe,EAAgB,IAAI,EAAE,mCAAsB,CAAC,CAAC;gBACtE,CAAC;gBACD,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;aACvD;YACD,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;SAC7C,EACD,MAAM,CAAC,WAAW,CAAC,UAAU,EAC7B,IAAI,CAAC,MAAM,CACZ,CAAC;QAEF,IAAI,CAAC,WAAW,GAAG,IAAI,iBAAO,CAC5B,SAAS,CAAC,WAAW,EACrB;YACE,IAAI,EAAE;gBACJ,cAAc,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS;gBAC3C,MAAM,EAAE,CAAC,IAAa,EAAE,EAAE;oBACxB,OAAO,IAAA,4BAAe,EAAgB,IAAI,EAAE,2BAAc,CAAC,CAAC;gBAC9D,CAAC;gBACD,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;aACtD;YACD,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;SAC7C,EACD,MAAM,CAAC,UAAU,CAAC,UAAU,EAC5B,MAAM,CACP,CAAC;QAEF,IAAI,CAAC,YAAY,GAAG,IAAI,2BAAiB,CACvC,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,MAAM,EACX,QAAQ,CACT,CAAC;QAEF,IAAI,CAAC,iBAAiB,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,YAAY,CAAC;QAC1F,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YAC3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,iBAAO,CACjC,SAAS,CAAC,WAAW,EACrB;gBACE,IAAI,EAAE;oBACJ,cAAc,EAAE,MAAM,CAAC,eAAe,CAAC,SAAS;oBAChD,MAAM,EAAE,CAAC,IAAa,EAAE,EAAE;wBACxB,OAAO,IAAA,4BAAe,EACpB,IAAI,EACJ,uCAA0B,CAC3B,CAAC;oBACJ,CAAC;oBACD,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;iBACtD;gBACD,OAAO,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;aACjD,EACD,MAAM,CAAC,eAAe,CAAC,UAAU,EACjC,MAAM,CACP,CAAC;YAEF,IAAI,CAAC,eAAe,GAAG,IAAI,yBAAe,CACxC,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,MAAM,EACX,WAAW,CACZ,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;YACtC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,UAAU,GAAG,MAAM,IAAA,yBAAiB,EACxC,IAAI,CAAC,SAAS,CAAC,YAAY,EAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAClB,CAAC;QACF,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,gBAAgB,GAAG,IAAA,qCAAqB,EAC3C,IAAI,CAAC,SAAS,CAAC,YAAY,EAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAClB,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CACjD,IAAI,CAAC,iBAAiB,CACvB,CAAC;gBACF,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;QAClC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;QAChC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;QACvC,CAAC;IACH,CAAC;IAED,IAAI;QACF,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAChC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QAE/B,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;QACtC,CAAC;IACH,CAAC;IAEO,oBAAoB,CAAC,IAAoB;QAC/C,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACrC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;QACjC,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACpE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO,GAAG,CAAC;YACb,CAAC;YACD,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,GAAG,CAAC;YACrC,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAmC,CAAC,CAAC;IAC1C,CAAC;IAEO,mBAAmB,CAAC,IAAmB;QAC7C,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAEhB,MAAM,KAAK,GAAY,EAAE,CAAC;QAC1B,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/C,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEO,uBAAuB,CAAC,IAAuB;QACrD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAEM,aAAa,CAAC,WAAmB;QACtC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,mBAAmB,CAAC,IAAmB;QAC7C,MAAM,UAAU,GAA4B,EAAE,CAAC;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,IAAA,gBAAO,EAAC,KAAK,CAAC;YAAE,OAAO;QAE3B,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAE,CAAC;QAEpC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAErC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACjC,OAAO;YACT,CAAC;YAED,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,MAAM,CAAC;gBAAE,OAAO;YAEjC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAE3C,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;gBAChD,OAAO;YACT,CAAC;YAED,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACvB,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,OAAO,CAAC;gBAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;gBAC1B,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBAExB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CACxB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAClC,GAAG,EACH,GAAG,EACH,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CACtB,CAAC;gBACF,iBAAiB,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;YACtE,CAAC;YAED,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACvB,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,OAAO,CAAC;gBAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;gBAC1B,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBAExB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CACxB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAClC,GAAG,EACH,GAAG,EACH,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CACtB,CAAC;gBACF,iBAAiB,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;YACtE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,iBAAiB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,OAAO,CAAC;YACpB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC5C,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CACxB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAClC,GAAG,EACH,GAAG,EACH,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CACtB,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED,WAAW;QACT,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAChD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAC1B,CAAC;IACJ,CAAC;IAEM,iBAAiB,CAAC,YAAoB;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAEnD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAExC,OAAO,KAAK;aACT,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAO,CAAC,CAAC;aAC9D,GAAG,CAAC,CAAC,CAAC,EAAE;YACP,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACxC,IAAI,cAAiC,CAAC;YACtC,IAAI,SAAS,CAAC,OAAO,KAAK,YAAY,EAAE,CAAC;gBACvC,cAAc,GAAG;oBACf,OAAO,EAAE,SAAS,CAAC,OAAO;oBAC1B,QAAQ,EAAE,SAAS,CAAC,QAAQ;iBAC7B,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,cAAc,GAAG;oBACf,OAAO,EAAE,UAAU,CAAC,OAAO;oBAC3B,QAAQ,EAAE,UAAU,CAAC,QAAQ;iBAC9B,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,eAAe,EAAE,CAAC,cAAc,CAAC;gBACjC,YAAY,EAAE,CAAC,CAAC,YAAY;aAC7B,CAAC;QACJ,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,KAAK,CAAC,iBAAiB;QAC5B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAW,OAAO,CAAC,CAAC;QACrE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,KAAK,CAAC,aAAa,CACxB,QAAe,EACf,SAAgB,EAChB,IAAc;QAEd,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,IAAI,MAAM,GAA4B,IAAI,CAAC;QAC3C,IAAI,IAAI,KAAK,eAAQ,CAAC,IAAI,EAAE,CAAC;YAC3B,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAC1C,GAAG,QAAQ,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,OAAO,CAChD,CAAC;YAEF,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAC1C,GAAG,SAAS,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,OAAO,CAChD,CAAC;gBACF,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAC1C,GAAG,SAAS,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,OAAO,CAChD,CAAC;YAEF,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAC1C,GAAG,QAAQ,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,OAAO,CAChD,CAAC;gBACF,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,IAAI,sBAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,sBAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACxB,CAAC,CAAC;QAEH,IAAI,QAAQ,EAAE,CAAC;YACb,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CACpC,IAAA,oBAAY,EAAC,KAAgC,CAAC,CAC/C,CAAC;QACJ,CAAC;QAED,OAAO,WAAwC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,WAAW,CACf,SAAgB,EAChB,UAAiB,EACjB,SAAiB,EACjB,IAAc,EACd,YAAqB,EACrB,WAAoB,EACpB,OAAgB,EAChB,OAAiB;QAEjB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAE5D,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,QAAQ,GAAe;YAC3B,UAAU,EAAE,SAAS,CAAC,OAAO;YAC7B,UAAU,EAAE,QAAQ,CAAC,OAAO;YAC5B,WAAW,EAAE,IAAI,KAAK,eAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;YAC1D,WAAW,EAAE,IAAI,KAAK,eAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;YAC3D,WAAW;YACX,YAAY;YACZ,OAAO;YACP,OAAO,EAAE,OAAO,IAAI,KAAK;SAC1B,CAAC;QAEF,IAAI,CAAC;YACH,IAAI,OAAO,GAAG;gBACZ,IAAI,EAAE,QAAQ;gBACd,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc;gBAC7B,OAAO,EAAE,wBAAwB;aAClC,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,mBAAmB,EACnB,IAAI,CAAC,SAAS,CAAC,IAAA,aAAI,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CACxE,CAAC;YAEF,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBAC3B,OAAO,OAAO,CAAC,MAAM,CAAC;YACxB,CAAC;YACD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CACvD,OAAO,CACR,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,qBAAqB,EACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CACrD,CAAC;YACF,MAAM,YAAY,GAAG,IAAA,4BAAe,EAClC,IAAI,EACJ,IAAA,uCAA0B,EAAC,YAAY,CAAC,CACzC,CAAC;YAEF,MAAM,IAAA,kBAAU,EACd,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAClC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAC7C,IAAI,CAAC,SAAS,CAAC,YAAY,EAC3B,YAAY,CAAC,KAAK,EAClB,IAAI,CAAC,gBAAgB,CACtB,CAAC;YAEF,OAAO;gBACL,KAAK,EAAE;oBACL,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,KAAK;oBAC/B,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,KAAK;oBAC/B,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM;oBACjC,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,YAAY;oBAC7C,UAAU,EAAE,YAAY,CAAC,KAAK,CAAC,UAAU;oBACzC,UAAU,EAAE,YAAY,CAAC,KAAK,CAAC,UAAU;oBACzC,WAAW,EAAE,YAAY,CAAC,KAAK,CAAC,WAAW;oBAC3C,WAAW,EAAE,YAAY,CAAC,KAAK,CAAC,WAAW;iBAC5C;gBACD,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,SAAS;gBACvC,oBAAoB,EAAE,YAAY,CAAC,KAAK,CAAC,WAAW;gBACpD,gBAAgB,EAAE,IAAI;gBACtB,gBAAgB,EAAE,IAAI;aACvB,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,WAAmB;QACpC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAC7B,IAAI,CAAC,iBAAiB,EACtB,WAAW,CAAC,WAAW,EAAE,EACzB,MAAM,CACP,CAAC;QACF,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA7dD,kCA6dC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import BigNumber from 'bignumber.js';
|
|
2
2
|
export declare const HASHFLOW_BLACKLIST_TTL_S: number;
|
|
3
3
|
export declare const HASHFLOW_MM_RESTRICT_TTL_S: number;
|
|
4
|
-
export declare const HASHFLOW_PRICES_CACHES_TTL_S =
|
|
4
|
+
export declare const HASHFLOW_PRICES_CACHES_TTL_S = 5;
|
|
5
5
|
export declare const HASHFLOW_MARKET_MAKERS_CACHES_TTL_S = 30;
|
|
6
|
-
export declare const HASHFLOW_API_PRICES_POLLING_INTERVAL_MS =
|
|
6
|
+
export declare const HASHFLOW_API_PRICES_POLLING_INTERVAL_MS = 2000;
|
|
7
7
|
export declare const HASHFLOW_API_MARKET_MAKERS_POLLING_INTERVAL_MS: number;
|
|
8
8
|
export declare const HASHFLOW_API_URL = "https://api.hashflow.com";
|
|
9
9
|
export declare const HASHFLOW_API_CLIENT_NAME = "paraswap";
|
|
@@ -7,9 +7,9 @@ exports.CONSECUTIVE_ERROR_THRESHOLD = exports.CONSECUTIVE_ERROR_TIMESPAN_MS = ex
|
|
|
7
7
|
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
8
8
|
exports.HASHFLOW_BLACKLIST_TTL_S = 60 * 60 * 24 * 7; // 7 days
|
|
9
9
|
exports.HASHFLOW_MM_RESTRICT_TTL_S = 60 * 60;
|
|
10
|
-
exports.HASHFLOW_PRICES_CACHES_TTL_S =
|
|
10
|
+
exports.HASHFLOW_PRICES_CACHES_TTL_S = 5;
|
|
11
11
|
exports.HASHFLOW_MARKET_MAKERS_CACHES_TTL_S = 30;
|
|
12
|
-
exports.HASHFLOW_API_PRICES_POLLING_INTERVAL_MS =
|
|
12
|
+
exports.HASHFLOW_API_PRICES_POLLING_INTERVAL_MS = 2000;
|
|
13
13
|
exports.HASHFLOW_API_MARKET_MAKERS_POLLING_INTERVAL_MS = 28 * 1000; // 28 secs
|
|
14
14
|
exports.HASHFLOW_API_URL = 'https://api.hashflow.com';
|
|
15
15
|
exports.HASHFLOW_API_CLIENT_NAME = 'paraswap';
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { MarketMakersResponse, PriceLevelsResponse } from '@hashflow/taker-js/dist/types/rest';
|
|
2
1
|
import BigNumber from 'bignumber.js';
|
|
3
2
|
import { Interface } from 'ethers/lib/utils';
|
|
4
3
|
import { Network, SwapSide } from '../../constants';
|
|
@@ -50,17 +49,12 @@ export declare class Hashflow extends SimpleExchange implements IDex<HashflowDat
|
|
|
50
49
|
price: BigNumber;
|
|
51
50
|
}[];
|
|
52
51
|
computeLevelsQuote(priceLevels: PriceLevel[], reqBaseAmount?: BigNumber, reqQuoteAmount?: BigNumber): BigNumber | undefined;
|
|
53
|
-
getCachedMarketMakers(): Promise<MarketMakersResponse['marketMakers'] | null>;
|
|
54
|
-
getCachedLevels(): Promise<PriceLevelsResponse['levels'] | null>;
|
|
55
52
|
getPricesVolume(srcToken: Token, destToken: Token, amounts: bigint[], side: SwapSide, blockNumber: number, limitPools?: string[]): Promise<null | ExchangePrices<HashflowData>>;
|
|
56
53
|
preProcessTransaction(optimalSwapExchange: OptimalSwapExchange<HashflowData>, srcToken: Token, destToken: Token, side: SwapSide, options: PreprocessTransactionOptions): Promise<[OptimalSwapExchange<HashflowData>, ExchangeTxInfo]>;
|
|
57
54
|
restrictMM(mm: string, errorCode: ErrorCode): Promise<void>;
|
|
58
55
|
getCalldataGasCost(poolPrices: PoolPrices<HashflowData>): number | number[];
|
|
59
56
|
getTokenFromAddress?(address: Address): Token;
|
|
60
57
|
getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: HashflowData, side: SwapSide): AdapterExchangeParam;
|
|
61
|
-
getBlackListKey(address: Address): string;
|
|
62
|
-
isBlacklisted(txOrigin: Address): Promise<boolean>;
|
|
63
|
-
setBlacklist(txOrigin: Address, ttl?: number): Promise<boolean>;
|
|
64
58
|
getSimpleParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: HashflowData, side: SwapSide): Promise<SimpleExchangeParam>;
|
|
65
59
|
getDexParam(srcToken: Address, destToken: Address, srcAmount: NumberAsString, destAmount: NumberAsString, recipient: Address, data: HashflowData, side: SwapSide): DexExchangeParam;
|
|
66
60
|
extractQuoteToken: (pair: {
|
|
@@ -74,4 +68,5 @@ export declare class Hashflow extends SimpleExchange implements IDex<HashflowDat
|
|
|
74
68
|
computeMaxLiquidity: (levels: PriceLevel[], baseTokenPriceUsd: number) => number;
|
|
75
69
|
getTopPoolsForToken(tokenAddress: Address, limit: number): Promise<PoolLiquidity[]>;
|
|
76
70
|
releaseResources(): void;
|
|
71
|
+
isBlacklisted(txOrigin: Address): Promise<boolean>;
|
|
77
72
|
}
|
|
@@ -120,7 +120,6 @@ class Hashflow extends simple_exchange_1.SimpleExchange {
|
|
|
120
120
|
},
|
|
121
121
|
headers: { Authorization: this.hashFlowAuthToken },
|
|
122
122
|
},
|
|
123
|
-
getCachedMarketMakers: this.getCachedMarketMakers.bind(this),
|
|
124
123
|
filterMarketMakers: this.getFilteredMarketMakers.bind(this),
|
|
125
124
|
pricesCacheKey: this.pricesCacheKey,
|
|
126
125
|
pricesCacheTTLSecs: constants_2.HASHFLOW_PRICES_CACHES_TTL_S,
|
|
@@ -130,9 +129,7 @@ class Hashflow extends simple_exchange_1.SimpleExchange {
|
|
|
130
129
|
});
|
|
131
130
|
}
|
|
132
131
|
async initializePricing(blockNumber) {
|
|
133
|
-
|
|
134
|
-
this.rateFetcher.start();
|
|
135
|
-
}
|
|
132
|
+
this.rateFetcher.start();
|
|
136
133
|
return;
|
|
137
134
|
}
|
|
138
135
|
getAdapters(side) {
|
|
@@ -151,7 +148,7 @@ class Hashflow extends simple_exchange_1.SimpleExchange {
|
|
|
151
148
|
if (_srcToken.address === _destToken.address) {
|
|
152
149
|
return [];
|
|
153
150
|
}
|
|
154
|
-
const levels = (await this.getCachedLevels()) || {};
|
|
151
|
+
const levels = (await this.rateFetcher.getCachedLevels()) || {};
|
|
155
152
|
const makers = Object.keys(levels);
|
|
156
153
|
return makers
|
|
157
154
|
.filter(m => {
|
|
@@ -262,20 +259,6 @@ class Hashflow extends simple_exchange_1.SimpleExchange {
|
|
|
262
259
|
}
|
|
263
260
|
return undefined;
|
|
264
261
|
}
|
|
265
|
-
async getCachedMarketMakers() {
|
|
266
|
-
const cachedMarketMakers = await this.dexHelper.cache.rawget(this.marketMakersCacheKey);
|
|
267
|
-
if (cachedMarketMakers) {
|
|
268
|
-
return JSON.parse(cachedMarketMakers);
|
|
269
|
-
}
|
|
270
|
-
return null;
|
|
271
|
-
}
|
|
272
|
-
async getCachedLevels() {
|
|
273
|
-
const cachedLevels = await this.dexHelper.cache.rawget(this.pricesCacheKey);
|
|
274
|
-
if (cachedLevels) {
|
|
275
|
-
return JSON.parse(cachedLevels);
|
|
276
|
-
}
|
|
277
|
-
return null;
|
|
278
|
-
}
|
|
279
262
|
async getPricesVolume(srcToken, destToken, amounts, side, blockNumber, limitPools) {
|
|
280
263
|
try {
|
|
281
264
|
const _srcToken = this.dexHelper.config.wrapETH(srcToken);
|
|
@@ -287,7 +270,7 @@ class Hashflow extends simple_exchange_1.SimpleExchange {
|
|
|
287
270
|
const pools = limitPools ??
|
|
288
271
|
(await this.getPoolIdentifiers(srcToken, destToken, side, blockNumber));
|
|
289
272
|
const marketMakersToUse = pools.map(p => p.split(`${prefix}_`).pop());
|
|
290
|
-
const levelsMap = (await this.getCachedLevels()) || {};
|
|
273
|
+
const levelsMap = (await this.rateFetcher.getCachedLevels()) || {};
|
|
291
274
|
Object.keys(levelsMap).forEach(mmKey => {
|
|
292
275
|
if (!marketMakersToUse.includes(mmKey)) {
|
|
293
276
|
delete levelsMap[mmKey];
|
|
@@ -466,7 +449,7 @@ class Hashflow extends simple_exchange_1.SimpleExchange {
|
|
|
466
449
|
if (e instanceof Error &&
|
|
467
450
|
e.message?.toLowerCase().includes('user is restricted')) {
|
|
468
451
|
this.logger.warn(`${this.dexKey}-${this.network}: Encountered restricted user=${options.userAddress}. Adding to local blacklist cache`);
|
|
469
|
-
await this.setBlacklist(options.userAddress);
|
|
452
|
+
await this.rateFetcher.setBlacklist(options.userAddress);
|
|
470
453
|
}
|
|
471
454
|
else {
|
|
472
455
|
if (e instanceof types_1.TooStrictSlippageCheckError) {
|
|
@@ -588,17 +571,6 @@ class Hashflow extends simple_exchange_1.SimpleExchange {
|
|
|
588
571
|
networkFee: '0',
|
|
589
572
|
};
|
|
590
573
|
}
|
|
591
|
-
getBlackListKey(address) {
|
|
592
|
-
return `blacklist_${address}`.toLowerCase();
|
|
593
|
-
}
|
|
594
|
-
async isBlacklisted(txOrigin) {
|
|
595
|
-
const result = await this.dexHelper.cache.get(this.dexKey, this.network, this.getBlackListKey(txOrigin));
|
|
596
|
-
return result === 'blacklisted';
|
|
597
|
-
}
|
|
598
|
-
async setBlacklist(txOrigin, ttl = constants_2.HASHFLOW_BLACKLIST_TTL_S) {
|
|
599
|
-
await this.dexHelper.cache.setex(this.dexKey, this.network, this.getBlackListKey(txOrigin), ttl, 'blacklisted');
|
|
600
|
-
return true;
|
|
601
|
-
}
|
|
602
574
|
async getSimpleParam(srcToken, destToken, srcAmount, destAmount, data, side) {
|
|
603
575
|
const { quoteData, signature } = data;
|
|
604
576
|
(0, ts_essentials_1.assert)(quoteData !== undefined, `${this.dexKey}-${this.network}: quoteData undefined`);
|
|
@@ -667,9 +639,9 @@ class Hashflow extends simple_exchange_1.SimpleExchange {
|
|
|
667
639
|
const _tokenAddress = this.dexHelper.config
|
|
668
640
|
.wrapETH(tokenAddress)
|
|
669
641
|
.toLowerCase();
|
|
670
|
-
const makers = (await this.getCachedMarketMakers()) || [];
|
|
642
|
+
const makers = (await this.rateFetcher.getCachedMarketMakers()) || [];
|
|
671
643
|
const filteredMakers = await this.getFilteredMarketMakers(makers);
|
|
672
|
-
const pLevels = (await this.getCachedLevels()) || {};
|
|
644
|
+
const pLevels = (await this.rateFetcher.getCachedLevels()) || {};
|
|
673
645
|
let baseToken = undefined;
|
|
674
646
|
// TODO: Improve efficiency of this part. Quite inefficient way to determine
|
|
675
647
|
// Token address and decimals. But since it is not called frequently, not worth
|
|
@@ -707,6 +679,9 @@ class Hashflow extends simple_exchange_1.SimpleExchange {
|
|
|
707
679
|
this.rateFetcher.stop();
|
|
708
680
|
}
|
|
709
681
|
}
|
|
682
|
+
async isBlacklisted(txOrigin) {
|
|
683
|
+
return this.rateFetcher.isBlacklisted(txOrigin);
|
|
684
|
+
}
|
|
710
685
|
}
|
|
711
686
|
exports.Hashflow = Hashflow;
|
|
712
687
|
//# sourceMappingURL=hashflow.js.map
|