@keplr-wallet/stores-ibc 0.13.31 → 0.13.33
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.
|
@@ -18,6 +18,10 @@ type CacheIBCDenomData = {
|
|
|
18
18
|
originChainUnknown: boolean;
|
|
19
19
|
counterpartyChainId: string | undefined;
|
|
20
20
|
counterpartyChainUnknown: boolean;
|
|
21
|
+
counterpartyChannelValidation?: {
|
|
22
|
+
status: "valid" | "mismatch";
|
|
23
|
+
timestamp: number;
|
|
24
|
+
};
|
|
21
25
|
timestamp: number;
|
|
22
26
|
};
|
|
23
27
|
type CacheTokenInfo = {
|
|
@@ -125,11 +129,38 @@ export declare class IBCCurrencyRegistrar {
|
|
|
125
129
|
fromCache: boolean;
|
|
126
130
|
notFound: boolean;
|
|
127
131
|
};
|
|
132
|
+
protected getCounterpartyChannelState(denomTrace: {
|
|
133
|
+
paths: {
|
|
134
|
+
portId: string;
|
|
135
|
+
channelId: string;
|
|
136
|
+
counterpartyChannelId?: string;
|
|
137
|
+
counterpartyPortId?: string;
|
|
138
|
+
clientChainId?: string;
|
|
139
|
+
}[];
|
|
140
|
+
}): {
|
|
141
|
+
isFetching: boolean;
|
|
142
|
+
hasUnresolvedQuery: boolean;
|
|
143
|
+
mismatch: boolean;
|
|
144
|
+
};
|
|
145
|
+
protected hasMissingCounterpartyChannel(denomTrace: {
|
|
146
|
+
paths: {
|
|
147
|
+
counterpartyChannelId?: string;
|
|
148
|
+
counterpartyPortId?: string;
|
|
149
|
+
clientChainId?: string;
|
|
150
|
+
}[];
|
|
151
|
+
}): boolean;
|
|
152
|
+
protected shouldQueryCounterpartyChannel<T extends {
|
|
153
|
+
clientChainId?: string;
|
|
154
|
+
}>(path: T): path is T & {
|
|
155
|
+
clientChainId: string;
|
|
156
|
+
};
|
|
157
|
+
protected getCacheIBCDenomDataKey(chainId: string, denomTraceHash: string): string;
|
|
128
158
|
protected getCacheIBCDenomData(chainId: string, denomTraceHash: string): {
|
|
129
159
|
res: CacheIBCDenomData | undefined;
|
|
130
160
|
staled: boolean;
|
|
131
161
|
};
|
|
132
162
|
protected setCacheIBCDenomData(chainId: string, denomTraceHash: string, data: CacheIBCDenomData): void;
|
|
163
|
+
protected setCacheIBCDenomCounterpartyChannelValidation(chainId: string, denomTraceHash: string, status: "valid" | "mismatch"): void;
|
|
133
164
|
protected removeCacheIBCDenomData(chainId: string, denomTraceHash: string): void;
|
|
134
165
|
protected getCacheTokenInfo(chainId: string, coinMinimalDenom: string): {
|
|
135
166
|
res: CacheTokenInfo | undefined;
|
|
@@ -106,6 +106,12 @@ class IBCCurrencyRegistrar {
|
|
|
106
106
|
// IBC Currency's denom should start with "ibc/"
|
|
107
107
|
return;
|
|
108
108
|
}
|
|
109
|
+
if ((0, common_1.isIgnoredIBCAsset)(chainId, denomHelper.denom)) {
|
|
110
|
+
return {
|
|
111
|
+
value: undefined,
|
|
112
|
+
done: true,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
109
115
|
if (!this.isInitialized) {
|
|
110
116
|
return {
|
|
111
117
|
value: undefined,
|
|
@@ -120,6 +126,7 @@ class IBCCurrencyRegistrar {
|
|
|
120
126
|
let denomTrace;
|
|
121
127
|
let isGlobalFetching = false;
|
|
122
128
|
let fromCache = false;
|
|
129
|
+
let denomTraceFromCache = false;
|
|
123
130
|
let { res: cached, staled } = this.getCacheIBCDenomData(chainId, hash);
|
|
124
131
|
if (cached) {
|
|
125
132
|
if (!cached.denomTrace.paths.some((path) => {
|
|
@@ -130,6 +137,7 @@ class IBCCurrencyRegistrar {
|
|
|
130
137
|
})) {
|
|
131
138
|
fromCache = true;
|
|
132
139
|
denomTrace = cached.denomTrace;
|
|
140
|
+
denomTraceFromCache = true;
|
|
133
141
|
if (cached.originChainId &&
|
|
134
142
|
this.chainStore.hasModularChain(cached.originChainId)) {
|
|
135
143
|
originChainInfo = this.chainStore.getModularChain(cached.originChainId);
|
|
@@ -140,13 +148,16 @@ class IBCCurrencyRegistrar {
|
|
|
140
148
|
}
|
|
141
149
|
// 만약 이전의 cache에서 originChainId와 counterpartyChainId를 몰랐던 상태였는데
|
|
142
150
|
// 현재는 알게된 경우에는 cache를 사용하지않고 지운다.
|
|
143
|
-
|
|
151
|
+
const hasMissingCounterpartyChannel = this.hasMissingCounterpartyChannel(cached.denomTrace);
|
|
152
|
+
if (hasMissingCounterpartyChannel ||
|
|
153
|
+
(originChainInfo && cached.originChainUnknown) ||
|
|
144
154
|
(counterpartyChainInfo && cached.counterpartyChainUnknown)) {
|
|
145
155
|
cached = undefined;
|
|
146
156
|
fromCache = false;
|
|
147
157
|
staled = false;
|
|
148
158
|
this.removeCacheIBCDenomData(chainId, hash);
|
|
149
159
|
denomTrace = undefined;
|
|
160
|
+
denomTraceFromCache = false;
|
|
150
161
|
originChainInfo = undefined;
|
|
151
162
|
counterpartyChainInfo = undefined;
|
|
152
163
|
}
|
|
@@ -185,6 +196,7 @@ class IBCCurrencyRegistrar {
|
|
|
185
196
|
let isFetching = false;
|
|
186
197
|
const queryDenomTrace = queries.cosmos.queryIBCDenomTrace.getDenomTrace(hash);
|
|
187
198
|
denomTrace = queryDenomTrace.denomTrace;
|
|
199
|
+
denomTraceFromCache = false;
|
|
188
200
|
if (queryDenomTrace.isFetching) {
|
|
189
201
|
isFetching = true;
|
|
190
202
|
isGlobalFetching = true;
|
|
@@ -295,6 +307,7 @@ class IBCCurrencyRegistrar {
|
|
|
295
307
|
if (isGlobalFetching && staled && cached) {
|
|
296
308
|
if (!denomTrace) {
|
|
297
309
|
denomTrace = cached.denomTrace;
|
|
310
|
+
denomTraceFromCache = true;
|
|
298
311
|
}
|
|
299
312
|
if (!originChainInfo &&
|
|
300
313
|
cached.originChainId &&
|
|
@@ -308,6 +321,45 @@ class IBCCurrencyRegistrar {
|
|
|
308
321
|
}
|
|
309
322
|
}
|
|
310
323
|
}
|
|
324
|
+
if (denomTrace && (0, common_1.isIgnoredIBCTrace)(chainId, denomTrace)) {
|
|
325
|
+
return {
|
|
326
|
+
value: undefined,
|
|
327
|
+
done: true,
|
|
328
|
+
};
|
|
329
|
+
}
|
|
330
|
+
if (denomTrace) {
|
|
331
|
+
const cachedCounterpartyChannelValidation = denomTraceFromCache
|
|
332
|
+
? cached === null || cached === void 0 ? void 0 : cached.counterpartyChannelValidation
|
|
333
|
+
: undefined;
|
|
334
|
+
if ((cachedCounterpartyChannelValidation === null || cachedCounterpartyChannelValidation === void 0 ? void 0 : cachedCounterpartyChannelValidation.status) === "mismatch") {
|
|
335
|
+
return {
|
|
336
|
+
value: undefined,
|
|
337
|
+
done: true,
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
if ((cachedCounterpartyChannelValidation === null || cachedCounterpartyChannelValidation === void 0 ? void 0 : cachedCounterpartyChannelValidation.status) !== "valid") {
|
|
341
|
+
const counterpartyChannelState = this.getCounterpartyChannelState(denomTrace);
|
|
342
|
+
if (counterpartyChannelState.mismatch) {
|
|
343
|
+
this.setCacheIBCDenomCounterpartyChannelValidation(chainId, hash, "mismatch");
|
|
344
|
+
return {
|
|
345
|
+
value: undefined,
|
|
346
|
+
done: true,
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
if (counterpartyChannelState.hasUnresolvedQuery) {
|
|
350
|
+
return {
|
|
351
|
+
value: undefined,
|
|
352
|
+
done: false,
|
|
353
|
+
};
|
|
354
|
+
}
|
|
355
|
+
if (counterpartyChannelState.isFetching) {
|
|
356
|
+
isGlobalFetching = true;
|
|
357
|
+
}
|
|
358
|
+
else {
|
|
359
|
+
this.setCacheIBCDenomCounterpartyChannelValidation(chainId, hash, "valid");
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
311
363
|
if (originChainInfo && denomTrace) {
|
|
312
364
|
// 이 경우 ethereum 계열이기 때문에 다르게 처리해야한다.
|
|
313
365
|
if (originChainInfo.type === "evm") {
|
|
@@ -777,8 +829,62 @@ class IBCCurrencyRegistrar {
|
|
|
777
829
|
};
|
|
778
830
|
}
|
|
779
831
|
}
|
|
832
|
+
getCounterpartyChannelState(denomTrace) {
|
|
833
|
+
let isFetching = false;
|
|
834
|
+
let hasUnresolvedQuery = false;
|
|
835
|
+
for (const path of denomTrace.paths) {
|
|
836
|
+
if (!this.shouldQueryCounterpartyChannel(path)) {
|
|
837
|
+
continue;
|
|
838
|
+
}
|
|
839
|
+
if (!path.counterpartyPortId || !path.counterpartyChannelId) {
|
|
840
|
+
hasUnresolvedQuery = true;
|
|
841
|
+
continue;
|
|
842
|
+
}
|
|
843
|
+
const queryCounterpartyChannel = this.queriesStore
|
|
844
|
+
.get(path.clientChainId)
|
|
845
|
+
.cosmos.queryIBCChannel.getChannel(path.counterpartyPortId, path.counterpartyChannelId);
|
|
846
|
+
if (queryCounterpartyChannel.isFetching) {
|
|
847
|
+
isFetching = true;
|
|
848
|
+
}
|
|
849
|
+
if (!queryCounterpartyChannel.response) {
|
|
850
|
+
hasUnresolvedQuery = true;
|
|
851
|
+
continue;
|
|
852
|
+
}
|
|
853
|
+
const counterparty = queryCounterpartyChannel.response.data.channel.counterparty;
|
|
854
|
+
if (counterparty.port_id !== path.portId ||
|
|
855
|
+
counterparty.channel_id !== path.channelId) {
|
|
856
|
+
return {
|
|
857
|
+
isFetching,
|
|
858
|
+
hasUnresolvedQuery,
|
|
859
|
+
mismatch: true,
|
|
860
|
+
};
|
|
861
|
+
}
|
|
862
|
+
}
|
|
863
|
+
return {
|
|
864
|
+
isFetching,
|
|
865
|
+
hasUnresolvedQuery,
|
|
866
|
+
mismatch: false,
|
|
867
|
+
};
|
|
868
|
+
}
|
|
869
|
+
hasMissingCounterpartyChannel(denomTrace) {
|
|
870
|
+
return denomTrace.paths.some((path) => {
|
|
871
|
+
return (this.shouldQueryCounterpartyChannel(path) &&
|
|
872
|
+
(!path.counterpartyPortId || !path.counterpartyChannelId));
|
|
873
|
+
});
|
|
874
|
+
}
|
|
875
|
+
shouldQueryCounterpartyChannel(path) {
|
|
876
|
+
if (!path.clientChainId ||
|
|
877
|
+
!this.chainStore.hasModularChain(path.clientChainId)) {
|
|
878
|
+
return false;
|
|
879
|
+
}
|
|
880
|
+
const clientChainInfo = this.chainStore.getModularChain(path.clientChainId);
|
|
881
|
+
return (clientChainInfo.type === "cosmos" || clientChainInfo.type === "ethermint");
|
|
882
|
+
}
|
|
883
|
+
getCacheIBCDenomDataKey(chainId, denomTraceHash) {
|
|
884
|
+
return `${cosmos_1.ChainIdHelper.parse(chainId).identifier}/${denomTraceHash}`;
|
|
885
|
+
}
|
|
780
886
|
getCacheIBCDenomData(chainId, denomTraceHash) {
|
|
781
|
-
const key =
|
|
887
|
+
const key = this.getCacheIBCDenomDataKey(chainId, denomTraceHash);
|
|
782
888
|
const res = this.cacheDenomTracePaths.get(key) || this.staledDenomTracePaths.get(key);
|
|
783
889
|
let staled = false;
|
|
784
890
|
if (res) {
|
|
@@ -798,15 +904,26 @@ class IBCCurrencyRegistrar {
|
|
|
798
904
|
};
|
|
799
905
|
}
|
|
800
906
|
setCacheIBCDenomData(chainId, denomTraceHash, data) {
|
|
801
|
-
const key =
|
|
907
|
+
const key = this.getCacheIBCDenomDataKey(chainId, denomTraceHash);
|
|
802
908
|
this.cacheDenomTracePaths.set(key, data);
|
|
803
909
|
this.debouncedSetCacheDenomTracePathsToDB();
|
|
804
910
|
if (this.staledDenomTracePaths.has(key)) {
|
|
805
911
|
this.staledDenomTracePaths.set(key, data);
|
|
806
912
|
}
|
|
807
913
|
}
|
|
914
|
+
setCacheIBCDenomCounterpartyChannelValidation(chainId, denomTraceHash, status) {
|
|
915
|
+
const key = this.getCacheIBCDenomDataKey(chainId, denomTraceHash);
|
|
916
|
+
const cached = this.cacheDenomTracePaths.get(key) || this.staledDenomTracePaths.get(key);
|
|
917
|
+
if (!cached) {
|
|
918
|
+
return;
|
|
919
|
+
}
|
|
920
|
+
this.setCacheIBCDenomData(chainId, denomTraceHash, Object.assign(Object.assign({}, cached), { counterpartyChannelValidation: {
|
|
921
|
+
status,
|
|
922
|
+
timestamp: Date.now(),
|
|
923
|
+
} }));
|
|
924
|
+
}
|
|
808
925
|
removeCacheIBCDenomData(chainId, denomTraceHash) {
|
|
809
|
-
const key =
|
|
926
|
+
const key = this.getCacheIBCDenomDataKey(chainId, denomTraceHash);
|
|
810
927
|
this.cacheDenomTracePaths.delete(key);
|
|
811
928
|
this.debouncedSetCacheDenomTracePathsToDB();
|
|
812
929
|
this.staledDenomTracePaths.delete(key);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"currency-registrar.js","sourceRoot":"","sources":["../src/currency-registrar.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"currency-registrar.js","sourceRoot":"","sources":["../src/currency-registrar.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@keplr-wallet/stores-ibc",
|
|
3
|
-
"version": "0.13.
|
|
3
|
+
"version": "0.13.33",
|
|
4
4
|
"main": "build/index.js",
|
|
5
5
|
"author": "chainapsis",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -21,11 +21,11 @@
|
|
|
21
21
|
"typecheck": "npx tsc -p tsconfig.check.json"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@keplr-wallet/common": "0.13.
|
|
25
|
-
"@keplr-wallet/cosmos": "0.13.
|
|
26
|
-
"@keplr-wallet/stores": "0.13.
|
|
27
|
-
"@keplr-wallet/stores-eth": "0.13.
|
|
28
|
-
"@keplr-wallet/types": "0.13.
|
|
24
|
+
"@keplr-wallet/common": "0.13.33",
|
|
25
|
+
"@keplr-wallet/cosmos": "0.13.33",
|
|
26
|
+
"@keplr-wallet/stores": "0.13.33",
|
|
27
|
+
"@keplr-wallet/stores-eth": "0.13.33",
|
|
28
|
+
"@keplr-wallet/types": "0.13.33",
|
|
29
29
|
"lodash.debounce": "^4.0.8"
|
|
30
30
|
},
|
|
31
31
|
"peerDependencies": {
|
|
@@ -35,5 +35,5 @@
|
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@types/lodash.debounce": "^4"
|
|
37
37
|
},
|
|
38
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "14cdeb29fdea7b1ef5eff3c17f37e9406b224336"
|
|
39
39
|
}
|
|
@@ -8,7 +8,12 @@ import {
|
|
|
8
8
|
IQueriesStore,
|
|
9
9
|
SecretQueries,
|
|
10
10
|
} from "@keplr-wallet/stores";
|
|
11
|
-
import {
|
|
11
|
+
import {
|
|
12
|
+
DenomHelper,
|
|
13
|
+
isIgnoredIBCAsset,
|
|
14
|
+
isIgnoredIBCTrace,
|
|
15
|
+
KVStore,
|
|
16
|
+
} from "@keplr-wallet/common";
|
|
12
17
|
import { ChainIdHelper } from "@keplr-wallet/cosmos";
|
|
13
18
|
import { EthereumQueries } from "@keplr-wallet/stores-eth";
|
|
14
19
|
import debounce from "lodash.debounce";
|
|
@@ -29,6 +34,10 @@ type CacheIBCDenomData = {
|
|
|
29
34
|
originChainUnknown: boolean;
|
|
30
35
|
counterpartyChainId: string | undefined;
|
|
31
36
|
counterpartyChainUnknown: boolean;
|
|
37
|
+
counterpartyChannelValidation?: {
|
|
38
|
+
status: "valid" | "mismatch";
|
|
39
|
+
timestamp: number;
|
|
40
|
+
};
|
|
32
41
|
timestamp: number;
|
|
33
42
|
};
|
|
34
43
|
|
|
@@ -204,6 +213,13 @@ export class IBCCurrencyRegistrar {
|
|
|
204
213
|
return;
|
|
205
214
|
}
|
|
206
215
|
|
|
216
|
+
if (isIgnoredIBCAsset(chainId, denomHelper.denom)) {
|
|
217
|
+
return {
|
|
218
|
+
value: undefined,
|
|
219
|
+
done: true,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
|
|
207
223
|
if (!this.isInitialized) {
|
|
208
224
|
return {
|
|
209
225
|
value: undefined,
|
|
@@ -234,6 +250,7 @@ export class IBCCurrencyRegistrar {
|
|
|
234
250
|
|
|
235
251
|
let isGlobalFetching = false;
|
|
236
252
|
let fromCache = false;
|
|
253
|
+
let denomTraceFromCache = false;
|
|
237
254
|
let { res: cached, staled } = this.getCacheIBCDenomData(chainId, hash);
|
|
238
255
|
if (cached) {
|
|
239
256
|
if (
|
|
@@ -246,6 +263,7 @@ export class IBCCurrencyRegistrar {
|
|
|
246
263
|
) {
|
|
247
264
|
fromCache = true;
|
|
248
265
|
denomTrace = cached.denomTrace;
|
|
266
|
+
denomTraceFromCache = true;
|
|
249
267
|
if (
|
|
250
268
|
cached.originChainId &&
|
|
251
269
|
this.chainStore.hasModularChain(cached.originChainId)
|
|
@@ -265,7 +283,11 @@ export class IBCCurrencyRegistrar {
|
|
|
265
283
|
|
|
266
284
|
// 만약 이전의 cache에서 originChainId와 counterpartyChainId를 몰랐던 상태였는데
|
|
267
285
|
// 현재는 알게된 경우에는 cache를 사용하지않고 지운다.
|
|
286
|
+
const hasMissingCounterpartyChannel =
|
|
287
|
+
this.hasMissingCounterpartyChannel(cached.denomTrace);
|
|
288
|
+
|
|
268
289
|
if (
|
|
290
|
+
hasMissingCounterpartyChannel ||
|
|
269
291
|
(originChainInfo && cached.originChainUnknown) ||
|
|
270
292
|
(counterpartyChainInfo && cached.counterpartyChainUnknown)
|
|
271
293
|
) {
|
|
@@ -275,6 +297,7 @@ export class IBCCurrencyRegistrar {
|
|
|
275
297
|
this.removeCacheIBCDenomData(chainId, hash);
|
|
276
298
|
|
|
277
299
|
denomTrace = undefined;
|
|
300
|
+
denomTraceFromCache = false;
|
|
278
301
|
originChainInfo = undefined;
|
|
279
302
|
counterpartyChainInfo = undefined;
|
|
280
303
|
}
|
|
@@ -315,6 +338,7 @@ export class IBCCurrencyRegistrar {
|
|
|
315
338
|
const queryDenomTrace =
|
|
316
339
|
queries.cosmos.queryIBCDenomTrace.getDenomTrace(hash);
|
|
317
340
|
denomTrace = queryDenomTrace.denomTrace;
|
|
341
|
+
denomTraceFromCache = false;
|
|
318
342
|
|
|
319
343
|
if (queryDenomTrace.isFetching) {
|
|
320
344
|
isFetching = true;
|
|
@@ -447,6 +471,7 @@ export class IBCCurrencyRegistrar {
|
|
|
447
471
|
if (isGlobalFetching && staled && cached) {
|
|
448
472
|
if (!denomTrace) {
|
|
449
473
|
denomTrace = cached.denomTrace;
|
|
474
|
+
denomTraceFromCache = true;
|
|
450
475
|
}
|
|
451
476
|
if (
|
|
452
477
|
!originChainInfo &&
|
|
@@ -469,6 +494,61 @@ export class IBCCurrencyRegistrar {
|
|
|
469
494
|
}
|
|
470
495
|
}
|
|
471
496
|
|
|
497
|
+
if (denomTrace && isIgnoredIBCTrace(chainId, denomTrace)) {
|
|
498
|
+
return {
|
|
499
|
+
value: undefined,
|
|
500
|
+
done: true,
|
|
501
|
+
};
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
if (denomTrace) {
|
|
505
|
+
const cachedCounterpartyChannelValidation = denomTraceFromCache
|
|
506
|
+
? cached?.counterpartyChannelValidation
|
|
507
|
+
: undefined;
|
|
508
|
+
|
|
509
|
+
if (cachedCounterpartyChannelValidation?.status === "mismatch") {
|
|
510
|
+
return {
|
|
511
|
+
value: undefined,
|
|
512
|
+
done: true,
|
|
513
|
+
};
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
if (cachedCounterpartyChannelValidation?.status !== "valid") {
|
|
517
|
+
const counterpartyChannelState =
|
|
518
|
+
this.getCounterpartyChannelState(denomTrace);
|
|
519
|
+
|
|
520
|
+
if (counterpartyChannelState.mismatch) {
|
|
521
|
+
this.setCacheIBCDenomCounterpartyChannelValidation(
|
|
522
|
+
chainId,
|
|
523
|
+
hash,
|
|
524
|
+
"mismatch"
|
|
525
|
+
);
|
|
526
|
+
|
|
527
|
+
return {
|
|
528
|
+
value: undefined,
|
|
529
|
+
done: true,
|
|
530
|
+
};
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
if (counterpartyChannelState.hasUnresolvedQuery) {
|
|
534
|
+
return {
|
|
535
|
+
value: undefined,
|
|
536
|
+
done: false,
|
|
537
|
+
};
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
if (counterpartyChannelState.isFetching) {
|
|
541
|
+
isGlobalFetching = true;
|
|
542
|
+
} else {
|
|
543
|
+
this.setCacheIBCDenomCounterpartyChannelValidation(
|
|
544
|
+
chainId,
|
|
545
|
+
hash,
|
|
546
|
+
"valid"
|
|
547
|
+
);
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
|
|
472
552
|
if (originChainInfo && denomTrace) {
|
|
473
553
|
// 이 경우 ethereum 계열이기 때문에 다르게 처리해야한다.
|
|
474
554
|
if (originChainInfo.type === "evm") {
|
|
@@ -1087,11 +1167,114 @@ export class IBCCurrencyRegistrar {
|
|
|
1087
1167
|
}
|
|
1088
1168
|
}
|
|
1089
1169
|
|
|
1170
|
+
protected getCounterpartyChannelState(denomTrace: {
|
|
1171
|
+
paths: {
|
|
1172
|
+
portId: string;
|
|
1173
|
+
channelId: string;
|
|
1174
|
+
|
|
1175
|
+
counterpartyChannelId?: string;
|
|
1176
|
+
counterpartyPortId?: string;
|
|
1177
|
+
clientChainId?: string;
|
|
1178
|
+
}[];
|
|
1179
|
+
}): {
|
|
1180
|
+
isFetching: boolean;
|
|
1181
|
+
hasUnresolvedQuery: boolean;
|
|
1182
|
+
mismatch: boolean;
|
|
1183
|
+
} {
|
|
1184
|
+
let isFetching = false;
|
|
1185
|
+
let hasUnresolvedQuery = false;
|
|
1186
|
+
|
|
1187
|
+
for (const path of denomTrace.paths) {
|
|
1188
|
+
if (!this.shouldQueryCounterpartyChannel(path)) {
|
|
1189
|
+
continue;
|
|
1190
|
+
}
|
|
1191
|
+
|
|
1192
|
+
if (!path.counterpartyPortId || !path.counterpartyChannelId) {
|
|
1193
|
+
hasUnresolvedQuery = true;
|
|
1194
|
+
continue;
|
|
1195
|
+
}
|
|
1196
|
+
|
|
1197
|
+
const queryCounterpartyChannel = this.queriesStore
|
|
1198
|
+
.get(path.clientChainId)
|
|
1199
|
+
.cosmos.queryIBCChannel.getChannel(
|
|
1200
|
+
path.counterpartyPortId,
|
|
1201
|
+
path.counterpartyChannelId
|
|
1202
|
+
);
|
|
1203
|
+
|
|
1204
|
+
if (queryCounterpartyChannel.isFetching) {
|
|
1205
|
+
isFetching = true;
|
|
1206
|
+
}
|
|
1207
|
+
|
|
1208
|
+
if (!queryCounterpartyChannel.response) {
|
|
1209
|
+
hasUnresolvedQuery = true;
|
|
1210
|
+
continue;
|
|
1211
|
+
}
|
|
1212
|
+
|
|
1213
|
+
const counterparty =
|
|
1214
|
+
queryCounterpartyChannel.response.data.channel.counterparty;
|
|
1215
|
+
|
|
1216
|
+
if (
|
|
1217
|
+
counterparty.port_id !== path.portId ||
|
|
1218
|
+
counterparty.channel_id !== path.channelId
|
|
1219
|
+
) {
|
|
1220
|
+
return {
|
|
1221
|
+
isFetching,
|
|
1222
|
+
hasUnresolvedQuery,
|
|
1223
|
+
mismatch: true,
|
|
1224
|
+
};
|
|
1225
|
+
}
|
|
1226
|
+
}
|
|
1227
|
+
|
|
1228
|
+
return {
|
|
1229
|
+
isFetching,
|
|
1230
|
+
hasUnresolvedQuery,
|
|
1231
|
+
mismatch: false,
|
|
1232
|
+
};
|
|
1233
|
+
}
|
|
1234
|
+
|
|
1235
|
+
protected hasMissingCounterpartyChannel(denomTrace: {
|
|
1236
|
+
paths: {
|
|
1237
|
+
counterpartyChannelId?: string;
|
|
1238
|
+
counterpartyPortId?: string;
|
|
1239
|
+
clientChainId?: string;
|
|
1240
|
+
}[];
|
|
1241
|
+
}): boolean {
|
|
1242
|
+
return denomTrace.paths.some((path) => {
|
|
1243
|
+
return (
|
|
1244
|
+
this.shouldQueryCounterpartyChannel(path) &&
|
|
1245
|
+
(!path.counterpartyPortId || !path.counterpartyChannelId)
|
|
1246
|
+
);
|
|
1247
|
+
});
|
|
1248
|
+
}
|
|
1249
|
+
|
|
1250
|
+
protected shouldQueryCounterpartyChannel<
|
|
1251
|
+
T extends { clientChainId?: string }
|
|
1252
|
+
>(path: T): path is T & { clientChainId: string } {
|
|
1253
|
+
if (
|
|
1254
|
+
!path.clientChainId ||
|
|
1255
|
+
!this.chainStore.hasModularChain(path.clientChainId)
|
|
1256
|
+
) {
|
|
1257
|
+
return false;
|
|
1258
|
+
}
|
|
1259
|
+
|
|
1260
|
+
const clientChainInfo = this.chainStore.getModularChain(path.clientChainId);
|
|
1261
|
+
return (
|
|
1262
|
+
clientChainInfo.type === "cosmos" || clientChainInfo.type === "ethermint"
|
|
1263
|
+
);
|
|
1264
|
+
}
|
|
1265
|
+
|
|
1266
|
+
protected getCacheIBCDenomDataKey(
|
|
1267
|
+
chainId: string,
|
|
1268
|
+
denomTraceHash: string
|
|
1269
|
+
): string {
|
|
1270
|
+
return `${ChainIdHelper.parse(chainId).identifier}/${denomTraceHash}`;
|
|
1271
|
+
}
|
|
1272
|
+
|
|
1090
1273
|
protected getCacheIBCDenomData(
|
|
1091
1274
|
chainId: string,
|
|
1092
1275
|
denomTraceHash: string
|
|
1093
1276
|
): { res: CacheIBCDenomData | undefined; staled: boolean } {
|
|
1094
|
-
const key =
|
|
1277
|
+
const key = this.getCacheIBCDenomDataKey(chainId, denomTraceHash);
|
|
1095
1278
|
|
|
1096
1279
|
const res =
|
|
1097
1280
|
this.cacheDenomTracePaths.get(key) || this.staledDenomTracePaths.get(key);
|
|
@@ -1123,7 +1306,7 @@ export class IBCCurrencyRegistrar {
|
|
|
1123
1306
|
denomTraceHash: string,
|
|
1124
1307
|
data: CacheIBCDenomData
|
|
1125
1308
|
) {
|
|
1126
|
-
const key =
|
|
1309
|
+
const key = this.getCacheIBCDenomDataKey(chainId, denomTraceHash);
|
|
1127
1310
|
this.cacheDenomTracePaths.set(key, data);
|
|
1128
1311
|
|
|
1129
1312
|
this.debouncedSetCacheDenomTracePathsToDB();
|
|
@@ -1133,8 +1316,29 @@ export class IBCCurrencyRegistrar {
|
|
|
1133
1316
|
}
|
|
1134
1317
|
}
|
|
1135
1318
|
|
|
1319
|
+
protected setCacheIBCDenomCounterpartyChannelValidation(
|
|
1320
|
+
chainId: string,
|
|
1321
|
+
denomTraceHash: string,
|
|
1322
|
+
status: "valid" | "mismatch"
|
|
1323
|
+
) {
|
|
1324
|
+
const key = this.getCacheIBCDenomDataKey(chainId, denomTraceHash);
|
|
1325
|
+
const cached =
|
|
1326
|
+
this.cacheDenomTracePaths.get(key) || this.staledDenomTracePaths.get(key);
|
|
1327
|
+
if (!cached) {
|
|
1328
|
+
return;
|
|
1329
|
+
}
|
|
1330
|
+
|
|
1331
|
+
this.setCacheIBCDenomData(chainId, denomTraceHash, {
|
|
1332
|
+
...cached,
|
|
1333
|
+
counterpartyChannelValidation: {
|
|
1334
|
+
status,
|
|
1335
|
+
timestamp: Date.now(),
|
|
1336
|
+
},
|
|
1337
|
+
});
|
|
1338
|
+
}
|
|
1339
|
+
|
|
1136
1340
|
protected removeCacheIBCDenomData(chainId: string, denomTraceHash: string) {
|
|
1137
|
-
const key =
|
|
1341
|
+
const key = this.getCacheIBCDenomDataKey(chainId, denomTraceHash);
|
|
1138
1342
|
this.cacheDenomTracePaths.delete(key);
|
|
1139
1343
|
|
|
1140
1344
|
this.debouncedSetCacheDenomTracePathsToDB();
|