@keplr-wallet/background 0.12.53 → 0.12.54-rc.0

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.
@@ -73,6 +73,8 @@ export declare class RecentSendHistoryService {
73
73
  denom: string;
74
74
  }[];
75
75
  protected getIBCAcknowledgementPacketIndexFromTx(tx: any, sourcePortId: string, sourceChannelId: string, sequence: string): number;
76
+ protected getIBCTimeoutPacketIndexFromTx(tx: any, sourcePortId: string, sourceChannelId: string, sequence: string): number;
77
+ protected getLastIBCTimeoutPacketBeforeIndexFromTx(tx: any, index: number): number;
76
78
  protected getIBCRecvPacketIndexFromTx(tx: any, sourcePortId: string, sourceChannelId: string, sequence: string): number;
77
79
  protected getIBCPacketSequenceFromTx(tx: any, sourcePortId: string, sourceChannelId: string, startingEventIndex?: number): string;
78
80
  protected readonly onChainRemoved: (chainInfo: ChainInfo) => void;
@@ -52,8 +52,12 @@ class RecentSendHistoryService {
52
52
  }
53
53
  return history.ibcHistory.find((h) => h.error != null) != null;
54
54
  })();
55
- if (needRewind &&
56
- !history.ibcHistory.find((h) => h.rewoundButNextRewindingBlocked)) {
55
+ if (needRewind) {
56
+ if (history.ibcHistory.find((h) => h.rewoundButNextRewindingBlocked)) {
57
+ onFulfill();
58
+ return;
59
+ }
60
+ const isTimeoutPacket = history.packetTimeout || false;
57
61
  const lastRewoundChannelIndex = history.ibcHistory.findIndex((h) => {
58
62
  if (h.rewound) {
59
63
  return true;
@@ -88,11 +92,17 @@ class RecentSendHistoryService {
88
92
  txTracer.addEventListener("close", onClose);
89
93
  txTracer.addEventListener("error", onError);
90
94
  txTracer
91
- .traceTx({
92
- // "acknowledge_packet.packet_src_port": targetChannel.portId,
93
- "acknowledge_packet.packet_src_channel": targetChannel.channelId,
94
- "acknowledge_packet.packet_sequence": targetChannel.sequence,
95
- })
95
+ .traceTx(isTimeoutPacket
96
+ ? {
97
+ // "timeout_packet.packet_src_port": targetChannel.portId,
98
+ "timeout_packet.packet_src_channel": targetChannel.channelId,
99
+ "timeout_packet.packet_sequence": targetChannel.sequence,
100
+ }
101
+ : {
102
+ // "acknowledge_packet.packet_src_port": targetChannel.portId,
103
+ "acknowledge_packet.packet_src_channel": targetChannel.channelId,
104
+ "acknowledge_packet.packet_sequence": targetChannel.sequence,
105
+ })
96
106
  .then((res) => {
97
107
  txTracer.close();
98
108
  if (!res) {
@@ -106,9 +116,20 @@ class RecentSendHistoryService {
106
116
  if (txs && Array.isArray(txs)) {
107
117
  for (const tx of txs) {
108
118
  if (targetChannel.sequence && "swapReceiver" in history) {
109
- const index = this.getIBCAcknowledgementPacketIndexFromTx(tx, targetChannel.portId, targetChannel.channelId, targetChannel.sequence);
119
+ const index = isTimeoutPacket
120
+ ? this.getIBCTimeoutPacketIndexFromTx(tx, targetChannel.portId, targetChannel.channelId, targetChannel.sequence)
121
+ : this.getIBCAcknowledgementPacketIndexFromTx(tx, targetChannel.portId, targetChannel.channelId, targetChannel.sequence);
110
122
  if (index >= 0) {
111
- const refunded = this.getIBCSwapResAmountFromTx(tx, history.swapReceiver[history.swapChannelIndex + 1], index);
123
+ // 빡치게 timeout packet은 refund 로직이 실행되고 나서 "timeout_packet" event가 발생한다.
124
+ const refunded = isTimeoutPacket
125
+ ? this.getIBCSwapResAmountFromTx(tx, history.swapReceiver[history.swapChannelIndex + 1], (() => {
126
+ const i = this.getLastIBCTimeoutPacketBeforeIndexFromTx(tx, index);
127
+ if (i < 0) {
128
+ return 0;
129
+ }
130
+ return i;
131
+ })(), index)
132
+ : this.getIBCSwapResAmountFromTx(tx, history.swapReceiver[history.swapChannelIndex + 1], index);
112
133
  history.swapRefundInfo = {
113
134
  chainId: prevChainInfo.chainId,
114
135
  amount: refunded,
@@ -174,6 +195,46 @@ class RecentSendHistoryService {
174
195
  ? history.ibcHistory[targetChannelIndex + 1]
175
196
  : undefined;
176
197
  if (targetChannel && targetChannel.sequence) {
198
+ const closables = [];
199
+ let _onFulfillOnce = false;
200
+ const onFulfillOnce = () => {
201
+ if (!_onFulfillOnce) {
202
+ _onFulfillOnce = true;
203
+ closables.forEach((closable) => {
204
+ if (closable.readyState === cosmos_1.WsReadyState.OPEN ||
205
+ closable.readyState === cosmos_1.WsReadyState.CONNECTING) {
206
+ closable.close();
207
+ }
208
+ });
209
+ onFulfill();
210
+ }
211
+ };
212
+ let _onCloseOnce = false;
213
+ const onCloseOnce = () => {
214
+ if (!_onCloseOnce) {
215
+ _onCloseOnce = true;
216
+ closables.forEach((closable) => {
217
+ if (closable.readyState === cosmos_1.WsReadyState.OPEN ||
218
+ closable.readyState === cosmos_1.WsReadyState.CONNECTING) {
219
+ closable.close();
220
+ }
221
+ });
222
+ onClose();
223
+ }
224
+ };
225
+ let _onErrorOnce = false;
226
+ const onErrorOnce = () => {
227
+ if (!_onErrorOnce) {
228
+ _onErrorOnce = true;
229
+ closables.forEach((closable) => {
230
+ if (closable.readyState === cosmos_1.WsReadyState.OPEN ||
231
+ closable.readyState === cosmos_1.WsReadyState.CONNECTING) {
232
+ closable.close();
233
+ }
234
+ });
235
+ onError();
236
+ }
237
+ };
177
238
  const chainInfo = this.chainsService.getChainInfo(targetChannel.counterpartyChainId);
178
239
  if (chainInfo) {
179
240
  const queryEvents = {
@@ -182,8 +243,9 @@ class RecentSendHistoryService {
182
243
  "recv_packet.packet_sequence": targetChannel.sequence,
183
244
  };
184
245
  const txTracer = new cosmos_1.TendermintTxTracer(chainInfo.rpc, "/websocket");
185
- txTracer.addEventListener("close", onClose);
186
- txTracer.addEventListener("error", onError);
246
+ closables.push(txTracer);
247
+ txTracer.addEventListener("close", onCloseOnce);
248
+ txTracer.addEventListener("error", onErrorOnce);
187
249
  txTracer.traceTx(queryEvents).then((res) => {
188
250
  txTracer.close();
189
251
  if (!res) {
@@ -206,7 +268,7 @@ class RecentSendHistoryService {
206
268
  // XXX: {key: 'packet_ack', value: '{"error":"ABCI code: 6: error handling packet: see events for details"}'}
207
269
  // 오류가 있을 경우 이딴식으로 오류가 나오기 때문에 뭐 유저에게 보여줄 방법이 없다...
208
270
  targetChannel.error = "Packet processing failed";
209
- onFulfill();
271
+ onFulfillOnce();
210
272
  this.trackIBCPacketForwardingRecursive(id);
211
273
  break;
212
274
  }
@@ -227,7 +289,7 @@ class RecentSendHistoryService {
227
289
  }
228
290
  if (nextChannel) {
229
291
  nextChannel.sequence = this.getIBCPacketSequenceFromTx(tx, nextChannel.portId, nextChannel.channelId, index);
230
- onFulfill();
292
+ onFulfillOnce();
231
293
  this.trackIBCPacketForwardingRecursive(id);
232
294
  break;
233
295
  }
@@ -288,7 +350,7 @@ class RecentSendHistoryService {
288
350
  }
289
351
  }
290
352
  }
291
- onFulfill();
353
+ onFulfillOnce();
292
354
  break;
293
355
  }
294
356
  }
@@ -301,6 +363,47 @@ class RecentSendHistoryService {
301
363
  }
302
364
  });
303
365
  }
366
+ let prevChainId = "";
367
+ if (targetChannelIndex > 0) {
368
+ prevChainId =
369
+ history.ibcHistory[targetChannelIndex - 1].counterpartyChainId;
370
+ }
371
+ else {
372
+ prevChainId = history.chainId;
373
+ }
374
+ if (prevChainId) {
375
+ const prevChainInfo = this.chainsService.getChainInfo(prevChainId);
376
+ if (prevChainInfo) {
377
+ const queryEvents = {
378
+ // acknowledge_packet과는 다르게 timeout_packet은 이전의 체인의 이벤트로부터만 알 수 있다.
379
+ // 방법이 없기 때문에 여기서 이전의 체인으로부터 subscribe를 해서 이벤트를 받아야 한다.
380
+ // 하지만 이 경우 ibc error tracking 로직에서 이것과 똑같은 subscription을 한번 더 하게 된다.
381
+ // 이미 로직이 많이 복잡하기 때문에 로직을 덜 복잡하게 하기 위해서 이러한 비효율성(?)을 감수한다.
382
+ // "timeout_packet.packet_src_port": targetChannel.portId,
383
+ "timeout_packet.packet_src_channel": targetChannel.channelId,
384
+ "timeout_packet.packet_sequence": targetChannel.sequence,
385
+ };
386
+ const txTracer = new cosmos_1.TendermintTxTracer(prevChainInfo.rpc, "/websocket");
387
+ closables.push(txTracer);
388
+ txTracer.addEventListener("close", onCloseOnce);
389
+ txTracer.addEventListener("error", onErrorOnce);
390
+ txTracer.traceTx(queryEvents).then((res) => {
391
+ txTracer.close();
392
+ if (!res) {
393
+ return;
394
+ }
395
+ // 이 event가 발생한 시점에서 이미 timeout packet은 받은 상태이고
396
+ // 이 경우 따로 정보를 얻을 필요는 없으므로 이후에 res를 쓰지는 않는다.
397
+ // 위에 res null check는 사실 필요 없지만 혹시나 해서 넣어둔다.
398
+ (0, mobx_1.runInAction)(() => {
399
+ targetChannel.error = "Packet timeout";
400
+ history.packetTimeout = true;
401
+ onFulfillOnce();
402
+ this.trackIBCPacketForwardingRecursive(id);
403
+ });
404
+ });
405
+ }
406
+ }
304
407
  }
305
408
  }
306
409
  };
@@ -741,6 +844,89 @@ class RecentSendHistoryService {
741
844
  }
742
845
  return events.indexOf(packetEvent);
743
846
  }
847
+ getIBCTimeoutPacketIndexFromTx(tx, sourcePortId, sourceChannelId, sequence) {
848
+ const events = tx.events;
849
+ if (!events) {
850
+ throw new Error("Invalid tx");
851
+ }
852
+ if (!Array.isArray(events)) {
853
+ throw new Error("Invalid tx");
854
+ }
855
+ // In injective, events from tendermint rpc is not encoded as base64.
856
+ // I don't know that this is the difference from tendermint version, or just custom from injective.
857
+ const compareStringWithBase64OrPlain = (target, value) => {
858
+ if (target === value) {
859
+ return [true, false];
860
+ }
861
+ if (target === buffer_1.Buffer.from(value).toString("base64")) {
862
+ return [true, true];
863
+ }
864
+ return [false, false];
865
+ };
866
+ const packetEvent = events.find((event) => {
867
+ if (event.type !== "timeout_packet") {
868
+ return false;
869
+ }
870
+ const sourcePortAttr = event.attributes.find((attr) => {
871
+ return compareStringWithBase64OrPlain(attr.key, "packet_src_port")[0];
872
+ });
873
+ if (!sourcePortAttr) {
874
+ return false;
875
+ }
876
+ const sourceChannelAttr = event.attributes.find((attr) => {
877
+ return compareStringWithBase64OrPlain(attr.key, "packet_src_channel")[0];
878
+ });
879
+ if (!sourceChannelAttr) {
880
+ return false;
881
+ }
882
+ let isBase64 = false;
883
+ const sequenceAttr = event.attributes.find((attr) => {
884
+ const c = compareStringWithBase64OrPlain(attr.key, "packet_sequence");
885
+ isBase64 = c[1];
886
+ return c[0];
887
+ });
888
+ if (!sequenceAttr) {
889
+ return false;
890
+ }
891
+ if (isBase64) {
892
+ return (buffer_1.Buffer.from(sourcePortAttr.value, "base64").toString() ===
893
+ sourcePortId &&
894
+ buffer_1.Buffer.from(sourceChannelAttr.value, "base64").toString() ===
895
+ sourceChannelId &&
896
+ buffer_1.Buffer.from(sequenceAttr.value, "base64").toString() === sequence);
897
+ }
898
+ else {
899
+ return (sourcePortAttr.value === sourcePortId &&
900
+ sourceChannelAttr.value === sourceChannelId &&
901
+ sequenceAttr.value === sequence);
902
+ }
903
+ });
904
+ if (!packetEvent) {
905
+ return -1;
906
+ }
907
+ return events.indexOf(packetEvent);
908
+ }
909
+ getLastIBCTimeoutPacketBeforeIndexFromTx(tx, index) {
910
+ const events = tx.events;
911
+ if (!events) {
912
+ throw new Error("Invalid tx");
913
+ }
914
+ if (!Array.isArray(events)) {
915
+ throw new Error("Invalid tx");
916
+ }
917
+ const reversedIndex = events
918
+ .slice(0, index)
919
+ .reverse()
920
+ .findIndex((event) => {
921
+ if (event.type === "timeout_packet") {
922
+ return true;
923
+ }
924
+ });
925
+ if (reversedIndex >= 0) {
926
+ return index - reversedIndex - 1;
927
+ }
928
+ return -1;
929
+ }
744
930
  getIBCRecvPacketIndexFromTx(tx, sourcePortId, sourceChannelId, sequence) {
745
931
  const events = tx.events;
746
932
  if (!events) {
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/recent-send-history/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/recent-send-history/service.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,7 @@ export type IBCHistory = {
28
28
  txHash: string;
29
29
  txFulfilled?: boolean;
30
30
  txError?: string;
31
+ packetTimeout?: boolean;
31
32
  ibcHistory: {
32
33
  portId: string;
33
34
  channelId: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keplr-wallet/background",
3
- "version": "0.12.53",
3
+ "version": "0.12.54-rc.0",
4
4
  "main": "build/index.js",
5
5
  "author": "chainapsis",
6
6
  "license": "Apache-2.0",
@@ -28,17 +28,17 @@
28
28
  "@ethersproject/hash": "^5.7.0",
29
29
  "@ethersproject/transactions": "^5.7.0",
30
30
  "@ethersproject/wallet": "^5.7.0",
31
- "@keplr-wallet/chain-validator": "0.12.53",
32
- "@keplr-wallet/common": "0.12.53",
33
- "@keplr-wallet/cosmos": "0.12.53",
34
- "@keplr-wallet/crypto": "0.12.53",
35
- "@keplr-wallet/ledger-cosmos": "0.12.53",
36
- "@keplr-wallet/popup": "0.12.53",
37
- "@keplr-wallet/proto-types": "0.12.53",
38
- "@keplr-wallet/router": "0.12.53",
39
- "@keplr-wallet/simple-fetch": "0.12.53",
40
- "@keplr-wallet/types": "0.12.53",
41
- "@keplr-wallet/unit": "0.12.53",
31
+ "@keplr-wallet/chain-validator": "0.12.54-rc.0",
32
+ "@keplr-wallet/common": "0.12.54-rc.0",
33
+ "@keplr-wallet/cosmos": "0.12.54-rc.0",
34
+ "@keplr-wallet/crypto": "0.12.54-rc.0",
35
+ "@keplr-wallet/ledger-cosmos": "0.12.54-rc.0",
36
+ "@keplr-wallet/popup": "0.12.54-rc.0",
37
+ "@keplr-wallet/proto-types": "0.12.54-rc.0",
38
+ "@keplr-wallet/router": "0.12.54-rc.0",
39
+ "@keplr-wallet/simple-fetch": "0.12.54-rc.0",
40
+ "@keplr-wallet/types": "0.12.54-rc.0",
41
+ "@keplr-wallet/unit": "0.12.54-rc.0",
42
42
  "@ledgerhq/hw-app-eth": "^6.29.3",
43
43
  "@ledgerhq/hw-transport": "^6.20.0",
44
44
  "@ledgerhq/hw-transport-webhid": "^6.20.0",
@@ -58,5 +58,5 @@
58
58
  "pbkdf2": "^3.1.2",
59
59
  "utility-types": "^3.10.0"
60
60
  },
61
- "gitHead": "5eb980ca519d2a286c6e90183aeda44d793b7ac5"
61
+ "gitHead": "10cdf59570c290bb644d1051b65414b86e8898c7"
62
62
  }
@@ -3,6 +3,7 @@ import {
3
3
  Bech32Address,
4
4
  ChainIdHelper,
5
5
  TendermintTxTracer,
6
+ WsReadyState,
6
7
  } from "@keplr-wallet/cosmos";
7
8
  import { BackgroundTxService, Notification } from "../tx";
8
9
  import {
@@ -309,10 +310,12 @@ export class RecentSendHistoryService {
309
310
  return history.ibcHistory.find((h) => h.error != null) != null;
310
311
  })();
311
312
 
312
- if (
313
- needRewind &&
314
- !history.ibcHistory.find((h) => h.rewoundButNextRewindingBlocked)
315
- ) {
313
+ if (needRewind) {
314
+ if (history.ibcHistory.find((h) => h.rewoundButNextRewindingBlocked)) {
315
+ onFulfill();
316
+ return;
317
+ }
318
+ const isTimeoutPacket = history.packetTimeout || false;
316
319
  const lastRewoundChannelIndex = history.ibcHistory.findIndex((h) => {
317
320
  if (h.rewound) {
318
321
  return true;
@@ -357,11 +360,22 @@ export class RecentSendHistoryService {
357
360
  txTracer.addEventListener("close", onClose);
358
361
  txTracer.addEventListener("error", onError);
359
362
  txTracer
360
- .traceTx({
361
- // "acknowledge_packet.packet_src_port": targetChannel.portId,
362
- "acknowledge_packet.packet_src_channel": targetChannel.channelId,
363
- "acknowledge_packet.packet_sequence": targetChannel.sequence,
364
- })
363
+ .traceTx(
364
+ isTimeoutPacket
365
+ ? {
366
+ // "timeout_packet.packet_src_port": targetChannel.portId,
367
+ "timeout_packet.packet_src_channel":
368
+ targetChannel.channelId,
369
+ "timeout_packet.packet_sequence": targetChannel.sequence,
370
+ }
371
+ : {
372
+ // "acknowledge_packet.packet_src_port": targetChannel.portId,
373
+ "acknowledge_packet.packet_src_channel":
374
+ targetChannel.channelId,
375
+ "acknowledge_packet.packet_sequence":
376
+ targetChannel.sequence,
377
+ }
378
+ )
365
379
  .then((res: any) => {
366
380
  txTracer.close();
367
381
 
@@ -377,19 +391,48 @@ export class RecentSendHistoryService {
377
391
  if (txs && Array.isArray(txs)) {
378
392
  for (const tx of txs) {
379
393
  if (targetChannel.sequence && "swapReceiver" in history) {
380
- const index =
381
- this.getIBCAcknowledgementPacketIndexFromTx(
382
- tx,
383
- targetChannel.portId,
384
- targetChannel.channelId,
385
- targetChannel.sequence
386
- );
394
+ const index = isTimeoutPacket
395
+ ? this.getIBCTimeoutPacketIndexFromTx(
396
+ tx,
397
+ targetChannel.portId,
398
+ targetChannel.channelId,
399
+ targetChannel.sequence
400
+ )
401
+ : this.getIBCAcknowledgementPacketIndexFromTx(
402
+ tx,
403
+ targetChannel.portId,
404
+ targetChannel.channelId,
405
+ targetChannel.sequence
406
+ );
387
407
  if (index >= 0) {
388
- const refunded = this.getIBCSwapResAmountFromTx(
389
- tx,
390
- history.swapReceiver[history.swapChannelIndex + 1],
391
- index
392
- );
408
+ // 빡치게 timeout packet은 refund 로직이 실행되고 나서 "timeout_packet" event가 발생한다.
409
+ const refunded = isTimeoutPacket
410
+ ? this.getIBCSwapResAmountFromTx(
411
+ tx,
412
+ history.swapReceiver[
413
+ history.swapChannelIndex + 1
414
+ ],
415
+ (() => {
416
+ const i =
417
+ this.getLastIBCTimeoutPacketBeforeIndexFromTx(
418
+ tx,
419
+ index
420
+ );
421
+
422
+ if (i < 0) {
423
+ return 0;
424
+ }
425
+ return i;
426
+ })(),
427
+ index
428
+ )
429
+ : this.getIBCSwapResAmountFromTx(
430
+ tx,
431
+ history.swapReceiver[
432
+ history.swapChannelIndex + 1
433
+ ],
434
+ index
435
+ );
393
436
  history.swapRefundInfo = {
394
437
  chainId: prevChainInfo.chainId,
395
438
  amount: refunded,
@@ -470,6 +513,56 @@ export class RecentSendHistoryService {
470
513
  : undefined;
471
514
 
472
515
  if (targetChannel && targetChannel.sequence) {
516
+ const closables: {
517
+ readyState: WsReadyState;
518
+ close: () => void;
519
+ }[] = [];
520
+ let _onFulfillOnce = false;
521
+ const onFulfillOnce = () => {
522
+ if (!_onFulfillOnce) {
523
+ _onFulfillOnce = true;
524
+ closables.forEach((closable) => {
525
+ if (
526
+ closable.readyState === WsReadyState.OPEN ||
527
+ closable.readyState === WsReadyState.CONNECTING
528
+ ) {
529
+ closable.close();
530
+ }
531
+ });
532
+ onFulfill();
533
+ }
534
+ };
535
+ let _onCloseOnce = false;
536
+ const onCloseOnce = () => {
537
+ if (!_onCloseOnce) {
538
+ _onCloseOnce = true;
539
+ closables.forEach((closable) => {
540
+ if (
541
+ closable.readyState === WsReadyState.OPEN ||
542
+ closable.readyState === WsReadyState.CONNECTING
543
+ ) {
544
+ closable.close();
545
+ }
546
+ });
547
+ onClose();
548
+ }
549
+ };
550
+ let _onErrorOnce = false;
551
+ const onErrorOnce = () => {
552
+ if (!_onErrorOnce) {
553
+ _onErrorOnce = true;
554
+ closables.forEach((closable) => {
555
+ if (
556
+ closable.readyState === WsReadyState.OPEN ||
557
+ closable.readyState === WsReadyState.CONNECTING
558
+ ) {
559
+ closable.close();
560
+ }
561
+ });
562
+ onError();
563
+ }
564
+ };
565
+
473
566
  const chainInfo = this.chainsService.getChainInfo(
474
567
  targetChannel.counterpartyChainId
475
568
  );
@@ -481,8 +574,9 @@ export class RecentSendHistoryService {
481
574
  };
482
575
 
483
576
  const txTracer = new TendermintTxTracer(chainInfo.rpc, "/websocket");
484
- txTracer.addEventListener("close", onClose);
485
- txTracer.addEventListener("error", onError);
577
+ closables.push(txTracer);
578
+ txTracer.addEventListener("close", onCloseOnce);
579
+ txTracer.addEventListener("error", onErrorOnce);
486
580
  txTracer.traceTx(queryEvents).then((res) => {
487
581
  txTracer.close();
488
582
 
@@ -514,7 +608,7 @@ export class RecentSendHistoryService {
514
608
  // XXX: {key: 'packet_ack', value: '{"error":"ABCI code: 6: error handling packet: see events for details"}'}
515
609
  // 오류가 있을 경우 이딴식으로 오류가 나오기 때문에 뭐 유저에게 보여줄 방법이 없다...
516
610
  targetChannel.error = "Packet processing failed";
517
- onFulfill();
611
+ onFulfillOnce();
518
612
  this.trackIBCPacketForwardingRecursive(id);
519
613
  break;
520
614
  }
@@ -555,7 +649,7 @@ export class RecentSendHistoryService {
555
649
  nextChannel.channelId,
556
650
  index
557
651
  );
558
- onFulfill();
652
+ onFulfillOnce();
559
653
  this.trackIBCPacketForwardingRecursive(id);
560
654
  break;
561
655
  } else {
@@ -641,7 +735,7 @@ export class RecentSendHistoryService {
641
735
  }
642
736
  }
643
737
  }
644
- onFulfill();
738
+ onFulfillOnce();
645
739
  break;
646
740
  }
647
741
  }
@@ -653,6 +747,53 @@ export class RecentSendHistoryService {
653
747
  }
654
748
  });
655
749
  }
750
+
751
+ let prevChainId: string = "";
752
+ if (targetChannelIndex > 0) {
753
+ prevChainId =
754
+ history.ibcHistory[targetChannelIndex - 1].counterpartyChainId;
755
+ } else {
756
+ prevChainId = history.chainId;
757
+ }
758
+ if (prevChainId) {
759
+ const prevChainInfo = this.chainsService.getChainInfo(prevChainId);
760
+ if (prevChainInfo) {
761
+ const queryEvents: any = {
762
+ // acknowledge_packet과는 다르게 timeout_packet은 이전의 체인의 이벤트로부터만 알 수 있다.
763
+ // 방법이 없기 때문에 여기서 이전의 체인으로부터 subscribe를 해서 이벤트를 받아야 한다.
764
+ // 하지만 이 경우 ibc error tracking 로직에서 이것과 똑같은 subscription을 한번 더 하게 된다.
765
+ // 이미 로직이 많이 복잡하기 때문에 로직을 덜 복잡하게 하기 위해서 이러한 비효율성(?)을 감수한다.
766
+ // "timeout_packet.packet_src_port": targetChannel.portId,
767
+ "timeout_packet.packet_src_channel": targetChannel.channelId,
768
+ "timeout_packet.packet_sequence": targetChannel.sequence,
769
+ };
770
+
771
+ const txTracer = new TendermintTxTracer(
772
+ prevChainInfo.rpc,
773
+ "/websocket"
774
+ );
775
+ closables.push(txTracer);
776
+ txTracer.addEventListener("close", onCloseOnce);
777
+ txTracer.addEventListener("error", onErrorOnce);
778
+ txTracer.traceTx(queryEvents).then((res) => {
779
+ txTracer.close();
780
+
781
+ if (!res) {
782
+ return;
783
+ }
784
+
785
+ // 이 event가 발생한 시점에서 이미 timeout packet은 받은 상태이고
786
+ // 이 경우 따로 정보를 얻을 필요는 없으므로 이후에 res를 쓰지는 않는다.
787
+ // 위에 res null check는 사실 필요 없지만 혹시나 해서 넣어둔다.
788
+ runInAction(() => {
789
+ targetChannel.error = "Packet timeout";
790
+ history.packetTimeout = true;
791
+ onFulfillOnce();
792
+ this.trackIBCPacketForwardingRecursive(id);
793
+ });
794
+ });
795
+ }
796
+ }
656
797
  }
657
798
  }
658
799
  };
@@ -1104,6 +1245,117 @@ export class RecentSendHistoryService {
1104
1245
  return events.indexOf(packetEvent);
1105
1246
  }
1106
1247
 
1248
+ protected getIBCTimeoutPacketIndexFromTx(
1249
+ tx: any,
1250
+ sourcePortId: string,
1251
+ sourceChannelId: string,
1252
+ sequence: string
1253
+ ): number {
1254
+ const events = tx.events;
1255
+ if (!events) {
1256
+ throw new Error("Invalid tx");
1257
+ }
1258
+ if (!Array.isArray(events)) {
1259
+ throw new Error("Invalid tx");
1260
+ }
1261
+
1262
+ // In injective, events from tendermint rpc is not encoded as base64.
1263
+ // I don't know that this is the difference from tendermint version, or just custom from injective.
1264
+ const compareStringWithBase64OrPlain = (
1265
+ target: string,
1266
+ value: string
1267
+ ): [boolean, boolean] => {
1268
+ if (target === value) {
1269
+ return [true, false];
1270
+ }
1271
+
1272
+ if (target === Buffer.from(value).toString("base64")) {
1273
+ return [true, true];
1274
+ }
1275
+
1276
+ return [false, false];
1277
+ };
1278
+
1279
+ const packetEvent = events.find((event: any) => {
1280
+ if (event.type !== "timeout_packet") {
1281
+ return false;
1282
+ }
1283
+ const sourcePortAttr = event.attributes.find((attr: { key: string }) => {
1284
+ return compareStringWithBase64OrPlain(attr.key, "packet_src_port")[0];
1285
+ });
1286
+ if (!sourcePortAttr) {
1287
+ return false;
1288
+ }
1289
+ const sourceChannelAttr = event.attributes.find(
1290
+ (attr: { key: string }) => {
1291
+ return compareStringWithBase64OrPlain(
1292
+ attr.key,
1293
+ "packet_src_channel"
1294
+ )[0];
1295
+ }
1296
+ );
1297
+ if (!sourceChannelAttr) {
1298
+ return false;
1299
+ }
1300
+ let isBase64 = false;
1301
+ const sequenceAttr = event.attributes.find((attr: { key: string }) => {
1302
+ const c = compareStringWithBase64OrPlain(attr.key, "packet_sequence");
1303
+ isBase64 = c[1];
1304
+ return c[0];
1305
+ });
1306
+ if (!sequenceAttr) {
1307
+ return false;
1308
+ }
1309
+
1310
+ if (isBase64) {
1311
+ return (
1312
+ Buffer.from(sourcePortAttr.value, "base64").toString() ===
1313
+ sourcePortId &&
1314
+ Buffer.from(sourceChannelAttr.value, "base64").toString() ===
1315
+ sourceChannelId &&
1316
+ Buffer.from(sequenceAttr.value, "base64").toString() === sequence
1317
+ );
1318
+ } else {
1319
+ return (
1320
+ sourcePortAttr.value === sourcePortId &&
1321
+ sourceChannelAttr.value === sourceChannelId &&
1322
+ sequenceAttr.value === sequence
1323
+ );
1324
+ }
1325
+ });
1326
+ if (!packetEvent) {
1327
+ return -1;
1328
+ }
1329
+
1330
+ return events.indexOf(packetEvent);
1331
+ }
1332
+
1333
+ protected getLastIBCTimeoutPacketBeforeIndexFromTx(
1334
+ tx: any,
1335
+ index: number
1336
+ ): number {
1337
+ const events = tx.events;
1338
+ if (!events) {
1339
+ throw new Error("Invalid tx");
1340
+ }
1341
+ if (!Array.isArray(events)) {
1342
+ throw new Error("Invalid tx");
1343
+ }
1344
+ const reversedIndex = events
1345
+ .slice(0, index)
1346
+ .reverse()
1347
+ .findIndex((event) => {
1348
+ if (event.type === "timeout_packet") {
1349
+ return true;
1350
+ }
1351
+ });
1352
+
1353
+ if (reversedIndex >= 0) {
1354
+ return index - reversedIndex - 1;
1355
+ }
1356
+ return -1;
1357
+ }
1358
+
1107
1359
  protected getIBCRecvPacketIndexFromTx(
1108
1360
  tx: any,
1109
1361
  sourcePortId: string,
@@ -36,6 +36,7 @@ export type IBCHistory = {
36
36
 
37
37
  txFulfilled?: boolean;
38
38
  txError?: string;
39
+ packetTimeout?: boolean;
39
40
 
40
41
  ibcHistory:
41
42
  | {