From 55431394dc2dd884bbe6686254c2c71ecf066ea7 Mon Sep 17 00:00:00 2001 From: vanjatomic Date: Wed, 8 Oct 2025 12:17:18 +0100 Subject: [PATCH 1/2] Add multipliers test --- tests/delegations/delegations_test.go | 60 +++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/tests/delegations/delegations_test.go b/tests/delegations/delegations_test.go index 65b5f7c..09d683b 100644 --- a/tests/delegations/delegations_test.go +++ b/tests/delegations/delegations_test.go @@ -345,6 +345,66 @@ func Test_Delegations(t *testing.T) { assert.Equal(t, expectedWeight, totalsAfterWithdrawal.TotalLockedWeight, "Validator should have the correct total weight after withdrawal") }) + + t.Run("One exiting delegator should not change the weight", func(t *testing.T) { + t.Parallel() + + validator, err := staker.GetValidation(validationIDs[3]) + require.NoError(t, err) + + for _, acc := range hayabusa.ValidatorAccounts { + if acc.Node.Address().String() == validator.Address.String() { + break + } + } + + // add the delegation + receipt := testutil.Send(t, hayabusa.Stargate, + staker.AddDelegation(validationIDs[3], builtin.MinStake(), 100)) + require.NoError(t, err) + delegationID1 := testutil.ReceiptToID(receipt) + delegation1, err := staker.GetDelegation(delegationID1) + require.NoError(t, err) + assert.Equal(t, builtin.MinStake(), delegation1.Stake) + assert.Equal(t, uint8(100), delegation1.Multiplier) + assert.False(t, delegation1.Locked) + + // add the delegation + receipt = testutil.Send(t, hayabusa.Stargate, + staker.AddDelegation(validationIDs[3], builtin.MinStake(), 100)) + delegationID2 := testutil.ReceiptToID(receipt) + delegation2, err := staker.GetDelegation(delegationID2) + require.NoError(t, err) + assert.Equal(t, builtin.MinStake(), delegation2.Stake) + assert.Equal(t, uint8(100), delegation2.Multiplier) + assert.False(t, delegation2.Locked) + + require.NoError(t, ticker.WaitForBlock(receipt.Meta.BlockNumber+config.MinStakingPeriod*1)) + + validator, err = staker.GetValidation(validationIDs[3]) + expectedWeight := big.NewInt(0).Mul(validator.Stake, big.NewInt(2)) + expectedWeight = big.NewInt(0).Add(expectedWeight, big.NewInt(0).Mul(builtin.MinStake(), big.NewInt(2))) + + assert.Equal(t, expectedWeight, validator.Weight) + receipt = testutil.Send(t, hayabusa.Stargate, staker.SignalDelegationExit(delegationID1)) + + validator, err = staker.GetValidation(validationIDs[3]) + expectedWeight = big.NewInt(0).Mul(validator.Stake, big.NewInt(2)) + expectedWeight = big.NewInt(0).Add(expectedWeight, builtin.MinStake()) + + require.NoError(t, ticker.WaitForBlock(receipt.Meta.BlockNumber+config.MinStakingPeriod*2)) + validator, err = staker.GetValidation(validationIDs[3]) + expectedWeight = big.NewInt(0).Mul(validator.Stake, big.NewInt(2)) + expectedWeight = big.NewInt(0).Add(expectedWeight, builtin.MinStake()) + assert.Equal(t, expectedWeight, validator.Weight) + + receipt = testutil.Send(t, hayabusa.Stargate, staker.SignalDelegationExit(delegationID2)) + + require.NoError(t, ticker.WaitForBlock(receipt.Meta.BlockNumber+config.MinStakingPeriod*3)) + validator, err = staker.GetValidation(validationIDs[3]) + expectedWeight = validator.Stake + assert.Equal(t, expectedWeight, validator.Weight) + }) } func newDelegationSetup(t *testing.T) (*builtin.Staker, *hayabusa.Config, [6]thor.Address) { From 1c720546c2b1e6da3e39ca1dc604f0ac241f490a Mon Sep 17 00:00:00 2001 From: vanjatomic Date: Wed, 8 Oct 2025 12:59:57 +0100 Subject: [PATCH 2/2] Shift to another validator --- tests/delegations/delegations_test.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/delegations/delegations_test.go b/tests/delegations/delegations_test.go index 59cd30c..ba9ae00 100644 --- a/tests/delegations/delegations_test.go +++ b/tests/delegations/delegations_test.go @@ -349,7 +349,7 @@ func Test_Delegations(t *testing.T) { t.Run("One exiting delegator should not change the weight", func(t *testing.T) { t.Parallel() - validator, err := staker.GetValidation(validationIDs[3]) + validator, err := staker.GetValidation(validationIDs[4]) require.NoError(t, err) for _, acc := range hayabusa.ValidatorAccounts { @@ -360,7 +360,7 @@ func Test_Delegations(t *testing.T) { // add the delegation receipt := testutil.Send(t, hayabusa.Stargate, - staker.AddDelegation(validationIDs[3], builtin.MinStake(), 100)) + staker.AddDelegation(validationIDs[4], builtin.MinStake(), 100)) require.NoError(t, err) delegationID1 := testutil.ReceiptToID(receipt) delegation1, err := staker.GetDelegation(delegationID1) @@ -371,7 +371,7 @@ func Test_Delegations(t *testing.T) { // add the delegation receipt = testutil.Send(t, hayabusa.Stargate, - staker.AddDelegation(validationIDs[3], builtin.MinStake(), 100)) + staker.AddDelegation(validationIDs[4], builtin.MinStake(), 100)) delegationID2 := testutil.ReceiptToID(receipt) delegation2, err := staker.GetDelegation(delegationID2) require.NoError(t, err) @@ -381,19 +381,19 @@ func Test_Delegations(t *testing.T) { require.NoError(t, ticker.WaitForBlock(receipt.Meta.BlockNumber+config.MinStakingPeriod*1)) - validator, err = staker.GetValidation(validationIDs[3]) + validator, err = staker.GetValidation(validationIDs[4]) expectedWeight := big.NewInt(0).Mul(validator.Stake, big.NewInt(2)) expectedWeight = big.NewInt(0).Add(expectedWeight, big.NewInt(0).Mul(builtin.MinStake(), big.NewInt(2))) assert.Equal(t, expectedWeight, validator.Weight) receipt = testutil.Send(t, hayabusa.Stargate, staker.SignalDelegationExit(delegationID1)) - validator, err = staker.GetValidation(validationIDs[3]) + validator, err = staker.GetValidation(validationIDs[4]) expectedWeight = big.NewInt(0).Mul(validator.Stake, big.NewInt(2)) expectedWeight = big.NewInt(0).Add(expectedWeight, builtin.MinStake()) require.NoError(t, ticker.WaitForBlock(receipt.Meta.BlockNumber+config.MinStakingPeriod*2)) - validator, err = staker.GetValidation(validationIDs[3]) + validator, err = staker.GetValidation(validationIDs[4]) expectedWeight = big.NewInt(0).Mul(validator.Stake, big.NewInt(2)) expectedWeight = big.NewInt(0).Add(expectedWeight, builtin.MinStake()) assert.Equal(t, expectedWeight, validator.Weight) @@ -401,7 +401,7 @@ func Test_Delegations(t *testing.T) { receipt = testutil.Send(t, hayabusa.Stargate, staker.SignalDelegationExit(delegationID2)) require.NoError(t, ticker.WaitForBlock(receipt.Meta.BlockNumber+config.MinStakingPeriod*3)) - validator, err = staker.GetValidation(validationIDs[3]) + validator, err = staker.GetValidation(validationIDs[4]) expectedWeight = validator.Stake assert.Equal(t, expectedWeight, validator.Weight) })