@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
- if ((originChainInfo && cached.originChainUnknown) ||
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 = `${cosmos_1.ChainIdHelper.parse(chainId).identifier}/${denomTraceHash}`;
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 = `${cosmos_1.ChainIdHelper.parse(chainId).identifier}/${denomTraceHash}`;
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 = `${cosmos_1.ChainIdHelper.parse(chainId).identifier}/${denomTraceHash}`;
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.31",
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.31",
25
- "@keplr-wallet/cosmos": "0.13.31",
26
- "@keplr-wallet/stores": "0.13.31",
27
- "@keplr-wallet/stores-eth": "0.13.31",
28
- "@keplr-wallet/types": "0.13.31",
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": "ef186caaefe162cbd93d072d609d8708ed59ae28"
38
+ "gitHead": "14cdeb29fdea7b1ef5eff3c17f37e9406b224336"
39
39
  }
@@ -8,7 +8,12 @@ import {
8
8
  IQueriesStore,
9
9
  SecretQueries,
10
10
  } from "@keplr-wallet/stores";
11
- import { DenomHelper, KVStore } from "@keplr-wallet/common";
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 = `${ChainIdHelper.parse(chainId).identifier}/${denomTraceHash}`;
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 = `${ChainIdHelper.parse(chainId).identifier}/${denomTraceHash}`;
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 = `${ChainIdHelper.parse(chainId).identifier}/${denomTraceHash}`;
1341
+ const key = this.getCacheIBCDenomDataKey(chainId, denomTraceHash);
1138
1342
  this.cacheDenomTracePaths.delete(key);
1139
1343
 
1140
1344
  this.debouncedSetCacheDenomTracePathsToDB();