@@ -14,7 +14,6 @@ import {
14
14
Wormhole ,
15
15
WormholeMessageId ,
16
16
amount ,
17
- canonicalAddress ,
18
17
finality ,
19
18
isAttested ,
20
19
isDestinationQueued ,
@@ -268,8 +267,13 @@ export class MultiTokenNttAutomaticRoute<N extends Network>
268
267
}
269
268
270
269
async resume ( tx : TransactionId ) : Promise < R > {
270
+ // TODO: this is a hack since whscan doesn't support looking up VAA by txid for monad devnet yet
271
+ const fromChain = this . wh . getChain ( tx . chain ) ;
272
+ const [ msg ] = await fromChain . parseTransaction ( tx . txid ) ;
273
+ if ( ! msg ) throw new Error ( "No Wormhole messages found" ) ;
274
+
271
275
const vaa = await this . wh . getVaa (
272
- tx . txid ,
276
+ msg ,
273
277
"Ntt:MultiTokenWormholeTransferStandardRelayer"
274
278
) ;
275
279
if ( ! vaa ) throw new Error ( "No VAA found for transaction: " + tx . txid ) ;
@@ -286,26 +290,32 @@ export class MultiTokenNttAutomaticRoute<N extends Network>
286
290
payload . nttManagerPayload . payload . data . token . token . tokenAddress ;
287
291
const { trimmedAmount } = payload . nttManagerPayload . payload . data ;
288
292
289
- const tokenId = Wormhole . tokenId ( vaa . emitterChain , sourceToken . toString ( ) ) ;
290
- const manager = canonicalAddress ( {
291
- chain : vaa . emitterChain ,
292
- address : payload [ "sourceNttManager" ] ,
293
- } ) ;
294
- // const fromMultiTokenNttManager = payload.nttManagerPayload.payload.callee;
295
-
296
- const srcInfo = MultiTokenNttRoute . resolveNttContracts (
297
- this . staticConfig ,
298
- tokenId
299
- ) ;
293
+ const tokenChain =
294
+ payload . nttManagerPayload . payload . data . token . token . chainId ;
295
+ const tokenId = Wormhole . tokenId ( tokenChain , sourceToken . toString ( ) ) ;
296
+ //const manager = canonicalAddress({
297
+ // chain: vaa.emitterChain,
298
+ // address: payload.nttManagerPayload.payload.callee,
299
+ //});
300
300
301
- const dstInfo = MultiTokenNttRoute . resolveDestinationNttContracts (
301
+ // const srcInfo = MultiTokenNttRoute.resolveNttContracts(
302
+ // this.staticConfig,
303
+ // tokenId
304
+ //);
305
+
306
+ //const dstInfo = MultiTokenNttRoute.resolveDestinationNttContracts(
307
+ // this.staticConfig,
308
+ // {
309
+ // chain: vaa.emitterChain,
310
+ // address: Wormhole.chainAddress(vaa.emitterChain, manager).address,
311
+ // },
312
+ // recipientChain
313
+ //);
314
+
315
+ const { srcInfo, dstInfo } = MultiTokenNttRoute . resolveNttContractsByToken (
302
316
this . staticConfig ,
303
- {
304
- chain : vaa . emitterChain ,
305
- // TODO: is sourceNttManager the same as fromMultiTokenNttManager (defined above)?
306
- address : Wormhole . chainAddress ( vaa . emitterChain , srcInfo . manager )
307
- . address ,
308
- } ,
317
+ tokenId ,
318
+ fromChain . chain ,
309
319
recipientChain
310
320
) ;
311
321
@@ -330,8 +340,8 @@ export class MultiTokenNttAutomaticRoute<N extends Network>
330
340
amount : amt ,
331
341
options : { queue : false , automatic : true } ,
332
342
sourceContracts : {
333
- token : tokenId . address . toString ( ) ,
334
- manager,
343
+ token : srcInfo . token ,
344
+ manager : srcInfo . manager ,
335
345
gmpManager : srcInfo . gmpManager ,
336
346
transceiver : {
337
347
wormhole : srcInfo . transceiver . wormhole ,
@@ -385,8 +395,13 @@ export class MultiTokenNttAutomaticRoute<N extends Network>
385
395
if ( isSourceInitiated ( receipt ) || isSourceFinalized ( receipt ) ) {
386
396
const { txid } = receipt . originTxs [ receipt . originTxs . length - 1 ] ! ;
387
397
398
+ // TODO: this is a hack since whscan doesn't support looking up VAA by txid for monad devnet yet
399
+ const fromChain = this . wh . getChain ( receipt . from ) ;
400
+ const [ msg ] = await fromChain . parseTransaction ( txid ) ;
401
+ if ( ! msg ) throw new Error ( "No Wormhole messages found" ) ;
402
+
388
403
const vaa = await this . wh . getVaa (
389
- txid ,
404
+ msg ,
390
405
"Ntt:MultiTokenWormholeTransferStandardRelayer" ,
391
406
timeout
392
407
) ;
0 commit comments