@@ -11,7 +11,10 @@ use crate::{
11
11
error:: { CommonError , SvmError } ,
12
12
event:: FundsDeposited ,
13
13
state:: { Route , State } ,
14
- utils:: { derive_deposit_delegate_seed_hash, get_current_time, get_unsafe_deposit_id, transfer_from} ,
14
+ utils:: {
15
+ derive_deposit_now_seed_hash, derive_deposit_seed_hash, get_current_time, get_unsafe_deposit_id, transfer_from,
16
+ DepositNowSeedData , DepositSeedData ,
17
+ } ,
15
18
} ;
16
19
17
20
#[ event_cpi]
@@ -86,6 +89,7 @@ pub fn _deposit(
86
89
fill_deadline : u32 ,
87
90
exclusivity_parameter : u32 ,
88
91
message : Vec < u8 > ,
92
+ delegate_seed_hash : [ u8 ; 32 ] ,
89
93
) -> Result < ( ) > {
90
94
let state = & mut ctx. accounts . state ;
91
95
let current_time = get_current_time ( state) ?;
@@ -108,19 +112,7 @@ pub fn _deposit(
108
112
}
109
113
110
114
// Verify delegate PDA
111
- let seed_hash = derive_deposit_delegate_seed_hash (
112
- depositor,
113
- recipient,
114
- input_token,
115
- output_token,
116
- input_amount,
117
- output_amount,
118
- destination_chain_id,
119
- exclusive_relayer,
120
- exclusivity_parameter,
121
- message. clone ( ) ,
122
- ) ;
123
- let ( pda, bump) = Pubkey :: find_program_address ( & [ b"delegate" , & seed_hash] , & ctx. program_id ) ;
115
+ let ( pda, bump) = Pubkey :: find_program_address ( & [ b"delegate" , & delegate_seed_hash] , & ctx. program_id ) ;
124
116
if pda != ctx. accounts . delegate . key ( ) {
125
117
return err ! ( SvmError :: InvalidDelegatePda ) ;
126
118
}
@@ -133,7 +125,7 @@ pub fn _deposit(
133
125
& ctx. accounts . delegate ,
134
126
& ctx. accounts . mint ,
135
127
& ctx. accounts . token_program ,
136
- seed_hash ,
128
+ delegate_seed_hash ,
137
129
bump,
138
130
) ?;
139
131
@@ -178,6 +170,22 @@ pub fn deposit(
178
170
exclusivity_parameter : u32 ,
179
171
message : Vec < u8 > ,
180
172
) -> Result < ( ) > {
173
+ let seed_hash = derive_deposit_seed_hash (
174
+ & ( DepositSeedData {
175
+ depositor,
176
+ recipient,
177
+ input_token,
178
+ output_token,
179
+ input_amount,
180
+ output_amount,
181
+ destination_chain_id,
182
+ exclusive_relayer,
183
+ quote_timestamp,
184
+ fill_deadline,
185
+ exclusivity_parameter,
186
+ message : message. clone ( ) ,
187
+ } ) ,
188
+ ) ;
181
189
_deposit (
182
190
ctx,
183
191
depositor,
@@ -193,6 +201,7 @@ pub fn deposit(
193
201
fill_deadline,
194
202
exclusivity_parameter,
195
203
message,
204
+ seed_hash,
196
205
) ?;
197
206
198
207
Ok ( ( ) )
@@ -214,7 +223,22 @@ pub fn deposit_now(
214
223
) -> Result < ( ) > {
215
224
let state = & mut ctx. accounts . state ;
216
225
let current_time = get_current_time ( state) ?;
217
- deposit (
226
+ let seed_hash = derive_deposit_now_seed_hash (
227
+ & ( DepositNowSeedData {
228
+ depositor,
229
+ recipient,
230
+ input_token,
231
+ output_token,
232
+ input_amount,
233
+ output_amount,
234
+ destination_chain_id,
235
+ exclusive_relayer,
236
+ fill_deadline_offset,
237
+ exclusivity_period,
238
+ message : message. clone ( ) ,
239
+ } ) ,
240
+ ) ;
241
+ _deposit (
218
242
ctx,
219
243
depositor,
220
244
recipient,
@@ -224,10 +248,12 @@ pub fn deposit_now(
224
248
output_amount,
225
249
destination_chain_id,
226
250
exclusive_relayer,
251
+ ZERO_DEPOSIT_ID , // ZERO_DEPOSIT_ID informs internal function to use state.number_of_deposits as id.
227
252
current_time,
228
253
current_time + fill_deadline_offset,
229
254
exclusivity_period,
230
255
message,
256
+ seed_hash,
231
257
) ?;
232
258
233
259
Ok ( ( ) )
@@ -251,6 +277,22 @@ pub fn unsafe_deposit(
251
277
) -> Result < ( ) > {
252
278
// Calculate the unsafe deposit ID as a [u8; 32]
253
279
let deposit_id = get_unsafe_deposit_id ( ctx. accounts . signer . key ( ) , depositor, deposit_nonce) ;
280
+ let seed_hash = derive_deposit_seed_hash (
281
+ & ( DepositSeedData {
282
+ depositor,
283
+ recipient,
284
+ input_token,
285
+ output_token,
286
+ input_amount,
287
+ output_amount,
288
+ destination_chain_id,
289
+ exclusive_relayer,
290
+ quote_timestamp,
291
+ fill_deadline,
292
+ exclusivity_parameter,
293
+ message : message. clone ( ) ,
294
+ } ) ,
295
+ ) ;
254
296
_deposit (
255
297
ctx,
256
298
depositor,
@@ -266,6 +308,7 @@ pub fn unsafe_deposit(
266
308
fill_deadline,
267
309
exclusivity_parameter,
268
310
message,
311
+ seed_hash,
269
312
) ?;
270
313
271
314
Ok ( ( ) )
0 commit comments