Skip to content

Commit

Permalink
fix: script + commission update
Browse files Browse the repository at this point in the history
  • Loading branch information
javiersuweijie committed Aug 7, 2024
1 parent c5d4b7b commit f324e94
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 14 deletions.
38 changes: 28 additions & 10 deletions app/upgrades/v2.12/upgrade.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ package v2_12

import (
"cosmossdk.io/math"
"fmt"
accountkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper"
"github.com/cosmos/cosmos-sdk/x/auth/vesting/types"
"github.com/terra-money/core/v2/app/keepers"

sdk "github.com/cosmos/cosmos-sdk/types"
Expand Down Expand Up @@ -39,14 +42,14 @@ func CreateUpgradeHandler(
addr = sdk.MustAccAddressFromBech32("")
multisigAddr = sdk.MustAccAddressFromBech32("")
} else {
addr = sdk.MustAccAddressFromBech32("")
multisigAddr = sdk.MustAccAddressFromBech32("")
addr = sdk.MustAccAddressFromBech32("terra1v0eee20gjl68fuk0chyrkch2z7suw2mhg3wkxf")
multisigAddr = sdk.MustAccAddressFromBech32("terra1v0eee20gjl68fuk0chyrkch2z7suw2mhg3wkxf")
}

if err := burnTokensFromAccount(ctx, k.StakingKeeper, k.BankKeeper, k.DistrKeeper, addr); err != nil {
if err := burnTokensFromAccount(ctx, k.StakingKeeper, k.BankKeeper, k.DistrKeeper, k.AccountKeeper, addr); err != nil {
return nil, err
}
if err := burnTokensFromAccount(ctx, k.StakingKeeper, k.BankKeeper, k.DistrKeeper, multisigAddr); err != nil {
if err := burnTokensFromAccount(ctx, k.StakingKeeper, k.BankKeeper, k.DistrKeeper, k.AccountKeeper, multisigAddr); err != nil {
return nil, err
}

Expand All @@ -66,14 +69,13 @@ func updateValidatorsMinCommissionRate(ctx sdk.Context, sk *stakingkeeper.Keeper
validators := sk.GetAllValidators(ctx)
for _, validator := range validators {
update := false
commission := validator.Commission
if commission.MaxRate.LT(sdk.MustNewDecFromStr("0.05")) {
commission.MaxRate = sdk.MustNewDecFromStr("0.05")
if validator.Commission.MaxRate.LT(sdk.MustNewDecFromStr("0.05")) {
validator.Commission.MaxRate = sdk.MustNewDecFromStr("0.05")
update = true
}
if commission.Rate.LT(sdk.MustNewDecFromStr("0.05")) {
if validator.Commission.Rate.LT(sdk.MustNewDecFromStr("0.05")) {
// force update without checking the <24h restriction and the max update rate
commission.Rate = sdk.MustNewDecFromStr("0.05")
validator.Commission.Rate = sdk.MustNewDecFromStr("0.05")
update = true
}
if update {
Expand All @@ -87,7 +89,11 @@ func updateValidatorsMinCommissionRate(ctx sdk.Context, sk *stakingkeeper.Keeper
return nil
}

func burnTokensFromAccount(ctx sdk.Context, sk *stakingkeeper.Keeper, bk bankkeeper.Keeper, dk distributionkeeper.Keeper, addr sdk.AccAddress) error {
func burnTokensFromAccount(ctx sdk.Context, sk *stakingkeeper.Keeper, bk bankkeeper.Keeper, dk distributionkeeper.Keeper, ak accountkeeper.AccountKeeper, addr sdk.AccAddress) error {
acc := ak.GetAccount(ctx, addr)
if acc == nil {
return fmt.Errorf("account %s not found", addr)
}
// Iterate delegations and unbond all shares
// burning the coins immediately
bondDenom := sk.GetParams(ctx).BondDenom
Expand Down Expand Up @@ -169,6 +175,18 @@ func burnTokensFromAccount(ctx sdk.Context, sk *stakingkeeper.Keeper, bk bankkee
return false
})

// Set account back to a base account before burning to vest everything
switch vestingAcc := acc.(type) {
case *types.ContinuousVestingAccount:
ak.SetAccount(ctx, vestingAcc.BaseVestingAccount)
case *types.DelayedVestingAccount:
ak.SetAccount(ctx, vestingAcc.BaseVestingAccount)
case *types.PeriodicVestingAccount:
ak.SetAccount(ctx, vestingAcc.BaseVestingAccount)
default:
// do nothing
}

// Burn all coins in the addr
bk.IterateAccountBalances(ctx, addr, func(balance sdk.Coin) bool {
err = bk.SendCoinsFromAccountToModule(ctx, addr, stakingtypes.NotBondedPoolName, sdk.NewCoins(balance))
Expand Down
26 changes: 22 additions & 4 deletions integration-tests/src/setup/chain-upgrade/upgrade-simulation-12.sh
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ CURRENT_TIME=$(date +%s)
echo "Current time: $CURRENT_TIME"
$OLD_BINARY genesis add-genesis-account $($OLD_BINARY --home $CHAIN_HOME keys show wallet1 --keyring-backend test -a) 100000000000uluna --vesting-amount 200000000uluna --vesting-start-time $CURRENT_TIME --vesting-end-time $(($CURRENT_TIME + 10000)) --home $CHAIN_HOME

$OLD_BINARY genesis gentx val1 1000000000uluna --home $CHAIN_HOME --chain-id $CHAIN_ID --keyring-backend test
$OLD_BINARY genesis gentx val1 1000000000uluna --home $CHAIN_HOME --chain-id $CHAIN_ID --keyring-backend test --commission-max-rate 0.01 --commission-rate 0.01 --commission-max-change-rate 0.01
$OLD_BINARY genesis collect-gentxs --home $CHAIN_HOME

sed -i -e "s/\"max_deposit_period\": \"172800s\"/\"max_deposit_period\": \"$GOV_PERIOD\"/g" $CHAIN_HOME/config/genesis.json
Expand Down Expand Up @@ -151,20 +151,38 @@ else
fi
sleep 15

DELEGATIONS=$($NEW_BINARY query staking delegations $WALLET_ADDR_1 --output=json | jq ".delegation_responses | length")
DELEGATIONS=$($NEW_BINARY query staking delegations $WALLET_ADDR_1 --home $CHAIN_HOME --output=json | jq ".delegation_responses | length")
echo "DELEGATIONS $DELEGATIONS"
if [[ "$DELEGATIONS" == "0" ]]; then
echo "Delegations removed when upgrading"
fi

UNBONDINGS=$($NEW_BINARY query staking unbonding-delegations $WALLET_ADDR_1 --output=json | jq ".unbonding_responses | length")
UNBONDINGS=$($NEW_BINARY query staking unbonding-delegations $WALLET_ADDR_1 --home $CHAIN_HOME --output=json | jq ".unbonding_responses | length")
echo "UNBONDINGS $UNBONDINGS"
if [[ "$UNBONDINGS" == "0" ]]; then
echo "Unbondings removed when upgrading"
fi

BALANCES=$($NEW_BINARY query bank balances $WALLET_ADDR_1 --output=json | jq ".balances | length")
BALANCES=$($NEW_BINARY query bank balances $WALLET_ADDR_1 --home $CHAIN_HOME --output=json | jq ".balances | length")
echo "BALANCES $BALANCES"
if [[ "$BALANCES" == "0" ]]; then
echo "Balance removed when upgrading"
fi

COMISSION_RATE=$($NEW_BINARY query staking validator $VALOPER_ADDR_1 --home $CHAIN_HOME --output=json | jq ".commission.commission_rates.rate" -r)
echo "COMISSION_RATE $COMISSION_RATE"
if [[ "$COMISSION_RATE" != "0.050000000000000000" ]]; then
echo "Commission rate not updated"
fi

MAX_COMISSION_RATE=$($NEW_BINARY query staking validator $VALOPER_ADDR_1 --home $CHAIN_HOME --output=json | jq ".commission.commission_rates.max_rate" -r)
echo "MAX_COMISSION_RATE $MAX_COMISSION_RATE"
if [[ "$MAX_COMISSION_RATE" != "0.050000000000000000" ]]; then
echo "Max commission rate not updated"
fi

COMISSION_RATE_CHANGE=$($NEW_BINARY query staking validator $VALOPER_ADDR_1 --home $CHAIN_HOME --output=json | jq ".commission.commission_rates.max_change_rate" -r)
echo "COMISSION_RATE_CHANGE $COMISSION_RATE_CHANGE"
if [[ "$COMISSION_RATE_CHANGE" != "0.010000000000000000" ]]; then
echo "Commission rate change not preserved"
fi

0 comments on commit f324e94

Please sign in to comment.