@@ -21,7 +21,7 @@ use casper_execution_engine::{
2121 engine_state:: { engine_config:: DEFAULT_MINIMUM_DELEGATION_AMOUNT , Error } ,
2222 execution:: ExecError ,
2323} ;
24- use casper_storage:: data_access_layer:: { GenesisRequest , HandleFeeMode } ;
24+ use casper_storage:: data_access_layer:: { AuctionMethod , GenesisRequest , HandleFeeMode } ;
2525
2626use crate :: lmdb_fixture;
2727use casper_types:: {
@@ -836,8 +836,8 @@ fn should_forcibly_undelegate_after_setting_validator_limits() {
836836 ARG_PUBLIC_KEY => NON_FOUNDER_VALIDATOR_1_PK . clone( ) ,
837837 ARG_AMOUNT => U512 :: from( 1_000 ) ,
838838 ARG_DELEGATION_RATE => ADD_BID_DELEGATION_RATE_1 ,
839- ARG_MINIMUM_DELEGATION_AMOUNT => DELEGATE_AMOUNT_2 + 1_000 ,
840- ARG_MAXIMUM_DELEGATION_AMOUNT => DELEGATE_AMOUNT_1 - 1_000 ,
839+ ARG_MINIMUM_DELEGATION_AMOUNT => DELEGATE_AMOUNT_2 + 1_000 , // 100
840+ ARG_MAXIMUM_DELEGATION_AMOUNT => DELEGATE_AMOUNT_1 - 1_000 , // 1000
841841 } ,
842842 )
843843 . build ( ) ;
@@ -5961,3 +5961,134 @@ fn should_mark_bids_with_less_than_minimum_bid_amount_as_inactive_via_upgrade()
59615961
59625962 assert ! ( bid. inactive( ) )
59635963}
5964+
5965+ #[ ignore]
5966+ #[ test]
5967+ fn should_correctly_allow_validator_to_change_delegator_min_max_limits ( ) {
5968+ let validator_1_fund_request = ExecuteRequestBuilder :: standard (
5969+ * DEFAULT_ACCOUNT_ADDR ,
5970+ CONTRACT_TRANSFER_TO_ACCOUNT ,
5971+ runtime_args ! {
5972+ ARG_TARGET => * NON_FOUNDER_VALIDATOR_1_ADDR ,
5973+ ARG_AMOUNT => U512 :: from( TRANSFER_AMOUNT )
5974+ } ,
5975+ )
5976+ . build ( ) ;
5977+
5978+ let mut builder = LmdbWasmTestBuilder :: default ( ) ;
5979+
5980+ builder. run_genesis ( LOCAL_GENESIS_REQUEST . clone ( ) ) ;
5981+
5982+ builder
5983+ . exec ( validator_1_fund_request)
5984+ . expect_success ( )
5985+ . commit ( ) ;
5986+
5987+ let result = builder. bidding (
5988+ None ,
5989+ DEFAULT_PROTOCOL_VERSION ,
5990+ ( * NON_FOUNDER_VALIDATOR_1_ADDR ) . into ( ) ,
5991+ AuctionMethod :: AddBid {
5992+ public_key : NON_FOUNDER_VALIDATOR_1_PK . clone ( ) ,
5993+ delegation_rate : 10 ,
5994+ amount : U512 :: from ( ADD_BID_AMOUNT_1 ) ,
5995+ minimum_delegation_amount : Some ( DEFAULT_MINIMUM_DELEGATION_AMOUNT + 10 ) ,
5996+ maximum_delegation_amount : Some ( DEFAULT_MAXIMUM_DELEGATION_AMOUNT - 10 ) ,
5997+ minimum_bid_amount : DEFAULT_MINIMUM_BID_AMOUNT ,
5998+ reserved_slots : 0 ,
5999+ } ,
6000+ ) ;
6001+
6002+ assert ! ( result. is_success( ) ) ;
6003+ builder. commit_transforms ( builder. get_post_state_hash ( ) , result. effects ( ) ) ;
6004+ let validator_public_key = NON_FOUNDER_VALIDATOR_1_PK . clone ( ) ;
6005+
6006+ let bid = builder
6007+ . get_bids ( )
6008+ . into_iter ( )
6009+ . find ( |bid| bid. validator_public_key ( ) == validator_public_key)
6010+ . expect ( "must have bid for the validator" )
6011+ . as_validator_bid ( )
6012+ . expect ( "must get validator bid" ) ;
6013+
6014+ assert_eq ! (
6015+ bid. minimum_delegation_amount( ) ,
6016+ DEFAULT_MINIMUM_DELEGATION_AMOUNT + 10
6017+ ) ;
6018+
6019+ let result = builder. bidding (
6020+ None ,
6021+ DEFAULT_PROTOCOL_VERSION ,
6022+ ( * NON_FOUNDER_VALIDATOR_1_ADDR ) . into ( ) ,
6023+ AuctionMethod :: AddBid {
6024+ public_key : NON_FOUNDER_VALIDATOR_1_PK . clone ( ) ,
6025+ delegation_rate : 10 ,
6026+ amount : U512 :: from ( ADD_BID_AMOUNT_1 ) ,
6027+ minimum_delegation_amount : Some ( DEFAULT_MINIMUM_DELEGATION_AMOUNT + 5 ) ,
6028+ maximum_delegation_amount : None ,
6029+ minimum_bid_amount : DEFAULT_MINIMUM_BID_AMOUNT ,
6030+ reserved_slots : 0 ,
6031+ } ,
6032+ ) ;
6033+
6034+ assert ! ( result. is_success( ) ) ;
6035+ builder. commit_transforms ( builder. get_post_state_hash ( ) , result. effects ( ) ) ;
6036+
6037+ let validator_public_key = NON_FOUNDER_VALIDATOR_1_PK . clone ( ) ;
6038+
6039+ let bid = builder
6040+ . get_bids ( )
6041+ . into_iter ( )
6042+ . find ( |bid| bid. validator_public_key ( ) == validator_public_key)
6043+ . expect ( "must have bid for the validator" )
6044+ . as_validator_bid ( )
6045+ . expect ( "must get validator bid" ) ;
6046+
6047+ assert_eq ! (
6048+ bid. minimum_delegation_amount( ) ,
6049+ DEFAULT_MINIMUM_DELEGATION_AMOUNT + 5
6050+ ) ;
6051+
6052+ assert_eq ! (
6053+ bid. maximum_delegation_amount( ) ,
6054+ DEFAULT_MAXIMUM_DELEGATION_AMOUNT - 10
6055+ ) ;
6056+
6057+ let result = builder. bidding (
6058+ None ,
6059+ DEFAULT_PROTOCOL_VERSION ,
6060+ ( * NON_FOUNDER_VALIDATOR_1_ADDR ) . into ( ) ,
6061+ AuctionMethod :: AddBid {
6062+ public_key : NON_FOUNDER_VALIDATOR_1_PK . clone ( ) ,
6063+ delegation_rate : 10 ,
6064+ amount : U512 :: from ( ADD_BID_AMOUNT_1 ) ,
6065+ minimum_delegation_amount : None ,
6066+ maximum_delegation_amount : Some ( DEFAULT_MAXIMUM_DELEGATION_AMOUNT - 5 ) ,
6067+ minimum_bid_amount : DEFAULT_MINIMUM_BID_AMOUNT ,
6068+ reserved_slots : 0 ,
6069+ } ,
6070+ ) ;
6071+
6072+ assert ! ( result. is_success( ) ) ;
6073+ builder. commit_transforms ( builder. get_post_state_hash ( ) , result. effects ( ) ) ;
6074+
6075+ let validator_public_key = NON_FOUNDER_VALIDATOR_1_PK . clone ( ) ;
6076+
6077+ let bid = builder
6078+ . get_bids ( )
6079+ . into_iter ( )
6080+ . find ( |bid| bid. validator_public_key ( ) == validator_public_key)
6081+ . expect ( "must have bid for the validator" )
6082+ . as_validator_bid ( )
6083+ . expect ( "must get validator bid" ) ;
6084+
6085+ assert_eq ! (
6086+ bid. minimum_delegation_amount( ) ,
6087+ DEFAULT_MINIMUM_DELEGATION_AMOUNT + 5
6088+ ) ;
6089+
6090+ assert_eq ! (
6091+ bid. maximum_delegation_amount( ) ,
6092+ DEFAULT_MAXIMUM_DELEGATION_AMOUNT - 5
6093+ ) ;
6094+ }
0 commit comments