Skip to content

Commit

Permalink
Refactoring generation of FrontEnd cahe to be callable independently (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
pbukva authored Oct 11, 2024
1 parent b752425 commit 29b59b4
Show file tree
Hide file tree
Showing 5 changed files with 67 additions and 26 deletions.
44 changes: 30 additions & 14 deletions app/upgrade_cudos.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import (
ibctransfertypes "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types"
ibccore "github.com/cosmos/ibc-go/v3/modules/core/24-host"
"github.com/spf13/cast"
"github.com/tendermint/tendermint/libs/log"
tmtypes "github.com/tendermint/tendermint/types"
"strings"
)
Expand Down Expand Up @@ -158,15 +159,7 @@ func LoadCudosGenesis(app *App, manifest *UpgradeManifest) (*map[string]interfac

}

func CudosMergeUpgradeHandler(app *App, ctx sdk.Context, cudosCfg *CudosMergeConfig, genesisData *GenesisData, manifest *UpgradeManifest) error {
if cudosCfg == nil {
return fmt.Errorf("cudos merge: cudos CudosMergeConfig not provided (null pointer passed in)")
}

if app.cudosGenesisPath == "" {
return fmt.Errorf("cudos merge: cudos path not set")
}

func ProcessSourceNetworkGenesis(logger log.Logger, cudosCfg *CudosMergeConfig, genesisData *GenesisData, manifest *UpgradeManifest) error {
err := genesisUpgradeWithdrawIBCChannelsBalances(genesisData, cudosCfg, manifest)
if err != nil {
return fmt.Errorf("cudos merge: failed to withdraw IBC channels balances: %w", err)
Expand All @@ -177,12 +170,12 @@ func CudosMergeUpgradeHandler(app *App, ctx sdk.Context, cudosCfg *CudosMergeCon
return fmt.Errorf("cudos merge: failed to withdraw genesis contracts balances: %w", err)
}

err = withdrawGenesisStakingDelegations(app, genesisData, cudosCfg, manifest)
err = withdrawGenesisStakingDelegations(logger, genesisData, cudosCfg, manifest)
if err != nil {
return fmt.Errorf("cudos merge: failed to withdraw genesis staked tokens: %w", err)
}

err = withdrawGenesisDistributionRewards(app, genesisData, cudosCfg, manifest)
err = withdrawGenesisDistributionRewards(logger, genesisData, cudosCfg, manifest)
if err != nil {
return fmt.Errorf("cudos merge: failed to withdraw genesis rewards: %w", err)
}
Expand All @@ -197,6 +190,23 @@ func CudosMergeUpgradeHandler(app *App, ctx sdk.Context, cudosCfg *CudosMergeCon
return fmt.Errorf("cudos merge: failed to move funds: %w", err)
}

return nil
}

func CudosMergeUpgradeHandler(app *App, ctx sdk.Context, cudosCfg *CudosMergeConfig, genesisData *GenesisData, manifest *UpgradeManifest) error {
if cudosCfg == nil {
return fmt.Errorf("cudos merge: cudos CudosMergeConfig not provided (null pointer passed in)")
}

if app.cudosGenesisPath == "" {
return fmt.Errorf("cudos merge: cudos path not set")
}

err := ProcessSourceNetworkGenesis(app.Logger(), cudosCfg, genesisData, manifest)
if err != nil {
return err
}

err = MigrateGenesisAccounts(genesisData, ctx, app, cudosCfg, manifest)
if err != nil {
return fmt.Errorf("cudos merge: failed process accounts: %w", err)
Expand Down Expand Up @@ -736,7 +746,7 @@ func parseGenesisValidators(jsonData map[string]interface{}) (*OrderedMap[string
return validatorInfoMap, nil
}

func withdrawGenesisStakingDelegations(app *App, genesisData *GenesisData, cudosCfg *CudosMergeConfig, manifest *UpgradeManifest) error {
func withdrawGenesisStakingDelegations(logger log.Logger, genesisData *GenesisData, cudosCfg *CudosMergeConfig, manifest *UpgradeManifest) error {
// Handle delegations
for i := range genesisData.Validators.Iterate() {
validatorOperatorAddress, validator := i.Key, i.Value
Expand Down Expand Up @@ -813,7 +823,10 @@ func withdrawGenesisStakingDelegations(app *App, genesisData *GenesisData, cudos
return fmt.Errorf("remaining bonded pool balance %s is too high", bondedPool.balance.String())
}

app.Logger().Info("cudos merge: remaining bonded pool balance", "amount", bondedPool.balance.String())
if logger != nil {
logger.Info("cudos merge: remaining bonded pool balance", "amount", bondedPool.balance.String())
}

err = moveGenesisBalance(genesisData, genesisData.BondedPoolAddress, cudosCfg.config.RemainingStakingBalanceAddr, bondedPool.balance, "remaining_bonded_pool_balance", manifest, cudosCfg)
if err != nil {
return err
Expand All @@ -828,7 +841,10 @@ func withdrawGenesisStakingDelegations(app *App, genesisData *GenesisData, cudos
return fmt.Errorf("remaining not-bonded pool balance %s is too high", notBondedPool.balance.String())
}

app.Logger().Info("cudos merge: remaining not-bonded pool balance", "amount", notBondedPool.balance.String())
if logger != nil {
logger.Info("cudos merge: remaining not-bonded pool balance", "amount", notBondedPool.balance.String())
}

err = moveGenesisBalance(genesisData, genesisData.NotBondedPoolAddress, cudosCfg.config.RemainingStakingBalanceAddr, notBondedPool.balance, "remaining_not_bonded_pool_balance", manifest, cudosCfg)
if err != nil {
return err
Expand Down
27 changes: 16 additions & 11 deletions app/upgrade_cudos_distribution.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
distributiontypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
"github.com/spf13/cast"
"github.com/tendermint/tendermint/libs/log"
"math"
"sort"
)
Expand Down Expand Up @@ -320,7 +321,7 @@ func verifyOutstandingBalances(genesisData *GenesisData) error {
return nil
}

func withdrawGenesisDistributionRewards(app *App, genesisData *GenesisData, cudosCfg *CudosMergeConfig, manifest *UpgradeManifest) error {
func withdrawGenesisDistributionRewards(logger log.Logger, genesisData *GenesisData, cudosCfg *CudosMergeConfig, manifest *UpgradeManifest) error {
// block height is used only to early stop rewards calculation
//blockHeight := getMaxBlockHeight(genesisData) + 1
blockHeight := uint64(math.MaxUint64)
Expand All @@ -336,7 +337,7 @@ func withdrawGenesisDistributionRewards(app *App, genesisData *GenesisData, cudo
for _, delegatorAddr := range delegatorStartInfo.Keys() {
delegation := validator.delegations.MustGet(delegatorAddr)

_, err := withdrawDelegationRewards(app, genesisData, validator, delegation, endingPeriod, blockHeight, cudosCfg, manifest)
_, err := withdrawDelegationRewards(logger, genesisData, validator, delegation, endingPeriod, blockHeight, cudosCfg, manifest)
if err != nil {
return err
}
Expand Down Expand Up @@ -364,7 +365,9 @@ func withdrawGenesisDistributionRewards(app *App, genesisData *GenesisData, cudo
remainingBalance := distributionModuleAccount.balance.Sub(communityBalance)

// Withdraw remaining balance
app.Logger().Info("cudos merge: remaining dist balance", "amount", remainingBalance.String())
if logger != nil {
logger.Info("cudos merge: remaining dist balance", "amount", remainingBalance.String())
}

// TODO: Write to manifest?
err = checkTolerance(remainingBalance, maxToleratedRemainingDistributionBalance)
Expand Down Expand Up @@ -591,7 +594,7 @@ func (d DistributionInfo) GetDelegatorWithdrawAddr(delAddr string) string {
return b
}

func withdrawDelegationRewards(app *App, genesisData *GenesisData, val *ValidatorInfo, del *DelegationInfo, endingPeriod uint64, blockHeight uint64, cudosCfg *CudosMergeConfig, manifest *UpgradeManifest) (sdk.Coins, error) {
func withdrawDelegationRewards(logger log.Logger, genesisData *GenesisData, val *ValidatorInfo, del *DelegationInfo, endingPeriod uint64, blockHeight uint64, cudosCfg *CudosMergeConfig, manifest *UpgradeManifest) (sdk.Coins, error) {

// check existence of delegator starting info
genesisData.DistributionInfo.DelegatorStartingInfos.Has(val.operatorAddress)
Expand All @@ -612,13 +615,15 @@ func withdrawDelegationRewards(app *App, genesisData *GenesisData, val *Validato
// of the decCoins due to operation order of the distribution mechanism.
rewards := rewardsRaw.Intersect(outstanding)
if !rewards.IsEqual(rewardsRaw) {
app.Logger().Error(
"rounding error withdrawing rewards from validator",
"delegator", del.delegatorAddress,
"validator", val.operatorAddress,
"got", rewards.String(),
"expected", rewardsRaw.String(),
)
if logger != nil {
logger.Error(
"rounding error withdrawing rewards from validator",
"delegator", del.delegatorAddress,
"validator", val.operatorAddress,
"got", rewards.String(),
"expected", rewardsRaw.String(),
)
}
}

// truncate reward dec coins, return remainder to community pool
Expand Down
13 changes: 12 additions & 1 deletion cmd/fetchd/cmd/cudos_merge.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import (
genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types"
"github.com/fetchai/fetchd/app"
"github.com/spf13/cobra"
"github.com/tendermint/tendermint/libs/log"
"os"
)

// Module init related flags
Expand Down Expand Up @@ -59,7 +61,10 @@ func utilNetworkMergeCommand() *cobra.Command {
Short: "Verifies the configuration JSON file of the network merge",
Long: `This command verifies the structure and content of the network merge config JSON file.
It checks whether the network merge config file conforms to expected schema - presence of all required fields and validates their values against predefined rules.
`,
` +
"Verification fully executes the front-end of the upgrade procedure using source chain genesis json and " +
"network config files as inputs, constructing front-end cache containing all necessary structures and " +
"derived data, exactly as it would be executed during the real upgrade.",
Args: cobra.ExactArgs(2),
RunE: func(cmd *cobra.Command, args []string) error {
ctx := client.GetClientContextFromCmd(cmd)
Expand Down Expand Up @@ -185,5 +190,11 @@ func VerifyConfigFile(configFilePath string, GenesisFilePath string, ctx client.
return fmt.Errorf("list of backup validators is empty")
}

logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout))
err = app.ProcessSourceNetworkGenesis(logger, cudosConfig, genesisData, manifest)
if err != nil {
return err
}

return nil
}
3 changes: 3 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ require (
require (
github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce
github.com/cosmos/btcutil v1.0.4
github.com/vektra/mockery/v2 v2.14.0
)

require (
Expand Down Expand Up @@ -118,10 +119,12 @@ require (
go.etcd.io/bbolt v1.3.6 // indirect
golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e // indirect
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect
golang.org/x/net v0.0.0-20220726230323-06994584191e // indirect
golang.org/x/sys v0.0.0-20220727055044-e65921a090b8 // indirect
golang.org/x/term v0.0.0-20220722155259-a9ba230a4035 // indirect
golang.org/x/text v0.4.0 // indirect
golang.org/x/tools v0.1.12 // indirect
google.golang.org/genproto v0.0.0-20220725144611-272f38e5d71b // indirect
google.golang.org/grpc v1.50.1 // indirect
google.golang.org/protobuf v1.28.1 // indirect
Expand Down
6 changes: 6 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -769,6 +769,8 @@ github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs
github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
github.com/vektra/mockery/v2 v2.14.0 h1:KZ1p5Hrn8tiY+LErRMr14HHle6khxo+JKOXLBW/yfqs=
github.com/vektra/mockery/v2 v2.14.0/go.mod h1:bnD1T8tExSgPD1ripLkDbr60JA9VtQeu12P3wgLZd7M=
github.com/vmihailenco/msgpack/v5 v5.1.4/go.mod h1:C5gboKD0TJPqWDTVTtrQNfRbiBwHZGo8UTqP/9/XvLI=
github.com/vmihailenco/tagparser v0.1.2/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI=
github.com/wsddn/go-ecdh v0.0.0-20161211032359-48726bab9208/go.mod h1:IotVbo4F+mw0EzQ08zFqg7pK3FebNXpaMsRy2RT+Ees=
Expand Down Expand Up @@ -862,6 +864,8 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
Expand Down Expand Up @@ -1079,6 +1083,8 @@ golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4f
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
Expand Down

0 comments on commit 29b59b4

Please sign in to comment.