mirror of
https://github.com/0glabs/0g-chain.git
synced 2024-11-14 03:55:19 +00:00
614d4e40fe
* Update cometbft, cosmos, ethermint, and ibc-go * Replace github.com/tendermint/tendermint by github.com/cometbft/cometbft * Replace github.com/tendermint/tm-db by github.com/cometbft/cometbft-db * Replace gogo/protobuf with cosmos/gogoproto & simapp replacement * Replace cosmos-sdk/simapp/helpers with cosmos-sdk/testutil/sims * Remove no longer used simulations * Replace ibchost with ibcexported See https://github.com/cosmos/ibc-go/blob/v7.2.2/docs/migrations/v6-to-v7.md#ibc-module-constants * Add new consensus params keeper * Add consensus keeper to blockers * Fix keeper and module issues in app.go * Add IsSendEnabledCoins and update SetParams interface changes * Fix protobuf build for cosmos 47 (#1800) * fix cp errors by using -f; fix lint by only linting our proto dir; and use proofs.proto directly from ics23 for ibc-go v7 * run proto-all; commit updated third party deps and swagger changes * regenerate proto files * use correct gocosmos build plugin for buf * re-gen all protobuf files to update paths for new gocosmos plugin * update protoc and buf to latest versions * fix staking keeper issues in app.go * update tally handler for gov changes * chain id fix and flag fixes * update deps for cometbft 47.7 upgrade * remove all module legacy queriers * update stakingKeeper to pointer * Replace ModuleCdc from govv1beta1 to govcodec * remove simulations * abci.LastCommitInfo → abci.CommitInfo * Remove unused code in keys.go * simapp.MakeTestEncodingConfig -> moduletestutil.MakeTestEncodingConfi * Fix chain id issues in tests * Fix remaining unit test issues * Update changelog for upgrade * Fix e2e tests using updated kvtool * Update protonet to v47 compatible genesis * Bump cometbft-db to v0.9.1-kava.1 * Update kvtool * Remove extra changelog * Fix merged rocksdb issues * go mod cleanup * Bump cometbft-db to v9 and go to 1.21 * Bump rocksdb version to v8.10.0 * Update kvtool to latest version * Update gin to v1.9.0 * Use ibctm.ModuleName in app_test * Fallback to genesis chain id instead of client toml * Remove all simulations * Fix cdp migrations issue with v47 * Update dependencies to correct tags --------- Co-authored-by: Nick DeLuca <nickdeluca08@gmail.com>
199 lines
5.9 KiB
Go
199 lines
5.9 KiB
Go
package e2e_test
|
|
|
|
import (
|
|
"context"
|
|
"encoding/hex"
|
|
"time"
|
|
|
|
sdkmath "cosmossdk.io/math"
|
|
"github.com/cosmos/cosmos-sdk/codec"
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
|
|
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
|
|
govv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1"
|
|
|
|
"github.com/kava-labs/kava/tests/e2e/testutil"
|
|
"github.com/kava-labs/kava/tests/util"
|
|
communitytypes "github.com/kava-labs/kava/x/community/types"
|
|
)
|
|
|
|
func (suite *IntegrationTestSuite) TestCommunityUpdateParams_NonAuthority() {
|
|
// ARRANGE
|
|
// setup kava account
|
|
funds := ukava(1e5) // .1 KAVA
|
|
kavaAcc := suite.Kava.NewFundedAccount("community-non-authority", sdk.NewCoins(funds))
|
|
|
|
gasLimit := int64(2e5)
|
|
fee := ukava(200)
|
|
|
|
msg := communitytypes.NewMsgUpdateParams(
|
|
kavaAcc.SdkAddress,
|
|
communitytypes.DefaultParams(),
|
|
)
|
|
|
|
// ACT
|
|
req := util.KavaMsgRequest{
|
|
Msgs: []sdk.Msg{&msg},
|
|
GasLimit: uint64(gasLimit),
|
|
FeeAmount: sdk.NewCoins(fee),
|
|
Memo: "this is a failure!",
|
|
}
|
|
res := kavaAcc.SignAndBroadcastKavaTx(req)
|
|
|
|
// ASSERT
|
|
_, err := util.WaitForSdkTxCommit(suite.Kava.Grpc.Query.Tx, res.Result.TxHash, 6*time.Second)
|
|
suite.Require().Error(err)
|
|
suite.Require().ErrorContains(
|
|
err,
|
|
govtypes.ErrInvalidSigner.Error(),
|
|
"should return with authority check error",
|
|
)
|
|
}
|
|
|
|
func (suite *IntegrationTestSuite) TestCommunityUpdateParams_Authority() {
|
|
// ARRANGE
|
|
govParamsRes, err := suite.Kava.Grpc.Query.Gov.Params(context.Background(), &govv1.QueryParamsRequest{
|
|
ParamsType: govv1.ParamDeposit,
|
|
})
|
|
suite.NoError(err)
|
|
|
|
// Check initial params
|
|
communityParamsResInitial, err := suite.Kava.Grpc.Query.Community.Params(
|
|
context.Background(),
|
|
&communitytypes.QueryParamsRequest{},
|
|
)
|
|
suite.Require().NoError(err)
|
|
|
|
// setup kava account
|
|
// .1 KAVA + min deposit amount for proposal
|
|
funds := sdk.NewCoins(ukava(1e5)).Add(govParamsRes.DepositParams.MinDeposit...)
|
|
kavaAcc := suite.Kava.NewFundedAccount("community-update-params", funds)
|
|
|
|
gasLimit := int64(2e5)
|
|
fee := ukava(200)
|
|
|
|
// Wait until switchover actually happens - When testing without the upgrade
|
|
// handler that sets a relative switchover time, the switchover time in
|
|
// genesis should be set in the past so it runs immediately.
|
|
suite.Require().Eventually(
|
|
func() bool {
|
|
params, err := suite.Kava.Grpc.Query.Community.Params(
|
|
context.Background(),
|
|
&communitytypes.QueryParamsRequest{},
|
|
)
|
|
suite.Require().NoError(err)
|
|
|
|
return params.Params.UpgradeTimeDisableInflation.Equal(time.Time{})
|
|
},
|
|
20*time.Second,
|
|
1*time.Second,
|
|
"switchover should happen",
|
|
)
|
|
|
|
// Add 1 to the staking rewards per second
|
|
newStakingRewardsPerSecond := communityParamsResInitial.Params.
|
|
StakingRewardsPerSecond.
|
|
Add(sdkmath.LegacyNewDec(1))
|
|
|
|
// 1. Proposal
|
|
// Only modify stakingRewardsPerSecond, as to not re-run the switchover and
|
|
// to not influence other tests
|
|
updateParamsMsg := communitytypes.NewMsgUpdateParams(
|
|
authtypes.NewModuleAddress(govtypes.ModuleName), // authority
|
|
communitytypes.NewParams(
|
|
time.Time{}, // after switchover, is empty
|
|
newStakingRewardsPerSecond, // only modify stakingRewardsPerSecond
|
|
communityParamsResInitial.Params.UpgradeTimeSetStakingRewardsPerSecond,
|
|
),
|
|
)
|
|
|
|
// Make sure we're actually changing the params
|
|
suite.NotEqual(
|
|
updateParamsMsg.Params,
|
|
communityParamsResInitial.Params,
|
|
"new params should be different from existing",
|
|
)
|
|
|
|
proposalMsg, err := govv1.NewMsgSubmitProposal(
|
|
[]sdk.Msg{&updateParamsMsg},
|
|
govParamsRes.Params.MinDeposit,
|
|
kavaAcc.SdkAddress.String(),
|
|
"community-update-params",
|
|
"title",
|
|
"summary",
|
|
)
|
|
suite.NoError(err)
|
|
|
|
req := util.KavaMsgRequest{
|
|
Msgs: []sdk.Msg{proposalMsg},
|
|
GasLimit: uint64(gasLimit),
|
|
FeeAmount: sdk.NewCoins(fee),
|
|
Memo: "this is a proposal please accept me",
|
|
}
|
|
res := kavaAcc.SignAndBroadcastKavaTx(req)
|
|
suite.Require().NoError(res.Err)
|
|
|
|
// Wait for proposal to be submitted
|
|
txRes, err := util.WaitForSdkTxCommit(suite.Kava.Grpc.Query.Tx, res.Result.TxHash, 6*time.Second)
|
|
suite.Require().NoError(err)
|
|
|
|
// Parse tx response to get proposal id
|
|
var govRes govv1.MsgSubmitProposalResponse
|
|
suite.decodeTxMsgResponse(txRes, &govRes)
|
|
|
|
// 2. Vote for proposal from whale account
|
|
whale := suite.Kava.GetAccount(testutil.FundedAccountName)
|
|
voteMsg := govv1.NewMsgVote(
|
|
whale.SdkAddress,
|
|
govRes.ProposalId,
|
|
govv1.OptionYes,
|
|
"",
|
|
)
|
|
|
|
voteReq := util.KavaMsgRequest{
|
|
Msgs: []sdk.Msg{voteMsg},
|
|
GasLimit: uint64(gasLimit),
|
|
FeeAmount: sdk.NewCoins(fee),
|
|
Memo: "voting",
|
|
}
|
|
voteRes := whale.SignAndBroadcastKavaTx(voteReq)
|
|
suite.Require().NoError(voteRes.Err)
|
|
|
|
_, err = util.WaitForSdkTxCommit(suite.Kava.Grpc.Query.Tx, voteRes.Result.TxHash, 6*time.Second)
|
|
suite.Require().NoError(err)
|
|
|
|
// 3. Wait until proposal passes
|
|
suite.Require().Eventually(func() bool {
|
|
proposalRes, err := suite.Kava.Grpc.Query.Gov.Proposal(context.Background(), &govv1.QueryProposalRequest{
|
|
ProposalId: govRes.ProposalId,
|
|
})
|
|
suite.NoError(err)
|
|
|
|
return proposalRes.Proposal.Status == govv1.StatusPassed
|
|
}, 60*time.Second, 1*time.Second)
|
|
|
|
// Check parameters are updated
|
|
communityParamsRes, err := suite.Kava.Grpc.Query.Community.Params(
|
|
context.Background(),
|
|
&communitytypes.QueryParamsRequest{},
|
|
)
|
|
suite.Require().NoError(err)
|
|
|
|
suite.Equal(updateParamsMsg.Params, communityParamsRes.Params)
|
|
}
|
|
|
|
func (suite *IntegrationTestSuite) decodeTxMsgResponse(txRes *sdk.TxResponse, ptr codec.ProtoMarshaler) {
|
|
// convert txRes.Data hex string to bytes
|
|
txResBytes, err := hex.DecodeString(txRes.Data)
|
|
suite.Require().NoError(err)
|
|
|
|
// Unmarshal data to TxMsgData
|
|
var txMsgData sdk.TxMsgData
|
|
suite.Kava.EncodingConfig.Marshaler.MustUnmarshal(txResBytes, &txMsgData)
|
|
suite.T().Logf("txData.MsgResponses: %v", txMsgData.MsgResponses)
|
|
|
|
// Parse MsgResponse
|
|
suite.Kava.EncodingConfig.Marshaler.MustUnmarshal(txMsgData.MsgResponses[0].Value, ptr)
|
|
suite.Require().NoError(err)
|
|
}
|