From 924170b07371000c08872b9d98c150d733084895 Mon Sep 17 00:00:00 2001 From: dzungdo Date: Fri, 12 Jan 2024 00:30:20 +0700 Subject: [PATCH 1/7] add genesis state for multi staking module to simapp --- testing/simapp/test_helpers.go | 78 +++++++++++++++++++++++++++------- x/multi-staking/types/utils.go | 8 ++++ 2 files changed, 70 insertions(+), 16 deletions(-) diff --git a/testing/simapp/test_helpers.go b/testing/simapp/test_helpers.go index e78a7eba..9b3f7a6d 100644 --- a/testing/simapp/test_helpers.go +++ b/testing/simapp/test_helpers.go @@ -35,6 +35,8 @@ import ( "github.com/cosmos/ibc-go/v6/testing/mock" "github.com/cosmos/ibc-go/v6/testing/simapp/helpers" + + multistakingtypes "github.com/realio-tech/multi-staking-module/x/multi-staking/types" ) // DefaultConsensusParams defines the default Tendermint consensus params used in @@ -72,15 +74,20 @@ func Setup(isCheckTx bool) *SimApp { pubKey, _ := privVal.GetPubKey() // create validator set with single validator - validator := tmtypes.NewValidator(pubKey, 1) - valSet := tmtypes.NewValidatorSet([]*tmtypes.Validator{validator}) + val0 := tmtypes.NewValidator(pubKey, 1) + val1 := tmtypes.NewValidator(pubKey, 1) + + valSet := tmtypes.NewValidatorSet([]*tmtypes.Validator{val0, val1}) // generate genesis account senderPrivKey := secp256k1.GenPrivKey() acc := authtypes.NewBaseAccount(senderPrivKey.PubKey().Address().Bytes(), senderPrivKey.PubKey(), 0, 0) balance := banktypes.Balance{ Address: acc.GetAddress().String(), - Coins: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100000000000000))), + Coins: sdk.NewCoins( + sdk.NewCoin(multistakingtypes.BaseDenom, sdk.NewInt(100000000000000)), + sdk.NewCoin(multistakingtypes.GovDenom, sdk.NewInt(100000000000000)), + ), } app := SetupWithGenesisValSet(valSet, []authtypes.GenesisAccount{acc}, balance) @@ -127,12 +134,35 @@ func genesisStateWithValSet(app *SimApp, genesisState GenesisState, authGenesis := authtypes.NewGenesisState(authtypes.DefaultParams(), genAccs) genesisState[authtypes.ModuleName] = app.AppCodec().MustMarshalJSON(authGenesis) + // set multi staking genesis state + baseInfo := multistakingtypes.MultiStakingCoinInfo{ + Denom: multistakingtypes.BaseDenom, + BondWeight: sdk.OneDec(), + } + govInfo := multistakingtypes.MultiStakingCoinInfo{ + Denom: multistakingtypes.GovDenom, + BondWeight: sdk.MustNewDecFromStr("0.5"), + } + coinInfos := []multistakingtypes.MultiStakingCoinInfo{baseInfo, govInfo} + validatorCoins := make([]multistakingtypes.ValidatorMultiStakingCoin, 0, len(valSet.Validators)) validators := make([]stakingtypes.Validator, 0, len(valSet.Validators)) delegations := make([]stakingtypes.Delegation, 0, len(valSet.Validators)) + locks := make([]multistakingtypes.MultiStakingLock, 0, len(valSet.Validators)) + bondCoins := sdk.NewCoins() + lockCoins := sdk.NewCoins() bondAmt := sdk.DefaultPowerReduction + for i, val := range valSet.Validators { + valDenom := multistakingtypes.BaseDenom + if i%2 == 1 { + valDenom = multistakingtypes.GovDenom + } + validatorCoins = append(validatorCoins, multistakingtypes.ValidatorMultiStakingCoin{ + ValAddr: sdk.ValAddress(val.Address).String(), + CoinDenom: valDenom, + }) + valTokens := coinInfos[i%2].BondWeight.MulInt(bondAmt).RoundInt() - for _, val := range valSet.Validators { pk, _ := cryptocodec.FromTmPubKeyInterface(val.PubKey) pkAny, _ := codectypes.NewAnyWithValue(pk) validator := stakingtypes.Validator{ @@ -140,7 +170,7 @@ func genesisStateWithValSet(app *SimApp, genesisState GenesisState, ConsensusPubkey: pkAny, Jailed: false, Status: stakingtypes.Bonded, - Tokens: bondAmt, + Tokens: valTokens, DelegatorShares: sdk.OneDec(), Description: stakingtypes.Description{}, UnbondingHeight: int64(0), @@ -148,30 +178,46 @@ func genesisStateWithValSet(app *SimApp, genesisState GenesisState, Commission: stakingtypes.NewCommission(sdk.ZeroDec(), sdk.ZeroDec(), sdk.ZeroDec()), MinSelfDelegation: sdk.ZeroInt(), } + + lockId := multistakingtypes.MultiStakingLockID(genAccs[0].GetAddress().String(), sdk.ValAddress(val.Address).String()) + lockCoin := multistakingtypes.NewMultiStakingCoin(coinInfos[i%2].Denom, bondAmt, coinInfos[i%2].BondWeight) + lockRecord := multistakingtypes.NewMultiStakingLock(&lockId, lockCoin) + + locks = append(locks, lockRecord) validators = append(validators, validator) delegations = append(delegations, stakingtypes.NewDelegation(genAccs[0].GetAddress(), val.Address.Bytes(), sdk.OneDec())) + lockCoins.Add(sdk.NewCoin(lockCoin.Denom, lockCoin.Amount)) + bondCoins.Add(sdk.NewCoin(sdk.DefaultBondDenom, valTokens)) } + // set validators and delegations stakingGenesis := stakingtypes.NewGenesisState(stakingtypes.DefaultParams(), validators, delegations) genesisState[stakingtypes.ModuleName] = app.AppCodec().MustMarshalJSON(stakingGenesis) - totalSupply := sdk.NewCoins() - for _, b := range balances { - // add genesis acc tokens to total supply - totalSupply = totalSupply.Add(b.Coins...) - } - - for range delegations { - // add delegated tokens to total supply - totalSupply = totalSupply.Add(sdk.NewCoin(sdk.DefaultBondDenom, bondAmt)) + multistakingGenesis := multistakingtypes.GenesisState{ + MultiStakingLocks: locks, + MultiStakingUnlocks: []multistakingtypes.MultiStakingUnlock{}, + MultiStakingCoinInfo: coinInfos, + ValidatorMultiStakingCoins: validatorCoins, + StakingGenesisState: stakingGenesis, } + genesisState[multistakingtypes.ModuleName] = app.AppCodec().MustMarshalJSON(&multistakingGenesis) - // add bonded amount to bonded pool module account balances = append(balances, banktypes.Balance{ Address: authtypes.NewModuleAddress(stakingtypes.BondedPoolName).String(), - Coins: sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, bondAmt)}, + Coins: bondCoins, }) + balances = append(balances, banktypes.Balance{ + Address: authtypes.NewModuleAddress(multistakingtypes.ModuleName).String(), + Coins: lockCoins, + }) + + totalSupply := sdk.NewCoins() + for _, b := range balances { + // add genesis acc tokens to total supply + totalSupply = totalSupply.Add(b.Coins...) + } // update total supply bankGenesis := banktypes.NewGenesisState(banktypes.DefaultGenesisState().Params, balances, totalSupply, []banktypes.Metadata{}) diff --git a/x/multi-staking/types/utils.go b/x/multi-staking/types/utils.go index 289a44de..a9abbc11 100644 --- a/x/multi-staking/types/utils.go +++ b/x/multi-staking/types/utils.go @@ -4,6 +4,14 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ) +const ( + // BaseDenom defines the base denomination + BaseDenom = "ario" + + // GovDenom defines the governance denomination + GovDenom = "arst" +) + func AccAddrAndValAddrFromStrings(accAddrString string, valAddrStraing string) (sdk.AccAddress, sdk.ValAddress, error) { accAddr, err := sdk.AccAddressFromBech32(accAddrString) if err != nil { From e1ef94914e4393d8544a6ce35b68c2f6043c4482 Mon Sep 17 00:00:00 2001 From: dzungdo Date: Fri, 12 Jan 2024 00:35:03 +0700 Subject: [PATCH 2/7] fix lint --- testing/simapp/test_helpers.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/testing/simapp/test_helpers.go b/testing/simapp/test_helpers.go index 9b3f7a6d..e15e5c9a 100644 --- a/testing/simapp/test_helpers.go +++ b/testing/simapp/test_helpers.go @@ -9,6 +9,7 @@ import ( "testing" "time" + multistakingtypes "github.com/realio-tech/multi-staking-module/x/multi-staking/types" "github.com/stretchr/testify/require" abci "github.com/tendermint/tendermint/abci/types" "github.com/tendermint/tendermint/libs/log" @@ -35,8 +36,6 @@ import ( "github.com/cosmos/ibc-go/v6/testing/mock" "github.com/cosmos/ibc-go/v6/testing/simapp/helpers" - - multistakingtypes "github.com/realio-tech/multi-staking-module/x/multi-staking/types" ) // DefaultConsensusParams defines the default Tendermint consensus params used in From 67922b460eb7aea3f49e42ec4f91e088443f71f4 Mon Sep 17 00:00:00 2001 From: dzungdo Date: Fri, 12 Jan 2024 00:44:14 +0700 Subject: [PATCH 3/7] Fix bonded pool balance and module balance --- testing/simapp/test_helpers.go | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/testing/simapp/test_helpers.go b/testing/simapp/test_helpers.go index e15e5c9a..92f089d6 100644 --- a/testing/simapp/test_helpers.go +++ b/testing/simapp/test_helpers.go @@ -69,12 +69,15 @@ func setup(withGenesis bool, invCheckPeriod uint) (*SimApp, GenesisState) { // Setup initializes a new SimApp. A Nop logger is set in SimApp. func Setup(isCheckTx bool) *SimApp { - privVal := mock.NewPV() - pubKey, _ := privVal.GetPubKey() + privVal0 := mock.NewPV() + privVal1 := mock.NewPV() + + pubKey0, _ := privVal0.GetPubKey() + pubKey1, _ := privVal1.GetPubKey() // create validator set with single validator - val0 := tmtypes.NewValidator(pubKey, 1) - val1 := tmtypes.NewValidator(pubKey, 1) + val0 := tmtypes.NewValidator(pubKey0, 1) + val1 := tmtypes.NewValidator(pubKey1, 1) valSet := tmtypes.NewValidatorSet([]*tmtypes.Validator{val0, val1}) @@ -186,8 +189,8 @@ func genesisStateWithValSet(app *SimApp, genesisState GenesisState, validators = append(validators, validator) delegations = append(delegations, stakingtypes.NewDelegation(genAccs[0].GetAddress(), val.Address.Bytes(), sdk.OneDec())) - lockCoins.Add(sdk.NewCoin(lockCoin.Denom, lockCoin.Amount)) - bondCoins.Add(sdk.NewCoin(sdk.DefaultBondDenom, valTokens)) + lockCoins = lockCoins.Add(sdk.NewCoin(lockCoin.Denom, lockCoin.Amount)) + bondCoins = bondCoins.Add(sdk.NewCoin(sdk.DefaultBondDenom, valTokens)) } // set validators and delegations From 405c0eba001b8c74f0be5b0c2ed4f3b2100de895 Mon Sep 17 00:00:00 2001 From: dzungdo Date: Fri, 12 Jan 2024 14:15:32 +0700 Subject: [PATCH 4/7] Move out const from module to testutil --- testing/simapp/test_helpers.go | 13 +++++++------ testutil/utils.go | 9 +++++++++ x/multi-staking/types/utils.go | 8 -------- 3 files changed, 16 insertions(+), 14 deletions(-) create mode 100644 testutil/utils.go diff --git a/testing/simapp/test_helpers.go b/testing/simapp/test_helpers.go index 92f089d6..4c2dd863 100644 --- a/testing/simapp/test_helpers.go +++ b/testing/simapp/test_helpers.go @@ -9,6 +9,7 @@ import ( "testing" "time" + "github.com/realio-tech/multi-staking-module/testutil" multistakingtypes "github.com/realio-tech/multi-staking-module/x/multi-staking/types" "github.com/stretchr/testify/require" abci "github.com/tendermint/tendermint/abci/types" @@ -87,8 +88,8 @@ func Setup(isCheckTx bool) *SimApp { balance := banktypes.Balance{ Address: acc.GetAddress().String(), Coins: sdk.NewCoins( - sdk.NewCoin(multistakingtypes.BaseDenom, sdk.NewInt(100000000000000)), - sdk.NewCoin(multistakingtypes.GovDenom, sdk.NewInt(100000000000000)), + sdk.NewCoin(testutil.MultistakingDenomA, sdk.NewInt(100000000000000)), + sdk.NewCoin(testutil.MultistakingDenomB, sdk.NewInt(100000000000000)), ), } @@ -138,11 +139,11 @@ func genesisStateWithValSet(app *SimApp, genesisState GenesisState, // set multi staking genesis state baseInfo := multistakingtypes.MultiStakingCoinInfo{ - Denom: multistakingtypes.BaseDenom, + Denom: testutil.MultistakingDenomA, BondWeight: sdk.OneDec(), } govInfo := multistakingtypes.MultiStakingCoinInfo{ - Denom: multistakingtypes.GovDenom, + Denom: testutil.MultistakingDenomB, BondWeight: sdk.MustNewDecFromStr("0.5"), } coinInfos := []multistakingtypes.MultiStakingCoinInfo{baseInfo, govInfo} @@ -155,9 +156,9 @@ func genesisStateWithValSet(app *SimApp, genesisState GenesisState, bondAmt := sdk.DefaultPowerReduction for i, val := range valSet.Validators { - valDenom := multistakingtypes.BaseDenom + valDenom := testutil.MultistakingDenomA if i%2 == 1 { - valDenom = multistakingtypes.GovDenom + valDenom = testutil.MultistakingDenomB } validatorCoins = append(validatorCoins, multistakingtypes.ValidatorMultiStakingCoin{ ValAddr: sdk.ValAddress(val.Address).String(), diff --git a/testutil/utils.go b/testutil/utils.go new file mode 100644 index 00000000..f4fe1846 --- /dev/null +++ b/testutil/utils.go @@ -0,0 +1,9 @@ +package testutil + +const ( + // MultistakingDenomA defines the multi staking denomination A + MultistakingDenomA = "ario" + + // MultistakingDenomB defines the multi staking denomination B + MultistakingDenomB = "arst" +) diff --git a/x/multi-staking/types/utils.go b/x/multi-staking/types/utils.go index a9abbc11..289a44de 100644 --- a/x/multi-staking/types/utils.go +++ b/x/multi-staking/types/utils.go @@ -4,14 +4,6 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ) -const ( - // BaseDenom defines the base denomination - BaseDenom = "ario" - - // GovDenom defines the governance denomination - GovDenom = "arst" -) - func AccAddrAndValAddrFromStrings(accAddrString string, valAddrStraing string) (sdk.AccAddress, sdk.ValAddress, error) { accAddr, err := sdk.AccAddressFromBech32(accAddrString) if err != nil { From c11890febf2c9ad59e1b4864898a263136a468bb Mon Sep 17 00:00:00 2001 From: dzungdo Date: Fri, 12 Jan 2024 14:19:07 +0700 Subject: [PATCH 5/7] Change variable names --- testing/simapp/test_helpers.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/testing/simapp/test_helpers.go b/testing/simapp/test_helpers.go index 4c2dd863..eb077dc0 100644 --- a/testing/simapp/test_helpers.go +++ b/testing/simapp/test_helpers.go @@ -138,15 +138,15 @@ func genesisStateWithValSet(app *SimApp, genesisState GenesisState, genesisState[authtypes.ModuleName] = app.AppCodec().MustMarshalJSON(authGenesis) // set multi staking genesis state - baseInfo := multistakingtypes.MultiStakingCoinInfo{ + msCoinAInfo := multistakingtypes.MultiStakingCoinInfo{ Denom: testutil.MultistakingDenomA, BondWeight: sdk.OneDec(), } - govInfo := multistakingtypes.MultiStakingCoinInfo{ + msCoinBInfo := multistakingtypes.MultiStakingCoinInfo{ Denom: testutil.MultistakingDenomB, BondWeight: sdk.MustNewDecFromStr("0.5"), } - coinInfos := []multistakingtypes.MultiStakingCoinInfo{baseInfo, govInfo} + coinInfos := []multistakingtypes.MultiStakingCoinInfo{msCoinAInfo, msCoinBInfo} validatorCoins := make([]multistakingtypes.ValidatorMultiStakingCoin, 0, len(valSet.Validators)) validators := make([]stakingtypes.Validator, 0, len(valSet.Validators)) delegations := make([]stakingtypes.Delegation, 0, len(valSet.Validators)) From 792f43ef153458dccaf619e5e403a246f8634747 Mon Sep 17 00:00:00 2001 From: Hieu Vu Date: Sat, 13 Jan 2024 15:26:53 +0700 Subject: [PATCH 6/7] update setup test --- testing/simapp/test_helpers.go | 112 ++++++++++++++++----------------- testing/simapp/types.go | 17 +++++ 2 files changed, 73 insertions(+), 56 deletions(-) diff --git a/testing/simapp/test_helpers.go b/testing/simapp/test_helpers.go index eb077dc0..ae3258f7 100644 --- a/testing/simapp/test_helpers.go +++ b/testing/simapp/test_helpers.go @@ -9,7 +9,6 @@ import ( "testing" "time" - "github.com/realio-tech/multi-staking-module/testutil" multistakingtypes "github.com/realio-tech/multi-staking-module/x/multi-staking/types" "github.com/stretchr/testify/require" abci "github.com/tendermint/tendermint/abci/types" @@ -70,31 +69,9 @@ func setup(withGenesis bool, invCheckPeriod uint) (*SimApp, GenesisState) { // Setup initializes a new SimApp. A Nop logger is set in SimApp. func Setup(isCheckTx bool) *SimApp { - privVal0 := mock.NewPV() - privVal1 := mock.NewPV() - - pubKey0, _ := privVal0.GetPubKey() - pubKey1, _ := privVal1.GetPubKey() - - // create validator set with single validator - val0 := tmtypes.NewValidator(pubKey0, 1) - val1 := tmtypes.NewValidator(pubKey1, 1) - - valSet := tmtypes.NewValidatorSet([]*tmtypes.Validator{val0, val1}) - - // generate genesis account - senderPrivKey := secp256k1.GenPrivKey() - acc := authtypes.NewBaseAccount(senderPrivKey.PubKey().Address().Bytes(), senderPrivKey.PubKey(), 0, 0) - balance := banktypes.Balance{ - Address: acc.GetAddress().String(), - Coins: sdk.NewCoins( - sdk.NewCoin(testutil.MultistakingDenomA, sdk.NewInt(100000000000000)), - sdk.NewCoin(testutil.MultistakingDenomB, sdk.NewInt(100000000000000)), - ), - } - - app := SetupWithGenesisValSet(valSet, []authtypes.GenesisAccount{acc}, balance) + valSet := GenValSet() + app := SetupWithGenesisValSet(valSet) return app } @@ -102,9 +79,9 @@ func Setup(isCheckTx bool) *SimApp { // that also act as delegators. For simplicity, each validator is bonded with a delegation // of one consensus engine unit in the default token of the simapp from first genesis // account. A Nop logger is set in SimApp. -func SetupWithGenesisValSet(valSet *tmtypes.ValidatorSet, genAccs []authtypes.GenesisAccount, balances ...banktypes.Balance) *SimApp { +func SetupWithGenesisValSet(valSet *tmtypes.ValidatorSet) *SimApp { app, genesisState := setup(true, 5) - genesisState = genesisStateWithValSet(app, genesisState, valSet, genAccs, balances...) + genesisState = genesisStateWithValSet(app, genesisState, valSet) stateBytes, _ := json.MarshalIndent(genesisState, "", " ") @@ -129,42 +106,50 @@ func SetupWithGenesisValSet(valSet *tmtypes.ValidatorSet, genAccs []authtypes.Ge return app } -func genesisStateWithValSet(app *SimApp, genesisState GenesisState, - valSet *tmtypes.ValidatorSet, genAccs []authtypes.GenesisAccount, - balances ...banktypes.Balance, -) GenesisState { +func genesisStateWithValSet(app *SimApp, genesisState GenesisState, valSet *tmtypes.ValidatorSet) GenesisState { + genAcc := GenAcc() + genAccs := []authtypes.GenesisAccount{genAcc} + balances := []banktypes.Balance{} + // set genesis accounts authGenesis := authtypes.NewGenesisState(authtypes.DefaultParams(), genAccs) genesisState[authtypes.ModuleName] = app.AppCodec().MustMarshalJSON(authGenesis) // set multi staking genesis state msCoinAInfo := multistakingtypes.MultiStakingCoinInfo{ - Denom: testutil.MultistakingDenomA, - BondWeight: sdk.OneDec(), + Denom: MultiStakingCoinA.Denom, + BondWeight: MultiStakingCoinA.BondWeight, } msCoinBInfo := multistakingtypes.MultiStakingCoinInfo{ - Denom: testutil.MultistakingDenomB, - BondWeight: sdk.MustNewDecFromStr("0.5"), + Denom: MultiStakingCoinB.Denom, + BondWeight: MultiStakingCoinB.BondWeight, } - coinInfos := []multistakingtypes.MultiStakingCoinInfo{msCoinAInfo, msCoinBInfo} - validatorCoins := make([]multistakingtypes.ValidatorMultiStakingCoin, 0, len(valSet.Validators)) + msCoinInfos := []multistakingtypes.MultiStakingCoinInfo{msCoinAInfo, msCoinBInfo} + validatorMsCoins := make([]multistakingtypes.ValidatorMultiStakingCoin, 0, len(valSet.Validators)) + locks := make([]multistakingtypes.MultiStakingLock, 0, len(valSet.Validators)) + lockCoins := sdk.NewCoins() + + // staking genesis state validators := make([]stakingtypes.Validator, 0, len(valSet.Validators)) delegations := make([]stakingtypes.Delegation, 0, len(valSet.Validators)) - locks := make([]multistakingtypes.MultiStakingLock, 0, len(valSet.Validators)) bondCoins := sdk.NewCoins() - lockCoins := sdk.NewCoins() - bondAmt := sdk.DefaultPowerReduction for i, val := range valSet.Validators { - valDenom := testutil.MultistakingDenomA + valMsCoin := MultiStakingCoinA if i%2 == 1 { - valDenom = testutil.MultistakingDenomB + valMsCoin = MultiStakingCoinB } - validatorCoins = append(validatorCoins, multistakingtypes.ValidatorMultiStakingCoin{ + + validatorMsCoins = append(validatorMsCoins, multistakingtypes.ValidatorMultiStakingCoin{ ValAddr: sdk.ValAddress(val.Address).String(), - CoinDenom: valDenom, + CoinDenom: valMsCoin.Denom, }) - valTokens := coinInfos[i%2].BondWeight.MulInt(bondAmt).RoundInt() + + lockId := multistakingtypes.MultiStakingLockID(genAcc.GetAddress().String(), sdk.ValAddress(val.Address).String()) + lockRecord := multistakingtypes.NewMultiStakingLock(&lockId, valMsCoin) + + locks = append(locks, lockRecord) + lockCoins = lockCoins.Add(valMsCoin.ToCoin()) pk, _ := cryptocodec.FromTmPubKeyInterface(val.PubKey) pkAny, _ := codectypes.NewAnyWithValue(pk) @@ -173,7 +158,7 @@ func genesisStateWithValSet(app *SimApp, genesisState GenesisState, ConsensusPubkey: pkAny, Jailed: false, Status: stakingtypes.Bonded, - Tokens: valTokens, + Tokens: valMsCoin.BondValue(), DelegatorShares: sdk.OneDec(), Description: stakingtypes.Description{}, UnbondingHeight: int64(0), @@ -182,16 +167,10 @@ func genesisStateWithValSet(app *SimApp, genesisState GenesisState, MinSelfDelegation: sdk.ZeroInt(), } - lockId := multistakingtypes.MultiStakingLockID(genAccs[0].GetAddress().String(), sdk.ValAddress(val.Address).String()) - lockCoin := multistakingtypes.NewMultiStakingCoin(coinInfos[i%2].Denom, bondAmt, coinInfos[i%2].BondWeight) - lockRecord := multistakingtypes.NewMultiStakingLock(&lockId, lockCoin) - - locks = append(locks, lockRecord) validators = append(validators, validator) - delegations = append(delegations, stakingtypes.NewDelegation(genAccs[0].GetAddress(), val.Address.Bytes(), sdk.OneDec())) + delegations = append(delegations, stakingtypes.NewDelegation(genAcc.GetAddress(), val.Address.Bytes(), sdk.OneDec())) - lockCoins = lockCoins.Add(sdk.NewCoin(lockCoin.Denom, lockCoin.Amount)) - bondCoins = bondCoins.Add(sdk.NewCoin(sdk.DefaultBondDenom, valTokens)) + bondCoins = bondCoins.Add(sdk.NewCoin(sdk.DefaultBondDenom, valMsCoin.BondValue())) } // set validators and delegations @@ -201,8 +180,8 @@ func genesisStateWithValSet(app *SimApp, genesisState GenesisState, multistakingGenesis := multistakingtypes.GenesisState{ MultiStakingLocks: locks, MultiStakingUnlocks: []multistakingtypes.MultiStakingUnlock{}, - MultiStakingCoinInfo: coinInfos, - ValidatorMultiStakingCoins: validatorCoins, + MultiStakingCoinInfo: msCoinInfos, + ValidatorMultiStakingCoins: validatorMsCoins, StakingGenesisState: stakingGenesis, } genesisState[multistakingtypes.ModuleName] = app.AppCodec().MustMarshalJSON(&multistakingGenesis) @@ -508,3 +487,24 @@ func FundAccount(app *SimApp, ctx sdk.Context, addr sdk.AccAddress, amounts sdk. } return app.BankKeeper.SendCoinsFromModuleToAccount(ctx, minttypes.ModuleName, addr, amounts) } + +func GenValSet() *tmtypes.ValidatorSet { + privVal0 := mock.NewPV() + privVal1 := mock.NewPV() + + pubKey0, _ := privVal0.GetPubKey() + pubKey1, _ := privVal1.GetPubKey() + + // create validator set with single validator + val0 := tmtypes.NewValidator(pubKey0, 1) + val1 := tmtypes.NewValidator(pubKey1, 1) + + valSet := tmtypes.NewValidatorSet([]*tmtypes.Validator{val0, val1}) + + return valSet +} + +func GenAcc() authtypes.GenesisAccount { + senderPrivKey := secp256k1.GenPrivKey() + return authtypes.NewBaseAccount(senderPrivKey.PubKey().Address().Bytes(), senderPrivKey.PubKey(), 0, 0) +} diff --git a/testing/simapp/types.go b/testing/simapp/types.go index 0e190af1..70124249 100644 --- a/testing/simapp/types.go +++ b/testing/simapp/types.go @@ -1,6 +1,7 @@ package simapp import ( + multistakingtypes "github.com/realio-tech/multi-staking-module/x/multi-staking/types" abci "github.com/tendermint/tendermint/abci/types" "github.com/cosmos/cosmos-sdk/codec" @@ -9,6 +10,22 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" ) +var ( + MultiStakingCoinA = multistakingtypes.MultiStakingCoin{ + Denom: "ario", + Amount: sdk.NewIntFromUint64(100000000), + BondWeight: sdk.MustNewDecFromStr("1.23"), + } + MultiStakingCoinB = multistakingtypes.MultiStakingCoin{ + Denom: "arst", + Amount: sdk.NewIntFromUint64(100000000), + BondWeight: sdk.MustNewDecFromStr("0.12"), + } + MultiStakingCoins = []multistakingtypes.MultiStakingCoin{ + MultiStakingCoinA, MultiStakingCoinB, + } +) + // App implements the common methods for a Cosmos SDK-based application // specific blockchain. type App interface { From 3031ac157b0796aedb7bb4e805076f56ed737f84 Mon Sep 17 00:00:00 2001 From: Hieu Vu Date: Sat, 13 Jan 2024 19:05:31 +0700 Subject: [PATCH 7/7] remove redundant file --- testutil/utils.go | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 testutil/utils.go diff --git a/testutil/utils.go b/testutil/utils.go deleted file mode 100644 index f4fe1846..00000000 --- a/testutil/utils.go +++ /dev/null @@ -1,9 +0,0 @@ -package testutil - -const ( - // MultistakingDenomA defines the multi staking denomination A - MultistakingDenomA = "ario" - - // MultistakingDenomB defines the multi staking denomination B - MultistakingDenomB = "arst" -)