From b0b12aa5655bf38f7147fae9967a3e24e4f27197 Mon Sep 17 00:00:00 2001 From: mbreithecker Date: Wed, 4 Dec 2024 14:11:33 +0100 Subject: [PATCH 1/2] feat: Shared Staking --- app/app.go | 2 +- config.yml | 10 +- proto/kyve/stakers/v1beta1/events.proto | 45 +- proto/kyve/stakers/v1beta1/stakers.proto | 15 + proto/kyve/stakers/v1beta1/tx.proto | 65 +- testutil/commands.md | 82 + testutil/integration/checks.go | 150 +- testutil/integration/integration.go | 69 +- util/bech32.go | 33 + util/coins.go | 12 + util/expected_keepers.go | 21 + x/bundles/keeper/abci_protocol_split_test.go | 30 +- x/bundles/keeper/keeper.go | 4 +- .../keeper_suite_dropped_bundles_test.go | 19 +- .../keeper_suite_funding_bundles_test.go | 10 +- .../keeper_suite_inflation_splitting_test.go | 150 +- .../keeper_suite_invalid_bundles_test.go | 161 +- x/bundles/keeper/keeper_suite_points_test.go | 42 +- .../keeper/keeper_suite_stakers_leave_test.go | 80 +- .../keeper/keeper_suite_valid_bundles_test.go | 212 +-- .../keeper_suite_zero_delegation_test.go | 113 +- x/bundles/keeper/logic_bundles.go | 41 +- x/bundles/keeper/logic_bundles_test.go | 210 +-- ...ic_end_block_handle_upload_timeout_test.go | 271 ++- x/bundles/keeper/logic_round_robin.go | 2 +- x/bundles/keeper/logic_round_robin_test.go | 28 +- .../msg_server_claim_uploader_role_test.go | 10 +- .../msg_server_skip_uploader_role_test.go | 15 +- .../msg_server_submit_bundle_proposal_test.go | 10 +- .../msg_server_vote_bundle_proposal_test.go | 20 +- x/bundles/types/expected_keepers.go | 20 +- x/delegation/keeper/keeper.go | 4 +- .../keeper/msg_server_delegate_test.go | 82 +- .../keeper/msg_server_redelegate_test.go | 18 +- .../keeper/msg_server_undelegate_test.go | 14 +- .../msg_server_withdraw_rewards_test.go | 15 +- x/delegation/types/expected_keepers.go | 7 + x/global/ante_test.go | 7 +- x/global/post_test.go | 5 +- x/pool/keeper/msg_server_disable_pool_test.go | 30 +- .../keeper/grpc_account_redelegation_test.go | 10 +- x/query/keeper/grpc_query_can_propose_test.go | 29 +- .../keeper/grpc_query_can_validate_test.go | 10 +- x/query/keeper/grpc_query_can_vote_test.go | 29 +- x/query/keeper/grpc_query_pool.go | 4 +- x/query/keeper/grpc_query_staker.go | 11 +- x/query/keeper/grpc_query_stakers_by_pool.go | 2 +- .../grpc_query_stakers_by_pool_count.go | 16 +- x/query/keeper/helper.go | 49 +- x/query/keeper/keeper.go | 3 +- x/stakers/client/cli/tx.go | 3 - .../client/cli/tx_claim_commission_rewards.go | 44 - x/stakers/client/cli/tx_create_staker.go | 51 - x/stakers/client/cli/tx_update_metadata.go | 42 - x/stakers/genesis.go | 6 - x/stakers/keeper/exported_functions.go | 296 ++- x/stakers/keeper/exported_functions_test.go | 179 -- x/stakers/keeper/getters_staker.go | 85 +- x/stakers/keeper/getters_valaccount.go | 2 +- x/stakers/keeper/keeper.go | 84 +- x/stakers/keeper/logic_commission.go | 6 +- x/stakers/keeper/logic_stakers.go | 39 +- .../msg_server_claim_commission_rewards.go | 44 - ...sg_server_claim_commission_rewards_test.go | 694 ------- x/stakers/keeper/msg_server_create_staker.go | 53 - .../keeper/msg_server_create_staker_test.go | 204 --- x/stakers/keeper/msg_server_join_pool.go | 19 +- x/stakers/keeper/msg_server_join_pool_test.go | 222 +-- .../keeper/msg_server_leave_pool_test.go | 39 +- .../keeper/msg_server_update_commission.go | 13 +- .../msg_server_update_commission_test.go | 238 --- .../keeper/msg_server_update_metadata.go | 38 - .../keeper/msg_server_update_metadata_test.go | 179 -- x/stakers/module.go | 36 +- x/stakers/types/codec.go | 6 - x/stakers/types/errors.go | 1 + x/stakers/types/events.pb.go | 1103 ++++-------- .../types/message_claim_commission_rewards.go | 51 - x/stakers/types/message_create_staker.go | 55 - x/stakers/types/message_update_metadata.go | 67 - x/stakers/types/stakers.pb.go | 123 +- x/stakers/types/tx.pb.go | 1589 +---------------- 82 files changed, 1898 insertions(+), 6010 deletions(-) create mode 100644 testutil/commands.md create mode 100644 util/bech32.go create mode 100644 util/coins.go delete mode 100644 x/stakers/client/cli/tx_claim_commission_rewards.go delete mode 100644 x/stakers/client/cli/tx_create_staker.go delete mode 100644 x/stakers/client/cli/tx_update_metadata.go delete mode 100644 x/stakers/keeper/exported_functions_test.go delete mode 100644 x/stakers/keeper/msg_server_claim_commission_rewards.go delete mode 100644 x/stakers/keeper/msg_server_claim_commission_rewards_test.go delete mode 100644 x/stakers/keeper/msg_server_create_staker.go delete mode 100644 x/stakers/keeper/msg_server_create_staker_test.go delete mode 100644 x/stakers/keeper/msg_server_update_commission_test.go delete mode 100644 x/stakers/keeper/msg_server_update_metadata.go delete mode 100644 x/stakers/keeper/msg_server_update_metadata_test.go delete mode 100644 x/stakers/types/message_claim_commission_rewards.go delete mode 100644 x/stakers/types/message_create_staker.go delete mode 100644 x/stakers/types/message_update_metadata.go diff --git a/app/app.go b/app/app.go index e174816e..fb073705 100644 --- a/app/app.go +++ b/app/app.go @@ -5,7 +5,7 @@ import ( "os" "path/filepath" - v2_0 "github.com/KYVENetwork/chain/app/upgrades/v2_0" + "github.com/KYVENetwork/chain/app/upgrades/v2_0" abci "github.com/cometbft/cometbft/abci/types" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/config.yml b/config.yml index c715770e..1924c39d 100644 --- a/config.yml +++ b/config.yml @@ -10,16 +10,14 @@ accounts: - name: dummy # kyve137v27tfyegc083w5kj9zhhrfk34n8vhjma73gq coins: - 1000000tkyve # 1 tkyve -> 6 decimals - mnemonic: expect crisp umbrella hospital firm exhibit future size slot update blood - deliver fat happy ghost visa recall usual path purity junior ring ordinary stove + mnemonic: expect crisp umbrella hospital firm exhibit future size slot update blood deliver fat happy ghost visa recall usual path purity junior ring ordinary stove - name: alice # kyve1jq304cthpx0lwhpqzrdjrcza559ukyy3zsl2vd coins: - 1000000000acoin # 1000 acoins -> 6 decimals - 1000000000000bcoin # 1000 bcoins -> 9 decimals - 1000000000ccoin # 1000 ccoins -> 6 decimals - 2000000000000tkyve # 2M tkyve -> 6 decimals - mnemonic: worry grief loyal smoke pencil arrow trap focus high pioneer tomato hedgehog - essence purchase dove pond knee custom phone gentle sunset addict mother fabric + mnemonic: worry grief loyal smoke pencil arrow trap focus high pioneer tomato hedgehog essence purchase dove pond knee custom phone gentle sunset addict mother fabric - name: bob # kyve1hvg7zsnrj6h29q9ss577mhrxa04rn94h7zjugq coins: - 1000000000acoin # 1000 acoins -> 6 decimals @@ -167,6 +165,10 @@ genesis: binaries: "" scheduled_at: "0" duration: "0" + slashing: + params: + signed_blocks_window: 10 + min_signed_per_window: "0.5" stakers: params: commission_change_time: 10 diff --git a/proto/kyve/stakers/v1beta1/events.proto b/proto/kyve/stakers/v1beta1/events.proto index 7da2bbd8..381f358e 100644 --- a/proto/kyve/stakers/v1beta1/events.proto +++ b/proto/kyve/stakers/v1beta1/events.proto @@ -4,6 +4,7 @@ package kyve.stakers.v1beta1; import "gogoproto/gogo.proto"; import "kyve/stakers/v1beta1/params.proto"; +import "kyve/stakers/v1beta1/stakers.proto"; option go_package = "github.com/KYVENetwork/chain/x/stakers/types"; @@ -18,37 +19,6 @@ message EventUpdateParams { string payload = 3; } -// EventCreateStaker is an event emitted when a protocol node stakes in a pool. -// emitted_by: MsgCreateStaker -message EventCreateStaker { - // staker is the account address of the protocol node. - string staker = 1; - // amount ... - uint64 amount = 2; - // commission - string commission = 3 [ - (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", - (gogoproto.nullable) = false - ]; -} - -// EventUpdateMetadata is an event emitted when a protocol node updates their metadata. -// emitted_by: MsgUpdateMetadata -message EventUpdateMetadata { - // staker is the account address of the protocol node. - string staker = 1; - // moniker ... - string moniker = 2; - // website ... - string website = 3; - // identity ... - string identity = 4; - // security_contact ... - string security_contact = 5; - // details ... - string details = 6; -} - // EventUpdateCommission ... // emitted_by: EndBlock message EventUpdateCommission { @@ -92,3 +62,16 @@ message EventLeavePool { // staker ... string staker = 2; } + +// EventSlash is an event emitted when a protocol node is slashed. +// emitted_by: MsgSubmitBundleProposal, EndBlock +message EventSlash { + // pool_id is the unique ID of the pool. + uint64 pool_id = 1; + // staker is the account address of the protocol node. + string staker = 2; + // amount ... + uint64 amount = 3; + // slash_type + SlashType slash_type = 4; +} diff --git a/proto/kyve/stakers/v1beta1/stakers.proto b/proto/kyve/stakers/v1beta1/stakers.proto index 78056d19..a897ff52 100644 --- a/proto/kyve/stakers/v1beta1/stakers.proto +++ b/proto/kyve/stakers/v1beta1/stakers.proto @@ -8,6 +8,7 @@ import "gogoproto/gogo.proto"; option go_package = "github.com/KYVENetwork/chain/x/stakers/types"; +// deprecated // Staker contains all metadata for a staker // Every address can only create one staker (itself) message Staker { @@ -104,3 +105,17 @@ message QueueState { // are added to the top. uint64 high_index = 2; } + +// SlashType ... +enum SlashType { + option (gogoproto.goproto_enum_prefix) = false; + + // SLASH_TYPE_UNSPECIFIED ... + SLASH_TYPE_UNSPECIFIED = 0; + // SLASH_TYPE_TIMEOUT ... + SLASH_TYPE_TIMEOUT = 1; + // SLASH_TYPE_VOTE ... + SLASH_TYPE_VOTE = 2; + // SLASH_TYPE_UPLOAD ... + SLASH_TYPE_UPLOAD = 3; +} diff --git a/proto/kyve/stakers/v1beta1/tx.proto b/proto/kyve/stakers/v1beta1/tx.proto index 599c7787..1889f102 100644 --- a/proto/kyve/stakers/v1beta1/tx.proto +++ b/proto/kyve/stakers/v1beta1/tx.proto @@ -2,8 +2,6 @@ syntax = "proto3"; package kyve.stakers.v1beta1; -import "amino/amino.proto"; -import "cosmos/base/v1beta1/coin.proto"; import "cosmos/msg/v1/msg.proto"; import "cosmos_proto/cosmos.proto"; import "gogoproto/gogo.proto"; @@ -13,14 +11,8 @@ option go_package = "github.com/KYVENetwork/chain/x/stakers/types"; // Msg defines the Msg service. service Msg { option (cosmos.msg.v1.service) = true; - // CreateStaker ... - rpc CreateStaker(MsgCreateStaker) returns (MsgCreateStakerResponse); - // UpdateMetadata ... - rpc UpdateMetadata(MsgUpdateMetadata) returns (MsgUpdateMetadataResponse); // UpdateCommission ... rpc UpdateCommission(MsgUpdateCommission) returns (MsgUpdateCommissionResponse); - // ClaimCommissionRewards ... - rpc ClaimCommissionRewards(MsgClaimCommissionRewards) returns (MsgClaimCommissionRewardsResponse); // JoinPool ... rpc JoinPool(MsgJoinPool) returns (MsgJoinPoolResponse); // LeavePool ... @@ -31,44 +23,6 @@ service Msg { rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse); } -// MsgCreateStaker defines a SDK message for creating a staker. -message MsgCreateStaker { - option (cosmos.msg.v1.signer) = "creator"; - // creator is the address of the staker. - string creator = 1; - // amount is the initial self-stake of the staker. - uint64 amount = 2; - // commission is the percentage that is deducted from rewards before - // distributing the staker's delegators. - string commission = 3 [ - (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", - (gogoproto.nullable) = false - ]; -} - -// MsgStakePoolResponse defines the Msg/StakePool response type. -message MsgCreateStakerResponse {} - -// MsgUpdateMetadata defines a SDK message for claiming the uploader role. -message MsgUpdateMetadata { - option (cosmos.msg.v1.signer) = "creator"; - // creator ... - string creator = 1; - // moniker ... - string moniker = 2; - // website ... - string website = 3; - // identity from keybase.io - string identity = 4; - // security_contact ... - string security_contact = 5; - // details ... - string details = 6; -} - -// MsgUpdateMetadataResponse defines the Msg/MsgUpdateMetadata response type. -message MsgUpdateMetadataResponse {} - // MsgUpdateCommission ... message MsgUpdateCommission { option (cosmos.msg.v1.signer) = "creator"; @@ -84,22 +38,6 @@ message MsgUpdateCommission { // MsgUpdateCommissionResponse ... message MsgUpdateCommissionResponse {} -// MsgClaimCommissionRewards ... -message MsgClaimCommissionRewards { - option (cosmos.msg.v1.signer) = "creator"; - // creator ... - string creator = 1; - // amounts ... - repeated cosmos.base.v1beta1.Coin amounts = 2 [ - (gogoproto.nullable) = false, - (amino.dont_omitempty) = true, - (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins" - ]; -} - -// MsgClaimCommissionRewardsResponse ... -message MsgClaimCommissionRewardsResponse {} - // MsgJoinPool ... message MsgJoinPool { option (cosmos.msg.v1.signer) = "creator"; @@ -111,6 +49,9 @@ message MsgJoinPool { string valaddress = 3; // amount ... uint64 amount = 4; + + // TODO add stake fraction (in next PR) + // TODO add commission (in next PR) } // MsgJoinPoolResponse ... diff --git a/testutil/commands.md b/testutil/commands.md new file mode 100644 index 00000000..a26076c7 --- /dev/null +++ b/testutil/commands.md @@ -0,0 +1,82 @@ +Create Funder + +./build/kyved tx funders create-funder funder1 --from alice --keyring-backend test --yes --fees 5000tkyve --gas 200000 --home ~/.chain --chain-id kyve-local +./build/kyved tx funders fund-pool 0 100000000acoin 1000000acoin --from alice --keyring-backend test --yes --fees 5000tkyve --gas 200000 --home ~/.chain --chain-id kyve-local + +Create Validator + +```shell +./build/kyved tx staking create-validator validator_bob.json --from bob --keyring-backend test --yes --fees 5000tkyve --gas 200000 --home ~/.chain --chain-id kyve-local +``` + +```shell +./build/kyved tx staking create-validator validator_charlie.json --from charlie --keyring-backend test --yes --fees 5000tkyve --gas 200000 --home ~/.chain --chain-id kyve-local +``` + +Join pools + +# bob - dummy +```shell +./build/kyved tx stakers join-pool 0 kyve137v27tfyegc083w5kj9zhhrfk34n8vhjma73gq 1000000 --yes --from bob --home ~/.chain --keyring-backend test --chain-id kyve-local --fees 4000tkyve +``` + +# charlie - faucet kyve1kahmjds2rxj2qzamdvy5m8ljnkqrf5xhetes7q +```shell +./build/kyved tx stakers join-pool 0 kyve1kahmjds2rxj2qzamdvy5m8ljnkqrf5xhetes7q 1000000 --yes --from charlie --home ~/.chain --keyring-backend test --chain-id kyve-local --fees 4000tkyve +``` + +Submit Bundle proposal + +Charlie submit bundle: +staker pool_id storage_id ... hash, from_index, bundle_size ... + +# Submit Charlie kyve1ay22rr3kz659fupu0tcswlagq4ql6rwm4nuv0s faucet +```shell +./build/kyved tx bundles submit-bundle-proposal kyve1ay22rr3kz659fupu0tcswlagq4ql6rwm4nuv0s 0 "not-empty" 1024 hash 0 100 0 99 summary --from faucet --keyring-backend test --chain-id kyve-local --home ~/.chain --yes --fees 8000tkyve --gas 400000 +``` + +# Submit Bob kyve1hvg7zsnrj6h29q9ss577mhrxa04rn94h7zjugq dummy +```shell +./build/kyved tx bundles submit-bundle-proposal kyve1hvg7zsnrj6h29q9ss577mhrxa04rn94h7zjugq 0 "not-empty" 1024 hash 500 100 0 99 summary --from dummy --keyring-backend test --chain-id kyve-local --home ~/.chain --yes --fees 8000tkyve --gas 400000 +``` + +./build/kyved tx bundles claim-uploader-role kyve1ay22rr3kz659fupu0tcswlagq4ql6rwm4nuv0s 0 --from faucet --keyring-backend test --chain-id kyve-local --home ~/.chain --yes --fees 4000tkyve +./build/kyved tx bundles claim-uploader-role kyve1hvg7zsnrj6h29q9ss577mhrxa04rn94h7zjugq 0 --from bob --keyring-backend test --chain-id kyve-local --home ~/.chain --yes --fees 4000tkyve + +./build/kyved tx bundles vote-bundle-proposal kyve1ay22rr3kz659fupu0tcswlagq4ql6rwm4nuv0s 0 "not-empty" 1 --from faucet --keyring-backend test --chain-id kyve-local --home ~/.chain --yes --fees 4000tkyve +./build/kyved tx bundles vote-bundle-proposal kyve1hvg7zsnrj6h29q9ss577mhrxa04rn94h7zjugq 0 "not-empty" 1 --from dummy --keyring-backend test --chain-id kyve-local --home ~/.chain --yes --fees 4000tkyve + + + + + +# Join Pool mynode Alice foundation +``` +./build/kyved tx stakers join-pool 0 kyve1fd4qu868n7arav8vteghcppxxa0p2vna5f5ep8 1000000 --yes --from alice --home ~/.chain --keyring-backend test --chain-id kyve-alpha --fees 4000tkyve --node https://rpc.alpha.kyve.network:443 +``` + + +# Submit Charlie kyve1ay22rr3kz659fupu0tcswlagq4ql6rwm4nuv0s faucet +```shell +``` +./build/kyved tx bundles submit-bundle-proposal kyve1eka2hngntu5r2yeuyz5pd45a0fadarp3zue8gd 0 "not-empty" 1024 hash 300 100 0 99 summary --from dummy --keyring-backend test --chain-id kyve-alpha --home ~/.chain --yes --fees 8000tkyve --gas 400000 --node https://rpc.alpha.kyve.network:443 +./build/kyved tx bundles submit-bundle-proposal kyve1s7j6ccd4ule2cwtxsecqvfjmfm0u40g5drx8zl 0 "not-empty" 1024 hash 400 100 0 99 summary --from faucet --keyring-backend test --chain-id kyve-alpha --home ~/.chain --yes --fees 8000tkyve --gas 400000 --node https://rpc.alpha.kyve.network:443 +./build/kyved tx bundles submit-bundle-proposal kyve1jq304cthpx0lwhpqzrdjrcza559ukyy3zsl2vd 0 "not-empty" 1024 hash 200 100 0 99 summary --from dummy --keyring-backend test --chain-id kyve-alpha --home ~/.chain --yes --fees 8000tkyve --gas 400000 --node https://rpc.alpha.kyve.network:443 + + +# Submit Bob kyve1hvg7zsnrj6h29q9ss577mhrxa04rn94h7zjugq dummy +```shell +``` + +./build/kyved tx bundles claim-uploader-role kyve1eka2hngntu5r2yeuyz5pd45a0fadarp3zue8gd 0 --from bob --keyring-backend test --chain-id kyve-alpha --home ~/.chain --yes --fees 4000tkyve --node https://rpc.alpha.kyve.network:443 +./build/kyved tx bundles claim-uploader-role kyve1s7j6ccd4ule2cwtxsecqvfjmfm0u40g5drx8zl 0 --from faucet --keyring-backend test --chain-id kyve-alpha --home ~/.chain --yes --fees 4000tkyve --node https://rpc.alpha.kyve.network:443 + +./build/kyved tx bundles vote-bundle-proposal kyve1eka2hngntu5r2yeuyz5pd45a0fadarp3zue8gd 0 "not-empty" 1 --from dummy --keyring-backend test --chain-id kyve-alpha --home ~/.chain --yes --fees 4000tkyve --node https://rpc.alpha.kyve.network:443 +./build/kyved tx bundles vote-bundle-proposal kyve1s7j6ccd4ule2cwtxsecqvfjmfm0u40g5drx8zl 0 "not-empty" 1 --from faucet --keyring-backend test --chain-id kyve-alpha --home ~/.chain --yes --fees 4000tkyve --node https://rpc.alpha.kyve.network:443 +./build/kyved tx bundles vote-bundle-proposal kyve1jq304cthpx0lwhpqzrdjrcza559ukyy3zsl2vd 0 "not-empty" 2 --from foundation --keyring-backend test --chain-id kyve-alpha --home ~/.chain --yes --fees 4000tkyve --node https://rpc.alpha.kyve.network:443 + + +# Create Funder + +./build/kyved tx funders create-funder funder1 --from alice --keyring-backend test --yes --fees 5000tkyve --gas 200000 --home ~/.chain --chain-id kyve-alpha --node https://rpc.alpha.kyve.network +./build/kyved tx funders fund-pool 0 100000000acoin 1000000acoin --from alice --keyring-backend test --yes --fees 5000tkyve --gas 200000 --home ~/.chain --chain-id kyve-alpha --node https://rpc.alpha.kyve.network diff --git a/testutil/integration/checks.go b/testutil/integration/checks.go index f4a7b4e1..cd6b14eb 100644 --- a/testutil/integration/checks.go +++ b/testutil/integration/checks.go @@ -4,6 +4,10 @@ import ( "fmt" "time" + "github.com/KYVENetwork/chain/util" + globalTypes "github.com/KYVENetwork/chain/x/global/types" + "github.com/cosmos/cosmos-sdk/types/query" + sdk "github.com/cosmos/cosmos-sdk/types" "cosmossdk.io/store" @@ -17,15 +21,12 @@ import ( "github.com/KYVENetwork/chain/x/bundles" bundlesTypes "github.com/KYVENetwork/chain/x/bundles/types" - "github.com/KYVENetwork/chain/x/delegation" delegationtypes "github.com/KYVENetwork/chain/x/delegation/types" - globalTypes "github.com/KYVENetwork/chain/x/global/types" poolmodule "github.com/KYVENetwork/chain/x/pool" querytypes "github.com/KYVENetwork/chain/x/query/types" "github.com/KYVENetwork/chain/x/stakers" stakerstypes "github.com/KYVENetwork/chain/x/stakers/types" "github.com/KYVENetwork/chain/x/team" - "github.com/cosmos/cosmos-sdk/types/query" . "github.com/onsi/gomega" ) @@ -45,16 +46,13 @@ func (suite *KeeperTestSuite) PerformValidityChecks() { suite.VerifyStakersModuleAssetsIntegrity() suite.VerifyPoolTotalStake() suite.VerifyStakersQueries() - suite.VerifyActiveStakers() // verify bundles module suite.VerifyBundlesQueries() suite.VerifyBundlesGenesisImportExport() // verify delegation module - suite.VerifyDelegationQueries() suite.VerifyDelegationModuleIntegrity() - suite.VerifyDelegationGenesisImportExport() // verify team module // TODO(@troy): implement team funds integrity checks @@ -103,7 +101,7 @@ func (suite *KeeperTestSuite) VerifyPoolQueries() { for i := range poolsState { bundleProposalState, _ := suite.App().BundlesKeeper.GetBundleProposal(suite.Ctx(), poolsState[i].Id) stakersState := suite.App().StakersKeeper.GetAllStakerAddressesOfPool(suite.Ctx(), poolsState[i].Id) - totalDelegationState := suite.App().DelegationKeeper.GetDelegationOfPool(suite.Ctx(), poolsState[i].Id) + totalDelegationState := suite.App().StakersKeeper.GetDelegationOfPool(suite.Ctx(), poolsState[i].Id) Expect(poolsQuery[i].Id).To(Equal(poolsState[i].Id)) Expect(*poolsQuery[i].Data).To(Equal(poolsState[i])) @@ -128,11 +126,11 @@ func (suite *KeeperTestSuite) VerifyPoolQueries() { stakersByPoolState := make([]querytypes.StakerPoolResponse, 0) for _, valaccount := range valaccounts { - staker, stakerFound := suite.App().StakersKeeper.GetStaker(suite.Ctx(), valaccount.Staker) + _, stakerFound := suite.App().StakersKeeper.GetValidator(suite.Ctx(), valaccount.Staker) if stakerFound { stakersByPoolState = append(stakersByPoolState, querytypes.StakerPoolResponse{ - Staker: suite.App().QueryKeeper.GetFullStaker(suite.Ctx(), staker.Address), + Staker: suite.App().QueryKeeper.GetFullStaker(suite.Ctx(), valaccount.Staker), Valaccount: valaccount, }) } @@ -168,10 +166,6 @@ func (suite *KeeperTestSuite) VerifyPoolGenesisImportExport() { func (suite *KeeperTestSuite) VerifyStakersModuleAssetsIntegrity() { expectedBalance := sdk.NewCoins() - for _, staker := range suite.App().StakersKeeper.GetAllStakers(suite.Ctx()) { - expectedBalance = expectedBalance.Add(staker.CommissionRewards...) - } - moduleAcc := suite.App().AccountKeeper.GetModuleAccount(suite.Ctx(), stakerstypes.ModuleName).GetAddress() actualBalance := suite.App().BankKeeper.GetAllBalances(suite.Ctx(), moduleAcc) @@ -181,31 +175,18 @@ func (suite *KeeperTestSuite) VerifyStakersModuleAssetsIntegrity() { func (suite *KeeperTestSuite) VerifyPoolTotalStake() { for _, pool := range suite.App().PoolKeeper.GetAllPools(suite.Ctx()) { expectedBalance := uint64(0) - actualBalance := suite.App().DelegationKeeper.GetDelegationOfPool(suite.Ctx(), pool.Id) + actualBalance := suite.App().StakersKeeper.GetDelegationOfPool(suite.Ctx(), pool.Id) for _, stakerAddress := range suite.App().StakersKeeper.GetAllStakerAddressesOfPool(suite.Ctx(), pool.Id) { - expectedBalance += suite.App().DelegationKeeper.GetDelegationAmount(suite.Ctx(), stakerAddress) + expectedBalance += suite.App().StakersKeeper.GetDelegationAmount(suite.Ctx(), stakerAddress) } Expect(actualBalance).To(Equal(expectedBalance)) } } -func (suite *KeeperTestSuite) VerifyActiveStakers() { - totalDelegation := uint64(0) - for _, delegator := range suite.App().DelegationKeeper.GetAllDelegators(suite.Ctx()) { - if len(suite.App().StakersKeeper.GetValaccountsFromStaker(suite.Ctx(), delegator.Staker)) > 0 { - totalDelegation += suite.App().DelegationKeeper.GetDelegationAmountOfDelegator(suite.Ctx(), delegator.Staker, delegator.Delegator) - - validators, _ := suite.App().StakersKeeper.GetDelegations(suite.ctx, delegator.Delegator) - Expect(validators).To(ContainElement(delegator.Staker)) - } - } - Expect(suite.App().StakersKeeper.TotalBondedTokens(suite.Ctx()).Uint64()).To(Equal(totalDelegation)) -} - func (suite *KeeperTestSuite) VerifyStakersQueries() { - stakersState := suite.App().StakersKeeper.GetAllStakers(suite.Ctx()) + validators, _ := suite.App().StakingKeeper.GetBondedValidatorsByPower(suite.Ctx()) stakersQuery, stakersQueryErr := suite.App().QueryKeeper.Stakers(suite.Ctx(), &querytypes.QueryStakersRequest{ Pagination: &query.PageRequest{ Limit: 1000, @@ -218,10 +199,10 @@ func (suite *KeeperTestSuite) VerifyStakersQueries() { } Expect(stakersQueryErr).To(BeNil()) - Expect(stakersQuery.Stakers).To(HaveLen(len(stakersState))) + Expect(stakersQuery.Stakers).To(HaveLen(len(validators))) - for i := range stakersState { - address := stakersState[i].Address + for i := range validators { + address := util.MustAccountAddressFromValAddress(validators[i].OperatorAddress) suite.verifyFullStaker(stakersMap[address], address) stakerByAddressQuery, stakersByAddressQueryErr := suite.App().QueryKeeper.Staker(suite.Ctx(), &querytypes.QueryStakerRequest{ @@ -317,62 +298,6 @@ func (suite *KeeperTestSuite) VerifyBundlesGenesisImportExport() { // delegation module checks // ======================== -func (suite *KeeperTestSuite) VerifyDelegationQueries() { - for _, delegator := range suite.App().DelegationKeeper.GetAllDelegators(suite.Ctx()) { - - // Query: delegator/{staker}/{delegator} - resD, errD := suite.App().QueryKeeper.Delegator(suite.Ctx(), &querytypes.QueryDelegatorRequest{ - Staker: delegator.Staker, - Delegator: delegator.Delegator, - }) - Expect(errD).To(BeNil()) - Expect(resD.Delegator.Delegator).To(Equal(delegator.Delegator)) - Expect(resD.Delegator.Staker).To(Equal(delegator.Staker)) - Expect(resD.Delegator.DelegationAmount).To(Equal(suite.App().DelegationKeeper.GetDelegationAmountOfDelegator(suite.Ctx(), delegator.Staker, delegator.Delegator))) - Expect(resD.Delegator.CurrentRewards.String()).To(Equal(suite.App().DelegationKeeper.GetOutstandingRewards(suite.Ctx(), delegator.Staker, delegator.Delegator).String())) - - // Query: stakers_by_delegator/{delegator} - resSbD, errSbD := suite.App().QueryKeeper.StakersByDelegator(suite.Ctx(), &querytypes.QueryStakersByDelegatorRequest{ - Pagination: nil, - Delegator: delegator.Delegator, - }) - Expect(errSbD).To(BeNil()) - Expect(resSbD.Delegator).To(Equal(delegator.Delegator)) - for _, sRes := range resSbD.Stakers { - Expect(sRes.DelegationAmount).To(Equal(suite.App().DelegationKeeper.GetDelegationAmountOfDelegator(suite.Ctx(), sRes.Staker.Address, delegator.Delegator))) - Expect(sRes.CurrentRewards.String()).To(Equal(suite.App().DelegationKeeper.GetOutstandingRewards(suite.Ctx(), sRes.Staker.Address, delegator.Delegator).String())) - suite.verifyFullStaker(*sRes.Staker, sRes.Staker.Address) - } - } - - stakersDelegators := make(map[string]map[string]delegationtypes.Delegator) - for _, d := range suite.App().DelegationKeeper.GetAllDelegators(suite.Ctx()) { - if stakersDelegators[d.Staker] == nil { - stakersDelegators[d.Staker] = map[string]delegationtypes.Delegator{} - } - stakersDelegators[d.Staker][d.Delegator] = d - } - - for _, staker := range suite.App().StakersKeeper.GetAllStakers(suite.Ctx()) { - // Query: delegators_by_staker/{staker} - resDbS, errDbS := suite.App().QueryKeeper.DelegatorsByStaker(suite.Ctx(), &querytypes.QueryDelegatorsByStakerRequest{ - Pagination: nil, - Staker: staker.Address, - }) - Expect(errDbS).To(BeNil()) - - delegationData, _ := suite.App().DelegationKeeper.GetDelegationData(suite.Ctx(), staker.Address) - Expect(resDbS.TotalDelegatorCount).To(Equal(delegationData.DelegatorCount)) - Expect(resDbS.TotalDelegation).To(Equal(suite.App().DelegationKeeper.GetDelegationAmount(suite.Ctx(), staker.Address))) - - for _, delegator := range resDbS.Delegators { - Expect(stakersDelegators[delegator.Staker][delegator.Delegator]).ToNot(BeNil()) - Expect(delegator.DelegationAmount).To(Equal(suite.App().DelegationKeeper.GetDelegationAmountOfDelegator(suite.Ctx(), delegator.Staker, delegator.Delegator))) - Expect(delegator.CurrentRewards.String()).To(Equal(suite.App().DelegationKeeper.GetOutstandingRewards(suite.Ctx(), delegator.Staker, delegator.Delegator).String())) - } - } -} - func (suite *KeeperTestSuite) VerifyDelegationModuleIntegrity() { expectedBalance := sdk.NewCoins() @@ -398,13 +323,6 @@ func (suite *KeeperTestSuite) VerifyDelegationModuleIntegrity() { } } -func (suite *KeeperTestSuite) VerifyDelegationGenesisImportExport() { - genState := delegation.ExportGenesis(suite.Ctx(), suite.App().DelegationKeeper) - err := genState.Validate() - Expect(err).To(BeNil()) - delegation.InitGenesis(suite.Ctx(), suite.App().DelegationKeeper, *genState) -} - // ========================= // team module checks // ========================= @@ -523,24 +441,25 @@ func (suite *KeeperTestSuite) VerifyFundersModuleAssetsIntegrity() { func (suite *KeeperTestSuite) verifyFullStaker(fullStaker querytypes.FullStaker, stakerAddress string) { Expect(fullStaker.Address).To(Equal(stakerAddress)) - staker, found := suite.App().StakersKeeper.GetStaker(suite.Ctx(), stakerAddress) - Expect(found).To(BeTrue()) - Expect(fullStaker.SelfDelegation).To(Equal(suite.App().DelegationKeeper.GetDelegationAmountOfDelegator(suite.Ctx(), stakerAddress, stakerAddress))) - - selfDelegationUnbonding := uint64(0) - for _, entry := range suite.App().DelegationKeeper.GetAllUnbondingDelegationQueueEntriesOfDelegator(suite.Ctx(), fullStaker.Address) { - if entry.Staker == stakerAddress { - selfDelegationUnbonding += entry.Amount - } - } - - Expect(fullStaker.SelfDelegationUnbonding).To(Equal(selfDelegationUnbonding)) - Expect(fullStaker.Metadata.Identity).To(Equal(staker.Identity)) - Expect(fullStaker.Metadata.SecurityContact).To(Equal(staker.SecurityContact)) - Expect(fullStaker.Metadata.Details).To(Equal(staker.Details)) - Expect(fullStaker.Metadata.Website).To(Equal(staker.Website)) - Expect(fullStaker.Metadata.Commission).To(Equal(staker.Commission)) - Expect(fullStaker.Metadata.Moniker).To(Equal(staker.Moniker)) + // TODO after reworking the API Queries + //staker, found := suite.App().StakersKeeper.GetValidator(suite.Ctx(), stakerAddress) + //Expect(found).To(BeTrue()) + //Expect(fullStaker.SelfDelegation).To(Equal(suite.App().StakersKeeper.GetDelegationAmountOfDelegator(suite.Ctx(), stakerAddress, stakerAddress))) + // + //selfDelegationUnbonding := uint64(0) + //for _, entry := range suite.App().DelegationKeeper.GetAllUnbondingDelegationQueueEntriesOfDelegator(suite.Ctx(), fullStaker.Address) { + // if entry.Staker == stakerAddress { + // selfDelegationUnbonding += entry.Amount + // } + //} + // + //Expect(fullStaker.SelfDelegationUnbonding).To(Equal(selfDelegationUnbonding)) + //Expect(fullStaker.Metadata.Identity).To(Equal(staker.Description.Identity)) + //Expect(fullStaker.Metadata.SecurityContact).To(Equal(staker.Description.SecurityContact)) + //Expect(fullStaker.Metadata.Details).To(Equal(staker.Description.Details)) + //Expect(fullStaker.Metadata.Website).To(Equal(staker.Description.Website)) + //Expect(fullStaker.Metadata.Commission).To(Equal(staker.Commission)) + //Expect(fullStaker.Metadata.Moniker).To(Equal(staker.Description.Moniker)) pendingCommissionChange, found := suite.App().StakersKeeper.GetCommissionChangeEntryByIndex2(suite.Ctx(), stakerAddress) if found { @@ -550,11 +469,6 @@ func (suite *KeeperTestSuite) verifyFullStaker(fullStaker querytypes.FullStaker, Expect(fullStaker.Metadata.PendingCommissionChange).To(BeNil()) } - delegationData, _ := suite.App().DelegationKeeper.GetDelegationData(suite.Ctx(), stakerAddress) - Expect(fullStaker.DelegatorCount).To(Equal(delegationData.DelegatorCount)) - - Expect(fullStaker.TotalDelegation).To(Equal(suite.App().DelegationKeeper.GetDelegationAmount(suite.Ctx(), stakerAddress))) - poolIds := make(map[uint64]bool) for _, poolMembership := range fullStaker.Pools { diff --git a/testutil/integration/integration.go b/testutil/integration/integration.go index 25462cc2..e1432bbf 100644 --- a/testutil/integration/integration.go +++ b/testutil/integration/integration.go @@ -1,10 +1,12 @@ package integration import ( - "encoding/hex" mrand "math/rand" "time" + "cosmossdk.io/math" + "github.com/KYVENetwork/chain/util" + "github.com/stretchr/testify/suite" abci "github.com/cometbft/cometbft/abci/types" @@ -19,7 +21,6 @@ import ( "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" sdk "github.com/cosmos/cosmos-sdk/types" mintTypes "github.com/cosmos/cosmos-sdk/x/mint/types" - stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ) @@ -241,11 +242,8 @@ type KeeperTestSuite struct { ctx sdk.Context - app *app.App - address [20]byte - consAddress sdk.ConsAddress - validator stakingtypes.Validator - denom string + app *app.App + denom string } func (suite *KeeperTestSuite) App() *app.App { @@ -269,18 +267,11 @@ func (suite *KeeperTestSuite) SetupApp(startTime int64) { suite.denom = globalTypes.Denom - rawHex, _ := hex.DecodeString("0xBf71F763e4DEd30139C40160AE74Df881D5C7A2d") - suite.address = [20]byte(rawHex[:20]) - - // consensus key - ePriv := ed25519.GenPrivKeyFromSecret([]byte{1}) - suite.consAddress = sdk.ConsAddress(ePriv.PubKey().Address()) - suite.ctx = suite.app.BaseApp.NewContextLegacy(false, tmproto.Header{ Height: 1, ChainID: "kyve-test", Time: time.Unix(startTime, 0).UTC(), - ProposerAddress: suite.consAddress.Bytes(), + ProposerAddress: sdk.ConsAddress(ed25519.GenPrivKeyFromSecret([]byte("Validator-1")).PubKey().Address()).Bytes(), Version: tmversion.Consensus{ Block: version.BlockProtocol, @@ -307,20 +298,52 @@ func (suite *KeeperTestSuite) SetupApp(startTime int64) { stakingParams, _ := suite.app.StakingKeeper.GetParams(suite.ctx) stakingParams.BondDenom = suite.denom + stakingParams.MaxValidators = 51 _ = suite.app.StakingKeeper.SetParams(suite.ctx, stakingParams) govParams, _ := suite.app.GovKeeper.Params.Get(suite.ctx) govParams.MinDeposit = sdk.NewCoins(sdk.NewInt64Coin(KYVE_DENOM, int64(100_000_000_000))) // set min deposit to 100 KYVE _ = suite.app.GovKeeper.Params.Set(suite.ctx, govParams) +} + +func (suite *KeeperTestSuite) CreateValidatorWithoutCommit(address, moniker string, kyveStake int64) { + valAddress := util.MustValaddressFromOperatorAddress(address) + + msg, _ := stakingtypes.NewMsgCreateValidator( + valAddress, + ed25519.GenPrivKeyFromSecret([]byte(valAddress)).PubKey(), + sdk.NewInt64Coin(globalTypes.Denom, kyveStake), + stakingtypes.Description{Moniker: moniker}, + stakingtypes.NewCommissionRates(math.LegacyMustNewDecFromStr("0.1"), math.LegacyMustNewDecFromStr("1"), math.LegacyMustNewDecFromStr("1")), + math.NewInt(1), + ) + + _, err := suite.RunTx(msg) + if err != nil { + panic(err) + } + + suite.Commit() +} + +func (suite *KeeperTestSuite) CreateValidator(address, moniker string, kyveStake int64) { + suite.CreateValidatorWithoutCommit(address, moniker, kyveStake) + suite.Commit() +} - // Set Validator - valAddr := sdk.ValAddress(suite.address[:]) - validator, _ := stakingtypes.NewValidator(valAddr.String(), ePriv.PubKey(), stakingtypes.Description{}) - validator = stakingkeeper.TestingUpdateValidator(suite.app.StakingKeeper, suite.ctx, validator, true) - //_ = suite.app.StakingKeeper.AfterValidatorCreated(suite.ctx, validator.GetOperator()) - _ = suite.app.StakingKeeper.SetValidatorByConsAddr(suite.ctx, validator) - validators, _ := suite.app.StakingKeeper.GetValidators(suite.ctx, 1) - suite.validator = validators[0] +func (suite *KeeperTestSuite) CreateZeroDelegationValidator(address, name string) { + // create zero delegation validator by overwriting the min-self-delegation with an invalid value + // it is fine for the test + suite.CreateValidator(address, name, int64(100*KYVE)) + val, _ := sdk.ValAddressFromBech32(util.MustValaddressFromOperatorAddress(address)) + validator, _ := suite.App().StakingKeeper.GetValidator(suite.Ctx(), val) + validator.MinSelfDelegation = math.ZeroInt() + _ = suite.App().StakingKeeper.SetValidator(suite.Ctx(), validator) + suite.RunTxSuccess(stakingtypes.NewMsgUndelegate( + address, + util.MustValaddressFromOperatorAddress(address), + sdk.NewInt64Coin("tkyve", int64(100*KYVE)), + )) } func (suite *KeeperTestSuite) Commit() { diff --git a/util/bech32.go b/util/bech32.go new file mode 100644 index 00000000..34e19d8e --- /dev/null +++ b/util/bech32.go @@ -0,0 +1,33 @@ +package util + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" +) + +func MustValaddressFromOperatorAddress(operatorAddress string) string { + rawAddressBytes, err := sdk.GetFromBech32(operatorAddress, "kyve") + if err != nil { + panic(err) + } + + valAddress, err := sdk.Bech32ifyAddressBytes("kyvevaloper", rawAddressBytes) + if err != nil { + panic(err) + } + + return valAddress +} + +func MustAccountAddressFromValAddress(valAddress string) string { + rawAddressBytes, err := sdk.GetFromBech32(valAddress, "kyvevaloper") + if err != nil { + panic(err) + } + + accAddress, err := sdk.Bech32ifyAddressBytes("kyve", rawAddressBytes) + if err != nil { + panic(err) + } + + return accAddress +} diff --git a/util/coins.go b/util/coins.go new file mode 100644 index 00000000..4183965e --- /dev/null +++ b/util/coins.go @@ -0,0 +1,12 @@ +package util + +import sdk "github.com/cosmos/cosmos-sdk/types" + +// TruncateDecCoins converts sdm.DecCoins to sdk.Coins by truncating all values to integers. +func TruncateDecCoins(decCoins sdk.DecCoins) sdk.Coins { + coins := sdk.NewCoins() + for _, coin := range decCoins { + coins = coins.Add(sdk.NewCoin(coin.Denom, coin.Amount.TruncateInt())) + } + return coins +} diff --git a/util/expected_keepers.go b/util/expected_keepers.go index 1c02929c..125f5c3c 100644 --- a/util/expected_keepers.go +++ b/util/expected_keepers.go @@ -3,6 +3,10 @@ package util import ( "context" + "cosmossdk.io/math" + distributionTypes "github.com/cosmos/cosmos-sdk/x/distribution/types" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + upgradeTypes "cosmossdk.io/x/upgrade/types" sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -20,6 +24,23 @@ type BankKeeper interface { type DistributionKeeper interface { FundCommunityPool(ctx context.Context, amount sdk.Coins, sender sdk.AccAddress) error + AllocateTokensToValidator(ctx context.Context, val stakingtypes.ValidatorI, tokens sdk.DecCoins) error + IncrementValidatorPeriod(ctx context.Context, val stakingtypes.ValidatorI) (uint64, error) + CalculateDelegationRewards(ctx context.Context, val stakingtypes.ValidatorI, del stakingtypes.DelegationI, endingPeriod uint64) (rewards sdk.DecCoins, err error) + + GetValidatorAccumulatedCommission(ctx context.Context, val sdk.ValAddress) (commission distributionTypes.ValidatorAccumulatedCommission, err error) + SetValidatorAccumulatedCommission(ctx context.Context, val sdk.ValAddress, commission distributionTypes.ValidatorAccumulatedCommission) error + GetValidatorOutstandingRewards(ctx context.Context, val sdk.ValAddress) (rewards distributionTypes.ValidatorOutstandingRewards, err error) + SetValidatorOutstandingRewards(ctx context.Context, val sdk.ValAddress, rewards distributionTypes.ValidatorOutstandingRewards) error +} + +type StakingKeeper interface { + Slash(ctx context.Context, consAddr sdk.ConsAddress, infractionHeight, power int64, slashFactor math.LegacyDec) (math.Int, error) + GetValidator(ctx context.Context, addr sdk.ValAddress) (validator stakingtypes.Validator, err error) + GetBondedValidatorsByPower(ctx context.Context) ([]stakingtypes.Validator, error) + PowerReduction(ctx context.Context) math.Int + SetHooks(sh stakingtypes.StakingHooks) + Delegation(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) (stakingtypes.DelegationI, error) } type UpgradeKeeper interface { diff --git a/x/bundles/keeper/abci_protocol_split_test.go b/x/bundles/keeper/abci_protocol_split_test.go index d0c1da2f..9d5c059e 100644 --- a/x/bundles/keeper/abci_protocol_split_test.go +++ b/x/bundles/keeper/abci_protocol_split_test.go @@ -78,10 +78,7 @@ var _ = Describe("abci.go", Ordered, func() { It("active pool should receive inflation funds", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -89,10 +86,7 @@ var _ = Describe("abci.go", Ordered, func() { Valaddress: i.VALADDRESS_0_A, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -134,15 +128,9 @@ var _ = Describe("abci.go", Ordered, func() { } s.RunTxPoolSuccess(msg) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -201,10 +189,7 @@ var _ = Describe("abci.go", Ordered, func() { } s.RunTxPoolSuccess(msg) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -212,10 +197,7 @@ var _ = Describe("abci.go", Ordered, func() { Valaddress: i.VALADDRESS_0_A, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, diff --git a/x/bundles/keeper/keeper.go b/x/bundles/keeper/keeper.go index 7691e59b..d3d863aa 100644 --- a/x/bundles/keeper/keeper.go +++ b/x/bundles/keeper/keeper.go @@ -46,7 +46,7 @@ func NewKeeper( accountKeeper types.AccountKeeper, bankKeeper util.BankKeeper, - distrkeeper util.DistributionKeeper, + distrKeeper util.DistributionKeeper, poolKeeper types.PoolKeeper, stakerKeeper types.StakerKeeper, delegationKeeper types.DelegationKeeper, @@ -63,7 +63,7 @@ func NewKeeper( accountKeeper: accountKeeper, bankKeeper: bankKeeper, - distrkeeper: distrkeeper, + distrkeeper: distrKeeper, poolKeeper: poolKeeper, stakerKeeper: stakerKeeper, delegationKeeper: delegationKeeper, diff --git a/x/bundles/keeper/keeper_suite_dropped_bundles_test.go b/x/bundles/keeper/keeper_suite_dropped_bundles_test.go index 3a1a4b31..1454c74b 100644 --- a/x/bundles/keeper/keeper_suite_dropped_bundles_test.go +++ b/x/bundles/keeper/keeper_suite_dropped_bundles_test.go @@ -65,10 +65,7 @@ var _ = Describe("dropped bundles", Ordered, func() { AmountsPerBundle: i.KYVECoins(1 * i.T_KYVE), }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -76,10 +73,7 @@ var _ = Describe("dropped bundles", Ordered, func() { Valaddress: i.VALADDRESS_0_A, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -108,10 +102,7 @@ var _ = Describe("dropped bundles", Ordered, func() { It("Produce a dropped bundle because not enough validators voted", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_2, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_2, "Staker-2", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_2, @@ -183,7 +174,7 @@ var _ = Describe("dropped bundles", Ordered, func() { balanceUploader := s.GetBalanceFromAddress(valaccountUploader.Staker) Expect(balanceUploader).To(Equal(initialBalanceStaker0)) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(BeEmpty()) // check voter status valaccountVoter, _ := s.App().StakersKeeper.GetValaccount(s.Ctx(), 0, i.STAKER_1) @@ -196,7 +187,7 @@ var _ = Describe("dropped bundles", Ordered, func() { Expect(balanceVoter).To(Equal(initialBalanceStaker1)) Expect(balanceVoter).To(Equal(initialBalanceStaker1)) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_1, i.STAKER_1)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_1, i.STAKER_1)).To(BeEmpty()) // check pool funds pool, _ = s.App().PoolKeeper.GetPool(s.Ctx(), 0) diff --git a/x/bundles/keeper/keeper_suite_funding_bundles_test.go b/x/bundles/keeper/keeper_suite_funding_bundles_test.go index 04546dee..7c34eead 100644 --- a/x/bundles/keeper/keeper_suite_funding_bundles_test.go +++ b/x/bundles/keeper/keeper_suite_funding_bundles_test.go @@ -104,10 +104,7 @@ var _ = Describe("funding bundles", Ordered, func() { Moniker: "Bob", }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -115,10 +112,7 @@ var _ = Describe("funding bundles", Ordered, func() { Valaddress: i.VALADDRESS_0_A, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, diff --git a/x/bundles/keeper/keeper_suite_inflation_splitting_test.go b/x/bundles/keeper/keeper_suite_inflation_splitting_test.go index b46457fc..2b6c1d65 100644 --- a/x/bundles/keeper/keeper_suite_inflation_splitting_test.go +++ b/x/bundles/keeper/keeper_suite_inflation_splitting_test.go @@ -44,6 +44,15 @@ TEST CASES - inflation splitting */ +/* + +Important Note: +Due the way the set-up works and the missing tendermint component, the validator votes are always empty. +Therefore, all inflation rewards are added to the community pool and are not distributed among the validators. +This makes testing for the inflation quite easy, as only protocol rewards will be added to the validators. + +*/ + var _ = Describe("inflation splitting", Ordered, func() { var s *i.KeeperTestSuite @@ -116,10 +125,7 @@ var _ = Describe("inflation splitting", Ordered, func() { Moniker: "Bob", }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -127,10 +133,7 @@ var _ = Describe("inflation splitting", Ordered, func() { Valaddress: i.VALADDRESS_0_A, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -224,12 +227,11 @@ var _ = Describe("inflation splitting", Ordered, func() { Expect(b2).To(BeZero()) // assert bundle reward - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) // assert commission rewards - Expect(uploader.CommissionRewards).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingCommissionRewards(s.Ctx(), i.STAKER_0)).To(BeEmpty()) // assert uploader self delegation rewards - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(BeEmpty()) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) @@ -310,18 +312,17 @@ var _ = Describe("inflation splitting", Ordered, func() { Expect(b1 - b2).To(Equal(payout)) // assert bundle reward - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) // assert commission rewards (here we round down since the result of commission rewards gets truncated) // (total_bundle_payout - treasury_reward - storage_cost) * (1 - commission) // storage_cost = byte_size * usd_per_byte / len(coins) * coin_weight // (2471669 - (2471669 * 0.01) - _((100 * 0.5) / (1 * 1))_) * 0.1 + _((100 * 0.5) / (1 * 1))_ - Expect(uploader.CommissionRewards.String()).To(Equal(i.KYVECoins(244_740).String())) + Expect(s.App().StakersKeeper.GetOutstandingCommissionRewards(s.Ctx(), i.STAKER_0).String()).To(Equal(i.KYVECoins(244_740).String())) // assert uploader self delegation rewards (here we round up since the result of delegation rewards is the remainder minus the truncated commission rewards) // (total_bundle_payout - treasury_reward - storage_cost) * commission + storage_cost // storage_cost = byte_size * usd_per_byte / len(coins) * coin_weight // (2471669 - (2471669 * 0.01) - _((100 * 0.5) / (1 * 1))_) * (1 - 0.1) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.KYVECoins(2_202_213).String())) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.KYVECoins(2_202_214).String())) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) @@ -399,14 +400,15 @@ var _ = Describe("inflation splitting", Ordered, func() { Expect(b1 - b2).To(Equal(payout)) // assert bundle reward - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) // assert commission rewards (here we round down since the result of commission rewards gets truncated) // (49433483 - (49433483 * 0.01) - _((100 * 0.5) / (1 * 1))_) * 0.1 + _((100 * 0.5) / (1 * 1))_ - Expect(uploader.CommissionRewards.String()).To(Equal(i.KYVECoins(4_893_959).String())) + // Due to cosmos rounding, the result is a little off. + Expect(s.App().StakersKeeper.GetOutstandingCommissionRewards(s.Ctx(), i.STAKER_0).String()).To(Equal(i.KYVECoins(4_893_963).String())) // assert uploader self delegation rewards (here we round up since the result of delegation rewards is the remainder minus the truncated commission rewards) // (49433483 - (49433483 * 0.01) - _((100 * 0.5) / (1 * 1))_) * (1 - 0.1) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.KYVECoins(44_045_190).String())) + // Due to cosmos rounding, the result is a little off. + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.KYVECoins(44_045_219).String())) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) @@ -497,14 +499,13 @@ var _ = Describe("inflation splitting", Ordered, func() { // check uploader rewards // we assert no kyve coins here since inflation is zero - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) // assert commission rewards (here we round down since the result of commission rewards gets truncated) // (10_000 - (10_000 * 0.01) - _((100 * 0.5) / (1 * 1))_) * 0.1 + _((100 * 0.5) / (1 * 1))_ - Expect(uploader.CommissionRewards.String()).To(Equal(i.KYVECoins(1035).String())) + Expect(s.App().StakersKeeper.GetOutstandingCommissionRewards(s.Ctx(), i.STAKER_0).String()).To(Equal(i.KYVECoins(1035).String())) // assert uploader self delegation rewards (here we round up since the result of delegation rewards is the remainder minus the truncated commission rewards) // (10_000 - (10_000 * 0.01) - _((100 * 0.5) / (1 * 1))_) * (1 - 0.1) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.KYVECoins(8865).String())) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.KYVECoins(8865).String())) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) @@ -603,14 +604,13 @@ var _ = Describe("inflation splitting", Ordered, func() { Expect(b1 - b2).To(Equal(payout)) // assert bundle reward - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) // assert commission rewards (here we round down since the result of commission rewards gets truncated) // (7_415_009 + 10_000 - ((7_415_009 + 10_000) * 0.01) - _((100 * 0.5) / (1 * 1))_) * 0.1 + _((100 * 0.5) / (1 * 1))_ - Expect(uploader.CommissionRewards.String()).To(Equal(i.KYVECoins(735_120).String())) + Expect(s.App().StakersKeeper.GetOutstandingCommissionRewards(s.Ctx(), i.STAKER_0).String()).To(Equal(i.KYVECoins(735_121).String())) // assert uploader self delegation rewards (here we round up since the result of delegation rewards is the remainder minus the truncated commission rewards) // (7_415_009 + 10_000 - ((7_415_009 + 10_000) * 0.01) - _((100 * 0.5) / (1 * 1))_) * (1 - 0.1) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.KYVECoins(6_615_639).String())) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.KYVECoins(6_615_641).String())) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) @@ -702,14 +702,12 @@ var _ = Describe("inflation splitting", Ordered, func() { Expect(b1 - b2).To(Equal(payout)) // assert bundle reward - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - // assert commission rewards (here we round down since the result of commission rewards gets truncated) // (2_471_6741 + 10_000 - ((2_471_6741 + 10_000) * 0.01) - _((100 * 0.5) / (1 * 1))_) * 0.1 + _((100 * 0.5) / (1 * 1))_ - Expect(uploader.CommissionRewards.String()).To(Equal(i.KYVECoins(2_447_992).String())) + Expect(s.App().StakersKeeper.GetOutstandingCommissionRewards(s.Ctx(), i.STAKER_0).String()).To(Equal(i.KYVECoins(2_447_994).String())) // assert uploader self delegation rewards (here we round up since the result of delegation rewards is the remainder minus the truncated commission rewards) // (2_471_6741 + 10_000 - ((2_471_6741 + 10_000) * 0.01) - _((100 * 0.5) / (1 * 1))_) * (1 - 0.1) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.KYVECoins(22_031_482).String())) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.KYVECoins(22_031_497).String())) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) @@ -799,14 +797,13 @@ var _ = Describe("inflation splitting", Ordered, func() { Expect(b2).To(BeZero()) // assert bundle reward - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) // assert commission rewards (here we round down since the result of commission rewards gets truncated) // (300 - (300 * 0.01) - _((100 * 0.5) / (1 * 1))_) * 0.1 + _((100 * 0.5) / (1 * 1))_ - Expect(uploader.CommissionRewards.String()).To(Equal(i.KYVECoins(74).String())) + Expect(s.App().StakersKeeper.GetOutstandingCommissionRewards(s.Ctx(), i.STAKER_0).String()).To(Equal(i.KYVECoins(74).String())) // assert uploader self delegation rewards (here we round up since the result of delegation rewards is the remainder minus the truncated commission rewards) // (300 - (300 * 0.01) - _((100 * 0.5) / (1 * 1))_) * (1 - 0.1) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.KYVECoins(223).String())) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.KYVECoins(222).String())) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) @@ -905,14 +902,13 @@ var _ = Describe("inflation splitting", Ordered, func() { Expect(b1 - b2).To(Equal(payout)) // assert bundle reward - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) // assert commission rewards (here we round down since the result of commission rewards gets truncated) // (7_415_009 + 300 - ((7_415_009 + 300) * 0.01) - _((100 * 0.5) / (1 * 1))_) * 0.1 + _((100 * 0.5) / (1 * 1))_ - Expect(uploader.CommissionRewards.String()).To(Equal(i.KYVECoins(734_160).String())) + Expect(s.App().StakersKeeper.GetOutstandingCommissionRewards(s.Ctx(), i.STAKER_0).String()).To(Equal(i.KYVECoins(734_161).String())) // assert uploader self delegation rewards (here we round up since the result of delegation rewards is the remainder minus the truncated commission rewards) // (7_415_009 + 300 - ((7_415_009 + 300) * 0.01) - _((100 * 0.5) / (1 * 1))_) * (1 - 0.1) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.KYVECoins(6_606_996).String())) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.KYVECoins(6_606_999).String())) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) @@ -1004,14 +1000,13 @@ var _ = Describe("inflation splitting", Ordered, func() { Expect(b1 - b2).To(Equal(payout)) // assert bundle reward - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) // assert commission rewards (here we round down since the result of commission rewards gets truncated) // (24_716_741 + 300 - ((24_716_741 + 300) * 0.01) - _((100 * 0.5) / (1 * 1))_) * 0.1 + _((100 * 0.5) / (1 * 1))_ - Expect(uploader.CommissionRewards.String()).To(Equal(i.KYVECoins(2_447_032).String())) + Expect(s.App().StakersKeeper.GetOutstandingCommissionRewards(s.Ctx(), i.STAKER_0).String()).To(Equal(i.KYVECoins(2_447_033).String())) // assert uploader self delegation rewards (here we round up since the result of delegation rewards is the remainder minus the truncated commission rewards) // (24_716_741 + 300 - ((24_716_741 + 300) * 0.01) - _((100 * 0.5) / (1 * 1))_) * (1 - 0.1) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.KYVECoins(22_022_839).String())) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.KYVECoins(22_022_855).String())) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) @@ -1101,14 +1096,13 @@ var _ = Describe("inflation splitting", Ordered, func() { Expect(b2).To(BeZero()) // assert bundle reward - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) // assert commission rewards (here we round down since the result of commission rewards gets truncated) // (5_000 + 200 - ((5_000 + 200) * 0.01) - _((100 * 0.5) / (1 * 1))_) * 0.1 + _((100 * 0.5) / (1 * 1))_ - Expect(uploader.CommissionRewards.String()).To(Equal(i.KYVECoins(559).String())) + Expect(s.App().StakersKeeper.GetOutstandingCommissionRewards(s.Ctx(), i.STAKER_0).String()).To(Equal(i.KYVECoins(559).String())) // assert uploader self delegation rewards (here we round up since the result of delegation rewards is the remainder minus the truncated commission rewards) // (5_000 + 200 - ((5_000 + 200) * 0.01) - _((100 * 0.5) / (1 * 1))_) * (1 - 0.1) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.KYVECoins(4_589).String())) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.KYVECoins(4_588).String())) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) @@ -1207,14 +1201,13 @@ var _ = Describe("inflation splitting", Ordered, func() { Expect(b1 - b2).To(Equal(payout)) // assert bundle reward - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) // assert commission rewards (here we round down since the result of commission rewards gets truncated) // (7_415_009 + 5_000 + 200 - ((7_415_009 + 5_000 + 200) * 0.01) - _((100 * 0.5) / (1 * 1))_) * 0.1 + _((100 * 0.5) / (1 * 1))_ - Expect(uploader.CommissionRewards.String()).To(Equal(i.KYVECoins(734_645).String())) + Expect(s.App().StakersKeeper.GetOutstandingCommissionRewards(s.Ctx(), i.STAKER_0).String()).To(Equal(i.KYVECoins(734_646).String())) // assert uploader self delegation rewards (here we round up since the result of delegation rewards is the remainder minus the truncated commission rewards) // (7_415_009 + 5_000 + 200 - ((7_415_009 + 5_000 + 200) * 0.01) - _((100 * 0.5) / (1 * 1))_) * (1 - 0.1) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.KYVECoins(6_611_362).String())) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.KYVECoins(6_611_364).String())) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) @@ -1306,14 +1299,13 @@ var _ = Describe("inflation splitting", Ordered, func() { Expect(b1 - b2).To(Equal(payout)) // assert bundle reward - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) // assert commission rewards (here we round down since the result of commission rewards gets truncated) // (24_716_741 + 5_000 + 200 - ((24_716_741 + 5_000 + 200) * 0.01) - _((100 * 0.5) / (1 * 1))_) * 0.1 + _((100 * 0.5) / (1 * 1))_ - Expect(uploader.CommissionRewards.String()).To(Equal(i.KYVECoins(2_447_517).String())) + Expect(s.App().StakersKeeper.GetOutstandingCommissionRewards(s.Ctx(), i.STAKER_0).String()).To(Equal(i.KYVECoins(2_447_519).String())) // assert uploader self delegation rewards (here we round up since the result of delegation rewards is the remainder minus the truncated commission rewards) // (24_716_741 + 5_000 + 200 - ((24_716_741 + 5_000 + 200) * 0.01) - _((100 * 0.5) / (1 * 1))_) * (1 - 0.1) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.KYVECoins(22_027_205).String())) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.KYVECoins(22_027_221).String())) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) @@ -1404,14 +1396,13 @@ var _ = Describe("inflation splitting", Ordered, func() { // check uploader rewards // we assert no kyve coins here since inflation is zero - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) // assert commission rewards (here we round down since the result of commission rewards gets truncated) // (10_000 - (10_000 * 0.01) - _((100 * 0.5) / (2 * coin_weight))_) * 0.1 + _((100 * 0.5) / (2 * coin_weight))_ - Expect(uploader.CommissionRewards.String()).To(Equal(sdk.NewCoins(i.ACoin(1012), i.BCoin(1990)).String())) + Expect(s.App().StakersKeeper.GetOutstandingCommissionRewards(s.Ctx(), i.STAKER_0).String()).To(Equal(sdk.NewCoins(i.ACoin(1012), i.BCoin(1990)).String())) // assert uploader self delegation rewards (here we round up since the result of delegation rewards is the remainder minus the truncated commission rewards) // (20_000 - (20_000 * 0.01) - _((100 * 0.5) / (2 * coin_weight))_) * (1 - 0.1) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(sdk.NewCoins(i.ACoin(8888), i.BCoin(17810)).String())) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(sdk.NewCoins(i.ACoin(8887), i.BCoin(17809)).String())) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) @@ -1510,18 +1501,17 @@ var _ = Describe("inflation splitting", Ordered, func() { Expect(b1 - b2).To(Equal(payout)) // assert bundle reward - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) // assert commission rewards (here we round down since the result of commission rewards gets truncated) // for kyve coin (7_415_009 - (7_415_009 * 0.01) - _((100 * 0.5) / (3 * 1))_) * 0.1 + _((100 * 0.5) / (3 * 1))_ // for acoin (10_000 - (10_000 * 0.01) - _((100 * 0.5) / (3 * 1))_) * 0.1 + _((100 * 0.5) / (3 * 1))_ // for bcoin coins (20_000 - (20_000 * 0.01) - _((100 * 0.5) / (3 * 2))_) * 0.1 + _((100 * 0.5) / (3 * 2))_ - Expect(uploader.CommissionRewards.String()).To(Equal(sdk.NewCoins(i.KYVECoin(734_100), i.ACoin(1004), i.BCoin(1987)).String())) + Expect(s.App().StakersKeeper.GetOutstandingCommissionRewards(s.Ctx(), i.STAKER_0).String()).To(Equal(sdk.NewCoins(i.KYVECoin(734_100), i.ACoin(1004), i.BCoin(1987)).String())) // assert uploader self delegation rewards (here we round up since the result of delegation rewards is the remainder minus the truncated commission rewards) // for kyve coin (7_415_009 - (7_415_009 * 0.01) - _((100 * 0.5) / (3 * 1))_) * (1 - 0.1) // for acoin (10_000 - (10_000 * 0.01) - _((100 * 0.5) / (3 * 1))_) * (1 - 0.1) // for bcoin (20_000 - (20_000 * 0.01) - _((100 * 0.5) / (3 * 2))_) * (1 - 0.1) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(sdk.NewCoins(i.KYVECoin(6_606_759), i.ACoin(8896), i.BCoin(17813)).String())) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(sdk.NewCoins(i.KYVECoin(6_606_762), i.ACoin(8895), i.BCoin(17812)).String())) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) @@ -1621,18 +1611,17 @@ var _ = Describe("inflation splitting", Ordered, func() { Expect(b1 - b2).To(Equal(payout)) // assert bundle reward - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) // assert commission rewards (here we round down since the result of commission rewards gets truncated) // for kyve coin (24_716_741 - (24_716_741 * 0.01) - _((100 * 0.5) / (3 * 1))_) * 0.1 + _((100 * 0.5) / (3 * 1))_ // for acoin (10_000 - (10_000 * 0.01) - _((100 * 0.5) / (3 * 1))_) * 0.1 + _((100 * 0.5) / (3 * 1))_ // for bcoin coins (20_000 - (20_000 * 0.01) - _((100 * 0.5) / (3 * 2))_) * 0.1 + _((100 * 0.5) / (3 * 2))_ - Expect(uploader.CommissionRewards.String()).To(Equal(sdk.NewCoins(i.KYVECoin(2_446_971), i.ACoin(1004), i.BCoin(1987)).String())) + Expect(s.App().StakersKeeper.GetOutstandingCommissionRewards(s.Ctx(), i.STAKER_0).String()).To(Equal(sdk.NewCoins(i.KYVECoin(2_446_973), i.ACoin(1004), i.BCoin(1987)).String())) // assert uploader self delegation rewards (here we round up since the result of delegation rewards is the remainder minus the truncated commission rewards) // for kyve coin (24_716_741 - (24_716_741 * 0.01) - _((100 * 0.5) / (3 * 1))_) * (1 - 0.1) // for acoin (10_000 - (10_000 * 0.01) - _((100 * 0.5) / (3 * 1))_) * (1 - 0.1) // for bcoin (20_000 - (20_000 * 0.01) - _((100 * 0.5) / (3 * 2))_) * (1 - 0.1) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(sdk.NewCoins(i.KYVECoin(22_022_603), i.ACoin(8896), i.BCoin(17813)).String())) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(sdk.NewCoins(i.KYVECoin(22_022_618), i.ACoin(8895), i.BCoin(17812)).String())) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) @@ -1718,12 +1707,11 @@ var _ = Describe("inflation splitting", Ordered, func() { Expect(b2).To(BeZero()) // assert bundle reward - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) // assert commission rewards - Expect(uploader.CommissionRewards).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingCommissionRewards(s.Ctx(), i.STAKER_0)).To(BeEmpty()) // assert uploader self delegation rewards - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(BeEmpty()) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) @@ -1832,10 +1820,10 @@ var _ = Describe("inflation splitting", Ordered, func() { inflationAmount := postMineBalance.Sub(preMineBalance) // Reward calculation: // (inflationAmount - teamRewards) * protocolInflationShare -> Both pools equally - // (340112344399tkyve - 847940tkyve) * 0.1 -> rewards for both pools, but it is split according to the different weights + // (340112587966tkyve - 847940tkyve) * 0.1 -> rewards for both pools, but it is split according to the different weights // teamAuthority rewards are hard to set to zero from this test-suite without using reflection. // therefore we ignore the small amount. - Expect(inflationAmount.String()).To(Equal("340112344399tkyve")) + Expect(inflationAmount.String()).To(Equal("340112587966tkyve")) // assert if bundle go finalized pool, _ = s.App().PoolKeeper.GetPool(s.Ctx(), 0) @@ -1848,35 +1836,37 @@ var _ = Describe("inflation splitting", Ordered, func() { // First pool has weight: 0.1, second pool has weight 1 // additionally, pool-0 produced a bundle -> subtract PoolInflationPayoutRate (1 - 0.1 = 0.9) // formula: (inflation - teamRewards) * inflationShare * inflationShareWeighOfPool * (1-PoolInflationPayoutRate) - // (340112344399 - 847940) * 0.1 * 1 / 11 * 0.9 - // Evaluates to 2782730425, however due to multiple roundings to actual amount is 2782730381 + // (340112587966 - 847940) * 0.1 * 1 / 11 * 0.9 + // Evaluates to 2782732418, however due to multiple roundings to actual amount is 2782732144 // second pool - // (340112344399 - 847940) * 0.1 * 10 / 11 - // Evaluates to 30919226950 - Expect(finalBalancePool0).To(Equal(uint64(2782730381))) - Expect(finalBalancePool1).To(Equal(uint64(30919226950))) + // (340112587966 - 847940) * 0.1 * 10 / 11 + // Evaluates to 30919249093 + Expect(finalBalancePool0).To(Equal(uint64(2782732144))) + Expect(finalBalancePool1).To(Equal(uint64(30919246548))) // assert bundle reward - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) + uploader, _ := s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_0) // the total payout is here just the inflation payout // (inflation - teamRewards)*inflationShare - balancePool0 - balancePool1 // (340112344399 - 847940) * 0.1 * 1 / 11 * 0.1 - // evaluates to 309192269, due to multiple rounding: 309192264 - totalPayout := math.LegacyNewDec(309192264) + // evaluates to 309192269, due to multiple rounding (and : 309192460 + totalPayout := math.LegacyNewDec(309192460) networkFee := s.App().BundlesKeeper.GetNetworkFee(s.Ctx()) treasuryReward := totalPayout.Mul(networkFee).TruncateDec() storageReward := s.App().BundlesKeeper.GetStorageCost(s.Ctx(), pool.GetCurrentStorageProviderId()).MulInt64(100).TruncateDec() totalUploaderReward := totalPayout.Sub(treasuryReward).Sub(storageReward) - uploaderPayoutReward := totalUploaderReward.Mul(uploader.Commission).TruncateDec() + uploaderPayoutReward := totalUploaderReward.Mul(uploader.Commission.Rate).TruncateDec() uploaderDelegationReward := totalUploaderReward.Sub(uploaderPayoutReward) // assert commission rewards - Expect(uploader.CommissionRewards.AmountOf(globalTypes.Denom).ToLegacyDec()).To(Equal(uploaderPayoutReward.Add(storageReward))) + // Due to rounding in the cosmos Allocate tokens the amount is off by one. (This does not affect the total rewards + // only the commission-rewards distribution) + Expect(s.App().StakersKeeper.GetOutstandingCommissionRewards(s.Ctx(), i.STAKER_0).AmountOf(globalTypes.Denom).String()).To(Equal(uploaderPayoutReward.Add(storageReward).RoundInt().String())) // assert uploader self delegation rewards - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).AmountOf(globalTypes.Denom).ToLegacyDec()).To(Equal(uploaderDelegationReward)) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).AmountOf(globalTypes.Denom).ToLegacyDec().Add(math.LegacyOneDec()).String()).To(Equal(uploaderDelegationReward.String())) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) @@ -1988,10 +1978,10 @@ var _ = Describe("inflation splitting", Ordered, func() { inflationAmount := postMineBalance.Sub(preMineBalance) // Reward calculation: // (inflationAmount - teamRewards) * protocolInflationShare -> Both pools equally - // (340112344399tkyve - 847940tkyve) * 0.1 -> (//2) -> 17005574822 for both pools + // (340112587966tkyve - 847940tkyve) * 0.1 -> (//2) -> 17005574822 for both pools // teamAuthority rewards are hard to set to zero from this test-suite without using reflection. // therefore we ignore the small amount. - Expect(inflationAmount.String()).To(Equal("340112344399tkyve")) + Expect(inflationAmount.String()).To(Equal("340112587966tkyve")) // assert if bundle go finalized pool, _ = s.App().PoolKeeper.GetPool(s.Ctx(), 0) @@ -2004,27 +1994,27 @@ var _ = Describe("inflation splitting", Ordered, func() { // Both pools have inflation-weight 1 // however, pool-0 produced a bundle -> subtract PoolInflationPayoutRate (1 - 0.2 = 0.8) // 17005574822 * 0.8 - Expect(finalBalancePool0).To(Equal(uint64(13604459858))) - Expect(finalBalancePool1).To(Equal(uint64(17005574822))) + Expect(finalBalancePool0).To(Equal(uint64(13604468481))) + Expect(finalBalancePool1).To(Equal(uint64(17005585601))) // assert bundle reward - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) + uploader, _ := s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_0) // the total payout is here just the inflation payout - totalPayout := math.LegacyNewDec(17005574822 - 13604459858) + totalPayout := math.LegacyNewDec(17005585601 - 13604468481) networkFee := s.App().BundlesKeeper.GetNetworkFee(s.Ctx()) treasuryReward := totalPayout.Mul(networkFee).TruncateDec() storageReward := s.App().BundlesKeeper.GetStorageCost(s.Ctx(), pool.GetCurrentStorageProviderId()).MulInt64(100).TruncateDec() totalUploaderReward := totalPayout.Sub(treasuryReward).Sub(storageReward) - uploaderPayoutReward := totalUploaderReward.Mul(uploader.Commission).TruncateDec() + uploaderPayoutReward := totalUploaderReward.Mul(uploader.Commission.Rate).TruncateDec() uploaderDelegationReward := totalUploaderReward.Sub(uploaderPayoutReward) // assert commission rewards - Expect(uploader.CommissionRewards.AmountOf(globalTypes.Denom).ToLegacyDec()).To(Equal(uploaderPayoutReward.Add(storageReward))) + Expect(s.App().StakersKeeper.GetOutstandingCommissionRewards(s.Ctx(), i.STAKER_0).AmountOf(globalTypes.Denom).ToLegacyDec().String()).To(Equal(uploaderPayoutReward.Add(storageReward).String())) // assert uploader self delegation rewards - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).AmountOf(globalTypes.Denom).ToLegacyDec()).To(Equal(uploaderDelegationReward)) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).AmountOf(globalTypes.Denom).ToLegacyDec().Add(math.LegacyOneDec()).String()).To(Equal(uploaderDelegationReward.String())) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) diff --git a/x/bundles/keeper/keeper_suite_invalid_bundles_test.go b/x/bundles/keeper/keeper_suite_invalid_bundles_test.go index 277a6d16..5359c598 100644 --- a/x/bundles/keeper/keeper_suite_invalid_bundles_test.go +++ b/x/bundles/keeper/keeper_suite_invalid_bundles_test.go @@ -2,7 +2,10 @@ package keeper_test import ( "cosmossdk.io/math" - delegationtypes "github.com/KYVENetwork/chain/x/delegation/types" + "github.com/KYVENetwork/chain/util" + globalTypes "github.com/KYVENetwork/chain/x/global/types" + sdk "github.com/cosmos/cosmos-sdk/types" + stakingTypes "github.com/cosmos/cosmos-sdk/x/staking/types" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" @@ -71,10 +74,7 @@ var _ = Describe("invalid bundles", Ordered, func() { AmountsPerBundle: i.KYVECoins(1 * i.T_KYVE), }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -82,10 +82,7 @@ var _ = Describe("invalid bundles", Ordered, func() { Valaddress: i.VALADDRESS_0_A, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -131,10 +128,7 @@ var _ = Describe("invalid bundles", Ordered, func() { BundleSummary: "test_value", }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_2, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_2, "Staker-2", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_2, @@ -219,18 +213,18 @@ var _ = Describe("invalid bundles", Ordered, func() { balanceUploader := s.GetBalanceFromAddress(i.STAKER_0) - _, uploaderFound := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) + _, uploaderFound := s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_0) Expect(uploaderFound).To(BeTrue()) Expect(balanceUploader).To(Equal(initialBalanceStaker0)) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(BeEmpty()) // calculate uploader slashes fraction := s.App().DelegationKeeper.GetUploadSlash(s.Ctx()) slashAmount := uint64(math.LegacyNewDec(int64(100 * i.KYVE)).Mul(fraction).TruncateInt64()) - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(100*i.KYVE - slashAmount)) - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(100*i.KYVE - slashAmount)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200 * i.KYVE)) // check voter status valaccountVoter, _ := s.App().StakersKeeper.GetValaccount(s.Ctx(), 0, i.STAKER_1) @@ -242,7 +236,7 @@ var _ = Describe("invalid bundles", Ordered, func() { balanceVoter := s.GetBalanceFromAddress(valaccountVoter.Staker) Expect(balanceVoter).To(Equal(initialBalanceStaker1)) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_1, i.STAKER_1)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_1, i.STAKER_1)).To(BeEmpty()) // check voter 2 status valaccountVoter, _ = s.App().StakersKeeper.GetValaccount(s.Ctx(), 0, i.STAKER_2) @@ -254,7 +248,7 @@ var _ = Describe("invalid bundles", Ordered, func() { balanceVoter = s.GetBalanceFromAddress(valaccountVoter.Staker) Expect(balanceVoter).To(Equal(initialBalanceStaker1)) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_2, i.STAKER_2)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_2, i.STAKER_2)).To(BeEmpty()) // check pool funds fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) @@ -266,22 +260,19 @@ var _ = Describe("invalid bundles", Ordered, func() { It("Produce an invalid bundle with multiple validators and foreign delegations", func() { // ARRANGE - s.RunTxDelegatorSuccess(&delegationtypes.MsgDelegate{ - Creator: i.ALICE, - Staker: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.RunTxSuccess(stakingTypes.NewMsgDelegate( + i.ALICE, + util.MustValaddressFromOperatorAddress(i.STAKER_0), + sdk.NewInt64Coin(globalTypes.Denom, int64(100*i.KYVE)), + )) - s.RunTxDelegatorSuccess(&delegationtypes.MsgDelegate{ - Creator: i.BOB, - Staker: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.RunTxSuccess(stakingTypes.NewMsgDelegate( + i.BOB, + util.MustValaddressFromOperatorAddress(i.STAKER_1), + sdk.NewInt64Coin(globalTypes.Denom, int64(100*i.KYVE)), + )) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_2, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_2, "Staker-2", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_2, @@ -289,11 +280,11 @@ var _ = Describe("invalid bundles", Ordered, func() { Valaddress: i.VALADDRESS_2_A, }) - s.RunTxDelegatorSuccess(&delegationtypes.MsgDelegate{ - Creator: i.CHARLIE, - Staker: i.STAKER_2, - Amount: 100 * i.KYVE, - }) + s.RunTxSuccess(stakingTypes.NewMsgDelegate( + i.CHARLIE, + util.MustValaddressFromOperatorAddress(i.STAKER_2), + sdk.NewInt64Coin(globalTypes.Denom, int64(100*i.KYVE)), + )) s.RunTxBundlesSuccess(&bundletypes.MsgSubmitBundleProposal{ Creator: i.VALADDRESS_0_A, @@ -385,23 +376,23 @@ var _ = Describe("invalid bundles", Ordered, func() { Expect(balanceValaddress).To(Equal(initialBalanceValaddress0)) balanceUploader := s.GetBalanceFromAddress(i.STAKER_0) - _, uploaderFound := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) + _, uploaderFound := s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_0) Expect(uploaderFound).To(BeTrue()) // assert payout transfer Expect(balanceUploader).To(Equal(initialBalanceStaker0)) // assert uploader self delegation rewards - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(BeEmpty()) // calculate uploader slashes fraction := s.App().DelegationKeeper.GetUploadSlash(s.Ctx()) slashAmountUploader := uint64(math.LegacyNewDec(int64(100 * i.KYVE)).Mul(fraction).TruncateInt64()) slashAmountDelegator := uint64(math.LegacyNewDec(int64(100 * i.KYVE)).Mul(fraction).TruncateInt64()) - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(100*i.KYVE - slashAmountUploader)) - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.ALICE)).To(Equal(100*i.KYVE - slashAmountDelegator)) + Expect(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(100*i.KYVE - slashAmountUploader)) + Expect(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.ALICE)).To(Equal(100*i.KYVE - slashAmountDelegator)) - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(400 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(400 * i.KYVE)) // check voter status valaccountVoter, _ := s.App().StakersKeeper.GetValaccount(s.Ctx(), 0, i.STAKER_1) @@ -412,8 +403,8 @@ var _ = Describe("invalid bundles", Ordered, func() { balanceVoter := s.GetBalanceFromAddress(valaccountVoter.Staker) Expect(balanceVoter).To(Equal(initialBalanceStaker1)) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_1, i.STAKER_1)).To(BeEmpty()) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_1, i.BOB)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_1, i.STAKER_1)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_1, i.BOB)).To(BeEmpty()) // check voter 2 status valaccountVoter, _ = s.App().StakersKeeper.GetValaccount(s.Ctx(), 0, i.STAKER_1) @@ -424,8 +415,8 @@ var _ = Describe("invalid bundles", Ordered, func() { balanceVoter = s.GetBalanceFromAddress(valaccountVoter.Staker) Expect(balanceVoter).To(Equal(initialBalanceStaker1)) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_1, i.STAKER_1)).To(BeEmpty()) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_1, i.BOB)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_1, i.STAKER_1)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_1, i.BOB)).To(BeEmpty()) // check pool funds fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) @@ -437,22 +428,19 @@ var _ = Describe("invalid bundles", Ordered, func() { It("Produce an invalid bundle with multiple validators although some voted valid", func() { // ARRANGE - s.RunTxDelegatorSuccess(&delegationtypes.MsgDelegate{ - Creator: i.ALICE, - Staker: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.RunTxSuccess(stakingTypes.NewMsgDelegate( + i.ALICE, + util.MustValaddressFromOperatorAddress(i.STAKER_0), + sdk.NewInt64Coin(globalTypes.Denom, int64(100*i.KYVE)), + )) - s.RunTxDelegatorSuccess(&delegationtypes.MsgDelegate{ - Creator: i.BOB, - Staker: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.RunTxSuccess(stakingTypes.NewMsgDelegate( + i.BOB, + util.MustValaddressFromOperatorAddress(i.STAKER_1), + sdk.NewInt64Coin(globalTypes.Denom, int64(100*i.KYVE)), + )) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_2, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_2, "Staker-2", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_2, @@ -460,16 +448,13 @@ var _ = Describe("invalid bundles", Ordered, func() { Valaddress: i.VALADDRESS_2_A, }) - s.RunTxDelegatorSuccess(&delegationtypes.MsgDelegate{ - Creator: i.CHARLIE, - Staker: i.STAKER_2, - Amount: 100 * i.KYVE, - }) + s.RunTxSuccess(stakingTypes.NewMsgDelegate( + i.CHARLIE, + util.MustValaddressFromOperatorAddress(i.STAKER_2), + sdk.NewInt64Coin(globalTypes.Denom, int64(100*i.KYVE)), + )) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_3, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_3, "Staker-3", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_3, @@ -478,11 +463,11 @@ var _ = Describe("invalid bundles", Ordered, func() { }) // delegate a bit more so invalid voters have more than 50% - s.RunTxDelegatorSuccess(&delegationtypes.MsgDelegate{ - Creator: i.DAVID, - Staker: i.STAKER_3, - Amount: 150 * i.KYVE, - }) + s.RunTxSuccess(stakingTypes.NewMsgDelegate( + i.DAVID, + util.MustValaddressFromOperatorAddress(i.STAKER_3), + sdk.NewInt64Coin(globalTypes.Denom, int64(150*i.KYVE)), + )) s.RunTxBundlesSuccess(&bundletypes.MsgSubmitBundleProposal{ Creator: i.VALADDRESS_0_A, @@ -583,31 +568,31 @@ var _ = Describe("invalid bundles", Ordered, func() { Expect(balanceValaddress).To(Equal(initialBalanceValaddress0)) balanceUploader := s.GetBalanceFromAddress(i.STAKER_0) - _, uploaderFound := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) + _, uploaderFound := s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_0) Expect(uploaderFound).To(BeTrue()) // assert payout transfer Expect(balanceUploader).To(Equal(initialBalanceStaker0)) // assert uploader self delegation rewards - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(BeEmpty()) // calculate uploader slashes fraction := s.App().DelegationKeeper.GetUploadSlash(s.Ctx()) slashAmountUploader := uint64(math.LegacyNewDec(int64(100 * i.KYVE)).Mul(fraction).TruncateInt64()) slashAmountDelegator1 := uint64(math.LegacyNewDec(int64(100 * i.KYVE)).Mul(fraction).TruncateInt64()) - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(100*i.KYVE - slashAmountUploader)) - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.ALICE)).To(Equal(100*i.KYVE - slashAmountDelegator1)) + Expect(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(100*i.KYVE - slashAmountUploader)) + Expect(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.ALICE)).To(Equal(100*i.KYVE - slashAmountDelegator1)) // calculate voter slashes fraction = s.App().DelegationKeeper.GetVoteSlash(s.Ctx()) slashAmountVoter := uint64(math.LegacyNewDec(int64(100 * i.KYVE)).Mul(fraction).TruncateInt64()) slashAmountDelegator2 := uint64(math.LegacyNewDec(int64(100 * i.KYVE)).Mul(fraction).TruncateInt64()) - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_1, i.STAKER_1)).To(Equal(100*i.KYVE - slashAmountVoter)) - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_1, i.BOB)).To(Equal(100*i.KYVE - slashAmountDelegator2)) + Expect(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_1, i.STAKER_1)).To(Equal(100*i.KYVE - slashAmountVoter)) + Expect(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_1, i.BOB)).To(Equal(100*i.KYVE - slashAmountDelegator2)) - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(450 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(450 * i.KYVE)) // check voter status _, valaccountVoterFound := s.App().StakersKeeper.GetValaccount(s.Ctx(), 0, i.STAKER_1) @@ -618,8 +603,8 @@ var _ = Describe("invalid bundles", Ordered, func() { balanceVoter := s.GetBalanceFromAddress(i.STAKER_1) Expect(balanceVoter).To(Equal(initialBalanceStaker2)) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_1, i.STAKER_1)).To(BeEmpty()) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_1, i.BOB)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_1, i.STAKER_1)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_1, i.BOB)).To(BeEmpty()) // check voter2 status valaccountVoter, _ := s.App().StakersKeeper.GetValaccount(s.Ctx(), 0, i.STAKER_2) @@ -630,8 +615,8 @@ var _ = Describe("invalid bundles", Ordered, func() { balanceVoter = s.GetBalanceFromAddress(valaccountVoter.Staker) Expect(balanceVoter).To(Equal(initialBalanceStaker1)) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_2, i.STAKER_2)).To(BeEmpty()) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_2, i.CHARLIE)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_2, i.STAKER_2)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_2, i.CHARLIE)).To(BeEmpty()) // check voter3 status valaccountVoter, _ = s.App().StakersKeeper.GetValaccount(s.Ctx(), 0, i.STAKER_3) @@ -642,8 +627,8 @@ var _ = Describe("invalid bundles", Ordered, func() { balanceVoter = s.GetBalanceFromAddress(valaccountVoter.Staker) Expect(balanceVoter).To(Equal(initialBalanceStaker1)) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_3, i.STAKER_3)).To(BeEmpty()) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_3, i.DAVID)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_3, i.STAKER_3)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_3, i.DAVID)).To(BeEmpty()) // check pool funds fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) diff --git a/x/bundles/keeper/keeper_suite_points_test.go b/x/bundles/keeper/keeper_suite_points_test.go index b02e4a24..e0a6bafb 100644 --- a/x/bundles/keeper/keeper_suite_points_test.go +++ b/x/bundles/keeper/keeper_suite_points_test.go @@ -65,10 +65,7 @@ var _ = Describe("points", Ordered, func() { AmountsPerBundle: i.KYVECoins(1 * i.T_KYVE), }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -76,10 +73,7 @@ var _ = Describe("points", Ordered, func() { Valaddress: i.VALADDRESS_0_A, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -87,10 +81,7 @@ var _ = Describe("points", Ordered, func() { Valaddress: i.VALADDRESS_1_A, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_2, - Amount: 50 * i.KYVE, - }) + s.CreateValidator(i.STAKER_2, "Staker-2", int64(50*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_2, @@ -98,14 +89,13 @@ var _ = Describe("points", Ordered, func() { Valaddress: i.VALADDRESS_2_A, }) - s.RunTxBundlesSuccess(&bundletypes.MsgClaimUploaderRole{ - Creator: i.VALADDRESS_0_A, - Staker: i.STAKER_0, - PoolId: 0, - }) - s.CommitAfterSeconds(60) + // Claim Uploader role for Staker 0 + pool, _ := s.App().BundlesKeeper.GetBundleProposal(s.Ctx(), 0) + pool.NextUploader = i.STAKER_0 + s.App().BundlesKeeper.SetBundleProposal(s.Ctx(), pool) + s.RunTxBundlesSuccess(&bundletypes.MsgSubmitBundleProposal{ Creator: i.VALADDRESS_0_A, Staker: i.STAKER_0, @@ -140,8 +130,8 @@ var _ = Describe("points", Ordered, func() { // do not vote s.RunTxBundlesSuccess(&bundletypes.MsgSubmitBundleProposal{ - Creator: i.VALADDRESS_1_A, - Staker: i.STAKER_1, + Creator: i.VALADDRESS_0_A, + Staker: i.STAKER_0, PoolId: 0, StorageId: "P9edn0bjEfMU_lecFDIPLvGO2v2ltpFNUMWp5kgPddg", DataSize: 100, @@ -163,8 +153,8 @@ var _ = Describe("points", Ordered, func() { // do not vote s.RunTxBundlesSuccess(&bundletypes.MsgSubmitBundleProposal{ - Creator: i.VALADDRESS_1_A, - Staker: i.STAKER_1, + Creator: i.VALADDRESS_0_A, + Staker: i.STAKER_0, PoolId: 0, StorageId: "P9edn0bjEfMU_lecFDIPLvGO2v2ltpFNUMWp5kgPddg", DataSize: 100, @@ -188,8 +178,8 @@ var _ = Describe("points", Ordered, func() { s.CommitAfterSeconds(60) s.RunTxBundlesSuccess(&bundletypes.MsgSubmitBundleProposal{ - Creator: i.VALADDRESS_0_A, - Staker: i.STAKER_0, + Creator: i.VALADDRESS_1_A, + Staker: i.STAKER_1, PoolId: 0, StorageId: "18SRvVuCrB8vy_OCLBaNbXONMVGeflGcw4gGTZ1oUt4", DataSize: 100, @@ -353,7 +343,7 @@ var _ = Describe("points", Ordered, func() { poolStakers := s.App().StakersKeeper.GetAllStakerAddressesOfPool(s.Ctx(), 0) Expect(poolStakers).To(HaveLen(2)) - _, stakerFound := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_2) + _, stakerFound := s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_2) Expect(stakerFound).To(BeTrue()) _, valaccountFound := s.App().StakersKeeper.GetValaccount(s.Ctx(), 0, i.STAKER_2) @@ -363,7 +353,7 @@ var _ = Describe("points", Ordered, func() { slashAmountRatio := s.App().DelegationKeeper.GetTimeoutSlash(s.Ctx()) expectedBalance := 50*i.KYVE - uint64(math.LegacyNewDec(int64(50*i.KYVE)).Mul(slashAmountRatio).TruncateInt64()) - Expect(expectedBalance).To(Equal(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_2, i.STAKER_2))) + Expect(expectedBalance).To(Equal(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_2, i.STAKER_2))) }) It("One validator does not vote for multiple proposals and submits a bundle proposal", func() { diff --git a/x/bundles/keeper/keeper_suite_stakers_leave_test.go b/x/bundles/keeper/keeper_suite_stakers_leave_test.go index 3d64b87f..da4a93f7 100644 --- a/x/bundles/keeper/keeper_suite_stakers_leave_test.go +++ b/x/bundles/keeper/keeper_suite_stakers_leave_test.go @@ -72,10 +72,7 @@ var _ = Describe("stakers leave", Ordered, func() { AmountsPerBundle: i.KYVECoins(10_000), }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -83,10 +80,7 @@ var _ = Describe("stakers leave", Ordered, func() { Valaddress: i.VALADDRESS_0_A, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -110,10 +104,7 @@ var _ = Describe("stakers leave", Ordered, func() { It("Staker leaves, although he is the next uploader and runs into the upload timeout", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_2, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_2, "Staker-2", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_2, @@ -143,18 +134,15 @@ var _ = Describe("stakers leave", Ordered, func() { _, valaccountFound := s.App().StakersKeeper.GetValaccount(s.Ctx(), 0, i.STAKER_0) Expect(valaccountFound).To(BeFalse()) - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200 * i.KYVE)) // check if next uploader got not slashed - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(100 * i.KYVE)) }) It("Staker leaves, although he was the uploader of the previous round and should receive the uploader reward", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_2, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_2, "Staker-2", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_2, @@ -232,14 +220,14 @@ var _ = Describe("stakers leave", Ordered, func() { _, valaccountFound := s.App().StakersKeeper.GetValaccount(s.Ctx(), 0, i.STAKER_0) Expect(valaccountFound).To(BeFalse()) - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200 * i.KYVE)) // check if next uploader got not slashed - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(100 * i.KYVE)) // check if next uploader received the uploader reward pool, _ := s.App().PoolKeeper.GetPool(s.Ctx(), 0) - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) + uploader, _ := s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_0) balanceUploader := s.GetBalanceFromAddress(i.STAKER_0) // calculate uploader rewards @@ -248,23 +236,20 @@ var _ = Describe("stakers leave", Ordered, func() { storageReward := s.App().BundlesKeeper.GetStorageCost(s.Ctx(), pool.CurrentStorageProviderId).MulInt64(100) totalUploaderReward := pool.InflationShareWeight.Sub(treasuryReward).Sub(storageReward) - uploaderPayoutReward := totalUploaderReward.Mul(uploader.Commission) + uploaderPayoutReward := totalUploaderReward.Mul(uploader.Commission.Rate) uploaderDelegationReward := totalUploaderReward.Sub(uploaderPayoutReward) // assert payout transfer Expect(balanceUploader).To(Equal(initialBalanceStaker0)) // assert commission rewards - Expect(uploader.CommissionRewards.AmountOf(globalTypes.Denom).Uint64()).To(Equal(uint64(uploaderPayoutReward.Add(storageReward).TruncateInt64()))) + Expect(s.App().StakersKeeper.GetOutstandingCommissionRewards(s.Ctx(), i.STAKER_0).AmountOf(globalTypes.Denom).Uint64()).To(Equal(uint64(uploaderPayoutReward.Add(storageReward).TruncateInt64()))) // assert uploader self delegation rewards - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).AmountOf(globalTypes.Denom).Uint64()).To(Equal(uint64(uploaderDelegationReward.TruncateInt64()))) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).AmountOf(globalTypes.Denom).Uint64()).To(Equal(uint64(uploaderDelegationReward.TruncateInt64()))) }) It("Staker leaves, although he was the uploader of the previous round and should get slashed", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_2, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_2, "Staker-2", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_2, @@ -346,8 +331,8 @@ var _ = Describe("stakers leave", Ordered, func() { fraction := s.App().DelegationKeeper.GetUploadSlash(s.Ctx()) slashAmount := uint64(math.LegacyNewDec(int64(100 * i.KYVE)).Mul(fraction).TruncateInt64()) - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(100*i.KYVE - slashAmount)) - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(100*i.KYVE - slashAmount)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200 * i.KYVE)) // check if next uploader did not receive the uploader reward balanceUploader := s.GetBalanceFromAddress(i.STAKER_0) @@ -355,15 +340,12 @@ var _ = Describe("stakers leave", Ordered, func() { // assert payout transfer Expect(balanceUploader).To(Equal(initialBalanceStaker0)) // assert uploader self delegation rewards - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(BeEmpty()) }) It("Staker leaves, although he was a voter in the previous round and should get slashed", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_2, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_2, "Staker-2", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_2, @@ -447,8 +429,8 @@ var _ = Describe("stakers leave", Ordered, func() { fraction := s.App().DelegationKeeper.GetVoteSlash(s.Ctx()) slashAmount := uint64(math.LegacyNewDec(int64(100 * i.KYVE)).Mul(fraction).TruncateInt64()) - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_1, i.STAKER_1)).To(Equal(100*i.KYVE - slashAmount)) - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_1, i.STAKER_1)).To(Equal(100*i.KYVE - slashAmount)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200 * i.KYVE)) // check if next uploader did not receive any rewards balanceVoter := s.GetBalanceFromAddress(i.STAKER_1) @@ -456,15 +438,12 @@ var _ = Describe("stakers leave", Ordered, func() { // assert payout transfer Expect(balanceVoter).To(Equal(initialBalanceStaker1)) // assert uploader self delegation rewards - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_1, i.STAKER_1)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_1, i.STAKER_1)).To(BeEmpty()) }) It("Staker leaves, although he was a voter in the previous round and should get a point", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_2, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_2, "Staker-2", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_2, @@ -540,8 +519,8 @@ var _ = Describe("stakers leave", Ordered, func() { // check if voter status - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_1, i.STAKER_1)).To(Equal(100 * i.KYVE)) - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_1, i.STAKER_1)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200 * i.KYVE)) // check if next uploader did not receive any rewards balanceVoter := s.GetBalanceFromAddress(i.STAKER_1) @@ -549,15 +528,12 @@ var _ = Describe("stakers leave", Ordered, func() { // assert payout transfer Expect(balanceVoter).To(Equal(initialBalanceStaker1)) // assert uploader self delegation rewards - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_1, i.STAKER_1)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_1, i.STAKER_1)).To(BeEmpty()) }) It("Staker leaves, although he was a voter who did not vote max points in a row should not get slashed", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_2, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_2, "Staker-2", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_2, @@ -636,8 +612,8 @@ var _ = Describe("stakers leave", Ordered, func() { Expect(valaccountFound).To(BeFalse()) // check if voter not got slashed - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_1, i.STAKER_1)).To(Equal(100 * i.KYVE)) - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_1, i.STAKER_1)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200 * i.KYVE)) // check if next uploader did not receive any rewards balanceVoter := s.GetBalanceFromAddress(i.STAKER_1) @@ -645,6 +621,6 @@ var _ = Describe("stakers leave", Ordered, func() { // assert payout transfer Expect(balanceVoter).To(Equal(initialBalanceStaker1)) // assert uploader self delegation rewards - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_1, i.STAKER_1)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_1, i.STAKER_1)).To(BeEmpty()) }) }) diff --git a/x/bundles/keeper/keeper_suite_valid_bundles_test.go b/x/bundles/keeper/keeper_suite_valid_bundles_test.go index 8d6b1f57..430c34ee 100644 --- a/x/bundles/keeper/keeper_suite_valid_bundles_test.go +++ b/x/bundles/keeper/keeper_suite_valid_bundles_test.go @@ -2,15 +2,16 @@ package keeper_test import ( "cosmossdk.io/math" + "github.com/KYVENetwork/chain/util" fundersTypes "github.com/KYVENetwork/chain/x/funders/types" globalTypes "github.com/KYVENetwork/chain/x/global/types" sdk "github.com/cosmos/cosmos-sdk/types" + stakingTypes "github.com/cosmos/cosmos-sdk/x/staking/types" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" i "github.com/KYVENetwork/chain/testutil/integration" bundletypes "github.com/KYVENetwork/chain/x/bundles/types" - delegationtypes "github.com/KYVENetwork/chain/x/delegation/types" pooltypes "github.com/KYVENetwork/chain/x/pool/types" stakertypes "github.com/KYVENetwork/chain/x/stakers/types" ) @@ -115,10 +116,7 @@ var _ = Describe("valid bundles", Ordered, func() { AmountsPerBundle: i.ACoins(amountPerBundle), }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -126,10 +124,7 @@ var _ = Describe("valid bundles", Ordered, func() { Valaddress: i.VALADDRESS_0_A, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -266,7 +261,6 @@ var _ = Describe("valid bundles", Ordered, func() { Expect(balanceVoter).To(Equal(initialBalanceStaker1)) // check uploader rewards - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), valaccountUploader.Staker) balanceUploader := s.GetCoinsFromAddress(valaccountUploader.Staker) // assert payout transfer @@ -274,11 +268,11 @@ var _ = Describe("valid bundles", Ordered, func() { // assert uploader self delegation rewards // (total_bundle_payout - treasury_reward - storage_cost) * (1 - commission) // (10_000 - (10_000 * 0.01) - (100 * 0.5)) * (1 - 0.1) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.ACoins(8865).String())) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.ACoins(8865).String())) // assert commission rewards // (total_bundle_payout - treasury_reward - storage_cost) * commission + storage_cost // (10_000 - (10_000 * 0.01) - (100 * 0.5)) * 0.1 + (100 * 0.5) - Expect(uploader.CommissionRewards.String()).To(Equal(i.ACoins(1035).String())) + Expect(s.App().StakersKeeper.GetOutstandingCommissionRewards(s.Ctx(), valaccountUploader.Staker).String()).To(Equal(i.ACoins(1035).String())) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) @@ -293,17 +287,17 @@ var _ = Describe("valid bundles", Ordered, func() { It("Produce a valid bundle with multiple validators and foreign delegations", func() { // ARRANGE - s.RunTxDelegatorSuccess(&delegationtypes.MsgDelegate{ - Creator: i.ALICE, - Staker: i.STAKER_0, - Amount: 300 * i.KYVE, - }) - - s.RunTxDelegatorSuccess(&delegationtypes.MsgDelegate{ - Creator: i.BOB, - Staker: i.STAKER_1, - Amount: 300 * i.KYVE, - }) + s.RunTxSuccess(stakingTypes.NewMsgDelegate( + i.ALICE, + util.MustValaddressFromOperatorAddress(i.STAKER_0), + sdk.NewInt64Coin(globalTypes.Denom, int64(300*i.KYVE)), + )) + + s.RunTxSuccess(stakingTypes.NewMsgDelegate( + i.BOB, + util.MustValaddressFromOperatorAddress(i.STAKER_1), + sdk.NewInt64Coin(globalTypes.Denom, int64(300*i.KYVE)), + )) s.RunTxBundlesSuccess(&bundletypes.MsgSubmitBundleProposal{ Creator: i.VALADDRESS_0_A, @@ -413,23 +407,22 @@ var _ = Describe("valid bundles", Ordered, func() { Expect(balanceVoter).To(Equal(initialBalanceStaker1)) // check uploader rewards - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), valaccountUploader.Staker) balanceUploader := s.GetCoinsFromAddress(valaccountUploader.Staker) // assert payout transfer Expect(balanceUploader.String()).To(Equal(initialBalanceStaker0.String())) // assert commission rewards // (10_000 - (10_000 * 0.01) - (100 * 0.5)) * 0.1 + (100 * 0.5) - Expect(uploader.CommissionRewards.String()).To(Equal(i.ACoins(1035).String())) + Expect(s.App().StakersKeeper.GetOutstandingCommissionRewards(s.Ctx(), valaccountUploader.Staker).String()).To(Equal(i.ACoins(1035).String())) // assert uploader self delegation rewards // (10_000 - (10_000 * 0.01) - (100 * 0.5)) * (1 - 0.1) * (1/4) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.ACoins(2216).String())) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.ACoins(2216).String())) // assert delegator delegation rewards // (10_000 - (10_000 * 0.01) - (100 * 0.5)) * (1 - 0.1) * (3/4) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.ALICE).String()).To(Equal(i.ACoins(6648).String())) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.ALICE).String()).To(Equal(i.ACoins(6648).String())) // check voter rewards - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_1, i.BOB)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_1, i.BOB)).To(BeEmpty()) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) @@ -444,22 +437,19 @@ var _ = Describe("valid bundles", Ordered, func() { It("Produce a valid bundle with multiple validators and foreign delegation although some did not vote at all", func() { // ARRANGE - s.RunTxDelegatorSuccess(&delegationtypes.MsgDelegate{ - Creator: i.ALICE, - Staker: i.STAKER_0, - Amount: 300 * i.KYVE, - }) + s.RunTxSuccess(stakingTypes.NewMsgDelegate( + i.ALICE, + util.MustValaddressFromOperatorAddress(i.STAKER_0), + sdk.NewInt64Coin(globalTypes.Denom, int64(300*i.KYVE)), + )) - s.RunTxDelegatorSuccess(&delegationtypes.MsgDelegate{ - Creator: i.BOB, - Staker: i.STAKER_1, - Amount: 300 * i.KYVE, - }) + s.RunTxSuccess(stakingTypes.NewMsgDelegate( + i.BOB, + util.MustValaddressFromOperatorAddress(i.STAKER_1), + sdk.NewInt64Coin(globalTypes.Denom, int64(300*i.KYVE)), + )) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_2, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_2, "Staker-2", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_2, @@ -467,11 +457,11 @@ var _ = Describe("valid bundles", Ordered, func() { Valaddress: i.VALADDRESS_2_A, }) - s.RunTxDelegatorSuccess(&delegationtypes.MsgDelegate{ - Creator: i.CHARLIE, - Staker: i.STAKER_2, - Amount: 300 * i.KYVE, - }) + s.RunTxSuccess(stakingTypes.NewMsgDelegate( + i.CHARLIE, + util.MustValaddressFromOperatorAddress(i.STAKER_2), + sdk.NewInt64Coin(globalTypes.Denom, int64(300*i.KYVE)), + )) s.RunTxBundlesSuccess(&bundletypes.MsgSubmitBundleProposal{ Creator: i.VALADDRESS_0_A, @@ -581,23 +571,22 @@ var _ = Describe("valid bundles", Ordered, func() { Expect(balanceVoter).To(Equal(initialBalanceStaker1)) // check uploader rewards - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), valaccountUploader.Staker) balanceUploader := s.GetCoinsFromAddress(valaccountUploader.Staker) // assert payout transfer Expect(balanceUploader.String()).To(Equal(initialBalanceStaker0.String())) // assert commission rewards // (10_000 - (10_000 * 0.01) - (100 * 0.5)) * 0.1 + (100 * 0.5) - Expect(uploader.CommissionRewards.String()).To(Equal(i.ACoins(1035).String())) + Expect(s.App().StakersKeeper.GetOutstandingCommissionRewards(s.Ctx(), valaccountUploader.Staker).String()).To(Equal(i.ACoins(1035).String())) // assert uploader self delegation rewards // (10_000 - (10_000 * 0.01) - (100 * 0.5)) * (1 - 0.1) * (1/4) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.ACoins(2216).String())) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.ACoins(2216).String())) // assert delegator delegation rewards // (10_000 - (10_000 * 0.01) - (100 * 0.5)) * (1 - 0.1) * (3/4) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.ALICE).String()).To(Equal(i.ACoins(6648).String())) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.ALICE).String()).To(Equal(i.ACoins(6648).String())) // check voter rewards - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_2, i.CHARLIE)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_2, i.CHARLIE)).To(BeEmpty()) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) @@ -612,22 +601,19 @@ var _ = Describe("valid bundles", Ordered, func() { It("Produce a valid bundle with multiple validators and foreign delegation although some voted abstain", func() { // ARRANGE - s.RunTxDelegatorSuccess(&delegationtypes.MsgDelegate{ - Creator: i.ALICE, - Staker: i.STAKER_0, - Amount: 300 * i.KYVE, - }) + s.RunTxSuccess(stakingTypes.NewMsgDelegate( + i.ALICE, + util.MustValaddressFromOperatorAddress(i.STAKER_0), + sdk.NewInt64Coin(globalTypes.Denom, int64(300*i.KYVE)), + )) - s.RunTxDelegatorSuccess(&delegationtypes.MsgDelegate{ - Creator: i.BOB, - Staker: i.STAKER_1, - Amount: 300 * i.KYVE, - }) + s.RunTxSuccess(stakingTypes.NewMsgDelegate( + i.BOB, + util.MustValaddressFromOperatorAddress(i.STAKER_1), + sdk.NewInt64Coin(globalTypes.Denom, int64(300*i.KYVE)), + )) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_2, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_2, "Staker-2", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_2, @@ -635,11 +621,11 @@ var _ = Describe("valid bundles", Ordered, func() { Valaddress: i.VALADDRESS_2_A, }) - s.RunTxDelegatorSuccess(&delegationtypes.MsgDelegate{ - Creator: i.CHARLIE, - Staker: i.STAKER_2, - Amount: 300 * i.KYVE, - }) + s.RunTxSuccess(stakingTypes.NewMsgDelegate( + i.CHARLIE, + util.MustValaddressFromOperatorAddress(i.STAKER_2), + sdk.NewInt64Coin(globalTypes.Denom, int64(300*i.KYVE)), + )) s.RunTxBundlesSuccess(&bundletypes.MsgSubmitBundleProposal{ Creator: i.VALADDRESS_0_A, @@ -757,23 +743,22 @@ var _ = Describe("valid bundles", Ordered, func() { Expect(balanceVoter).To(Equal(initialBalanceStaker1)) // check uploader rewards - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), valaccountUploader.Staker) balanceUploader := s.GetCoinsFromAddress(valaccountUploader.Staker) // assert payout transfer Expect(balanceUploader.String()).To(Equal(initialBalanceStaker0.String())) // assert commission rewards // (10_000 - (10_000 * 0.01) - (100 * 0.5)) * 0.1 + (100 * 0.5) - Expect(uploader.CommissionRewards.String()).To(Equal(i.ACoins(1035).String())) + Expect(s.App().StakersKeeper.GetOutstandingCommissionRewards(s.Ctx(), valaccountUploader.Staker).String()).To(Equal(i.ACoins(1035).String())) // assert uploader self delegation rewards // (10_000 - (10_000 * 0.01) - (100 * 0.5)) * (1 - 0.1) * (1/4) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.ACoins(2216).String())) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.ACoins(2216).String())) // assert delegator delegation rewards // (10_000 - (10_000 * 0.01) - (100 * 0.5)) * (1 - 0.1) * (3/4) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.ALICE).String()).To(Equal(i.ACoins(6648).String())) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.ALICE).String()).To(Equal(i.ACoins(6648).String())) // check voter rewards - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_2, i.CHARLIE)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_2, i.CHARLIE)).To(BeEmpty()) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) @@ -788,22 +773,19 @@ var _ = Describe("valid bundles", Ordered, func() { It("Produce a valid bundle with multiple validators and foreign delegation although some voted invalid", func() { // ARRANGE - s.RunTxDelegatorSuccess(&delegationtypes.MsgDelegate{ - Creator: i.ALICE, - Staker: i.STAKER_0, - Amount: 300 * i.KYVE, - }) + s.RunTxSuccess(stakingTypes.NewMsgDelegate( + i.ALICE, + util.MustValaddressFromOperatorAddress(i.STAKER_0), + sdk.NewInt64Coin(globalTypes.Denom, int64(300*i.KYVE)), + )) - s.RunTxDelegatorSuccess(&delegationtypes.MsgDelegate{ - Creator: i.BOB, - Staker: i.STAKER_1, - Amount: 300 * i.KYVE, - }) + s.RunTxSuccess(stakingTypes.NewMsgDelegate( + i.BOB, + util.MustValaddressFromOperatorAddress(i.STAKER_1), + sdk.NewInt64Coin(globalTypes.Denom, int64(300*i.KYVE)), + )) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_2, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_2, "Staker-2", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_2, @@ -811,11 +793,11 @@ var _ = Describe("valid bundles", Ordered, func() { Valaddress: i.VALADDRESS_2_A, }) - s.RunTxDelegatorSuccess(&delegationtypes.MsgDelegate{ - Creator: i.CHARLIE, - Staker: i.STAKER_2, - Amount: 300 * i.KYVE, - }) + s.RunTxSuccess(stakingTypes.NewMsgDelegate( + i.CHARLIE, + util.MustValaddressFromOperatorAddress(i.STAKER_2), + sdk.NewInt64Coin(globalTypes.Denom, int64(300*i.KYVE)), + )) s.RunTxBundlesSuccess(&bundletypes.MsgSubmitBundleProposal{ Creator: i.VALADDRESS_0_A, @@ -927,10 +909,10 @@ var _ = Describe("valid bundles", Ordered, func() { slashAmountVoter := uint64(math.LegacyNewDec(int64(100 * i.KYVE)).Mul(fraction).TruncateInt64()) slashAmountDelegator := uint64(math.LegacyNewDec(int64(300 * i.KYVE)).Mul(fraction).TruncateInt64()) - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_2, i.STAKER_2)).To(Equal(100*i.KYVE - slashAmountVoter)) - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_2, i.CHARLIE)).To(Equal(300*i.KYVE - slashAmountDelegator)) + Expect(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_2, i.STAKER_2)).To(Equal(100*i.KYVE - slashAmountVoter)) + Expect(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_2, i.CHARLIE)).To(Equal(300*i.KYVE - slashAmountDelegator)) - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(800 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(800 * i.KYVE)) // check voter status _, valaccountVoterFound := s.App().StakersKeeper.GetValaccount(s.Ctx(), 0, i.STAKER_2) @@ -943,23 +925,22 @@ var _ = Describe("valid bundles", Ordered, func() { Expect(balanceVoter).To(Equal(initialBalanceStaker2)) // check uploader rewards - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), valaccountUploader.Staker) balanceUploader := s.GetCoinsFromAddress(valaccountUploader.Staker) // assert payout transfer Expect(balanceUploader.String()).To(Equal(initialBalanceStaker0.String())) // assert commission rewards // (10_000 - (10_000 * 0.01) - (100 * 0.5)) * 0.1 + (100 * 0.5) - Expect(uploader.CommissionRewards.String()).To(Equal(i.ACoins(1035).String())) + Expect(s.App().StakersKeeper.GetOutstandingCommissionRewards(s.Ctx(), valaccountUploader.Staker).String()).To(Equal(i.ACoins(1035).String())) // assert uploader self delegation rewards // (10_000 - (10_000 * 0.01) - (100 * 0.5)) * (1 - 0.1) * (1/4) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.ACoins(2216).String())) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.ACoins(2216).String())) // assert delegator delegation rewards // (10_000 - (10_000 * 0.01) - (100 * 0.5)) * (1 - 0.1) * (3/4) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.ALICE).String()).To(Equal(i.ACoins(6648).String())) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.ALICE).String()).To(Equal(i.ACoins(6648).String())) // check voter rewards - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_2, i.CHARLIE)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_2, i.CHARLIE)).To(BeEmpty()) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) @@ -1092,17 +1073,16 @@ var _ = Describe("valid bundles", Ordered, func() { Expect(balanceVoter).To(Equal(initialBalanceStaker1)) // check uploader rewards - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), valaccountUploader.Staker) balanceUploader := s.GetCoinsFromAddress(valaccountUploader.Staker) // assert payout transfer Expect(balanceUploader.String()).To(Equal(initialBalanceStaker0.String())) // assert uploader self delegation rewards // (10_000 - (10_000 * 0.01) - (100 * 0.9)) * (1 - 0.1) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.ACoins(8829).String())) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.ACoins(8829).String())) // assert commission rewards // (10_000 - (10_000 * 0.01) - (100 * 0.9)) * 0.1 + (100 * 0.9) - Expect(uploader.CommissionRewards.String()).To(Equal(i.ACoins(1071).String())) + Expect(s.App().StakersKeeper.GetOutstandingCommissionRewards(s.Ctx(), valaccountUploader.Staker).String()).To(Equal(i.ACoins(1071).String())) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) @@ -1232,17 +1212,16 @@ var _ = Describe("valid bundles", Ordered, func() { Expect(balanceVoter).To(Equal(initialBalanceStaker1)) // check uploader rewards - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), valaccountUploader.Staker) balanceUploader := s.GetCoinsFromAddress(valaccountUploader.Staker) // assert payout transfer Expect(balanceUploader.String()).To(Equal(initialBalanceStaker0.String())) // assert commission rewards (here we round down since the result of commission rewards gets truncated) // (coin_amount_per_bundle - (coin_amount_per_bundle * 0.01) - _((100 * 0.5) / (3 * coin_weight))_) * 0.1 + _((100 * 0.5) / (3 * coin_weight))_ - Expect(uploader.CommissionRewards.String()).To(Equal(sdk.NewCoins(i.ACoin(1004), i.BCoin(1987), i.CCoin(2974)).String())) + Expect(s.App().StakersKeeper.GetOutstandingCommissionRewards(s.Ctx(), valaccountUploader.Staker).String()).To(Equal(sdk.NewCoins(i.ACoin(1004), i.BCoin(1987), i.CCoin(2974)).String())) // assert uploader self delegation rewards (here we round up since the result of delegation rewards is the remainder minus the truncated commission rewards) // (coin_amount_per_bundle - (coin_amount_per_bundle * 0.01) - _((100 * 0.5) / (3 * coin_weight))_) * (1 - 0.1) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(sdk.NewCoins(i.ACoin(8896), i.BCoin(17813), i.CCoin(26726)).String())) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(sdk.NewCoins(i.ACoin(8895), i.BCoin(17812), i.CCoin(26725)).String())) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) @@ -1402,17 +1381,16 @@ var _ = Describe("valid bundles", Ordered, func() { Expect(balanceVoter).To(Equal(initialBalanceStaker1)) // check uploader rewards - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), valaccountUploader.Staker) balanceUploader := s.GetCoinsFromAddress(valaccountUploader.Staker) // assert payout transfer Expect(balanceUploader.String()).To(Equal(initialBalanceStaker0.String())) // assert commission rewards (here we round down since the result of commission rewards gets truncated) // (10_000 - (10_000 * 0.01) - _((100 * 0.5) / (3 * coin_weight))_) * 0.1 + _((100 * 0.5) / (3 * coin_weight))_ - Expect(uploader.CommissionRewards.String()).To(Equal(sdk.NewCoins(i.ACoin(1004), i.BCoin(997), i.CCoin(9900)).String())) + Expect(s.App().StakersKeeper.GetOutstandingCommissionRewards(s.Ctx(), valaccountUploader.Staker).String()).To(Equal(sdk.NewCoins(i.ACoin(1004), i.BCoin(997), i.CCoin(9900)).String())) // assert uploader self delegation rewards (here we round up since the result of delegation rewards is the remainder minus the truncated commission rewards) // (10_000 - (10_000 * 0.01) - _((100 * 0.5) / (3 * coin_weight))_) * (1 - 0.1) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(sdk.NewCoins(i.ACoin(8896), i.BCoin(8903)).String())) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(sdk.NewCoins(i.ACoin(8895), i.BCoin(8902)).String())) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) @@ -1566,17 +1544,16 @@ var _ = Describe("valid bundles", Ordered, func() { Expect(balanceVoter).To(Equal(initialBalanceStaker1)) // check uploader rewards - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), valaccountUploader.Staker) balanceUploader := s.GetCoinsFromAddress(valaccountUploader.Staker) // assert payout transfer Expect(balanceUploader.String()).To(Equal(initialBalanceStaker0.String())) // assert commission rewards (here we round down since the result of commission rewards gets truncated) // (10_000 - (10_000 * 0.01) - _((100 * 0.5) / (2 * coin_weight))_) * 0.1 + _((100 * 0.5) / (2 * coin_weight))_ - Expect(uploader.CommissionRewards.String()).To(Equal(sdk.NewCoins(i.ACoin(1012), i.BCoin(1000)).String())) + Expect(s.App().StakersKeeper.GetOutstandingCommissionRewards(s.Ctx(), valaccountUploader.Staker).String()).To(Equal(sdk.NewCoins(i.ACoin(1012), i.BCoin(1000)).String())) // assert uploader self delegation rewards (here we round up since the result of delegation rewards is the remainder minus the truncated commission rewards) // (10_000 - (10_000 * 0.01) - _((100 * 0.5) / (2 * coin_weight))_) * (1 - 0.1) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(sdk.NewCoins(i.ACoin(8888), i.BCoin(8900)).String())) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(sdk.NewCoins(i.ACoin(8887), i.BCoin(8899)).String())) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) @@ -1762,7 +1739,6 @@ var _ = Describe("valid bundles", Ordered, func() { Expect(balanceVoter).To(Equal(initialBalanceStaker1)) // check uploader rewards - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), valaccountUploader.Staker) balanceUploader := s.GetCoinsFromAddress(valaccountUploader.Staker) // assert payout transfer @@ -1771,10 +1747,10 @@ var _ = Describe("valid bundles", Ordered, func() { // (amount_per_bundle - treasury_reward - storage_cost) * uploader_commission + storage_cost // storage_cost = 1MB * storage_price / coin_length * coin_price // (amount_per_bundle - (amount_per_bundle * 0.01) - _((1048576 * 0.000000006288 * 10**coin_decimals) / (4 * coin_weight))_) * 0.1 + _((1048576 * 0.000000006288) / (4 * coin_weight))_ - Expect(uploader.CommissionRewards.String()).To(Equal(sdk.NewCoins(i.KYVECoin(125_973_187), i.ACoin(99_143), i.BCoin(116_661_015_771_428_571), i.CCoin(100_765)).String())) + Expect(s.App().StakersKeeper.GetOutstandingCommissionRewards(s.Ctx(), valaccountUploader.Staker).String()).To(Equal(sdk.NewCoins(i.KYVECoin(125_973_187), i.ACoin(99_143), i.BCoin(116_661_015_771_428_571), i.CCoin(100_765)).String())) // assert uploader self delegation rewards (here we round up since the result of delegation rewards is the remainder minus the truncated commission rewards) // (amount_per_bundle - (amount_per_bundle * 0.01) - _((29970208 * 0.000000006288 * 1**coin_decimals) / (4 * coin_weight))_) * (1 - 0.1) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(sdk.NewCoins(i.KYVECoin(864_026_813), i.ACoin(890_857), i.BCoin(873_338_984_228_571_429), i.CCoin(889_235)).String())) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(sdk.NewCoins(i.KYVECoin(864_026_812), i.ACoin(890_856), i.BCoin(873_338_984_228_571_428), i.CCoin(889_234)).String())) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) diff --git a/x/bundles/keeper/keeper_suite_zero_delegation_test.go b/x/bundles/keeper/keeper_suite_zero_delegation_test.go index 7fea5206..5382372a 100644 --- a/x/bundles/keeper/keeper_suite_zero_delegation_test.go +++ b/x/bundles/keeper/keeper_suite_zero_delegation_test.go @@ -88,10 +88,7 @@ var _ = Describe("zero delegation", Ordered, func() { It("Staker votes with zero delegation", func() { // ARRANGE // create normal validator - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -99,10 +96,7 @@ var _ = Describe("zero delegation", Ordered, func() { Valaddress: i.VALADDRESS_0_A, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -141,10 +135,7 @@ var _ = Describe("zero delegation", Ordered, func() { }) // create zero delegation validator - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_2, - Amount: 0 * i.KYVE, - }) + s.CreateZeroDelegationValidator(i.STAKER_2, "Staker-2") s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_2, @@ -192,10 +183,7 @@ var _ = Describe("zero delegation", Ordered, func() { It("Staker receives vote slash with zero delegation", func() { // ARRANGE // create normal validator - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -203,10 +191,7 @@ var _ = Describe("zero delegation", Ordered, func() { Valaddress: i.VALADDRESS_0_A, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -237,10 +222,7 @@ var _ = Describe("zero delegation", Ordered, func() { }) // create zero delegation validator - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_2, - Amount: 0 * i.KYVE, - }) + s.CreateZeroDelegationValidator(i.STAKER_2, "Staker-2") s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_2, @@ -295,18 +277,15 @@ var _ = Describe("zero delegation", Ordered, func() { // calculate voter slashes fraction := s.App().DelegationKeeper.GetVoteSlash(s.Ctx()) slashAmountVoter := uint64(math.LegacyNewDec(int64(0 * i.KYVE)).Mul(fraction).TruncateInt64()) - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_2, i.STAKER_2)).To(Equal(0*i.KYVE - slashAmountVoter)) + Expect(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_2, i.STAKER_2)).To(Equal(0*i.KYVE - slashAmountVoter)) - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200*i.KYVE - slashAmountVoter)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200*i.KYVE - slashAmountVoter)) }) It("Staker submit bundle proposal with zero delegation", func() { // ARRANGE // create zero delegation validator - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 0 * i.KYVE, - }) + s.CreateZeroDelegationValidator(i.STAKER_0, "Staker-0") s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -315,10 +294,7 @@ var _ = Describe("zero delegation", Ordered, func() { }) // create normal validator - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -327,10 +303,7 @@ var _ = Describe("zero delegation", Ordered, func() { }) // create normal validator - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_2, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_2, "Staker-2", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_2, @@ -468,14 +441,12 @@ var _ = Describe("zero delegation", Ordered, func() { storageReward := s.App().BundlesKeeper.GetStorageCost(s.Ctx(), pool.CurrentStorageProviderId).MulInt64(100) totalUploaderReward := pool.InflationShareWeight.Sub(treasuryReward).Sub(storageReward) - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - // assert payout transfer Expect(balanceUploader).To(Equal(initialBalanceStaker0)) // assert commission rewards - Expect(uploader.CommissionRewards.AmountOf(globaltypes.Denom).Uint64()).To(Equal(uint64(totalUploaderReward.Add(storageReward).TruncateInt64()))) + Expect(s.App().StakersKeeper.GetOutstandingCommissionRewards(s.Ctx(), i.STAKER_0).AmountOf(globaltypes.Denom).Int64()).To(Equal(totalUploaderReward.Add(storageReward).TruncateInt64())) // assert uploader self delegation rewards - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(BeEmpty()) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) @@ -487,10 +458,7 @@ var _ = Describe("zero delegation", Ordered, func() { It("Staker receives upload slash with zero delegation", func() { // ARRANGE // create zero delegation validator - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 0 * i.KYVE, - }) + s.CreateZeroDelegationValidator(i.STAKER_0, "Staker-0") s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -499,10 +467,7 @@ var _ = Describe("zero delegation", Ordered, func() { }) // create normal validator - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -511,10 +476,7 @@ var _ = Describe("zero delegation", Ordered, func() { }) // create normal validator - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_2, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_2, "Staker-2", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_2, @@ -624,18 +586,18 @@ var _ = Describe("zero delegation", Ordered, func() { Expect(balanceValaddress).To(Equal(initialBalanceValaddress0)) balanceUploader := s.GetBalanceFromAddress(i.STAKER_0) - _, uploaderFound := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) + _, uploaderFound := s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_0) Expect(uploaderFound).To(BeTrue()) Expect(balanceUploader).To(Equal(initialBalanceStaker0)) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(BeEmpty()) // calculate uploader slashes fraction := s.App().DelegationKeeper.GetUploadSlash(s.Ctx()) slashAmount := uint64(math.LegacyNewDec(int64(0 * i.KYVE)).Mul(fraction).TruncateInt64()) - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(0*i.KYVE - slashAmount)) - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200*i.KYVE - slashAmount)) + Expect(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(0*i.KYVE - slashAmount)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200*i.KYVE - slashAmount)) // check voter status valaccountVoter, _ := s.App().StakersKeeper.GetValaccount(s.Ctx(), 0, i.STAKER_1) @@ -647,7 +609,7 @@ var _ = Describe("zero delegation", Ordered, func() { balanceVoter := s.GetBalanceFromAddress(valaccountVoter.Staker) Expect(balanceVoter).To(Equal(initialBalanceStaker1)) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_1, i.STAKER_1)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_1, i.STAKER_1)).To(BeEmpty()) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) @@ -659,10 +621,7 @@ var _ = Describe("zero delegation", Ordered, func() { It("Staker receives timeout slash because votes were missed", func() { // ARRANGE // create normal validator - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -671,10 +630,7 @@ var _ = Describe("zero delegation", Ordered, func() { }) // create zero delegation validator - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 0 * i.KYVE, - }) + s.CreateZeroDelegationValidator(i.STAKER_1, "Staker-1") s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -683,10 +639,7 @@ var _ = Describe("zero delegation", Ordered, func() { }) // create normal validator - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_2, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_2, "Staker-2", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_2, @@ -766,7 +719,7 @@ var _ = Describe("zero delegation", Ordered, func() { poolStakers := s.App().StakersKeeper.GetAllStakerAddressesOfPool(s.Ctx(), 0) Expect(poolStakers).To(HaveLen(2)) - _, stakerFound := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_1) + _, stakerFound := s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_1) Expect(stakerFound).To(BeTrue()) _, valaccountFound := s.App().StakersKeeper.GetValaccount(s.Ctx(), 0, i.STAKER_1) @@ -776,15 +729,12 @@ var _ = Describe("zero delegation", Ordered, func() { slashAmountRatio := s.App().DelegationKeeper.GetTimeoutSlash(s.Ctx()) expectedBalance := 0*i.KYVE - uint64(math.LegacyNewDec(int64(0*i.KYVE)).Mul(slashAmountRatio).TruncateInt64()) - Expect(expectedBalance).To(Equal(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_1, i.STAKER_1))) + Expect(expectedBalance).To(Equal(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_1, i.STAKER_1))) }) It("Stakers try to produce valid bundle but all stakers have zero delegation", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 0 * i.KYVE, - }) + s.CreateZeroDelegationValidator(i.STAKER_0, "Staker-0") s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -792,10 +742,7 @@ var _ = Describe("zero delegation", Ordered, func() { Valaddress: i.VALADDRESS_0_A, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 0 * i.KYVE, - }) + s.CreateZeroDelegationValidator(i.STAKER_1, "Staker-1") s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -892,7 +839,7 @@ var _ = Describe("zero delegation", Ordered, func() { balanceUploader := s.GetBalanceFromAddress(valaccountUploader.Staker) Expect(balanceUploader).To(Equal(initialBalanceStaker0)) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(BeEmpty()) // check voter status valaccountVoter, _ := s.App().StakersKeeper.GetValaccount(s.Ctx(), 0, i.STAKER_1) @@ -905,7 +852,7 @@ var _ = Describe("zero delegation", Ordered, func() { Expect(balanceVoter).To(Equal(initialBalanceStaker1)) Expect(balanceVoter).To(Equal(initialBalanceStaker1)) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_1, i.STAKER_1)).To(BeEmpty()) + Expect(s.App().StakersKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_1, i.STAKER_1)).To(BeEmpty()) fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) diff --git a/x/bundles/keeper/logic_bundles.go b/x/bundles/keeper/logic_bundles.go index a9b30c71..07c7cf00 100644 --- a/x/bundles/keeper/logic_bundles.go +++ b/x/bundles/keeper/logic_bundles.go @@ -39,7 +39,7 @@ func (k Keeper) AssertPoolCanRun(ctx sdk.Context, poolId uint64) error { } // Get the total and the highest delegation of a single validator in the pool - totalDelegation, highestDelegation := k.delegationKeeper.GetTotalAndHighestDelegationOfPool(ctx, poolId) + totalDelegation, highestDelegation := k.stakerKeeper.GetTotalAndHighestDelegationOfPool(ctx, poolId) // Error if min delegation is not reached if totalDelegation < pool.MinDelegation { @@ -170,7 +170,19 @@ func (k Keeper) validateSubmitBundleArgs(ctx sdk.Context, bundleProposal *types. // slashDelegatorsAndRemoveStaker slashes a staker with a certain slashType and all including // delegators and removes him from the storage pool func (k Keeper) slashDelegatorsAndRemoveStaker(ctx sdk.Context, poolId uint64, stakerAddress string, slashType delegationTypes.SlashType) { - k.delegationKeeper.SlashDelegators(ctx, poolId, stakerAddress, slashType) + slashAmountRatio := math.LegacyZeroDec() + + // TODO move the delegation Slash types to the Stakers module + switch slashType { + case delegationTypes.SLASH_TYPE_TIMEOUT: + slashAmountRatio = k.delegationKeeper.GetTimeoutSlash(ctx) + case delegationTypes.SLASH_TYPE_VOTE: + slashAmountRatio = k.delegationKeeper.GetVoteSlash(ctx) + case delegationTypes.SLASH_TYPE_UPLOAD: + slashAmountRatio = k.delegationKeeper.GetUploadSlash(ctx) + } + + k.stakerKeeper.Slash(ctx, poolId, stakerAddress, slashAmountRatio) k.stakerKeeper.LeavePool(ctx, stakerAddress, poolId) } @@ -243,8 +255,8 @@ func (k Keeper) calculatePayouts(ctx sdk.Context, poolId uint64, totalPayout sdk // are divided between uploader and its delegators based on the uploader's commission. bundleProposal, _ := k.GetBundleProposal(ctx, poolId) - // Should not happen, if so make no payouts - if !k.stakerKeeper.DoesStakerExist(ctx, bundleProposal.Uploader) { + _, found := k.stakerKeeper.GetValidator(ctx, bundleProposal.Uploader) + if !found { return } @@ -306,9 +318,10 @@ func (k Keeper) calculatePayouts(ctx sdk.Context, poolId uint64, totalPayout sdk return } - commission := k.stakerKeeper.GetCommission(ctx, bundleProposal.Uploader) - commissionRewards, _ := sdk.NewDecCoinsFromCoins(totalPayout...).MulDec(commission).TruncateDecimal() - bundleReward.UploaderCommission = commissionRewards + // TODO add custom commission per pool in next PR + // commission := k.stakerKeeper.GetCommission(ctx, bundleProposal.Uploader) + // commissionRewards, _ := sdk.NewDecCoinsFromCoins(totalPayout...).MulDec(commission).TruncateDecimal() + // bundleReward.UploaderCommission = commissionRewards // the remaining total payout belongs to the delegators totalPayout = totalPayout.Sub(bundleReward.UploaderCommission...) @@ -317,7 +330,7 @@ func (k Keeper) calculatePayouts(ctx sdk.Context, poolId uint64, totalPayout sdk } // if the uploader has no delegators he receives the entire remaining amount - if k.delegationKeeper.GetDelegationAmount(ctx, bundleProposal.Uploader) > 0 { + if k.stakerKeeper.GetDelegationAmount(ctx, bundleProposal.Uploader) > 0 { bundleReward.Delegation = totalPayout } else { bundleReward.UploaderCommission = bundleReward.UploaderCommission.Add(totalPayout...) @@ -517,7 +530,7 @@ func (k Keeper) GetVoteDistribution(ctx sdk.Context, poolId uint64) (voteDistrib for _, voter := range bundleProposal.VotersValid { // valaccount was found the voter is active in the pool if k.stakerKeeper.DoesValaccountExist(ctx, poolId, voter) { - delegation := k.delegationKeeper.GetDelegationAmount(ctx, voter) + delegation := k.stakerKeeper.GetDelegationAmount(ctx, voter) voteDistribution.Valid += k.calculateVotingPower(delegation) } } @@ -526,7 +539,7 @@ func (k Keeper) GetVoteDistribution(ctx sdk.Context, poolId uint64) (voteDistrib for _, voter := range bundleProposal.VotersInvalid { // valaccount was found the voter is active in the pool if k.stakerKeeper.DoesValaccountExist(ctx, poolId, voter) { - delegation := k.delegationKeeper.GetDelegationAmount(ctx, voter) + delegation := k.stakerKeeper.GetDelegationAmount(ctx, voter) voteDistribution.Invalid += k.calculateVotingPower(delegation) } } @@ -535,14 +548,14 @@ func (k Keeper) GetVoteDistribution(ctx sdk.Context, poolId uint64) (voteDistrib for _, voter := range bundleProposal.VotersAbstain { // valaccount was found the voter is active in the pool if k.stakerKeeper.DoesValaccountExist(ctx, poolId, voter) { - delegation := k.delegationKeeper.GetDelegationAmount(ctx, voter) + delegation := k.stakerKeeper.GetDelegationAmount(ctx, voter) voteDistribution.Abstain += k.calculateVotingPower(delegation) } } // get total voting power for _, staker := range k.stakerKeeper.GetAllStakerAddressesOfPool(ctx, poolId) { - delegation := k.delegationKeeper.GetDelegationAmount(ctx, staker) + delegation := k.stakerKeeper.GetDelegationAmount(ctx, staker) voteDistribution.Total += k.calculateVotingPower(delegation) } @@ -599,12 +612,12 @@ func (k Keeper) tallyBundleProposal(ctx sdk.Context, bundleProposal types.Bundle // payout rewards to uploader through commission rewards uploaderReward := bundleReward.UploaderCommission.Add(bundleReward.UploaderStorageCost...) - if err := k.stakerKeeper.IncreaseStakerCommissionRewards(ctx, bundleProposal.Uploader, poolTypes.ModuleName, uploaderReward); err != nil { + if err := k.stakerKeeper.PayoutAdditionalCommissionRewards(ctx, bundleProposal.Uploader, poolTypes.ModuleName, uploaderReward); err != nil { return types.TallyResult{}, err } // payout rewards to delegators through delegation rewards - if err := k.delegationKeeper.PayoutRewards(ctx, bundleProposal.Uploader, bundleReward.Delegation, poolTypes.ModuleName); err != nil { + if err := k.stakerKeeper.PayoutRewards(ctx, bundleProposal.Uploader, bundleReward.Delegation, poolTypes.ModuleName); err != nil { return types.TallyResult{}, err } diff --git a/x/bundles/keeper/logic_bundles_test.go b/x/bundles/keeper/logic_bundles_test.go index a9d54e04..ee77c5bf 100644 --- a/x/bundles/keeper/logic_bundles_test.go +++ b/x/bundles/keeper/logic_bundles_test.go @@ -100,10 +100,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { } s.App().PoolKeeper.SetPool(s.Ctx(), pool) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -112,10 +109,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { Amount: 0, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -133,10 +127,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { It("Assert pool can run while pool is disabled", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -145,10 +136,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { Amount: 0, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -171,10 +159,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { It("Assert pool can run while min delegation is not reached", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 20 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(20*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -183,10 +168,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { Amount: 0, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 20 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(20*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -222,10 +204,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { } s.RunTxPoolSuccess(msg) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -234,10 +213,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { Amount: 0, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 101 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(101*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -273,10 +249,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { } s.RunTxPoolSuccess(msg) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 300 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(300*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -285,10 +258,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { Amount: 0, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 300 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(300*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -297,10 +267,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { Amount: 0, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_2, - Amount: 400 * i.KYVE, - }) + s.CreateValidator(i.STAKER_2, "Staker-2", int64(400*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_2, @@ -340,10 +307,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { } s.RunTxPoolSuccess(msg) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 300 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(300*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -352,10 +316,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { Amount: 0, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 300 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(300*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -364,10 +325,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { Amount: 0, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_2, - Amount: 401 * i.KYVE, - }) + s.CreateValidator(i.STAKER_2, "Staker-2", int64(401*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_2, @@ -407,10 +365,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { } s.RunTxPoolSuccess(msg) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 300 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(300*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -428,10 +383,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { It("Assert pool can run", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 50 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(50*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -440,10 +392,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { Amount: 0, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 50 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(50*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -479,10 +428,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { } s.RunTxPoolSuccess(msg) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -491,10 +437,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { Amount: 0, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -528,10 +471,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { It("Assert can vote if sender is no staker", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -540,10 +480,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { Amount: 0, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -576,10 +513,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { s.CommitAfterSeconds(60) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_2, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_2, "Staker-2", int64(100*i.KYVE)) // ACT err := s.App().BundlesKeeper.AssertCanVote(s.Ctx(), 0, i.STAKER_2, i.VALADDRESS_2_A, "y62A3tfbSNcNYDGoL-eXwzyV-Zc9Q0OVtDvR1biJmNI") @@ -590,10 +524,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { It("Assert can vote if bundle is dropped", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -602,10 +533,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { Amount: 0, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -649,10 +577,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { It("Assert can vote if storage id does not match", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -661,10 +586,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { Amount: 0, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -707,10 +629,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { It("Assert can vote if sender has already voted valid", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -719,10 +638,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { Amount: 0, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -774,10 +690,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { It("Assert can vote if sender has already voted invalid", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -786,10 +699,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { Amount: 0, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -841,10 +751,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { It("Assert can vote", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -853,10 +760,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { Amount: 0, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -902,10 +806,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { It("Assert can propose if sender is no staker", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -914,10 +815,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { Amount: 0, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -944,10 +842,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { It("Assert can propose if sender is not next uploader", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -956,10 +851,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { Amount: 0, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -986,10 +878,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { It("Assert can propose if upload interval has not passed", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -998,10 +887,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { Amount: 0, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -1031,10 +917,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { It("Assert can propose if index does not match", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -1043,10 +926,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { Amount: 0, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -1073,10 +953,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { It("Assert can propose", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -1085,10 +962,7 @@ var _ = Describe("logic_bundles.go", Ordered, func() { Amount: 0, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, diff --git a/x/bundles/keeper/logic_end_block_handle_upload_timeout_test.go b/x/bundles/keeper/logic_end_block_handle_upload_timeout_test.go index 100b3e54..ebff4846 100644 --- a/x/bundles/keeper/logic_end_block_handle_upload_timeout_test.go +++ b/x/bundles/keeper/logic_end_block_handle_upload_timeout_test.go @@ -3,11 +3,14 @@ package keeper_test import ( "cosmossdk.io/math" i "github.com/KYVENetwork/chain/testutil/integration" + "github.com/KYVENetwork/chain/util" bundletypes "github.com/KYVENetwork/chain/x/bundles/types" - delegationtypes "github.com/KYVENetwork/chain/x/delegation/types" funderstypes "github.com/KYVENetwork/chain/x/funders/types" + globalTypes "github.com/KYVENetwork/chain/x/global/types" pooltypes "github.com/KYVENetwork/chain/x/pool/types" stakertypes "github.com/KYVENetwork/chain/x/stakers/types" + sdk "github.com/cosmos/cosmos-sdk/types" + stakingTypes "github.com/cosmos/cosmos-sdk/x/staking/types" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" ) @@ -43,6 +46,9 @@ TEST CASES - logic_end_block_handle_upload_timeout.go var _ = Describe("logic_end_block_handle_upload_timeout.go", Ordered, func() { var s *i.KeeperTestSuite + var originalRoundRobinProgress bundletypes.RoundRobinProgress + var originalBundleProposal bundletypes.BundleProposal + BeforeEach(func() { // init new clean chain s = i.NewCleanChain() @@ -79,10 +85,14 @@ var _ = Describe("logic_end_block_handle_upload_timeout.go", Ordered, func() { AmountsPerBundle: i.KYVECoins(1 * i.T_KYVE), }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + originalRoundRobinProgress, _ = s.App().BundlesKeeper.GetRoundRobinProgress(s.Ctx(), 0) + originalBundleProposal, _ = s.App().BundlesKeeper.GetBundleProposal(s.Ctx(), 0) + + s.CreateValidatorWithoutCommit(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) + + s.App().BundlesKeeper.SetRoundRobinProgress(s.Ctx(), originalRoundRobinProgress) + s.App().BundlesKeeper.SetBundleProposal(s.Ctx(), originalBundleProposal) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -90,11 +100,6 @@ var _ = Describe("logic_end_block_handle_upload_timeout.go", Ordered, func() { Valaddress: i.VALADDRESS_0_A, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) - s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, PoolId: 0, @@ -131,13 +136,13 @@ var _ = Describe("logic_end_block_handle_upload_timeout.go", Ordered, func() { poolStakers := s.App().StakersKeeper.GetAllStakerAddressesOfPool(s.Ctx(), 0) Expect(poolStakers).To(HaveLen(2)) - _, found := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) + _, found := s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_0) Expect(found).To(BeTrue()) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(100 * i.KYVE)) - _, found = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_1) + _, found = s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_1) Expect(found).To(BeTrue()) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_1)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_1)).To(Equal(100 * i.KYVE)) }) It("Last staker who joins gets automatically chosen as next uploader", func() { @@ -152,13 +157,13 @@ var _ = Describe("logic_end_block_handle_upload_timeout.go", Ordered, func() { poolStakers := s.App().StakersKeeper.GetAllStakerAddressesOfPool(s.Ctx(), 0) Expect(poolStakers).To(HaveLen(2)) - _, found := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) + _, found := s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_0) Expect(found).To(BeTrue()) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(100 * i.KYVE)) - _, found = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_1) + _, found = s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_1) Expect(found).To(BeTrue()) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_1)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_1)).To(Equal(100 * i.KYVE)) }) It("Next uploader gets removed due to pool upgrading", func() { @@ -191,13 +196,13 @@ var _ = Describe("logic_end_block_handle_upload_timeout.go", Ordered, func() { poolStakers := s.App().StakersKeeper.GetAllStakerAddressesOfPool(s.Ctx(), 0) Expect(poolStakers).To(HaveLen(2)) - _, found := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) + _, found := s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_0) Expect(found).To(BeTrue()) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(100 * i.KYVE)) - _, found = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_1) + _, found = s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_1) Expect(found).To(BeTrue()) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_1)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_1)).To(Equal(100 * i.KYVE)) }) It("Next uploader gets removed due to pool being disabled", func() { @@ -223,13 +228,13 @@ var _ = Describe("logic_end_block_handle_upload_timeout.go", Ordered, func() { poolStakers := s.App().StakersKeeper.GetAllStakerAddressesOfPool(s.Ctx(), 0) Expect(poolStakers).To(HaveLen(2)) - _, found := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) + _, found := s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_0) Expect(found).To(BeTrue()) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(100 * i.KYVE)) - _, found = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_1) + _, found = s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_1) Expect(found).To(BeTrue()) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_1)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_1)).To(Equal(100 * i.KYVE)) }) It("Next uploader gets removed due to pool not reaching min delegation", func() { @@ -240,20 +245,17 @@ var _ = Describe("logic_end_block_handle_upload_timeout.go", Ordered, func() { PoolId: 0, }) - s.RunTxDelegatorSuccess(&delegationtypes.MsgUndelegate{ - Creator: i.STAKER_0, - Staker: i.STAKER_0, - Amount: 80 * i.KYVE, - }) - - s.RunTxDelegatorSuccess(&delegationtypes.MsgUndelegate{ - Creator: i.STAKER_1, - Staker: i.STAKER_1, - Amount: 80 * i.KYVE, - }) + s.RunTxSuccess(stakingTypes.NewMsgUndelegate( + i.STAKER_0, + util.MustValaddressFromOperatorAddress(i.STAKER_0), + sdk.NewInt64Coin(globalTypes.Denom, int64(80*i.KYVE)), + )) - s.CommitAfterSeconds(s.App().DelegationKeeper.GetUnbondingDelegationTime(s.Ctx())) - s.CommitAfterSeconds(1) + s.RunTxSuccess(stakingTypes.NewMsgUndelegate( + i.STAKER_1, + util.MustValaddressFromOperatorAddress(i.STAKER_1), + sdk.NewInt64Coin(globalTypes.Denom, int64(80*i.KYVE)), + )) // ACT s.CommitAfterSeconds(1) @@ -266,13 +268,13 @@ var _ = Describe("logic_end_block_handle_upload_timeout.go", Ordered, func() { poolStakers := s.App().StakersKeeper.GetAllStakerAddressesOfPool(s.Ctx(), 0) Expect(poolStakers).To(HaveLen(2)) - _, found := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) + _, found := s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_0) Expect(found).To(BeTrue()) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(20 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(20 * i.KYVE)) - _, found = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_1) + _, found = s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_1) Expect(found).To(BeTrue()) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_1)).To(Equal(20 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_1)).To(Equal(20 * i.KYVE)) }) It("Next uploader gets removed due to pool having one node with more than 50% voting power", func() { @@ -283,14 +285,11 @@ var _ = Describe("logic_end_block_handle_upload_timeout.go", Ordered, func() { PoolId: 0, }) - s.RunTxDelegatorSuccess(&delegationtypes.MsgDelegate{ - Creator: i.STAKER_0, - Staker: i.STAKER_0, - Amount: 1 * i.KYVE, - }) - - s.CommitAfterSeconds(s.App().DelegationKeeper.GetUnbondingDelegationTime(s.Ctx())) - s.CommitAfterSeconds(1) + s.RunTxSuccess(stakingTypes.NewMsgDelegate( + i.STAKER_0, + util.MustValaddressFromOperatorAddress(i.STAKER_0), + sdk.NewInt64Coin(globalTypes.Denom, int64(1*i.KYVE)), + )) // ACT s.CommitAfterSeconds(1) @@ -303,13 +302,13 @@ var _ = Describe("logic_end_block_handle_upload_timeout.go", Ordered, func() { poolStakers := s.App().StakersKeeper.GetAllStakerAddressesOfPool(s.Ctx(), 0) Expect(poolStakers).To(HaveLen(2)) - _, found := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) + _, found := s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_0) Expect(found).To(BeTrue()) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(101 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(101 * i.KYVE)) - _, found = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_1) + _, found = s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_1) Expect(found).To(BeTrue()) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_1)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_1)).To(Equal(100 * i.KYVE)) }) It("Staker is next uploader of genesis bundle and upload interval and timeout does not pass", func() { @@ -331,13 +330,13 @@ var _ = Describe("logic_end_block_handle_upload_timeout.go", Ordered, func() { poolStakers := s.App().StakersKeeper.GetAllStakerAddressesOfPool(s.Ctx(), 0) Expect(poolStakers).To(HaveLen(2)) - _, found := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) + _, found := s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_0) Expect(found).To(BeTrue()) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(100 * i.KYVE)) - _, found = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_1) + _, found = s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_1) Expect(found).To(BeTrue()) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_1)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_1)).To(Equal(100 * i.KYVE)) }) It("Staker is next uploader of genesis bundle and upload timeout does not pass but upload interval passes", func() { @@ -360,13 +359,13 @@ var _ = Describe("logic_end_block_handle_upload_timeout.go", Ordered, func() { poolStakers := s.App().StakersKeeper.GetAllStakerAddressesOfPool(s.Ctx(), 0) Expect(poolStakers).To(HaveLen(2)) - _, found := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) + _, found := s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_0) Expect(found).To(BeTrue()) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(100 * i.KYVE)) - _, found = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_1) + _, found = s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_1) Expect(found).To(BeTrue()) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_1)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_1)).To(Equal(100 * i.KYVE)) }) It("Staker is next uploader of genesis bundle and upload timeout does pass together with upload interval", func() { @@ -395,14 +394,14 @@ var _ = Describe("logic_end_block_handle_upload_timeout.go", Ordered, func() { valaccount, _ := s.App().StakersKeeper.GetValaccount(s.Ctx(), 0, i.STAKER_0) Expect(valaccount.Points).To(Equal(uint64(1))) - _, found := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) + _, found := s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_0) Expect(found).To(BeTrue()) - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200 * i.KYVE)) // check if next uploader not got slashed expectedBalance := 100 * i.KYVE - Expect(expectedBalance).To(Equal(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0))) + Expect(expectedBalance).To(Equal(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0))) }) It("Staker is next uploader of bundle proposal and upload interval does not pass", func() { @@ -448,13 +447,13 @@ var _ = Describe("logic_end_block_handle_upload_timeout.go", Ordered, func() { poolStakers := s.App().StakersKeeper.GetAllStakerAddressesOfPool(s.Ctx(), 0) Expect(poolStakers).To(HaveLen(2)) - _, found := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) + _, found := s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_0) Expect(found).To(BeTrue()) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(100 * i.KYVE)) - _, found = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_1) + _, found = s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_1) Expect(found).To(BeTrue()) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_1)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_1)).To(Equal(100 * i.KYVE)) }) It("Staker is next uploader of bundle proposal and upload timeout does not pass", func() { @@ -501,13 +500,13 @@ var _ = Describe("logic_end_block_handle_upload_timeout.go", Ordered, func() { poolStakers := s.App().StakersKeeper.GetAllStakerAddressesOfPool(s.Ctx(), 0) Expect(poolStakers).To(HaveLen(2)) - _, found := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) + _, found := s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_0) Expect(found).To(BeTrue()) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(100 * i.KYVE)) - _, found = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_1) + _, found = s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_1) Expect(found).To(BeTrue()) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_1)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_1)).To(Equal(100 * i.KYVE)) }) It("Staker is next uploader of bundle proposal and upload timeout passes with the previous bundle being valid", func() { @@ -571,11 +570,11 @@ var _ = Describe("logic_end_block_handle_upload_timeout.go", Ordered, func() { // check that nobody got slashed expectedBalance := 100 * i.KYVE - Expect(expectedBalance).To(Equal(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0))) - Expect(expectedBalance).To(Equal(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_1, i.STAKER_1))) + Expect(expectedBalance).To(Equal(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0))) + Expect(expectedBalance).To(Equal(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_1, i.STAKER_1))) // pool delegations equals delegations of staker 0 & 1 - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200 * i.KYVE)) }) It("Staker is next uploader of bundle proposal and upload timeout passes with the previous bundle not reaching quorum", func() { @@ -631,22 +630,22 @@ var _ = Describe("logic_end_block_handle_upload_timeout.go", Ordered, func() { // check that nobody got slashed expectedBalance := 100 * i.KYVE - Expect(expectedBalance).To(Equal(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0))) - Expect(expectedBalance).To(Equal(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_1, i.STAKER_1))) + Expect(expectedBalance).To(Equal(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0))) + Expect(expectedBalance).To(Equal(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_1, i.STAKER_1))) - _, found = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_1) + _, found = s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_1) Expect(found).To(BeTrue()) // pool delegations equals delegations of staker 0 & 1 - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200 * i.KYVE)) }) It("Staker is next uploader of bundle proposal and upload timeout passes with the previous bundle being invalid", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_2, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_2, "Staker-2", int64(100*i.KYVE)) + + s.App().BundlesKeeper.SetRoundRobinProgress(s.Ctx(), originalRoundRobinProgress) + s.App().BundlesKeeper.SetBundleProposal(s.Ctx(), originalBundleProposal) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_2, @@ -692,7 +691,7 @@ var _ = Describe("logic_end_block_handle_upload_timeout.go", Ordered, func() { Vote: bundletypes.VOTE_TYPE_INVALID, }) - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(300 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(300 * i.KYVE)) // ACT s.CommitAfterSeconds(s.App().BundlesKeeper.GetUploadTimeout(s.Ctx())) @@ -723,26 +722,25 @@ var _ = Describe("logic_end_block_handle_upload_timeout.go", Ordered, func() { // check that staker 0 (uploader) got slashed expectedBalance := 80 * i.KYVE - Expect(expectedBalance).To(Equal(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0))) + Expect(expectedBalance).To(Equal(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0))) // check that staker 1 (next uploader) didn't get slashed expectedBalance = 100 * i.KYVE - Expect(expectedBalance).To(Equal(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_1, i.STAKER_1))) + Expect(expectedBalance).To(Equal(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_1, i.STAKER_1))) // check that staker 2 didn't get slashed expectedBalance = 100 * i.KYVE - Expect(expectedBalance).To(Equal(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_2, i.STAKER_2))) + Expect(expectedBalance).To(Equal(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_2, i.STAKER_2))) // pool delegations equals delegations of staker 1 & 2 - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200 * i.KYVE)) }) It("Staker with already max points is next uploader of bundle proposal and upload timeout passes", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_2, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_2, "Staker-2", int64(100*i.KYVE)) + s.App().BundlesKeeper.SetRoundRobinProgress(s.Ctx(), originalRoundRobinProgress) + s.App().BundlesKeeper.SetBundleProposal(s.Ctx(), originalBundleProposal) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_2, @@ -852,18 +850,18 @@ var _ = Describe("logic_end_block_handle_upload_timeout.go", Ordered, func() { // check that staker 0 (uploader) didn't get slashed expectedBalance := 100 * i.KYVE - Expect(expectedBalance).To(Equal(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0))) + Expect(expectedBalance).To(Equal(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0))) // check that staker 1 didn't get slashed expectedBalance = 100 * i.KYVE - Expect(expectedBalance).To(Equal(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_1, i.STAKER_1))) + Expect(expectedBalance).To(Equal(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_1, i.STAKER_1))) // check that staker 2 (next uploader) got slashed expectedBalance = 98 * i.KYVE - Expect(expectedBalance).To(Equal(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_2, i.STAKER_2))) + Expect(expectedBalance).To(Equal(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_2, i.STAKER_2))) // pool delegations equals delegations of staker 0 & 1 - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200 * i.KYVE)) }) It("A bundle proposal with no quorum does not reach the upload interval", func() { @@ -901,13 +899,13 @@ var _ = Describe("logic_end_block_handle_upload_timeout.go", Ordered, func() { poolStakers := s.App().StakersKeeper.GetAllStakerAddressesOfPool(s.Ctx(), 0) Expect(poolStakers).To(HaveLen(2)) - _, found := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) + _, found := s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_0) Expect(found).To(BeTrue()) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(100 * i.KYVE)) - _, found = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_1) + _, found = s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_1) Expect(found).To(BeTrue()) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_1)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_1)).To(Equal(100 * i.KYVE)) }) It("A bundle proposal with no quorum does reach the upload interval", func() { @@ -957,21 +955,20 @@ var _ = Describe("logic_end_block_handle_upload_timeout.go", Ordered, func() { poolStakers := s.App().StakersKeeper.GetAllStakerAddressesOfPool(s.Ctx(), 0) Expect(poolStakers).To(HaveLen(2)) - _, found := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) + _, found := s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_0) Expect(found).To(BeTrue()) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(100 * i.KYVE)) - _, found = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_1) + _, found = s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_1) Expect(found).To(BeTrue()) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_1)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_1)).To(Equal(100 * i.KYVE)) }) It("Staker who just left the pool is next uploader of dropped bundle proposal and upload timeout passes", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_2, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_2, "Staker-2", int64(100*i.KYVE)) + s.App().BundlesKeeper.SetRoundRobinProgress(s.Ctx(), originalRoundRobinProgress) + s.App().BundlesKeeper.SetBundleProposal(s.Ctx(), originalBundleProposal) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_2, @@ -1017,26 +1014,25 @@ var _ = Describe("logic_end_block_handle_upload_timeout.go", Ordered, func() { poolStakers := s.App().StakersKeeper.GetAllStakerAddressesOfPool(s.Ctx(), 0) Expect(poolStakers).To(HaveLen(2)) - _, found := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) + _, found := s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_0) Expect(found).To(BeTrue()) - _, found = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_2) + _, found = s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_2) Expect(found).To(BeTrue()) - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200 * i.KYVE)) // check if next uploader not got slashed expectedBalance := 100 * i.KYVE - Expect(expectedBalance).To(Equal(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_1, i.STAKER_1))) + Expect(expectedBalance).To(Equal(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_1, i.STAKER_1))) }) It("Staker who just left the pool is next uploader of valid bundle proposal and upload timeout passes", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_2, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_2, "Staker-2", int64(100*i.KYVE)) + s.App().BundlesKeeper.SetRoundRobinProgress(s.Ctx(), originalRoundRobinProgress) + s.App().BundlesKeeper.SetBundleProposal(s.Ctx(), originalBundleProposal) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_2, @@ -1104,26 +1100,25 @@ var _ = Describe("logic_end_block_handle_upload_timeout.go", Ordered, func() { poolStakers := s.App().StakersKeeper.GetAllStakerAddressesOfPool(s.Ctx(), 0) Expect(poolStakers).To(HaveLen(2)) - _, found := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) + _, found := s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_0) Expect(found).To(BeTrue()) - _, found = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_2) + _, found = s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_2) Expect(found).To(BeTrue()) - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200 * i.KYVE)) // check if next uploader not got slashed expectedBalance := 100 * i.KYVE - Expect(expectedBalance).To(Equal(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0))) + Expect(expectedBalance).To(Equal(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0))) }) It("Staker who just left the pool is next uploader of invalid bundle proposal and upload timeout passes", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_2, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_2, "Staker-2", int64(100*i.KYVE)) + s.App().BundlesKeeper.SetRoundRobinProgress(s.Ctx(), originalRoundRobinProgress) + s.App().BundlesKeeper.SetBundleProposal(s.Ctx(), originalBundleProposal) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_2, @@ -1190,15 +1185,15 @@ var _ = Describe("logic_end_block_handle_upload_timeout.go", Ordered, func() { poolStakers := s.App().StakersKeeper.GetAllStakerAddressesOfPool(s.Ctx(), 0) Expect(poolStakers).To(HaveLen(2)) - _, found = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) + _, found = s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_0) Expect(found).To(BeTrue()) - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal(200 * i.KYVE)) // check that next uploader got slashed for voting invalid expectedBalance := 80 * i.KYVE - Expect(expectedBalance).To(Equal(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0))) + Expect(expectedBalance).To(Equal(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0))) }) It("Staker with already max points is next uploader of bundle proposal in a second pool and upload timeout passes", func() { @@ -1222,6 +1217,9 @@ var _ = Describe("logic_end_block_handle_upload_timeout.go", Ordered, func() { } s.RunTxPoolSuccess(msg) + originalRoundRobinProgressPool2, _ := s.App().BundlesKeeper.GetRoundRobinProgress(s.Ctx(), 1) + originalBundleProposalPool2, _ := s.App().BundlesKeeper.GetBundleProposal(s.Ctx(), 1) + s.RunTxPoolSuccess(&funderstypes.MsgFundPool{ Creator: i.ALICE, PoolId: 1, @@ -1241,10 +1239,11 @@ var _ = Describe("logic_end_block_handle_upload_timeout.go", Ordered, func() { Valaddress: i.VALADDRESS_1_B, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_2, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_2, "Staker-2", int64(100*i.KYVE)) + s.App().BundlesKeeper.SetRoundRobinProgress(s.Ctx(), originalRoundRobinProgress) + s.App().BundlesKeeper.SetBundleProposal(s.Ctx(), originalBundleProposal) + s.App().BundlesKeeper.SetRoundRobinProgress(s.Ctx(), originalRoundRobinProgressPool2) + s.App().BundlesKeeper.SetBundleProposal(s.Ctx(), originalBundleProposalPool2) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_2, @@ -1346,15 +1345,15 @@ var _ = Describe("logic_end_block_handle_upload_timeout.go", Ordered, func() { _, valaccountFound := s.App().StakersKeeper.GetValaccount(s.Ctx(), 1, i.STAKER_2) Expect(valaccountFound).To(BeFalse()) - _, found = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_2) + _, found = s.App().StakersKeeper.GetValidator(s.Ctx(), i.STAKER_2) Expect(found).To(BeTrue()) - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 1)).To(Equal(200 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 1)).To(Equal(200 * i.KYVE)) // check if next uploader not got slashed slashAmountRatio := s.App().DelegationKeeper.GetTimeoutSlash(s.Ctx()) expectedBalance := 100*i.KYVE - uint64(math.LegacyNewDec(int64(100*i.KYVE)).Mul(slashAmountRatio).TruncateInt64()) - Expect(expectedBalance).To(Equal(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_2, i.STAKER_2))) + Expect(expectedBalance).To(Equal(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_2, i.STAKER_2))) }) }) diff --git a/x/bundles/keeper/logic_round_robin.go b/x/bundles/keeper/logic_round_robin.go index 56366f7e..b34ee522 100644 --- a/x/bundles/keeper/logic_round_robin.go +++ b/x/bundles/keeper/logic_round_robin.go @@ -75,7 +75,7 @@ func (k Keeper) LoadRoundRobinValidatorSet(ctx sdk.Context, poolId uint64) Round newValidators := make(map[string]bool, 0) // Add all current pool validators to the round-robin set for _, address := range k.stakerKeeper.GetAllStakerAddressesOfPool(ctx, poolId) { - delegation := k.delegationKeeper.GetDelegationAmount(ctx, address) + delegation := k.stakerKeeper.GetDelegationAmount(ctx, address) if delegation > 0 { // If a validator has no delegation do not add to the round-robin set. Validator is basically non-existent. vs.Validators = append(vs.Validators, RoundRobinValidatorPower{ diff --git a/x/bundles/keeper/logic_round_robin_test.go b/x/bundles/keeper/logic_round_robin_test.go index eef1b3b4..4212287a 100644 --- a/x/bundles/keeper/logic_round_robin_test.go +++ b/x/bundles/keeper/logic_round_robin_test.go @@ -1,6 +1,7 @@ package keeper_test import ( + "fmt" "sort" "cosmossdk.io/math" @@ -31,10 +32,7 @@ TEST CASES - logic_bundles.go */ func joinDummy(s *i.KeeperTestSuite, index, kyveAmount uint64) { - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.DUMMY[index], - Amount: kyveAmount * i.KYVE, - }) + s.CreateValidator(i.DUMMY[index], fmt.Sprintf("dummy-%d", index), int64(kyveAmount*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.DUMMY[index], @@ -160,30 +158,8 @@ var _ = Describe("logic_round_robin.go", Ordered, func() { Expect(rrvs.Progress[i.DUMMY[2]]).To(Equal(int64(1))) }) - It("Empty round-robin set", func() { - // ARRANGE - joinDummy(s, 0, 0) - joinDummy(s, 1, 0) - joinDummy(s, 2, 0) - - // ACT - rrvs := s.App().BundlesKeeper.LoadRoundRobinValidatorSet(s.Ctx(), 0) - state := rrvs.GetRoundRobinProgress() - - nextProposer := rrvs.NextProposer() - - // ASSERT - Expect(rrvs.Validators).To(HaveLen(0)) - Expect(rrvs.Progress).To(HaveLen(0)) - - Expect(state).To(HaveLen(0)) - - Expect(nextProposer).To(BeEmpty()) - }) - It("Partially filled round-robin set (one staker with 0 delegation)", func() { // ARRANGE - joinDummy(s, 0, 0) joinDummy(s, 1, 10) joinDummy(s, 2, 5) diff --git a/x/bundles/keeper/msg_server_claim_uploader_role_test.go b/x/bundles/keeper/msg_server_claim_uploader_role_test.go index c7227a49..b31ba659 100644 --- a/x/bundles/keeper/msg_server_claim_uploader_role_test.go +++ b/x/bundles/keeper/msg_server_claim_uploader_role_test.go @@ -58,10 +58,7 @@ var _ = Describe("msg_server_claim_uploader_role.go", Ordered, func() { Moniker: "Alice", }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -69,10 +66,7 @@ var _ = Describe("msg_server_claim_uploader_role.go", Ordered, func() { Valaddress: i.VALADDRESS_0_A, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, diff --git a/x/bundles/keeper/msg_server_skip_uploader_role_test.go b/x/bundles/keeper/msg_server_skip_uploader_role_test.go index 5bc09f8c..e35527b3 100644 --- a/x/bundles/keeper/msg_server_skip_uploader_role_test.go +++ b/x/bundles/keeper/msg_server_skip_uploader_role_test.go @@ -62,10 +62,7 @@ var _ = Describe("msg_server_skip_uploader_role.go", Ordered, func() { AmountsPerBundle: i.KYVECoins(1 * i.T_KYVE), }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -73,10 +70,7 @@ var _ = Describe("msg_server_skip_uploader_role.go", Ordered, func() { Valaddress: i.VALADDRESS_0_A, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -90,10 +84,7 @@ var _ = Describe("msg_server_skip_uploader_role.go", Ordered, func() { PoolId: 0, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_2, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_2, "Staker-2", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_2, diff --git a/x/bundles/keeper/msg_server_submit_bundle_proposal_test.go b/x/bundles/keeper/msg_server_submit_bundle_proposal_test.go index b933277a..35ebda23 100644 --- a/x/bundles/keeper/msg_server_submit_bundle_proposal_test.go +++ b/x/bundles/keeper/msg_server_submit_bundle_proposal_test.go @@ -68,10 +68,7 @@ var _ = Describe("msg_server_submit_bundle_proposal.go", Ordered, func() { AmountsPerBundle: i.KYVECoins(1 * i.T_KYVE), }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -79,10 +76,7 @@ var _ = Describe("msg_server_submit_bundle_proposal.go", Ordered, func() { Valaddress: i.VALADDRESS_0_A, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, diff --git a/x/bundles/keeper/msg_server_vote_bundle_proposal_test.go b/x/bundles/keeper/msg_server_vote_bundle_proposal_test.go index e6eb4fb9..d6f25077 100644 --- a/x/bundles/keeper/msg_server_vote_bundle_proposal_test.go +++ b/x/bundles/keeper/msg_server_vote_bundle_proposal_test.go @@ -66,10 +66,7 @@ var _ = Describe("msg_server_vote_bundle_proposal.go", Ordered, func() { AmountsPerBundle: i.KYVECoins(1 * i.T_KYVE), }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -77,10 +74,7 @@ var _ = Describe("msg_server_vote_bundle_proposal.go", Ordered, func() { Valaddress: i.VALADDRESS_0_A, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -214,10 +208,12 @@ var _ = Describe("msg_server_vote_bundle_proposal.go", Ordered, func() { It("Try to vote as not the first voter on bundle proposal", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_2, - Amount: 100 * i.KYVE, - }) + // Set UploadInterval to > 0, because CreateValidator needs to commit one block in order to be bonded. + pool, _ := s.App().PoolKeeper.GetPool(s.Ctx(), 0) + pool.UploadInterval = 1 + s.App().PoolKeeper.SetPool(s.Ctx(), pool) + + s.CreateValidator(i.STAKER_2, "Staker-2", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_2, diff --git a/x/bundles/types/expected_keepers.go b/x/bundles/types/expected_keepers.go index 8acdf99e..cd7b06b7 100644 --- a/x/bundles/types/expected_keepers.go +++ b/x/bundles/types/expected_keepers.go @@ -2,10 +2,10 @@ package types import ( "cosmossdk.io/math" - delegationTypes "github.com/KYVENetwork/chain/x/delegation/types" "github.com/KYVENetwork/chain/x/funders/types" pooltypes "github.com/KYVENetwork/chain/x/pool/types" sdk "github.com/cosmos/cosmos-sdk/types" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ) // AccountKeeper defines the expected account keeper used for simulations (noalias) @@ -28,25 +28,27 @@ type PoolKeeper interface { type StakerKeeper interface { GetAllStakerAddressesOfPool(ctx sdk.Context, poolId uint64) (stakers []string) - GetCommission(ctx sdk.Context, stakerAddress string) math.LegacyDec - IncreaseStakerCommissionRewards(ctx sdk.Context, address string, payerModuleName string, amount sdk.Coins) error AssertValaccountAuthorized(ctx sdk.Context, poolId uint64, stakerAddress string, valaddress string) error - DoesStakerExist(ctx sdk.Context, staker string) bool DoesValaccountExist(ctx sdk.Context, poolId uint64, stakerAddress string) bool LeavePool(ctx sdk.Context, staker string, poolId uint64) IncrementPoints(ctx sdk.Context, poolId uint64, stakerAddress string) (newPoints uint64) ResetPoints(ctx sdk.Context, poolId uint64, stakerAddress string) (previousPoints uint64) + + GetTotalAndHighestDelegationOfPool(ctx sdk.Context, poolId uint64) (totalDelegation, highestDelegation uint64) + GetDelegationAmount(ctx sdk.Context, validator string) uint64 + GetValidator(ctx sdk.Context, staker string) (stakingtypes.Validator, bool) + Slash(ctx sdk.Context, poolId uint64, staker string, slashFraction math.LegacyDec) + PayoutRewards(ctx sdk.Context, staker string, amount sdk.Coins, payerModuleName string) error + PayoutAdditionalCommissionRewards(ctx sdk.Context, validator string, payerModuleName string, amount sdk.Coins) error } type DelegationKeeper interface { - GetDelegationAmount(ctx sdk.Context, staker string) uint64 - GetDelegationOfPool(ctx sdk.Context, poolId uint64) uint64 - GetTotalAndHighestDelegationOfPool(ctx sdk.Context, poolId uint64) (uint64, uint64) - PayoutRewards(ctx sdk.Context, staker string, amount sdk.Coins, payerModuleName string) error - SlashDelegators(ctx sdk.Context, poolId uint64, staker string, slashType delegationTypes.SlashType) + GetTimeoutSlash(ctx sdk.Context) (res math.LegacyDec) + GetUploadSlash(ctx sdk.Context) (res math.LegacyDec) + GetVoteSlash(ctx sdk.Context) (res math.LegacyDec) } type FundersKeeper interface { diff --git a/x/delegation/keeper/keeper.go b/x/delegation/keeper/keeper.go index 7f54a34b..7882fd9b 100644 --- a/x/delegation/keeper/keeper.go +++ b/x/delegation/keeper/keeper.go @@ -25,7 +25,7 @@ type ( accountKeeper types.AccountKeeper bankKeeper util.BankKeeper - distrKeeper types.DistrKeeper + distrKeeper util.DistributionKeeper poolKeeper types.PoolKeeper upgradeKeeper util.UpgradeKeeper stakersKeeper types.StakersKeeper @@ -42,7 +42,7 @@ func NewKeeper( accountKeeper types.AccountKeeper, bankKeeper util.BankKeeper, - distrkeeper types.DistrKeeper, + distrkeeper util.DistributionKeeper, poolKeeper types.PoolKeeper, upgradeKeeper util.UpgradeKeeper, stakersKeeper types.StakersKeeper, diff --git a/x/delegation/keeper/msg_server_delegate_test.go b/x/delegation/keeper/msg_server_delegate_test.go index ce97dca5..9e7e5dfc 100644 --- a/x/delegation/keeper/msg_server_delegate_test.go +++ b/x/delegation/keeper/msg_server_delegate_test.go @@ -8,7 +8,6 @@ import ( i "github.com/KYVENetwork/chain/testutil/integration" "github.com/KYVENetwork/chain/x/delegation/types" - stakerstypes "github.com/KYVENetwork/chain/x/stakers/types" ) /* @@ -37,17 +36,26 @@ var _ = Describe("msg_server_delegate.go", Ordered, func() { CreatePool(s) - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ + s.CreateValidator(i.ALICE, "Alice", int64(aliceSelfDelegation)) + // Shadow delegation inside delegation module (temporary work-around) + s.RunTxDelegatorSuccess(&types.MsgDelegate{ Creator: i.ALICE, + Staker: i.ALICE, Amount: aliceSelfDelegation, }) - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ + s.CreateValidator(i.BOB, "Bob", int64(bobSelfDelegation)) + // Shadow delegation inside delegation module (temporary work-around) + s.RunTxDelegatorSuccess(&types.MsgDelegate{ Creator: i.BOB, + Staker: i.BOB, Amount: bobSelfDelegation, }) - _, stakerFound := s.App().StakersKeeper.GetStaker(s.Ctx(), i.ALICE) + _, stakerFound := s.App().StakersKeeper.GetValidator(s.Ctx(), i.ALICE) + Expect(stakerFound).To(BeTrue()) + + _, stakerFound = s.App().StakersKeeper.GetValidator(s.Ctx(), i.BOB) Expect(stakerFound).To(BeTrue()) s.CommitAfterSeconds(7) @@ -234,70 +242,4 @@ var _ = Describe("msg_server_delegate.go", Ordered, func() { Expect(s.GetBalanceFromAddress(i.DUMMY[0])).To(Equal(900*i.KYVE + 2_500_000_000)) Expect(s.GetBalanceFromModule(types.ModuleName)).To(Equal(600*i.KYVE + 7_500_000_000)) }) - - It("Delegate to validator with 0 $KYVE", func() { - // ARRANGE - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ - Creator: i.CHARLIE, - Amount: 0, - }) - - // ACT - s.RunTxDelegatorSuccess(&types.MsgDelegate{ - Creator: i.DUMMY[1], - Staker: i.CHARLIE, - Amount: 200 * i.KYVE, - }) - - // ASSERT - s.PerformValidityChecks() - - poolModuleBalance := s.GetBalanceFromModule(types.ModuleName) - Expect(poolModuleBalance).To(Equal(200*i.KYVE + aliceSelfDelegation + bobSelfDelegation)) - Expect(s.GetBalanceFromAddress(i.DUMMY[1])).To(Equal(800 * i.KYVE)) - - charlieDelegation := s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.CHARLIE) - Expect(charlieDelegation).To(Equal(200 * i.KYVE)) - }) - - It("Delegate to multiple validators", func() { - // ARRANGE - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ - Creator: i.CHARLIE, - Amount: 0, - }) - - // ACT - s.RunTxDelegatorSuccess(&types.MsgDelegate{ - Creator: i.DUMMY[1], - Staker: i.ALICE, - Amount: 200 * i.KYVE, - }) - s.RunTxDelegatorSuccess(&types.MsgDelegate{ - Creator: i.DUMMY[1], - Staker: i.BOB, - Amount: 200 * i.KYVE, - }) - s.RunTxDelegatorSuccess(&types.MsgDelegate{ - Creator: i.DUMMY[1], - Staker: i.CHARLIE, - Amount: 200 * i.KYVE, - }) - - // ASSERT - s.PerformValidityChecks() - - poolModuleBalance := s.GetBalanceFromModule(types.ModuleName) - Expect(poolModuleBalance).To(Equal(600*i.KYVE + aliceSelfDelegation + bobSelfDelegation)) - Expect(s.GetBalanceFromAddress(i.DUMMY[1])).To(Equal(400 * i.KYVE)) - - aliceDelegation := s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.ALICE) - Expect(aliceDelegation).To(Equal(200*i.KYVE + aliceSelfDelegation)) - - bobDelegation := s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.BOB) - Expect(bobDelegation).To(Equal(200*i.KYVE + bobSelfDelegation)) - - charlieDelegation := s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.CHARLIE) - Expect(charlieDelegation).To(Equal(200 * i.KYVE)) - }) }) diff --git a/x/delegation/keeper/msg_server_redelegate_test.go b/x/delegation/keeper/msg_server_redelegate_test.go index 46f4595d..d1f2b153 100644 --- a/x/delegation/keeper/msg_server_redelegate_test.go +++ b/x/delegation/keeper/msg_server_redelegate_test.go @@ -54,13 +54,19 @@ var _ = Describe("Delegation - Redelegation", Ordered, func() { } s.RunTxPoolSuccess(msg) - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ + s.CreateValidator(i.ALICE, "Alice", int64(aliceSelfDelegation)) + // Shadow delegation inside delegation module (temporary work-around) + s.RunTxSuccess(&types.MsgDelegate{ Creator: i.ALICE, + Staker: i.ALICE, Amount: aliceSelfDelegation, }) - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ + s.CreateValidator(i.BOB, "Bob", int64(bobSelfDelegation)) + // Shadow delegation inside delegation module (temporary work-around) + s.RunTxSuccess(&types.MsgDelegate{ Creator: i.BOB, + Staker: i.BOB, Amount: bobSelfDelegation, }) @@ -71,10 +77,10 @@ var _ = Describe("Delegation - Redelegation", Ordered, func() { Amount: 0, }) - _, stakerFound := s.App().StakersKeeper.GetStaker(s.Ctx(), i.ALICE) + _, stakerFound := s.App().StakersKeeper.GetValidator(s.Ctx(), i.ALICE) Expect(stakerFound).To(BeTrue()) - _, stakerFound = s.App().StakersKeeper.GetStaker(s.Ctx(), i.BOB) + _, stakerFound = s.App().StakersKeeper.GetValidator(s.Ctx(), i.BOB) Expect(stakerFound).To(BeTrue()) s.CommitAfterSeconds(7) @@ -201,8 +207,10 @@ var _ = Describe("Delegation - Redelegation", Ordered, func() { It("Try to redelegate to inactive-staker staker", func() { // Arrange - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ + s.CreateValidator(i.CHARLIE, "Charlie", int64(100*i.KYVE)) + s.RunTxDelegatorSuccess(&types.MsgDelegate{ Creator: i.CHARLIE, + Staker: i.CHARLIE, Amount: 100 * i.KYVE, }) s.RunTxDelegatorSuccess(&types.MsgDelegate{ diff --git a/x/delegation/keeper/msg_server_undelegate_test.go b/x/delegation/keeper/msg_server_undelegate_test.go index 40ffc41a..b47e4a1d 100644 --- a/x/delegation/keeper/msg_server_undelegate_test.go +++ b/x/delegation/keeper/msg_server_undelegate_test.go @@ -41,13 +41,19 @@ var _ = Describe("msg_server_undelegate.go", Ordered, func() { CreatePool(s) - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ + s.CreateValidator(i.ALICE, "Alice", int64(aliceSelfDelegation)) + // Shadow delegation inside delegation module (temporary work-around) + s.RunTxDelegatorSuccess(&types.MsgDelegate{ Creator: i.ALICE, + Staker: i.ALICE, Amount: aliceSelfDelegation, }) - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ + s.CreateValidator(i.BOB, "Bob", int64(bobSelfDelegation)) + // Shadow delegation inside delegation module (temporary work-around) + s.RunTxDelegatorSuccess(&types.MsgDelegate{ Creator: i.BOB, + Staker: i.BOB, Amount: bobSelfDelegation, }) @@ -77,10 +83,10 @@ var _ = Describe("msg_server_undelegate.go", Ordered, func() { Amount: 0, }) - _, aliceFound := s.App().StakersKeeper.GetStaker(s.Ctx(), i.ALICE) + _, aliceFound := s.App().StakersKeeper.GetValidator(s.Ctx(), i.ALICE) Expect(aliceFound).To(BeTrue()) - _, bobFound := s.App().StakersKeeper.GetStaker(s.Ctx(), i.BOB) + _, bobFound := s.App().StakersKeeper.GetValidator(s.Ctx(), i.BOB) Expect(bobFound).To(BeTrue()) s.CommitAfterSeconds(7) diff --git a/x/delegation/keeper/msg_server_withdraw_rewards_test.go b/x/delegation/keeper/msg_server_withdraw_rewards_test.go index f9ca06a2..c032421a 100644 --- a/x/delegation/keeper/msg_server_withdraw_rewards_test.go +++ b/x/delegation/keeper/msg_server_withdraw_rewards_test.go @@ -6,7 +6,6 @@ import ( "github.com/KYVENetwork/chain/x/delegation/types" globalTypes "github.com/KYVENetwork/chain/x/global/types" pooltypes "github.com/KYVENetwork/chain/x/pool/types" - stakerstypes "github.com/KYVENetwork/chain/x/stakers/types" sdk "github.com/cosmos/cosmos-sdk/types" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" @@ -45,20 +44,26 @@ var _ = Describe("msg_server_withdraw_rewards.go", Ordered, func() { CreatePool(s) // Stake - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ + // Shadow staker outside of delegation module (temporary work-around) + s.CreateValidator(i.ALICE, "Alice", int64(1)) + s.RunTxDelegatorSuccess(&types.MsgDelegate{ Creator: i.ALICE, + Staker: i.ALICE, Amount: aliceSelfDelegation, }) - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ + // Shadow staker outside of delegation module (temporary work-around) + s.CreateValidator(i.BOB, "Bob", int64(1)) + s.RunTxDelegatorSuccess(&types.MsgDelegate{ Creator: i.BOB, + Staker: i.BOB, Amount: bobSelfDelegation, }) - _, stakerFound := s.App().StakersKeeper.GetStaker(s.Ctx(), i.ALICE) + _, stakerFound := s.App().StakersKeeper.GetValidator(s.Ctx(), i.ALICE) Expect(stakerFound).To(BeTrue()) - _, stakerFound = s.App().StakersKeeper.GetStaker(s.Ctx(), i.BOB) + _, stakerFound = s.App().StakersKeeper.GetValidator(s.Ctx(), i.BOB) Expect(stakerFound).To(BeTrue()) initialBalanceAlice = s.GetCoinsFromAddress(i.ALICE) diff --git a/x/delegation/types/expected_keepers.go b/x/delegation/types/expected_keepers.go index 4597599b..4fc092c4 100644 --- a/x/delegation/types/expected_keepers.go +++ b/x/delegation/types/expected_keepers.go @@ -3,6 +3,9 @@ package types import ( "context" + distributionTypes "github.com/cosmos/cosmos-sdk/x/distribution/types" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + "cosmossdk.io/x/upgrade/types" stakerstypes "github.com/KYVENetwork/chain/x/stakers/types" sdk "github.com/cosmos/cosmos-sdk/types" @@ -15,6 +18,10 @@ type AccountKeeper interface { type DistrKeeper interface { FundCommunityPool(ctx context.Context, amount sdk.Coins, sender sdk.AccAddress) error + AllocateTokensToValidator(ctx context.Context, val stakingtypes.ValidatorI, tokens sdk.DecCoins) error + GetValidatorAccumulatedCommission(ctx context.Context, val sdk.ValAddress) (commission distributionTypes.ValidatorAccumulatedCommission, err error) + IncrementValidatorPeriod(ctx context.Context, val stakingtypes.ValidatorI) (uint64, error) + CalculateDelegationRewards(ctx context.Context, val stakingtypes.ValidatorI, del stakingtypes.DelegationI, endingPeriod uint64) (rewards sdk.DecCoins, err error) } type PoolKeeper interface { diff --git a/x/global/ante_test.go b/x/global/ante_test.go index ae9e89b9..919801da 100644 --- a/x/global/ante_test.go +++ b/x/global/ante_test.go @@ -3,6 +3,7 @@ package global_test import ( "cosmossdk.io/math" i "github.com/KYVENetwork/chain/testutil/integration" + fundersTypes "github.com/KYVENetwork/chain/x/funders/types" sdk "github.com/cosmos/cosmos-sdk/types" . "github.com/onsi/ginkgo/v2" @@ -303,7 +304,7 @@ var _ = Describe("GasAdjustmentDecorator", Ordered, func() { Amount: 2000, }, { - Type: "/kyve.stakers.v1beta1.MsgCreateStaker", + Type: "/kyve.funders.v1beta1.MsgCreateFunder", Amount: 1000, }, } @@ -368,7 +369,7 @@ var _ = Describe("GasAdjustmentDecorator", Ordered, func() { It("Transaction with multiple adjusted messages.", func() { // ARRANGE firstMsg := stakingTypes.MsgCreateValidator{} - secondMsg := stakersTypes.MsgCreateStaker{} + secondMsg := fundersTypes.MsgCreateFunder{} txBuilder := encodingConfig.TxConfig.NewTxBuilder() _ = txBuilder.SetMsgs(&firstMsg, &secondMsg) @@ -387,7 +388,7 @@ var _ = Describe("GasAdjustmentDecorator", Ordered, func() { It("Transaction with multiple normal and multiple adjusted messages.", func() { // ARRANGE firstMsg := stakersTypes.MsgJoinPool{} - secondMsg := stakersTypes.MsgCreateStaker{} + secondMsg := fundersTypes.MsgCreateFunder{} thirdMsg := stakingTypes.MsgCreateValidator{} txBuilder := encodingConfig.TxConfig.NewTxBuilder() diff --git a/x/global/post_test.go b/x/global/post_test.go index 8d369c53..5ee4fe10 100644 --- a/x/global/post_test.go +++ b/x/global/post_test.go @@ -4,6 +4,7 @@ import ( "cosmossdk.io/math" i "github.com/KYVENetwork/chain/testutil/integration" bundlesTypes "github.com/KYVENetwork/chain/x/bundles/types" + fundersTypes "github.com/KYVENetwork/chain/x/funders/types" stakersTypes "github.com/KYVENetwork/chain/x/stakers/types" sdk "github.com/cosmos/cosmos-sdk/types" authTypes "github.com/cosmos/cosmos-sdk/x/auth/types" @@ -61,7 +62,7 @@ var _ = Describe("RefundFeeDecorator", Ordered, func() { Fraction: math.LegacyZeroDec(), }, { - Type: "/kyve.stakers.v1beta1.MsgCreateStaker", + Type: "/kyve.funders.v1beta1.MsgCreateFunder", Fraction: math.LegacyNewDec(2).QuoInt64(3), }, } @@ -149,7 +150,7 @@ var _ = Describe("RefundFeeDecorator", Ordered, func() { It("Refund 2/3 %", func() { // ARRANGE - msg := stakersTypes.MsgCreateStaker{Creator: i.ALICE} + msg := fundersTypes.MsgCreateFunder{Creator: i.ALICE} txBuilder := encodingConfig.TxConfig.NewTxBuilder() gasLimit := uint64(200_000) txBuilder.SetGasLimit(gasLimit) diff --git a/x/pool/keeper/msg_server_disable_pool_test.go b/x/pool/keeper/msg_server_disable_pool_test.go index d21ace72..ea86398e 100644 --- a/x/pool/keeper/msg_server_disable_pool_test.go +++ b/x/pool/keeper/msg_server_disable_pool_test.go @@ -365,10 +365,7 @@ var _ = Describe("msg_server_disable_pool.go", Ordered, func() { It("Kick out all stakers from pool", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -377,10 +374,7 @@ var _ = Describe("msg_server_disable_pool.go", Ordered, func() { Amount: 0, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -433,10 +427,7 @@ var _ = Describe("msg_server_disable_pool.go", Ordered, func() { It("Kick out all stakers from pool which are still members of another pool", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -452,10 +443,7 @@ var _ = Describe("msg_server_disable_pool.go", Ordered, func() { Amount: 0, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -508,10 +496,7 @@ var _ = Describe("msg_server_disable_pool.go", Ordered, func() { It("Drop current bundle proposal when pool gets disabled", func() { // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -520,10 +505,7 @@ var _ = Describe("msg_server_disable_pool.go", Ordered, func() { Amount: 0, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, diff --git a/x/query/keeper/grpc_account_redelegation_test.go b/x/query/keeper/grpc_account_redelegation_test.go index e9c27aca..9915b7d3 100644 --- a/x/query/keeper/grpc_account_redelegation_test.go +++ b/x/query/keeper/grpc_account_redelegation_test.go @@ -46,15 +46,9 @@ var _ = Describe("grpc_account_redelegation.go", Ordered, func() { pool.Disabled = true s.App().PoolKeeper.SetPool(s.Ctx(), pool) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, diff --git a/x/query/keeper/grpc_query_can_propose_test.go b/x/query/keeper/grpc_query_can_propose_test.go index 8f58eeaf..fb1fc89f 100644 --- a/x/query/keeper/grpc_query_can_propose_test.go +++ b/x/query/keeper/grpc_query_can_propose_test.go @@ -4,13 +4,16 @@ import ( "cosmossdk.io/errors" "cosmossdk.io/math" i "github.com/KYVENetwork/chain/testutil/integration" + "github.com/KYVENetwork/chain/util" bundletypes "github.com/KYVENetwork/chain/x/bundles/types" - delegationtypes "github.com/KYVENetwork/chain/x/delegation/types" funderstypes "github.com/KYVENetwork/chain/x/funders/types" + globalTypes "github.com/KYVENetwork/chain/x/global/types" pooltypes "github.com/KYVENetwork/chain/x/pool/types" querytypes "github.com/KYVENetwork/chain/x/query/types" stakertypes "github.com/KYVENetwork/chain/x/stakers/types" + sdk "github.com/cosmos/cosmos-sdk/types" errorsTypes "github.com/cosmos/cosmos-sdk/types/errors" + stakingTypes "github.com/cosmos/cosmos-sdk/x/staking/types" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" ) @@ -62,10 +65,7 @@ var _ = Describe("grpc_query_can_propose.go", Ordered, func() { AmountsPerBundle: i.KYVECoins(1 * i.T_KYVE), }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -74,10 +74,7 @@ var _ = Describe("grpc_query_can_propose.go", Ordered, func() { Amount: 0, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -241,15 +238,11 @@ var _ = Describe("grpc_query_can_propose.go", Ordered, func() { It("Call can propose if pool has not reached the minimum stake", func() { // ARRANGE - s.RunTxDelegatorSuccess(&delegationtypes.MsgUndelegate{ - Creator: i.STAKER_0, - Staker: i.STAKER_0, - Amount: 50 * i.KYVE, - }) - - // wait for unbonding - s.CommitAfterSeconds(s.App().DelegationKeeper.GetUnbondingDelegationTime(s.Ctx())) - s.CommitAfterSeconds(1) + s.RunTxSuccess(stakingTypes.NewMsgUndelegate( + i.STAKER_0, + util.MustValaddressFromOperatorAddress(i.STAKER_0), + sdk.NewInt64Coin(globalTypes.Denom, int64(50*i.KYVE)), + )) // ACT canPropose, err := s.App().QueryKeeper.CanPropose(s.Ctx(), &querytypes.QueryCanProposeRequest{ diff --git a/x/query/keeper/grpc_query_can_validate_test.go b/x/query/keeper/grpc_query_can_validate_test.go index fd6a4209..e6b46dbd 100644 --- a/x/query/keeper/grpc_query_can_validate_test.go +++ b/x/query/keeper/grpc_query_can_validate_test.go @@ -42,10 +42,7 @@ var _ = Describe("grpc_query_can_validate.go", Ordered, func() { s.RunTxPoolSuccess(msg) s.RunTxPoolSuccess(msg) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -54,10 +51,7 @@ var _ = Describe("grpc_query_can_validate.go", Ordered, func() { Amount: 0, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, diff --git a/x/query/keeper/grpc_query_can_vote_test.go b/x/query/keeper/grpc_query_can_vote_test.go index 0561506e..8bf76d34 100644 --- a/x/query/keeper/grpc_query_can_vote_test.go +++ b/x/query/keeper/grpc_query_can_vote_test.go @@ -4,13 +4,16 @@ import ( "cosmossdk.io/errors" "cosmossdk.io/math" i "github.com/KYVENetwork/chain/testutil/integration" + "github.com/KYVENetwork/chain/util" bundletypes "github.com/KYVENetwork/chain/x/bundles/types" - delegationtypes "github.com/KYVENetwork/chain/x/delegation/types" funderstypes "github.com/KYVENetwork/chain/x/funders/types" + globalTypes "github.com/KYVENetwork/chain/x/global/types" pooltypes "github.com/KYVENetwork/chain/x/pool/types" querytypes "github.com/KYVENetwork/chain/x/query/types" stakertypes "github.com/KYVENetwork/chain/x/stakers/types" + sdk "github.com/cosmos/cosmos-sdk/types" errorsTypes "github.com/cosmos/cosmos-sdk/types/errors" + stakingTypes "github.com/cosmos/cosmos-sdk/x/staking/types" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" ) @@ -63,10 +66,7 @@ var _ = Describe("grpc_query_can_vote.go", Ordered, func() { AmountsPerBundle: i.KYVECoins(1 * i.T_KYVE), }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_0, @@ -75,10 +75,7 @@ var _ = Describe("grpc_query_can_vote.go", Ordered, func() { Amount: 0, }) - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -213,15 +210,11 @@ var _ = Describe("grpc_query_can_vote.go", Ordered, func() { It("Call can vote if pool has not reached the minimum stake", func() { // ARRANGE - s.RunTxDelegatorSuccess(&delegationtypes.MsgUndelegate{ - Creator: i.STAKER_0, - Staker: i.STAKER_0, - Amount: 50 * i.KYVE, - }) - - // wait for unbonding - s.CommitAfterSeconds(s.App().DelegationKeeper.GetUnbondingDelegationTime(s.Ctx())) - s.CommitAfterSeconds(1) + s.RunTxSuccess(stakingTypes.NewMsgUndelegate( + i.STAKER_0, + util.MustValaddressFromOperatorAddress(i.STAKER_0), + sdk.NewInt64Coin(globalTypes.Denom, int64(50*i.KYVE)), + )) // ACT canVote, err := s.App().QueryKeeper.CanVote(s.Ctx(), &querytypes.QueryCanVoteRequest{ diff --git a/x/query/keeper/grpc_query_pool.go b/x/query/keeper/grpc_query_pool.go index 4dec832a..e940b6c0 100644 --- a/x/query/keeper/grpc_query_pool.go +++ b/x/query/keeper/grpc_query_pool.go @@ -57,10 +57,10 @@ func (k Keeper) parsePoolResponse(ctx sdk.Context, pool *poolTypes.Pool) types.P totalSelfDelegation := uint64(0) for _, address := range stakers { - totalSelfDelegation += k.delegationKeeper.GetDelegationAmountOfDelegator(ctx, address, address) + totalSelfDelegation += k.stakerKeeper.GetDelegationAmountOfDelegator(ctx, address, address) } - totalDelegation := k.delegationKeeper.GetDelegationOfPool(ctx, pool.Id) + totalDelegation := k.stakerKeeper.GetDelegationOfPool(ctx, pool.Id) poolAccount := pool.GetPoolAccount() poolBalance := k.bankKeeper.GetBalance(ctx, poolAccount, globalTypes.Denom).Amount.Uint64() diff --git a/x/query/keeper/grpc_query_staker.go b/x/query/keeper/grpc_query_staker.go index d2b03ad6..7dd1fe11 100644 --- a/x/query/keeper/grpc_query_staker.go +++ b/x/query/keeper/grpc_query_staker.go @@ -41,14 +41,7 @@ func (k Keeper) Stakers(c context.Context, req *types.QueryStakersRequest) (*typ var pageRes *query.PageResponse var err error - switch req.Status { - case types.STAKER_STATUS_ACTIVE: - pageRes, err = k.delegationKeeper.GetPaginatedActiveStakersByDelegation(ctx, req.Pagination, accumulator) - case types.STAKER_STATUS_INACTIVE: - pageRes, err = k.delegationKeeper.GetPaginatedInactiveStakersByDelegation(ctx, req.Pagination, accumulator) - default: - pageRes, err = k.delegationKeeper.GetPaginatedStakersByDelegation(ctx, req.Pagination, accumulator) - } + pageRes, err = k.stakerKeeper.GetPaginatedStakersByDelegation(ctx, req.Pagination, accumulator) if err != nil { return nil, err @@ -64,7 +57,7 @@ func (k Keeper) Staker(c context.Context, req *types.QueryStakerRequest) (*types ctx := sdk.UnwrapSDKContext(c) - if !k.stakerKeeper.DoesStakerExist(ctx, req.Address) { + if _, exists := k.stakerKeeper.GetValidator(ctx, req.Address); !exists { return nil, sdkerrors.ErrKeyNotFound } diff --git a/x/query/keeper/grpc_query_stakers_by_pool.go b/x/query/keeper/grpc_query_stakers_by_pool.go index c2e3be80..7d5d7199 100644 --- a/x/query/keeper/grpc_query_stakers_by_pool.go +++ b/x/query/keeper/grpc_query_stakers_by_pool.go @@ -26,7 +26,7 @@ func (k Keeper) StakersByPool(c context.Context, req *types.QueryStakersByPoolRe valaccounts := k.stakerKeeper.GetAllValaccountsOfPool(ctx, req.PoolId) for _, valaccount := range valaccounts { - if k.stakerKeeper.DoesStakerExist(ctx, valaccount.Staker) { + if _, exist := k.stakerKeeper.GetValidator(ctx, valaccount.Staker); exist { data = append(data, types.StakerPoolResponse{ Staker: k.GetFullStaker(ctx, valaccount.Staker), Valaccount: valaccount, diff --git a/x/query/keeper/grpc_query_stakers_by_pool_count.go b/x/query/keeper/grpc_query_stakers_by_pool_count.go index c052c621..3fc2de68 100644 --- a/x/query/keeper/grpc_query_stakers_by_pool_count.go +++ b/x/query/keeper/grpc_query_stakers_by_pool_count.go @@ -4,7 +4,6 @@ import ( "context" "github.com/KYVENetwork/chain/x/query/types" - sdk "github.com/cosmos/cosmos-sdk/types" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) @@ -14,18 +13,7 @@ func (k Keeper) StakersByPoolCount(c context.Context, req *types.QueryStakersByP return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(c) + // ToDo no - op - result, pageRes, err := k.delegationKeeper.GetPaginatedActiveStakersByPoolCountAndDelegation(ctx, req.Pagination) - if err != nil { - return nil, status.Error(codes.Internal, err.Error()) - } - - data := make([]types.FullStaker, len(result)) - - for i := 0; i < len(result); i++ { - data[i] = *k.GetFullStaker(ctx, result[i]) - } - - return &types.QueryStakersByPoolCountResponse{Stakers: data, Pagination: pageRes}, nil + return &types.QueryStakersByPoolCountResponse{}, nil } diff --git a/x/query/keeper/helper.go b/x/query/keeper/helper.go index a7c101ea..637486c1 100644 --- a/x/query/keeper/helper.go +++ b/x/query/keeper/helper.go @@ -8,33 +8,22 @@ import ( ) func (k Keeper) GetFullStaker(ctx sdk.Context, stakerAddress string) *types.FullStaker { - staker, _ := k.stakerKeeper.GetStaker(ctx, stakerAddress) - - commissionChange, found := k.stakerKeeper.GetCommissionChangeEntryByIndex2(ctx, staker.Address) - var commissionChangeEntry *types.CommissionChangeEntry = nil - if found { - commissionChangeEntry = &types.CommissionChangeEntry{ - Commission: commissionChange.Commission, - CreationDate: commissionChange.CreationDate, - } - } + staker, _ := k.stakerKeeper.GetValidator(ctx, stakerAddress) stakerMetadata := types.StakerMetadata{ - Commission: staker.Commission, - Moniker: staker.Moniker, - Website: staker.Website, - Identity: staker.Identity, - SecurityContact: staker.SecurityContact, - Details: staker.Details, - PendingCommissionChange: commissionChangeEntry, - CommissionRewards: staker.CommissionRewards, + Commission: staker.Commission.Rate, + Moniker: staker.GetMoniker(), + Website: staker.Description.Website, + Identity: staker.Description.Identity, + SecurityContact: staker.Description.SecurityContact, + Details: staker.Description.GetDetails(), + PendingCommissionChange: nil, + CommissionRewards: sdk.NewCoins(), } - delegationData, _ := k.delegationKeeper.GetDelegationData(ctx, staker.Address) - var poolMemberships []*types.PoolMembership - for _, valaccount := range k.stakerKeeper.GetValaccountsFromStaker(ctx, staker.Address) { + for _, valaccount := range k.stakerKeeper.GetValaccountsFromStaker(ctx, stakerAddress) { pool, _ := k.poolKeeper.GetPool(ctx, valaccount.PoolId) @@ -51,7 +40,7 @@ func (k Keeper) GetFullStaker(ctx sdk.Context, stakerAddress string) *types.Full InflationShareWeight: pool.InflationShareWeight, UploadInterval: pool.UploadInterval, TotalFunds: k.fundersKeeper.GetTotalActiveFunding(ctx, pool.Id), - TotalDelegation: k.delegationKeeper.GetDelegationOfPool(ctx, pool.Id), + TotalDelegation: k.stakerKeeper.GetDelegationOfPool(ctx, pool.Id), Status: k.GetPoolStatus(ctx, &pool), }, Points: valaccount.Points, @@ -64,26 +53,22 @@ func (k Keeper) GetFullStaker(ctx sdk.Context, stakerAddress string) *types.Full // Iterate all UnbondingDelegation entries to get total delegation unbonding amount selfDelegationUnbonding := uint64(0) - for _, entry := range k.delegationKeeper.GetAllUnbondingDelegationQueueEntriesOfDelegator(ctx, stakerAddress) { - if entry.Staker == stakerAddress { - selfDelegationUnbonding += entry.Amount - } - } + // TODO rework query spec return &types.FullStaker{ - Address: staker.Address, + Address: stakerAddress, Metadata: &stakerMetadata, - SelfDelegation: k.delegationKeeper.GetDelegationAmountOfDelegator(ctx, stakerAddress, stakerAddress), + SelfDelegation: uint64(0), // TODO rework query spec SelfDelegationUnbonding: selfDelegationUnbonding, - TotalDelegation: k.delegationKeeper.GetDelegationAmount(ctx, staker.Address), - DelegatorCount: delegationData.DelegatorCount, + TotalDelegation: staker.Tokens.Uint64(), + DelegatorCount: 0, // TODO rework query spec Pools: poolMemberships, } } func (k Keeper) GetPoolStatus(ctx sdk.Context, pool *pooltypes.Pool) pooltypes.PoolStatus { // Get the total and the highest delegation of a single validator in the pool - totalDelegation, highestDelegation := k.delegationKeeper.GetTotalAndHighestDelegationOfPool(ctx, pool.Id) + totalDelegation, highestDelegation := k.stakerKeeper.GetTotalAndHighestDelegationOfPool(ctx, pool.Id) maxVotingPower := k.poolKeeper.GetMaxVotingPowerPerPool(ctx) maxDelegation := uint64(maxVotingPower.MulInt64(int64(totalDelegation)).TruncateInt64()) diff --git a/x/query/keeper/keeper.go b/x/query/keeper/keeper.go index 04bc4421..8560f6af 100644 --- a/x/query/keeper/keeper.go +++ b/x/query/keeper/keeper.go @@ -3,12 +3,13 @@ package keeper import ( "fmt" + delegationkeeper "github.com/KYVENetwork/chain/x/delegation/keeper" + delegationtypes "github.com/KYVENetwork/chain/x/delegation/types" govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper" fundersKeeper "github.com/KYVENetwork/chain/x/funders/keeper" - delegationkeeper "github.com/KYVENetwork/chain/x/delegation/keeper" globalKeeper "github.com/KYVENetwork/chain/x/global/keeper" poolkeeper "github.com/KYVENetwork/chain/x/pool/keeper" stakerskeeper "github.com/KYVENetwork/chain/x/stakers/keeper" diff --git a/x/stakers/client/cli/tx.go b/x/stakers/client/cli/tx.go index 161d179d..5f108690 100644 --- a/x/stakers/client/cli/tx.go +++ b/x/stakers/client/cli/tx.go @@ -19,12 +19,9 @@ func GetTxCmd() *cobra.Command { RunE: client.ValidateCmd, } - cmd.AddCommand(CmdCreateStaker()) cmd.AddCommand(CmdJoinPool()) cmd.AddCommand(CmdLeavePool()) cmd.AddCommand(CmdUpdateCommission()) - cmd.AddCommand(CmdClaimCommissionRewards()) - cmd.AddCommand(CmdUpdateMetadata()) return cmd } diff --git a/x/stakers/client/cli/tx_claim_commission_rewards.go b/x/stakers/client/cli/tx_claim_commission_rewards.go deleted file mode 100644 index d02d8729..00000000 --- a/x/stakers/client/cli/tx_claim_commission_rewards.go +++ /dev/null @@ -1,44 +0,0 @@ -package cli - -import ( - "github.com/KYVENetwork/chain/x/stakers/types" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/tx" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/spf13/cobra" -) - -func CmdClaimCommissionRewards() *cobra.Command { - cmd := &cobra.Command{ - Use: "claim-commission-rewards [amount]", - Short: "Broadcast message claim-commission-rewards", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) (err error) { - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - argAmount, err := sdk.ParseCoinsNormalized(args[0]) - if err != nil { - return err - } - - msg := types.MsgClaimCommissionRewards{ - Creator: clientCtx.GetFromAddress().String(), - Amounts: argAmount, - } - - if err := msg.ValidateBasic(); err != nil { - return err - } - - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), &msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} diff --git a/x/stakers/client/cli/tx_create_staker.go b/x/stakers/client/cli/tx_create_staker.go deleted file mode 100644 index 4fb785c2..00000000 --- a/x/stakers/client/cli/tx_create_staker.go +++ /dev/null @@ -1,51 +0,0 @@ -package cli - -import ( - "cosmossdk.io/math" - "github.com/KYVENetwork/chain/x/stakers/types" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/tx" - "github.com/spf13/cast" - "github.com/spf13/cobra" -) - -func CmdCreateStaker() *cobra.Command { - cmd := &cobra.Command{ - Use: "create-staker [amount] [commission]", - Short: "Broadcast message create-staker", - Args: cobra.ExactArgs(2), - RunE: func(cmd *cobra.Command, args []string) (err error) { - argAmount, err := cast.ToUint64E(args[0]) - if err != nil { - return err - } - - argCommission, err := math.LegacyNewDecFromStr(args[1]) - if err != nil { - return err - } - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.MsgCreateStaker{ - Creator: clientCtx.GetFromAddress().String(), - Amount: argAmount, - Commission: argCommission, - } - - if err := msg.ValidateBasic(); err != nil { - return err - } - - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), &msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} diff --git a/x/stakers/client/cli/tx_update_metadata.go b/x/stakers/client/cli/tx_update_metadata.go deleted file mode 100644 index bec57ab2..00000000 --- a/x/stakers/client/cli/tx_update_metadata.go +++ /dev/null @@ -1,42 +0,0 @@ -package cli - -import ( - "github.com/KYVENetwork/chain/x/stakers/types" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/tx" - "github.com/spf13/cobra" -) - -func CmdUpdateMetadata() *cobra.Command { - cmd := &cobra.Command{ - Use: "update-metadata [moniker] [website] [identity] [security_contact] [details]", - Short: "Broadcast message update-metadata", - Args: cobra.ExactArgs(5), - RunE: func(cmd *cobra.Command, args []string) (err error) { - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.MsgUpdateMetadata{ - Creator: clientCtx.GetFromAddress().String(), - Moniker: args[0], - Website: args[1], - Identity: args[2], - SecurityContact: args[3], - Details: args[4], - } - - if err := msg.ValidateBasic(); err != nil { - return err - } - - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), &msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} diff --git a/x/stakers/genesis.go b/x/stakers/genesis.go index ba384c7d..c134b4e8 100644 --- a/x/stakers/genesis.go +++ b/x/stakers/genesis.go @@ -11,10 +11,6 @@ import ( func InitGenesis(ctx sdk.Context, k *keeper.Keeper, genState types.GenesisState) { k.SetParams(ctx, genState.Params) - for _, staker := range genState.StakerList { - k.AppendStaker(ctx, staker) - } - for _, entry := range genState.ValaccountList { k.SetValaccount(ctx, entry) k.AddOneToCount(ctx, entry.PoolId) @@ -38,8 +34,6 @@ func ExportGenesis(ctx sdk.Context, k *keeper.Keeper) *types.GenesisState { genesis := types.DefaultGenesis() genesis.Params = k.GetParams(ctx) - genesis.StakerList = k.GetAllStakers(ctx) - genesis.ValaccountList = k.GetAllValaccounts(ctx) genesis.CommissionChangeEntries = k.GetAllCommissionChangeEntries(ctx) diff --git a/x/stakers/keeper/exported_functions.go b/x/stakers/keeper/exported_functions.go index c661b452..66da58c8 100644 --- a/x/stakers/keeper/exported_functions.go +++ b/x/stakers/keeper/exported_functions.go @@ -3,11 +3,14 @@ package keeper import ( "context" + "cosmossdk.io/errors" "cosmossdk.io/math" + "github.com/KYVENetwork/chain/util" sdk "github.com/cosmos/cosmos-sdk/types" - - // Gov - govV1Types "github.com/cosmos/cosmos-sdk/x/gov/types/v1" + sdkErrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/cosmos/cosmos-sdk/types/query" + distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" + stakingTypes "github.com/cosmos/cosmos-sdk/x/staking/types" // Stakers "github.com/KYVENetwork/chain/x/stakers/types" ) @@ -39,10 +42,18 @@ func (k Keeper) GetAllStakerAddressesOfPool(ctx sdk.Context, poolId uint64) (sta return stakers } -// GetCommission returns the commission of a staker as a parsed math.LegacyDec -func (k Keeper) GetCommission(ctx sdk.Context, stakerAddress string) math.LegacyDec { - staker, _ := k.GetStaker(ctx, stakerAddress) - return staker.Commission +func (k Keeper) GetPaginatedStakersByDelegation(ctx sdk.Context, pagination *query.PageRequest, accumulator func(staker string, accumulate bool) bool) (*query.PageResponse, error) { + validators, err := k.stakingKeeper.GetBondedValidatorsByPower(ctx) + if err != nil { + return nil, err + } + + for _, validator := range validators { + accumulator(util.MustAccountAddressFromValAddress(validator.OperatorAddress), true) + } + + res := query.PageResponse{} + return &res, nil } // AssertValaccountAuthorized checks if the given `valaddress` is allowed to vote in pool @@ -69,6 +80,133 @@ func (k Keeper) GetActiveStakers(ctx sdk.Context) []string { return k.getAllActiveStakers(ctx) } +// GetDelegationOfPool returns the amount of how many ukyve users have delegated +// to stakers that are participating in the given pool +func (k Keeper) GetDelegationOfPool(ctx sdk.Context, poolId uint64) uint64 { + totalDelegation := uint64(0) + for _, address := range k.GetAllStakerAddressesOfPool(ctx, poolId) { + totalDelegation += k.GetDelegationAmount(ctx, address) + } + return totalDelegation +} + +// GetTotalAndHighestDelegationOfPool iterates all validators of a given pool and returns the stake of the validator +// with the highest stake and the sum of all stakes. +func (k Keeper) GetTotalAndHighestDelegationOfPool(ctx sdk.Context, poolId uint64) (totalDelegation, highestDelegation uint64) { + for _, address := range k.GetAllStakerAddressesOfPool(ctx, poolId) { + delegation := k.GetDelegationAmount(ctx, address) + totalDelegation += delegation + + if delegation > highestDelegation { + highestDelegation = delegation + } + } + + return totalDelegation, highestDelegation +} + +// GetDelegationAmount returns the stake of a given validator in ukyve +func (k Keeper) GetDelegationAmount(ctx sdk.Context, validator string) uint64 { + validatorAddress, err := sdk.ValAddressFromBech32(util.MustValaddressFromOperatorAddress(validator)) + if err != nil { + return 0 + } + chainValidator, err := k.stakingKeeper.GetValidator(ctx, validatorAddress) + if err != nil { + return 0 + } + + return chainValidator.GetBondedTokens().Uint64() +} + +// GetValidator returns the Cosmos-validator for a given kyve-address. +func (k Keeper) GetValidator(ctx sdk.Context, staker string) (stakingTypes.Validator, bool) { + valAddress, err := sdk.ValAddressFromBech32(util.MustValaddressFromOperatorAddress(staker)) + if err != nil { + return stakingTypes.Validator{}, false + } + validator, err := k.stakingKeeper.GetValidator(ctx, valAddress) + if err != nil { + return stakingTypes.Validator{}, false + } + + return validator, true +} + +// GetOutstandingCommissionRewards returns the outstanding commission rewards for a given validator +func (k Keeper) GetOutstandingCommissionRewards(ctx sdk.Context, staker string) sdk.Coins { + valAddress, err := sdk.ValAddressFromBech32(util.MustValaddressFromOperatorAddress(staker)) + if err != nil { + return sdk.NewCoins() + } + + commission, err := k.distKeeper.GetValidatorAccumulatedCommission(ctx, valAddress) + if err != nil { + return sdk.NewCoins() + } + + return util.TruncateDecCoins(sdk.NewDecCoins(commission.Commission...)) +} + +// GetOutstandingRewards returns the outstanding delegation rewards for a given delegator +func (k Keeper) GetOutstandingRewards(orgCtx sdk.Context, staker string, delegator string) sdk.Coins { + valAdr, err := sdk.ValAddressFromBech32(util.MustValaddressFromOperatorAddress(staker)) + if err != nil { + return sdk.NewCoins() + } + + delAdr, err := sdk.AccAddressFromBech32(delegator) + if err != nil { + return sdk.NewCoins() + } + + ctx, _ := orgCtx.CacheContext() + + del, err := k.stakingKeeper.Delegation(ctx, delAdr, valAdr) + if err != nil { + return sdk.NewCoins() + } + + val, found := k.GetValidator(ctx, staker) + if !found { + return sdk.NewCoins() + } + + endingPeriod, err := k.distKeeper.IncrementValidatorPeriod(ctx, val) + if err != nil { + return sdk.NewCoins() + } + + rewards, err := k.distKeeper.CalculateDelegationRewards(ctx, val, del, endingPeriod) + if err != nil { + return sdk.NewCoins() + } + + return util.TruncateDecCoins(rewards) +} + +// Slash reduces the delegation of all delegators of `staker` by fraction. The slash itself is handled by the cosmos-sdk +func (k Keeper) Slash(ctx sdk.Context, poolId uint64, staker string, slashFraction math.LegacyDec) { + validator, found := k.GetValidator(ctx, staker) + if !found { + return + } + + consAddrBytes, _ := validator.GetConsAddr() + + amount, err := k.stakingKeeper.Slash(ctx, consAddrBytes, ctx.BlockHeight(), validator.GetConsensusPower(math.NewInt(1000000)), slashFraction) + if err != nil { + return + } + + _ = ctx.EventManager().EmitTypedEvent(&types.EventSlash{ + PoolId: poolId, + Staker: staker, + Amount: amount.Uint64(), + // SlashType: slashType, TODO add slash type, once migrated away from delegation module + }) +} + // GOVERNANCE - BONDING // The next functions are used in our custom fork of the cosmos-sdk // which includes protocol staking into the governance. @@ -78,16 +216,7 @@ func (k Keeper) GetActiveStakers(ctx sdk.Context) []string { // I.e. the sum of all delegation of all stakers that are currently participating // in at least one pool func (k Keeper) TotalBondedTokens(ctx context.Context) math.Int { - sdkCtx := sdk.UnwrapSDKContext(ctx) - bondedTokens := math.ZeroInt() - - for _, validator := range k.getAllActiveStakers(sdkCtx) { - delegation := int64(k.delegationKeeper.GetDelegationAmount(sdkCtx, validator)) - - bondedTokens = bondedTokens.Add(math.NewInt(delegation)) - } - - return bondedTokens + return math.ZeroInt() } // GetActiveValidators returns all protocol-node information which @@ -95,38 +224,119 @@ func (k Keeper) TotalBondedTokens(ctx context.Context) math.Int { // The interface needs to correspond to github.com/cosmos/cosmos-sdk/x/gov/types/v1.ValidatorGovInfo // But as there is no direct dependency in the cosmos-sdk-fork this value is passed as an interface{} func (k Keeper) GetActiveValidators(ctx context.Context) (validators []interface{}) { - sdkCtx := sdk.UnwrapSDKContext(ctx) - for _, address := range k.getAllActiveStakers(sdkCtx) { - delegation := int64(k.delegationKeeper.GetDelegationAmount(sdkCtx, address)) - - validator := govV1Types.NewValidatorGovInfo( - sdk.ValAddress(sdk.MustAccAddressFromBech32(address)), - math.NewInt(delegation), - math.LegacyNewDec(delegation), - math.LegacyZeroDec(), - govV1Types.WeightedVoteOptions{}, - ) - - validators = append(validators, validator) - } - return } // GetDelegations returns the address and the delegation amount of all active protocol-stakers the // delegator as delegated to. This is used to calculate the vote weight each delegator has. func (k Keeper) GetDelegations(ctx context.Context, delegator string) (validators []string, amounts []math.LegacyDec) { - sdkCtx := sdk.UnwrapSDKContext(ctx) - for _, validator := range k.delegationKeeper.GetStakersByDelegator(sdkCtx, delegator) { - if k.isActiveStaker(sdkCtx, validator) { - validators = append(validators, validator) - - amounts = append( - amounts, - math.LegacyNewDec(int64(k.delegationKeeper.GetDelegationAmountOfDelegator(sdkCtx, validator, delegator))), - ) - } + return +} + +func (k Keeper) DoesStakerExist(ctx sdk.Context, staker string) bool { + // ToDo remove after Delegation module got deleted + _, found := k.GetValidator(ctx, staker) + return found +} + +// PayoutRewards transfers `amount` from the `payerModuleName`-module to the delegation module. +// It then awards these tokens internally to all delegators of staker `staker`. +// Delegators can then receive these rewards if they call the `withdraw`-transaction. +// If the staker has no delegators or the module to module transfer fails, the method fails and +// returns an error. +func (k Keeper) PayoutRewards(ctx sdk.Context, staker string, amount sdk.Coins, payerModuleName string) error { + // Assert there is an amount + if amount.Empty() { + return nil } - return + validator, _ := k.GetValidator(ctx, staker) + + err := k.distKeeper.AllocateTokensToValidator(ctx, validator, sdk.NewDecCoinsFromCoins(amount...)) + if err != nil { + return err + } + + // Transfer tokens to the delegation module + if err := k.bankKeeper.SendCoinsFromModuleToModule(ctx, payerModuleName, distrtypes.ModuleName, amount); err != nil { + return err + } + + return nil +} + +// PayoutAdditionalCommissionRewards pays out some additional tokens to the validator. +func (k Keeper) PayoutAdditionalCommissionRewards(ctx sdk.Context, validator string, payerModuleName string, amount sdk.Coins) error { + // Assert there is an amount + if amount.Empty() { + return nil + } + + // Assert the staker exists + if _, found := k.GetValidator(ctx, validator); !found { + return errors.Wrapf(sdkErrors.ErrNotFound, "staker does not exist") + } + + // transfer funds from pool to distribution module + if err := k.bankKeeper.SendCoinsFromModuleToModule(ctx, payerModuleName, distrtypes.ModuleName, amount); err != nil { + return err + } + + valAcc, err := sdk.ValAddressFromBech32(util.MustValaddressFromOperatorAddress(validator)) + if err != nil { + return err + } + + ctx.EventManager().EmitEvent( + sdk.NewEvent( + distrtypes.EventTypeCommission, + sdk.NewAttribute(sdk.AttributeKeyAmount, amount.String()), + sdk.NewAttribute(distrtypes.AttributeKeyValidator, util.MustValaddressFromOperatorAddress(validator)), + ), + ) + + currentCommission, err := k.distKeeper.GetValidatorAccumulatedCommission(ctx, valAcc) + if err != nil { + return err + } + + currentCommission.Commission = currentCommission.Commission.Add(sdk.NewDecCoinsFromCoins(amount...)...) + err = k.distKeeper.SetValidatorAccumulatedCommission(ctx, valAcc, currentCommission) + if err != nil { + return err + } + + outstanding, err := k.distKeeper.GetValidatorOutstandingRewards(ctx, valAcc) + if err != nil { + return err + } + + outstanding.Rewards = outstanding.Rewards.Add(sdk.NewDecCoinsFromCoins(amount...)...) + err = k.distKeeper.SetValidatorOutstandingRewards(ctx, valAcc, outstanding) + if err != nil { + return err + } + + return nil +} + +func (k Keeper) GetDelegationAmountOfDelegator(ctx sdk.Context, validator, delegator string) uint64 { + address, err := sdk.AccAddressFromBech32(delegator) + if err != nil { + panic(err) + } + + valAddress, err := sdk.ValAddressFromBech32(util.MustValaddressFromOperatorAddress(validator)) + if err != nil { + panic(err) + } + + delegation, err := k.stakingKeeper.Delegation(ctx, address, valAddress) + if err != nil { + return 0 + } + + val, _ := k.stakingKeeper.GetValidator(ctx, valAddress) + + return uint64(val.TokensFromSharesTruncated(delegation.GetShares()).RoundInt64()) } diff --git a/x/stakers/keeper/exported_functions_test.go b/x/stakers/keeper/exported_functions_test.go deleted file mode 100644 index 0dd34728..00000000 --- a/x/stakers/keeper/exported_functions_test.go +++ /dev/null @@ -1,179 +0,0 @@ -package keeper_test - -import ( - "strconv" - - "cosmossdk.io/math" - - "github.com/cosmos/cosmos-sdk/x/gov/keeper" - - pooltypes "github.com/KYVENetwork/chain/x/pool/types" - - i "github.com/KYVENetwork/chain/testutil/integration" - sdk "github.com/cosmos/cosmos-sdk/types" - - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - - // Delegation - delegationTypes "github.com/KYVENetwork/chain/x/delegation/types" - // Gov - govTypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1" - - // Stakers - stakersTypes "github.com/KYVENetwork/chain/x/stakers/types" -) - -/* - -TEST CASES - Protocol Governance Voting - -* Protocol validator doesn't vote, delegator votes. -* Protocol validator votes, delegator doesn't. -* Protocol validator votes, delegator votes the same. -* Protocol validator votes, delegator votes different. - -*/ - -var _ = Describe("Protocol Governance Voting", Ordered, func() { - s := i.NewCleanChain() - - parsedAliceAddr := sdk.MustAccAddressFromBech32(i.ALICE) - parsedBobAddr := sdk.MustAccAddressFromBech32(i.BOB) - - validatorAmount := 500 * i.KYVE - delegatorAmount := 250 * i.KYVE - - BeforeEach(func() { - s = i.NewCleanChain() - - // Create a test proposal. - proposeTx := CreateTestProposal(s.Ctx(), s.App().GovKeeper) - _ = s.RunTxSuccess(proposeTx) - - // Initialise a protocol validator. - createTx := &stakersTypes.MsgCreateStaker{ - Creator: i.ALICE, - Amount: validatorAmount, - } - _ = s.RunTxSuccess(createTx) - - // Create and join a pool. - gov := s.App().GovKeeper.GetGovernanceAccount(s.Ctx()).GetAddress().String() - msg := &pooltypes.MsgCreatePool{ - Authority: gov, - UploadInterval: 60, - MaxBundleSize: 100, - InflationShareWeight: math.LegacyZeroDec(), - Binaries: "{}", - } - s.RunTxPoolSuccess(msg) - - joinTx := &stakersTypes.MsgJoinPool{ - Creator: i.ALICE, - PoolId: 0, - Valaddress: i.DUMMY[0], - Amount: validatorAmount, - } - _ = s.RunTxSuccess(joinTx) - - // Delegate to protocol validator. - delegateTx := &delegationTypes.MsgDelegate{ - Creator: i.BOB, - Staker: i.ALICE, - Amount: delegatorAmount, - } - _ = s.RunTxSuccess(delegateTx) - - Expect(s.App().StakersKeeper.TotalBondedTokens(s.Ctx()).Uint64()).To(Equal(delegatorAmount + validatorAmount)) - }) - - AfterEach(func() { - s.PerformValidityChecks() - }) - - It("Protocol validator doesn't vote, delegator votes.", func() { - // ARRANGE - delegatorTx := govTypes.NewMsgVote( - parsedBobAddr, 1, govTypes.VoteOption_VOTE_OPTION_YES, "", - ) - - // ACT - _ = s.RunTxSuccess(delegatorTx) - - // ASSERT - proposal, _ := s.App().GovKeeper.Proposals.Get(s.Ctx(), 1) - _, _, tally, _ := s.App().GovKeeper.Tally(s.Ctx(), proposal) - - Expect(tally.YesCount).To(Equal(strconv.Itoa(int(delegatorAmount)))) - }) - - It("Protocol validator votes, delegator doesn't.", func() { - // ARRANGE - validatorTx := govTypes.NewMsgVote( - parsedAliceAddr, 1, govTypes.VoteOption_VOTE_OPTION_YES, "", - ) - - // ACT - _ = s.RunTxSuccess(validatorTx) - - // ASSERT - proposal, _ := s.App().GovKeeper.Proposals.Get(s.Ctx(), 1) - _, _, tally, _ := s.App().GovKeeper.Tally(s.Ctx(), proposal) - - Expect(tally.YesCount).To(Equal(strconv.Itoa(int(delegatorAmount + validatorAmount)))) - }) - - It("Protocol validator votes, delegator votes the same.", func() { - // ARRANGE - validatorTx := govTypes.NewMsgVote( - parsedAliceAddr, 1, govTypes.VoteOption_VOTE_OPTION_YES, "", - ) - - delegatorTx := govTypes.NewMsgVote( - parsedBobAddr, 1, govTypes.VoteOption_VOTE_OPTION_YES, "", - ) - - // ACT - _ = s.RunTxSuccess(validatorTx) - _ = s.RunTxSuccess(delegatorTx) - - // ASSERT - proposal, _ := s.App().GovKeeper.Proposals.Get(s.Ctx(), 1) - _, _, tally, _ := s.App().GovKeeper.Tally(s.Ctx(), proposal) - - Expect(tally.YesCount).To(Equal(strconv.Itoa(int(validatorAmount + delegatorAmount)))) - }) - - It("Protocol validator votes, delegator votes different.", func() { - // ARRANGE - validatorTx := govTypes.NewMsgVote( - parsedAliceAddr, 1, govTypes.VoteOption_VOTE_OPTION_YES, "", - ) - - delegatorTx := govTypes.NewMsgVote( - parsedBobAddr, 1, govTypes.VoteOption_VOTE_OPTION_NO, "", - ) - - // ACT - _ = s.RunTxSuccess(validatorTx) - _ = s.RunTxSuccess(delegatorTx) - - // ASSERT - proposal, _ := s.App().GovKeeper.Proposals.Get(s.Ctx(), 1) - _, _, tally, _ := s.App().GovKeeper.Tally(s.Ctx(), proposal) - - Expect(tally.YesCount).To(Equal(strconv.Itoa(int(validatorAmount)))) - Expect(tally.NoCount).To(Equal(strconv.Itoa(int(delegatorAmount)))) - }) -}) - -func CreateTestProposal(ctx sdk.Context, govKeeper *keeper.Keeper) sdk.Msg { - params, _ := govKeeper.Params.Get(ctx) - - proposal, _ := govTypes.NewMsgSubmitProposal( - []sdk.Msg{}, params.MinDeposit, i.DUMMY[0], "metadata", "title", "summary", false, - ) - - return proposal -} diff --git a/x/stakers/keeper/getters_staker.go b/x/stakers/keeper/getters_staker.go index eeee3623..9cc09a75 100644 --- a/x/stakers/keeper/getters_staker.go +++ b/x/stakers/keeper/getters_staker.go @@ -3,7 +3,8 @@ package keeper import ( "encoding/binary" - "cosmossdk.io/math" + stakingTypes "github.com/cosmos/cosmos-sdk/x/staking/types" + storeTypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/runtime" @@ -17,49 +18,10 @@ import ( "google.golang.org/grpc/status" ) -// UpdateStakerMetadata ... -func (k Keeper) UpdateStakerMetadata( - ctx sdk.Context, - address string, - moniker string, - website string, - identity string, - securityContact string, - details string, -) { - staker, found := k.GetStaker(ctx, address) - if found { - staker.Moniker = moniker - staker.Website = website - staker.Identity = identity - staker.SecurityContact = securityContact - staker.Details = details - k.setStaker(ctx, staker) - } -} - -// updateStakerCommissionRewards ... -func (k Keeper) updateStakerCommissionRewards(ctx sdk.Context, address string, amount sdk.Coins) { - staker, found := k.GetStaker(ctx, address) - if found { - staker.CommissionRewards = staker.CommissionRewards.Add(amount...) - k.setStaker(ctx, staker) - } -} - -// UpdateStakerCommission ... -func (k Keeper) UpdateStakerCommission(ctx sdk.Context, address string, commission math.LegacyDec) { - staker, found := k.GetStaker(ctx, address) - if found { - staker.Commission = commission - k.setStaker(ctx, staker) - } -} - // AddValaccountToPool adds a valaccount to a pool. // If valaccount already belongs to pool, nothing happens. func (k Keeper) AddValaccountToPool(ctx sdk.Context, poolId uint64, stakerAddress string, valaddress string) { - if k.DoesStakerExist(ctx, stakerAddress) { + if _, validatorExists := k.GetValidator(ctx, stakerAddress); validatorExists { if !k.DoesValaccountExist(ctx, poolId, stakerAddress) { k.SetValaccount(ctx, types.Valaccount{ PoolId: poolId, @@ -87,46 +49,25 @@ func (k Keeper) RemoveValaccountFromPool(ctx sdk.Context, poolId uint64, stakerA } } -func (k Keeper) AppendStaker(ctx sdk.Context, staker types.Staker) { - k.setStaker(ctx, staker) -} - // ############################# // # Raw KV-Store operations # // ############################# -func (k Keeper) getAllStakersOfPool(ctx sdk.Context, poolId uint64) []types.Staker { +func (k Keeper) getAllStakersOfPool(ctx sdk.Context, poolId uint64) []stakingTypes.Validator { valaccounts := k.GetAllValaccountsOfPool(ctx, poolId) - stakers := make([]types.Staker, 0) + stakers := make([]stakingTypes.Validator, 0) for _, valaccount := range valaccounts { - staker, _ := k.GetStaker(ctx, valaccount.Staker) + staker, _ := k.GetValidator(ctx, valaccount.Staker) stakers = append(stakers, staker) } return stakers } -// setStaker set a specific staker in the store from its index -func (k Keeper) setStaker(ctx sdk.Context, staker types.Staker) { - storeAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) - store := prefix.NewStore(storeAdapter, types.StakerKeyPrefix) - b := k.cdc.MustMarshal(&staker) - store.Set(types.StakerKey( - staker.Address, - ), b) -} - -// DoesStakerExist returns true if the staker exists -func (k Keeper) DoesStakerExist(ctx sdk.Context, staker string) bool { - storeAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) - store := prefix.NewStore(storeAdapter, types.StakerKeyPrefix) - return store.Has(types.StakerKey(staker)) -} - -// GetStaker returns a staker from its index -func (k Keeper) GetStaker( +// GetLegacyStaker returns a staker from its index +func (k Keeper) GetLegacyStaker( ctx sdk.Context, staker string, ) (val types.Staker, found bool) { @@ -144,7 +85,7 @@ func (k Keeper) GetStaker( return val, true } -func (k Keeper) GetPaginatedStakerQuery( +func (k Keeper) GetPaginatedLegacyStakerQuery( ctx sdk.Context, pagination *query.PageRequest, accumulator func(staker types.Staker), @@ -175,7 +116,7 @@ func (k Keeper) GetPaginatedStakerQuery( } // GetAllStakers returns all staker -func (k Keeper) GetAllStakers(ctx sdk.Context) (list []types.Staker) { +func (k Keeper) GetAllLegacyStakers(ctx sdk.Context) (list []types.Staker) { storeAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) store := prefix.NewStore(storeAdapter, types.StakerKeyPrefix) iterator := storeTypes.KVStorePrefixIterator(store, []byte{}) @@ -232,12 +173,6 @@ func (k Keeper) setStat(ctx sdk.Context, poolId uint64, statType types.STAKER_ST // ############################# // Active Staker stores all stakers that are at least in one pool -func (k Keeper) isActiveStaker(ctx sdk.Context, staker string) bool { - storeAdapter := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) - store := prefix.NewStore(storeAdapter, types.ActiveStakerIndex) - return store.Has(types.ActiveStakerKeyIndex(staker)) -} - // AddActiveStaker increases the active-staker-count of the given staker by one. // The amount tracks the number of pools the staker is in. It also allows // to determine that a given staker is at least in one pool. diff --git a/x/stakers/keeper/getters_valaccount.go b/x/stakers/keeper/getters_valaccount.go index ac461a5b..90595e30 100644 --- a/x/stakers/keeper/getters_valaccount.go +++ b/x/stakers/keeper/getters_valaccount.go @@ -62,7 +62,7 @@ func (k Keeper) GetValaccountsFromStaker(ctx sdk.Context, stakerAddress string) defer iterator.Close() for ; iterator.Valid(); iterator.Next() { - poolId := binary.BigEndian.Uint64(iterator.Key()[43 : 43+8]) + poolId := binary.BigEndian.Uint64(iterator.Key()[len(stakerAddress) : len(stakerAddress)+8]) valaccount, valaccountFound := k.GetValaccount(ctx, poolId, stakerAddress) if valaccountFound { diff --git a/x/stakers/keeper/keeper.go b/x/stakers/keeper/keeper.go index 6a850686..3efca1a6 100644 --- a/x/stakers/keeper/keeper.go +++ b/x/stakers/keeper/keeper.go @@ -1,16 +1,17 @@ package keeper import ( + "context" "fmt" + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" "cosmossdk.io/core/store" - "github.com/KYVENetwork/chain/util" - delegationKeeper "github.com/KYVENetwork/chain/x/delegation/keeper" - "cosmossdk.io/log" + "github.com/KYVENetwork/chain/util" "github.com/KYVENetwork/chain/x/stakers/types" "github.com/cosmos/cosmos-sdk/codec" ) @@ -24,12 +25,10 @@ type ( authority string - accountKeeper util.AccountKeeper - bankKeeper util.BankKeeper - distrkeeper util.DistributionKeeper - poolKeeper types.PoolKeeper - upgradeKeeper util.UpgradeKeeper - delegationKeeper delegationKeeper.Keeper + bankKeeper util.BankKeeper + poolKeeper types.PoolKeeper + stakingKeeper util.StakingKeeper + distKeeper util.DistributionKeeper } ) @@ -41,13 +40,12 @@ func NewKeeper( authority string, - accountKeeper util.AccountKeeper, bankKeeper util.BankKeeper, - distrkeeper util.DistributionKeeper, poolKeeper types.PoolKeeper, - upgradeKeeper util.UpgradeKeeper, + stakingKeeper util.StakingKeeper, + distributionKeeper util.DistributionKeeper, ) *Keeper { - return &Keeper{ + k := &Keeper{ cdc: cdc, storeService: storeService, memService: memService, @@ -55,23 +53,65 @@ func NewKeeper( authority: authority, - accountKeeper: accountKeeper, bankKeeper: bankKeeper, - distrkeeper: distrkeeper, poolKeeper: poolKeeper, - upgradeKeeper: upgradeKeeper, + stakingKeeper: stakingKeeper, + distKeeper: distributionKeeper, } -} -func SetDelegationKeeper(k *Keeper, delegationKeeper delegationKeeper.Keeper) { - k.delegationKeeper = delegationKeeper + return k } func (k Keeper) Logger() log.Logger { return k.logger.With("module", fmt.Sprintf("x/%s", types.ModuleName)) } -// TODO: remove after migration -func (k Keeper) Migration_SetStaker(ctx sdk.Context, staker types.Staker) { - k.setStaker(ctx, staker) +// HOOKS + +func (k Keeper) AfterValidatorCreated(ctx context.Context, valAddr sdk.ValAddress) error { + return nil +} + +func (k Keeper) BeforeValidatorModified(ctx context.Context, valAddr sdk.ValAddress) error { + return nil +} + +func (k Keeper) AfterValidatorRemoved(ctx context.Context, consAddr sdk.ConsAddress, valAddr sdk.ValAddress) error { + return nil +} + +func (k Keeper) AfterValidatorBonded(ctx context.Context, consAddr sdk.ConsAddress, valAddr sdk.ValAddress) error { + return nil +} + +func (k Keeper) AfterValidatorBeginUnbonding(goCtx context.Context, consAddr sdk.ConsAddress, valAddr sdk.ValAddress) error { + ctx := sdk.UnwrapSDKContext(goCtx) + for _, v := range k.GetValaccountsFromStaker(ctx, valAddr.String()) { + k.LeavePool(ctx, v.Staker, v.PoolId) + } + return nil +} + +func (k Keeper) BeforeDelegationCreated(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) error { + return nil +} + +func (k Keeper) BeforeDelegationSharesModified(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) error { + return nil +} + +func (k Keeper) BeforeDelegationRemoved(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) error { + return nil +} + +func (k Keeper) AfterDelegationModified(ctx context.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) error { + return nil +} + +func (k Keeper) BeforeValidatorSlashed(goCtx context.Context, valAddr sdk.ValAddress, fraction math.LegacyDec) error { + return nil +} + +func (k Keeper) AfterUnbondingInitiated(ctx context.Context, id uint64) error { + return nil } diff --git a/x/stakers/keeper/logic_commission.go b/x/stakers/keeper/logic_commission.go index 2e567d85..7071ce9a 100644 --- a/x/stakers/keeper/logic_commission.go +++ b/x/stakers/keeper/logic_commission.go @@ -6,11 +6,11 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ) -// orderNewCommissionChange inserts a new change entry into the queue. +// OrderNewCommissionChange inserts a new change entry into the queue. // The queue is checked in every endBlock and when the commissionChangeTime // is over the new commission will be applied to the user. // If another entry is currently in the queue it will be removed. -func (k Keeper) orderNewCommissionChange(ctx sdk.Context, staker string, commission math.LegacyDec) { +func (k Keeper) OrderNewCommissionChange(ctx sdk.Context, staker string, commission math.LegacyDec) { // Remove existing queue entry queueEntry, found := k.GetCommissionChangeEntryByIndex2(ctx, staker) if found { @@ -44,7 +44,7 @@ func (k Keeper) ProcessCommissionChangeQueue(ctx sdk.Context) { k.RemoveCommissionChangeEntry(ctx, &queueEntry) - k.UpdateStakerCommission(ctx, queueEntry.Staker, queueEntry.Commission) + // TODO no-op _ = ctx.EventManager().EmitTypedEvent(&types.EventUpdateCommission{ Staker: queueEntry.Staker, diff --git a/x/stakers/keeper/logic_stakers.go b/x/stakers/keeper/logic_stakers.go index 46fd6e24..74e6d110 100644 --- a/x/stakers/keeper/logic_stakers.go +++ b/x/stakers/keeper/logic_stakers.go @@ -3,45 +3,25 @@ package keeper import ( "math" + "github.com/KYVENetwork/chain/util" + stakingTypes "github.com/cosmos/cosmos-sdk/x/staking/types" + "github.com/KYVENetwork/chain/x/stakers/types" "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" errorsTypes "github.com/cosmos/cosmos-sdk/types/errors" - sdkErrors "github.com/cosmos/cosmos-sdk/types/errors" ) -// IncreaseStakerCommissionRewards sets the uploader's commission rewards and transfers the funds from -// the payer module to the stakers module, so the funds can be later claimed and transferred from here -func (k Keeper) IncreaseStakerCommissionRewards(ctx sdk.Context, address string, payerModuleName string, amount sdk.Coins) error { - // Assert there is an amount - if amount.Empty() { - return nil - } - - // Assert the staker exists - if _, found := k.GetStaker(ctx, address); !found { - return errors.Wrapf(sdkErrors.ErrNotFound, "Staker does not exist.") - } - - // transfer funds from pool to stakers module - if err := k.bankKeeper.SendCoinsFromModuleToModule(ctx, payerModuleName, types.ModuleName, amount); err != nil { - return err - } - - k.updateStakerCommissionRewards(ctx, address, amount) - return nil -} - // getLowestStaker returns the staker with the lowest total stake // (self-delegation + delegation) of a given pool. // If all pool slots are taken, this is the staker who then // gets kicked out. -func (k Keeper) getLowestStaker(ctx sdk.Context, poolId uint64) (val types.Staker, found bool) { +func (k Keeper) getLowestStaker(ctx sdk.Context, poolId uint64) (val stakingTypes.Validator, found bool) { var minAmount uint64 = math.MaxUint64 for _, staker := range k.getAllStakersOfPool(ctx, poolId) { - delegationAmount := k.delegationKeeper.GetDelegationAmount(ctx, staker.Address) + delegationAmount := k.GetDelegationAmount(ctx, util.MustAccountAddressFromValAddress(staker.OperatorAddress)) if delegationAmount < minAmount { minAmount = delegationAmount val = staker @@ -64,15 +44,16 @@ func (k Keeper) ensureFreeSlot(ctx sdk.Context, poolId uint64, stakerAddress str if k.GetStakerCountOfPool(ctx, poolId) >= types.MaxStakers { // if not - get lowest staker lowestStaker, _ := k.getLowestStaker(ctx, poolId) + lowestStakerAddress := util.MustAccountAddressFromValAddress(lowestStaker.OperatorAddress) // if new pool joiner has more stake than lowest staker kick him out - newAmount := k.delegationKeeper.GetDelegationAmount(ctx, stakerAddress) - lowestAmount := k.delegationKeeper.GetDelegationAmount(ctx, lowestStaker.Address) + newAmount := k.GetDelegationAmount(ctx, stakerAddress) + lowestAmount := k.GetDelegationAmount(ctx, lowestStakerAddress) if newAmount > lowestAmount { // remove lowest staker from pool - k.LeavePool(ctx, lowestStaker.Address, poolId) + k.LeavePool(ctx, lowestStakerAddress, poolId) } else { - return errors.Wrapf(errorsTypes.ErrLogic, types.ErrStakeTooLow.Error(), k.delegationKeeper.GetDelegationAmount(ctx, lowestStaker.Address)) + return errors.Wrapf(errorsTypes.ErrLogic, types.ErrStakeTooLow.Error(), lowestAmount) } } diff --git a/x/stakers/keeper/msg_server_claim_commission_rewards.go b/x/stakers/keeper/msg_server_claim_commission_rewards.go deleted file mode 100644 index 5c3a6a6e..00000000 --- a/x/stakers/keeper/msg_server_claim_commission_rewards.go +++ /dev/null @@ -1,44 +0,0 @@ -package keeper - -import ( - "context" - - "cosmossdk.io/errors" - "github.com/KYVENetwork/chain/x/stakers/types" - sdk "github.com/cosmos/cosmos-sdk/types" - errorsTypes "github.com/cosmos/cosmos-sdk/types/errors" -) - -// ClaimCommissionRewards ... -func (k msgServer) ClaimCommissionRewards(goCtx context.Context, msg *types.MsgClaimCommissionRewards) (*types.MsgClaimCommissionRewardsResponse, error) { - // Unwrap context and attempt to fetch the pool. - ctx := sdk.UnwrapSDKContext(goCtx) - - // Check if staker exists - staker, found := k.GetStaker(ctx, msg.Creator) - if !found { - return nil, errors.Wrapf(errorsTypes.ErrNotFound, types.ErrNoStaker.Error(), msg.Creator) - } - - // Check if amount can be claimed - if !msg.Amounts.IsAllLTE(staker.CommissionRewards) { - return nil, types.ErrNotEnoughRewards - } - - // send commission rewards from stakers module to claimer - recipient := sdk.MustAccAddressFromBech32(msg.Creator) - if err := k.bankKeeper.SendCoinsFromModuleToAccount(ctx, types.ModuleName, recipient, msg.Amounts); err != nil { - return nil, err - } - - // calculate new commission rewards and save - staker.CommissionRewards = staker.CommissionRewards.Sub(msg.Amounts...) - k.setStaker(ctx, staker) - - _ = ctx.EventManager().EmitTypedEvent(&types.EventClaimCommissionRewards{ - Staker: msg.Creator, - Amounts: msg.Amounts.String(), - }) - - return &types.MsgClaimCommissionRewardsResponse{}, nil -} diff --git a/x/stakers/keeper/msg_server_claim_commission_rewards_test.go b/x/stakers/keeper/msg_server_claim_commission_rewards_test.go deleted file mode 100644 index 509cb820..00000000 --- a/x/stakers/keeper/msg_server_claim_commission_rewards_test.go +++ /dev/null @@ -1,694 +0,0 @@ -package keeper_test - -import ( - "cosmossdk.io/errors" - "cosmossdk.io/math" - i "github.com/KYVENetwork/chain/testutil/integration" - bundletypes "github.com/KYVENetwork/chain/x/bundles/types" - funderstypes "github.com/KYVENetwork/chain/x/funders/types" - globaltypes "github.com/KYVENetwork/chain/x/global/types" - pooltypes "github.com/KYVENetwork/chain/x/pool/types" - stakertypes "github.com/KYVENetwork/chain/x/stakers/types" - sdk "github.com/cosmos/cosmos-sdk/types" - errorsTypes "github.com/cosmos/cosmos-sdk/types/errors" - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" -) - -/* - -TEST CASES - msg_server_claim_commission_rewards.go - -* Produce a valid bundle and check commission rewards -* Claim with non-staker account -* Claim more rewards than available -* Claim zero rewards -* Claim partial rewards -* Claim partial rewards twice -* Claim all rewards -* Claim multiple coins -* Claim one coin of multiple coins -* Claim more rewards than available with multiple coins -* Claim coin which does not exist - -*/ - -var _ = Describe("msg_server_claim_commission_rewards.go", Ordered, func() { - s := i.NewCleanChain() - - initialBalanceStaker0 := s.GetCoinsFromAddress(i.STAKER_0) - amountPerBundle := int64(10_000) - - BeforeEach(func() { - // init new clean chain - s = i.NewCleanChain() - - // set storage cost to 0.5 - bundleParams := s.App().BundlesKeeper.GetParams(s.Ctx()) - bundleParams.StorageCosts = append(bundleParams.StorageCosts, bundletypes.StorageCost{StorageProviderId: 1, Cost: math.LegacyMustNewDecFromStr("0.5")}) - s.App().BundlesKeeper.SetParams(s.Ctx(), bundleParams) - - // set whitelist - s.App().FundersKeeper.SetParams(s.Ctx(), funderstypes.NewParams([]*funderstypes.WhitelistCoinEntry{ - { - CoinDenom: globaltypes.Denom, - MinFundingAmount: math.NewIntFromUint64(10 * i.KYVE), - MinFundingAmountPerBundle: math.NewInt(amountPerBundle), - CoinWeight: math.LegacyNewDec(1), - }, - { - CoinDenom: i.A_DENOM, - MinFundingAmount: math.NewIntFromUint64(10 * i.KYVE), - MinFundingAmountPerBundle: math.NewInt(amountPerBundle), - CoinWeight: math.LegacyNewDec(1), - }, - { - CoinDenom: i.B_DENOM, - MinFundingAmount: math.NewIntFromUint64(10 * i.KYVE), - MinFundingAmountPerBundle: math.NewInt(amountPerBundle), - CoinWeight: math.LegacyNewDec(2), - }, - { - CoinDenom: i.C_DENOM, - MinFundingAmount: math.NewIntFromUint64(10 * i.KYVE), - MinFundingAmountPerBundle: math.NewInt(amountPerBundle), - CoinWeight: math.LegacyNewDec(3), - }, - }, 20)) - - // create clean pool for every test case - gov := s.App().GovKeeper.GetGovernanceAccount(s.Ctx()).GetAddress().String() - msg := &pooltypes.MsgCreatePool{ - Authority: gov, - Name: "PoolTest", - Runtime: "@kyve/test", - Logo: "ar://Tewyv2P5VEG8EJ6AUQORdqNTectY9hlOrWPK8wwo-aU", - Config: "ar://DgdB-2hLrxjhyEEbCML__dgZN5_uS7T6Z5XDkaFh3P0", - StartKey: "0", - UploadInterval: 60, - InflationShareWeight: math.LegacyNewDec(10_000), - MinDelegation: 100 * i.KYVE, - MaxBundleSize: 100, - Version: "0.0.0", - Binaries: "{}", - StorageProviderId: 1, - CompressionId: 1, - } - s.RunTxPoolSuccess(msg) - - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) - - s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ - Creator: i.STAKER_0, - PoolId: 0, - Valaddress: i.VALADDRESS_0_A, - }) - - s.RunTxStakersSuccess(&stakertypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) - - s.RunTxStakersSuccess(&stakertypes.MsgJoinPool{ - Creator: i.STAKER_1, - PoolId: 0, - Valaddress: i.VALADDRESS_1_A, - }) - - s.RunTxBundlesSuccess(&bundletypes.MsgClaimUploaderRole{ - Creator: i.VALADDRESS_0_A, - Staker: i.STAKER_0, - PoolId: 0, - }) - - initialBalanceStaker0 = s.GetCoinsFromAddress(i.STAKER_0) - - s.RunTxFundersSuccess(&funderstypes.MsgCreateFunder{ - Creator: i.ALICE, - Moniker: "Alice", - }) - - // create a valid bundle so that uploader earns commission rewards - s.RunTxFundersSuccess(&funderstypes.MsgFundPool{ - Creator: i.ALICE, - PoolId: 0, - Amounts: i.KYVECoins(100 * i.T_KYVE), - AmountsPerBundle: i.KYVECoins(amountPerBundle), - }) - - s.CommitAfterSeconds(60) - - s.RunTxBundlesSuccess(&bundletypes.MsgSubmitBundleProposal{ - Creator: i.VALADDRESS_0_A, - Staker: i.STAKER_0, - PoolId: 0, - StorageId: "y62A3tfbSNcNYDGoL-eXwzyV-Zc9Q0OVtDvR1biJmNI", - DataSize: 100, - DataHash: "test_hash", - FromIndex: 0, - BundleSize: 100, - FromKey: "0", - ToKey: "99", - BundleSummary: "test_value", - }) - - s.RunTxBundlesSuccess(&bundletypes.MsgVoteBundleProposal{ - Creator: i.VALADDRESS_1_A, - Staker: i.STAKER_1, - PoolId: 0, - StorageId: "y62A3tfbSNcNYDGoL-eXwzyV-Zc9Q0OVtDvR1biJmNI", - Vote: 1, - }) - - s.CommitAfterSeconds(60) - - // ACT - s.RunTxBundlesSuccess(&bundletypes.MsgSubmitBundleProposal{ - Creator: i.VALADDRESS_1_A, - Staker: i.STAKER_1, - PoolId: 0, - StorageId: "P9edn0bjEfMU_lecFDIPLvGO2v2ltpFNUMWp5kgPddg", - DataSize: 100, - DataHash: "test_hash2", - FromIndex: 100, - BundleSize: 100, - FromKey: "100", - ToKey: "199", - BundleSummary: "test_value2", - }) - }) - - AfterEach(func() { - s.PerformValidityChecks() - }) - - It("Produce a valid bundle and check commission rewards", func() { - // ASSERT - // check if bundle got finalized on pool - pool, poolFound := s.App().PoolKeeper.GetPool(s.Ctx(), 0) - Expect(poolFound).To(BeTrue()) - - Expect(pool.CurrentKey).To(Equal("99")) - Expect(pool.CurrentSummary).To(Equal("test_value")) - Expect(pool.CurrentIndex).To(Equal(uint64(100))) - Expect(pool.TotalBundles).To(Equal(uint64(1))) - - // check uploader rewards - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - balanceUploader := s.GetCoinsFromAddress(i.STAKER_0) - - // assert payout transfer - Expect(balanceUploader.String()).To(Equal(initialBalanceStaker0.String())) - // assert uploader self delegation rewards - // (10_000 - (10_000 * 0.01) - (100 * 0.5)) * (1 - 0.1) - Expect(s.App().DelegationKeeper.GetOutstandingRewards(s.Ctx(), i.STAKER_0, i.STAKER_0).String()).To(Equal(i.KYVECoins(8865).String())) - - // assert commission rewards - // (10_000 - (10_000 * 0.01) - (100 * 0.5)) * 0.1 + (100 * 0.5) - Expect(uploader.CommissionRewards.String()).To(Equal(i.KYVECoins(1035).String())) - - fundingState, _ := s.App().FundersKeeper.GetFundingState(s.Ctx(), 0) - - // assert total pool funds - Expect(s.App().FundersKeeper.GetTotalActiveFunding(s.Ctx(), fundingState.PoolId).String()).To(Equal(i.KYVECoins(100*i.T_KYVE - amountPerBundle).String())) - Expect(fundingState.ActiveFunderAddresses).To(HaveLen(1)) - }) - - It("Claim with non-staker account", func() { - // ARRANGE - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - commissionRewardsBefore := uploader.CommissionRewards - - // ACT - _, err := s.RunTx(&stakertypes.MsgClaimCommissionRewards{ - Creator: i.STAKER_2, - Amounts: i.KYVECoins(1), - }) - - // ASSERT - Expect(err).To(HaveOccurred()) - Expect(err.Error()).To(Equal(errors.Wrapf(errorsTypes.ErrNotFound, stakertypes.ErrNoStaker.Error(), i.STAKER_2).Error())) - - uploader, _ = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - - Expect(uploader.CommissionRewards.String()).To(Equal(commissionRewardsBefore.String())) - Expect(s.GetCoinsFromAddress(i.STAKER_0).String()).To(Equal(initialBalanceStaker0.String())) - }) - - It("Claim more rewards than available", func() { - // ARRANGE - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - commissionRewardsBefore := uploader.CommissionRewards - - // ACT - _, err := s.RunTx(&stakertypes.MsgClaimCommissionRewards{ - Creator: i.STAKER_1, - Amounts: uploader.CommissionRewards.Add(i.KYVECoin(1)), - }) - - // ASSERT - Expect(err).To(HaveOccurred()) - Expect(err.Error()).To(Equal(stakertypes.ErrNotEnoughRewards.Error())) - - // assert commission rewards - uploader, _ = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - - Expect(uploader.CommissionRewards.String()).To(Equal(commissionRewardsBefore.String())) - Expect(s.GetCoinsFromAddress(i.STAKER_0).String()).To(Equal(initialBalanceStaker0.String())) - }) - - It("Claim zero rewards", func() { - // ARRANGE - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - commissionRewardsBefore := uploader.CommissionRewards - - // ACT - _, err := s.RunTx(&stakertypes.MsgClaimCommissionRewards{ - Creator: i.STAKER_0, - Amounts: sdk.NewCoins(), - }) - - // ASSERT - Expect(err).To(HaveOccurred()) - Expect(err.Error()).To(Equal(errors.Wrapf(errorsTypes.ErrInvalidRequest, "amount is empty").Error())) - - uploader, _ = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - - Expect(uploader.CommissionRewards.String()).To(Equal(commissionRewardsBefore.String())) - Expect(s.GetCoinsFromAddress(i.STAKER_0).String()).To(Equal(initialBalanceStaker0.String())) - }) - - It("Claim partial rewards", func() { - // ARRANGE - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - commissionRewardsBefore := uploader.CommissionRewards - - // ACT - s.RunTxStakersSuccess(&stakertypes.MsgClaimCommissionRewards{ - Creator: i.STAKER_0, - Amounts: i.KYVECoins(100), - }) - - // ASSERT - uploader, _ = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - - Expect(uploader.CommissionRewards.String()).To(Equal(commissionRewardsBefore.Sub(i.KYVECoin(100)).String())) - Expect(s.GetCoinsFromAddress(i.STAKER_0).String()).To(Equal(initialBalanceStaker0.Add(i.KYVECoin(100)).String())) - }) - - It("Claim partial rewards twice", func() { - // ARRANGE - s.RunTxStakersSuccess(&stakertypes.MsgClaimCommissionRewards{ - Creator: i.STAKER_0, - Amounts: i.KYVECoins(100), - }) - - s.RunTxBundlesSuccess(&bundletypes.MsgVoteBundleProposal{ - Creator: i.VALADDRESS_0_A, - Staker: i.STAKER_0, - PoolId: 0, - StorageId: "P9edn0bjEfMU_lecFDIPLvGO2v2ltpFNUMWp5kgPddg", - Vote: 1, - }) - - s.CommitAfterSeconds(60) - - s.RunTxBundlesSuccess(&bundletypes.MsgSubmitBundleProposal{ - Creator: i.VALADDRESS_0_A, - Staker: i.STAKER_0, - PoolId: 0, - StorageId: "SsdTPx9adtpwAGIjiHilqVPEfoTiq7eRw6khbVxKetQ", - DataSize: 100, - DataHash: "test_hash3", - FromIndex: 200, - BundleSize: 100, - FromKey: "200", - ToKey: "299", - BundleSummary: "test_value3", - }) - - s.RunTxBundlesSuccess(&bundletypes.MsgVoteBundleProposal{ - Creator: i.VALADDRESS_1_A, - Staker: i.STAKER_1, - PoolId: 0, - StorageId: "SsdTPx9adtpwAGIjiHilqVPEfoTiq7eRw6khbVxKetQ", - Vote: 1, - }) - - s.CommitAfterSeconds(60) - - s.RunTxBundlesSuccess(&bundletypes.MsgSubmitBundleProposal{ - Creator: i.VALADDRESS_1_A, - Staker: i.STAKER_1, - PoolId: 0, - StorageId: "iW1jN99yH_gdQtRhf5J_lVwOIu8p_i7FyxEgoQAkWxU", - DataSize: 100, - DataHash: "test_hash4", - FromIndex: 300, - BundleSize: 100, - FromKey: "300", - ToKey: "399", - BundleSummary: "test_value4", - }) - - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - commissionRewardsBefore := uploader.CommissionRewards - - // ACT - s.RunTxSuccess(&stakertypes.MsgClaimCommissionRewards{ - Creator: i.STAKER_0, - Amounts: i.KYVECoins(200), - }) - - // ASSERT - uploader, _ = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - - Expect(uploader.CommissionRewards.String()).To(Equal(commissionRewardsBefore.Sub(i.KYVECoin(200)).String())) - Expect(s.GetCoinsFromAddress(i.STAKER_0).String()).To(Equal(initialBalanceStaker0.Add(i.KYVECoin(300)).String())) - }) - - It("Claim all rewards", func() { - // ARRANGE - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - commissionRewardsBefore := uploader.CommissionRewards - - // ACT - s.RunTxSuccess(&stakertypes.MsgClaimCommissionRewards{ - Creator: i.STAKER_0, - Amounts: uploader.CommissionRewards, - }) - - // ASSERT - uploader, _ = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - - Expect(uploader.CommissionRewards).To(BeEmpty()) - Expect(s.GetCoinsFromAddress(i.STAKER_0).String()).To(Equal(initialBalanceStaker0.Add(commissionRewardsBefore...).String())) - }) - - It("Claim multiple coins", func() { - // ARRANGE - s.RunTxFundersSuccess(&funderstypes.MsgFundPool{ - Creator: i.ALICE, - PoolId: 0, - Amounts: sdk.NewCoins(i.ACoin(100*i.T_KYVE), i.BCoin(100*i.T_KYVE)), - AmountsPerBundle: sdk.NewCoins(i.ACoin(amountPerBundle), i.BCoin(amountPerBundle)), - }) - - s.RunTxBundlesSuccess(&bundletypes.MsgVoteBundleProposal{ - Creator: i.VALADDRESS_0_A, - Staker: i.STAKER_0, - PoolId: 0, - StorageId: "P9edn0bjEfMU_lecFDIPLvGO2v2ltpFNUMWp5kgPddg", - Vote: 1, - }) - - s.CommitAfterSeconds(60) - - s.RunTxBundlesSuccess(&bundletypes.MsgSubmitBundleProposal{ - Creator: i.VALADDRESS_0_A, - Staker: i.STAKER_0, - PoolId: 0, - StorageId: "SsdTPx9adtpwAGIjiHilqVPEfoTiq7eRw6khbVxKetQ", - DataSize: 100, - DataHash: "test_hash3", - FromIndex: 200, - BundleSize: 100, - FromKey: "200", - ToKey: "299", - BundleSummary: "test_value3", - }) - - s.RunTxBundlesSuccess(&bundletypes.MsgVoteBundleProposal{ - Creator: i.VALADDRESS_1_A, - Staker: i.STAKER_1, - PoolId: 0, - StorageId: "SsdTPx9adtpwAGIjiHilqVPEfoTiq7eRw6khbVxKetQ", - Vote: 1, - }) - - s.CommitAfterSeconds(60) - - s.RunTxBundlesSuccess(&bundletypes.MsgSubmitBundleProposal{ - Creator: i.VALADDRESS_1_A, - Staker: i.STAKER_1, - PoolId: 0, - StorageId: "iW1jN99yH_gdQtRhf5J_lVwOIu8p_i7FyxEgoQAkWxU", - DataSize: 100, - DataHash: "test_hash4", - FromIndex: 300, - BundleSize: 100, - FromKey: "300", - ToKey: "399", - BundleSummary: "test_value4", - }) - - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - commissionRewardsBefore := uploader.CommissionRewards - - // ACT - s.RunTxSuccess(&stakertypes.MsgClaimCommissionRewards{ - Creator: i.STAKER_0, - Amounts: sdk.NewCoins(i.KYVECoin(100), i.ACoin(200), i.BCoin(300)), - }) - - // ASSERT - uploader, _ = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - - Expect(uploader.CommissionRewards.String()).To(Equal(commissionRewardsBefore.Sub(i.KYVECoin(100), i.ACoin(200), i.BCoin(300)).String())) - Expect(s.GetCoinsFromAddress(i.STAKER_0).String()).To(Equal(initialBalanceStaker0.Add(sdk.NewCoins(i.KYVECoin(100), i.ACoin(200), i.BCoin(300))...).String())) - }) - - It("Claim one coin of multiple coins", func() { - // ARRANGE - s.RunTxFundersSuccess(&funderstypes.MsgFundPool{ - Creator: i.ALICE, - PoolId: 0, - Amounts: sdk.NewCoins(i.ACoin(100*i.T_KYVE), i.BCoin(100*i.T_KYVE)), - AmountsPerBundle: sdk.NewCoins(i.ACoin(amountPerBundle), i.BCoin(amountPerBundle)), - }) - - s.RunTxBundlesSuccess(&bundletypes.MsgVoteBundleProposal{ - Creator: i.VALADDRESS_0_A, - Staker: i.STAKER_0, - PoolId: 0, - StorageId: "P9edn0bjEfMU_lecFDIPLvGO2v2ltpFNUMWp5kgPddg", - Vote: 1, - }) - - s.CommitAfterSeconds(60) - - s.RunTxBundlesSuccess(&bundletypes.MsgSubmitBundleProposal{ - Creator: i.VALADDRESS_0_A, - Staker: i.STAKER_0, - PoolId: 0, - StorageId: "SsdTPx9adtpwAGIjiHilqVPEfoTiq7eRw6khbVxKetQ", - DataSize: 100, - DataHash: "test_hash3", - FromIndex: 200, - BundleSize: 100, - FromKey: "200", - ToKey: "299", - BundleSummary: "test_value3", - }) - - s.RunTxBundlesSuccess(&bundletypes.MsgVoteBundleProposal{ - Creator: i.VALADDRESS_1_A, - Staker: i.STAKER_1, - PoolId: 0, - StorageId: "SsdTPx9adtpwAGIjiHilqVPEfoTiq7eRw6khbVxKetQ", - Vote: 1, - }) - - s.CommitAfterSeconds(60) - - s.RunTxBundlesSuccess(&bundletypes.MsgSubmitBundleProposal{ - Creator: i.VALADDRESS_1_A, - Staker: i.STAKER_1, - PoolId: 0, - StorageId: "iW1jN99yH_gdQtRhf5J_lVwOIu8p_i7FyxEgoQAkWxU", - DataSize: 100, - DataHash: "test_hash4", - FromIndex: 300, - BundleSize: 100, - FromKey: "300", - ToKey: "399", - BundleSummary: "test_value4", - }) - - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - commissionRewardsBefore := uploader.CommissionRewards - - // defund one coin fully - _, rewardsBCoin := commissionRewardsBefore.Find(i.B_DENOM) - - // ACT - s.RunTxSuccess(&stakertypes.MsgClaimCommissionRewards{ - Creator: i.STAKER_0, - Amounts: sdk.NewCoins(rewardsBCoin), - }) - - // ASSERT - uploader, _ = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - - Expect(uploader.CommissionRewards.String()).To(Equal(commissionRewardsBefore.Sub(rewardsBCoin).String())) - Expect(s.GetCoinsFromAddress(i.STAKER_0).String()).To(Equal(initialBalanceStaker0.Add(rewardsBCoin).String())) - }) - - It("Claim more rewards than available with multiple coins", func() { - // ARRANGE - s.RunTxFundersSuccess(&funderstypes.MsgFundPool{ - Creator: i.ALICE, - PoolId: 0, - Amounts: sdk.NewCoins(i.ACoin(100*i.T_KYVE), i.BCoin(100*i.T_KYVE)), - AmountsPerBundle: sdk.NewCoins(i.ACoin(amountPerBundle), i.BCoin(amountPerBundle)), - }) - - s.RunTxBundlesSuccess(&bundletypes.MsgVoteBundleProposal{ - Creator: i.VALADDRESS_0_A, - Staker: i.STAKER_0, - PoolId: 0, - StorageId: "P9edn0bjEfMU_lecFDIPLvGO2v2ltpFNUMWp5kgPddg", - Vote: 1, - }) - - s.CommitAfterSeconds(60) - - s.RunTxBundlesSuccess(&bundletypes.MsgSubmitBundleProposal{ - Creator: i.VALADDRESS_0_A, - Staker: i.STAKER_0, - PoolId: 0, - StorageId: "SsdTPx9adtpwAGIjiHilqVPEfoTiq7eRw6khbVxKetQ", - DataSize: 100, - DataHash: "test_hash3", - FromIndex: 200, - BundleSize: 100, - FromKey: "200", - ToKey: "299", - BundleSummary: "test_value3", - }) - - s.RunTxBundlesSuccess(&bundletypes.MsgVoteBundleProposal{ - Creator: i.VALADDRESS_1_A, - Staker: i.STAKER_1, - PoolId: 0, - StorageId: "SsdTPx9adtpwAGIjiHilqVPEfoTiq7eRw6khbVxKetQ", - Vote: 1, - }) - - s.CommitAfterSeconds(60) - - s.RunTxBundlesSuccess(&bundletypes.MsgSubmitBundleProposal{ - Creator: i.VALADDRESS_1_A, - Staker: i.STAKER_1, - PoolId: 0, - StorageId: "iW1jN99yH_gdQtRhf5J_lVwOIu8p_i7FyxEgoQAkWxU", - DataSize: 100, - DataHash: "test_hash4", - FromIndex: 300, - BundleSize: 100, - FromKey: "300", - ToKey: "399", - BundleSummary: "test_value4", - }) - - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - commissionRewardsBefore := uploader.CommissionRewards - - // get current balance of one coin - _, rewardsBCoin := commissionRewardsBefore.Find(i.B_DENOM) - - // ACT - _, err := s.RunTx(&stakertypes.MsgClaimCommissionRewards{ - Creator: i.STAKER_0, - Amounts: sdk.NewCoins(i.KYVECoin(100), i.ACoin(200), rewardsBCoin.Add(i.BCoin(1))), - }) - - // ASSERT - Expect(err).To(HaveOccurred()) - Expect(err.Error()).To(Equal(stakertypes.ErrNotEnoughRewards.Error())) - - uploader, _ = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - - Expect(uploader.CommissionRewards.String()).To(Equal(commissionRewardsBefore.String())) - Expect(s.GetCoinsFromAddress(i.STAKER_0).String()).To(Equal(initialBalanceStaker0.String())) - }) - - It("Claim coin which does not exist", func() { - // ARRANGE - s.RunTxFundersSuccess(&funderstypes.MsgFundPool{ - Creator: i.ALICE, - PoolId: 0, - Amounts: sdk.NewCoins(i.ACoin(100*i.T_KYVE), i.BCoin(100*i.T_KYVE)), - AmountsPerBundle: sdk.NewCoins(i.ACoin(amountPerBundle), i.BCoin(amountPerBundle)), - }) - - s.RunTxBundlesSuccess(&bundletypes.MsgVoteBundleProposal{ - Creator: i.VALADDRESS_0_A, - Staker: i.STAKER_0, - PoolId: 0, - StorageId: "P9edn0bjEfMU_lecFDIPLvGO2v2ltpFNUMWp5kgPddg", - Vote: 1, - }) - - s.CommitAfterSeconds(60) - - s.RunTxBundlesSuccess(&bundletypes.MsgSubmitBundleProposal{ - Creator: i.VALADDRESS_0_A, - Staker: i.STAKER_0, - PoolId: 0, - StorageId: "SsdTPx9adtpwAGIjiHilqVPEfoTiq7eRw6khbVxKetQ", - DataSize: 100, - DataHash: "test_hash3", - FromIndex: 200, - BundleSize: 100, - FromKey: "200", - ToKey: "299", - BundleSummary: "test_value3", - }) - - s.RunTxBundlesSuccess(&bundletypes.MsgVoteBundleProposal{ - Creator: i.VALADDRESS_1_A, - Staker: i.STAKER_1, - PoolId: 0, - StorageId: "SsdTPx9adtpwAGIjiHilqVPEfoTiq7eRw6khbVxKetQ", - Vote: 1, - }) - - s.CommitAfterSeconds(60) - - s.RunTxBundlesSuccess(&bundletypes.MsgSubmitBundleProposal{ - Creator: i.VALADDRESS_1_A, - Staker: i.STAKER_1, - PoolId: 0, - StorageId: "iW1jN99yH_gdQtRhf5J_lVwOIu8p_i7FyxEgoQAkWxU", - DataSize: 100, - DataHash: "test_hash4", - FromIndex: 300, - BundleSize: 100, - FromKey: "300", - ToKey: "399", - BundleSummary: "test_value4", - }) - - uploader, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - commissionRewardsBefore := uploader.CommissionRewards - - // ACT - _, err := s.RunTx(&stakertypes.MsgClaimCommissionRewards{ - Creator: i.STAKER_0, - Amounts: sdk.NewCoins(i.KYVECoin(100), i.ACoin(200), i.CCoin(300)), - }) - - // ASSERT - Expect(err).To(HaveOccurred()) - Expect(err.Error()).To(Equal(stakertypes.ErrNotEnoughRewards.Error())) - - uploader, _ = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - - Expect(uploader.CommissionRewards.String()).To(Equal(commissionRewardsBefore.String())) - Expect(s.GetCoinsFromAddress(i.STAKER_0).String()).To(Equal(initialBalanceStaker0.String())) - }) -}) diff --git a/x/stakers/keeper/msg_server_create_staker.go b/x/stakers/keeper/msg_server_create_staker.go deleted file mode 100644 index fbc38ed1..00000000 --- a/x/stakers/keeper/msg_server_create_staker.go +++ /dev/null @@ -1,53 +0,0 @@ -package keeper - -import ( - "context" - - delegationKeeper "github.com/KYVENetwork/chain/x/delegation/keeper" - delegationTypes "github.com/KYVENetwork/chain/x/delegation/types" - - "github.com/KYVENetwork/chain/x/stakers/types" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// CreateStaker handles the logic of an SDK message that allows protocol nodes to create -// a staker with an initial self delegation. -// Every user can create a staker object with some stake. However, -// only if self_delegation + delegation is large enough to join a pool the staker -// is able to participate in the protocol -func (k msgServer) CreateStaker( - goCtx context.Context, - msg *types.MsgCreateStaker, -) (*types.MsgCreateStakerResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - // Only create new stakers - if k.DoesStakerExist(ctx, msg.Creator) { - return nil, types.ErrStakerAlreadyCreated - } - - // Create and append new staker to store - k.AppendStaker(ctx, types.Staker{ - Address: msg.Creator, - Commission: msg.Commission, - }) - - // TODO: maybe we should expose the 'Delegate' function from the delegation module - // Perform initial self delegation - delegationMsgServer := delegationKeeper.NewMsgServerImpl(k.delegationKeeper) - if _, err := delegationMsgServer.Delegate(ctx, &delegationTypes.MsgDelegate{ - Creator: msg.Creator, - Staker: msg.Creator, - Amount: msg.Amount, - }); err != nil { - return nil, err - } - - _ = ctx.EventManager().EmitTypedEvent(&types.EventCreateStaker{ - Staker: msg.Creator, - Amount: msg.Amount, - Commission: msg.Commission, - }) - - return &types.MsgCreateStakerResponse{}, nil -} diff --git a/x/stakers/keeper/msg_server_create_staker_test.go b/x/stakers/keeper/msg_server_create_staker_test.go deleted file mode 100644 index b4f79c89..00000000 --- a/x/stakers/keeper/msg_server_create_staker_test.go +++ /dev/null @@ -1,204 +0,0 @@ -package keeper_test - -import ( - "cosmossdk.io/math" - delegationtypes "github.com/KYVENetwork/chain/x/delegation/types" - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - - i "github.com/KYVENetwork/chain/testutil/integration" - "github.com/KYVENetwork/chain/x/stakers/types" - stakerstypes "github.com/KYVENetwork/chain/x/stakers/types" -) - -/* - -TEST CASES - msg_server_create_staker.go - -* Create a first new staker and delegate 100 $KYVE -* Do an additional 50 $KYVE self delegation after staker has already delegated 100 $KYVE -* Try to create staker with more $KYVE than available in balance -* Create a second staker by staking 150 $KYVE -* Try to create a staker again - -*/ - -var _ = Describe("msg_server_create_staker.go", Ordered, func() { - s := i.NewCleanChain() - - initialBalance := s.GetBalanceFromAddress(i.STAKER_0) - - BeforeEach(func() { - // init new clean chain - s = i.NewCleanChain() - }) - - AfterEach(func() { - s.PerformValidityChecks() - }) - - It("Create a first new staker and delegate 100 $KYVE", func() { - // ACT - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - Commission: math.LegacyMustNewDecFromStr("0.2"), - }) - - // ASSERT - balanceAfter := s.GetBalanceFromAddress(i.STAKER_0) - - staker, found := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - valaccounts := s.App().StakersKeeper.GetValaccountsFromStaker(s.Ctx(), i.STAKER_0) - - Expect(found).To(BeTrue()) - - Expect(initialBalance - balanceAfter).To(Equal(100 * i.KYVE)) - - Expect(staker.Address).To(Equal(i.STAKER_0)) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(100 * i.KYVE)) - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(100 * i.KYVE)) - Expect(staker.Commission).To(Equal(math.LegacyMustNewDecFromStr("0.2"))) - - Expect(staker.Moniker).To(BeEmpty()) - Expect(staker.Identity).To(BeEmpty()) - Expect(staker.Website).To(BeEmpty()) - Expect(staker.SecurityContact).To(BeEmpty()) - Expect(staker.Details).To(BeEmpty()) - - Expect(valaccounts).To(BeEmpty()) - }) - - It("Do an additional 50 $KYVE self delegation after staker has already delegated 100 $KYVE", func() { - // ARRANGE - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - Commission: types.DefaultCommission, - }) - - // ACT - s.RunTxDelegatorSuccess(&delegationtypes.MsgDelegate{ - Creator: i.STAKER_0, - Staker: i.STAKER_0, - Amount: 50 * i.KYVE, - }) - - // ASSERT - balanceAfter := s.GetBalanceFromAddress(i.STAKER_0) - - staker, found := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - valaccounts := s.App().StakersKeeper.GetValaccountsFromStaker(s.Ctx(), i.STAKER_0) - - Expect(found).To(BeTrue()) - - Expect(initialBalance - balanceAfter).To(Equal(150 * i.KYVE)) - - Expect(staker.Address).To(Equal(i.STAKER_0)) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(150 * i.KYVE)) - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(150 * i.KYVE)) - - Expect(staker.Commission).To(Equal(types.DefaultCommission)) - - Expect(staker.Moniker).To(BeEmpty()) - Expect(staker.Identity).To(BeEmpty()) - Expect(staker.Website).To(BeEmpty()) - Expect(staker.SecurityContact).To(BeEmpty()) - Expect(staker.Details).To(BeEmpty()) - - Expect(valaccounts).To(HaveLen(0)) - }) - - It("Try to create staker with more $KYVE than available in balance", func() { - // ACT - currentBalance := s.GetBalanceFromAddress(i.STAKER_0) - - s.RunTxStakersError(&stakerstypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: currentBalance + 1, - }) - - // ASSERT - balanceAfter := s.GetBalanceFromAddress(i.STAKER_0) - Expect(initialBalance - balanceAfter).To(BeZero()) - - _, found := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - Expect(found).To(BeFalse()) - }) - - It("Create a second staker by staking 150 $KYVE", func() { - // ARRANGE - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) - - // ACT - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ - Creator: i.BOB, - Amount: 150 * i.KYVE, - }) - - // ASSERT - balanceAfter := s.GetBalanceFromAddress(i.BOB) - - staker, found := s.App().StakersKeeper.GetStaker(s.Ctx(), i.BOB) - valaccounts := s.App().StakersKeeper.GetValaccountsFromStaker(s.Ctx(), i.BOB) - - Expect(found).To(BeTrue()) - - Expect(initialBalance - balanceAfter).To(Equal(150 * i.KYVE)) - - Expect(staker.Address).To(Equal(i.BOB)) - - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.BOB)).To(Equal(150 * i.KYVE)) - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.BOB, i.BOB)).To(Equal(150 * i.KYVE)) - - Expect(staker.Commission).To(Equal(types.DefaultCommission)) - - Expect(staker.Moniker).To(BeEmpty()) - Expect(staker.Identity).To(BeEmpty()) - Expect(staker.Website).To(BeEmpty()) - Expect(staker.SecurityContact).To(BeEmpty()) - Expect(staker.Details).To(BeEmpty()) - - Expect(valaccounts).To(BeEmpty()) - }) - - It("Try to create a staker again", func() { - // ARRANGE - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) - - // ACT - s.RunTxStakersError(&stakerstypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) - - // ASSERT - balanceAfter := s.GetBalanceFromAddress(i.STAKER_0) - - staker, found := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - valaccounts := s.App().StakersKeeper.GetValaccountsFromStaker(s.Ctx(), i.STAKER_0) - - Expect(found).To(BeTrue()) - - Expect(initialBalance - balanceAfter).To(Equal(100 * i.KYVE)) - - Expect(staker.Address).To(Equal(i.STAKER_0)) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(100 * i.KYVE)) - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(100 * i.KYVE)) - Expect(staker.Commission).To(Equal(types.DefaultCommission)) - - Expect(staker.Moniker).To(BeEmpty()) - Expect(staker.Identity).To(BeEmpty()) - Expect(staker.Website).To(BeEmpty()) - Expect(staker.SecurityContact).To(BeEmpty()) - Expect(staker.Details).To(BeEmpty()) - - Expect(valaccounts).To(BeEmpty()) - }) -}) diff --git a/x/stakers/keeper/msg_server_join_pool.go b/x/stakers/keeper/msg_server_join_pool.go index cf843ddf..25c9a320 100644 --- a/x/stakers/keeper/msg_server_join_pool.go +++ b/x/stakers/keeper/msg_server_join_pool.go @@ -31,25 +31,30 @@ func (k msgServer) JoinPool(goCtx context.Context, msg *types.MsgJoinPool) (*typ return nil, errors.Wrapf(errorsTypes.ErrLogic, types.ErrCanNotJoinDisabledPool.Error()) } - // throw error if staker was not found - staker, stakerFound := k.GetStaker(ctx, msg.Creator) - if !stakerFound { + // Validator must exist. + validator, validatorFound := k.GetValidator(ctx, msg.Creator) + if !validatorFound { return nil, errors.Wrapf(errorsTypes.ErrNotFound, types.ErrNoStaker.Error()) } - // Stakers are not allowed to use their own address, to prevent - // users from putting their staker private key on the protocol node server. + // Validator must be in the active set. + if !validator.IsBonded() { + return nil, errors.Wrapf(errorsTypes.ErrNotFound, types.ErrValidatorJailed.Error()) + } + + // Validators are not allowed to use their own address, to prevent + // users from putting their validator private key on the protocol node server. if msg.Creator == msg.Valaddress { return nil, errors.Wrapf(errorsTypes.ErrInvalidRequest, types.ErrValaddressSameAsStaker.Error()) } - // Stakers are not allowed to join a pool twice. + // Validators are not allowed to join a pool twice. if _, valaccountFound := k.GetValaccount(ctx, msg.PoolId, msg.Creator); valaccountFound { return nil, errors.Wrapf(errorsTypes.ErrInvalidRequest, types.ErrAlreadyJoinedPool.Error()) } // Only join if it is possible - if errFreeSlot := k.ensureFreeSlot(ctx, msg.PoolId, staker.Address); errFreeSlot != nil { + if errFreeSlot := k.ensureFreeSlot(ctx, msg.PoolId, msg.Creator); errFreeSlot != nil { return nil, errFreeSlot } diff --git a/x/stakers/keeper/msg_server_join_pool_test.go b/x/stakers/keeper/msg_server_join_pool_test.go index c4aa9a1c..1d3e6000 100644 --- a/x/stakers/keeper/msg_server_join_pool_test.go +++ b/x/stakers/keeper/msg_server_join_pool_test.go @@ -1,14 +1,20 @@ package keeper_test import ( + "fmt" + "cosmossdk.io/math" - delegationtypes "github.com/KYVENetwork/chain/x/delegation/types" + + "github.com/KYVENetwork/chain/util" + globalTypes "github.com/KYVENetwork/chain/x/global/types" + stakerstypes "github.com/KYVENetwork/chain/x/stakers/types" + sdk "github.com/cosmos/cosmos-sdk/types" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" i "github.com/KYVENetwork/chain/testutil/integration" pooltypes "github.com/KYVENetwork/chain/x/pool/types" - stakerstypes "github.com/KYVENetwork/chain/x/stakers/types" ) /* @@ -17,7 +23,6 @@ TEST CASES - msg_server_join_pool.go * Test if a newly created staker is participating in no pools yet * Join the first pool as the first staker to a newly created pool -* Join a pool with zero delegation * Join disabled pool * Join a pool where other stakers have already joined * Self-Delegate more KYVE after joining a pool @@ -44,9 +49,6 @@ var _ = Describe("msg_server_join_pool.go", Ordered, func() { initialBalanceStaker0 := uint64(0) initialBalanceValaddress0 := uint64(0) - initialBalanceStaker1 := uint64(0) - initialBalanceValaddress1 := uint64(0) - gov := s.App().GovKeeper.GetGovernanceAccount(s.Ctx()).GetAddress().String() BeforeEach(func() { @@ -63,17 +65,10 @@ var _ = Describe("msg_server_join_pool.go", Ordered, func() { } s.RunTxPoolSuccess(msg) - // create staker - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) initialBalanceStaker0 = s.GetBalanceFromAddress(i.STAKER_0) initialBalanceValaddress0 = s.GetBalanceFromAddress(i.VALADDRESS_0_A) - - initialBalanceStaker1 = s.GetBalanceFromAddress(i.STAKER_1) - initialBalanceValaddress1 = s.GetBalanceFromAddress(i.VALADDRESS_1_A) }) AfterEach(func() { @@ -120,58 +115,12 @@ var _ = Describe("msg_server_join_pool.go", Ordered, func() { Expect(valaccountsOfPool).To(HaveLen(1)) - totalStakeOfPool := s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0) + totalStakeOfPool := s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0) Expect(totalStakeOfPool).To(Equal(100 * i.KYVE)) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(totalStakeOfPool)) - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(totalStakeOfPool)) - }) - - It("Join a pool with zero delegation", func() { - // ARRANGE - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 0 * i.KYVE, - }) - - // ACT - s.RunTxStakersSuccess(&stakerstypes.MsgJoinPool{ - Creator: i.STAKER_1, - PoolId: 0, - Valaddress: i.VALADDRESS_1_A, - Amount: 0 * i.KYVE, - }) - - // ASSERT - balanceAfterStaker1 := s.GetBalanceFromAddress(i.STAKER_1) - balanceAfterValaddress1 := s.GetBalanceFromAddress(i.VALADDRESS_1_A) - - Expect(initialBalanceStaker1).To(Equal(balanceAfterStaker1)) - Expect(initialBalanceValaddress1).To(Equal(balanceAfterValaddress1)) - - valaccountsOfStaker := s.App().StakersKeeper.GetValaccountsFromStaker(s.Ctx(), i.STAKER_1) - - Expect(valaccountsOfStaker).To(HaveLen(1)) - - valaccount, found := s.App().StakersKeeper.GetValaccount(s.Ctx(), 0, i.STAKER_1) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(totalStakeOfPool)) - Expect(found).To(BeTrue()) - - Expect(valaccount.Staker).To(Equal(i.STAKER_1)) - Expect(valaccount.PoolId).To(BeZero()) - Expect(valaccount.Valaddress).To(Equal(i.VALADDRESS_1_A)) - Expect(valaccount.Points).To(BeZero()) - Expect(valaccount.IsLeaving).To(BeFalse()) - - valaccountsOfPool := s.App().StakersKeeper.GetAllValaccountsOfPool(s.Ctx(), 0) - - Expect(valaccountsOfPool).To(HaveLen(1)) - - totalStakeOfPool := s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0) - - Expect(totalStakeOfPool).To(BeZero()) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_1)).To(Equal(totalStakeOfPool)) - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_1, i.STAKER_1)).To(Equal(totalStakeOfPool)) + Expect(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(totalStakeOfPool)) }) It("Join disabled pool", func() { @@ -218,20 +167,17 @@ var _ = Describe("msg_server_join_pool.go", Ordered, func() { Expect(valaccountsOfPool).To(HaveLen(0)) - totalStakeOfPool := s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 1) + totalStakeOfPool := s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 1) Expect(totalStakeOfPool).To(Equal(0 * i.KYVE)) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(100 * i.KYVE)) Expect(s.App().StakersKeeper.GetActiveStakers(s.Ctx())).To(HaveLen(0)) - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(100 * i.KYVE)) }) It("join a pool where other stakers have already joined", func() { // ARRANGE - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakerstypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -273,11 +219,11 @@ var _ = Describe("msg_server_join_pool.go", Ordered, func() { Expect(valaccountsOfPool).To(HaveLen(2)) - totalStakeOfPool := s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0) + totalStakeOfPool := s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0) Expect(totalStakeOfPool).To(Equal(200 * i.KYVE)) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(100 * i.KYVE)) - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(100 * i.KYVE)) }) It("Self-Delegate more KYVE after joining a pool", func() { @@ -289,15 +235,15 @@ var _ = Describe("msg_server_join_pool.go", Ordered, func() { Amount: 100 * i.KYVE, }) - totalStakeOfPool := s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0) + totalStakeOfPool := s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0) Expect(totalStakeOfPool).To(Equal(100 * i.KYVE)) // ACT - s.RunTxDelegatorSuccess(&delegationtypes.MsgDelegate{ - Creator: i.STAKER_0, - Staker: i.STAKER_0, - Amount: 50 * i.KYVE, - }) + s.RunTxSuccess(stakingtypes.NewMsgDelegate( + i.STAKER_0, + util.MustValaddressFromOperatorAddress(i.STAKER_0), + sdk.NewInt64Coin(globalTypes.Denom, int64(50*i.KYVE)), + )) // ASSERT valaccountsOfStaker := s.App().StakersKeeper.GetValaccountsFromStaker(s.Ctx(), i.STAKER_0) @@ -318,12 +264,12 @@ var _ = Describe("msg_server_join_pool.go", Ordered, func() { Expect(valaccountsOfPool).To(HaveLen(1)) - totalStakeOfPool = s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0) + totalStakeOfPool = s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0) Expect(totalStakeOfPool).To(Equal(150 * i.KYVE)) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(totalStakeOfPool)) - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(totalStakeOfPool)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(totalStakeOfPool)) + Expect(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(totalStakeOfPool)) }) It("Try to join the same pool with the same valaddress again", func() { @@ -429,10 +375,7 @@ var _ = Describe("msg_server_join_pool.go", Ordered, func() { } s.RunTxPoolSuccess(msg) - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakerstypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -463,10 +406,7 @@ var _ = Describe("msg_server_join_pool.go", Ordered, func() { Amount: 100 * i.KYVE, }) - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) // ACT s.RunTxStakersError(&stakerstypes.MsgJoinPool{ @@ -545,11 +485,11 @@ var _ = Describe("msg_server_join_pool.go", Ordered, func() { Expect(valaccountsOfPool).To(HaveLen(1)) - totalStakeOfPool := s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0) + totalStakeOfPool := s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0) Expect(totalStakeOfPool).To(Equal(100 * i.KYVE)) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(totalStakeOfPool)) - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(totalStakeOfPool)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(totalStakeOfPool)) + Expect(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(totalStakeOfPool)) }) It("Join a pool with a valaddress which does not exist on chain yet and send 0 funds", func() { @@ -586,11 +526,11 @@ var _ = Describe("msg_server_join_pool.go", Ordered, func() { Expect(valaccountsOfPool).To(HaveLen(1)) - totalStakeOfPool := s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0) + totalStakeOfPool := s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0) Expect(totalStakeOfPool).To(Equal(100 * i.KYVE)) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(totalStakeOfPool)) - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(totalStakeOfPool)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(totalStakeOfPool)) + Expect(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(totalStakeOfPool)) }) It("Join a pool with an invalid valaddress", func() { @@ -635,10 +575,7 @@ var _ = Describe("msg_server_join_pool.go", Ordered, func() { }) for k := 0; k < 49; k++ { - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ - Creator: i.DUMMY[k], - Amount: 150 * i.KYVE, - }) + s.CreateValidator(i.DUMMY[k], fmt.Sprintf("dummy-%d", k), int64(150*i.KYVE)) s.RunTxStakersSuccess(&stakerstypes.MsgJoinPool{ Creator: i.DUMMY[k], PoolId: 0, @@ -648,12 +585,9 @@ var _ = Describe("msg_server_join_pool.go", Ordered, func() { } // STAKER_0 is lowest staker and all stakers are full now. - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal((150*49 + 100) * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal((150*49 + 100) * i.KYVE)) - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 150 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(150*i.KYVE)) // Act s.RunTxStakersSuccess(&stakerstypes.MsgJoinPool{ @@ -664,7 +598,7 @@ var _ = Describe("msg_server_join_pool.go", Ordered, func() { }) // Assert - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal((150*49 + 150) * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal((150*49 + 150) * i.KYVE)) Expect(s.App().StakersKeeper.GetAllStakerAddressesOfPool(s.Ctx(), 0)).ToNot(ContainElement(i.STAKER_0)) }) @@ -680,10 +614,7 @@ var _ = Describe("msg_server_join_pool.go", Ordered, func() { }) for k := 0; k < 49; k++ { - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ - Creator: i.DUMMY[k], - Amount: 150 * i.KYVE, - }) + s.CreateValidator(i.DUMMY[k], fmt.Sprintf("dummy-%d", k), int64(150*i.KYVE)) s.RunTxStakersSuccess(&stakerstypes.MsgJoinPool{ Creator: i.DUMMY[k], PoolId: 0, @@ -693,12 +624,9 @@ var _ = Describe("msg_server_join_pool.go", Ordered, func() { } // STAKER_0 is lowest staker and all stakers are full now. - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal((150*49 + 100) * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal((150*49 + 100) * i.KYVE)) - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 50 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(50*i.KYVE)) // Act s.RunTxStakersError(&stakerstypes.MsgJoinPool{ @@ -709,7 +637,7 @@ var _ = Describe("msg_server_join_pool.go", Ordered, func() { }) // Assert - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal((150*49 + 100) * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal((150*49 + 100) * i.KYVE)) Expect(s.App().StakersKeeper.GetAllStakerAddressesOfPool(s.Ctx(), 0)).To(ContainElement(i.STAKER_0)) Expect(s.App().StakersKeeper.GetAllStakerAddressesOfPool(s.Ctx(), 0)).ToNot(ContainElement(i.STAKER_1)) }) @@ -726,10 +654,7 @@ var _ = Describe("msg_server_join_pool.go", Ordered, func() { }) for k := 0; k < 49; k++ { - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ - Creator: i.DUMMY[k], - Amount: 150 * i.KYVE, - }) + s.CreateValidator(i.DUMMY[k], fmt.Sprintf("dummy-%d", k), int64(150*i.KYVE)) s.RunTxStakersSuccess(&stakerstypes.MsgJoinPool{ Creator: i.DUMMY[k], PoolId: 0, @@ -739,18 +664,15 @@ var _ = Describe("msg_server_join_pool.go", Ordered, func() { } // Alice is lowest staker and all stakers are full now. - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal((150*49 + 100) * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal((150*49 + 100) * i.KYVE)) - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 150 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(150*i.KYVE)) - s.RunTxDelegatorSuccess(&delegationtypes.MsgDelegate{ - Creator: i.ALICE, - Staker: i.STAKER_0, - Amount: 150 * i.KYVE, - }) // Staker0 has now 250 delegation + s.RunTxSuccess(stakingtypes.NewMsgDelegate( + i.ALICE, + util.MustValaddressFromOperatorAddress(i.STAKER_0), + sdk.NewInt64Coin(globalTypes.Denom, int64(150*i.KYVE)), + )) // ACT s.RunTxStakersError(&stakerstypes.MsgJoinPool{ @@ -761,7 +683,7 @@ var _ = Describe("msg_server_join_pool.go", Ordered, func() { }) // ASSERT - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal((150*49 + 250) * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal((150*49 + 250) * i.KYVE)) Expect(s.App().StakersKeeper.GetAllStakerAddressesOfPool(s.Ctx(), 0)).To(ContainElement(i.STAKER_0)) Expect(s.App().StakersKeeper.GetAllStakerAddressesOfPool(s.Ctx(), 0)).NotTo(ContainElement(i.STAKER_1)) }) @@ -778,10 +700,7 @@ var _ = Describe("msg_server_join_pool.go", Ordered, func() { }) for k := 0; k < 49; k++ { - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ - Creator: i.DUMMY[k], - Amount: 150 * i.KYVE, - }) + s.CreateValidator(i.DUMMY[k], fmt.Sprintf("dummy-%d", k), int64(150*i.KYVE)) s.RunTxStakersSuccess(&stakerstypes.MsgJoinPool{ Creator: i.DUMMY[k], PoolId: 0, @@ -791,12 +710,9 @@ var _ = Describe("msg_server_join_pool.go", Ordered, func() { } // STAKER_0 is lowest staker and all stakers are full now. - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal((150*49 + 100) * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal((150*49 + 100) * i.KYVE)) - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 50 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(50*i.KYVE)) // Act s.RunTxStakersError(&stakerstypes.MsgJoinPool{ @@ -807,7 +723,7 @@ var _ = Describe("msg_server_join_pool.go", Ordered, func() { }) // Assert - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal((150*49 + 100) * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal((150*49 + 100) * i.KYVE)) Expect(s.App().StakersKeeper.GetAllStakerAddressesOfPool(s.Ctx(), 0)).To(ContainElement(i.STAKER_0)) Expect(s.App().StakersKeeper.GetAllStakerAddressesOfPool(s.Ctx(), 0)).ToNot(ContainElement(i.STAKER_1)) }) @@ -824,10 +740,7 @@ var _ = Describe("msg_server_join_pool.go", Ordered, func() { }) for k := 0; k < 49; k++ { - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ - Creator: i.DUMMY[k], - Amount: 150 * i.KYVE, - }) + s.CreateValidator(i.DUMMY[k], fmt.Sprintf("dummy-%d", k), int64(150*i.KYVE)) s.RunTxStakersSuccess(&stakerstypes.MsgJoinPool{ Creator: i.DUMMY[k], PoolId: 0, @@ -837,18 +750,15 @@ var _ = Describe("msg_server_join_pool.go", Ordered, func() { } // Alice is lowest staker and all stakers are full now. - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal((150*49 + 100) * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal((150*49 + 100) * i.KYVE)) - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 50 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(50*i.KYVE)) - s.RunTxDelegatorSuccess(&delegationtypes.MsgDelegate{ - Creator: i.ALICE, - Staker: i.STAKER_1, - Amount: 50 * i.KYVE, - }) + s.RunTxSuccess(stakingtypes.NewMsgDelegate( + i.ALICE, + util.MustValaddressFromOperatorAddress(i.STAKER_1), + sdk.NewInt64Coin(globalTypes.Denom, int64(50*i.KYVE)), + )) // ACT s.RunTxStakersError(&stakerstypes.MsgJoinPool{ @@ -859,7 +769,7 @@ var _ = Describe("msg_server_join_pool.go", Ordered, func() { }) // ASSERT - Expect(s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal((150*49 + 100) * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0)).To(Equal((150*49 + 100) * i.KYVE)) Expect(s.App().StakersKeeper.GetAllStakerAddressesOfPool(s.Ctx(), 0)).To(ContainElement(i.STAKER_0)) Expect(s.App().StakersKeeper.GetAllStakerAddressesOfPool(s.Ctx(), 0)).NotTo(ContainElement(i.STAKER_1)) }) diff --git a/x/stakers/keeper/msg_server_leave_pool_test.go b/x/stakers/keeper/msg_server_leave_pool_test.go index 6e218183..05f76838 100644 --- a/x/stakers/keeper/msg_server_leave_pool_test.go +++ b/x/stakers/keeper/msg_server_leave_pool_test.go @@ -41,10 +41,7 @@ var _ = Describe("msg_server_leave_pool.go", Ordered, func() { s.RunTxPoolSuccess(msg) // create staker - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_0, "Staker-0", int64(100*i.KYVE)) // join pool s.RunTxStakersSuccess(&stakerstypes.MsgJoinPool{ @@ -85,11 +82,11 @@ var _ = Describe("msg_server_leave_pool.go", Ordered, func() { Expect(valaccountsOfPool).To(HaveLen(1)) - totalStakeOfPool := s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0) + totalStakeOfPool := s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0) Expect(totalStakeOfPool).To(Equal(100 * i.KYVE)) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(totalStakeOfPool)) - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(totalStakeOfPool)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(totalStakeOfPool)) + Expect(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(totalStakeOfPool)) s.PerformValidityChecks() @@ -109,16 +106,13 @@ var _ = Describe("msg_server_leave_pool.go", Ordered, func() { Expect(valaccountsOfPool).To(BeEmpty()) - totalStakeOfPool = s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0) + totalStakeOfPool = s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0) Expect(totalStakeOfPool).To(BeZero()) }) It("Leave a pool multiple other stakers have joined previously", func() { // ARRANGE - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) s.RunTxStakersSuccess(&stakerstypes.MsgJoinPool{ Creator: i.STAKER_1, @@ -153,11 +147,11 @@ var _ = Describe("msg_server_leave_pool.go", Ordered, func() { Expect(valaccountsOfPool).To(HaveLen(2)) - totalStakeOfPool := s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0) + totalStakeOfPool := s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0) Expect(totalStakeOfPool).To(Equal(200 * i.KYVE)) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(100 * i.KYVE)) - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(100 * i.KYVE)) + Expect(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(100 * i.KYVE)) s.PerformValidityChecks() @@ -177,7 +171,7 @@ var _ = Describe("msg_server_leave_pool.go", Ordered, func() { Expect(valaccountsOfPool).To(HaveLen(1)) - totalStakeOfPool = s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 0) + totalStakeOfPool = s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 0) Expect(totalStakeOfPool).To(Equal(100 * i.KYVE)) }) @@ -250,11 +244,11 @@ var _ = Describe("msg_server_leave_pool.go", Ordered, func() { Expect(valaccountsOfPool).To(HaveLen(1)) - totalStakeOfPool := s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 1) + totalStakeOfPool := s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 1) Expect(totalStakeOfPool).To(Equal(100 * i.KYVE)) - Expect(s.App().DelegationKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(totalStakeOfPool)) - Expect(s.App().DelegationKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(totalStakeOfPool)) + Expect(s.App().StakersKeeper.GetDelegationAmount(s.Ctx(), i.STAKER_0)).To(Equal(totalStakeOfPool)) + Expect(s.App().StakersKeeper.GetDelegationAmountOfDelegator(s.Ctx(), i.STAKER_0, i.STAKER_0)).To(Equal(totalStakeOfPool)) // wait for leave pool s.CommitAfterSeconds(s.App().StakersKeeper.GetLeavePoolTime(s.Ctx())) @@ -272,16 +266,13 @@ var _ = Describe("msg_server_leave_pool.go", Ordered, func() { Expect(valaccountsOfPool).To(BeEmpty()) - totalStakeOfPool = s.App().DelegationKeeper.GetDelegationOfPool(s.Ctx(), 1) + totalStakeOfPool = s.App().StakersKeeper.GetDelegationOfPool(s.Ctx(), 1) Expect(totalStakeOfPool).To(BeZero()) }) It("Leave a pool a staker has never joined", func() { // ARRANGE - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) + s.CreateValidator(i.STAKER_1, "Staker-1", int64(100*i.KYVE)) // ACT s.RunTxStakersError(&stakerstypes.MsgLeavePool{ diff --git a/x/stakers/keeper/msg_server_update_commission.go b/x/stakers/keeper/msg_server_update_commission.go index 0eb30c8d..e303078d 100644 --- a/x/stakers/keeper/msg_server_update_commission.go +++ b/x/stakers/keeper/msg_server_update_commission.go @@ -3,10 +3,7 @@ package keeper import ( "context" - "cosmossdk.io/errors" "github.com/KYVENetwork/chain/x/stakers/types" - sdk "github.com/cosmos/cosmos-sdk/types" - errorsTypes "github.com/cosmos/cosmos-sdk/types/errors" ) // UpdateCommission creates a queue entry to update the staker commission. @@ -14,15 +11,7 @@ import ( // If an update is currently in the queue it will get removed from the queue // and the user needs to wait again for the full time to pass. func (k msgServer) UpdateCommission(goCtx context.Context, msg *types.MsgUpdateCommission) (*types.MsgUpdateCommissionResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - // Check if the sender is a protocol node (aka has staked into this pool). - if !k.DoesStakerExist(ctx, msg.Creator) { - return nil, errors.Wrap(errorsTypes.ErrUnauthorized, types.ErrNoStaker.Error()) - } - - // Insert commission change into queue - k.orderNewCommissionChange(ctx, msg.Creator, msg.Commission) + // TODO no-op, will be replaced by a per pool commission return &types.MsgUpdateCommissionResponse{}, nil } diff --git a/x/stakers/keeper/msg_server_update_commission_test.go b/x/stakers/keeper/msg_server_update_commission_test.go deleted file mode 100644 index 73bb5117..00000000 --- a/x/stakers/keeper/msg_server_update_commission_test.go +++ /dev/null @@ -1,238 +0,0 @@ -package keeper_test - -import ( - "cosmossdk.io/math" - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - - i "github.com/KYVENetwork/chain/testutil/integration" - stakerstypes "github.com/KYVENetwork/chain/x/stakers/types" -) - -/* - -TEST CASES - msg_server_update_commission.go - -* Get the default commission from a newly created staker -* Update commission to 50% from previously default commission -* Update commission to 0% from previously default commission -* Update commission to 100% from previously default commission -* Update commission with an invalid number from previously default commission -* Update commission with a negative number from previously default commission -* Update commission with a too high number from previously default commission -* Update commission multiple times during the commission change time -* Update commission multiple times during the commission change time with the same value -* Update commission with multiple stakers - -*/ - -var _ = Describe("msg_server_update_commission.go", Ordered, func() { - s := i.NewCleanChain() - - BeforeEach(func() { - // init new clean chain - s = i.NewCleanChain() - - // create staker - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) - }) - - AfterEach(func() { - s.PerformValidityChecks() - }) - - It("Get the default commission from a newly created staker", func() { - // ASSERT - staker, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - Expect(staker.Commission).To(Equal(stakerstypes.DefaultCommission)) - }) - - It("Update commission to 50% from previously default commission", func() { - // ACT - s.RunTxStakersSuccess(&stakerstypes.MsgUpdateCommission{ - Creator: i.STAKER_0, - Commission: math.LegacyMustNewDecFromStr("0.5"), - }) - s.PerformValidityChecks() - - // ASSERT - staker, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - Expect(staker.Commission).To(Equal(stakerstypes.DefaultCommission)) - - // wait for update - s.CommitAfterSeconds(s.App().StakersKeeper.GetCommissionChangeTime(s.Ctx())) - s.CommitAfterSeconds(1) - - staker, _ = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - Expect(staker.Commission).To(Equal(math.LegacyMustNewDecFromStr("0.5"))) - }) - - It("Update commission to 0% from previously default commission", func() { - // ACT - s.RunTxStakersSuccess(&stakerstypes.MsgUpdateCommission{ - Creator: i.STAKER_0, - Commission: math.LegacyZeroDec(), - }) - s.PerformValidityChecks() - - // ASSERT - staker, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - Expect(staker.Commission).To(Equal(stakerstypes.DefaultCommission)) - - // wait for update - s.CommitAfterSeconds(s.App().StakersKeeper.GetCommissionChangeTime(s.Ctx())) - s.CommitAfterSeconds(1) - - staker, _ = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - Expect(staker.Commission).To(Equal(math.LegacyZeroDec())) - }) - - It("Update commission to 100% from previously default commission", func() { - // ACT - s.RunTxStakersSuccess(&stakerstypes.MsgUpdateCommission{ - Creator: i.STAKER_0, - Commission: math.LegacyOneDec(), - }) - s.PerformValidityChecks() - - // ASSERT - staker, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - Expect(staker.Commission).To(Equal(stakerstypes.DefaultCommission)) - - // wait for update - s.CommitAfterSeconds(s.App().StakersKeeper.GetCommissionChangeTime(s.Ctx())) - s.CommitAfterSeconds(1) - - staker, _ = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - Expect(staker.Commission).To(Equal(math.LegacyOneDec())) - }) - - It("Update commission with a negative number from previously default commission", func() { - // ACT - s.RunTxStakersError(&stakerstypes.MsgUpdateCommission{ - Creator: i.STAKER_0, - Commission: math.LegacyMustNewDecFromStr("-0.5"), - }) - s.PerformValidityChecks() - - // ASSERT - staker, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - Expect(staker.Commission).To(Equal(stakerstypes.DefaultCommission)) - }) - - It("Update commission with a too high number from previously default commission", func() { - // ACT - s.RunTxStakersError(&stakerstypes.MsgUpdateCommission{ - Creator: i.STAKER_0, - Commission: math.LegacyNewDec(2), - }) - s.PerformValidityChecks() - - // ASSERT - staker, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - Expect(staker.Commission).To(Equal(stakerstypes.DefaultCommission)) - }) - - It("Update commission multiple times during the commission change time", func() { - // ACT - s.RunTxStakersSuccess(&stakerstypes.MsgUpdateCommission{ - Creator: i.STAKER_0, - Commission: math.LegacyMustNewDecFromStr("0.5"), - }) - s.PerformValidityChecks() - - s.RunTxStakersSuccess(&stakerstypes.MsgUpdateCommission{ - Creator: i.STAKER_0, - Commission: math.LegacyMustNewDecFromStr("0.2"), - }) - s.PerformValidityChecks() - - s.RunTxStakersSuccess(&stakerstypes.MsgUpdateCommission{ - Creator: i.STAKER_0, - Commission: math.LegacyMustNewDecFromStr("0.3"), - }) - s.PerformValidityChecks() - - // ASSERT - staker, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - Expect(staker.Commission).To(Equal(stakerstypes.DefaultCommission)) - - // wait for update - s.CommitAfterSeconds(s.App().StakersKeeper.GetCommissionChangeTime(s.Ctx())) - s.CommitAfterSeconds(1) - - staker, _ = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - Expect(staker.Commission).To(Equal(math.LegacyMustNewDecFromStr("0.3"))) - }) - - It("Update commission multiple times during the commission change time with the same value", func() { - // ACT - s.RunTxStakersSuccess(&stakerstypes.MsgUpdateCommission{ - Creator: i.STAKER_0, - Commission: math.LegacyMustNewDecFromStr("0.5"), - }) - - s.RunTxStakersSuccess(&stakerstypes.MsgUpdateCommission{ - Creator: i.STAKER_0, - Commission: math.LegacyMustNewDecFromStr("0.2"), - }) - - s.RunTxStakersSuccess(&stakerstypes.MsgUpdateCommission{ - Creator: i.STAKER_0, - Commission: stakerstypes.DefaultCommission, - }) - s.PerformValidityChecks() - - // ASSERT - staker, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - Expect(staker.Commission).To(Equal(stakerstypes.DefaultCommission)) - - // wait for update - s.CommitAfterSeconds(s.App().StakersKeeper.GetCommissionChangeTime(s.Ctx())) - s.CommitAfterSeconds(1) - - staker, _ = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - Expect(staker.Commission).To(Equal(stakerstypes.DefaultCommission)) - }) - - It("Update commission with multiple stakers", func() { - // ARRANGE - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ - Creator: i.STAKER_1, - Amount: 100 * i.KYVE, - }) - - // ACT - s.RunTxStakersSuccess(&stakerstypes.MsgUpdateCommission{ - Creator: i.STAKER_0, - Commission: math.LegacyMustNewDecFromStr("0.5"), - }) - - s.RunTxStakersSuccess(&stakerstypes.MsgUpdateCommission{ - Creator: i.STAKER_1, - Commission: math.LegacyMustNewDecFromStr("0.5"), - }) - - s.PerformValidityChecks() - - // ASSERT - staker0, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - Expect(staker0.Commission).To(Equal(stakerstypes.DefaultCommission)) - - staker1, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_1) - Expect(staker1.Commission).To(Equal(stakerstypes.DefaultCommission)) - - // wait for update - s.CommitAfterSeconds(s.App().StakersKeeper.GetCommissionChangeTime(s.Ctx())) - s.CommitAfterSeconds(1) - - staker0, _ = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - Expect(staker0.Commission).To(Equal(math.LegacyMustNewDecFromStr("0.5"))) - - staker1, _ = s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_1) - Expect(staker1.Commission).To(Equal(math.LegacyMustNewDecFromStr("0.5"))) - }) -}) diff --git a/x/stakers/keeper/msg_server_update_metadata.go b/x/stakers/keeper/msg_server_update_metadata.go deleted file mode 100644 index 40a408cf..00000000 --- a/x/stakers/keeper/msg_server_update_metadata.go +++ /dev/null @@ -1,38 +0,0 @@ -package keeper - -import ( - "context" - - "cosmossdk.io/errors" - "github.com/KYVENetwork/chain/x/stakers/types" - sdk "github.com/cosmos/cosmos-sdk/types" - errorsTypes "github.com/cosmos/cosmos-sdk/types/errors" -) - -// UpdateMetadata allows a staker to change basic metadata like moniker, address, logo, etc. -// The update is performed immediately. -func (k msgServer) UpdateMetadata( - goCtx context.Context, - msg *types.MsgUpdateMetadata, -) (*types.MsgUpdateMetadataResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - // Check if the sender is a protocol node (aka has staked into this pool). - if !k.DoesStakerExist(ctx, msg.Creator) { - return nil, errors.Wrap(errorsTypes.ErrUnauthorized, types.ErrNoStaker.Error()) - } - - // Apply new metadata to staker - k.UpdateStakerMetadata(ctx, msg.Creator, msg.Moniker, msg.Website, msg.Identity, msg.SecurityContact, msg.Details) - - _ = ctx.EventManager().EmitTypedEvent(&types.EventUpdateMetadata{ - Staker: msg.Creator, - Moniker: msg.Moniker, - Website: msg.Website, - Identity: msg.Identity, - SecurityContact: msg.SecurityContact, - Details: msg.Details, - }) - - return &types.MsgUpdateMetadataResponse{}, nil -} diff --git a/x/stakers/keeper/msg_server_update_metadata_test.go b/x/stakers/keeper/msg_server_update_metadata_test.go deleted file mode 100644 index 81c1d662..00000000 --- a/x/stakers/keeper/msg_server_update_metadata_test.go +++ /dev/null @@ -1,179 +0,0 @@ -package keeper_test - -import ( - "cosmossdk.io/errors" - errorsTypes "github.com/cosmos/cosmos-sdk/types/errors" - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - - i "github.com/KYVENetwork/chain/testutil/integration" - stakerstypes "github.com/KYVENetwork/chain/x/stakers/types" -) - -/* - -TEST CASES - msg_server_update_metadata.go - -* Get the default metadata of a newly created staker -* Update metadata with real values of a newly created staker -* Reset metadata to empty values -* Exceed max length - -*/ - -var _ = Describe("msg_server_update_metadata.go", Ordered, func() { - s := i.NewCleanChain() - - BeforeEach(func() { - // init new clean chain - s = i.NewCleanChain() - - // create staker - s.RunTxStakersSuccess(&stakerstypes.MsgCreateStaker{ - Creator: i.STAKER_0, - Amount: 100 * i.KYVE, - }) - }) - - AfterEach(func() { - s.PerformValidityChecks() - }) - - It("Get the default metadata of a newly created staker", func() { - // ASSERT - staker, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - - Expect(staker.Moniker).To(BeEmpty()) - Expect(staker.Website).To(BeEmpty()) - Expect(staker.Identity).To(BeEmpty()) - Expect(staker.SecurityContact).To(BeEmpty()) - Expect(staker.Details).To(BeEmpty()) - }) - - It("Update metadata with real values of a newly created staker", func() { - // ACT - s.RunTxStakersSuccess(&stakerstypes.MsgUpdateMetadata{ - Creator: i.STAKER_0, - Moniker: "KYVE Node Runner", - Website: "https://kyve.network", - Identity: "7CD454E228C8F227", - SecurityContact: "security@kyve.network", - Details: "KYVE Protocol Node", - }) - - // ASSERT - staker, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - - Expect(staker.Moniker).To(Equal("KYVE Node Runner")) - Expect(staker.Website).To(Equal("https://kyve.network")) - Expect(staker.Identity).To(Equal("7CD454E228C8F227")) - Expect(staker.SecurityContact).To(Equal("security@kyve.network")) - Expect(staker.Details).To(Equal("KYVE Protocol Node")) - }) - - It("Reset metadata to empty values", func() { - // ARRANGE - s.RunTxStakersSuccess(&stakerstypes.MsgUpdateMetadata{ - Creator: i.STAKER_0, - Moniker: "KYVE Node Runner", - Website: "https://kyve.network", - Identity: "7CD454E228C8F227", - SecurityContact: "security@kyve.network", - Details: "KYVE Protocol Node", - }) - - // ACT - s.RunTxStakersSuccess(&stakerstypes.MsgUpdateMetadata{ - Creator: i.STAKER_0, - Moniker: "", - Website: "", - Identity: "", - SecurityContact: "", - Details: "", - }) - - // ASSERT - staker, _ := s.App().StakersKeeper.GetStaker(s.Ctx(), i.STAKER_0) - - Expect(staker.Moniker).To(BeEmpty()) - Expect(staker.Website).To(BeEmpty()) - Expect(staker.Identity).To(BeEmpty()) - Expect(staker.SecurityContact).To(BeEmpty()) - Expect(staker.Details).To(BeEmpty()) - }) - - It("One below max length", func() { - // ARRANGE - var stringStillAllowed string - for i := 0; i < 255; i++ { - stringStillAllowed += "." - } - - // ACT - msg := stakerstypes.MsgUpdateMetadata{ - Creator: i.STAKER_0, - Moniker: stringStillAllowed, - Website: stringStillAllowed, - Identity: "", - SecurityContact: stringStillAllowed, - Details: stringStillAllowed, - } - err := msg.ValidateBasic() - - // ASSERT - Expect(err).To(BeNil()) - }) - - // stringTooLong := stringStillAllowed + "." - It("Exceed max length", func() { - // ARRANGE - var stringTooLong string - for i := 0; i < 256; i++ { - stringTooLong += "." - } - - // ACT - msg := stakerstypes.MsgUpdateMetadata{ - Creator: i.STAKER_0, - Moniker: stringTooLong, - Website: stringTooLong, - Identity: "", - SecurityContact: stringTooLong, - Details: stringTooLong, - } - err := msg.ValidateBasic() - - // ASSERT - Expect(err).ToNot(BeNil()) - }) - - It("Invalid Identity", func() { - // ARRANGE - invalidIdentity := "7CD454E228C8F22H" - - // ACT - msg := stakerstypes.MsgUpdateMetadata{ - Creator: i.STAKER_0, - Identity: invalidIdentity, - } - err := msg.ValidateBasic() - - // ASSERT - Expect(err.Error()).To(Equal(errors.Wrapf(errorsTypes.ErrLogic, stakerstypes.ErrInvalidIdentityString.Error(), msg.Identity).Error())) - }) - - It("Identity with lower-case hex letters", func() { - // ARRANGE - invalidIdentity := "7cd454e228c8f227" - - // ACT - msg := stakerstypes.MsgUpdateMetadata{ - Creator: i.STAKER_0, - Identity: invalidIdentity, - } - err := msg.ValidateBasic() - - // ASSERT - Expect(err).To(BeNil()) - }) -}) diff --git a/x/stakers/module.go b/x/stakers/module.go index f69afa35..597eb916 100644 --- a/x/stakers/module.go +++ b/x/stakers/module.go @@ -5,13 +5,14 @@ import ( "encoding/json" "fmt" + stakingTypes "github.com/cosmos/cosmos-sdk/x/staking/types" + "cosmossdk.io/core/appmodule" "cosmossdk.io/core/store" "cosmossdk.io/depinject" "cosmossdk.io/log" "github.com/KYVENetwork/chain/util" - delegationKeeper "github.com/KYVENetwork/chain/x/delegation/keeper" poolKeeper "github.com/KYVENetwork/chain/x/pool/keeper" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" distributionKeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper" @@ -107,22 +108,16 @@ func (AppModuleBasic) GetQueryCmd() *cobra.Command { type AppModule struct { AppModuleBasic - keeper *keeper.Keeper - accountKeeper util.AccountKeeper - bankKeeper util.BankKeeper + keeper *keeper.Keeper } func NewAppModule( cdc codec.Codec, keeper *keeper.Keeper, - accountKeeper util.AccountKeeper, - bankKeeper util.BankKeeper, ) AppModule { return AppModule{ AppModuleBasic: NewAppModuleBasic(cdc), keeper: keeper, - accountKeeper: accountKeeper, - bankKeeper: bankKeeper, } } @@ -178,7 +173,6 @@ func init() { appmodule.Register( &modulev1.Module{}, appmodule.Provide(ProvideModule), - appmodule.Invoke(InvokeSetDelegationKeeper), ) } @@ -191,11 +185,10 @@ type ModuleInputs struct { MemService store.MemoryStoreService Logger log.Logger - AccountKeeper util.AccountKeeper BankKeeper util.BankKeeper DistributionKeeper distributionKeeper.Keeper - UpgradeKeeper util.UpgradeKeeper PoolKeeper *poolKeeper.Keeper + StakingKeeper util.StakingKeeper } type ModuleOutputs struct { @@ -203,6 +196,7 @@ type ModuleOutputs struct { StakersKeeper *keeper.Keeper Module appmodule.AppModule + Hooks stakingTypes.StakingHooksWrapper } func ProvideModule(in ModuleInputs) ModuleOutputs { @@ -217,29 +211,15 @@ func ProvideModule(in ModuleInputs) ModuleOutputs { in.MemService, in.Logger, authority.String(), - in.AccountKeeper, in.BankKeeper, - in.DistributionKeeper, in.PoolKeeper, - in.UpgradeKeeper, + in.StakingKeeper, + in.DistributionKeeper, ) m := NewAppModule( in.Cdc, k, - in.AccountKeeper, - in.BankKeeper, ) - return ModuleOutputs{StakersKeeper: k, Module: m} -} - -func InvokeSetDelegationKeeper( - k *keeper.Keeper, - delegationKeeper delegationKeeper.Keeper, -) error { - if k == nil { - return fmt.Errorf("keeper is nil") - } - keeper.SetDelegationKeeper(k, delegationKeeper) - return nil + return ModuleOutputs{StakersKeeper: k, Module: m, Hooks: stakingTypes.StakingHooksWrapper{StakingHooks: k}} } diff --git a/x/stakers/types/codec.go b/x/stakers/types/codec.go index bc263eb1..5adbe9cb 100644 --- a/x/stakers/types/codec.go +++ b/x/stakers/types/codec.go @@ -8,20 +8,14 @@ import ( ) func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { - cdc.RegisterConcrete(&MsgCreateStaker{}, "kyve/stakers/MsgCreateStaker", nil) cdc.RegisterConcrete(&MsgUpdateCommission{}, "kyve/stakers/MsgUpdateCommission", nil) - cdc.RegisterConcrete(&MsgClaimCommissionRewards{}, "kyve/stakers/MsgClaimCommissionRewards", nil) - cdc.RegisterConcrete(&MsgUpdateMetadata{}, "kyve/stakers/MsgUpdateMetadata", nil) cdc.RegisterConcrete(&MsgJoinPool{}, "kyve/stakers/MsgJoinPool", nil) cdc.RegisterConcrete(&MsgLeavePool{}, "kyve/stakers/MsgLeavePool", nil) cdc.RegisterConcrete(&MsgUpdateParams{}, "kyve/stakers/MsgUpdateParams", nil) } func RegisterInterfaces(registry codecTypes.InterfaceRegistry) { - registry.RegisterImplementations((*sdk.Msg)(nil), &MsgCreateStaker{}) registry.RegisterImplementations((*sdk.Msg)(nil), &MsgUpdateCommission{}) - registry.RegisterImplementations((*sdk.Msg)(nil), &MsgClaimCommissionRewards{}) - registry.RegisterImplementations((*sdk.Msg)(nil), &MsgUpdateMetadata{}) registry.RegisterImplementations((*sdk.Msg)(nil), &MsgJoinPool{}) registry.RegisterImplementations((*sdk.Msg)(nil), &MsgLeavePool{}) registry.RegisterImplementations((*sdk.Msg)(nil), &MsgUpdateParams{}) diff --git a/x/stakers/types/errors.go b/x/stakers/types/errors.go index 4fc21036..46b346ce 100644 --- a/x/stakers/types/errors.go +++ b/x/stakers/types/errors.go @@ -21,4 +21,5 @@ var ( ErrPoolLeaveAlreadyInProgress = errors.Register(ModuleName, 1117, "Pool leave is already in progress") ErrValaccountUnauthorized = errors.Register(ModuleName, 1118, "valaccount unauthorized") + ErrValidatorJailed = errors.Register(ModuleName, 1119, "validator jailed") ) diff --git a/x/stakers/types/events.pb.go b/x/stakers/types/events.pb.go index 00974c17..2347afee 100644 --- a/x/stakers/types/events.pb.go +++ b/x/stakers/types/events.pb.go @@ -89,156 +89,6 @@ func (m *EventUpdateParams) GetPayload() string { return "" } -// EventCreateStaker is an event emitted when a protocol node stakes in a pool. -// emitted_by: MsgCreateStaker -type EventCreateStaker struct { - // staker is the account address of the protocol node. - Staker string `protobuf:"bytes,1,opt,name=staker,proto3" json:"staker,omitempty"` - // amount ... - Amount uint64 `protobuf:"varint,2,opt,name=amount,proto3" json:"amount,omitempty"` - // commission - Commission cosmossdk_io_math.LegacyDec `protobuf:"bytes,3,opt,name=commission,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"commission"` -} - -func (m *EventCreateStaker) Reset() { *m = EventCreateStaker{} } -func (m *EventCreateStaker) String() string { return proto.CompactTextString(m) } -func (*EventCreateStaker) ProtoMessage() {} -func (*EventCreateStaker) Descriptor() ([]byte, []int) { - return fileDescriptor_7a1b3dc9634155a0, []int{1} -} -func (m *EventCreateStaker) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *EventCreateStaker) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_EventCreateStaker.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *EventCreateStaker) XXX_Merge(src proto.Message) { - xxx_messageInfo_EventCreateStaker.Merge(m, src) -} -func (m *EventCreateStaker) XXX_Size() int { - return m.Size() -} -func (m *EventCreateStaker) XXX_DiscardUnknown() { - xxx_messageInfo_EventCreateStaker.DiscardUnknown(m) -} - -var xxx_messageInfo_EventCreateStaker proto.InternalMessageInfo - -func (m *EventCreateStaker) GetStaker() string { - if m != nil { - return m.Staker - } - return "" -} - -func (m *EventCreateStaker) GetAmount() uint64 { - if m != nil { - return m.Amount - } - return 0 -} - -// EventUpdateMetadata is an event emitted when a protocol node updates their metadata. -// emitted_by: MsgUpdateMetadata -type EventUpdateMetadata struct { - // staker is the account address of the protocol node. - Staker string `protobuf:"bytes,1,opt,name=staker,proto3" json:"staker,omitempty"` - // moniker ... - Moniker string `protobuf:"bytes,2,opt,name=moniker,proto3" json:"moniker,omitempty"` - // website ... - Website string `protobuf:"bytes,3,opt,name=website,proto3" json:"website,omitempty"` - // identity ... - Identity string `protobuf:"bytes,4,opt,name=identity,proto3" json:"identity,omitempty"` - // security_contact ... - SecurityContact string `protobuf:"bytes,5,opt,name=security_contact,json=securityContact,proto3" json:"security_contact,omitempty"` - // details ... - Details string `protobuf:"bytes,6,opt,name=details,proto3" json:"details,omitempty"` -} - -func (m *EventUpdateMetadata) Reset() { *m = EventUpdateMetadata{} } -func (m *EventUpdateMetadata) String() string { return proto.CompactTextString(m) } -func (*EventUpdateMetadata) ProtoMessage() {} -func (*EventUpdateMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_7a1b3dc9634155a0, []int{2} -} -func (m *EventUpdateMetadata) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *EventUpdateMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_EventUpdateMetadata.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *EventUpdateMetadata) XXX_Merge(src proto.Message) { - xxx_messageInfo_EventUpdateMetadata.Merge(m, src) -} -func (m *EventUpdateMetadata) XXX_Size() int { - return m.Size() -} -func (m *EventUpdateMetadata) XXX_DiscardUnknown() { - xxx_messageInfo_EventUpdateMetadata.DiscardUnknown(m) -} - -var xxx_messageInfo_EventUpdateMetadata proto.InternalMessageInfo - -func (m *EventUpdateMetadata) GetStaker() string { - if m != nil { - return m.Staker - } - return "" -} - -func (m *EventUpdateMetadata) GetMoniker() string { - if m != nil { - return m.Moniker - } - return "" -} - -func (m *EventUpdateMetadata) GetWebsite() string { - if m != nil { - return m.Website - } - return "" -} - -func (m *EventUpdateMetadata) GetIdentity() string { - if m != nil { - return m.Identity - } - return "" -} - -func (m *EventUpdateMetadata) GetSecurityContact() string { - if m != nil { - return m.SecurityContact - } - return "" -} - -func (m *EventUpdateMetadata) GetDetails() string { - if m != nil { - return m.Details - } - return "" -} - // EventUpdateCommission ... // emitted_by: EndBlock type EventUpdateCommission struct { @@ -252,7 +102,7 @@ func (m *EventUpdateCommission) Reset() { *m = EventUpdateCommission{} } func (m *EventUpdateCommission) String() string { return proto.CompactTextString(m) } func (*EventUpdateCommission) ProtoMessage() {} func (*EventUpdateCommission) Descriptor() ([]byte, []int) { - return fileDescriptor_7a1b3dc9634155a0, []int{3} + return fileDescriptor_7a1b3dc9634155a0, []int{1} } func (m *EventUpdateCommission) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -301,7 +151,7 @@ func (m *EventClaimCommissionRewards) Reset() { *m = EventClaimCommissio func (m *EventClaimCommissionRewards) String() string { return proto.CompactTextString(m) } func (*EventClaimCommissionRewards) ProtoMessage() {} func (*EventClaimCommissionRewards) Descriptor() ([]byte, []int) { - return fileDescriptor_7a1b3dc9634155a0, []int{4} + return fileDescriptor_7a1b3dc9634155a0, []int{2} } func (m *EventClaimCommissionRewards) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -362,7 +212,7 @@ func (m *EventJoinPool) Reset() { *m = EventJoinPool{} } func (m *EventJoinPool) String() string { return proto.CompactTextString(m) } func (*EventJoinPool) ProtoMessage() {} func (*EventJoinPool) Descriptor() ([]byte, []int) { - return fileDescriptor_7a1b3dc9634155a0, []int{5} + return fileDescriptor_7a1b3dc9634155a0, []int{3} } func (m *EventJoinPool) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -432,7 +282,7 @@ func (m *EventLeavePool) Reset() { *m = EventLeavePool{} } func (m *EventLeavePool) String() string { return proto.CompactTextString(m) } func (*EventLeavePool) ProtoMessage() {} func (*EventLeavePool) Descriptor() ([]byte, []int) { - return fileDescriptor_7a1b3dc9634155a0, []int{6} + return fileDescriptor_7a1b3dc9634155a0, []int{4} } func (m *EventLeavePool) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -475,54 +325,123 @@ func (m *EventLeavePool) GetStaker() string { return "" } +// EventSlash is an event emitted when a protocol node is slashed. +// emitted_by: MsgSubmitBundleProposal, EndBlock +type EventSlash struct { + // pool_id is the unique ID of the pool. + PoolId uint64 `protobuf:"varint,1,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty"` + // staker is the account address of the protocol node. + Staker string `protobuf:"bytes,2,opt,name=staker,proto3" json:"staker,omitempty"` + // amount ... + Amount uint64 `protobuf:"varint,3,opt,name=amount,proto3" json:"amount,omitempty"` + // slash_type + SlashType SlashType `protobuf:"varint,4,opt,name=slash_type,json=slashType,proto3,enum=kyve.stakers.v1beta1.SlashType" json:"slash_type,omitempty"` +} + +func (m *EventSlash) Reset() { *m = EventSlash{} } +func (m *EventSlash) String() string { return proto.CompactTextString(m) } +func (*EventSlash) ProtoMessage() {} +func (*EventSlash) Descriptor() ([]byte, []int) { + return fileDescriptor_7a1b3dc9634155a0, []int{5} +} +func (m *EventSlash) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *EventSlash) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_EventSlash.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *EventSlash) XXX_Merge(src proto.Message) { + xxx_messageInfo_EventSlash.Merge(m, src) +} +func (m *EventSlash) XXX_Size() int { + return m.Size() +} +func (m *EventSlash) XXX_DiscardUnknown() { + xxx_messageInfo_EventSlash.DiscardUnknown(m) +} + +var xxx_messageInfo_EventSlash proto.InternalMessageInfo + +func (m *EventSlash) GetPoolId() uint64 { + if m != nil { + return m.PoolId + } + return 0 +} + +func (m *EventSlash) GetStaker() string { + if m != nil { + return m.Staker + } + return "" +} + +func (m *EventSlash) GetAmount() uint64 { + if m != nil { + return m.Amount + } + return 0 +} + +func (m *EventSlash) GetSlashType() SlashType { + if m != nil { + return m.SlashType + } + return SLASH_TYPE_UNSPECIFIED +} + func init() { proto.RegisterType((*EventUpdateParams)(nil), "kyve.stakers.v1beta1.EventUpdateParams") - proto.RegisterType((*EventCreateStaker)(nil), "kyve.stakers.v1beta1.EventCreateStaker") - proto.RegisterType((*EventUpdateMetadata)(nil), "kyve.stakers.v1beta1.EventUpdateMetadata") proto.RegisterType((*EventUpdateCommission)(nil), "kyve.stakers.v1beta1.EventUpdateCommission") proto.RegisterType((*EventClaimCommissionRewards)(nil), "kyve.stakers.v1beta1.EventClaimCommissionRewards") proto.RegisterType((*EventJoinPool)(nil), "kyve.stakers.v1beta1.EventJoinPool") proto.RegisterType((*EventLeavePool)(nil), "kyve.stakers.v1beta1.EventLeavePool") + proto.RegisterType((*EventSlash)(nil), "kyve.stakers.v1beta1.EventSlash") } func init() { proto.RegisterFile("kyve/stakers/v1beta1/events.proto", fileDescriptor_7a1b3dc9634155a0) } var fileDescriptor_7a1b3dc9634155a0 = []byte{ - // 538 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x93, 0xcf, 0x6e, 0xd3, 0x4e, - 0x10, 0xc7, 0xe3, 0xfc, 0xf2, 0x4b, 0xc8, 0x22, 0xfe, 0x99, 0x02, 0x56, 0x8a, 0xdc, 0x62, 0x2e, - 0x45, 0x42, 0xb6, 0x0a, 0x4f, 0xd0, 0x84, 0x22, 0x01, 0x05, 0x2a, 0x23, 0x90, 0xe0, 0x12, 0x4d, - 0xbc, 0xa3, 0x64, 0x15, 0xdb, 0x63, 0x79, 0x37, 0x49, 0xfd, 0x06, 0x1c, 0x79, 0x17, 0xde, 0x80, - 0x53, 0x8f, 0x3d, 0x22, 0x0e, 0x15, 0x4a, 0x5e, 0x04, 0xd9, 0x5e, 0xa7, 0xae, 0xd4, 0x22, 0xd4, - 0x9b, 0xbf, 0x33, 0xe3, 0xcf, 0x77, 0x66, 0x76, 0x97, 0x3d, 0x9a, 0x66, 0x73, 0xf4, 0xa4, 0x82, - 0x29, 0xa6, 0xd2, 0x9b, 0xef, 0x8e, 0x50, 0xc1, 0xae, 0x87, 0x73, 0x8c, 0x95, 0x74, 0x93, 0x94, - 0x14, 0x99, 0x1b, 0x79, 0x89, 0xab, 0x4b, 0x5c, 0x5d, 0xd2, 0xdb, 0x18, 0xd3, 0x98, 0x8a, 0x02, - 0x2f, 0xff, 0x2a, 0x6b, 0x7b, 0x17, 0xe3, 0x12, 0x48, 0x21, 0xd2, 0x38, 0xe7, 0xbb, 0xc1, 0xee, - 0xec, 0xe7, 0xfc, 0x8f, 0x09, 0x07, 0x85, 0x87, 0x45, 0xce, 0xdc, 0x63, 0x8c, 0x42, 0x3e, 0x2c, - 0x2b, 0x2d, 0x63, 0xdb, 0xd8, 0xb9, 0xfe, 0xec, 0xa1, 0x7b, 0x91, 0xb3, 0x5b, 0xfe, 0xd1, 0x6f, - 0x1d, 0x9f, 0x6e, 0x35, 0xfc, 0x2e, 0x85, 0xfc, 0x0c, 0x11, 0xe3, 0xa2, 0x42, 0x34, 0xff, 0x1d, - 0x11, 0xe3, 0x42, 0x23, 0x2c, 0xd6, 0x49, 0x20, 0x0b, 0x09, 0xb8, 0xf5, 0xdf, 0xb6, 0xb1, 0xd3, - 0xf5, 0x2b, 0xe9, 0x7c, 0xad, 0xba, 0x1e, 0xa4, 0x08, 0x0a, 0x3f, 0x14, 0x40, 0xf3, 0x3e, 0x6b, - 0x97, 0xe8, 0xa2, 0xe3, 0xae, 0xaf, 0x55, 0x1e, 0x87, 0x88, 0x66, 0xb1, 0x2a, 0xda, 0x68, 0xf9, - 0x5a, 0x99, 0x03, 0xc6, 0x02, 0x8a, 0x22, 0x21, 0xa5, 0xa0, 0xb8, 0xb4, 0xe8, 0x3f, 0xce, 0x9b, - 0xf8, 0x75, 0xba, 0xb5, 0x19, 0x90, 0x8c, 0x48, 0x4a, 0x3e, 0x75, 0x05, 0x79, 0x11, 0xa8, 0x89, - 0x7b, 0x80, 0x63, 0x08, 0xb2, 0x17, 0x18, 0xf8, 0xb5, 0xdf, 0x9c, 0x1f, 0x06, 0xbb, 0x5b, 0x5b, - 0xe0, 0x5b, 0x54, 0xc0, 0x41, 0xc1, 0xa5, 0xcd, 0x58, 0xac, 0x13, 0x51, 0x2c, 0xf2, 0x44, 0xb3, - 0x1c, 0x4a, 0xcb, 0x3c, 0xb3, 0xc0, 0x91, 0x14, 0x0a, 0xab, 0x71, 0xb5, 0x34, 0x7b, 0xec, 0x9a, - 0xe0, 0x18, 0x2b, 0xa1, 0x32, 0xab, 0x55, 0xa4, 0xd6, 0xda, 0x7c, 0xc2, 0x6e, 0x4b, 0x0c, 0x66, - 0xa9, 0x50, 0xd9, 0x30, 0xa0, 0x58, 0x41, 0xa0, 0xac, 0xff, 0x8b, 0x9a, 0x5b, 0x55, 0x7c, 0x50, - 0x86, 0x73, 0x03, 0x8e, 0x0a, 0x44, 0x28, 0xad, 0x76, 0x69, 0xa0, 0xa5, 0xa3, 0xd8, 0xbd, 0xda, - 0x0c, 0x83, 0xf5, 0x74, 0x97, 0x4e, 0x71, 0x7e, 0x75, 0xcd, 0xab, 0xad, 0xee, 0x3d, 0xdb, 0x2c, - 0x0f, 0x31, 0x04, 0x11, 0x9d, 0x99, 0xfa, 0xb8, 0x80, 0x94, 0xcb, 0xbf, 0x6d, 0xb0, 0x3c, 0x40, - 0x59, 0x6d, 0x50, 0x4b, 0xe7, 0x88, 0xdd, 0x28, 0x80, 0xaf, 0x49, 0xc4, 0x87, 0x44, 0xa1, 0xf9, - 0x80, 0x75, 0x12, 0xa2, 0x70, 0x28, 0x78, 0xc1, 0x68, 0xf9, 0xed, 0x5c, 0xbe, 0xe2, 0x35, 0x76, - 0xf3, 0x1c, 0xdb, 0x66, 0x6c, 0x0e, 0x21, 0x70, 0x9e, 0xa2, 0x94, 0xfa, 0x18, 0x6a, 0x91, 0xda, - 0x55, 0x6a, 0xd5, 0xaf, 0x92, 0xb3, 0xc7, 0x6e, 0x16, 0xce, 0x07, 0x08, 0x73, 0xbc, 0x92, 0x75, - 0xff, 0xe5, 0xf1, 0xd2, 0x36, 0x4e, 0x96, 0xb6, 0xf1, 0x7b, 0x69, 0x1b, 0xdf, 0x56, 0x76, 0xe3, - 0x64, 0x65, 0x37, 0x7e, 0xae, 0xec, 0xc6, 0x97, 0xa7, 0x63, 0xa1, 0x26, 0xb3, 0x91, 0x1b, 0x50, - 0xe4, 0xbd, 0xf9, 0xfc, 0x69, 0xff, 0x1d, 0xaa, 0x05, 0xa5, 0x53, 0x2f, 0x98, 0x80, 0x88, 0xbd, - 0xa3, 0xf5, 0x03, 0x57, 0x59, 0x82, 0x72, 0xd4, 0x2e, 0x1e, 0xf6, 0xf3, 0x3f, 0x01, 0x00, 0x00, - 0xff, 0xff, 0xca, 0x57, 0xf6, 0xb9, 0x4c, 0x04, 0x00, 0x00, + // 478 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x93, 0xcf, 0x6a, 0xd4, 0x50, + 0x14, 0xc6, 0x27, 0xed, 0x30, 0x43, 0x8e, 0x58, 0x30, 0x54, 0x0d, 0x53, 0xc9, 0xd4, 0xb8, 0xe9, + 0x42, 0x12, 0x5a, 0xf7, 0x42, 0x67, 0xac, 0xa0, 0x16, 0x2d, 0xf1, 0x0f, 0xe8, 0x66, 0xb8, 0x93, + 0x7b, 0x98, 0x09, 0x93, 0xe4, 0x84, 0xdc, 0xdb, 0x4c, 0xf3, 0x16, 0x6e, 0x7c, 0x12, 0x5f, 0xa2, + 0xcb, 0x2e, 0xc5, 0x45, 0x91, 0x99, 0x17, 0x91, 0xdc, 0x24, 0x9d, 0x08, 0x11, 0xb4, 0xbb, 0x7b, + 0xc2, 0x77, 0x7e, 0xdf, 0x8f, 0x4b, 0x2e, 0x3c, 0x5e, 0xe4, 0x19, 0xba, 0x42, 0xb2, 0x05, 0xa6, + 0xc2, 0xcd, 0x0e, 0xa7, 0x28, 0xd9, 0xa1, 0x8b, 0x19, 0xc6, 0x52, 0x38, 0x49, 0x4a, 0x92, 0x8c, + 0xdd, 0x22, 0xe2, 0x54, 0x11, 0xa7, 0x8a, 0x0c, 0x76, 0x67, 0x34, 0x23, 0x15, 0x70, 0x8b, 0x53, + 0x99, 0x1d, 0xb4, 0xe3, 0x12, 0x96, 0xb2, 0xa8, 0xc2, 0x0d, 0xec, 0xd6, 0x48, 0x8d, 0x57, 0x19, + 0xfb, 0xbb, 0x06, 0xf7, 0x4e, 0x0a, 0x87, 0x8f, 0x09, 0x67, 0x12, 0xcf, 0xd4, 0xbe, 0x71, 0x0c, + 0x40, 0x21, 0x9f, 0x94, 0x34, 0x53, 0xdb, 0xd7, 0x0e, 0xee, 0x1c, 0x3d, 0x72, 0xda, 0xec, 0x9c, + 0x72, 0x63, 0xd4, 0xbd, 0xbc, 0x1e, 0x76, 0x3c, 0x9d, 0x42, 0xbe, 0x41, 0xc4, 0xb8, 0xac, 0x11, + 0x5b, 0xff, 0x8e, 0x88, 0x71, 0x59, 0x21, 0x4c, 0xe8, 0x27, 0x2c, 0x0f, 0x89, 0x71, 0x73, 0x7b, + 0x5f, 0x3b, 0xd0, 0xbd, 0x7a, 0xb4, 0x25, 0xdc, 0x6f, 0x48, 0x8f, 0x29, 0x8a, 0x02, 0x21, 0x02, + 0x8a, 0x8d, 0x07, 0xd0, 0x2b, 0xe9, 0x4a, 0x5a, 0xf7, 0xaa, 0xc9, 0x18, 0x03, 0xf8, 0x37, 0x29, + 0x65, 0xa3, 0x8f, 0x9e, 0x14, 0x7d, 0x3f, 0xaf, 0x87, 0x7b, 0x3e, 0x89, 0x88, 0x84, 0xe0, 0x0b, + 0x27, 0x20, 0x37, 0x62, 0x72, 0xee, 0x9c, 0xe2, 0x8c, 0xf9, 0xf9, 0x0b, 0xf4, 0xbd, 0xc6, 0x9a, + 0xfd, 0x0e, 0xf6, 0x54, 0xeb, 0x38, 0x64, 0x41, 0xb4, 0x29, 0xf5, 0x70, 0xc9, 0x52, 0x2e, 0xfe, + 0xda, 0x6d, 0x42, 0x9f, 0x45, 0x74, 0x1e, 0xcb, 0xf2, 0x1a, 0x74, 0xaf, 0x1e, 0xed, 0x0b, 0xb8, + 0xab, 0x80, 0xaf, 0x29, 0x88, 0xcf, 0x88, 0x42, 0xe3, 0x21, 0xf4, 0x13, 0xa2, 0x70, 0x12, 0x70, + 0xc5, 0xe8, 0x7a, 0xbd, 0x62, 0x7c, 0xc5, 0x1b, 0xec, 0xad, 0x3f, 0xd8, 0x16, 0x40, 0xc6, 0x42, + 0xc6, 0x79, 0x8a, 0x42, 0x54, 0xb7, 0xd4, 0xf8, 0x52, 0xec, 0x95, 0x65, 0x66, 0xb7, 0xe4, 0x95, + 0x93, 0x7d, 0x0c, 0x3b, 0xaa, 0xf9, 0x14, 0x59, 0x86, 0xb7, 0xaa, 0xb6, 0xbf, 0x69, 0x00, 0x8a, + 0xf1, 0x3e, 0x64, 0x62, 0xfe, 0xff, 0xea, 0x1b, 0xb5, 0xed, 0xa6, 0x9a, 0xf1, 0x1c, 0x40, 0x14, + 0xc4, 0x89, 0xcc, 0x13, 0x54, 0xda, 0x3b, 0x47, 0xc3, 0xf6, 0x1f, 0x47, 0x35, 0x7f, 0xc8, 0x13, + 0xf4, 0x74, 0x51, 0x1f, 0x47, 0x2f, 0x2f, 0x57, 0x96, 0x76, 0xb5, 0xb2, 0xb4, 0x5f, 0x2b, 0x4b, + 0xfb, 0xba, 0xb6, 0x3a, 0x57, 0x6b, 0xab, 0xf3, 0x63, 0x6d, 0x75, 0xbe, 0x3c, 0x9d, 0x05, 0x72, + 0x7e, 0x3e, 0x75, 0x7c, 0x8a, 0xdc, 0x37, 0x9f, 0x3f, 0x9d, 0xbc, 0x45, 0xb9, 0xa4, 0x74, 0xe1, + 0xfa, 0x73, 0x16, 0xc4, 0xee, 0xc5, 0xcd, 0x4b, 0x29, 0x8a, 0xc5, 0xb4, 0xa7, 0x1e, 0xc8, 0xb3, + 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x6c, 0x29, 0x77, 0x9c, 0xb8, 0x03, 0x00, 0x00, } func (m *EventUpdateParams) Marshal() (dAtA []byte, err error) { @@ -575,116 +494,6 @@ func (m *EventUpdateParams) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *EventCreateStaker) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *EventCreateStaker) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *EventCreateStaker) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size := m.Commission.Size() - i -= size - if _, err := m.Commission.MarshalTo(dAtA[i:]); err != nil { - return 0, err - } - i = encodeVarintEvents(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - if m.Amount != 0 { - i = encodeVarintEvents(dAtA, i, uint64(m.Amount)) - i-- - dAtA[i] = 0x10 - } - if len(m.Staker) > 0 { - i -= len(m.Staker) - copy(dAtA[i:], m.Staker) - i = encodeVarintEvents(dAtA, i, uint64(len(m.Staker))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *EventUpdateMetadata) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *EventUpdateMetadata) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *EventUpdateMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Details) > 0 { - i -= len(m.Details) - copy(dAtA[i:], m.Details) - i = encodeVarintEvents(dAtA, i, uint64(len(m.Details))) - i-- - dAtA[i] = 0x32 - } - if len(m.SecurityContact) > 0 { - i -= len(m.SecurityContact) - copy(dAtA[i:], m.SecurityContact) - i = encodeVarintEvents(dAtA, i, uint64(len(m.SecurityContact))) - i-- - dAtA[i] = 0x2a - } - if len(m.Identity) > 0 { - i -= len(m.Identity) - copy(dAtA[i:], m.Identity) - i = encodeVarintEvents(dAtA, i, uint64(len(m.Identity))) - i-- - dAtA[i] = 0x22 - } - if len(m.Website) > 0 { - i -= len(m.Website) - copy(dAtA[i:], m.Website) - i = encodeVarintEvents(dAtA, i, uint64(len(m.Website))) - i-- - dAtA[i] = 0x1a - } - if len(m.Moniker) > 0 { - i -= len(m.Moniker) - copy(dAtA[i:], m.Moniker) - i = encodeVarintEvents(dAtA, i, uint64(len(m.Moniker))) - i-- - dAtA[i] = 0x12 - } - if len(m.Staker) > 0 { - i -= len(m.Staker) - copy(dAtA[i:], m.Staker) - i = encodeVarintEvents(dAtA, i, uint64(len(m.Staker))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - func (m *EventUpdateCommission) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -844,79 +653,73 @@ func (m *EventLeavePool) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func encodeVarintEvents(dAtA []byte, offset int, v uint64) int { - offset -= sovEvents(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ +func (m *EventSlash) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } - dAtA[offset] = uint8(v) - return base + return dAtA[:n], nil } -func (m *EventUpdateParams) Size() (n int) { - if m == nil { - return 0 - } + +func (m *EventSlash) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *EventSlash) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - l = m.OldParams.Size() - n += 1 + l + sovEvents(uint64(l)) - l = m.NewParams.Size() - n += 1 + l + sovEvents(uint64(l)) - l = len(m.Payload) - if l > 0 { - n += 1 + l + sovEvents(uint64(l)) + if m.SlashType != 0 { + i = encodeVarintEvents(dAtA, i, uint64(m.SlashType)) + i-- + dAtA[i] = 0x20 } - return n -} - -func (m *EventCreateStaker) Size() (n int) { - if m == nil { - return 0 + if m.Amount != 0 { + i = encodeVarintEvents(dAtA, i, uint64(m.Amount)) + i-- + dAtA[i] = 0x18 } - var l int - _ = l - l = len(m.Staker) - if l > 0 { - n += 1 + l + sovEvents(uint64(l)) + if len(m.Staker) > 0 { + i -= len(m.Staker) + copy(dAtA[i:], m.Staker) + i = encodeVarintEvents(dAtA, i, uint64(len(m.Staker))) + i-- + dAtA[i] = 0x12 } - if m.Amount != 0 { - n += 1 + sovEvents(uint64(m.Amount)) + if m.PoolId != 0 { + i = encodeVarintEvents(dAtA, i, uint64(m.PoolId)) + i-- + dAtA[i] = 0x8 } - l = m.Commission.Size() - n += 1 + l + sovEvents(uint64(l)) - return n + return len(dAtA) - i, nil } -func (m *EventUpdateMetadata) Size() (n int) { +func encodeVarintEvents(dAtA []byte, offset int, v uint64) int { + offset -= sovEvents(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *EventUpdateParams) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.Staker) - if l > 0 { - n += 1 + l + sovEvents(uint64(l)) - } - l = len(m.Moniker) - if l > 0 { - n += 1 + l + sovEvents(uint64(l)) - } - l = len(m.Website) - if l > 0 { - n += 1 + l + sovEvents(uint64(l)) - } - l = len(m.Identity) - if l > 0 { - n += 1 + l + sovEvents(uint64(l)) - } - l = len(m.SecurityContact) - if l > 0 { - n += 1 + l + sovEvents(uint64(l)) - } - l = len(m.Details) + l = m.OldParams.Size() + n += 1 + l + sovEvents(uint64(l)) + l = m.NewParams.Size() + n += 1 + l + sovEvents(uint64(l)) + l = len(m.Payload) if l > 0 { n += 1 + l + sovEvents(uint64(l)) } @@ -994,296 +797,35 @@ func (m *EventLeavePool) Size() (n int) { return n } -func sovEvents(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozEvents(x uint64) (n int) { - return sovEvents(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *EventUpdateParams) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: EventUpdateParams: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: EventUpdateParams: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field OldParams", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.OldParams.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NewParams", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.NewParams.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Payload", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Payload = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipEvents(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthEvents - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } +func (m *EventSlash) Size() (n int) { + if m == nil { + return 0 } - - if iNdEx > l { - return io.ErrUnexpectedEOF + var l int + _ = l + if m.PoolId != 0 { + n += 1 + sovEvents(uint64(m.PoolId)) } - return nil -} -func (m *EventCreateStaker) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: EventCreateStaker: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: EventCreateStaker: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Staker", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Staker = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) - } - m.Amount = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Amount |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Commission", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Commission.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipEvents(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthEvents - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } + l = len(m.Staker) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) } - - if iNdEx > l { - return io.ErrUnexpectedEOF + if m.Amount != 0 { + n += 1 + sovEvents(uint64(m.Amount)) } - return nil + if m.SlashType != 0 { + n += 1 + sovEvents(uint64(m.SlashType)) + } + return n +} + +func sovEvents(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozEvents(x uint64) (n int) { + return sovEvents(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } -func (m *EventUpdateMetadata) Unmarshal(dAtA []byte) error { +func (m *EventUpdateParams) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1306,49 +848,17 @@ func (m *EventUpdateMetadata) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: EventUpdateMetadata: wiretype end group for non-group") + return fmt.Errorf("proto: EventUpdateParams: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: EventUpdateMetadata: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: EventUpdateParams: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Staker", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Staker = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Moniker", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field OldParams", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -1358,61 +868,30 @@ func (m *EventUpdateMetadata) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthEvents } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthEvents } if postIndex > l { return io.ErrUnexpectedEOF } - m.Moniker = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Website", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF + if err := m.OldParams.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - m.Website = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 4: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Identity", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field NewParams", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -1422,59 +901,28 @@ func (m *EventUpdateMetadata) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthEvents } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthEvents } if postIndex > l { return io.ErrUnexpectedEOF } - m.Identity = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SecurityContact", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF + if err := m.NewParams.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - m.SecurityContact = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 6: + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Details", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Payload", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1502,7 +950,7 @@ func (m *EventUpdateMetadata) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Details = string(dAtA[iNdEx:postIndex]) + m.Payload = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -2008,6 +1456,145 @@ func (m *EventLeavePool) Unmarshal(dAtA []byte) error { } return nil } +func (m *EventSlash) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EventSlash: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EventSlash: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PoolId", wireType) + } + m.PoolId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.PoolId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Staker", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Staker = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + m.Amount = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Amount |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SlashType", wireType) + } + m.SlashType = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.SlashType |= SlashType(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipEvents(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthEvents + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipEvents(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/stakers/types/message_claim_commission_rewards.go b/x/stakers/types/message_claim_commission_rewards.go deleted file mode 100644 index c7555719..00000000 --- a/x/stakers/types/message_claim_commission_rewards.go +++ /dev/null @@ -1,51 +0,0 @@ -package types - -import ( - "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" - errorsTypes "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" -) - -var ( - _ legacytx.LegacyMsg = &MsgClaimCommissionRewards{} - _ sdk.Msg = &MsgClaimCommissionRewards{} -) - -func (msg *MsgClaimCommissionRewards) GetSignBytes() []byte { - bz := Amino.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) -} - -func (msg *MsgClaimCommissionRewards) GetSigners() []sdk.AccAddress { - validator, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - panic(err) - } - - return []sdk.AccAddress{validator} -} - -func (msg *MsgClaimCommissionRewards) Route() string { - return RouterKey -} - -func (msg *MsgClaimCommissionRewards) Type() string { - return "kyve/stakers/MsgClaimCommissionRewards" -} - -func (msg *MsgClaimCommissionRewards) ValidateBasic() error { - if _, err := sdk.AccAddressFromBech32(msg.Creator); err != nil { - return errors.Wrapf(errorsTypes.ErrInvalidAddress, "invalid validator address: %s", err) - } - - if msg.Amounts.Empty() { - return errors.Wrapf(errorsTypes.ErrInvalidRequest, "amount is empty") - } - - if err := msg.Amounts.Validate(); err != nil { - return errors.Wrapf(errorsTypes.ErrInvalidRequest, "invalid amount: %s", err) - } - - return nil -} diff --git a/x/stakers/types/message_create_staker.go b/x/stakers/types/message_create_staker.go deleted file mode 100644 index 959ea40b..00000000 --- a/x/stakers/types/message_create_staker.go +++ /dev/null @@ -1,55 +0,0 @@ -package types - -import ( - "cosmossdk.io/errors" - "github.com/KYVENetwork/chain/util" - sdk "github.com/cosmos/cosmos-sdk/types" - errorsTypes "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" -) - -var ( - _ legacytx.LegacyMsg = &MsgCreateStaker{} - _ sdk.Msg = &MsgCreateStaker{} -) - -func (msg *MsgCreateStaker) GetSignBytes() []byte { - bz := Amino.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) -} - -func (msg *MsgCreateStaker) GetSigners() []sdk.AccAddress { - creator, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - panic(err) - } - - return []sdk.AccAddress{creator} -} - -func (msg *MsgCreateStaker) Route() string { - return RouterKey -} - -func (msg *MsgCreateStaker) Type() string { - return "kyve/stakers/MsgCreateStaker" -} - -func (msg *MsgCreateStaker) ValidateBasic() error { - if _, err := sdk.AccAddressFromBech32(msg.Creator); err != nil { - return errors.Wrapf(errorsTypes.ErrInvalidAddress, "invalid creator address: %s", err) - } - - if util.ValidateNumber(msg.Amount) != nil { - return errors.Wrapf(errorsTypes.ErrInvalidRequest, "invalid amount") - } - - if msg.Commission.IsNil() { - msg.Commission = DefaultCommission - } - if util.ValidatePercentage(msg.Commission) != nil { - return errors.Wrapf(errorsTypes.ErrInvalidRequest, "invalid commission") - } - - return nil -} diff --git a/x/stakers/types/message_update_metadata.go b/x/stakers/types/message_update_metadata.go deleted file mode 100644 index 5dec8a5b..00000000 --- a/x/stakers/types/message_update_metadata.go +++ /dev/null @@ -1,67 +0,0 @@ -package types - -import ( - "encoding/hex" - - "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" - errorsTypes "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" -) - -var ( - _ legacytx.LegacyMsg = &MsgUpdateMetadata{} - _ sdk.Msg = &MsgUpdateMetadata{} -) - -func (msg *MsgUpdateMetadata) GetSignBytes() []byte { - bz := Amino.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) -} - -func (msg *MsgUpdateMetadata) GetSigners() []sdk.AccAddress { - creator, err := sdk.AccAddressFromBech32(msg.Creator) - if err != nil { - panic(err) - } - - return []sdk.AccAddress{creator} -} - -func (msg *MsgUpdateMetadata) Route() string { - return RouterKey -} - -func (msg *MsgUpdateMetadata) Type() string { - return "kyve/stakers/MsgUpdateMetadata" -} - -func (msg *MsgUpdateMetadata) ValidateBasic() error { - if _, err := sdk.AccAddressFromBech32(msg.Creator); err != nil { - return errors.Wrapf(errorsTypes.ErrInvalidAddress, "invalid creator address (%s)", err) - } - - if len(msg.Identity) > 0 { - if hexBytes, identityErr := hex.DecodeString(msg.Identity); identityErr != nil || len(hexBytes) != 8 { - return errors.Wrapf(errorsTypes.ErrLogic, ErrInvalidIdentityString.Error(), msg.Identity) - } - } - - if len(msg.Website) > 255 { - return errors.Wrapf(errorsTypes.ErrLogic, ErrStringMaxLengthExceeded.Error(), len(msg.Website), 255) - } - - if len(msg.Moniker) > 255 { - return errors.Wrapf(errorsTypes.ErrLogic, ErrStringMaxLengthExceeded.Error(), len(msg.Moniker), 255) - } - - if len(msg.SecurityContact) > 255 { - return errors.Wrapf(errorsTypes.ErrLogic, ErrStringMaxLengthExceeded.Error(), len(msg.Moniker), 255) - } - - if len(msg.Details) > 255 { - return errors.Wrapf(errorsTypes.ErrLogic, ErrStringMaxLengthExceeded.Error(), len(msg.Moniker), 255) - } - - return nil -} diff --git a/x/stakers/types/stakers.pb.go b/x/stakers/types/stakers.pb.go index 7d22f515..58491d2b 100644 --- a/x/stakers/types/stakers.pb.go +++ b/x/stakers/types/stakers.pb.go @@ -27,6 +27,43 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +// SlashType ... +type SlashType int32 + +const ( + // SLASH_TYPE_UNSPECIFIED ... + SLASH_TYPE_UNSPECIFIED SlashType = 0 + // SLASH_TYPE_TIMEOUT ... + SLASH_TYPE_TIMEOUT SlashType = 1 + // SLASH_TYPE_VOTE ... + SLASH_TYPE_VOTE SlashType = 2 + // SLASH_TYPE_UPLOAD ... + SLASH_TYPE_UPLOAD SlashType = 3 +) + +var SlashType_name = map[int32]string{ + 0: "SLASH_TYPE_UNSPECIFIED", + 1: "SLASH_TYPE_TIMEOUT", + 2: "SLASH_TYPE_VOTE", + 3: "SLASH_TYPE_UPLOAD", +} + +var SlashType_value = map[string]int32{ + "SLASH_TYPE_UNSPECIFIED": 0, + "SLASH_TYPE_TIMEOUT": 1, + "SLASH_TYPE_VOTE": 2, + "SLASH_TYPE_UPLOAD": 3, +} + +func (x SlashType) String() string { + return proto.EnumName(SlashType_name, int32(x)) +} + +func (SlashType) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_d209d1a2a74d375d, []int{0} +} + +// deprecated // Staker contains all metadata for a staker // Every address can only create one staker (itself) type Staker struct { @@ -427,6 +464,7 @@ func (m *QueueState) GetHighIndex() uint64 { } func init() { + proto.RegisterEnum("kyve.stakers.v1beta1.SlashType", SlashType_name, SlashType_value) proto.RegisterType((*Staker)(nil), "kyve.stakers.v1beta1.Staker") proto.RegisterType((*Valaccount)(nil), "kyve.stakers.v1beta1.Valaccount") proto.RegisterType((*CommissionChangeEntry)(nil), "kyve.stakers.v1beta1.CommissionChangeEntry") @@ -439,46 +477,51 @@ func init() { } var fileDescriptor_d209d1a2a74d375d = []byte{ - // 612 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0xcd, 0x6e, 0xd3, 0x40, - 0x10, 0x8e, 0x9b, 0x36, 0x4d, 0x86, 0xdf, 0x5a, 0x05, 0x4c, 0xab, 0xba, 0x55, 0x7a, 0x29, 0x08, - 0x6c, 0x15, 0xc4, 0x0b, 0x34, 0x2d, 0xa2, 0xa2, 0x42, 0xe0, 0x4a, 0x95, 0xe0, 0x12, 0x6d, 0xd6, - 0x23, 0x67, 0x15, 0x7b, 0x37, 0xf2, 0x6e, 0x92, 0x46, 0x42, 0xe2, 0x15, 0x38, 0xf0, 0x10, 0x88, - 0x0b, 0x3c, 0x46, 0x8f, 0x3d, 0x22, 0x0e, 0x05, 0x35, 0x07, 0x9e, 0x02, 0x09, 0xed, 0xae, 0x9d, - 0xa6, 0x07, 0x24, 0xd4, 0x8b, 0xbd, 0xdf, 0xf7, 0xcd, 0xce, 0xcc, 0x7e, 0x3b, 0x36, 0x34, 0x7b, - 0xe3, 0x21, 0x86, 0x52, 0x91, 0x1e, 0xe6, 0x32, 0x1c, 0x6e, 0x77, 0x50, 0x91, 0xed, 0x12, 0x07, - 0xfd, 0x5c, 0x28, 0xe1, 0x2e, 0xeb, 0x98, 0xa0, 0xe4, 0x8a, 0x98, 0x95, 0x25, 0x92, 0x31, 0x2e, - 0x42, 0xf3, 0xb4, 0x81, 0x2b, 0x3e, 0x15, 0x32, 0x13, 0x32, 0xec, 0x10, 0x89, 0xd3, 0x5c, 0x54, - 0x30, 0x5e, 0xe8, 0xcb, 0x89, 0x48, 0x84, 0x59, 0x86, 0x7a, 0x65, 0xd9, 0xe6, 0x9f, 0x39, 0xa8, - 0x1d, 0x9a, 0xe4, 0xae, 0x07, 0x8b, 0x24, 0x8e, 0x73, 0x94, 0xd2, 0x73, 0x36, 0x9c, 0xad, 0x46, - 0x54, 0x42, 0xb7, 0x05, 0x40, 0x45, 0x96, 0x31, 0x29, 0x99, 0xe0, 0xde, 0x9c, 0x16, 0x77, 0x36, - 0x4f, 0xce, 0xd6, 0x2b, 0x3f, 0xce, 0xd6, 0x57, 0x6d, 0x59, 0x19, 0xf7, 0x02, 0x26, 0xc2, 0x8c, - 0xa8, 0x6e, 0x70, 0x80, 0x09, 0xa1, 0xe3, 0x5d, 0xa4, 0xd1, 0xcc, 0x36, 0x9d, 0x3e, 0x13, 0x9c, - 0xf5, 0x30, 0xf7, 0xaa, 0x36, 0x7d, 0x01, 0xb5, 0x32, 0xc2, 0x8e, 0x64, 0x0a, 0xbd, 0x79, 0xab, - 0x14, 0xd0, 0x5d, 0x81, 0x3a, 0x8b, 0x91, 0x2b, 0xa6, 0xc6, 0xde, 0x82, 0x91, 0xa6, 0xd8, 0x7d, - 0x00, 0xb7, 0x25, 0xd2, 0x41, 0xce, 0xd4, 0xb8, 0x4d, 0x05, 0x57, 0x84, 0x2a, 0xaf, 0x66, 0x62, - 0x6e, 0x95, 0x7c, 0xcb, 0xd2, 0xba, 0x40, 0x8c, 0x8a, 0xb0, 0x54, 0x7a, 0x8b, 0xb6, 0x40, 0x01, - 0xdd, 0x0f, 0xe0, 0x5e, 0xb4, 0xd8, 0xce, 0x71, 0x44, 0xf2, 0x58, 0x7a, 0xf5, 0x8d, 0xea, 0xd6, - 0xb5, 0x27, 0xf7, 0x03, 0x7b, 0xb4, 0x40, 0x3b, 0x5a, 0x3a, 0x1f, 0xb4, 0x04, 0xe3, 0x3b, 0xcf, - 0xf4, 0xe1, 0xbf, 0xfc, 0x5c, 0xdf, 0x4a, 0x98, 0xea, 0x0e, 0x3a, 0x01, 0x15, 0x59, 0x58, 0xd8, - 0x6f, 0x5f, 0x8f, 0x65, 0xdc, 0x0b, 0xd5, 0xb8, 0x8f, 0xd2, 0x6c, 0x90, 0x9f, 0x7f, 0x7f, 0x7b, - 0xe8, 0x44, 0x4b, 0x17, 0xb5, 0x22, 0x5b, 0xaa, 0xf9, 0xc9, 0x01, 0x38, 0x22, 0x29, 0xa1, 0x54, - 0x0c, 0xb8, 0x72, 0xef, 0xc1, 0x62, 0x5f, 0x88, 0xb4, 0xcd, 0x62, 0x73, 0x07, 0xf3, 0x51, 0x4d, - 0xc3, 0xfd, 0xd8, 0xbd, 0x0b, 0x35, 0x3b, 0x03, 0xd6, 0xfe, 0xa8, 0x40, 0xae, 0x0f, 0x30, 0x24, - 0x69, 0x79, 0x6f, 0xd6, 0xd8, 0x19, 0x46, 0xef, 0xeb, 0x0b, 0xc6, 0x95, 0x34, 0xd6, 0x9a, 0x7c, - 0x1a, 0xb9, 0x6b, 0x00, 0x4c, 0xb6, 0x53, 0x24, 0x43, 0xc6, 0x13, 0xe3, 0x6d, 0x3d, 0x6a, 0x30, - 0x79, 0x60, 0x89, 0xe6, 0x57, 0x07, 0xee, 0xb4, 0xa6, 0xcd, 0xb6, 0xba, 0x84, 0x27, 0xb8, 0xc7, - 0x55, 0x3e, 0x76, 0x97, 0x61, 0x81, 0xf1, 0x18, 0x8f, 0x8b, 0xfe, 0x2c, 0xf8, 0x67, 0x7b, 0x97, - 0x27, 0xa7, 0x7a, 0xb5, 0xc9, 0xd9, 0x84, 0x1b, 0x34, 0x47, 0xa2, 0xf4, 0x15, 0xc5, 0xa4, 0x98, - 0x92, 0x6a, 0x74, 0xbd, 0x24, 0x77, 0x89, 0xc2, 0xe6, 0x7b, 0xb8, 0xa9, 0x9b, 0xc7, 0xd7, 0x42, - 0xa4, 0x57, 0xe9, 0x74, 0xc6, 0xf9, 0xea, 0x25, 0xe7, 0xff, 0xab, 0xfa, 0x0b, 0x80, 0x37, 0x03, - 0x1c, 0xe0, 0xa1, 0x22, 0x0a, 0xdd, 0x55, 0x68, 0xa4, 0x62, 0xd4, 0x9e, 0xad, 0x5e, 0x4f, 0xc5, - 0x68, 0xdf, 0x34, 0xb0, 0x06, 0xd0, 0x65, 0x49, 0xb7, 0x50, 0xe7, 0x8c, 0xda, 0xd0, 0x8c, 0x91, - 0x77, 0x9e, 0x9f, 0x9c, 0xfb, 0xce, 0xe9, 0xb9, 0xef, 0xfc, 0x3a, 0xf7, 0x9d, 0x8f, 0x13, 0xbf, - 0x72, 0x3a, 0xf1, 0x2b, 0xdf, 0x27, 0x7e, 0xe5, 0xdd, 0xa3, 0x99, 0x61, 0x7b, 0xf9, 0xf6, 0x68, - 0xef, 0x15, 0xaa, 0x91, 0xc8, 0x7b, 0x21, 0xed, 0x12, 0xc6, 0xc3, 0xe3, 0xe9, 0x7f, 0xc4, 0x8c, - 0x5d, 0xa7, 0x66, 0xbe, 0xef, 0xa7, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x6c, 0xd5, 0x78, 0x96, - 0x64, 0x04, 0x00, 0x00, + // 696 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0x41, 0x4f, 0x13, 0x4f, + 0x14, 0xef, 0xb6, 0x50, 0xda, 0xf7, 0xff, 0x2b, 0x65, 0x04, 0x5c, 0x4b, 0x58, 0x48, 0xb9, 0x20, + 0xd1, 0xdd, 0xa0, 0xf1, 0x03, 0x40, 0x5b, 0x42, 0x63, 0x85, 0xba, 0x2d, 0x24, 0x78, 0x69, 0xa6, + 0xbb, 0x93, 0x76, 0xd2, 0xed, 0x4e, 0xdd, 0x99, 0xb6, 0x34, 0x31, 0xf1, 0xea, 0xd1, 0x83, 0xdf, + 0xc0, 0x8b, 0xf1, 0xa2, 0x1f, 0x83, 0x23, 0x47, 0xe3, 0x01, 0x0d, 0x1c, 0xfc, 0x14, 0x26, 0x66, + 0x67, 0xb6, 0x65, 0x39, 0x98, 0x18, 0x2e, 0xbb, 0xf3, 0xfb, 0xfd, 0xde, 0xbc, 0xf7, 0xe6, 0x37, + 0x2f, 0x03, 0x85, 0xee, 0x78, 0x48, 0x2c, 0x2e, 0x70, 0x97, 0x04, 0xdc, 0x1a, 0x6e, 0xb7, 0x88, + 0xc0, 0xdb, 0x13, 0x6c, 0xf6, 0x03, 0x26, 0x18, 0x5a, 0x0c, 0x63, 0xcc, 0x09, 0x17, 0xc5, 0xe4, + 0x17, 0x70, 0x8f, 0xfa, 0xcc, 0x92, 0x5f, 0x15, 0x98, 0x37, 0x1c, 0xc6, 0x7b, 0x8c, 0x5b, 0x2d, + 0xcc, 0xc9, 0x34, 0x97, 0xc3, 0xa8, 0x1f, 0xe9, 0x8b, 0x6d, 0xd6, 0x66, 0x72, 0x69, 0x85, 0x2b, + 0xc5, 0x16, 0x7e, 0x27, 0x21, 0x5d, 0x97, 0xc9, 0x91, 0x0e, 0x73, 0xd8, 0x75, 0x03, 0xc2, 0xb9, + 0xae, 0xad, 0x6b, 0x9b, 0x59, 0x7b, 0x02, 0x51, 0x11, 0xc0, 0x61, 0xbd, 0x1e, 0xe5, 0x9c, 0x32, + 0x5f, 0x4f, 0x86, 0xe2, 0xee, 0xc6, 0xd9, 0xc5, 0x5a, 0xe2, 0xfb, 0xc5, 0xda, 0x8a, 0x2a, 0xcb, + 0xdd, 0xae, 0x49, 0x99, 0xd5, 0xc3, 0xa2, 0x63, 0x56, 0x49, 0x1b, 0x3b, 0xe3, 0x12, 0x71, 0xec, + 0xd8, 0xb6, 0x30, 0x7d, 0x8f, 0xf9, 0xb4, 0x4b, 0x02, 0x3d, 0xa5, 0xd2, 0x47, 0x30, 0x54, 0x46, + 0xa4, 0xc5, 0xa9, 0x20, 0xfa, 0x8c, 0x52, 0x22, 0x88, 0xf2, 0x90, 0xa1, 0x2e, 0xf1, 0x05, 0x15, + 0x63, 0x7d, 0x56, 0x4a, 0x53, 0x8c, 0x1e, 0x42, 0x8e, 0x13, 0x67, 0x10, 0x50, 0x31, 0x6e, 0x3a, + 0xcc, 0x17, 0xd8, 0x11, 0x7a, 0x5a, 0xc6, 0xcc, 0x4f, 0xf8, 0xa2, 0xa2, 0xc3, 0x02, 0x2e, 0x11, + 0x98, 0x7a, 0x5c, 0x9f, 0x53, 0x05, 0x22, 0x88, 0xde, 0x02, 0xba, 0x6e, 0xb1, 0x19, 0x90, 0x11, + 0x0e, 0x5c, 0xae, 0x67, 0xd6, 0x53, 0x9b, 0xff, 0x3d, 0x79, 0x60, 0xaa, 0xa3, 0x99, 0xa1, 0xa3, + 0x13, 0xe7, 0xcd, 0x22, 0xa3, 0xfe, 0xee, 0xb3, 0xf0, 0xf0, 0x9f, 0x7f, 0xac, 0x6d, 0xb6, 0xa9, + 0xe8, 0x0c, 0x5a, 0xa6, 0xc3, 0x7a, 0x56, 0x64, 0xbf, 0xfa, 0x3d, 0xe6, 0x6e, 0xd7, 0x12, 0xe3, + 0x3e, 0xe1, 0x72, 0x03, 0xff, 0xf4, 0xeb, 0xeb, 0x96, 0x66, 0x2f, 0x5c, 0xd7, 0xb2, 0x55, 0xa9, + 0xc2, 0x07, 0x0d, 0xe0, 0x18, 0x7b, 0xd8, 0x71, 0xd8, 0xc0, 0x17, 0xe8, 0x3e, 0xcc, 0xf5, 0x19, + 0xf3, 0x9a, 0xd4, 0x95, 0x77, 0x30, 0x63, 0xa7, 0x43, 0x58, 0x71, 0xd1, 0x32, 0xa4, 0xd5, 0x0c, + 0x28, 0xfb, 0xed, 0x08, 0x21, 0x03, 0x60, 0x88, 0xbd, 0xc9, 0xbd, 0x29, 0x63, 0x63, 0x4c, 0xb8, + 0xaf, 0xcf, 0xa8, 0x2f, 0xb8, 0xb4, 0x56, 0xe6, 0x0b, 0x11, 0x5a, 0x05, 0xa0, 0xbc, 0xe9, 0x11, + 0x3c, 0xa4, 0x7e, 0x5b, 0x7a, 0x9b, 0xb1, 0xb3, 0x94, 0x57, 0x15, 0x51, 0xf8, 0xa2, 0xc1, 0x52, + 0x71, 0xda, 0x6c, 0xb1, 0x83, 0xfd, 0x36, 0x29, 0xfb, 0x22, 0x18, 0xa3, 0x45, 0x98, 0xa5, 0xbe, + 0x4b, 0x4e, 0xa3, 0xfe, 0x14, 0xf8, 0x6b, 0x7b, 0x37, 0x27, 0x27, 0x75, 0xbb, 0xc9, 0xd9, 0x80, + 0x3b, 0x4e, 0x40, 0xb0, 0x08, 0xaf, 0xc8, 0xc5, 0xd1, 0x94, 0xa4, 0xec, 0xff, 0x27, 0x64, 0x09, + 0x0b, 0x52, 0x78, 0x03, 0x77, 0xc3, 0xe6, 0x49, 0x8d, 0x31, 0xef, 0x36, 0x9d, 0xc6, 0x9c, 0x4f, + 0xdd, 0x70, 0xfe, 0x9f, 0xaa, 0xef, 0x03, 0xbc, 0x1c, 0x90, 0x01, 0xa9, 0x0b, 0x2c, 0x08, 0x5a, + 0x81, 0xac, 0xc7, 0x46, 0xcd, 0x78, 0xf5, 0x8c, 0xc7, 0x46, 0x15, 0xd9, 0xc0, 0x2a, 0x40, 0x87, + 0xb6, 0x3b, 0x91, 0x9a, 0x94, 0x6a, 0x36, 0x64, 0xa4, 0xbc, 0xf5, 0x1a, 0xb2, 0x75, 0x0f, 0xf3, + 0x4e, 0x63, 0xdc, 0x0f, 0xe7, 0x7f, 0xb9, 0x5e, 0xdd, 0xa9, 0xef, 0x37, 0x1b, 0x27, 0xb5, 0x72, + 0xf3, 0xe8, 0xa0, 0x5e, 0x2b, 0x17, 0x2b, 0x7b, 0x95, 0x72, 0x29, 0x97, 0x40, 0xcb, 0x80, 0x62, + 0x5a, 0xa3, 0xf2, 0xa2, 0x7c, 0x78, 0xd4, 0xc8, 0x69, 0xe8, 0x1e, 0xcc, 0xc7, 0xf8, 0xe3, 0xc3, + 0x46, 0x39, 0x97, 0x44, 0x4b, 0xb0, 0x10, 0x4f, 0x54, 0xab, 0x1e, 0xee, 0x94, 0x72, 0xa9, 0xfc, + 0xcc, 0xbb, 0x8f, 0x46, 0x62, 0x77, 0xef, 0xec, 0xd2, 0xd0, 0xce, 0x2f, 0x0d, 0xed, 0xe7, 0xa5, + 0xa1, 0xbd, 0xbf, 0x32, 0x12, 0xe7, 0x57, 0x46, 0xe2, 0xdb, 0x95, 0x91, 0x78, 0xf5, 0x28, 0x36, + 0xdf, 0xcf, 0x4f, 0x8e, 0xcb, 0x07, 0x44, 0x8c, 0x58, 0xd0, 0xb5, 0x9c, 0x0e, 0xa6, 0xbe, 0x75, + 0x3a, 0x7d, 0xba, 0xe4, 0xa4, 0xb7, 0xd2, 0xf2, 0x49, 0x79, 0xfa, 0x27, 0x00, 0x00, 0xff, 0xff, + 0x5f, 0xcc, 0xa7, 0xe7, 0xd7, 0x04, 0x00, 0x00, } func (m *Staker) Marshal() (dAtA []byte, err error) { diff --git a/x/stakers/types/tx.pb.go b/x/stakers/types/tx.pb.go index e7a66de8..c349403f 100644 --- a/x/stakers/types/tx.pb.go +++ b/x/stakers/types/tx.pb.go @@ -8,10 +8,7 @@ import ( cosmossdk_io_math "cosmossdk.io/math" fmt "fmt" _ "github.com/cosmos/cosmos-proto" - github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" - types "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/cosmos-sdk/types/msgservice" - _ "github.com/cosmos/cosmos-sdk/types/tx/amino" _ "github.com/cosmos/gogoproto/gogoproto" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" @@ -34,229 +31,6 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package -// MsgCreateStaker defines a SDK message for creating a staker. -type MsgCreateStaker struct { - // creator is the address of the staker. - Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` - // amount is the initial self-stake of the staker. - Amount uint64 `protobuf:"varint,2,opt,name=amount,proto3" json:"amount,omitempty"` - // commission is the percentage that is deducted from rewards before - // distributing the staker's delegators. - Commission cosmossdk_io_math.LegacyDec `protobuf:"bytes,3,opt,name=commission,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"commission"` -} - -func (m *MsgCreateStaker) Reset() { *m = MsgCreateStaker{} } -func (m *MsgCreateStaker) String() string { return proto.CompactTextString(m) } -func (*MsgCreateStaker) ProtoMessage() {} -func (*MsgCreateStaker) Descriptor() ([]byte, []int) { - return fileDescriptor_f52b730e69b9fb06, []int{0} -} -func (m *MsgCreateStaker) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgCreateStaker) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgCreateStaker.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgCreateStaker) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgCreateStaker.Merge(m, src) -} -func (m *MsgCreateStaker) XXX_Size() int { - return m.Size() -} -func (m *MsgCreateStaker) XXX_DiscardUnknown() { - xxx_messageInfo_MsgCreateStaker.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgCreateStaker proto.InternalMessageInfo - -func (m *MsgCreateStaker) GetCreator() string { - if m != nil { - return m.Creator - } - return "" -} - -func (m *MsgCreateStaker) GetAmount() uint64 { - if m != nil { - return m.Amount - } - return 0 -} - -// MsgStakePoolResponse defines the Msg/StakePool response type. -type MsgCreateStakerResponse struct { -} - -func (m *MsgCreateStakerResponse) Reset() { *m = MsgCreateStakerResponse{} } -func (m *MsgCreateStakerResponse) String() string { return proto.CompactTextString(m) } -func (*MsgCreateStakerResponse) ProtoMessage() {} -func (*MsgCreateStakerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f52b730e69b9fb06, []int{1} -} -func (m *MsgCreateStakerResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgCreateStakerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgCreateStakerResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgCreateStakerResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgCreateStakerResponse.Merge(m, src) -} -func (m *MsgCreateStakerResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgCreateStakerResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgCreateStakerResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgCreateStakerResponse proto.InternalMessageInfo - -// MsgUpdateMetadata defines a SDK message for claiming the uploader role. -type MsgUpdateMetadata struct { - // creator ... - Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` - // moniker ... - Moniker string `protobuf:"bytes,2,opt,name=moniker,proto3" json:"moniker,omitempty"` - // website ... - Website string `protobuf:"bytes,3,opt,name=website,proto3" json:"website,omitempty"` - // identity from keybase.io - Identity string `protobuf:"bytes,4,opt,name=identity,proto3" json:"identity,omitempty"` - // security_contact ... - SecurityContact string `protobuf:"bytes,5,opt,name=security_contact,json=securityContact,proto3" json:"security_contact,omitempty"` - // details ... - Details string `protobuf:"bytes,6,opt,name=details,proto3" json:"details,omitempty"` -} - -func (m *MsgUpdateMetadata) Reset() { *m = MsgUpdateMetadata{} } -func (m *MsgUpdateMetadata) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateMetadata) ProtoMessage() {} -func (*MsgUpdateMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_f52b730e69b9fb06, []int{2} -} -func (m *MsgUpdateMetadata) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgUpdateMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgUpdateMetadata.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgUpdateMetadata) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateMetadata.Merge(m, src) -} -func (m *MsgUpdateMetadata) XXX_Size() int { - return m.Size() -} -func (m *MsgUpdateMetadata) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateMetadata.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgUpdateMetadata proto.InternalMessageInfo - -func (m *MsgUpdateMetadata) GetCreator() string { - if m != nil { - return m.Creator - } - return "" -} - -func (m *MsgUpdateMetadata) GetMoniker() string { - if m != nil { - return m.Moniker - } - return "" -} - -func (m *MsgUpdateMetadata) GetWebsite() string { - if m != nil { - return m.Website - } - return "" -} - -func (m *MsgUpdateMetadata) GetIdentity() string { - if m != nil { - return m.Identity - } - return "" -} - -func (m *MsgUpdateMetadata) GetSecurityContact() string { - if m != nil { - return m.SecurityContact - } - return "" -} - -func (m *MsgUpdateMetadata) GetDetails() string { - if m != nil { - return m.Details - } - return "" -} - -// MsgUpdateMetadataResponse defines the Msg/MsgUpdateMetadata response type. -type MsgUpdateMetadataResponse struct { -} - -func (m *MsgUpdateMetadataResponse) Reset() { *m = MsgUpdateMetadataResponse{} } -func (m *MsgUpdateMetadataResponse) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateMetadataResponse) ProtoMessage() {} -func (*MsgUpdateMetadataResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f52b730e69b9fb06, []int{3} -} -func (m *MsgUpdateMetadataResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgUpdateMetadataResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgUpdateMetadataResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgUpdateMetadataResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateMetadataResponse.Merge(m, src) -} -func (m *MsgUpdateMetadataResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgUpdateMetadataResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateMetadataResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgUpdateMetadataResponse proto.InternalMessageInfo - // MsgUpdateCommission ... type MsgUpdateCommission struct { // creator ... @@ -269,7 +43,7 @@ func (m *MsgUpdateCommission) Reset() { *m = MsgUpdateCommission{} } func (m *MsgUpdateCommission) String() string { return proto.CompactTextString(m) } func (*MsgUpdateCommission) ProtoMessage() {} func (*MsgUpdateCommission) Descriptor() ([]byte, []int) { - return fileDescriptor_f52b730e69b9fb06, []int{4} + return fileDescriptor_f52b730e69b9fb06, []int{0} } func (m *MsgUpdateCommission) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -313,7 +87,7 @@ func (m *MsgUpdateCommissionResponse) Reset() { *m = MsgUpdateCommission func (m *MsgUpdateCommissionResponse) String() string { return proto.CompactTextString(m) } func (*MsgUpdateCommissionResponse) ProtoMessage() {} func (*MsgUpdateCommissionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f52b730e69b9fb06, []int{5} + return fileDescriptor_f52b730e69b9fb06, []int{1} } func (m *MsgUpdateCommissionResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -342,98 +116,6 @@ func (m *MsgUpdateCommissionResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgUpdateCommissionResponse proto.InternalMessageInfo -// MsgClaimCommissionRewards ... -type MsgClaimCommissionRewards struct { - // creator ... - Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` - // amounts ... - Amounts github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,2,rep,name=amounts,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"amounts"` -} - -func (m *MsgClaimCommissionRewards) Reset() { *m = MsgClaimCommissionRewards{} } -func (m *MsgClaimCommissionRewards) String() string { return proto.CompactTextString(m) } -func (*MsgClaimCommissionRewards) ProtoMessage() {} -func (*MsgClaimCommissionRewards) Descriptor() ([]byte, []int) { - return fileDescriptor_f52b730e69b9fb06, []int{6} -} -func (m *MsgClaimCommissionRewards) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgClaimCommissionRewards) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgClaimCommissionRewards.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgClaimCommissionRewards) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgClaimCommissionRewards.Merge(m, src) -} -func (m *MsgClaimCommissionRewards) XXX_Size() int { - return m.Size() -} -func (m *MsgClaimCommissionRewards) XXX_DiscardUnknown() { - xxx_messageInfo_MsgClaimCommissionRewards.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgClaimCommissionRewards proto.InternalMessageInfo - -func (m *MsgClaimCommissionRewards) GetCreator() string { - if m != nil { - return m.Creator - } - return "" -} - -func (m *MsgClaimCommissionRewards) GetAmounts() github_com_cosmos_cosmos_sdk_types.Coins { - if m != nil { - return m.Amounts - } - return nil -} - -// MsgClaimCommissionRewardsResponse ... -type MsgClaimCommissionRewardsResponse struct { -} - -func (m *MsgClaimCommissionRewardsResponse) Reset() { *m = MsgClaimCommissionRewardsResponse{} } -func (m *MsgClaimCommissionRewardsResponse) String() string { return proto.CompactTextString(m) } -func (*MsgClaimCommissionRewardsResponse) ProtoMessage() {} -func (*MsgClaimCommissionRewardsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f52b730e69b9fb06, []int{7} -} -func (m *MsgClaimCommissionRewardsResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgClaimCommissionRewardsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgClaimCommissionRewardsResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgClaimCommissionRewardsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgClaimCommissionRewardsResponse.Merge(m, src) -} -func (m *MsgClaimCommissionRewardsResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgClaimCommissionRewardsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgClaimCommissionRewardsResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgClaimCommissionRewardsResponse proto.InternalMessageInfo - // MsgJoinPool ... type MsgJoinPool struct { // creator ... @@ -450,7 +132,7 @@ func (m *MsgJoinPool) Reset() { *m = MsgJoinPool{} } func (m *MsgJoinPool) String() string { return proto.CompactTextString(m) } func (*MsgJoinPool) ProtoMessage() {} func (*MsgJoinPool) Descriptor() ([]byte, []int) { - return fileDescriptor_f52b730e69b9fb06, []int{8} + return fileDescriptor_f52b730e69b9fb06, []int{2} } func (m *MsgJoinPool) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -515,7 +197,7 @@ func (m *MsgJoinPoolResponse) Reset() { *m = MsgJoinPoolResponse{} } func (m *MsgJoinPoolResponse) String() string { return proto.CompactTextString(m) } func (*MsgJoinPoolResponse) ProtoMessage() {} func (*MsgJoinPoolResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f52b730e69b9fb06, []int{9} + return fileDescriptor_f52b730e69b9fb06, []int{3} } func (m *MsgJoinPoolResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -556,7 +238,7 @@ func (m *MsgLeavePool) Reset() { *m = MsgLeavePool{} } func (m *MsgLeavePool) String() string { return proto.CompactTextString(m) } func (*MsgLeavePool) ProtoMessage() {} func (*MsgLeavePool) Descriptor() ([]byte, []int) { - return fileDescriptor_f52b730e69b9fb06, []int{10} + return fileDescriptor_f52b730e69b9fb06, []int{4} } func (m *MsgLeavePool) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -607,7 +289,7 @@ func (m *MsgLeavePoolResponse) Reset() { *m = MsgLeavePoolResponse{} } func (m *MsgLeavePoolResponse) String() string { return proto.CompactTextString(m) } func (*MsgLeavePoolResponse) ProtoMessage() {} func (*MsgLeavePoolResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f52b730e69b9fb06, []int{11} + return fileDescriptor_f52b730e69b9fb06, []int{5} } func (m *MsgLeavePoolResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -648,7 +330,7 @@ func (m *MsgUpdateParams) Reset() { *m = MsgUpdateParams{} } func (m *MsgUpdateParams) String() string { return proto.CompactTextString(m) } func (*MsgUpdateParams) ProtoMessage() {} func (*MsgUpdateParams) Descriptor() ([]byte, []int) { - return fileDescriptor_f52b730e69b9fb06, []int{12} + return fileDescriptor_f52b730e69b9fb06, []int{6} } func (m *MsgUpdateParams) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -699,7 +381,7 @@ func (m *MsgUpdateParamsResponse) Reset() { *m = MsgUpdateParamsResponse func (m *MsgUpdateParamsResponse) String() string { return proto.CompactTextString(m) } func (*MsgUpdateParamsResponse) ProtoMessage() {} func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f52b730e69b9fb06, []int{13} + return fileDescriptor_f52b730e69b9fb06, []int{7} } func (m *MsgUpdateParamsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -729,14 +411,8 @@ func (m *MsgUpdateParamsResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgUpdateParamsResponse proto.InternalMessageInfo func init() { - proto.RegisterType((*MsgCreateStaker)(nil), "kyve.stakers.v1beta1.MsgCreateStaker") - proto.RegisterType((*MsgCreateStakerResponse)(nil), "kyve.stakers.v1beta1.MsgCreateStakerResponse") - proto.RegisterType((*MsgUpdateMetadata)(nil), "kyve.stakers.v1beta1.MsgUpdateMetadata") - proto.RegisterType((*MsgUpdateMetadataResponse)(nil), "kyve.stakers.v1beta1.MsgUpdateMetadataResponse") proto.RegisterType((*MsgUpdateCommission)(nil), "kyve.stakers.v1beta1.MsgUpdateCommission") proto.RegisterType((*MsgUpdateCommissionResponse)(nil), "kyve.stakers.v1beta1.MsgUpdateCommissionResponse") - proto.RegisterType((*MsgClaimCommissionRewards)(nil), "kyve.stakers.v1beta1.MsgClaimCommissionRewards") - proto.RegisterType((*MsgClaimCommissionRewardsResponse)(nil), "kyve.stakers.v1beta1.MsgClaimCommissionRewardsResponse") proto.RegisterType((*MsgJoinPool)(nil), "kyve.stakers.v1beta1.MsgJoinPool") proto.RegisterType((*MsgJoinPoolResponse)(nil), "kyve.stakers.v1beta1.MsgJoinPoolResponse") proto.RegisterType((*MsgLeavePool)(nil), "kyve.stakers.v1beta1.MsgLeavePool") @@ -748,60 +424,42 @@ func init() { func init() { proto.RegisterFile("kyve/stakers/v1beta1/tx.proto", fileDescriptor_f52b730e69b9fb06) } var fileDescriptor_f52b730e69b9fb06 = []byte{ - // 836 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0x4b, 0x6f, 0xdb, 0x46, - 0x10, 0x16, 0xfd, 0x92, 0xb5, 0x16, 0xfc, 0x60, 0x55, 0x9b, 0xa2, 0x61, 0xda, 0x96, 0x61, 0x54, - 0x36, 0x6a, 0x12, 0x72, 0xd1, 0x16, 0xf0, 0xad, 0x52, 0x5b, 0xa0, 0xad, 0xd5, 0x1a, 0x34, 0x1a, - 0xe4, 0x71, 0x30, 0x56, 0xe4, 0x82, 0x5a, 0x4b, 0xe4, 0x0a, 0xdc, 0x95, 0x6c, 0xdd, 0x02, 0x1f, - 0x72, 0xce, 0x29, 0xbf, 0x21, 0xc8, 0x25, 0x3e, 0xe4, 0x47, 0xf8, 0x68, 0xe4, 0x14, 0xe4, 0xe0, - 0x04, 0xf6, 0xc1, 0xf7, 0xfc, 0x82, 0x80, 0xaf, 0x15, 0x25, 0xeb, 0xe1, 0x04, 0xb9, 0x88, 0x9a, - 0xfd, 0xbe, 0x99, 0xf9, 0x86, 0x3b, 0x33, 0x12, 0x58, 0xa9, 0xb5, 0x5b, 0x48, 0xa3, 0x0c, 0xd6, - 0x90, 0x4b, 0xb5, 0x56, 0xa1, 0x82, 0x18, 0x2c, 0x68, 0xec, 0x54, 0x6d, 0xb8, 0x84, 0x11, 0x31, - 0xe3, 0xc1, 0x6a, 0x08, 0xab, 0x21, 0x2c, 0x2f, 0x40, 0x1b, 0x3b, 0x44, 0xf3, 0x3f, 0x03, 0xa2, - 0xac, 0x18, 0x84, 0xda, 0x84, 0x6a, 0x15, 0x48, 0x11, 0x0f, 0x63, 0x10, 0xec, 0x84, 0xf8, 0x52, - 0x88, 0xdb, 0xd4, 0xd2, 0x5a, 0x05, 0xef, 0x11, 0x02, 0xd9, 0x00, 0x38, 0xf2, 0x2d, 0x2d, 0x30, - 0x42, 0x28, 0x63, 0x11, 0x8b, 0x04, 0xe7, 0xde, 0xb7, 0xe0, 0x34, 0xf7, 0x42, 0x00, 0x73, 0x65, - 0x6a, 0x95, 0x5c, 0x04, 0x19, 0x3a, 0xf4, 0x95, 0x89, 0x12, 0x48, 0x1a, 0x9e, 0x4d, 0x5c, 0x49, - 0x58, 0x13, 0xf2, 0x29, 0x3d, 0x32, 0xc5, 0x45, 0x30, 0x05, 0x6d, 0xd2, 0x74, 0x98, 0x34, 0xb6, - 0x26, 0xe4, 0x27, 0xf4, 0xd0, 0x12, 0x4b, 0x00, 0x18, 0xc4, 0xb6, 0x31, 0xa5, 0x98, 0x38, 0xd2, - 0xb8, 0xe7, 0x54, 0xdc, 0xb8, 0xb8, 0x5a, 0x4d, 0xbc, 0xbf, 0x5a, 0x5d, 0x0e, 0x54, 0x50, 0xb3, - 0xa6, 0x62, 0xa2, 0xd9, 0x90, 0x55, 0xd5, 0x7d, 0x64, 0x41, 0xa3, 0xfd, 0x3b, 0x32, 0xf4, 0x98, - 0xdb, 0x5e, 0xfa, 0xec, 0xf6, 0x7c, 0x3b, 0x4a, 0x95, 0xcb, 0x82, 0xa5, 0x1e, 0x5d, 0x3a, 0xa2, - 0x0d, 0xe2, 0x50, 0x94, 0xbb, 0x14, 0xc0, 0x42, 0x99, 0x5a, 0xff, 0x37, 0x4c, 0xc8, 0x50, 0x19, - 0x31, 0x68, 0x42, 0x06, 0x87, 0xa8, 0x96, 0x40, 0xd2, 0x26, 0x0e, 0xae, 0x21, 0xd7, 0x97, 0x9d, - 0xd2, 0x23, 0xd3, 0x43, 0x4e, 0x50, 0x85, 0x62, 0x86, 0x02, 0xd1, 0x7a, 0x64, 0x8a, 0x32, 0x98, - 0xc6, 0x26, 0x72, 0x18, 0x66, 0x6d, 0x69, 0xc2, 0x87, 0xb8, 0x2d, 0x6e, 0x81, 0x79, 0x8a, 0x8c, - 0xa6, 0x8b, 0x59, 0xfb, 0xc8, 0x20, 0x0e, 0x83, 0x06, 0x93, 0x26, 0x7d, 0xce, 0x5c, 0x74, 0x5e, - 0x0a, 0x8e, 0xbd, 0x04, 0x26, 0x62, 0x10, 0xd7, 0xa9, 0x34, 0x15, 0x24, 0x08, 0xcd, 0x9e, 0x6a, - 0x97, 0x41, 0xf6, 0x4e, 0x45, 0xbc, 0xde, 0x33, 0x01, 0x7c, 0xc7, 0xd1, 0x12, 0x7f, 0x61, 0x43, - 0x2a, 0xee, 0xbe, 0x8f, 0xb1, 0x6f, 0x71, 0x1f, 0x2b, 0x60, 0xb9, 0x8f, 0x06, 0xae, 0xf1, 0xb5, - 0xe0, 0x57, 0x50, 0xaa, 0x43, 0x6c, 0xc7, 0xe1, 0x13, 0xe8, 0x9a, 0x74, 0x88, 0xd2, 0x63, 0x90, - 0x0c, 0x7a, 0x88, 0x4a, 0x63, 0x6b, 0xe3, 0xf9, 0x99, 0xdd, 0xac, 0x1a, 0x76, 0xad, 0xd7, 0xfb, - 0xd1, 0x8c, 0xa8, 0x25, 0x82, 0x9d, 0xe2, 0xcf, 0x5e, 0x05, 0xaf, 0x3e, 0xac, 0xe6, 0x2d, 0xcc, - 0xaa, 0xcd, 0x8a, 0x6a, 0x10, 0x3b, 0x6c, 0xf1, 0xf0, 0xb1, 0x43, 0xcd, 0x9a, 0xc6, 0xda, 0x0d, - 0x44, 0x7d, 0x07, 0xfa, 0xf2, 0xf6, 0x7c, 0x5b, 0xd0, 0xa3, 0x04, 0x3d, 0x05, 0x6d, 0x80, 0xf5, - 0x81, 0x82, 0x79, 0x59, 0xcf, 0x04, 0x30, 0x53, 0xa6, 0xd6, 0xdf, 0x04, 0x3b, 0x07, 0x84, 0xd4, - 0x87, 0x14, 0xb2, 0x04, 0x92, 0x0d, 0x42, 0xea, 0x47, 0xd8, 0x8c, 0x66, 0xc3, 0x33, 0xff, 0x32, - 0x45, 0x05, 0x80, 0x16, 0xac, 0x43, 0xd3, 0x74, 0x11, 0xa5, 0x61, 0x9b, 0xc5, 0x4e, 0x62, 0x33, - 0x35, 0x11, 0x9f, 0xa9, 0x1e, 0xb5, 0xdf, 0xfb, 0x2d, 0x10, 0xe9, 0xe0, 0xfa, 0xfe, 0x03, 0xe9, - 0x32, 0xb5, 0xf6, 0x11, 0x6c, 0xa1, 0xaf, 0xd4, 0xd7, 0x93, 0x67, 0x11, 0x64, 0xe2, 0x01, 0x79, - 0x22, 0xea, 0xaf, 0x89, 0xe0, 0xfa, 0x0f, 0xa0, 0x0b, 0x6d, 0x2a, 0xfe, 0x02, 0x52, 0xb0, 0xc9, - 0xaa, 0xc4, 0xeb, 0xf7, 0x20, 0x5b, 0x51, 0x7a, 0xfb, 0x66, 0x27, 0x13, 0xde, 0xdf, 0x6f, 0x41, - 0x7d, 0x87, 0xcc, 0xc5, 0x8e, 0xa5, 0x77, 0xa8, 0x9e, 0xc6, 0x06, 0x6c, 0xd7, 0x09, 0x34, 0xa3, - 0x71, 0x0c, 0xcd, 0xbd, 0x59, 0x4f, 0x4a, 0x87, 0x19, 0xee, 0x80, 0x78, 0xd2, 0x48, 0xcf, 0xee, - 0xa7, 0x49, 0x30, 0x5e, 0xa6, 0x96, 0x68, 0x82, 0x74, 0xd7, 0xee, 0xda, 0x54, 0xfb, 0xed, 0x58, - 0xb5, 0x67, 0x95, 0xc8, 0x3b, 0xf7, 0xa2, 0x45, 0xd9, 0xc4, 0x63, 0x30, 0xdb, 0xb3, 0x6d, 0x7e, - 0x18, 0x18, 0xa0, 0x9b, 0x28, 0x6b, 0xf7, 0x24, 0xf2, 0x5c, 0x0d, 0x30, 0x7f, 0x67, 0xd2, 0xb7, - 0x46, 0x04, 0xe9, 0x50, 0xe5, 0xc2, 0xbd, 0xa9, 0x3c, 0xe3, 0x99, 0x00, 0x16, 0x07, 0x0c, 0xee, - 0x60, 0xf5, 0xfd, 0x1d, 0xe4, 0x5f, 0xbf, 0xd0, 0x81, 0x8b, 0x78, 0x08, 0xa6, 0xf9, 0x94, 0xad, - 0x0f, 0x0c, 0x12, 0x51, 0xe4, 0xad, 0x91, 0x14, 0x1e, 0xf9, 0x09, 0x48, 0x75, 0x06, 0x24, 0x37, - 0xd0, 0x8f, 0x73, 0xe4, 0xed, 0xd1, 0x1c, 0x1e, 0xdc, 0x04, 0xe9, 0xae, 0xa1, 0xd8, 0x1c, 0xf1, - 0xfa, 0x03, 0xda, 0x90, 0xfe, 0xeb, 0xd7, 0xed, 0xf2, 0xe4, 0x53, 0x6f, 0x93, 0x15, 0xff, 0xbc, - 0xb8, 0x56, 0x84, 0xcb, 0x6b, 0x45, 0xf8, 0x78, 0xad, 0x08, 0xcf, 0x6f, 0x94, 0xc4, 0xe5, 0x8d, - 0x92, 0x78, 0x77, 0xa3, 0x24, 0x1e, 0xff, 0x18, 0x5b, 0x89, 0xff, 0x3c, 0x7a, 0xf0, 0xc7, 0xbf, - 0x88, 0x9d, 0x10, 0xb7, 0xa6, 0x19, 0x55, 0x88, 0x1d, 0xed, 0x94, 0xff, 0x25, 0xf1, 0x97, 0x63, - 0x65, 0xca, 0xff, 0xed, 0xff, 0xe9, 0x73, 0x00, 0x00, 0x00, 0xff, 0xff, 0xbe, 0xa4, 0x12, 0x10, - 0xaf, 0x08, 0x00, 0x00, + // 549 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0x4d, 0x6f, 0xd3, 0x40, + 0x10, 0x8d, 0x49, 0x49, 0xc9, 0x10, 0x01, 0x32, 0xa1, 0x71, 0x5d, 0xd5, 0x85, 0x20, 0x24, 0x1a, + 0x51, 0x5b, 0x01, 0x89, 0x43, 0x6f, 0xa4, 0x80, 0x04, 0x34, 0x50, 0x19, 0x81, 0xf8, 0x38, 0x54, + 0x1b, 0x7b, 0xb5, 0xb1, 0x12, 0x7b, 0x2c, 0xef, 0x26, 0x34, 0x37, 0xd4, 0x03, 0x67, 0xee, 0xfc, + 0x89, 0x1e, 0xf8, 0x11, 0x3d, 0x56, 0x9c, 0x10, 0x87, 0x0a, 0x25, 0x87, 0xfe, 0x0d, 0xe4, 0x6c, + 0xec, 0x84, 0x90, 0x92, 0xaa, 0x27, 0xfb, 0xed, 0x7b, 0x33, 0xef, 0xed, 0xce, 0x6a, 0x61, 0xb5, + 0xd5, 0xeb, 0x52, 0x8b, 0x0b, 0xd2, 0xa2, 0x11, 0xb7, 0xba, 0xd5, 0x06, 0x15, 0xa4, 0x6a, 0x89, + 0x3d, 0x33, 0x8c, 0x50, 0xa0, 0x5a, 0x8c, 0x69, 0x73, 0x44, 0x9b, 0x23, 0x5a, 0x2f, 0x39, 0xc8, + 0x7d, 0xe4, 0x96, 0xcf, 0x99, 0xd5, 0xad, 0xc6, 0x1f, 0x29, 0xd7, 0x97, 0x25, 0xb1, 0x3b, 0x44, + 0x96, 0x04, 0x23, 0xaa, 0xc8, 0x90, 0xa1, 0x5c, 0x8f, 0xff, 0xe4, 0x6a, 0x79, 0x5f, 0x81, 0xeb, + 0x75, 0xce, 0xde, 0x84, 0x2e, 0x11, 0x74, 0x0b, 0x7d, 0xdf, 0xe3, 0xdc, 0xc3, 0x40, 0xd5, 0x60, + 0xd1, 0x89, 0x28, 0x11, 0x18, 0x69, 0xca, 0x4d, 0xe5, 0x6e, 0xde, 0x4e, 0xa0, 0xba, 0x05, 0xe0, + 0xa4, 0x3a, 0xed, 0x42, 0x4c, 0xd6, 0x6e, 0x1f, 0x1e, 0xaf, 0x65, 0x7e, 0x1d, 0xaf, 0xad, 0x48, + 0x47, 0xee, 0xb6, 0x4c, 0x0f, 0x2d, 0x9f, 0x88, 0xa6, 0xb9, 0x4d, 0x19, 0x71, 0x7a, 0x8f, 0xa9, + 0x63, 0x4f, 0x94, 0x6d, 0x16, 0xf6, 0x4f, 0x0e, 0x2a, 0x49, 0xcb, 0xf2, 0x2a, 0xac, 0xcc, 0xc8, + 0x60, 0x53, 0x1e, 0x62, 0xc0, 0x69, 0xf9, 0x8b, 0x02, 0x97, 0xeb, 0x9c, 0x3d, 0x47, 0x2f, 0xd8, + 0x41, 0x6c, 0xff, 0x27, 0x5b, 0x09, 0x16, 0x43, 0xc4, 0xf6, 0xae, 0xe7, 0x0e, 0x83, 0x2d, 0xd8, + 0xb9, 0x18, 0x3e, 0x73, 0x55, 0x03, 0xa0, 0x4b, 0xda, 0xc4, 0x75, 0x23, 0xca, 0xb9, 0x96, 0x1d, + 0x56, 0x4d, 0xac, 0xa8, 0x4b, 0x90, 0x23, 0x3e, 0x76, 0x02, 0xa1, 0x2d, 0xc8, 0x3a, 0x89, 0xa6, + 0x72, 0xde, 0x18, 0x9e, 0x55, 0x92, 0x23, 0xcd, 0xf7, 0x0a, 0x0a, 0x75, 0xce, 0xb6, 0x29, 0xe9, + 0xd2, 0x73, 0xe6, 0x9b, 0xf2, 0x59, 0x82, 0xe2, 0x64, 0xc3, 0xd4, 0x88, 0xc3, 0xd5, 0xf4, 0x9c, + 0x76, 0x48, 0x44, 0x7c, 0xae, 0x3e, 0x84, 0x3c, 0xe9, 0x88, 0x26, 0x46, 0x9e, 0xe8, 0x49, 0xb7, + 0x9a, 0xf6, 0xe3, 0xfb, 0x46, 0x71, 0x34, 0xfa, 0x47, 0x72, 0x7f, 0xaf, 0x45, 0xe4, 0x05, 0xcc, + 0x1e, 0x4b, 0xe3, 0x8c, 0x21, 0xe9, 0xb5, 0x91, 0xc8, 0x24, 0x79, 0x3b, 0x81, 0x9b, 0x57, 0xe2, + 0x28, 0x63, 0x65, 0x79, 0x19, 0x4a, 0x53, 0xa6, 0x49, 0x9e, 0xfb, 0xdf, 0xb2, 0x90, 0xad, 0x73, + 0xa6, 0x86, 0x70, 0xed, 0x9f, 0x0b, 0xb4, 0x6e, 0xce, 0xba, 0xb9, 0xe6, 0x8c, 0x39, 0xeb, 0xd5, + 0x33, 0x4b, 0x13, 0x67, 0xf5, 0x1d, 0x5c, 0x4a, 0xaf, 0xc3, 0xad, 0x53, 0xcb, 0x13, 0x89, 0xbe, + 0x3e, 0x57, 0x92, 0x76, 0xfe, 0x08, 0xf9, 0xf1, 0x24, 0xcb, 0xa7, 0xd6, 0xa5, 0x1a, 0xbd, 0x32, + 0x5f, 0x93, 0x36, 0x77, 0xa1, 0xf0, 0xd7, 0xf4, 0xee, 0xcc, 0xd9, 0xb9, 0x94, 0xe9, 0x1b, 0x67, + 0x92, 0x25, 0x2e, 0xfa, 0xc5, 0xcf, 0x27, 0x07, 0x15, 0xa5, 0xf6, 0xf4, 0xb0, 0x6f, 0x28, 0x47, + 0x7d, 0x43, 0xf9, 0xdd, 0x37, 0x94, 0xaf, 0x03, 0x23, 0x73, 0x34, 0x30, 0x32, 0x3f, 0x07, 0x46, + 0xe6, 0xc3, 0x3d, 0xe6, 0x89, 0x66, 0xa7, 0x61, 0x3a, 0xe8, 0x5b, 0x2f, 0xde, 0xbf, 0x7d, 0xf2, + 0x92, 0x8a, 0x4f, 0x18, 0xb5, 0x2c, 0xa7, 0x49, 0xbc, 0xc0, 0xda, 0x4b, 0x5f, 0x23, 0xd1, 0x0b, + 0x29, 0x6f, 0xe4, 0x86, 0x2f, 0xc5, 0x83, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xe4, 0xbe, 0x16, + 0xb1, 0xaa, 0x04, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -816,14 +474,8 @@ const _ = grpc.SupportPackageIsVersion4 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type MsgClient interface { - // CreateStaker ... - CreateStaker(ctx context.Context, in *MsgCreateStaker, opts ...grpc.CallOption) (*MsgCreateStakerResponse, error) - // UpdateMetadata ... - UpdateMetadata(ctx context.Context, in *MsgUpdateMetadata, opts ...grpc.CallOption) (*MsgUpdateMetadataResponse, error) // UpdateCommission ... UpdateCommission(ctx context.Context, in *MsgUpdateCommission, opts ...grpc.CallOption) (*MsgUpdateCommissionResponse, error) - // ClaimCommissionRewards ... - ClaimCommissionRewards(ctx context.Context, in *MsgClaimCommissionRewards, opts ...grpc.CallOption) (*MsgClaimCommissionRewardsResponse, error) // JoinPool ... JoinPool(ctx context.Context, in *MsgJoinPool, opts ...grpc.CallOption) (*MsgJoinPoolResponse, error) // LeavePool ... @@ -841,24 +493,6 @@ func NewMsgClient(cc grpc1.ClientConn) MsgClient { return &msgClient{cc} } -func (c *msgClient) CreateStaker(ctx context.Context, in *MsgCreateStaker, opts ...grpc.CallOption) (*MsgCreateStakerResponse, error) { - out := new(MsgCreateStakerResponse) - err := c.cc.Invoke(ctx, "/kyve.stakers.v1beta1.Msg/CreateStaker", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *msgClient) UpdateMetadata(ctx context.Context, in *MsgUpdateMetadata, opts ...grpc.CallOption) (*MsgUpdateMetadataResponse, error) { - out := new(MsgUpdateMetadataResponse) - err := c.cc.Invoke(ctx, "/kyve.stakers.v1beta1.Msg/UpdateMetadata", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *msgClient) UpdateCommission(ctx context.Context, in *MsgUpdateCommission, opts ...grpc.CallOption) (*MsgUpdateCommissionResponse, error) { out := new(MsgUpdateCommissionResponse) err := c.cc.Invoke(ctx, "/kyve.stakers.v1beta1.Msg/UpdateCommission", in, out, opts...) @@ -868,15 +502,6 @@ func (c *msgClient) UpdateCommission(ctx context.Context, in *MsgUpdateCommissio return out, nil } -func (c *msgClient) ClaimCommissionRewards(ctx context.Context, in *MsgClaimCommissionRewards, opts ...grpc.CallOption) (*MsgClaimCommissionRewardsResponse, error) { - out := new(MsgClaimCommissionRewardsResponse) - err := c.cc.Invoke(ctx, "/kyve.stakers.v1beta1.Msg/ClaimCommissionRewards", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *msgClient) JoinPool(ctx context.Context, in *MsgJoinPool, opts ...grpc.CallOption) (*MsgJoinPoolResponse, error) { out := new(MsgJoinPoolResponse) err := c.cc.Invoke(ctx, "/kyve.stakers.v1beta1.Msg/JoinPool", in, out, opts...) @@ -906,14 +531,8 @@ func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts // MsgServer is the server API for Msg service. type MsgServer interface { - // CreateStaker ... - CreateStaker(context.Context, *MsgCreateStaker) (*MsgCreateStakerResponse, error) - // UpdateMetadata ... - UpdateMetadata(context.Context, *MsgUpdateMetadata) (*MsgUpdateMetadataResponse, error) // UpdateCommission ... UpdateCommission(context.Context, *MsgUpdateCommission) (*MsgUpdateCommissionResponse, error) - // ClaimCommissionRewards ... - ClaimCommissionRewards(context.Context, *MsgClaimCommissionRewards) (*MsgClaimCommissionRewardsResponse, error) // JoinPool ... JoinPool(context.Context, *MsgJoinPool) (*MsgJoinPoolResponse, error) // LeavePool ... @@ -927,18 +546,9 @@ type MsgServer interface { type UnimplementedMsgServer struct { } -func (*UnimplementedMsgServer) CreateStaker(ctx context.Context, req *MsgCreateStaker) (*MsgCreateStakerResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateStaker not implemented") -} -func (*UnimplementedMsgServer) UpdateMetadata(ctx context.Context, req *MsgUpdateMetadata) (*MsgUpdateMetadataResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateMetadata not implemented") -} func (*UnimplementedMsgServer) UpdateCommission(ctx context.Context, req *MsgUpdateCommission) (*MsgUpdateCommissionResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateCommission not implemented") } -func (*UnimplementedMsgServer) ClaimCommissionRewards(ctx context.Context, req *MsgClaimCommissionRewards) (*MsgClaimCommissionRewardsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ClaimCommissionRewards not implemented") -} func (*UnimplementedMsgServer) JoinPool(ctx context.Context, req *MsgJoinPool) (*MsgJoinPoolResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method JoinPool not implemented") } @@ -953,128 +563,74 @@ func RegisterMsgServer(s grpc1.Server, srv MsgServer) { s.RegisterService(&_Msg_serviceDesc, srv) } -func _Msg_CreateStaker_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgCreateStaker) +func _Msg_UpdateCommission_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateCommission) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(MsgServer).CreateStaker(ctx, in) + return srv.(MsgServer).UpdateCommission(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/kyve.stakers.v1beta1.Msg/CreateStaker", + FullMethod: "/kyve.stakers.v1beta1.Msg/UpdateCommission", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).CreateStaker(ctx, req.(*MsgCreateStaker)) + return srv.(MsgServer).UpdateCommission(ctx, req.(*MsgUpdateCommission)) } return interceptor(ctx, in, info, handler) } -func _Msg_UpdateMetadata_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgUpdateMetadata) +func _Msg_JoinPool_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgJoinPool) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(MsgServer).UpdateMetadata(ctx, in) + return srv.(MsgServer).JoinPool(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/kyve.stakers.v1beta1.Msg/UpdateMetadata", + FullMethod: "/kyve.stakers.v1beta1.Msg/JoinPool", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).UpdateMetadata(ctx, req.(*MsgUpdateMetadata)) + return srv.(MsgServer).JoinPool(ctx, req.(*MsgJoinPool)) } return interceptor(ctx, in, info, handler) } -func _Msg_UpdateCommission_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgUpdateCommission) +func _Msg_LeavePool_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgLeavePool) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(MsgServer).UpdateCommission(ctx, in) + return srv.(MsgServer).LeavePool(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/kyve.stakers.v1beta1.Msg/UpdateCommission", + FullMethod: "/kyve.stakers.v1beta1.Msg/LeavePool", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).UpdateCommission(ctx, req.(*MsgUpdateCommission)) + return srv.(MsgServer).LeavePool(ctx, req.(*MsgLeavePool)) } return interceptor(ctx, in, info, handler) } -func _Msg_ClaimCommissionRewards_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgClaimCommissionRewards) +func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateParams) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(MsgServer).ClaimCommissionRewards(ctx, in) + return srv.(MsgServer).UpdateParams(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/kyve.stakers.v1beta1.Msg/ClaimCommissionRewards", + FullMethod: "/kyve.stakers.v1beta1.Msg/UpdateParams", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).ClaimCommissionRewards(ctx, req.(*MsgClaimCommissionRewards)) - } - return interceptor(ctx, in, info, handler) -} - -func _Msg_JoinPool_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgJoinPool) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).JoinPool(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/kyve.stakers.v1beta1.Msg/JoinPool", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).JoinPool(ctx, req.(*MsgJoinPool)) - } - return interceptor(ctx, in, info, handler) -} - -func _Msg_LeavePool_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgLeavePool) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).LeavePool(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/kyve.stakers.v1beta1.Msg/LeavePool", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).LeavePool(ctx, req.(*MsgLeavePool)) - } - return interceptor(ctx, in, info, handler) -} - -func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgUpdateParams) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).UpdateParams(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/kyve.stakers.v1beta1.Msg/UpdateParams", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams)) + return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams)) } return interceptor(ctx, in, info, handler) } @@ -1084,22 +640,10 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ ServiceName: "kyve.stakers.v1beta1.Msg", HandlerType: (*MsgServer)(nil), Methods: []grpc.MethodDesc{ - { - MethodName: "CreateStaker", - Handler: _Msg_CreateStaker_Handler, - }, - { - MethodName: "UpdateMetadata", - Handler: _Msg_UpdateMetadata_Handler, - }, { MethodName: "UpdateCommission", Handler: _Msg_UpdateCommission_Handler, }, - { - MethodName: "ClaimCommissionRewards", - Handler: _Msg_ClaimCommissionRewards_Handler, - }, { MethodName: "JoinPool", Handler: _Msg_JoinPool_Handler, @@ -1117,162 +661,6 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ Metadata: "kyve/stakers/v1beta1/tx.proto", } -func (m *MsgCreateStaker) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgCreateStaker) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgCreateStaker) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size := m.Commission.Size() - i -= size - if _, err := m.Commission.MarshalTo(dAtA[i:]); err != nil { - return 0, err - } - i = encodeVarintTx(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - if m.Amount != 0 { - i = encodeVarintTx(dAtA, i, uint64(m.Amount)) - i-- - dAtA[i] = 0x10 - } - if len(m.Creator) > 0 { - i -= len(m.Creator) - copy(dAtA[i:], m.Creator) - i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgCreateStakerResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgCreateStakerResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgCreateStakerResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *MsgUpdateMetadata) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgUpdateMetadata) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgUpdateMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Details) > 0 { - i -= len(m.Details) - copy(dAtA[i:], m.Details) - i = encodeVarintTx(dAtA, i, uint64(len(m.Details))) - i-- - dAtA[i] = 0x32 - } - if len(m.SecurityContact) > 0 { - i -= len(m.SecurityContact) - copy(dAtA[i:], m.SecurityContact) - i = encodeVarintTx(dAtA, i, uint64(len(m.SecurityContact))) - i-- - dAtA[i] = 0x2a - } - if len(m.Identity) > 0 { - i -= len(m.Identity) - copy(dAtA[i:], m.Identity) - i = encodeVarintTx(dAtA, i, uint64(len(m.Identity))) - i-- - dAtA[i] = 0x22 - } - if len(m.Website) > 0 { - i -= len(m.Website) - copy(dAtA[i:], m.Website) - i = encodeVarintTx(dAtA, i, uint64(len(m.Website))) - i-- - dAtA[i] = 0x1a - } - if len(m.Moniker) > 0 { - i -= len(m.Moniker) - copy(dAtA[i:], m.Moniker) - i = encodeVarintTx(dAtA, i, uint64(len(m.Moniker))) - i-- - dAtA[i] = 0x12 - } - if len(m.Creator) > 0 { - i -= len(m.Creator) - copy(dAtA[i:], m.Creator) - i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgUpdateMetadataResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgUpdateMetadataResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgUpdateMetadataResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - func (m *MsgUpdateCommission) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1336,73 +724,6 @@ func (m *MsgUpdateCommissionResponse) MarshalToSizedBuffer(dAtA []byte) (int, er return len(dAtA) - i, nil } -func (m *MsgClaimCommissionRewards) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgClaimCommissionRewards) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgClaimCommissionRewards) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Amounts) > 0 { - for iNdEx := len(m.Amounts) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Amounts[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - } - if len(m.Creator) > 0 { - i -= len(m.Creator) - copy(dAtA[i:], m.Creator) - i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgClaimCommissionRewardsResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgClaimCommissionRewardsResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgClaimCommissionRewardsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - func (m *MsgJoinPool) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1602,7 +923,7 @@ func encodeVarintTx(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) return base } -func (m *MsgCreateStaker) Size() (n int) { +func (m *MsgUpdateCommission) Size() (n int) { if m == nil { return 0 } @@ -1612,15 +933,12 @@ func (m *MsgCreateStaker) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - if m.Amount != 0 { - n += 1 + sovTx(uint64(m.Amount)) - } l = m.Commission.Size() n += 1 + l + sovTx(uint64(l)) return n } -func (m *MsgCreateStakerResponse) Size() (n int) { +func (m *MsgUpdateCommissionResponse) Size() (n int) { if m == nil { return 0 } @@ -1629,7 +947,7 @@ func (m *MsgCreateStakerResponse) Size() (n int) { return n } -func (m *MsgUpdateMetadata) Size() (n int) { +func (m *MsgJoinPool) Size() (n int) { if m == nil { return 0 } @@ -1639,30 +957,20 @@ func (m *MsgUpdateMetadata) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.Moniker) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Website) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Identity) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + if m.PoolId != 0 { + n += 1 + sovTx(uint64(m.PoolId)) } - l = len(m.SecurityContact) + l = len(m.Valaddress) if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.Details) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + if m.Amount != 0 { + n += 1 + sovTx(uint64(m.Amount)) } return n } -func (m *MsgUpdateMetadataResponse) Size() (n int) { +func (m *MsgJoinPoolResponse) Size() (n int) { if m == nil { return 0 } @@ -1671,7 +979,7 @@ func (m *MsgUpdateMetadataResponse) Size() (n int) { return n } -func (m *MsgUpdateCommission) Size() (n int) { +func (m *MsgLeavePool) Size() (n int) { if m == nil { return 0 } @@ -1681,12 +989,13 @@ func (m *MsgUpdateCommission) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = m.Commission.Size() - n += 1 + l + sovTx(uint64(l)) + if m.PoolId != 0 { + n += 1 + sovTx(uint64(m.PoolId)) + } return n } -func (m *MsgUpdateCommissionResponse) Size() (n int) { +func (m *MsgLeavePoolResponse) Size() (n int) { if m == nil { return 0 } @@ -1695,98 +1004,13 @@ func (m *MsgUpdateCommissionResponse) Size() (n int) { return n } -func (m *MsgClaimCommissionRewards) Size() (n int) { +func (m *MsgUpdateParams) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.Creator) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - if len(m.Amounts) > 0 { - for _, e := range m.Amounts { - l = e.Size() - n += 1 + l + sovTx(uint64(l)) - } - } - return n -} - -func (m *MsgClaimCommissionRewardsResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *MsgJoinPool) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Creator) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - if m.PoolId != 0 { - n += 1 + sovTx(uint64(m.PoolId)) - } - l = len(m.Valaddress) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - if m.Amount != 0 { - n += 1 + sovTx(uint64(m.Amount)) - } - return n -} - -func (m *MsgJoinPoolResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *MsgLeavePool) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Creator) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - if m.PoolId != 0 { - n += 1 + sovTx(uint64(m.PoolId)) - } - return n -} - -func (m *MsgLeavePoolResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *MsgUpdateParams) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Authority) + l = len(m.Authority) if l > 0 { n += 1 + l + sovTx(uint64(l)) } @@ -1812,7 +1036,7 @@ func sovTx(x uint64) (n int) { func sozTx(x uint64) (n int) { return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } -func (m *MsgCreateStaker) Unmarshal(dAtA []byte) error { +func (m *MsgUpdateCommission) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1835,10 +1059,10 @@ func (m *MsgCreateStaker) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgCreateStaker: wiretype end group for non-group") + return fmt.Errorf("proto: MsgUpdateCommission: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgCreateStaker: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgUpdateCommission: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -1874,25 +1098,6 @@ func (m *MsgCreateStaker) Unmarshal(dAtA []byte) error { m.Creator = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) - } - m.Amount = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Amount |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Commission", wireType) } @@ -1947,57 +1152,7 @@ func (m *MsgCreateStaker) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgCreateStakerResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgCreateStakerResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgCreateStakerResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUpdateMetadata) Unmarshal(dAtA []byte) error { +func (m *MsgUpdateCommissionResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2020,415 +1175,7 @@ func (m *MsgUpdateMetadata) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateMetadata: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateMetadata: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Creator", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Creator = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Moniker", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Moniker = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Website", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Website = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Identity", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Identity = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SecurityContact", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.SecurityContact = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 6: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Details", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Details = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUpdateMetadataResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateMetadataResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateMetadataResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUpdateCommission) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateCommission: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateCommission: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Creator", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Creator = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Commission", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Commission.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUpdateCommissionResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateCommissionResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgUpdateCommissionResponse: wiretype end group for non-group") } if fieldNum <= 0 { return fmt.Errorf("proto: MsgUpdateCommissionResponse: illegal tag %d (wire type %d)", fieldNum, wire) @@ -2455,172 +1202,6 @@ func (m *MsgUpdateCommissionResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgClaimCommissionRewards) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgClaimCommissionRewards: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgClaimCommissionRewards: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Creator", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Creator = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Amounts", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Amounts = append(m.Amounts, types.Coin{}) - if err := m.Amounts[len(m.Amounts)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgClaimCommissionRewardsResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgClaimCommissionRewardsResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgClaimCommissionRewardsResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func (m *MsgJoinPool) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 From 9dfc385e95cfcfc76982add644df40c0a385ee70 Mon Sep 17 00:00:00 2001 From: mbreithecker Date: Fri, 13 Dec 2024 09:52:27 +0100 Subject: [PATCH 2/2] chore: update Changelog --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 36b3cb71..8be31372 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,7 +16,12 @@ An '!' indicates a state machine breaking change. ## Unreleased +### Features + +- ! (`x/stakers`) [#209](https://github.com/KYVENetwork/chain/pull/209) Shared Staking: Consensus-validator stake is now used for the protocol. + ### Bug Fixes + - ! [#207](https://github.com/KYVENetwork/chain/pull/207) Added test case for points. ## [v1.5.0](https://github.com/KYVENetwork/chain/releases/tag/v1.5.0) - 2024-07-05