@@ -22,12 +22,12 @@ import { EVM_PRIVATE_KEY } from "./consts";
22
22
import type { ChainConfig } from "./chains" ;
23
23
24
24
async function getWormholeMessage (
25
- chainConfig : ChainConfig ,
25
+ rpc : string ,
26
26
txHash : Hex ,
27
27
coreContractAddress : Hex ,
28
- ) : Promise < Record < string , VAA < "Uint8Array" > > | undefined > {
29
- console . log ( `Mocking guardian signatures for ${ chainConfig . rpc } ${ txHash } ` ) ;
30
- const transport = http ( chainConfig . rpc ) ;
28
+ ) : Promise < VAA < "Uint8Array" > | undefined > {
29
+ console . log ( `Mocking guardian signatures for ${ rpc } ${ txHash } ` ) ;
30
+ const transport = http ( rpc ) ;
31
31
const client = createPublicClient ( {
32
32
chain : anvil ,
33
33
transport,
@@ -47,15 +47,14 @@ async function getWormholeMessage(
47
47
abi : CORE_ABI ,
48
48
logs : transaction . logs ,
49
49
} ) ;
50
- const transactionVAAs : Record < string , VAA < "Uint8Array" > > = { } ;
51
50
52
- // @TODO - Emitter + Sequence
53
51
for ( const topic of topics ) {
54
52
if (
55
53
topic . removed === false &&
56
54
isAddressEqual ( topic . address , coreContractAddress )
57
55
) {
58
56
const emitter = topic . args . sender ;
57
+ const paddedEmitter = padHex ( emitter , { dir : "left" , size : 32 } ) ;
59
58
const vaa = createVAA ( "Uint8Array" , {
60
59
guardianSet : guardianSetIndex ,
61
60
timestamp : Number (
@@ -78,44 +77,35 @@ async function getWormholeMessage(
78
77
payload : toBytes ( topic . args . payload ) ,
79
78
} ) ;
80
79
81
- const vaaId = `${ chainConfig . wormholeChainId } /${ padHex ( emitter , { dir : "left" , size : 32 } ) . substring ( 2 ) } /${ topic . args . sequence . toString ( ) } ` ;
82
-
83
- transactionVAAs [ vaaId ] = vaa ;
80
+ const vaaId = `${ chainId } /${ padHex ( emitter , { dir : "left" , size : 32 } ) . substring ( 2 ) } /${ topic . args . sequence . toString ( ) } ` ;
81
+ if (
82
+ vaaId ===
83
+ `${ chainId } /${ paddedEmitter . substring ( 2 ) } /${ vaa . sequence . toString ( ) } `
84
+ ) {
85
+ return vaa ;
86
+ }
84
87
}
85
88
}
86
-
87
- return transactionVAAs ;
88
89
}
89
90
90
91
/**
91
92
* returns a base64 string like a guardian /v1/signed_vaa/
92
93
*/
93
94
export async function mockWormhole (
94
- chainConfig : ChainConfig ,
95
+ rpc : string ,
95
96
txHash : Hex ,
96
97
coreContractAddress : Hex ,
97
98
vaaId : string ,
98
99
) : Promise < string > {
99
- const vaas = await getWormholeMessage (
100
- chainConfig ,
101
- txHash ,
102
- coreContractAddress ,
103
- ) ;
104
- if ( ! vaas ) {
105
- throw new Error ( `Vaa not found for txHash: ${ txHash } .` ) ;
106
- }
107
-
108
- console . log ( Object . keys ( vaas ) ) ;
109
-
110
- const expectedVaa = vaas [ vaaId ] ;
100
+ const vaa = await getWormholeMessage ( rpc , txHash , coreContractAddress ) ;
111
101
112
- if ( ! expectedVaa ) {
113
- throw new Error ( `Vaa not found for vaa ID: ${ vaaId } . ` ) ;
102
+ if ( ! vaa ) {
103
+ throw new Error ( `Vaa not found for txHash: ${ txHash } and Vaa ID ${ vaaId } ` ) ;
114
104
}
115
105
116
106
const guardianSet = new mocks . MockGuardians ( 0 , [
117
107
EVM_PRIVATE_KEY . substring ( 2 ) ,
118
108
] ) ;
119
- const signedVaa = guardianSet . addSignatures ( expectedVaa ) ;
109
+ const signedVaa = guardianSet . addSignatures ( vaa ) ;
120
110
return Buffer . from ( serialize ( signedVaa ) ) . toString ( "base64" ) ;
121
111
}
0 commit comments