@keplr-wallet/background 0.12.30 → 0.12.31-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.
|
@@ -32,6 +32,7 @@ export declare class RecentSendHistoryService {
|
|
|
32
32
|
denom: string;
|
|
33
33
|
}, swapChannelIndex: number, swapReceiver: string[]): Promise<Uint8Array>;
|
|
34
34
|
trackIBCPacketForwardingRecursive(id: string): void;
|
|
35
|
+
protected trackIBCPacketForwardingRecursiveInternal: (id: string, onFulfill: () => void, onClose: () => void, onError: () => void) => void;
|
|
35
36
|
getRecentSendHistories(chainId: string, type: string): RecentSendHistory[];
|
|
36
37
|
addRecentSendHistory(chainId: string, type: string, history: Omit<RecentSendHistory, "timestamp">): void;
|
|
37
38
|
addRecentIBCTransferHistory(chainId: string, destinationChainId: string, sender: string, recipient: string, amount: {
|
|
@@ -18,6 +18,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
18
|
exports.RecentSendHistoryService = void 0;
|
|
19
19
|
const cosmos_1 = require("@keplr-wallet/cosmos");
|
|
20
20
|
const mobx_1 = require("mobx");
|
|
21
|
+
const common_1 = require("@keplr-wallet/common");
|
|
21
22
|
const buffer_1 = require("buffer/");
|
|
22
23
|
class RecentSendHistoryService {
|
|
23
24
|
constructor(kvStore, chainsService, txService) {
|
|
@@ -29,6 +30,186 @@ class RecentSendHistoryService {
|
|
|
29
30
|
this.recentIBCHistorySeq = 0;
|
|
30
31
|
// Key: id (sequence, it should be increased by 1 for each)
|
|
31
32
|
this.recentIBCHistoryMap = new Map();
|
|
33
|
+
// ibc packet forwarding을 위한 recursive function이면서
|
|
34
|
+
// 실패시 retry를 수행하기 위해서 분리되어 있음
|
|
35
|
+
// trackIBCPacketForwardingRecursive도 참고
|
|
36
|
+
// trackIBCPacketForwardingRecursive의 주석을 보면 알겠지만
|
|
37
|
+
// tx tracer가 close된 이후에는 동기적인 로직만 있어야함.
|
|
38
|
+
this.trackIBCPacketForwardingRecursiveInternal = (id, onFulfill, onClose, onError) => {
|
|
39
|
+
const history = this.getRecentIBCHistory(id);
|
|
40
|
+
if (!history) {
|
|
41
|
+
onFulfill();
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const needRewind = (() => {
|
|
45
|
+
if (!history.txFulfilled) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
if (history.ibcHistory.length === 0) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
return history.ibcHistory.find((h) => h.error != null) != null;
|
|
52
|
+
})();
|
|
53
|
+
if (needRewind) {
|
|
54
|
+
const lastRewoundChannelIndex = history.ibcHistory.findIndex((h) => {
|
|
55
|
+
if (h.rewound) {
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
const targetChannel = (() => {
|
|
60
|
+
if (lastRewoundChannelIndex >= 0) {
|
|
61
|
+
if (lastRewoundChannelIndex === 0) {
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
return history.ibcHistory[lastRewoundChannelIndex - 1];
|
|
65
|
+
}
|
|
66
|
+
return history.ibcHistory.find((h) => h.error != null);
|
|
67
|
+
})();
|
|
68
|
+
if (targetChannel && targetChannel.sequence) {
|
|
69
|
+
const prevChainInfo = (() => {
|
|
70
|
+
const targetChannelIndex = history.ibcHistory.findIndex((h) => h === targetChannel);
|
|
71
|
+
if (targetChannelIndex < 0) {
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
if (targetChannelIndex === 0) {
|
|
75
|
+
return this.chainsService.getChainInfo(history.chainId);
|
|
76
|
+
}
|
|
77
|
+
return this.chainsService.getChainInfo(history.ibcHistory[targetChannelIndex - 1].counterpartyChainId);
|
|
78
|
+
})();
|
|
79
|
+
if (prevChainInfo) {
|
|
80
|
+
const txTracer = new cosmos_1.TendermintTxTracer(prevChainInfo.rpc, "/websocket");
|
|
81
|
+
txTracer.addEventListener("close", onClose);
|
|
82
|
+
txTracer.addEventListener("error", onError);
|
|
83
|
+
txTracer
|
|
84
|
+
.traceTx({
|
|
85
|
+
"acknowledge_packet.packet_src_port": targetChannel.portId,
|
|
86
|
+
"acknowledge_packet.packet_src_channel": targetChannel.channelId,
|
|
87
|
+
"acknowledge_packet.packet_sequence": targetChannel.sequence,
|
|
88
|
+
})
|
|
89
|
+
.then(() => {
|
|
90
|
+
(0, mobx_1.runInAction)(() => {
|
|
91
|
+
targetChannel.rewound = true;
|
|
92
|
+
});
|
|
93
|
+
onFulfill();
|
|
94
|
+
this.trackIBCPacketForwardingRecursive(id);
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
else if (!history.txFulfilled) {
|
|
100
|
+
const chainId = history.chainId;
|
|
101
|
+
const chainInfo = this.chainsService.getChainInfo(chainId);
|
|
102
|
+
const txHash = buffer_1.Buffer.from(history.txHash, "hex");
|
|
103
|
+
if (chainInfo) {
|
|
104
|
+
const txTracer = new cosmos_1.TendermintTxTracer(chainInfo.rpc, "/websocket");
|
|
105
|
+
txTracer.addEventListener("close", onClose);
|
|
106
|
+
txTracer.addEventListener("error", onError);
|
|
107
|
+
txTracer.traceTx(txHash).then((tx) => {
|
|
108
|
+
txTracer.close();
|
|
109
|
+
(0, mobx_1.runInAction)(() => {
|
|
110
|
+
history.txFulfilled = true;
|
|
111
|
+
if (tx.code != null && tx.code !== 0) {
|
|
112
|
+
history.txError = tx.log || tx.raw_log || "Unknown error";
|
|
113
|
+
// TODO: In this case, it is not currently displayed in the UI. So, delete it for now.
|
|
114
|
+
// 어차피 tx 자체의 실패는 notification으로 알 수 있기 때문에 여기서 지우더라도 유저는 실패를 인지할 수 있다.
|
|
115
|
+
this.removeRecentIBCHistory(id);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
if ("swapReceiver" in history) {
|
|
119
|
+
const resAmount = this.getIBCSwapResAmountFromTx(tx, history.swapReceiver[0]);
|
|
120
|
+
history.resAmount.push(resAmount);
|
|
121
|
+
}
|
|
122
|
+
if (history.ibcHistory.length > 0) {
|
|
123
|
+
const firstChannel = history.ibcHistory[0];
|
|
124
|
+
firstChannel.sequence = this.getIBCPacketSequenceFromTx(tx, firstChannel.portId, firstChannel.channelId);
|
|
125
|
+
onFulfill();
|
|
126
|
+
this.trackIBCPacketForwardingRecursive(id);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
else if (history.ibcHistory.length > 0) {
|
|
134
|
+
const targetChannelIndex = history.ibcHistory.findIndex((history) => {
|
|
135
|
+
return !history.completed;
|
|
136
|
+
});
|
|
137
|
+
const targetChannel = targetChannelIndex >= 0
|
|
138
|
+
? history.ibcHistory[targetChannelIndex]
|
|
139
|
+
: undefined;
|
|
140
|
+
const nextChannel = targetChannelIndex >= 0 &&
|
|
141
|
+
targetChannelIndex + 1 < history.ibcHistory.length
|
|
142
|
+
? history.ibcHistory[targetChannelIndex + 1]
|
|
143
|
+
: undefined;
|
|
144
|
+
if (targetChannel && targetChannel.sequence) {
|
|
145
|
+
const chainInfo = this.chainsService.getChainInfo(targetChannel.counterpartyChainId);
|
|
146
|
+
if (chainInfo) {
|
|
147
|
+
const queryEvents = {
|
|
148
|
+
"recv_packet.packet_src_port": targetChannel.portId,
|
|
149
|
+
"recv_packet.packet_src_channel": targetChannel.channelId,
|
|
150
|
+
"recv_packet.packet_sequence": targetChannel.sequence,
|
|
151
|
+
};
|
|
152
|
+
const txTracer = new cosmos_1.TendermintTxTracer(chainInfo.rpc, "/websocket");
|
|
153
|
+
txTracer.addEventListener("close", onClose);
|
|
154
|
+
txTracer.addEventListener("error", onError);
|
|
155
|
+
txTracer.traceTx(queryEvents).then((res) => {
|
|
156
|
+
txTracer.close();
|
|
157
|
+
if (!res) {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
const txs = res.txs
|
|
161
|
+
? res.txs.map((res) => res.tx_result || res)
|
|
162
|
+
: [res];
|
|
163
|
+
if (txs && Array.isArray(txs)) {
|
|
164
|
+
(0, mobx_1.runInAction)(() => {
|
|
165
|
+
targetChannel.completed = true;
|
|
166
|
+
for (const tx of txs) {
|
|
167
|
+
try {
|
|
168
|
+
const ack = this.getIBCWriteAcknowledgementAckFromTx(tx, targetChannel.portId, targetChannel.channelId, targetChannel.sequence);
|
|
169
|
+
if (ack && ack.length > 0) {
|
|
170
|
+
const str = buffer_1.Buffer.from(ack);
|
|
171
|
+
try {
|
|
172
|
+
const decoded = JSON.parse(str.toString());
|
|
173
|
+
if (decoded.error) {
|
|
174
|
+
// XXX: {key: 'packet_ack', value: '{"error":"ABCI code: 6: error handling packet: see events for details"}'}
|
|
175
|
+
// 오류가 있을 경우 이딴식으로 오류가 나오기 때문에 뭐 유저에게 보여줄 방법이 없다...
|
|
176
|
+
targetChannel.error = "Packet processing failed";
|
|
177
|
+
onFulfill();
|
|
178
|
+
this.trackIBCPacketForwardingRecursive(id);
|
|
179
|
+
break;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
catch (e) {
|
|
183
|
+
// decode가 실패한 경우 사실 방법이 없다.
|
|
184
|
+
// 일단 packet이 성공했다고 치고 진행한다.
|
|
185
|
+
console.log(e);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
// Because a tx can contain multiple messages, it's hard to know exactly which event we want.
|
|
189
|
+
// But logically, the events closest to the recv_packet event is the events we want.
|
|
190
|
+
const index = this.getIBCRecvPacketIndexFromTx(tx, targetChannel.portId, targetChannel.channelId, targetChannel.sequence);
|
|
191
|
+
if ("swapReceiver" in history) {
|
|
192
|
+
const res = this.getIBCSwapResAmountFromTx(tx, history.swapReceiver[targetChannelIndex + 1], index);
|
|
193
|
+
history.resAmount.push(res);
|
|
194
|
+
}
|
|
195
|
+
if (nextChannel) {
|
|
196
|
+
nextChannel.sequence = this.getIBCPacketSequenceFromTx(tx, nextChannel.portId, nextChannel.channelId, index);
|
|
197
|
+
onFulfill();
|
|
198
|
+
this.trackIBCPacketForwardingRecursive(id);
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
catch (_a) {
|
|
203
|
+
// noop
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
};
|
|
32
213
|
this.onChainRemoved = (chainInfo) => {
|
|
33
214
|
const chainIdentifier = cosmos_1.ChainIdHelper.parse(chainInfo.chainId).identifier;
|
|
34
215
|
(0, mobx_1.runInAction)(() => {
|
|
@@ -155,168 +336,29 @@ class RecentSendHistoryService {
|
|
|
155
336
|
});
|
|
156
337
|
}
|
|
157
338
|
trackIBCPacketForwardingRecursive(id) {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
return true;
|
|
175
|
-
}
|
|
176
|
-
});
|
|
177
|
-
const targetChannel = (() => {
|
|
178
|
-
if (lastRewoundChannelIndex >= 0) {
|
|
179
|
-
if (lastRewoundChannelIndex === 0) {
|
|
180
|
-
return undefined;
|
|
181
|
-
}
|
|
182
|
-
return history.ibcHistory[lastRewoundChannelIndex - 1];
|
|
183
|
-
}
|
|
184
|
-
return history.ibcHistory.find((h) => h.error != null);
|
|
185
|
-
})();
|
|
186
|
-
if (targetChannel && targetChannel.sequence) {
|
|
187
|
-
const prevChainInfo = (() => {
|
|
188
|
-
const targetChannelIndex = history.ibcHistory.findIndex((h) => h === targetChannel);
|
|
189
|
-
if (targetChannelIndex < 0) {
|
|
190
|
-
return undefined;
|
|
191
|
-
}
|
|
192
|
-
if (targetChannelIndex === 0) {
|
|
193
|
-
return this.chainsService.getChainInfo(history.chainId);
|
|
194
|
-
}
|
|
195
|
-
return this.chainsService.getChainInfo(history.ibcHistory[targetChannelIndex - 1].counterpartyChainId);
|
|
196
|
-
})();
|
|
197
|
-
if (prevChainInfo) {
|
|
198
|
-
const txTracer = new cosmos_1.TendermintTxTracer(prevChainInfo.rpc, "/websocket");
|
|
199
|
-
txTracer
|
|
200
|
-
.traceTx({
|
|
201
|
-
"acknowledge_packet.packet_src_port": targetChannel.portId,
|
|
202
|
-
"acknowledge_packet.packet_src_channel": targetChannel.channelId,
|
|
203
|
-
"acknowledge_packet.packet_sequence": targetChannel.sequence,
|
|
204
|
-
})
|
|
205
|
-
.then(() => {
|
|
206
|
-
(0, mobx_1.runInAction)(() => {
|
|
207
|
-
targetChannel.rewound = true;
|
|
208
|
-
});
|
|
209
|
-
this.trackIBCPacketForwardingRecursive(id);
|
|
210
|
-
});
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
else if (!history.txFulfilled) {
|
|
215
|
-
const chainId = history.chainId;
|
|
216
|
-
const chainInfo = this.chainsService.getChainInfo(chainId);
|
|
217
|
-
const txHash = buffer_1.Buffer.from(history.txHash, "hex");
|
|
218
|
-
if (chainInfo) {
|
|
219
|
-
const txTracer = new cosmos_1.TendermintTxTracer(chainInfo.rpc, "/websocket");
|
|
220
|
-
txTracer.traceTx(txHash).then((tx) => {
|
|
221
|
-
txTracer.close();
|
|
222
|
-
(0, mobx_1.runInAction)(() => {
|
|
223
|
-
history.txFulfilled = true;
|
|
224
|
-
if (tx.code != null && tx.code !== 0) {
|
|
225
|
-
history.txError = tx.log || tx.raw_log || "Unknown error";
|
|
226
|
-
// TODO: In this case, it is not currently displayed in the UI. So, delete it for now.
|
|
227
|
-
// 어차피 tx 자체의 실패는 notification으로 알 수 있기 때문에 여기서 지우더라도 유저는 실패를 인지할 수 있다.
|
|
228
|
-
this.removeRecentIBCHistory(id);
|
|
229
|
-
}
|
|
230
|
-
else {
|
|
231
|
-
if ("swapReceiver" in history) {
|
|
232
|
-
const resAmount = this.getIBCSwapResAmountFromTx(tx, history.swapReceiver[0]);
|
|
233
|
-
history.resAmount.push(resAmount);
|
|
234
|
-
}
|
|
235
|
-
if (history.ibcHistory.length > 0) {
|
|
236
|
-
const firstChannel = history.ibcHistory[0];
|
|
237
|
-
firstChannel.sequence = this.getIBCPacketSequenceFromTx(tx, firstChannel.portId, firstChannel.channelId);
|
|
238
|
-
this.trackIBCPacketForwardingRecursive(id);
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
});
|
|
339
|
+
(0, common_1.retry)(() => {
|
|
340
|
+
return new Promise((resolve, reject) => {
|
|
341
|
+
this.trackIBCPacketForwardingRecursiveInternal(id, () => {
|
|
342
|
+
resolve();
|
|
343
|
+
}, () => {
|
|
344
|
+
// reject if ws closed before fulfilled
|
|
345
|
+
// 하지만 로직상 fulfill 되기 전에 ws가 닫히는게 되기 때문에
|
|
346
|
+
// delay를 좀 준다.
|
|
347
|
+
// 현재 trackIBCPacketForwardingRecursiveInternal에 ws close 이후에는 동기적인 로직밖에 없으므로
|
|
348
|
+
// 문제될게 없다.
|
|
349
|
+
setTimeout(() => {
|
|
350
|
+
reject();
|
|
351
|
+
}, 500);
|
|
352
|
+
}, () => {
|
|
353
|
+
// reject if ws error occurred before fulfilled
|
|
354
|
+
reject();
|
|
242
355
|
});
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
else if (history.ibcHistory.length > 0) {
|
|
246
|
-
const targetChannelIndex = history.ibcHistory.findIndex((history) => {
|
|
247
|
-
return !history.completed;
|
|
248
356
|
});
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
? history.ibcHistory[targetChannelIndex + 1]
|
|
255
|
-
: undefined;
|
|
256
|
-
if (targetChannel && targetChannel.sequence) {
|
|
257
|
-
const chainInfo = this.chainsService.getChainInfo(targetChannel.counterpartyChainId);
|
|
258
|
-
if (chainInfo) {
|
|
259
|
-
const queryEvents = {
|
|
260
|
-
"recv_packet.packet_src_port": targetChannel.portId,
|
|
261
|
-
"recv_packet.packet_src_channel": targetChannel.channelId,
|
|
262
|
-
"recv_packet.packet_sequence": targetChannel.sequence,
|
|
263
|
-
};
|
|
264
|
-
const txTracer = new cosmos_1.TendermintTxTracer(chainInfo.rpc, "/websocket");
|
|
265
|
-
txTracer.traceTx(queryEvents).then((res) => {
|
|
266
|
-
txTracer.close();
|
|
267
|
-
if (!res) {
|
|
268
|
-
return;
|
|
269
|
-
}
|
|
270
|
-
const txs = res.txs
|
|
271
|
-
? res.txs.map((res) => res.tx_result || res)
|
|
272
|
-
: [res];
|
|
273
|
-
if (txs && Array.isArray(txs)) {
|
|
274
|
-
(0, mobx_1.runInAction)(() => {
|
|
275
|
-
targetChannel.completed = true;
|
|
276
|
-
for (const tx of txs) {
|
|
277
|
-
try {
|
|
278
|
-
const ack = this.getIBCWriteAcknowledgementAckFromTx(tx, targetChannel.portId, targetChannel.channelId, targetChannel.sequence);
|
|
279
|
-
if (ack && ack.length > 0) {
|
|
280
|
-
const str = buffer_1.Buffer.from(ack);
|
|
281
|
-
try {
|
|
282
|
-
const decoded = JSON.parse(str.toString());
|
|
283
|
-
if (decoded.error) {
|
|
284
|
-
// XXX: {key: 'packet_ack', value: '{"error":"ABCI code: 6: error handling packet: see events for details"}'}
|
|
285
|
-
// 오류가 있을 경우 이딴식으로 오류가 나오기 때문에 뭐 유저에게 보여줄 방법이 없다...
|
|
286
|
-
targetChannel.error = "Packet processing failed";
|
|
287
|
-
this.trackIBCPacketForwardingRecursive(id);
|
|
288
|
-
break;
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
catch (e) {
|
|
292
|
-
// decode가 실패한 경우 사실 방법이 없다.
|
|
293
|
-
// 일단 packet이 성공했다고 치고 진행한다.
|
|
294
|
-
console.log(e);
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
// Because a tx can contain multiple messages, it's hard to know exactly which event we want.
|
|
298
|
-
// But logically, the events closest to the recv_packet event is the events we want.
|
|
299
|
-
const index = this.getIBCRecvPacketIndexFromTx(tx, targetChannel.portId, targetChannel.channelId, targetChannel.sequence);
|
|
300
|
-
if ("swapReceiver" in history) {
|
|
301
|
-
const res = this.getIBCSwapResAmountFromTx(tx, history.swapReceiver[targetChannelIndex + 1], index);
|
|
302
|
-
history.resAmount.push(res);
|
|
303
|
-
}
|
|
304
|
-
if (nextChannel) {
|
|
305
|
-
nextChannel.sequence = this.getIBCPacketSequenceFromTx(tx, nextChannel.portId, nextChannel.channelId, index);
|
|
306
|
-
this.trackIBCPacketForwardingRecursive(id);
|
|
307
|
-
break;
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
catch (_a) {
|
|
311
|
-
// noop
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
});
|
|
315
|
-
}
|
|
316
|
-
});
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
}
|
|
357
|
+
}, {
|
|
358
|
+
maxRetries: 10,
|
|
359
|
+
waitMsAfterError: 10 * 1000,
|
|
360
|
+
maxWaitMsAfterError: 5 * 60 * 1000, // 5min
|
|
361
|
+
});
|
|
320
362
|
}
|
|
321
363
|
getRecentSendHistories(chainId, type) {
|
|
322
364
|
var _a;
|
|
@@ -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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@keplr-wallet/background",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.31-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.
|
|
32
|
-
"@keplr-wallet/common": "0.12.
|
|
33
|
-
"@keplr-wallet/cosmos": "0.12.
|
|
34
|
-
"@keplr-wallet/crypto": "0.12.
|
|
35
|
-
"@keplr-wallet/ledger-cosmos": "0.12.
|
|
36
|
-
"@keplr-wallet/popup": "0.12.
|
|
37
|
-
"@keplr-wallet/proto-types": "0.12.
|
|
38
|
-
"@keplr-wallet/router": "0.12.
|
|
39
|
-
"@keplr-wallet/simple-fetch": "0.12.
|
|
40
|
-
"@keplr-wallet/types": "0.12.
|
|
41
|
-
"@keplr-wallet/unit": "0.12.
|
|
31
|
+
"@keplr-wallet/chain-validator": "0.12.31-rc.0",
|
|
32
|
+
"@keplr-wallet/common": "0.12.31-rc.0",
|
|
33
|
+
"@keplr-wallet/cosmos": "0.12.31-rc.0",
|
|
34
|
+
"@keplr-wallet/crypto": "0.12.31-rc.0",
|
|
35
|
+
"@keplr-wallet/ledger-cosmos": "0.12.31-rc.0",
|
|
36
|
+
"@keplr-wallet/popup": "0.12.31-rc.0",
|
|
37
|
+
"@keplr-wallet/proto-types": "0.12.31-rc.0",
|
|
38
|
+
"@keplr-wallet/router": "0.12.31-rc.0",
|
|
39
|
+
"@keplr-wallet/simple-fetch": "0.12.31-rc.0",
|
|
40
|
+
"@keplr-wallet/types": "0.12.31-rc.0",
|
|
41
|
+
"@keplr-wallet/unit": "0.12.31-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": "
|
|
61
|
+
"gitHead": "fe1668f13253f72f4adb21991527b616460014d3"
|
|
62
62
|
}
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
runInAction,
|
|
14
14
|
toJS,
|
|
15
15
|
} from "mobx";
|
|
16
|
-
import { KVStore } from "@keplr-wallet/common";
|
|
16
|
+
import { KVStore, retry } from "@keplr-wallet/common";
|
|
17
17
|
import { IBCHistory, RecentSendHistory } from "./types";
|
|
18
18
|
import { Buffer } from "buffer/";
|
|
19
19
|
import { ChainInfo } from "@keplr-wallet/types";
|
|
@@ -236,9 +236,54 @@ export class RecentSendHistoryService {
|
|
|
236
236
|
return txHash;
|
|
237
237
|
}
|
|
238
238
|
|
|
239
|
-
trackIBCPacketForwardingRecursive(id: string) {
|
|
239
|
+
trackIBCPacketForwardingRecursive(id: string): void {
|
|
240
|
+
retry(
|
|
241
|
+
() => {
|
|
242
|
+
return new Promise<void>((resolve, reject) => {
|
|
243
|
+
this.trackIBCPacketForwardingRecursiveInternal(
|
|
244
|
+
id,
|
|
245
|
+
() => {
|
|
246
|
+
resolve();
|
|
247
|
+
},
|
|
248
|
+
() => {
|
|
249
|
+
// reject if ws closed before fulfilled
|
|
250
|
+
// 하지만 로직상 fulfill 되기 전에 ws가 닫히는게 되기 때문에
|
|
251
|
+
// delay를 좀 준다.
|
|
252
|
+
// 현재 trackIBCPacketForwardingRecursiveInternal에 ws close 이후에는 동기적인 로직밖에 없으므로
|
|
253
|
+
// 문제될게 없다.
|
|
254
|
+
setTimeout(() => {
|
|
255
|
+
reject();
|
|
256
|
+
}, 500);
|
|
257
|
+
},
|
|
258
|
+
() => {
|
|
259
|
+
// reject if ws error occurred before fulfilled
|
|
260
|
+
reject();
|
|
261
|
+
}
|
|
262
|
+
);
|
|
263
|
+
});
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
maxRetries: 10,
|
|
267
|
+
waitMsAfterError: 10 * 1000, // 10sec
|
|
268
|
+
maxWaitMsAfterError: 5 * 60 * 1000, // 5min
|
|
269
|
+
}
|
|
270
|
+
);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
// ibc packet forwarding을 위한 recursive function이면서
|
|
274
|
+
// 실패시 retry를 수행하기 위해서 분리되어 있음
|
|
275
|
+
// trackIBCPacketForwardingRecursive도 참고
|
|
276
|
+
// trackIBCPacketForwardingRecursive의 주석을 보면 알겠지만
|
|
277
|
+
// tx tracer가 close된 이후에는 동기적인 로직만 있어야함.
|
|
278
|
+
protected trackIBCPacketForwardingRecursiveInternal = (
|
|
279
|
+
id: string,
|
|
280
|
+
onFulfill: () => void,
|
|
281
|
+
onClose: () => void,
|
|
282
|
+
onError: () => void
|
|
283
|
+
): void => {
|
|
240
284
|
const history = this.getRecentIBCHistory(id);
|
|
241
285
|
if (!history) {
|
|
286
|
+
onFulfill();
|
|
242
287
|
return;
|
|
243
288
|
}
|
|
244
289
|
|
|
@@ -291,6 +336,8 @@ export class RecentSendHistoryService {
|
|
|
291
336
|
prevChainInfo.rpc,
|
|
292
337
|
"/websocket"
|
|
293
338
|
);
|
|
339
|
+
txTracer.addEventListener("close", onClose);
|
|
340
|
+
txTracer.addEventListener("error", onError);
|
|
294
341
|
txTracer
|
|
295
342
|
.traceTx({
|
|
296
343
|
"acknowledge_packet.packet_src_port": targetChannel.portId,
|
|
@@ -301,6 +348,7 @@ export class RecentSendHistoryService {
|
|
|
301
348
|
runInAction(() => {
|
|
302
349
|
targetChannel.rewound = true;
|
|
303
350
|
});
|
|
351
|
+
onFulfill();
|
|
304
352
|
this.trackIBCPacketForwardingRecursive(id);
|
|
305
353
|
});
|
|
306
354
|
}
|
|
@@ -312,6 +360,8 @@ export class RecentSendHistoryService {
|
|
|
312
360
|
|
|
313
361
|
if (chainInfo) {
|
|
314
362
|
const txTracer = new TendermintTxTracer(chainInfo.rpc, "/websocket");
|
|
363
|
+
txTracer.addEventListener("close", onClose);
|
|
364
|
+
txTracer.addEventListener("error", onError);
|
|
315
365
|
txTracer.traceTx(txHash).then((tx) => {
|
|
316
366
|
txTracer.close();
|
|
317
367
|
|
|
@@ -342,6 +392,7 @@ export class RecentSendHistoryService {
|
|
|
342
392
|
firstChannel.channelId
|
|
343
393
|
);
|
|
344
394
|
|
|
395
|
+
onFulfill();
|
|
345
396
|
this.trackIBCPacketForwardingRecursive(id);
|
|
346
397
|
}
|
|
347
398
|
}
|
|
@@ -374,6 +425,8 @@ export class RecentSendHistoryService {
|
|
|
374
425
|
};
|
|
375
426
|
|
|
376
427
|
const txTracer = new TendermintTxTracer(chainInfo.rpc, "/websocket");
|
|
428
|
+
txTracer.addEventListener("close", onClose);
|
|
429
|
+
txTracer.addEventListener("error", onError);
|
|
377
430
|
txTracer.traceTx(queryEvents).then((res) => {
|
|
378
431
|
txTracer.close();
|
|
379
432
|
|
|
@@ -405,6 +458,7 @@ export class RecentSendHistoryService {
|
|
|
405
458
|
// XXX: {key: 'packet_ack', value: '{"error":"ABCI code: 6: error handling packet: see events for details"}'}
|
|
406
459
|
// 오류가 있을 경우 이딴식으로 오류가 나오기 때문에 뭐 유저에게 보여줄 방법이 없다...
|
|
407
460
|
targetChannel.error = "Packet processing failed";
|
|
461
|
+
onFulfill();
|
|
408
462
|
this.trackIBCPacketForwardingRecursive(id);
|
|
409
463
|
break;
|
|
410
464
|
}
|
|
@@ -444,6 +498,7 @@ export class RecentSendHistoryService {
|
|
|
444
498
|
nextChannel.channelId,
|
|
445
499
|
index
|
|
446
500
|
);
|
|
501
|
+
onFulfill();
|
|
447
502
|
this.trackIBCPacketForwardingRecursive(id);
|
|
448
503
|
break;
|
|
449
504
|
}
|
|
@@ -457,7 +512,7 @@ export class RecentSendHistoryService {
|
|
|
457
512
|
}
|
|
458
513
|
}
|
|
459
514
|
}
|
|
460
|
-
}
|
|
515
|
+
};
|
|
461
516
|
|
|
462
517
|
getRecentSendHistories(chainId: string, type: string): RecentSendHistory[] {
|
|
463
518
|
const key = `${ChainIdHelper.parse(chainId).identifier}/${type}`;
|