@@ -67,7 +67,7 @@ use staking::staking::staking::Staking::{
6767 DEFAULT_EXIT_WAIT_WINDOW , MAX_EXIT_WAIT_WINDOW , V3_PREV_CONTRACT_VERSION ,
6868};
6969use staking :: staking :: utils :: STRK_WEIGHT_FACTOR ;
70- use staking :: types :: {Epoch , InternalStakerInfoLatest , VecIndex };
70+ use staking :: types :: {Amount , Epoch , InternalStakerInfoLatest , VecIndex };
7171use staking :: {event_test_utils, test_utils};
7272use starknet :: class_hash :: ClassHash ;
7373use starknet :: {ContractAddress , Store , get_block_number};
@@ -3441,6 +3441,7 @@ fn test_update_rewards_from_attestation_contract_assertions() {
34413441 let attestation_contract = cfg . test_info. attestation_contract;
34423442 let staking_dispatcher = IStakingDispatcher { contract_address : staking_contract };
34433443 let staking_config_dispatcher = IStakingConfigDispatcher { contract_address : staking_contract };
3444+ advance_epoch_global ();
34443445 stake_for_testing_using_dispatcher (: cfg );
34453446
34463447 // Catch CALLER_IS_NOT_ATTESTATION_CONTRACT.
@@ -3492,6 +3493,7 @@ fn test_update_rewards_only_staker() {
34923493 };
34933494 let staking_config_dispatcher = IStakingConfigDispatcher { contract_address : staking_contract };
34943495 let minting_curve_contract = cfg . reward_supplier. minting_curve_contract;
3496+ advance_epoch_global ();
34953497 let current_epoch = staking_dispatcher . get_current_epoch ();
34963498 cheat_caller_address_once (
34973499 contract_address : staking_contract , caller_address : cfg . test_info. app_governor,
@@ -3533,6 +3535,7 @@ fn test_update_rewards_miss_blocks() {
35333535 };
35343536 let staking_config_dispatcher = IStakingConfigDispatcher { contract_address : staking_contract };
35353537 let minting_curve_contract = cfg . reward_supplier. minting_curve_contract;
3538+ advance_epoch_global ();
35363539 let current_epoch = staking_dispatcher . get_current_epoch ();
35373540 cheat_caller_address_once (
35383541 contract_address : staking_contract , caller_address : cfg . test_info. app_governor,
@@ -3570,6 +3573,7 @@ fn test_update_rewards_with_strk_pool() {
35703573 let token = cfg . test_info. strk_token;
35713574 let token_address = token . contract_address ();
35723575 let token_dispatcher = IERC20Dispatcher { contract_address : token_address };
3576+ advance_epoch_global ();
35733577 let current_epoch = staking_dispatcher . get_current_epoch ();
35743578 cheat_caller_address_once (
35753579 contract_address : staking_contract , caller_address : cfg . test_info. app_governor,
@@ -3658,6 +3662,7 @@ fn test_update_rewards_with_both_strk_and_btc() {
36583662 let btc_token = cfg . test_info. btc_token;
36593663 let btc_token_address = btc_token . contract_address ();
36603664 let token_dispatcher = IERC20Dispatcher { contract_address : token_address };
3665+ advance_epoch_global ();
36613666 let current_epoch = staking_dispatcher . get_current_epoch ();
36623667 cheat_caller_address_once (
36633668 contract_address : staking_contract , caller_address : cfg . test_info. app_governor,
@@ -3910,6 +3915,7 @@ fn test_update_rewards_assertions_already_consensus() {
39103915 };
39113916 let staking_config_dispatcher = IStakingConfigDispatcher { contract_address : staking_contract };
39123917 let staker_address = cfg . test_info. staker_address;
3918+ advance_epoch_global ();
39133919 let current_epoch = staking_dispatcher . get_current_epoch ();
39143920 cheat_caller_address_once (
39153921 contract_address : staking_contract , caller_address : cfg . test_info. app_governor,
@@ -4566,6 +4572,9 @@ fn test_set_consensus_rewards_first_epoch() {
45664572 let staking_safe_config_dispatcher = IStakingConfigSafeDispatcher {
45674573 contract_address : staking_contract ,
45684574 };
4575+ let minting_curve_contract = cfg . reward_supplier. minting_curve_contract;
4576+ stake_for_testing_using_dispatcher (: cfg );
4577+ advance_k_epochs_global ();
45694578 let current_epoch = staking_dispatcher . get_current_epoch ();
45704579 let mut spy = snforge_std :: spy_events ();
45714580 cheat_caller_address_once (
@@ -4578,6 +4587,31 @@ fn test_set_consensus_rewards_first_epoch() {
45784587 . try_into ()
45794588 . unwrap ();
45804589 assert! (consensus_rewards_first_epoch == current_epoch + 2 );
4590+ // Test that block rewards are initialized.
4591+ let block_rewards = snforge_std :: load (
4592+ target : staking_contract ,
4593+ storage_address : selector! (" block_rewards" ),
4594+ size : Store :: <(Amount , Amount )>:: size (). into (),
4595+ )
4596+ . span ();
4597+ let strk_block_rewards = (* block_rewards . at (0 )). try_into (). unwrap ();
4598+ let btc_block_rewards = (* block_rewards . at (1 )). try_into (). unwrap ();
4599+ let (expected_strk_block_rewards , expected_btc_block_rewards ) =
4600+ calculate_current_block_rewards_v3 (
4601+ : minting_curve_contract ,
4602+ );
4603+ assert! (expected_strk_block_rewards . is_non_zero ());
4604+ assert! (expected_btc_block_rewards . is_non_zero ());
4605+ assert! (strk_block_rewards == expected_strk_block_rewards );
4606+ assert! (btc_block_rewards == expected_btc_block_rewards );
4607+ let last_calculated_epoch = load_one_felt (
4608+ target : staking_contract , storage_address : selector! (" last_calculated_epoch" ),
4609+ )
4610+ . try_into ()
4611+ . unwrap ();
4612+ let expected_last_calculated_epoch = current_epoch + 1 ;
4613+ assert! (last_calculated_epoch == expected_last_calculated_epoch );
4614+ // Test that event is emitted.
45814615 let events = spy . get_events (). emitted_by (contract_address : staking_contract ). events;
45824616 assert_number_of_events (
45834617 actual : events . len (), expected : 1 , message : " set_consensus_rewards_first_epoch" ,
@@ -4597,6 +4631,23 @@ fn test_set_consensus_rewards_first_epoch() {
45974631 . try_into ()
45984632 . unwrap ();
45994633 assert! (consensus_rewards_first_epoch == current_epoch + 4 );
4634+ // Test that block rewards are initialized.
4635+ let block_rewards = snforge_std :: load (
4636+ target : staking_contract ,
4637+ storage_address : selector! (" block_rewards" ),
4638+ size : Store :: <(Amount , Amount )>:: size (). into (),
4639+ )
4640+ . span ();
4641+ let strk_block_rewards = (* block_rewards . at (0 )). try_into (). unwrap ();
4642+ let btc_block_rewards = (* block_rewards . at (1 )). try_into (). unwrap ();
4643+ assert! (strk_block_rewards == expected_strk_block_rewards );
4644+ assert! (btc_block_rewards == expected_btc_block_rewards );
4645+ let last_calculated_epoch = load_one_felt (
4646+ target : staking_contract , storage_address : selector! (" last_calculated_epoch" ),
4647+ )
4648+ . try_into ()
4649+ . unwrap ();
4650+ assert! (last_calculated_epoch == expected_last_calculated_epoch );
46004651 // Set consensus rewards epoch again with earlier epoch.
46014652 cheat_caller_address_once (
46024653 contract_address : staking_contract , caller_address : cfg . test_info. app_governor,
@@ -4608,6 +4659,23 @@ fn test_set_consensus_rewards_first_epoch() {
46084659 . try_into ()
46094660 . unwrap ();
46104661 assert! (consensus_rewards_first_epoch == current_epoch + 3 );
4662+ // Test that block rewards are initialized.
4663+ let block_rewards = snforge_std :: load (
4664+ target : staking_contract ,
4665+ storage_address : selector! (" block_rewards" ),
4666+ size : Store :: <(Amount , Amount )>:: size (). into (),
4667+ )
4668+ . span ();
4669+ let strk_block_rewards = (* block_rewards . at (0 )). try_into (). unwrap ();
4670+ let btc_block_rewards = (* block_rewards . at (1 )). try_into (). unwrap ();
4671+ assert! (strk_block_rewards == expected_strk_block_rewards );
4672+ assert! (btc_block_rewards == expected_btc_block_rewards );
4673+ let last_calculated_epoch = load_one_felt (
4674+ target : staking_contract , storage_address : selector! (" last_calculated_epoch" ),
4675+ )
4676+ . try_into ()
4677+ . unwrap ();
4678+ assert! (last_calculated_epoch == expected_last_calculated_epoch );
46114679 // Set consensus rewards epoch again when currently set to current epoch + 1.
46124680 advance_k_epochs_global ();
46134681 let current_epoch = staking_dispatcher . get_current_epoch ();
@@ -4621,6 +4689,23 @@ fn test_set_consensus_rewards_first_epoch() {
46214689 . try_into ()
46224690 . unwrap ();
46234691 assert! (consensus_rewards_first_epoch == current_epoch + 2 );
4692+ // Test that block rewards are initialized.
4693+ let block_rewards = snforge_std :: load (
4694+ target : staking_contract ,
4695+ storage_address : selector! (" block_rewards" ),
4696+ size : Store :: <(Amount , Amount )>:: size (). into (),
4697+ )
4698+ . span ();
4699+ let strk_block_rewards = (* block_rewards . at (0 )). try_into (). unwrap ();
4700+ let btc_block_rewards = (* block_rewards . at (1 )). try_into (). unwrap ();
4701+ assert! (strk_block_rewards == expected_strk_block_rewards );
4702+ assert! (btc_block_rewards == expected_btc_block_rewards );
4703+ let last_calculated_epoch = load_one_felt (
4704+ target : staking_contract , storage_address : selector! (" last_calculated_epoch" ),
4705+ )
4706+ . try_into ()
4707+ . unwrap ();
4708+ assert! (last_calculated_epoch == expected_last_calculated_epoch );
46244709 // Advance to consensus rewards and test that consensus rewards epoch cannot be changed.
46254710 advance_k_epochs_global ();
46264711 let current_epoch = staking_dispatcher . get_current_epoch ();
@@ -4643,6 +4728,7 @@ fn test_set_consensus_rewards_first_epoch_assertions() {
46434728 let staking_safe_config_dispatcher = IStakingConfigSafeDispatcher {
46444729 contract_address : staking_contract ,
46454730 };
4731+ advance_epoch_global ();
46464732 let current_epoch = staking_dispatcher . get_current_epoch ();
46474733
46484734 // Catch ONLY_APP_GOVERNOR.
0 commit comments