refactor(core,x/**): simplify core service api and embed environment in keepers (#20071)
This commit is contained in:
@@ -7,9 +7,9 @@ import (
|
||||
// EndBlocker called at every block, updates proposal's `FinalTallyResult` and
|
||||
// prunes expired proposals.
|
||||
func (k Keeper) EndBlocker(ctx context.Context) error {
|
||||
if err := k.TallyProposalsAtVPEnd(ctx, k.environment); err != nil {
|
||||
if err := k.TallyProposalsAtVPEnd(ctx); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return k.PruneProposals(ctx, k.environment)
|
||||
return k.PruneProposals(ctx)
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ func (k Keeper) InitGenesis(ctx context.Context, cdc codec.JSONCodec, data json.
|
||||
var genesisState group.GenesisState
|
||||
cdc.MustUnmarshalJSON(data, &genesisState)
|
||||
|
||||
store := k.environment.KVStoreService.OpenKVStore(ctx)
|
||||
store := k.KVStoreService.OpenKVStore(ctx)
|
||||
|
||||
if err := k.groupTable.Import(store, genesisState.Groups, genesisState.GroupSeq); err != nil {
|
||||
return errors.Wrap(err, "groups")
|
||||
@@ -50,7 +50,7 @@ func (k Keeper) ExportGenesis(ctx context.Context, _ codec.JSONCodec) (*group.Ge
|
||||
|
||||
var groups []*group.GroupInfo
|
||||
|
||||
store := k.environment.KVStoreService.OpenKVStore(ctx)
|
||||
store := k.KVStoreService.OpenKVStore(ctx)
|
||||
|
||||
groupSeq, err := k.groupTable.Export(store, &groups)
|
||||
if err != nil {
|
||||
|
||||
@@ -32,7 +32,7 @@ func (k Keeper) GroupInfo(ctx context.Context, request *group.QueryGroupInfoRequ
|
||||
// getGroupInfo gets the group info of the given group id.
|
||||
func (k Keeper) getGroupInfo(ctx context.Context, id uint64) (group.GroupInfo, error) {
|
||||
var obj group.GroupInfo
|
||||
_, err := k.groupTable.GetOne(k.environment.KVStoreService.OpenKVStore(ctx), id, &obj)
|
||||
_, err := k.groupTable.GetOne(k.KVStoreService.OpenKVStore(ctx), id, &obj)
|
||||
return obj, err
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ func (k Keeper) GroupPolicyInfo(ctx context.Context, request *group.QueryGroupPo
|
||||
// getGroupPolicyInfo gets the group policy info of the given account address.
|
||||
func (k Keeper) getGroupPolicyInfo(ctx context.Context, accountAddress string) (group.GroupPolicyInfo, error) {
|
||||
var obj group.GroupPolicyInfo
|
||||
return obj, k.groupPolicyTable.GetOne(k.environment.KVStoreService.OpenKVStore(ctx), orm.PrimaryKey(&group.GroupPolicyInfo{Address: accountAddress}), &obj)
|
||||
return obj, k.groupPolicyTable.GetOne(k.KVStoreService.OpenKVStore(ctx), orm.PrimaryKey(&group.GroupPolicyInfo{Address: accountAddress}), &obj)
|
||||
}
|
||||
|
||||
// GroupMembers queries all members of a group.
|
||||
@@ -79,7 +79,7 @@ func (k Keeper) GroupMembers(ctx context.Context, request *group.QueryGroupMembe
|
||||
|
||||
// getGroupMembers returns an iterator for the given group id and page request.
|
||||
func (k Keeper) getGroupMembers(ctx context.Context, id uint64, pageRequest *query.PageRequest) (orm.Iterator, error) {
|
||||
return k.groupMemberByGroupIndex.GetPaginated(k.environment.KVStoreService.OpenKVStore(ctx), id, pageRequest)
|
||||
return k.groupMemberByGroupIndex.GetPaginated(k.KVStoreService.OpenKVStore(ctx), id, pageRequest)
|
||||
}
|
||||
|
||||
// GroupsByAdmin queries all groups where a given address is admin.
|
||||
@@ -107,7 +107,7 @@ func (k Keeper) GroupsByAdmin(ctx context.Context, request *group.QueryGroupsByA
|
||||
|
||||
// getGroupsByAdmin returns an iterator for the given admin account address and page request.
|
||||
func (k Keeper) getGroupsByAdmin(ctx context.Context, admin sdk.AccAddress, pageRequest *query.PageRequest) (orm.Iterator, error) {
|
||||
return k.groupByAdminIndex.GetPaginated(k.environment.KVStoreService.OpenKVStore(ctx), admin.Bytes(), pageRequest)
|
||||
return k.groupByAdminIndex.GetPaginated(k.KVStoreService.OpenKVStore(ctx), admin.Bytes(), pageRequest)
|
||||
}
|
||||
|
||||
// GroupPoliciesByGroup queries all groups policies of a given group.
|
||||
@@ -132,7 +132,7 @@ func (k Keeper) GroupPoliciesByGroup(ctx context.Context, request *group.QueryGr
|
||||
|
||||
// getGroupPoliciesByGroup returns an iterator for the given group id and page request.
|
||||
func (k Keeper) getGroupPoliciesByGroup(ctx context.Context, id uint64, pageRequest *query.PageRequest) (orm.Iterator, error) {
|
||||
return k.groupPolicyByGroupIndex.GetPaginated(k.environment.KVStoreService.OpenKVStore(ctx), id, pageRequest)
|
||||
return k.groupPolicyByGroupIndex.GetPaginated(k.KVStoreService.OpenKVStore(ctx), id, pageRequest)
|
||||
}
|
||||
|
||||
// GroupPoliciesByAdmin queries all groups policies where a given address is
|
||||
@@ -161,7 +161,7 @@ func (k Keeper) GroupPoliciesByAdmin(ctx context.Context, request *group.QueryGr
|
||||
|
||||
// getGroupPoliciesByAdmin returns an iterator for the given admin account address and page request.
|
||||
func (k Keeper) getGroupPoliciesByAdmin(ctx context.Context, admin sdk.AccAddress, pageRequest *query.PageRequest) (orm.Iterator, error) {
|
||||
return k.groupPolicyByAdminIndex.GetPaginated(k.environment.KVStoreService.OpenKVStore(ctx), admin.Bytes(), pageRequest)
|
||||
return k.groupPolicyByAdminIndex.GetPaginated(k.KVStoreService.OpenKVStore(ctx), admin.Bytes(), pageRequest)
|
||||
}
|
||||
|
||||
// Proposal queries a proposal.
|
||||
@@ -200,13 +200,13 @@ func (k Keeper) ProposalsByGroupPolicy(ctx context.Context, request *group.Query
|
||||
|
||||
// getProposalsByGroupPolicy returns an iterator for the given account address and page request.
|
||||
func (k Keeper) getProposalsByGroupPolicy(ctx context.Context, account sdk.AccAddress, pageRequest *query.PageRequest) (orm.Iterator, error) {
|
||||
return k.proposalByGroupPolicyIndex.GetPaginated(k.environment.KVStoreService.OpenKVStore(ctx), account.Bytes(), pageRequest)
|
||||
return k.proposalByGroupPolicyIndex.GetPaginated(k.KVStoreService.OpenKVStore(ctx), account.Bytes(), pageRequest)
|
||||
}
|
||||
|
||||
// getProposal gets the proposal info of the given proposal id.
|
||||
func (k Keeper) getProposal(ctx context.Context, proposalID uint64) (group.Proposal, error) {
|
||||
var p group.Proposal
|
||||
if _, err := k.proposalTable.GetOne(k.environment.KVStoreService.OpenKVStore(ctx), proposalID, &p); err != nil {
|
||||
if _, err := k.proposalTable.GetOne(k.KVStoreService.OpenKVStore(ctx), proposalID, &p); err != nil {
|
||||
return group.Proposal{}, errorsmod.Wrap(err, "load proposal")
|
||||
}
|
||||
return p, nil
|
||||
@@ -282,7 +282,7 @@ func (k Keeper) GroupsByMember(ctx context.Context, request *group.QueryGroupsBy
|
||||
return nil, err
|
||||
}
|
||||
|
||||
iter, err := k.groupMemberByMemberIndex.GetPaginated(k.environment.KVStoreService.OpenKVStore(ctx), member, request.Pagination)
|
||||
iter, err := k.groupMemberByMemberIndex.GetPaginated(k.KVStoreService.OpenKVStore(ctx), member, request.Pagination)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -311,17 +311,17 @@ func (k Keeper) GroupsByMember(ctx context.Context, request *group.QueryGroupsBy
|
||||
// getVote gets the vote info for the given proposal id and voter address.
|
||||
func (k Keeper) getVote(ctx context.Context, proposalID uint64, voter string) (group.Vote, error) {
|
||||
var v group.Vote
|
||||
return v, k.voteTable.GetOne(k.environment.KVStoreService.OpenKVStore(ctx), orm.PrimaryKey(&group.Vote{ProposalId: proposalID, Voter: voter}), &v)
|
||||
return v, k.voteTable.GetOne(k.KVStoreService.OpenKVStore(ctx), orm.PrimaryKey(&group.Vote{ProposalId: proposalID, Voter: voter}), &v)
|
||||
}
|
||||
|
||||
// getVotesByProposal returns an iterator for the given proposal id and page request.
|
||||
func (k Keeper) getVotesByProposal(ctx context.Context, proposalID uint64, pageRequest *query.PageRequest) (orm.Iterator, error) {
|
||||
return k.voteByProposalIndex.GetPaginated(k.environment.KVStoreService.OpenKVStore(ctx), proposalID, pageRequest)
|
||||
return k.voteByProposalIndex.GetPaginated(k.KVStoreService.OpenKVStore(ctx), proposalID, pageRequest)
|
||||
}
|
||||
|
||||
// getVotesByVoter returns an iterator for the given voter address and page request.
|
||||
func (k Keeper) getVotesByVoter(ctx context.Context, voter sdk.AccAddress, pageRequest *query.PageRequest) (orm.Iterator, error) {
|
||||
return k.voteByVoterIndex.GetPaginated(k.environment.KVStoreService.OpenKVStore(ctx), voter.Bytes(), pageRequest)
|
||||
return k.voteByVoterIndex.GetPaginated(k.KVStoreService.OpenKVStore(ctx), voter.Bytes(), pageRequest)
|
||||
}
|
||||
|
||||
// TallyResult computes the live tally result of a proposal.
|
||||
@@ -354,7 +354,7 @@ func (k Keeper) TallyResult(ctx context.Context, request *group.QueryTallyResult
|
||||
|
||||
// Groups returns all the groups present in the state.
|
||||
func (k Keeper) Groups(ctx context.Context, request *group.QueryGroupsRequest) (*group.QueryGroupsResponse, error) {
|
||||
it, err := k.groupTable.PrefixScan(k.environment.KVStoreService.OpenKVStore(ctx), 1, math.MaxUint64)
|
||||
it, err := k.groupTable.PrefixScan(k.KVStoreService.OpenKVStore(ctx), 1, math.MaxUint64)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ func RegisterInvariants(ir sdk.InvariantRegistry, keeper Keeper) {
|
||||
// GroupTotalWeightInvariant checks that group's TotalWeight must be equal to the sum of its members.
|
||||
func GroupTotalWeightInvariant(keeper Keeper) sdk.Invariant {
|
||||
return func(ctx sdk.Context) (string, bool) {
|
||||
msg, broken := GroupTotalWeightInvariantHelper(ctx, keeper.environment.KVStoreService, keeper.groupTable, keeper.groupMemberByGroupIndex)
|
||||
msg, broken := GroupTotalWeightInvariantHelper(ctx, keeper.KVStoreService, keeper.groupTable, keeper.groupMemberByGroupIndex)
|
||||
return sdk.FormatInvariant(group.ModuleName, weightInvariant, msg), broken
|
||||
}
|
||||
}
|
||||
|
||||
+19
-25
@@ -7,7 +7,6 @@ import (
|
||||
|
||||
"cosmossdk.io/core/appmodule"
|
||||
errorsmod "cosmossdk.io/errors"
|
||||
"cosmossdk.io/log"
|
||||
"cosmossdk.io/x/group"
|
||||
"cosmossdk.io/x/group/errors"
|
||||
"cosmossdk.io/x/group/internal/orm"
|
||||
@@ -46,8 +45,8 @@ const (
|
||||
)
|
||||
|
||||
type Keeper struct {
|
||||
environment appmodule.Environment
|
||||
accKeeper group.AccountKeeper
|
||||
appmodule.Environment
|
||||
accKeeper group.AccountKeeper
|
||||
|
||||
// Group Table
|
||||
groupTable orm.AutoUInt64Table
|
||||
@@ -82,7 +81,7 @@ type Keeper struct {
|
||||
// NewKeeper creates a new group keeper.
|
||||
func NewKeeper(env appmodule.Environment, cdc codec.Codec, accKeeper group.AccountKeeper, config group.Config) Keeper {
|
||||
k := Keeper{
|
||||
environment: env,
|
||||
Environment: env,
|
||||
accKeeper: accKeeper,
|
||||
cdc: cdc,
|
||||
}
|
||||
@@ -231,25 +230,20 @@ func NewKeeper(env appmodule.Environment, cdc codec.Codec, accKeeper group.Accou
|
||||
return k
|
||||
}
|
||||
|
||||
// Logger returns a module-specific logger.
|
||||
func (k Keeper) Logger() log.Logger {
|
||||
return k.environment.Logger.With("module", fmt.Sprintf("x/%s", group.ModuleName))
|
||||
}
|
||||
|
||||
// GetGroupSequence returns the current value of the group table sequence
|
||||
func (k Keeper) GetGroupSequence(ctx sdk.Context) uint64 {
|
||||
return k.groupTable.Sequence().CurVal(k.environment.KVStoreService.OpenKVStore(ctx))
|
||||
return k.groupTable.Sequence().CurVal(k.KVStoreService.OpenKVStore(ctx))
|
||||
}
|
||||
|
||||
// GetGroupPolicySeq returns the current value of the group policy table sequence
|
||||
func (k Keeper) GetGroupPolicySeq(ctx sdk.Context) uint64 {
|
||||
return k.groupPolicySeq.CurVal(k.environment.KVStoreService.OpenKVStore(ctx))
|
||||
return k.groupPolicySeq.CurVal(k.KVStoreService.OpenKVStore(ctx))
|
||||
}
|
||||
|
||||
// proposalsByVPEnd returns all proposals whose voting_period_end is after the `endTime` time argument.
|
||||
func (k Keeper) proposalsByVPEnd(ctx context.Context, endTime time.Time) (proposals []group.Proposal, err error) {
|
||||
timeBytes := sdk.FormatTimeBytes(endTime)
|
||||
it, err := k.proposalsByVotingPeriodEnd.PrefixScan(k.environment.KVStoreService.OpenKVStore(ctx), nil, timeBytes)
|
||||
it, err := k.proposalsByVotingPeriodEnd.PrefixScan(k.KVStoreService.OpenKVStore(ctx), nil, timeBytes)
|
||||
if err != nil {
|
||||
return proposals, err
|
||||
}
|
||||
@@ -281,12 +275,12 @@ func (k Keeper) proposalsByVPEnd(ctx context.Context, endTime time.Time) (propos
|
||||
|
||||
// pruneProposal deletes a proposal from state.
|
||||
func (k Keeper) pruneProposal(ctx context.Context, proposalID uint64) error {
|
||||
err := k.proposalTable.Delete(k.environment.KVStoreService.OpenKVStore(ctx), proposalID)
|
||||
err := k.proposalTable.Delete(k.KVStoreService.OpenKVStore(ctx), proposalID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
k.Logger().Debug(fmt.Sprintf("Pruned proposal %d", proposalID))
|
||||
k.Logger.Debug(fmt.Sprintf("Pruned proposal %d", proposalID))
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -304,7 +298,7 @@ func (k Keeper) abortProposals(ctx context.Context, groupPolicyAddr sdk.AccAddre
|
||||
if proposalInfo.Status == group.PROPOSAL_STATUS_SUBMITTED {
|
||||
proposalInfo.Status = group.PROPOSAL_STATUS_ABORTED
|
||||
|
||||
if err := k.proposalTable.Update(k.environment.KVStoreService.OpenKVStore(ctx), proposalInfo.Id, &proposalInfo); err != nil {
|
||||
if err := k.proposalTable.Update(k.KVStoreService.OpenKVStore(ctx), proposalInfo.Id, &proposalInfo); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
@@ -314,7 +308,7 @@ func (k Keeper) abortProposals(ctx context.Context, groupPolicyAddr sdk.AccAddre
|
||||
|
||||
// proposalsByGroupPolicy returns all proposals for a given group policy.
|
||||
func (k Keeper) proposalsByGroupPolicy(ctx context.Context, groupPolicyAddr sdk.AccAddress) ([]group.Proposal, error) {
|
||||
proposalIt, err := k.proposalByGroupPolicyIndex.Get(k.environment.KVStoreService.OpenKVStore(ctx), groupPolicyAddr.Bytes())
|
||||
proposalIt, err := k.proposalByGroupPolicyIndex.Get(k.KVStoreService.OpenKVStore(ctx), groupPolicyAddr.Bytes())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -345,7 +339,7 @@ func (k Keeper) pruneVotes(ctx context.Context, proposalID uint64) error {
|
||||
|
||||
//nolint:gosec // "implicit memory aliasing in the for loop (because of the pointer on &v)"
|
||||
for _, v := range votes {
|
||||
err = k.voteTable.Delete(k.environment.KVStoreService.OpenKVStore(ctx), &v)
|
||||
err = k.voteTable.Delete(k.KVStoreService.OpenKVStore(ctx), &v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -356,7 +350,7 @@ func (k Keeper) pruneVotes(ctx context.Context, proposalID uint64) error {
|
||||
|
||||
// votesByProposal returns all votes for a given proposal.
|
||||
func (k Keeper) votesByProposal(ctx context.Context, proposalID uint64) ([]group.Vote, error) {
|
||||
it, err := k.voteByProposalIndex.Get(k.environment.KVStoreService.OpenKVStore(ctx), proposalID)
|
||||
it, err := k.voteByProposalIndex.Get(k.KVStoreService.OpenKVStore(ctx), proposalID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -380,8 +374,8 @@ func (k Keeper) votesByProposal(ctx context.Context, proposalID uint64) ([]group
|
||||
// PruneProposals prunes all proposals that are expired, i.e. whose
|
||||
// `voting_period + max_execution_period` is greater than the current block
|
||||
// time.
|
||||
func (k Keeper) PruneProposals(ctx context.Context, env appmodule.Environment) error {
|
||||
endTime := env.HeaderService.GetHeaderInfo(ctx).Time.Add(-k.config.MaxExecutionPeriod)
|
||||
func (k Keeper) PruneProposals(ctx context.Context) error {
|
||||
endTime := k.HeaderService.HeaderInfo(ctx).Time.Add(-k.config.MaxExecutionPeriod)
|
||||
proposals, err := k.proposalsByVPEnd(ctx, endTime)
|
||||
if err != nil {
|
||||
return nil
|
||||
@@ -394,7 +388,7 @@ func (k Keeper) PruneProposals(ctx context.Context, env appmodule.Environment) e
|
||||
return err
|
||||
}
|
||||
// Emit event for proposal finalized with its result
|
||||
if err := k.environment.EventService.EventManager(ctx).Emit(
|
||||
if err := k.EventService.EventManager(ctx).Emit(
|
||||
&group.EventProposalPruned{
|
||||
ProposalId: proposal.Id,
|
||||
Status: proposal.Status,
|
||||
@@ -411,8 +405,8 @@ func (k Keeper) PruneProposals(ctx context.Context, env appmodule.Environment) e
|
||||
// TallyProposalsAtVPEnd iterates over all proposals whose voting period
|
||||
// has ended, tallies their votes, prunes them, and updates the proposal's
|
||||
// `FinalTallyResult` field.
|
||||
func (k Keeper) TallyProposalsAtVPEnd(ctx context.Context, env appmodule.Environment) error {
|
||||
proposals, err := k.proposalsByVPEnd(ctx, env.HeaderService.GetHeaderInfo(ctx).Time)
|
||||
func (k Keeper) TallyProposalsAtVPEnd(ctx context.Context) error {
|
||||
proposals, err := k.proposalsByVPEnd(ctx, k.HeaderService.HeaderInfo(ctx).Time)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
@@ -437,7 +431,7 @@ func (k Keeper) TallyProposalsAtVPEnd(ctx context.Context, env appmodule.Environ
|
||||
return err
|
||||
}
|
||||
// Emit event for proposal finalized with its result
|
||||
if err := k.environment.EventService.EventManager(ctx).Emit(
|
||||
if err := k.EventService.EventManager(ctx).Emit(
|
||||
&group.EventProposalPruned{
|
||||
ProposalId: proposal.Id,
|
||||
Status: proposal.Status,
|
||||
@@ -450,7 +444,7 @@ func (k Keeper) TallyProposalsAtVPEnd(ctx context.Context, env appmodule.Environ
|
||||
return errorsmod.Wrap(err, "doTallyAndUpdate")
|
||||
}
|
||||
|
||||
if err := k.proposalTable.Update(k.environment.KVStoreService.OpenKVStore(ctx), proposal.Id, &proposal); err != nil {
|
||||
if err := k.proposalTable.Update(k.KVStoreService.OpenKVStore(ctx), proposal.Id, &proposal); err != nil {
|
||||
return errorsmod.Wrap(err, "proposal update")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,6 @@ import (
|
||||
"github.com/golang/mock/gomock"
|
||||
"github.com/stretchr/testify/suite"
|
||||
|
||||
"cosmossdk.io/core/appmodule"
|
||||
"cosmossdk.io/core/header"
|
||||
"cosmossdk.io/log"
|
||||
storetypes "cosmossdk.io/store/types"
|
||||
@@ -49,7 +48,6 @@ type TestSuite struct {
|
||||
blockTime time.Time
|
||||
bankKeeper *grouptestutil.MockBankKeeper
|
||||
accountKeeper *grouptestutil.MockAccountKeeper
|
||||
environment appmodule.Environment
|
||||
}
|
||||
|
||||
func (s *TestSuite) SetupTest() {
|
||||
@@ -90,8 +88,6 @@ func (s *TestSuite) SetupTest() {
|
||||
s.ctx = testCtx.Ctx.WithHeaderInfo(header.Info{Time: s.blockTime})
|
||||
s.sdkCtx = sdk.UnwrapSDKContext(s.ctx)
|
||||
|
||||
s.environment = env
|
||||
|
||||
// Initial group, group policy and balance setup
|
||||
members := []group.MemberRequest{
|
||||
{Address: s.addrsStr[4], Weight: "1"}, {Address: s.addrsStr[1], Weight: "2"},
|
||||
@@ -341,7 +337,7 @@ func (s *TestSuite) TestPruneProposals() {
|
||||
s.sdkCtx = s.sdkCtx.WithHeaderInfo(header.Info{Time: s.sdkCtx.HeaderInfo().Time.Add(expirationTime)})
|
||||
|
||||
// Prune Expired Proposals
|
||||
err = s.groupKeeper.PruneProposals(s.sdkCtx, s.environment)
|
||||
err = s.groupKeeper.PruneProposals(s.sdkCtx)
|
||||
s.Require().NoError(err)
|
||||
postPrune, err := s.groupKeeper.Proposal(s.ctx, &queryProposal)
|
||||
s.Require().Nil(postPrune)
|
||||
@@ -464,7 +460,7 @@ func (s *TestSuite) TestTallyProposalsAtVPEnd() {
|
||||
s.Require().Equal("1", result.Tally.YesCount)
|
||||
s.Require().NoError(err)
|
||||
|
||||
s.Require().NoError(s.groupKeeper.TallyProposalsAtVPEnd(ctx, s.environment))
|
||||
s.Require().NoError(s.groupKeeper.TallyProposalsAtVPEnd(ctx))
|
||||
s.NotPanics(func() {
|
||||
err := s.groupKeeper.EndBlocker(ctx)
|
||||
if err != nil {
|
||||
@@ -527,7 +523,7 @@ func (s *TestSuite) TestTallyProposalsAtVPEnd_GroupMemberLeaving() {
|
||||
ctx := s.sdkCtx.WithHeaderInfo(header.Info{Time: s.sdkCtx.HeaderInfo().Time.Add(votingPeriod + 1)})
|
||||
|
||||
// Tally the result. This saves the tally result to state.
|
||||
s.Require().NoError(s.groupKeeper.TallyProposalsAtVPEnd(ctx, s.environment))
|
||||
s.Require().NoError(s.groupKeeper.TallyProposalsAtVPEnd(ctx))
|
||||
s.NotPanics(func() {
|
||||
err := s.groupKeeper.EndBlocker(ctx)
|
||||
if err != nil {
|
||||
@@ -542,7 +538,7 @@ func (s *TestSuite) TestTallyProposalsAtVPEnd_GroupMemberLeaving() {
|
||||
})
|
||||
s.Require().NoError(err)
|
||||
|
||||
s.Require().NoError(s.groupKeeper.TallyProposalsAtVPEnd(ctx, s.environment))
|
||||
s.Require().NoError(s.groupKeeper.TallyProposalsAtVPEnd(ctx))
|
||||
s.NotPanics(func() {
|
||||
err := s.groupKeeper.EndBlocker(ctx)
|
||||
if err != nil {
|
||||
|
||||
@@ -20,7 +20,7 @@ func NewMigrator(keeper Keeper) Migrator {
|
||||
func (m Migrator) Migrate1to2(ctx context.Context) error {
|
||||
return v2.Migrate(
|
||||
ctx,
|
||||
m.keeper.environment.KVStoreService,
|
||||
m.keeper.KVStoreService,
|
||||
m.keeper.accKeeper,
|
||||
m.keeper.groupPolicySeq,
|
||||
m.keeper.groupPolicyTable,
|
||||
|
||||
@@ -61,14 +61,14 @@ func (k Keeper) CreateGroup(ctx context.Context, msg *group.MsgCreateGroup) (*gr
|
||||
}
|
||||
|
||||
// Create a new group in the groupTable.
|
||||
kvStore := k.environment.KVStoreService.OpenKVStore(ctx)
|
||||
kvStore := k.KVStoreService.OpenKVStore(ctx)
|
||||
groupInfo := &group.GroupInfo{
|
||||
Id: k.groupTable.Sequence().PeekNextVal(kvStore),
|
||||
Admin: msg.Admin,
|
||||
Metadata: msg.Metadata,
|
||||
Version: 1,
|
||||
TotalWeight: totalWeight.String(),
|
||||
CreatedAt: k.environment.HeaderService.GetHeaderInfo(ctx).Time,
|
||||
CreatedAt: k.HeaderService.HeaderInfo(ctx).Time,
|
||||
}
|
||||
groupID, err := k.groupTable.Create(kvStore, groupInfo)
|
||||
if err != nil {
|
||||
@@ -83,7 +83,7 @@ func (k Keeper) CreateGroup(ctx context.Context, msg *group.MsgCreateGroup) (*gr
|
||||
Address: m.Address,
|
||||
Weight: m.Weight,
|
||||
Metadata: m.Metadata,
|
||||
AddedAt: k.environment.HeaderService.GetHeaderInfo(ctx).Time,
|
||||
AddedAt: k.HeaderService.HeaderInfo(ctx).Time,
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
@@ -91,7 +91,7 @@ func (k Keeper) CreateGroup(ctx context.Context, msg *group.MsgCreateGroup) (*gr
|
||||
}
|
||||
}
|
||||
|
||||
if err := k.environment.EventService.EventManager(ctx).Emit(&group.EventCreateGroup{GroupId: groupID}); err != nil {
|
||||
if err := k.EventService.EventManager(ctx).Emit(&group.EventCreateGroup{GroupId: groupID}); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -111,7 +111,7 @@ func (k Keeper) UpdateGroupMembers(ctx context.Context, msg *group.MsgUpdateGrou
|
||||
return nil, errorsmod.Wrap(err, "members")
|
||||
}
|
||||
|
||||
kvStore := k.environment.KVStoreService.OpenKVStore(ctx)
|
||||
kvStore := k.KVStoreService.OpenKVStore(ctx)
|
||||
action := func(g *group.GroupInfo) error {
|
||||
totalWeight, err := math.NewNonNegativeDecFromString(g.TotalWeight)
|
||||
if err != nil {
|
||||
@@ -189,7 +189,7 @@ func (k Keeper) UpdateGroupMembers(ctx context.Context, msg *group.MsgUpdateGrou
|
||||
return errorsmod.Wrap(err, "add member")
|
||||
}
|
||||
} else { // else handle create.
|
||||
groupMember.Member.AddedAt = k.environment.HeaderService.GetHeaderInfo(ctx).Time
|
||||
groupMember.Member.AddedAt = k.HeaderService.HeaderInfo(ctx).Time
|
||||
if err := k.groupMemberTable.Create(kvStore, &groupMember); err != nil {
|
||||
return errorsmod.Wrap(err, "add member")
|
||||
}
|
||||
@@ -235,7 +235,7 @@ func (k Keeper) UpdateGroupAdmin(ctx context.Context, msg *group.MsgUpdateGroupA
|
||||
return nil, errorsmod.Wrap(sdkerrors.ErrInvalidAddress, "new admin address")
|
||||
}
|
||||
|
||||
kvStore := k.environment.KVStoreService.OpenKVStore(ctx)
|
||||
kvStore := k.KVStoreService.OpenKVStore(ctx)
|
||||
action := func(g *group.GroupInfo) error {
|
||||
g.Admin = msg.NewAdmin
|
||||
g.Version++
|
||||
@@ -263,7 +263,7 @@ func (k Keeper) UpdateGroupMetadata(ctx context.Context, msg *group.MsgUpdateGro
|
||||
return nil, errorsmod.Wrap(sdkerrors.ErrInvalidAddress, "admin address")
|
||||
}
|
||||
|
||||
kvStore := k.environment.KVStoreService.OpenKVStore(ctx)
|
||||
kvStore := k.KVStoreService.OpenKVStore(ctx)
|
||||
action := func(g *group.GroupInfo) error {
|
||||
g.Metadata = msg.Metadata
|
||||
g.Version++
|
||||
@@ -367,7 +367,7 @@ func (k Keeper) CreateGroupPolicy(ctx context.Context, msg *group.MsgCreateGroup
|
||||
return nil, err
|
||||
}
|
||||
|
||||
kvStore := k.environment.KVStoreService.OpenKVStore(ctx)
|
||||
kvStore := k.KVStoreService.OpenKVStore(ctx)
|
||||
|
||||
// Generate account address of group policy.
|
||||
var accountAddr sdk.AccAddress
|
||||
@@ -413,7 +413,7 @@ func (k Keeper) CreateGroupPolicy(ctx context.Context, msg *group.MsgCreateGroup
|
||||
msg.GetMetadata(),
|
||||
1,
|
||||
policy,
|
||||
k.environment.HeaderService.GetHeaderInfo(ctx).Time,
|
||||
k.HeaderService.HeaderInfo(ctx).Time,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -423,7 +423,7 @@ func (k Keeper) CreateGroupPolicy(ctx context.Context, msg *group.MsgCreateGroup
|
||||
return nil, errorsmod.Wrap(err, "could not create group policy")
|
||||
}
|
||||
|
||||
if err := k.environment.EventService.EventManager(ctx).Emit(&group.EventCreateGroupPolicy{Address: accountStrAddr}); err != nil {
|
||||
if err := k.EventService.EventManager(ctx).Emit(&group.EventCreateGroupPolicy{Address: accountStrAddr}); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -439,7 +439,7 @@ func (k Keeper) UpdateGroupPolicyAdmin(ctx context.Context, msg *group.MsgUpdate
|
||||
return nil, errorsmod.Wrap(sdkerrors.ErrInvalidAddress, "new admin address")
|
||||
}
|
||||
|
||||
kvStore := k.environment.KVStoreService.OpenKVStore(ctx)
|
||||
kvStore := k.KVStoreService.OpenKVStore(ctx)
|
||||
action := func(groupPolicy *group.GroupPolicyInfo) error {
|
||||
groupPolicy.Admin = msg.NewAdmin
|
||||
groupPolicy.Version++
|
||||
@@ -463,7 +463,7 @@ func (k Keeper) UpdateGroupPolicyDecisionPolicy(ctx context.Context, msg *group.
|
||||
return nil, errorsmod.Wrap(err, "decision policy")
|
||||
}
|
||||
|
||||
kvStore := k.environment.KVStoreService.OpenKVStore(ctx)
|
||||
kvStore := k.KVStoreService.OpenKVStore(ctx)
|
||||
action := func(groupPolicy *group.GroupPolicyInfo) error {
|
||||
groupInfo, err := k.getGroupInfo(ctx, groupPolicy.GroupId)
|
||||
if err != nil {
|
||||
@@ -493,7 +493,7 @@ func (k Keeper) UpdateGroupPolicyDecisionPolicy(ctx context.Context, msg *group.
|
||||
|
||||
func (k Keeper) UpdateGroupPolicyMetadata(ctx context.Context, msg *group.MsgUpdateGroupPolicyMetadata) (*group.MsgUpdateGroupPolicyMetadataResponse, error) {
|
||||
metadata := msg.GetMetadata()
|
||||
kvStore := k.environment.KVStoreService.OpenKVStore(ctx)
|
||||
kvStore := k.KVStoreService.OpenKVStore(ctx)
|
||||
|
||||
action := func(groupPolicy *group.GroupPolicyInfo) error {
|
||||
groupPolicy.Metadata = metadata
|
||||
@@ -565,7 +565,7 @@ func (k Keeper) SubmitProposal(ctx context.Context, msg *group.MsgSubmitProposal
|
||||
return nil, err
|
||||
}
|
||||
|
||||
kvStore := k.environment.KVStoreService.OpenKVStore(ctx)
|
||||
kvStore := k.KVStoreService.OpenKVStore(ctx)
|
||||
policyAcc, err := k.getGroupPolicyInfo(ctx, msg.GroupPolicyAddress)
|
||||
if err != nil {
|
||||
return nil, errorsmod.Wrapf(err, "load group policy: %s", msg.GroupPolicyAddress)
|
||||
@@ -603,12 +603,12 @@ func (k Keeper) SubmitProposal(ctx context.Context, msg *group.MsgSubmitProposal
|
||||
GroupPolicyAddress: msg.GroupPolicyAddress,
|
||||
Metadata: msg.Metadata,
|
||||
Proposers: msg.Proposers,
|
||||
SubmitTime: k.environment.HeaderService.GetHeaderInfo(ctx).Time,
|
||||
SubmitTime: k.HeaderService.HeaderInfo(ctx).Time,
|
||||
GroupVersion: groupInfo.Version,
|
||||
GroupPolicyVersion: policyAcc.Version,
|
||||
Status: group.PROPOSAL_STATUS_SUBMITTED,
|
||||
ExecutorResult: group.PROPOSAL_EXECUTOR_RESULT_NOT_RUN,
|
||||
VotingPeriodEnd: k.environment.HeaderService.GetHeaderInfo(ctx).Time.Add(policy.GetVotingPeriod()), // The voting window begins as soon as the proposal is submitted.
|
||||
VotingPeriodEnd: k.HeaderService.HeaderInfo(ctx).Time.Add(policy.GetVotingPeriod()), // The voting window begins as soon as the proposal is submitted.
|
||||
FinalTallyResult: group.DefaultTallyResult(),
|
||||
Title: msg.Title,
|
||||
Summary: msg.Summary,
|
||||
@@ -623,7 +623,7 @@ func (k Keeper) SubmitProposal(ctx context.Context, msg *group.MsgSubmitProposal
|
||||
return nil, errorsmod.Wrap(err, "create proposal")
|
||||
}
|
||||
|
||||
if err := k.environment.EventService.EventManager(ctx).Emit(&group.EventSubmitProposal{ProposalId: id}); err != nil {
|
||||
if err := k.EventService.EventManager(ctx).Emit(&group.EventSubmitProposal{ProposalId: id}); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -631,7 +631,7 @@ func (k Keeper) SubmitProposal(ctx context.Context, msg *group.MsgSubmitProposal
|
||||
if msg.Exec == group.Exec_EXEC_TRY {
|
||||
// Consider proposers as Yes votes
|
||||
for _, proposer := range msg.Proposers {
|
||||
k.environment.GasService.GetGasMeter(ctx).Consume(gasCostPerIteration, "vote on proposal")
|
||||
k.GasService.GasMeter(ctx).Consume(gasCostPerIteration, "vote on proposal")
|
||||
_, err = k.Vote(ctx, &group.MsgVote{
|
||||
ProposalId: id,
|
||||
Voter: proposer,
|
||||
@@ -666,7 +666,7 @@ func (k Keeper) WithdrawProposal(ctx context.Context, msg *group.MsgWithdrawProp
|
||||
return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid group policy admin / proposer address: %s", msg.Address)
|
||||
}
|
||||
|
||||
kvStore := k.environment.KVStoreService.OpenKVStore(ctx)
|
||||
kvStore := k.KVStoreService.OpenKVStore(ctx)
|
||||
proposal, err := k.getProposal(ctx, msg.ProposalId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -692,7 +692,7 @@ func (k Keeper) WithdrawProposal(ctx context.Context, msg *group.MsgWithdrawProp
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := k.environment.EventService.EventManager(ctx).Emit(&group.EventWithdrawProposal{ProposalId: msg.ProposalId}); err != nil {
|
||||
if err := k.EventService.EventManager(ctx).Emit(&group.EventWithdrawProposal{ProposalId: msg.ProposalId}); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -721,7 +721,7 @@ func (k Keeper) Vote(ctx context.Context, msg *group.MsgVote) (*group.MsgVoteRes
|
||||
return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid voter address: %s", msg.Voter)
|
||||
}
|
||||
|
||||
kvStore := k.environment.KVStoreService.OpenKVStore(ctx)
|
||||
kvStore := k.KVStoreService.OpenKVStore(ctx)
|
||||
proposal, err := k.getProposal(ctx, msg.ProposalId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -732,7 +732,7 @@ func (k Keeper) Vote(ctx context.Context, msg *group.MsgVote) (*group.MsgVoteRes
|
||||
return nil, errorsmod.Wrap(errors.ErrInvalid, "proposal not open for voting")
|
||||
}
|
||||
|
||||
if k.environment.HeaderService.GetHeaderInfo(ctx).Time.After(proposal.VotingPeriodEnd) {
|
||||
if k.HeaderService.HeaderInfo(ctx).Time.After(proposal.VotingPeriodEnd) {
|
||||
return nil, errorsmod.Wrap(errors.ErrExpired, "voting period has ended already")
|
||||
}
|
||||
|
||||
@@ -756,7 +756,7 @@ func (k Keeper) Vote(ctx context.Context, msg *group.MsgVote) (*group.MsgVoteRes
|
||||
Voter: msg.Voter,
|
||||
Option: msg.Option,
|
||||
Metadata: msg.Metadata,
|
||||
SubmitTime: k.environment.HeaderService.GetHeaderInfo(ctx).Time,
|
||||
SubmitTime: k.HeaderService.HeaderInfo(ctx).Time,
|
||||
}
|
||||
|
||||
// The ORM will return an error if the vote already exists,
|
||||
@@ -765,7 +765,7 @@ func (k Keeper) Vote(ctx context.Context, msg *group.MsgVote) (*group.MsgVoteRes
|
||||
return nil, errorsmod.Wrap(err, "store vote")
|
||||
}
|
||||
|
||||
if err := k.environment.EventService.EventManager(ctx).Emit(&group.EventVote{ProposalId: msg.ProposalId}); err != nil {
|
||||
if err := k.EventService.EventManager(ctx).Emit(&group.EventVote{ProposalId: msg.ProposalId}); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -801,7 +801,7 @@ func (k Keeper) doTallyAndUpdate(ctx context.Context, p *group.Proposal, groupIn
|
||||
|
||||
// If the result was final (i.e. enough votes to pass) or if the voting
|
||||
// period ended, then we consider the proposal as final.
|
||||
if isFinal := result.Final || k.environment.HeaderService.GetHeaderInfo(ctx).Time.After(p.VotingPeriodEnd); isFinal {
|
||||
if isFinal := result.Final || k.HeaderService.HeaderInfo(ctx).Time.After(p.VotingPeriodEnd); isFinal {
|
||||
if err := k.pruneVotes(ctx, p.Id); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -862,12 +862,12 @@ func (k Keeper) Exec(goCtx context.Context, msg *group.MsgExec) (*group.MsgExecR
|
||||
|
||||
decisionPolicy := policyInfo.DecisionPolicy.GetCachedValue().(group.DecisionPolicy)
|
||||
|
||||
if err := k.environment.BranchService.Execute(ctx, func(ctx context.Context) error {
|
||||
if err := k.BranchService.Execute(ctx, func(ctx context.Context) error {
|
||||
return k.doExecuteMsgs(ctx, proposal, addr, decisionPolicy)
|
||||
}); err != nil {
|
||||
proposal.ExecutorResult = group.PROPOSAL_EXECUTOR_RESULT_FAILURE
|
||||
logs = fmt.Sprintf("proposal execution failed on proposal %d, because of error %s", proposal.Id, err.Error())
|
||||
k.Logger().Info("proposal execution failed", "cause", err, "proposalID", proposal.Id)
|
||||
k.Logger.Info("proposal execution failed", "cause", err, "proposalID", proposal.Id)
|
||||
} else {
|
||||
proposal.ExecutorResult = group.PROPOSAL_EXECUTOR_RESULT_SUCCESS
|
||||
}
|
||||
@@ -881,7 +881,7 @@ func (k Keeper) Exec(goCtx context.Context, msg *group.MsgExec) (*group.MsgExecR
|
||||
}
|
||||
|
||||
// Emit event for proposal finalized with its result
|
||||
if err := k.environment.EventService.EventManager(ctx).Emit(
|
||||
if err := k.EventService.EventManager(ctx).Emit(
|
||||
&group.EventProposalPruned{
|
||||
ProposalId: proposal.Id,
|
||||
Status: proposal.Status,
|
||||
@@ -890,13 +890,13 @@ func (k Keeper) Exec(goCtx context.Context, msg *group.MsgExec) (*group.MsgExecR
|
||||
return nil, err
|
||||
}
|
||||
} else {
|
||||
store := k.environment.KVStoreService.OpenKVStore(ctx)
|
||||
store := k.KVStoreService.OpenKVStore(ctx)
|
||||
if err := k.proposalTable.Update(store, proposal.Id, &proposal); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
if err := k.environment.EventService.EventManager(ctx).Emit(&group.EventExec{
|
||||
if err := k.EventService.EventManager(ctx).Emit(&group.EventExec{
|
||||
ProposalId: proposal.Id,
|
||||
Logs: logs,
|
||||
Result: proposal.ExecutorResult,
|
||||
@@ -948,7 +948,7 @@ func (k Keeper) LeaveGroup(ctx context.Context, msg *group.MsgLeaveGroup) (*grou
|
||||
return nil, err
|
||||
}
|
||||
|
||||
kvStore := k.environment.KVStoreService.OpenKVStore(ctx)
|
||||
kvStore := k.KVStoreService.OpenKVStore(ctx)
|
||||
|
||||
// delete group member in the groupMemberTable.
|
||||
if err := k.groupMemberTable.Delete(kvStore, gm); err != nil {
|
||||
@@ -967,7 +967,7 @@ func (k Keeper) LeaveGroup(ctx context.Context, msg *group.MsgLeaveGroup) (*grou
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := k.environment.EventService.EventManager(ctx).Emit(&group.EventLeaveGroup{
|
||||
if err := k.EventService.EventManager(ctx).Emit(&group.EventLeaveGroup{
|
||||
GroupId: msg.GroupId,
|
||||
Address: msg.Address,
|
||||
}); err != nil {
|
||||
@@ -978,7 +978,7 @@ func (k Keeper) LeaveGroup(ctx context.Context, msg *group.MsgLeaveGroup) (*grou
|
||||
}
|
||||
|
||||
func (k Keeper) getGroupMember(ctx context.Context, member *group.GroupMember) (*group.GroupMember, error) {
|
||||
kvStore := k.environment.KVStoreService.OpenKVStore(ctx)
|
||||
kvStore := k.KVStoreService.OpenKVStore(ctx)
|
||||
var groupMember group.GroupMember
|
||||
switch err := k.groupMemberTable.GetOne(kvStore,
|
||||
orm.PrimaryKey(member), &groupMember); {
|
||||
@@ -1029,7 +1029,7 @@ func (k Keeper) doUpdateGroupPolicy(ctx context.Context, reqGroupPolicy, reqAdmi
|
||||
return err
|
||||
}
|
||||
|
||||
if err = k.environment.EventService.EventManager(ctx).Emit(&group.EventUpdateGroupPolicy{Address: groupPolicyInfo.Address}); err != nil {
|
||||
if err = k.EventService.EventManager(ctx).Emit(&group.EventUpdateGroupPolicy{Address: groupPolicyInfo.Address}); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -1052,7 +1052,7 @@ func (k Keeper) doUpdateGroup(ctx context.Context, groupID uint64, reqGroupAdmin
|
||||
return errorsmod.Wrap(err, errNote)
|
||||
}
|
||||
|
||||
if err := k.environment.EventService.EventManager(ctx).Emit(&group.EventUpdateGroup{GroupId: groupID}); err != nil {
|
||||
if err := k.EventService.EventManager(ctx).Emit(&group.EventUpdateGroup{GroupId: groupID}); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -1062,7 +1062,7 @@ func (k Keeper) doUpdateGroup(ctx context.Context, groupID uint64, reqGroupAdmin
|
||||
// validateDecisionPolicies loops through all decision policies from the group,
|
||||
// and calls each of their Validate() method.
|
||||
func (k Keeper) validateDecisionPolicies(ctx context.Context, g group.GroupInfo) error {
|
||||
kvStore := k.environment.KVStoreService.OpenKVStore(ctx)
|
||||
kvStore := k.KVStoreService.OpenKVStore(ctx)
|
||||
it, err := k.groupPolicyByGroupIndex.Get(kvStore, g.Id)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -12,8 +12,6 @@ import (
|
||||
"github.com/golang/mock/gomock"
|
||||
|
||||
"cosmossdk.io/core/header"
|
||||
"cosmossdk.io/log"
|
||||
storetypes "cosmossdk.io/store/types"
|
||||
banktypes "cosmossdk.io/x/bank/types"
|
||||
"cosmossdk.io/x/group"
|
||||
"cosmossdk.io/x/group/internal/math"
|
||||
@@ -21,7 +19,6 @@ import (
|
||||
minttypes "cosmossdk.io/x/mint/types"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/codec/address"
|
||||
"github.com/cosmos/cosmos-sdk/runtime"
|
||||
simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims"
|
||||
"github.com/cosmos/cosmos-sdk/testutil/testdata"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
@@ -1995,12 +1992,10 @@ func (s *TestSuite) TestWithdrawProposal() {
|
||||
postRun: func(sdkCtx sdk.Context) {
|
||||
resp, err := s.groupKeeper.Proposal(s.ctx, &group.QueryProposalRequest{ProposalId: proposalID})
|
||||
s.Require().NoError(err)
|
||||
key := storetypes.NewKVStoreKey(group.StoreKey)
|
||||
env := runtime.NewEnvironment(runtime.NewKVStoreService(key), log.NewNopLogger())
|
||||
vpe := resp.Proposal.VotingPeriodEnd
|
||||
timeDiff := vpe.Sub(s.sdkCtx.HeaderInfo().Time)
|
||||
ctxVPE := sdkCtx.WithHeaderInfo(header.Info{Time: s.sdkCtx.HeaderInfo().Time.Add(timeDiff).Add(time.Second * 1)})
|
||||
s.Require().NoError(s.groupKeeper.TallyProposalsAtVPEnd(ctxVPE, env))
|
||||
s.Require().NoError(s.groupKeeper.TallyProposalsAtVPEnd(ctxVPE))
|
||||
events := ctxVPE.EventManager().ABCIEvents()
|
||||
|
||||
s.Require().True(eventTypeFound(events, EventProposalPruned))
|
||||
|
||||
@@ -17,7 +17,7 @@ import (
|
||||
// doExecuteMsgs routes the messages to the registered handlers. Messages are limited to those that require no authZ or
|
||||
// by the account of group policy only. Otherwise this gives access to other peoples accounts as the sdk middlewares are bypassed
|
||||
func (k Keeper) doExecuteMsgs(ctx context.Context, proposal group.Proposal, groupPolicyAcc sdk.AccAddress, decisionPolicy group.DecisionPolicy) error {
|
||||
currentTime := k.environment.HeaderService.GetHeaderInfo(ctx).Time
|
||||
currentTime := k.HeaderService.HeaderInfo(ctx).Time
|
||||
|
||||
// Ensure it's not too early to execute the messages.
|
||||
minExecutionDate := proposal.SubmitTime.Add(decisionPolicy.GetMinExecutionPeriod())
|
||||
@@ -45,7 +45,7 @@ func (k Keeper) doExecuteMsgs(ctx context.Context, proposal group.Proposal, grou
|
||||
}
|
||||
|
||||
for i, msg := range msgs {
|
||||
if _, err := k.environment.RouterService.MessageRouterService().InvokeUntyped(ctx, msg); err != nil {
|
||||
if _, err := k.RouterService.MessageRouterService().InvokeUntyped(ctx, msg); err != nil {
|
||||
return errorsmod.Wrapf(err, "message %s at position %d", sdk.MsgTypeURL(msg), i)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ func (k Keeper) Tally(ctx context.Context, p group.Proposal, groupID uint64) (gr
|
||||
return p.FinalTallyResult, nil
|
||||
}
|
||||
|
||||
kvStore := k.environment.KVStoreService.OpenKVStore(ctx)
|
||||
kvStore := k.KVStoreService.OpenKVStore(ctx)
|
||||
|
||||
it, err := k.voteByProposalIndex.Get(kvStore, p.Id)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user