@@ -116,14 +116,20 @@ fn test_stake_create_and_split_single_signature() {
116
116
117
117
let staker_pubkey = staker_keypair. pubkey ( ) ;
118
118
119
- let bank_client = BankClient :: new_shared ( & Arc :: new ( Bank :: new_for_tests ( & genesis_config) ) ) ;
119
+ let bank = Arc :: new ( Bank :: new_for_tests ( & genesis_config) ) ;
120
+ let bank_client = BankClient :: new_shared ( & bank) ;
120
121
121
122
let stake_address =
122
123
Pubkey :: create_with_seed ( & staker_pubkey, "stake" , & stake:: program:: id ( ) ) . unwrap ( ) ;
123
124
124
125
let authorized = Authorized :: auto ( & staker_pubkey) ;
125
126
126
- let lamports = 1_000_000 ;
127
+ let lamports = {
128
+ let rent = & bank. rent_collector ( ) . rent ;
129
+ let rent_exempt_reserve = rent. minimum_balance ( StakeState :: size_of ( ) ) ;
130
+ let minimum_delegation = solana_stake_program:: get_minimum_delegation ( & bank. feature_set ) ;
131
+ 2 * ( rent_exempt_reserve + minimum_delegation)
132
+ } ;
127
133
128
134
// Create stake account with seed
129
135
let message = Message :: new (
@@ -186,14 +192,20 @@ fn test_stake_create_and_split_to_existing_system_account() {
186
192
187
193
let staker_pubkey = staker_keypair. pubkey ( ) ;
188
194
189
- let bank_client = BankClient :: new_shared ( & Arc :: new ( Bank :: new_for_tests ( & genesis_config) ) ) ;
195
+ let bank = Arc :: new ( Bank :: new_for_tests ( & genesis_config) ) ;
196
+ let bank_client = BankClient :: new_shared ( & bank) ;
190
197
191
198
let stake_address =
192
199
Pubkey :: create_with_seed ( & staker_pubkey, "stake" , & stake:: program:: id ( ) ) . unwrap ( ) ;
193
200
194
201
let authorized = Authorized :: auto ( & staker_pubkey) ;
195
202
196
- let lamports = 1_000_000 ;
203
+ let lamports = {
204
+ let rent = & bank. rent_collector ( ) . rent ;
205
+ let rent_exempt_reserve = rent. minimum_balance ( StakeState :: size_of ( ) ) ;
206
+ let minimum_delegation = solana_stake_program:: get_minimum_delegation ( & bank. feature_set ) ;
207
+ 2 * ( rent_exempt_reserve + minimum_delegation)
208
+ } ;
197
209
198
210
// Create stake account with seed
199
211
let message = Message :: new (
@@ -263,7 +275,7 @@ fn test_stake_account_lifetime() {
263
275
} = create_genesis_config_with_leader (
264
276
100_000_000_000 ,
265
277
& solana_sdk:: pubkey:: new_rand ( ) ,
266
- 1_000_000 ,
278
+ 2_000_000_000 ,
267
279
) ;
268
280
let bank = Bank :: new_for_tests ( & genesis_config) ;
269
281
let mint_pubkey = mint_keypair. pubkey ( ) ;
@@ -290,6 +302,14 @@ fn test_stake_account_lifetime() {
290
302
. expect ( "failed to create vote account" ) ;
291
303
292
304
let authorized = Authorized :: auto ( & stake_pubkey) ;
305
+ let minimum_delegation = {
306
+ let rent = & bank. rent_collector ( ) . rent ;
307
+ let rent_exempt_reserve = rent. minimum_balance ( StakeState :: size_of ( ) ) ;
308
+ assert_eq ! ( rent_exempt_reserve, 0 , "this test assumes rent is free" ) ;
309
+ solana_stake_program:: get_minimum_delegation ( & bank. feature_set )
310
+ } ;
311
+ let starting_balance = 2 * minimum_delegation;
312
+
293
313
// Create stake account and delegate to vote account
294
314
let message = Message :: new (
295
315
& stake_instruction:: create_account_and_delegate_stake (
@@ -298,7 +318,7 @@ fn test_stake_account_lifetime() {
298
318
& vote_pubkey,
299
319
& authorized,
300
320
& Lockup :: default ( ) ,
301
- 1_000_000 ,
321
+ starting_balance ,
302
322
) ,
303
323
Some ( & mint_pubkey) ,
304
324
) ;
@@ -310,7 +330,7 @@ fn test_stake_account_lifetime() {
310
330
let account = bank. get_account ( & stake_pubkey) . expect ( "account not found" ) ;
311
331
let stake_state = account. state ( ) . expect ( "couldn't unpack account data" ) ;
312
332
if let StakeState :: Stake ( _meta, stake) = stake_state {
313
- assert_eq ! ( stake. delegation. stake, 1_000_000 ) ;
333
+ assert_eq ! ( stake. delegation. stake, starting_balance ) ;
314
334
} else {
315
335
panic ! ( "wrong account type found" )
316
336
}
@@ -334,7 +354,7 @@ fn test_stake_account_lifetime() {
334
354
let account = bank. get_account ( & stake_pubkey) . expect ( "account not found" ) ;
335
355
let stake_state = account. state ( ) . expect ( "couldn't unpack account data" ) ;
336
356
if let StakeState :: Stake ( _meta, stake) = stake_state {
337
- assert_eq ! ( stake. delegation. stake, 1_000_000 ) ;
357
+ assert_eq ! ( stake. delegation. stake, starting_balance ) ;
338
358
} else {
339
359
panic ! ( "wrong account type found" )
340
360
}
@@ -372,7 +392,7 @@ fn test_stake_account_lifetime() {
372
392
let staked = get_staked ( & bank, & stake_pubkey) ;
373
393
let lamports = bank. get_balance ( & stake_pubkey) ;
374
394
assert ! ( staked > pre_staked) ;
375
- assert ! ( lamports > 1_000_000 ) ;
395
+ assert ! ( lamports > starting_balance ) ;
376
396
377
397
// split the stake
378
398
let split_stake_keypair = Keypair :: new ( ) ;
@@ -537,6 +557,13 @@ fn test_create_stake_account_from_seed() {
537
557
. expect ( "failed to create vote account" ) ;
538
558
539
559
let authorized = Authorized :: auto ( & mint_pubkey) ;
560
+ let ( balance, delegation) = {
561
+ let rent = & bank. rent_collector ( ) . rent ;
562
+ let rent_exempt_reserve = rent. minimum_balance ( StakeState :: size_of ( ) ) ;
563
+ let minimum_delegation = solana_stake_program:: get_minimum_delegation ( & bank. feature_set ) ;
564
+ ( rent_exempt_reserve + minimum_delegation, minimum_delegation)
565
+ } ;
566
+
540
567
// Create stake account and delegate to vote account
541
568
let message = Message :: new (
542
569
& stake_instruction:: create_account_with_seed_and_delegate_stake (
@@ -547,7 +574,7 @@ fn test_create_stake_account_from_seed() {
547
574
& vote_pubkey,
548
575
& authorized,
549
576
& Lockup :: default ( ) ,
550
- 1_000_000 ,
577
+ balance ,
551
578
) ,
552
579
Some ( & mint_pubkey) ,
553
580
) ;
@@ -559,7 +586,7 @@ fn test_create_stake_account_from_seed() {
559
586
let account = bank. get_account ( & stake_pubkey) . expect ( "account not found" ) ;
560
587
let stake_state = account. state ( ) . expect ( "couldn't unpack account data" ) ;
561
588
if let StakeState :: Stake ( _meta, stake) = stake_state {
562
- assert_eq ! ( stake. delegation. stake, 1_000_000 ) ;
589
+ assert_eq ! ( stake. delegation. stake, delegation ) ;
563
590
} else {
564
591
panic ! ( "wrong account type found" )
565
592
}
0 commit comments