Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/iliad' into release/0.10
Browse files Browse the repository at this point in the history
  • Loading branch information
leeren committed Sep 29, 2024
2 parents 9603826 + 5328fa6 commit 57567e5
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 42 deletions.
36 changes: 29 additions & 7 deletions client/x/evmstaking/keeper/abci.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,17 +90,39 @@ func (k *Keeper) EndBlock(ctx context.Context) (abci.ValidatorUpdates, error) {
}

for _, entry := range unbondedEntries {
log.Debug(ctx, "Adding undelegation to withdrawal queue",
"delegator", entry.delegatorAddress,
"validator", entry.validatorAddress,
"amount", entry.amount.String())

delegatorAddr, err := k.authKeeper.AddressCodec().StringToBytes(entry.delegatorAddress)
if err != nil {
return nil, errors.Wrap(err, "delegator address from bech32")
}

maxAmount := k.bankKeeper.SpendableCoin(ctx, delegatorAddr, sdk.DefaultBondDenom).Amount
if maxAmount.IsZero() {
log.Warn(ctx, "No spendable coins for undelegation",
errors.New("no spendable coins for undelegation"),
"delegator", entry.delegatorAddress,
"validator", entry.validatorAddress,
"original_amount", entry.amount.String())

continue
}

if entry.amount.LT(maxAmount) {
maxAmount = entry.amount
log.Warn(ctx, "Undelegation amount is less than max amount",
errors.New("undelegation amount is less than max amount"),
"delegator", entry.delegatorAddress,
"validator", entry.validatorAddress,
"original_amount", entry.amount.String(),
"max_amount", maxAmount.String())
}

log.Debug(ctx, "Adding undelegation to withdrawal queue",
"delegator", entry.delegatorAddress,
"validator", entry.validatorAddress,
"max_amount", maxAmount.String())

// Burn tokens from the delegator
_, coins := IPTokenToBondCoin(entry.amount.BigInt())
_, coins := IPTokenToBondCoin(maxAmount.BigInt())
err = k.bankKeeper.SendCoinsFromAccountToModule(ctx, delegatorAddr, types.ModuleName, coins)
if err != nil {
return nil, errors.Wrap(err, "send coins from account to module")
Expand All @@ -123,7 +145,7 @@ func (k *Keeper) EndBlock(ctx context.Context) (abci.ValidatorUpdates, error) {
entry.delegatorAddress,
entry.validatorAddress,
delEvmAddr,
entry.amount.Uint64(),
maxAmount.Uint64(),
))
if err != nil {
return nil, err
Expand Down
6 changes: 6 additions & 0 deletions client/x/evmstaking/keeper/abci_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import (
"testing"
"time"

sdkmath "cosmossdk.io/math"

abcitypes "github.com/cometbft/cometbft/abci/types"
sdk "github.com/cosmos/cosmos-sdk/types"
dtypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
Expand Down Expand Up @@ -363,6 +365,7 @@ func compareValUpdates(t *testing.T, expected, actual abcitypes.ValidatorUpdates

// setupMaturedUnbonding creates matured unbondings for testing.
func (s *TestSuite) setupMatureUnbondingDelegation(ctx sdk.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress, amt string, duration time.Duration) {
require := s.Require()
pastHeader := ctx.BlockHeader()
pastHeader.Time = pastHeader.Time.Add(-duration).Add(-time.Minute)
pastCtx := ctx.WithBlockHeader(pastHeader)
Expand All @@ -372,6 +375,9 @@ func (s *TestSuite) setupMatureUnbondingDelegation(ctx sdk.Context, delAddr sdk.
// Mock staking.EndBlocker
s.BankKeeper.EXPECT().UndelegateCoinsFromModuleToAccount(gomock.Any(), stypes.NotBondedPoolName, delAddr, gomock.Any()).Return(nil)
// Mock evmstaking.EndBlocker
amtInt, ok := sdkmath.NewIntFromString(amt)
require.True(ok)
s.BankKeeper.EXPECT().SpendableCoin(gomock.Any(), delAddr, sdk.DefaultBondDenom).Return(sdk.NewCoin(sdk.DefaultBondDenom, amtInt))
s.BankKeeper.EXPECT().SendCoinsFromAccountToModule(gomock.Any(), delAddr, types.ModuleName, gomock.Any()).Return(nil)
s.BankKeeper.EXPECT().BurnCoins(gomock.Any(), types.ModuleName, gomock.Any()).Return(nil)
}
52 changes: 18 additions & 34 deletions client/x/evmstaking/testutil/expected_keepers_mocks.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions client/x/evmstaking/types/expected_keepers.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ type BankKeeper interface {
GetAllBalances(ctx context.Context, addr sdk.AccAddress) sdk.Coins
LockedCoins(ctx context.Context, addr sdk.AccAddress) sdk.Coins
SpendableCoins(ctx context.Context, addr sdk.AccAddress) sdk.Coins
SpendableCoin(ctx context.Context, addr sdk.AccAddress, denom string) sdk.Coin
GetSupply(ctx context.Context, denom string) sdk.Coin
SendCoinsFromModuleToModule(ctx context.Context, senderPool, recipientPool string, amt sdk.Coins) error
}
Expand Down
2 changes: 1 addition & 1 deletion lib/buildinfo/buildinfo.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import (
const (
VersionMajor = 0 // Major version component of the current release
VersionMinor = 10 // Minor version component of the current release
VersionPatch = 0 // Patch version component of the current release
VersionPatch = 1 // Patch version component of the current release
VersionMeta = "stable" // Version metadata to append to the version string
)

Expand Down

0 comments on commit 57567e5

Please sign in to comment.