fix: Update "Group Account" naming to "Group Policy" in group module (#10865)

## Description

Closes: #10565 

Rename mentions of "group account" (in proto files, code, docs, etc.) to "group policy" in group module.

---

### Author Checklist

*All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.*

I have...

- [ ] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [ ] added `!` to the type prefix if API or client breaking change
- [ ] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#pr-targeting))
- [ ] provided a link to the relevant issue or specification
- [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules)
- [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#testing)
- [ ] added a changelog entry to `CHANGELOG.md`
- [ ] included comments for [documenting Go code](https://blog.golang.org/godoc)
- [ ] updated the relevant documentation or specification
- [ ] reviewed "Files changed" and left comments if necessary
- [ ] confirmed all CI checks have passed

### Reviewers Checklist

*All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.*

I have...

- [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [ ] confirmed `!` in the type prefix if API or client breaking change
- [ ] confirmed all author checklist items have been addressed 
- [ ] reviewed state machine logic
- [ ] reviewed API design and naming
- [ ] reviewed documentation is accurate
- [ ] reviewed tests and test coverage
- [ ] manually tested (if applicable)
This commit is contained in:
likhita-809 2022-01-05 14:24:52 +05:30 committed by GitHub
parent 074c95bdbf
commit 28541e7ca3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
29 changed files with 1904 additions and 1904 deletions

View File

@ -20,18 +20,18 @@ message EventUpdateGroup {
uint64 group_id = 1; uint64 group_id = 1;
} }
// EventCreateGroupAccount is an event emitted when a group account is created. // EventCreateGroupPolicy is an event emitted when a group policy is created.
message EventCreateGroupAccount { message EventCreateGroupPolicy {
// address is the address of the group account. // address is the account address of the group policy.
string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
; ;
} }
// EventUpdateGroupAccount is an event emitted when a group account is updated. // EventUpdateGroupPolicy is an event emitted when a group policy is updated.
message EventUpdateGroupAccount { message EventUpdateGroupPolicy {
// address is the address of the group account. // address is the account address of the group policy.
string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
; ;
} }

View File

@ -17,9 +17,9 @@ service Query {
option (google.api.http).get = "/cosmos/group/v1beta1/group_info/{group_id}"; option (google.api.http).get = "/cosmos/group/v1beta1/group_info/{group_id}";
}; };
// GroupAccountInfo queries group account info based on group account address. // GroupPolicyInfo queries group policy info based on account address of group policy.
rpc GroupAccountInfo(QueryGroupAccountInfoRequest) returns (QueryGroupAccountInfoResponse) { rpc GroupPolicyInfo(QueryGroupPolicyInfoRequest) returns (QueryGroupPolicyInfoResponse) {
option (google.api.http).get = "/cosmos/group/v1beta1/group_account_info/{address}"; option (google.api.http).get = "/cosmos/group/v1beta1/group_policy_info/{address}";
}; };
// GroupMembers queries members of a group // GroupMembers queries members of a group
@ -32,14 +32,14 @@ service Query {
option (google.api.http).get = "/cosmos/group/v1beta1/groups_by_admin/{admin}"; option (google.api.http).get = "/cosmos/group/v1beta1/groups_by_admin/{admin}";
}; };
// GroupAccountsByGroup queries group accounts by group id. // GroupPoliciesByGroup queries group policies by group id.
rpc GroupAccountsByGroup(QueryGroupAccountsByGroupRequest) returns (QueryGroupAccountsByGroupResponse) { rpc GroupPoliciesByGroup(QueryGroupPoliciesByGroupRequest) returns (QueryGroupPoliciesByGroupResponse) {
option (google.api.http).get = "/cosmos/group/v1beta1/group_accounts_by_group/{group_id}"; option (google.api.http).get = "/cosmos/group/v1beta1/group_policies_by_group/{group_id}";
}; };
// GroupsByAdmin queries group accounts by admin address. // GroupsByAdmin queries group policies by admin address.
rpc GroupAccountsByAdmin(QueryGroupAccountsByAdminRequest) returns (QueryGroupAccountsByAdminResponse) { rpc GroupPoliciesByAdmin(QueryGroupPoliciesByAdminRequest) returns (QueryGroupPoliciesByAdminResponse) {
option (google.api.http).get = "/cosmos/group/v1beta1/group_accounts_by_admin/{admin}"; option (google.api.http).get = "/cosmos/group/v1beta1/group_policies_by_admin/{admin}";
}; };
// Proposal queries a proposal based on proposal id. // Proposal queries a proposal based on proposal id.
@ -47,9 +47,9 @@ service Query {
option (google.api.http).get = "/cosmos/group/v1beta1/proposal/{proposal_id}"; option (google.api.http).get = "/cosmos/group/v1beta1/proposal/{proposal_id}";
}; };
// ProposalsByGroupAccount queries proposals based on group account address. // ProposalsByGroupPolicy queries proposals based on account address of group policy.
rpc ProposalsByGroupAccount(QueryProposalsByGroupAccountRequest) returns (QueryProposalsByGroupAccountResponse) { rpc ProposalsByGroupPolicy(QueryProposalsByGroupPolicyRequest) returns (QueryProposalsByGroupPolicyResponse) {
option (google.api.http).get = "/cosmos/group/v1beta1/proposals_by_group_account/{address}"; option (google.api.http).get = "/cosmos/group/v1beta1/proposals_by_group_policy/{address}";
}; };
// VoteByProposalVoter queries a vote by proposal id and voter. // VoteByProposalVoter queries a vote by proposal id and voter.
@ -87,18 +87,18 @@ message QueryGroupInfoResponse {
GroupInfo info = 1; GroupInfo info = 1;
} }
// QueryGroupAccountInfoRequest is the Query/GroupAccountInfo request type. // QueryGroupPolicyInfoRequest is the Query/GroupPolicyInfo request type.
message QueryGroupAccountInfoRequest { message QueryGroupPolicyInfoRequest {
// address is the account address of the group account. // address is the account address of the group policy.
string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
} }
// QueryGroupAccountInfoResponse is the Query/GroupAccountInfo response type. // QueryGroupPolicyInfoResponse is the Query/GroupPolicyInfo response type.
message QueryGroupAccountInfoResponse { message QueryGroupPolicyInfoResponse {
// info is the GroupAccountInfo for the group account. // info is the GroupPolicyInfo for the group policy.
GroupAccountInfo info = 1; GroupPolicyInfo info = 1;
} }
// QueryGroupMembersRequest is the Query/GroupMembers request type. // QueryGroupMembersRequest is the Query/GroupMembers request type.
@ -141,41 +141,41 @@ message QueryGroupsByAdminResponse {
cosmos.base.query.v1beta1.PageResponse pagination = 2; cosmos.base.query.v1beta1.PageResponse pagination = 2;
} }
// QueryGroupAccountsByGroupRequest is the Query/GroupAccountsByGroup request type. // QueryGroupPoliciesByGroupRequest is the Query/GroupPoliciesByGroup request type.
message QueryGroupAccountsByGroupRequest { message QueryGroupPoliciesByGroupRequest {
// group_id is the unique ID of the group account's group. // group_id is the unique ID of the group policy's group.
uint64 group_id = 1; uint64 group_id = 1;
// pagination defines an optional pagination for the request. // pagination defines an optional pagination for the request.
cosmos.base.query.v1beta1.PageRequest pagination = 2; cosmos.base.query.v1beta1.PageRequest pagination = 2;
} }
// QueryGroupAccountsByGroupResponse is the Query/GroupAccountsByGroup response type. // QueryGroupPoliciesByGroupResponse is the Query/GroupPoliciesByGroup response type.
message QueryGroupAccountsByGroupResponse { message QueryGroupPoliciesByGroupResponse {
// group_accounts are the group accounts info associated with the provided group. // group_policies are the group policies info associated with the provided group.
repeated GroupAccountInfo group_accounts = 1; repeated GroupPolicyInfo group_policies = 1;
// pagination defines the pagination in the response. // pagination defines the pagination in the response.
cosmos.base.query.v1beta1.PageResponse pagination = 2; cosmos.base.query.v1beta1.PageResponse pagination = 2;
} }
// QueryGroupAccountsByAdminRequest is the Query/GroupAccountsByAdmin request type. // QueryGroupPoliciesByAdminRequest is the Query/GroupPoliciesByAdmin request type.
message QueryGroupAccountsByAdminRequest { message QueryGroupPoliciesByAdminRequest {
// admin is the admin address of the group account. // admin is the admin address of the group policy.
string admin = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; string admin = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
// pagination defines an optional pagination for the request. // pagination defines an optional pagination for the request.
cosmos.base.query.v1beta1.PageRequest pagination = 2; cosmos.base.query.v1beta1.PageRequest pagination = 2;
} }
// QueryGroupAccountsByAdminResponse is the Query/GroupAccountsByAdmin response type. // QueryGroupPoliciesByAdminResponse is the Query/GroupPoliciesByAdmin response type.
message QueryGroupAccountsByAdminResponse { message QueryGroupPoliciesByAdminResponse {
// group_accounts are the group accounts info with provided admin. // group_policies are the group policies info with provided admin.
repeated GroupAccountInfo group_accounts = 1; repeated GroupPolicyInfo group_policies = 1;
// pagination defines the pagination in the response. // pagination defines the pagination in the response.
cosmos.base.query.v1beta1.PageResponse pagination = 2; cosmos.base.query.v1beta1.PageResponse pagination = 2;
@ -195,20 +195,20 @@ message QueryProposalResponse {
Proposal proposal = 1; Proposal proposal = 1;
} }
// QueryProposalsByGroupAccountRequest is the Query/ProposalByGroupAccount request type. // QueryProposalsByGroupPolicyRequest is the Query/ProposalByGroupPolicy request type.
message QueryProposalsByGroupAccountRequest { message QueryProposalsByGroupPolicyRequest {
// address is the group account address related to proposals. // address is the account address of the group policy related to proposals.
string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
// pagination defines an optional pagination for the request. // pagination defines an optional pagination for the request.
cosmos.base.query.v1beta1.PageRequest pagination = 2; cosmos.base.query.v1beta1.PageRequest pagination = 2;
} }
// QueryProposalsByGroupAccountResponse is the Query/ProposalByGroupAccount response type. // QueryProposalsByGroupPolicyResponse is the Query/ProposalByGroupPolicy response type.
message QueryProposalsByGroupAccountResponse { message QueryProposalsByGroupPolicyResponse {
// proposals are the proposals with given group account. // proposals are the proposals with given group policy.
repeated Proposal proposals = 1; repeated Proposal proposals = 1;
// pagination defines the pagination in the response. // pagination defines the pagination in the response.

View File

@ -24,18 +24,18 @@ service Msg {
// UpdateGroupMetadata updates the group metadata with given group id and admin address. // UpdateGroupMetadata updates the group metadata with given group id and admin address.
rpc UpdateGroupMetadata(MsgUpdateGroupMetadata) returns (MsgUpdateGroupMetadataResponse); rpc UpdateGroupMetadata(MsgUpdateGroupMetadata) returns (MsgUpdateGroupMetadataResponse);
// CreateGroupAccount creates a new group account using given DecisionPolicy. // CreateGroupPolicy creates a new group policy using given DecisionPolicy.
rpc CreateGroupAccount(MsgCreateGroupAccount) returns (MsgCreateGroupAccountResponse); rpc CreateGroupPolicy(MsgCreateGroupPolicy) returns (MsgCreateGroupPolicyResponse);
// UpdateGroupAccountAdmin updates a group account admin. // UpdateGroupPolicyAdmin updates a group policy admin.
rpc UpdateGroupAccountAdmin(MsgUpdateGroupAccountAdmin) returns (MsgUpdateGroupAccountAdminResponse); rpc UpdateGroupPolicyAdmin(MsgUpdateGroupPolicyAdmin) returns (MsgUpdateGroupPolicyAdminResponse);
// UpdateGroupAccountDecisionPolicy allows a group account decision policy to be updated. // UpdateGroupPolicyDecisionPolicy allows a group policy's decision policy to be updated.
rpc UpdateGroupAccountDecisionPolicy(MsgUpdateGroupAccountDecisionPolicy) rpc UpdateGroupPolicyDecisionPolicy(MsgUpdateGroupPolicyDecisionPolicy)
returns (MsgUpdateGroupAccountDecisionPolicyResponse); returns (MsgUpdateGroupPolicyDecisionPolicyResponse);
// UpdateGroupAccountMetadata updates a group account metadata. // UpdateGroupPolicyMetadata updates a group policy metadata.
rpc UpdateGroupAccountMetadata(MsgUpdateGroupAccountMetadata) returns (MsgUpdateGroupAccountMetadataResponse); rpc UpdateGroupPolicyMetadata(MsgUpdateGroupPolicyMetadata) returns (MsgUpdateGroupPolicyMetadataResponse);
// CreateProposal submits a new proposal. // CreateProposal submits a new proposal.
rpc CreateProposal(MsgCreateProposal) returns (MsgCreateProposalResponse); rpc CreateProposal(MsgCreateProposal) returns (MsgCreateProposalResponse);
@ -121,11 +121,11 @@ message MsgUpdateGroupMetadata {
message MsgUpdateGroupMetadataResponse {} message MsgUpdateGroupMetadataResponse {}
// //
// Group Accounts // Group Policies
// //
// MsgCreateGroupAccount is the Msg/CreateGroupAccount request type. // MsgCreateGroupPolicy is the Msg/CreateGroupPolicy request type.
message MsgCreateGroupAccount { message MsgCreateGroupPolicy {
option (gogoproto.goproto_getters) = false; option (gogoproto.goproto_getters) = false;
// admin is the account address of the group admin. // admin is the account address of the group admin.
@ -134,68 +134,68 @@ message MsgCreateGroupAccount {
// group_id is the unique ID of the group. // group_id is the unique ID of the group.
uint64 group_id = 2; uint64 group_id = 2;
// metadata is any arbitrary metadata to attached to the group account. // metadata is any arbitrary metadata attached to the group policy.
bytes metadata = 3; bytes metadata = 3;
// decision_policy specifies the group account's decision policy. // decision_policy specifies the group policy's decision policy.
google.protobuf.Any decision_policy = 4 [(cosmos_proto.accepts_interface) = "DecisionPolicy"]; google.protobuf.Any decision_policy = 4 [(cosmos_proto.accepts_interface) = "DecisionPolicy"];
} }
// MsgCreateGroupAccountResponse is the Msg/CreateGroupAccount response type. // MsgCreateGroupPolicyResponse is the Msg/CreateGroupPolicy response type.
message MsgCreateGroupAccountResponse { message MsgCreateGroupPolicyResponse {
// address is the account address of the newly created group account. // address is the account address of the newly created group policy.
string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
} }
// MsgUpdateGroupAccountAdmin is the Msg/UpdateGroupAccountAdmin request type. // MsgUpdateGroupPolicyAdmin is the Msg/UpdateGroupPolicyAdmin request type.
message MsgUpdateGroupAccountAdmin { message MsgUpdateGroupPolicyAdmin {
// admin is the account address of the group admin. // admin is the account address of the group admin.
string admin = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; string admin = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
// address is the group account address. // address is the account address of the group policy.
string address = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; string address = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"];
// new_admin is the new group account admin. // new_admin is the new group policy admin.
string new_admin = 3 [(cosmos_proto.scalar) = "cosmos.AddressString"]; string new_admin = 3 [(cosmos_proto.scalar) = "cosmos.AddressString"];
} }
// MsgUpdateGroupAccountAdminResponse is the Msg/UpdateGroupAccountAdmin response type. // MsgUpdateGroupPolicyAdminResponse is the Msg/UpdateGroupPolicyAdmin response type.
message MsgUpdateGroupAccountAdminResponse {} message MsgUpdateGroupPolicyAdminResponse {}
// MsgUpdateGroupAccountDecisionPolicy is the Msg/UpdateGroupAccountDecisionPolicy request type. // MsgUpdateGroupPolicyDecisionPolicy is the Msg/UpdateGroupPolicyDecisionPolicy request type.
message MsgUpdateGroupAccountDecisionPolicy { message MsgUpdateGroupPolicyDecisionPolicy {
option (gogoproto.goproto_getters) = false; option (gogoproto.goproto_getters) = false;
// admin is the account address of the group admin. // admin is the account address of the group admin.
string admin = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; string admin = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
// address is the group account address. // address is the account address of group policy.
string address = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; string address = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"];
// decision_policy is the updated group account decision policy. // decision_policy is the updated group policy's decision policy.
google.protobuf.Any decision_policy = 3 [(cosmos_proto.accepts_interface) = "DecisionPolicy"]; google.protobuf.Any decision_policy = 3 [(cosmos_proto.accepts_interface) = "DecisionPolicy"];
} }
// MsgUpdateGroupAccountDecisionPolicyResponse is the Msg/UpdateGroupAccountDecisionPolicy response type. // MsgUpdateGroupPolicyDecisionPolicyResponse is the Msg/UpdateGroupPolicyDecisionPolicy response type.
message MsgUpdateGroupAccountDecisionPolicyResponse {} message MsgUpdateGroupPolicyDecisionPolicyResponse {}
// MsgUpdateGroupAccountMetadata is the Msg/UpdateGroupAccountMetadata request type. // MsgUpdateGroupPolicyMetadata is the Msg/UpdateGroupPolicyMetadata request type.
message MsgUpdateGroupAccountMetadata { message MsgUpdateGroupPolicyMetadata {
// admin is the account address of the group admin. // admin is the account address of the group admin.
string admin = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; string admin = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
// address is the group account address. // address is the account address of group policy.
string address = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; string address = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"];
// metadata is the updated group account metadata. // metadata is the updated group policy metadata.
bytes metadata = 3; bytes metadata = 3;
} }
// MsgUpdateGroupAccountMetadataResponse is the Msg/UpdateGroupAccountMetadata response type. // MsgUpdateGroupPolicyMetadataResponse is the Msg/UpdateGroupPolicyMetadata response type.
message MsgUpdateGroupAccountMetadataResponse {} message MsgUpdateGroupPolicyMetadataResponse {}
// //
// Proposals and Voting // Proposals and Voting
@ -219,7 +219,7 @@ enum Exec {
message MsgCreateProposal { message MsgCreateProposal {
option (gogoproto.goproto_getters) = false; option (gogoproto.goproto_getters) = false;
// address is the group account address. // address is the account address of group policy.
string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
// proposers are the account addresses of the proposers. // proposers are the account addresses of the proposers.

View File

@ -98,12 +98,12 @@ message GroupMember {
Member member = 2; Member member = 2;
} }
// GroupAccountInfo represents the high-level on-chain information for a group account. // GroupPolicyInfo represents the high-level on-chain information for a group policy.
message GroupAccountInfo { message GroupPolicyInfo {
option (gogoproto.equal) = true; option (gogoproto.equal) = true;
option (gogoproto.goproto_getters) = false; option (gogoproto.goproto_getters) = false;
// address is the group account address. // address is the account address of group policy.
string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
// group_id is the unique ID of the group. // group_id is the unique ID of the group.
@ -112,19 +112,19 @@ message GroupAccountInfo {
// admin is the account address of the group admin. // admin is the account address of the group admin.
string admin = 3 [(cosmos_proto.scalar) = "cosmos.AddressString"]; string admin = 3 [(cosmos_proto.scalar) = "cosmos.AddressString"];
// metadata is any arbitrary metadata to attached to the group account. // metadata is any arbitrary metadata to attached to the group policy.
bytes metadata = 4; bytes metadata = 4;
// version is used to track changes to a group's GroupAccountInfo structure that // version is used to track changes to a group's GroupPolicyInfo structure that
// would create a different result on a running proposal. // would create a different result on a running proposal.
uint64 version = 5; uint64 version = 5;
// decision_policy specifies the group account's decision policy. // decision_policy specifies the group policy's decision policy.
google.protobuf.Any decision_policy = 6 [(cosmos_proto.accepts_interface) = "DecisionPolicy"]; google.protobuf.Any decision_policy = 6 [(cosmos_proto.accepts_interface) = "DecisionPolicy"];
} }
// Proposal defines a group proposal. Any member of a group can submit a proposal // Proposal defines a group proposal. Any member of a group can submit a proposal
// for a group account to decide upon. // for a group policy to decide upon.
// A proposal consists of a set of `sdk.Msg`s that will be executed if the proposal // A proposal consists of a set of `sdk.Msg`s that will be executed if the proposal
// passes as well as some optional metadata associated with the proposal. // passes as well as some optional metadata associated with the proposal.
message Proposal { message Proposal {
@ -133,7 +133,7 @@ message Proposal {
// proposal_id is the unique id of the proposal. // proposal_id is the unique id of the proposal.
uint64 proposal_id = 1; uint64 proposal_id = 1;
// address is the group account address. // address is the account address of group policy.
string address = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; string address = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"];
// metadata is any arbitrary metadata to attached to the proposal. // metadata is any arbitrary metadata to attached to the proposal.
@ -149,9 +149,9 @@ message Proposal {
// When group membership is changed, existing proposals from previous group versions will become invalid. // When group membership is changed, existing proposals from previous group versions will become invalid.
uint64 group_version = 6; uint64 group_version = 6;
// group_account_version tracks the version of the group account that this proposal corresponds to. // group_policy_version tracks the version of the group policy that this proposal corresponds to.
// When a decision policy is changed, existing proposals from previous policy versions will become invalid. // When a decision policy is changed, existing proposals from previous policy versions will become invalid.
uint64 group_account_version = 7; uint64 group_policy_version = 7;
// Status defines proposal statuses. // Status defines proposal statuses.
enum Status { enum Status {

View File

@ -21,13 +21,13 @@ func QueryCmd(name string) *cobra.Command {
queryCmd.AddCommand( queryCmd.AddCommand(
QueryGroupInfoCmd(), QueryGroupInfoCmd(),
QueryGroupAccountInfoCmd(), QueryGroupPolicyInfoCmd(),
QueryGroupMembersCmd(), QueryGroupMembersCmd(),
QueryGroupsByAdminCmd(), QueryGroupsByAdminCmd(),
QueryGroupAccountsByGroupCmd(), QueryGroupPoliciesByGroupCmd(),
QueryGroupAccountsByAdminCmd(), QueryGroupPoliciesByAdminCmd(),
QueryProposalCmd(), QueryProposalCmd(),
QueryProposalsByGroupAccountCmd(), QueryProposalsByGroupPolicyCmd(),
QueryVoteByProposalVoterCmd(), QueryVoteByProposalVoterCmd(),
QueryVotesByProposalCmd(), QueryVotesByProposalCmd(),
QueryVotesByVoterCmd(), QueryVotesByVoterCmd(),
@ -101,11 +101,11 @@ func QueryGroupInfoCmd() *cobra.Command {
return cmd return cmd
} }
// QueryGroupAccountInfoCmd creates a CLI command for Query/GroupAccountInfo. // QueryGroupPolicyInfoCmd creates a CLI command for Query/GroupPolicyInfo.
func QueryGroupAccountInfoCmd() *cobra.Command { func QueryGroupPolicyInfoCmd() *cobra.Command {
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "group-account-info [group-account]", Use: "group-policy-info [group-policy-account]",
Short: "Query for group account info by group account address", Short: "Query for group policy info by account address of group policy",
Args: cobra.ExactArgs(1), Args: cobra.ExactArgs(1),
RunE: func(cmd *cobra.Command, args []string) error { RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientQueryContext(cmd) clientCtx, err := client.GetClientQueryContext(cmd)
@ -115,7 +115,7 @@ func QueryGroupAccountInfoCmd() *cobra.Command {
queryClient := group.NewQueryClient(clientCtx) queryClient := group.NewQueryClient(clientCtx)
res, err := queryClient.GroupAccountInfo(cmd.Context(), &group.QueryGroupAccountInfoRequest{ res, err := queryClient.GroupPolicyInfo(cmd.Context(), &group.QueryGroupPolicyInfoRequest{
Address: args[0], Address: args[0],
}) })
if err != nil { if err != nil {
@ -208,11 +208,11 @@ func QueryGroupsByAdminCmd() *cobra.Command {
return cmd return cmd
} }
// QueryGroupAccountsByGroupCmd creates a CLI command for Query/GroupAccountsByGroup. // QueryGroupPoliciesByGroupCmd creates a CLI command for Query/GroupPoliciesByGroup.
func QueryGroupAccountsByGroupCmd() *cobra.Command { func QueryGroupPoliciesByGroupCmd() *cobra.Command {
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "group-accounts-by-group [group-id]", Use: "group-policies-by-group [group-id]",
Short: "Query for group accounts by group id with pagination flags", Short: "Query for group policies by group id with pagination flags",
Args: cobra.ExactArgs(1), Args: cobra.ExactArgs(1),
RunE: func(cmd *cobra.Command, args []string) error { RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientQueryContext(cmd) clientCtx, err := client.GetClientQueryContext(cmd)
@ -232,7 +232,7 @@ func QueryGroupAccountsByGroupCmd() *cobra.Command {
queryClient := group.NewQueryClient(clientCtx) queryClient := group.NewQueryClient(clientCtx)
res, err := queryClient.GroupAccountsByGroup(cmd.Context(), &group.QueryGroupAccountsByGroupRequest{ res, err := queryClient.GroupPoliciesByGroup(cmd.Context(), &group.QueryGroupPoliciesByGroupRequest{
GroupId: groupID, GroupId: groupID,
Pagination: pageReq, Pagination: pageReq,
}) })
@ -249,11 +249,11 @@ func QueryGroupAccountsByGroupCmd() *cobra.Command {
return cmd return cmd
} }
// QueryGroupAccountsByAdminCmd creates a CLI command for Query/GroupAccountsByAdmin. // QueryGroupPoliciesByAdminCmd creates a CLI command for Query/GroupPoliciesByAdmin.
func QueryGroupAccountsByAdminCmd() *cobra.Command { func QueryGroupPoliciesByAdminCmd() *cobra.Command {
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "group-accounts-by-admin [admin]", Use: "group-policies-by-admin [admin]",
Short: "Query for group accounts by admin account address with pagination flags", Short: "Query for group policies by admin account address with pagination flags",
Args: cobra.ExactArgs(1), Args: cobra.ExactArgs(1),
RunE: func(cmd *cobra.Command, args []string) error { RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientQueryContext(cmd) clientCtx, err := client.GetClientQueryContext(cmd)
@ -268,7 +268,7 @@ func QueryGroupAccountsByAdminCmd() *cobra.Command {
queryClient := group.NewQueryClient(clientCtx) queryClient := group.NewQueryClient(clientCtx)
res, err := queryClient.GroupAccountsByAdmin(cmd.Context(), &group.QueryGroupAccountsByAdminRequest{ res, err := queryClient.GroupPoliciesByAdmin(cmd.Context(), &group.QueryGroupPoliciesByAdminRequest{
Admin: args[0], Admin: args[0],
Pagination: pageReq, Pagination: pageReq,
}) })
@ -320,11 +320,11 @@ func QueryProposalCmd() *cobra.Command {
return cmd return cmd
} }
// QueryProposalsByGroupAccountCmd creates a CLI command for Query/ProposalsByGroupAccount. // QueryProposalsByGroupPolicyCmd creates a CLI command for Query/ProposalsByGroupPolicy.
func QueryProposalsByGroupAccountCmd() *cobra.Command { func QueryProposalsByGroupPolicyCmd() *cobra.Command {
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "proposals-by-group-account [group-account]", Use: "proposals-by-group-policy [group-policy-account]",
Short: "Query for proposals by group account address with pagination flags", Short: "Query for proposals by account address of group policy with pagination flags",
Args: cobra.ExactArgs(1), Args: cobra.ExactArgs(1),
RunE: func(cmd *cobra.Command, args []string) error { RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientQueryContext(cmd) clientCtx, err := client.GetClientQueryContext(cmd)
@ -339,7 +339,7 @@ func QueryProposalsByGroupAccountCmd() *cobra.Command {
queryClient := group.NewQueryClient(clientCtx) queryClient := group.NewQueryClient(clientCtx)
res, err := queryClient.ProposalsByGroupAccount(cmd.Context(), &group.QueryProposalsByGroupAccountRequest{ res, err := queryClient.ProposalsByGroupPolicy(cmd.Context(), &group.QueryProposalsByGroupPolicyRequest{
Address: args[0], Address: args[0],
Pagination: pageReq, Pagination: pageReq,
}) })

View File

@ -38,10 +38,10 @@ func TxCmd(name string) *cobra.Command {
MsgUpdateGroupAdminCmd(), MsgUpdateGroupAdminCmd(),
MsgUpdateGroupMetadataCmd(), MsgUpdateGroupMetadataCmd(),
MsgUpdateGroupMembersCmd(), MsgUpdateGroupMembersCmd(),
MsgCreateGroupAccountCmd(), MsgCreateGroupPolicyCmd(),
MsgUpdateGroupAccountAdminCmd(), MsgUpdateGroupPolicyAdminCmd(),
MsgUpdateGroupAccountDecisionPolicyCmd(), MsgUpdateGroupPolicyDecisionPolicyCmd(),
MsgUpdateGroupAccountMetadataCmd(), MsgUpdateGroupPolicyMetadataCmd(),
MsgCreateProposalCmd(), MsgCreateProposalCmd(),
MsgVoteCmd(), MsgVoteCmd(),
MsgExecCmd(), MsgExecCmd(),
@ -284,20 +284,20 @@ func MsgUpdateGroupMetadataCmd() *cobra.Command {
return cmd return cmd
} }
// MsgCreateGroupAccountCmd creates a CLI command for Msg/CreateGroupAccount. // MsgCreateGroupPolicyCmd creates a CLI command for Msg/CreateGroupPolicy.
func MsgCreateGroupAccountCmd() *cobra.Command { func MsgCreateGroupPolicyCmd() *cobra.Command {
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "create-group-account [admin] [group-id] [metadata] [decision-policy]", Use: "create-group-policy [admin] [group-id] [metadata] [decision-policy]",
Short: "Create a group account which is an account " + Short: "Create a group policy which is an account " +
"associated with a group and a decision policy. " + "associated with a group and a decision policy. " +
"Note, the '--from' flag is " + "Note, the '--from' flag is " +
"ignored as it is implied from [admin].", "ignored as it is implied from [admin].",
Long: strings.TrimSpace( Long: strings.TrimSpace(
fmt.Sprintf(`Create a group account which is an account associated with a group and a decision policy. fmt.Sprintf(`Create a group policy which is an account associated with a group and a decision policy.
Note, the '--from' flag is ignored as it is implied from [admin]. Note, the '--from' flag is ignored as it is implied from [admin].
Example: Example:
$ %s tx group create-group-account [admin] [group-id] [metadata] \ $ %s tx group create-group-policy [admin] [group-id] [metadata] \
'{"@type":"/cosmos.group.v1beta1.ThresholdDecisionPolicy", "threshold":"1", "timeout":"1s"}' '{"@type":"/cosmos.group.v1beta1.ThresholdDecisionPolicy", "threshold":"1", "timeout":"1s"}'
`, `,
version.AppName, version.AppName,
@ -330,7 +330,7 @@ $ %s tx group create-group-account [admin] [group-id] [metadata] \
return sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "metadata is malformed, proper base64 string is required") return sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "metadata is malformed, proper base64 string is required")
} }
msg, err := group.NewMsgCreateGroupAccount( msg, err := group.NewMsgCreateGroupPolicy(
clientCtx.GetFromAddress(), clientCtx.GetFromAddress(),
groupID, groupID,
b, b,
@ -352,11 +352,11 @@ $ %s tx group create-group-account [admin] [group-id] [metadata] \
return cmd return cmd
} }
// MsgUpdateGroupAccountAdminCmd creates a CLI command for Msg/UpdateGroupAccountAdmin. // MsgUpdateGroupPolicyAdminCmd creates a CLI command for Msg/UpdateGroupPolicyAdmin.
func MsgUpdateGroupAccountAdminCmd() *cobra.Command { func MsgUpdateGroupPolicyAdminCmd() *cobra.Command {
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "update-group-account-admin [admin] [group-account] [new-admin]", Use: "update-group-policy-admin [admin] [group-policy-account] [new-admin]",
Short: "Update a group account admin", Short: "Update a group policy admin",
Args: cobra.ExactArgs(3), Args: cobra.ExactArgs(3),
RunE: func(cmd *cobra.Command, args []string) error { RunE: func(cmd *cobra.Command, args []string) error {
err := cmd.Flags().Set(flags.FlagFrom, args[0]) err := cmd.Flags().Set(flags.FlagFrom, args[0])
@ -369,7 +369,7 @@ func MsgUpdateGroupAccountAdminCmd() *cobra.Command {
return err return err
} }
msg := &group.MsgUpdateGroupAccountAdmin{ msg := &group.MsgUpdateGroupPolicyAdmin{
Admin: clientCtx.GetFromAddress().String(), Admin: clientCtx.GetFromAddress().String(),
Address: args[1], Address: args[1],
NewAdmin: args[2], NewAdmin: args[2],
@ -387,11 +387,11 @@ func MsgUpdateGroupAccountAdminCmd() *cobra.Command {
return cmd return cmd
} }
// MsgUpdateGroupAccountDecisionPolicyCmd creates a CLI command for Msg/UpdateGroupAccountDecisionPolicy. // MsgUpdateGroupPolicyDecisionPolicyCmd creates a CLI command for Msg/UpdateGroupPolicyDecisionPolicy.
func MsgUpdateGroupAccountDecisionPolicyCmd() *cobra.Command { func MsgUpdateGroupPolicyDecisionPolicyCmd() *cobra.Command {
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "update-group-account-policy [admin] [group-account] [decision-policy]", Use: "update-group-account-policy [admin] [group-policy-account] [decision-policy]",
Short: "Update a group account decision policy", Short: "Update a group policy's decision policy",
Args: cobra.ExactArgs(3), Args: cobra.ExactArgs(3),
RunE: func(cmd *cobra.Command, args []string) error { RunE: func(cmd *cobra.Command, args []string) error {
err := cmd.Flags().Set(flags.FlagFrom, args[0]) err := cmd.Flags().Set(flags.FlagFrom, args[0])
@ -414,7 +414,7 @@ func MsgUpdateGroupAccountDecisionPolicyCmd() *cobra.Command {
return err return err
} }
msg, err := group.NewMsgUpdateGroupAccountDecisionPolicyRequest( msg, err := group.NewMsgUpdateGroupPolicyDecisionPolicyRequest(
clientCtx.GetFromAddress(), clientCtx.GetFromAddress(),
accountAddress, accountAddress,
policy, policy,
@ -436,11 +436,11 @@ func MsgUpdateGroupAccountDecisionPolicyCmd() *cobra.Command {
return cmd return cmd
} }
// MsgUpdateGroupAccountMetadataCmd creates a CLI command for Msg/MsgUpdateGroupAccountMetadata. // MsgUpdateGroupPolicyMetadataCmd creates a CLI command for Msg/MsgUpdateGroupPolicyMetadata.
func MsgUpdateGroupAccountMetadataCmd() *cobra.Command { func MsgUpdateGroupPolicyMetadataCmd() *cobra.Command {
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "update-group-account-metadata [admin] [group-account] [new-metadata]", Use: "update-group-policy-metadata [admin] [group-policy-account] [new-metadata]",
Short: "Update a group account metadata", Short: "Update a group policy metadata",
Args: cobra.ExactArgs(3), Args: cobra.ExactArgs(3),
RunE: func(cmd *cobra.Command, args []string) error { RunE: func(cmd *cobra.Command, args []string) error {
err := cmd.Flags().Set(flags.FlagFrom, args[0]) err := cmd.Flags().Set(flags.FlagFrom, args[0])
@ -458,7 +458,7 @@ func MsgUpdateGroupAccountMetadataCmd() *cobra.Command {
return sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "metadata is malformed, proper base64 string is required") return sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "metadata is malformed, proper base64 string is required")
} }
msg := &group.MsgUpdateGroupAccountMetadata{ msg := &group.MsgUpdateGroupPolicyMetadata{
Admin: clientCtx.GetFromAddress().String(), Admin: clientCtx.GetFromAddress().String(),
Address: args[1], Address: args[1],
Metadata: b, Metadata: b,
@ -479,12 +479,12 @@ func MsgUpdateGroupAccountMetadataCmd() *cobra.Command {
// MsgCreateProposalCmd creates a CLI command for Msg/CreateProposal. // MsgCreateProposalCmd creates a CLI command for Msg/CreateProposal.
func MsgCreateProposalCmd() *cobra.Command { func MsgCreateProposalCmd() *cobra.Command {
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "create-proposal [group-account] [proposer[,proposer]*] [msg_tx_json_file] [metadata]", Use: "create-proposal [group-policy-account] [proposer[,proposer]*] [msg_tx_json_file] [metadata]",
Short: "Submit a new proposal", Short: "Submit a new proposal",
Long: `Submit a new proposal. Long: `Submit a new proposal.
Parameters: Parameters:
group-account: address of the group account group-policy-account: account address of the group policy
proposer: comma separated (no spaces) list of proposer account addresses. Example: "addr1,addr2" proposer: comma separated (no spaces) list of proposer account addresses. Example: "addr1,addr2"
Metadata: metadata for the proposal Metadata: metadata for the proposal
msg_tx_json_file: path to json file with messages that will be executed if the proposal is accepted. msg_tx_json_file: path to json file with messages that will be executed if the proposal is accepted.

View File

@ -280,7 +280,7 @@ func (s *IntegrationTestSuite) TestQueryGroupsByAdmin() {
} }
} }
func (s *IntegrationTestSuite) TestQueryGroupAccountInfo() { func (s *IntegrationTestSuite) TestQueryGroupPolicyInfo() {
val := s.network.Validators[0] val := s.network.Validators[0]
clientCtx := val.ClientCtx clientCtx := val.ClientCtx
@ -292,15 +292,15 @@ func (s *IntegrationTestSuite) TestQueryGroupAccountInfo() {
expectedCode uint32 expectedCode uint32
}{ }{
{ {
"group account not found", "group policy not found",
[]string{val.Address.String(), fmt.Sprintf("--%s=json", tmcli.OutputFlag)}, []string{val.Address.String(), fmt.Sprintf("--%s=json", tmcli.OutputFlag)},
true, true,
"not found: invalid request", "not found: invalid request",
0, 0,
}, },
{ {
"group account found", "group policy found",
[]string{s.groupAccounts[0].Address, fmt.Sprintf("--%s=json", tmcli.OutputFlag)}, []string{s.groupPolicies[0].Address, fmt.Sprintf("--%s=json", tmcli.OutputFlag)},
false, false,
"", "",
0, 0,
@ -311,7 +311,7 @@ func (s *IntegrationTestSuite) TestQueryGroupAccountInfo() {
tc := tc tc := tc
s.Run(tc.name, func() { s.Run(tc.name, func() {
cmd := client.QueryGroupAccountInfoCmd() cmd := client.QueryGroupPolicyInfoCmd()
out, err := cli.ExecTestCLICmd(clientCtx, cmd, tc.args) out, err := cli.ExecTestCLICmd(clientCtx, cmd, tc.args)
if tc.expectErr { if tc.expectErr {
@ -319,20 +319,20 @@ func (s *IntegrationTestSuite) TestQueryGroupAccountInfo() {
} else { } else {
s.Require().NoError(err, out.String()) s.Require().NoError(err, out.String())
var g group.GroupAccountInfo var g group.GroupPolicyInfo
s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &g)) s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &g))
s.Require().Equal(s.groupAccounts[0].GroupId, g.GroupId) s.Require().Equal(s.groupPolicies[0].GroupId, g.GroupId)
s.Require().Equal(s.groupAccounts[0].Address, g.Address) s.Require().Equal(s.groupPolicies[0].Address, g.Address)
s.Require().Equal(s.groupAccounts[0].Admin, g.Admin) s.Require().Equal(s.groupPolicies[0].Admin, g.Admin)
s.Require().Equal(s.groupAccounts[0].Metadata, g.Metadata) s.Require().Equal(s.groupPolicies[0].Metadata, g.Metadata)
s.Require().Equal(s.groupAccounts[0].Version, g.Version) s.Require().Equal(s.groupPolicies[0].Version, g.Version)
s.Require().Equal(s.groupAccounts[0].GetDecisionPolicy(), g.GetDecisionPolicy()) s.Require().Equal(s.groupPolicies[0].GetDecisionPolicy(), g.GetDecisionPolicy())
} }
}) })
} }
} }
func (s *IntegrationTestSuite) TestQueryGroupAccountsByGroup() { func (s *IntegrationTestSuite) TestQueryGroupPoliciesByGroup() {
val := s.network.Validators[0] val := s.network.Validators[0]
clientCtx := val.ClientCtx clientCtx := val.ClientCtx
@ -342,7 +342,7 @@ func (s *IntegrationTestSuite) TestQueryGroupAccountsByGroup() {
expectErr bool expectErr bool
expectErrMsg string expectErrMsg string
expectedCode uint32 expectedCode uint32
expectGroupAccounts []*group.GroupAccountInfo expectGroupPolicies []*group.GroupPolicyInfo
}{ }{
{ {
"invalid group id", "invalid group id",
@ -350,28 +350,28 @@ func (s *IntegrationTestSuite) TestQueryGroupAccountsByGroup() {
true, true,
"strconv.ParseUint: parsing \"\": invalid syntax", "strconv.ParseUint: parsing \"\": invalid syntax",
0, 0,
[]*group.GroupAccountInfo{}, []*group.GroupPolicyInfo{},
}, },
{ {
"no group account", "no group policy",
[]string{"12345", fmt.Sprintf("--%s=json", tmcli.OutputFlag)}, []string{"12345", fmt.Sprintf("--%s=json", tmcli.OutputFlag)},
false, false,
"", "",
0, 0,
[]*group.GroupAccountInfo{}, []*group.GroupPolicyInfo{},
}, },
{ {
"found group accounts", "found group policies",
[]string{strconv.FormatUint(s.group.GroupId, 10), fmt.Sprintf("--%s=json", tmcli.OutputFlag)}, []string{strconv.FormatUint(s.group.GroupId, 10), fmt.Sprintf("--%s=json", tmcli.OutputFlag)},
false, false,
"", "",
0, 0,
[]*group.GroupAccountInfo{ []*group.GroupPolicyInfo{
s.groupAccounts[0], s.groupPolicies[0],
s.groupAccounts[1], s.groupPolicies[1],
s.groupAccounts[2], s.groupPolicies[2],
s.groupAccounts[3], s.groupPolicies[3],
s.groupAccounts[4], s.groupPolicies[4],
}, },
}, },
} }
@ -380,7 +380,7 @@ func (s *IntegrationTestSuite) TestQueryGroupAccountsByGroup() {
tc := tc tc := tc
s.Run(tc.name, func() { s.Run(tc.name, func() {
cmd := client.QueryGroupAccountsByGroupCmd() cmd := client.QueryGroupPoliciesByGroupCmd()
out, err := cli.ExecTestCLICmd(clientCtx, cmd, tc.args) out, err := cli.ExecTestCLICmd(clientCtx, cmd, tc.args)
if tc.expectErr { if tc.expectErr {
@ -388,22 +388,22 @@ func (s *IntegrationTestSuite) TestQueryGroupAccountsByGroup() {
} else { } else {
s.Require().NoError(err, out.String()) s.Require().NoError(err, out.String())
var res group.QueryGroupAccountsByGroupResponse var res group.QueryGroupPoliciesByGroupResponse
s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &res)) s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &res))
s.Require().Equal(len(res.GroupAccounts), len(tc.expectGroupAccounts)) s.Require().Equal(len(res.GroupPolicies), len(tc.expectGroupPolicies))
for i := range res.GroupAccounts { for i := range res.GroupPolicies {
s.Require().Equal(res.GroupAccounts[i].GroupId, tc.expectGroupAccounts[i].GroupId) s.Require().Equal(res.GroupPolicies[i].GroupId, tc.expectGroupPolicies[i].GroupId)
s.Require().Equal(res.GroupAccounts[i].Metadata, tc.expectGroupAccounts[i].Metadata) s.Require().Equal(res.GroupPolicies[i].Metadata, tc.expectGroupPolicies[i].Metadata)
s.Require().Equal(res.GroupAccounts[i].Version, tc.expectGroupAccounts[i].Version) s.Require().Equal(res.GroupPolicies[i].Version, tc.expectGroupPolicies[i].Version)
s.Require().Equal(res.GroupAccounts[i].Admin, tc.expectGroupAccounts[i].Admin) s.Require().Equal(res.GroupPolicies[i].Admin, tc.expectGroupPolicies[i].Admin)
s.Require().Equal(res.GroupAccounts[i].GetDecisionPolicy(), tc.expectGroupAccounts[i].GetDecisionPolicy()) s.Require().Equal(res.GroupPolicies[i].GetDecisionPolicy(), tc.expectGroupPolicies[i].GetDecisionPolicy())
} }
} }
}) })
} }
} }
func (s *IntegrationTestSuite) TestQueryGroupAccountsByAdmin() { func (s *IntegrationTestSuite) TestQueryGroupPoliciesByAdmin() {
val := s.network.Validators[0] val := s.network.Validators[0]
clientCtx := val.ClientCtx clientCtx := val.ClientCtx
@ -413,7 +413,7 @@ func (s *IntegrationTestSuite) TestQueryGroupAccountsByAdmin() {
expectErr bool expectErr bool
expectErrMsg string expectErrMsg string
expectedCode uint32 expectedCode uint32
expectGroupAccounts []*group.GroupAccountInfo expectGroupPolicies []*group.GroupPolicyInfo
}{ }{
{ {
"invalid admin address", "invalid admin address",
@ -421,28 +421,28 @@ func (s *IntegrationTestSuite) TestQueryGroupAccountsByAdmin() {
true, true,
"decoding bech32 failed: invalid bech32 string", "decoding bech32 failed: invalid bech32 string",
0, 0,
[]*group.GroupAccountInfo{}, []*group.GroupPolicyInfo{},
}, },
{ {
"no group account", "no group policy",
[]string{s.network.Validators[1].Address.String(), fmt.Sprintf("--%s=json", tmcli.OutputFlag)}, []string{s.network.Validators[1].Address.String(), fmt.Sprintf("--%s=json", tmcli.OutputFlag)},
false, false,
"", "",
0, 0,
[]*group.GroupAccountInfo{}, []*group.GroupPolicyInfo{},
}, },
{ {
"found group accounts", "found group policies",
[]string{val.Address.String(), fmt.Sprintf("--%s=json", tmcli.OutputFlag)}, []string{val.Address.String(), fmt.Sprintf("--%s=json", tmcli.OutputFlag)},
false, false,
"", "",
0, 0,
[]*group.GroupAccountInfo{ []*group.GroupPolicyInfo{
s.groupAccounts[0], s.groupPolicies[0],
s.groupAccounts[1], s.groupPolicies[1],
s.groupAccounts[2], s.groupPolicies[2],
s.groupAccounts[3], s.groupPolicies[3],
s.groupAccounts[4], s.groupPolicies[4],
}, },
}, },
} }
@ -451,7 +451,7 @@ func (s *IntegrationTestSuite) TestQueryGroupAccountsByAdmin() {
tc := tc tc := tc
s.Run(tc.name, func() { s.Run(tc.name, func() {
cmd := client.QueryGroupAccountsByAdminCmd() cmd := client.QueryGroupPoliciesByAdminCmd()
out, err := cli.ExecTestCLICmd(clientCtx, cmd, tc.args) out, err := cli.ExecTestCLICmd(clientCtx, cmd, tc.args)
if tc.expectErr { if tc.expectErr {
@ -459,15 +459,15 @@ func (s *IntegrationTestSuite) TestQueryGroupAccountsByAdmin() {
} else { } else {
s.Require().NoError(err, out.String()) s.Require().NoError(err, out.String())
var res group.QueryGroupAccountsByAdminResponse var res group.QueryGroupPoliciesByAdminResponse
s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &res)) s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &res))
s.Require().Equal(len(res.GroupAccounts), len(tc.expectGroupAccounts)) s.Require().Equal(len(res.GroupPolicies), len(tc.expectGroupPolicies))
for i := range res.GroupAccounts { for i := range res.GroupPolicies {
s.Require().Equal(res.GroupAccounts[i].GroupId, tc.expectGroupAccounts[i].GroupId) s.Require().Equal(res.GroupPolicies[i].GroupId, tc.expectGroupPolicies[i].GroupId)
s.Require().Equal(res.GroupAccounts[i].Metadata, tc.expectGroupAccounts[i].Metadata) s.Require().Equal(res.GroupPolicies[i].Metadata, tc.expectGroupPolicies[i].Metadata)
s.Require().Equal(res.GroupAccounts[i].Version, tc.expectGroupAccounts[i].Version) s.Require().Equal(res.GroupPolicies[i].Version, tc.expectGroupPolicies[i].Version)
s.Require().Equal(res.GroupAccounts[i].Admin, tc.expectGroupAccounts[i].Admin) s.Require().Equal(res.GroupPolicies[i].Admin, tc.expectGroupPolicies[i].Admin)
s.Require().Equal(res.GroupAccounts[i].GetDecisionPolicy(), tc.expectGroupAccounts[i].GetDecisionPolicy()) s.Require().Equal(res.GroupPolicies[i].GetDecisionPolicy(), tc.expectGroupPolicies[i].GetDecisionPolicy())
} }
} }
}) })
@ -517,7 +517,7 @@ func (s *IntegrationTestSuite) TestQueryProposal() {
} }
} }
func (s *IntegrationTestSuite) TestQueryProposalsByGroupAccount() { func (s *IntegrationTestSuite) TestQueryProposalsByGroupPolicy() {
val := s.network.Validators[0] val := s.network.Validators[0]
clientCtx := val.ClientCtx clientCtx := val.ClientCtx
@ -530,7 +530,7 @@ func (s *IntegrationTestSuite) TestQueryProposalsByGroupAccount() {
expectProposals []*group.Proposal expectProposals []*group.Proposal
}{ }{
{ {
"invalid group account address", "invalid group policy address",
[]string{"invalid"}, []string{"invalid"},
true, true,
"decoding bech32 failed: invalid bech32 string", "decoding bech32 failed: invalid bech32 string",
@ -538,7 +538,7 @@ func (s *IntegrationTestSuite) TestQueryProposalsByGroupAccount() {
[]*group.Proposal{}, []*group.Proposal{},
}, },
{ {
"no group account", "no group policy",
[]string{s.network.Validators[1].Address.String(), fmt.Sprintf("--%s=json", tmcli.OutputFlag)}, []string{s.network.Validators[1].Address.String(), fmt.Sprintf("--%s=json", tmcli.OutputFlag)},
false, false,
"", "",
@ -547,7 +547,7 @@ func (s *IntegrationTestSuite) TestQueryProposalsByGroupAccount() {
}, },
{ {
"found proposals", "found proposals",
[]string{s.groupAccounts[0].Address, fmt.Sprintf("--%s=json", tmcli.OutputFlag)}, []string{s.groupPolicies[0].Address, fmt.Sprintf("--%s=json", tmcli.OutputFlag)},
false, false,
"", "",
0, 0,
@ -561,7 +561,7 @@ func (s *IntegrationTestSuite) TestQueryProposalsByGroupAccount() {
tc := tc tc := tc
s.Run(tc.name, func() { s.Run(tc.name, func() {
cmd := client.QueryProposalsByGroupAccountCmd() cmd := client.QueryProposalsByGroupPolicyCmd()
out, err := cli.ExecTestCLICmd(clientCtx, cmd, tc.args) out, err := cli.ExecTestCLICmd(clientCtx, cmd, tc.args)
if tc.expectErr { if tc.expectErr {
@ -569,7 +569,7 @@ func (s *IntegrationTestSuite) TestQueryProposalsByGroupAccount() {
} else { } else {
s.Require().NoError(err, out.String()) s.Require().NoError(err, out.String())
var res group.QueryProposalsByGroupAccountResponse var res group.QueryProposalsByGroupPolicyResponse
s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &res)) s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &res))
s.Require().Equal(len(res.Proposals), len(tc.expectProposals)) s.Require().Equal(len(res.Proposals), len(tc.expectProposals))
for i := range res.Proposals { for i := range res.Proposals {
@ -708,7 +708,7 @@ func (s *IntegrationTestSuite) TestQueryVotesByVoter() {
}, },
{ {
"no votes", "no votes",
[]string{s.groupAccounts[0].Address, fmt.Sprintf("--%s=json", tmcli.OutputFlag)}, []string{s.groupPolicies[0].Address, fmt.Sprintf("--%s=json", tmcli.OutputFlag)},
true, true,
"", "",
0, 0,

View File

@ -28,7 +28,7 @@ type IntegrationTestSuite struct {
network *network.Network network *network.Network
group *group.GroupInfo group *group.GroupInfo
groupAccounts []*group.GroupAccountInfo groupPolicies []*group.GroupPolicyInfo
proposal *group.Proposal proposal *group.Proposal
vote *group.Vote vote *group.Vote
} }
@ -100,13 +100,13 @@ func (s *IntegrationTestSuite) SetupSuite() {
s.group = &group.GroupInfo{GroupId: 1, Admin: val.Address.String(), Metadata: []byte{1}, TotalWeight: "3", Version: 1} s.group = &group.GroupInfo{GroupId: 1, Admin: val.Address.String(), Metadata: []byte{1}, TotalWeight: "3", Version: 1}
// create 5 group accounts // create 5 group policies
for i := 0; i < 5; i++ { for i := 0; i < 5; i++ {
threshold := i + 1 threshold := i + 1
if threshold > 3 { if threshold > 3 {
threshold = 3 threshold = 3
} }
out, err = cli.ExecTestCLICmd(val.ClientCtx, client.MsgCreateGroupAccountCmd(), out, err = cli.ExecTestCLICmd(val.ClientCtx, client.MsgCreateGroupPolicyCmd(),
append( append(
[]string{ []string{
val.Address.String(), val.Address.String(),
@ -121,21 +121,21 @@ func (s *IntegrationTestSuite) SetupSuite() {
s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &txResp), out.String()) s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &txResp), out.String())
s.Require().Equal(uint32(0), txResp.Code, out.String()) s.Require().Equal(uint32(0), txResp.Code, out.String())
out, err = cli.ExecTestCLICmd(val.ClientCtx, client.QueryGroupAccountsByGroupCmd(), []string{"1", fmt.Sprintf("--%s=json", tmcli.OutputFlag)}) out, err = cli.ExecTestCLICmd(val.ClientCtx, client.QueryGroupPoliciesByGroupCmd(), []string{"1", fmt.Sprintf("--%s=json", tmcli.OutputFlag)})
s.Require().NoError(err, out.String()) s.Require().NoError(err, out.String())
} }
var res group.QueryGroupAccountsByGroupResponse var res group.QueryGroupPoliciesByGroupResponse
s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &res)) s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &res))
s.Require().Equal(len(res.GroupAccounts), 5) s.Require().Equal(len(res.GroupPolicies), 5)
s.groupAccounts = res.GroupAccounts s.groupPolicies = res.GroupPolicies
// create a proposal // create a proposal
validTxFileName := getTxSendFileName(s, s.groupAccounts[0].Address, val.Address.String()) validTxFileName := getTxSendFileName(s, s.groupPolicies[0].Address, val.Address.String())
out, err = cli.ExecTestCLICmd(val.ClientCtx, client.MsgCreateProposalCmd(), out, err = cli.ExecTestCLICmd(val.ClientCtx, client.MsgCreateProposalCmd(),
append( append(
[]string{ []string{
s.groupAccounts[0].Address, s.groupPolicies[0].Address,
val.Address.String(), val.Address.String(),
validTxFileName, validTxFileName,
"", "",
@ -565,7 +565,7 @@ func (s *IntegrationTestSuite) TestTxUpdateGroupMembers() {
"address": "%s", "address": "%s",
"weight": "1", "weight": "1",
"metadata": "%s" "metadata": "%s"
}]}`, val.Address.String(), validMetadata, s.groupAccounts[0].Address, validMetadata)).Name() }]}`, val.Address.String(), validMetadata, s.groupPolicies[0].Address, validMetadata)).Name()
invalidMembersMetadata := fmt.Sprintf(`{"members": [{ invalidMembersMetadata := fmt.Sprintf(`{"members": [{
"address": "%s", "address": "%s",
@ -607,7 +607,7 @@ func (s *IntegrationTestSuite) TestTxUpdateGroupMembers() {
"address": "%s", "address": "%s",
"weight": "2", "weight": "2",
"metadata": "%s" "metadata": "%s"
}]}`, s.groupAccounts[0].Address, validMetadata)).Name(), }]}`, s.groupPolicies[0].Address, validMetadata)).Name(),
fmt.Sprintf("--%s=%s", flags.FlagSignMode, flags.SignModeLegacyAminoJSON), fmt.Sprintf("--%s=%s", flags.FlagSignMode, flags.SignModeLegacyAminoJSON),
}, },
commonFlags..., commonFlags...,
@ -669,7 +669,7 @@ func (s *IntegrationTestSuite) TestTxUpdateGroupMembers() {
} }
} }
func (s *IntegrationTestSuite) TestTxCreateGroupAccount() { func (s *IntegrationTestSuite) TestTxCreateGroupPolicy() {
val := s.network.Validators[0] val := s.network.Validators[0]
wrongAdmin := s.network.Validators[1].Address wrongAdmin := s.network.Validators[1].Address
clientCtx := val.ClientCtx clientCtx := val.ClientCtx
@ -751,7 +751,7 @@ func (s *IntegrationTestSuite) TestTxCreateGroupAccount() {
commonFlags..., commonFlags...,
), ),
true, true,
"group account metadata: limit exceeded", "group policy metadata: limit exceeded",
&sdk.TxResponse{}, &sdk.TxResponse{},
0, 0,
}, },
@ -777,7 +777,7 @@ func (s *IntegrationTestSuite) TestTxCreateGroupAccount() {
tc := tc tc := tc
s.Run(tc.name, func() { s.Run(tc.name, func() {
cmd := client.MsgCreateGroupAccountCmd() cmd := client.MsgCreateGroupPolicyCmd()
out, err := cli.ExecTestCLICmd(clientCtx, cmd, tc.args) out, err := cli.ExecTestCLICmd(clientCtx, cmd, tc.args)
if tc.expectErr { if tc.expectErr {
@ -793,11 +793,11 @@ func (s *IntegrationTestSuite) TestTxCreateGroupAccount() {
} }
} }
func (s *IntegrationTestSuite) TestTxUpdateGroupAccountAdmin() { func (s *IntegrationTestSuite) TestTxUpdateGroupPolicyAdmin() {
val := s.network.Validators[0] val := s.network.Validators[0]
newAdmin := s.network.Validators[1].Address newAdmin := s.network.Validators[1].Address
clientCtx := val.ClientCtx clientCtx := val.ClientCtx
groupAccount := s.groupAccounts[3] groupPolicy := s.groupPolicies[3]
var commonFlags = []string{ var commonFlags = []string{
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
@ -817,8 +817,8 @@ func (s *IntegrationTestSuite) TestTxUpdateGroupAccountAdmin() {
"correct data", "correct data",
append( append(
[]string{ []string{
groupAccount.Admin, groupPolicy.Admin,
groupAccount.Address, groupPolicy.Address,
newAdmin.String(), newAdmin.String(),
}, },
commonFlags..., commonFlags...,
@ -832,8 +832,8 @@ func (s *IntegrationTestSuite) TestTxUpdateGroupAccountAdmin() {
"with amino-json", "with amino-json",
append( append(
[]string{ []string{
groupAccount.Admin, groupPolicy.Admin,
s.groupAccounts[4].Address, s.groupPolicies[4].Address,
newAdmin.String(), newAdmin.String(),
fmt.Sprintf("--%s=%s", flags.FlagSignMode, flags.SignModeLegacyAminoJSON), fmt.Sprintf("--%s=%s", flags.FlagSignMode, flags.SignModeLegacyAminoJSON),
}, },
@ -849,7 +849,7 @@ func (s *IntegrationTestSuite) TestTxUpdateGroupAccountAdmin() {
append( append(
[]string{ []string{
newAdmin.String(), newAdmin.String(),
groupAccount.Address, groupPolicy.Address,
newAdmin.String(), newAdmin.String(),
}, },
commonFlags..., commonFlags...,
@ -860,17 +860,17 @@ func (s *IntegrationTestSuite) TestTxUpdateGroupAccountAdmin() {
0, 0,
}, },
{ {
"wrong group account", "wrong group policy",
append( append(
[]string{ []string{
groupAccount.Admin, groupPolicy.Admin,
newAdmin.String(), newAdmin.String(),
newAdmin.String(), newAdmin.String(),
}, },
commonFlags..., commonFlags...,
), ),
true, true,
"load group account: not found", "load group policy: not found",
&sdk.TxResponse{}, &sdk.TxResponse{},
0, 0,
}, },
@ -880,7 +880,7 @@ func (s *IntegrationTestSuite) TestTxUpdateGroupAccountAdmin() {
tc := tc tc := tc
s.Run(tc.name, func() { s.Run(tc.name, func() {
cmd := client.MsgUpdateGroupAccountAdminCmd() cmd := client.MsgUpdateGroupPolicyAdminCmd()
out, err := cli.ExecTestCLICmd(clientCtx, cmd, tc.args) out, err := cli.ExecTestCLICmd(clientCtx, cmd, tc.args)
if tc.expectErr { if tc.expectErr {
@ -896,11 +896,11 @@ func (s *IntegrationTestSuite) TestTxUpdateGroupAccountAdmin() {
} }
} }
func (s *IntegrationTestSuite) TestTxUpdateGroupAccountDecisionPolicy() { func (s *IntegrationTestSuite) TestTxUpdateGroupPolicyDecisionPolicy() {
val := s.network.Validators[0] val := s.network.Validators[0]
newAdmin := s.network.Validators[1].Address newAdmin := s.network.Validators[1].Address
clientCtx := val.ClientCtx clientCtx := val.ClientCtx
groupAccount := s.groupAccounts[2] groupPolicy := s.groupPolicies[2]
var commonFlags = []string{ var commonFlags = []string{
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
@ -920,8 +920,8 @@ func (s *IntegrationTestSuite) TestTxUpdateGroupAccountDecisionPolicy() {
"correct data", "correct data",
append( append(
[]string{ []string{
groupAccount.Admin, groupPolicy.Admin,
groupAccount.Address, groupPolicy.Address,
"{\"@type\":\"/cosmos.group.v1beta1.ThresholdDecisionPolicy\", \"threshold\":\"1\", \"timeout\":\"40000s\"}", "{\"@type\":\"/cosmos.group.v1beta1.ThresholdDecisionPolicy\", \"threshold\":\"1\", \"timeout\":\"40000s\"}",
}, },
commonFlags..., commonFlags...,
@ -935,8 +935,8 @@ func (s *IntegrationTestSuite) TestTxUpdateGroupAccountDecisionPolicy() {
"with amino-json", "with amino-json",
append( append(
[]string{ []string{
groupAccount.Admin, groupPolicy.Admin,
groupAccount.Address, groupPolicy.Address,
"{\"@type\":\"/cosmos.group.v1beta1.ThresholdDecisionPolicy\", \"threshold\":\"1\", \"timeout\":\"50000s\"}", "{\"@type\":\"/cosmos.group.v1beta1.ThresholdDecisionPolicy\", \"threshold\":\"1\", \"timeout\":\"50000s\"}",
fmt.Sprintf("--%s=%s", flags.FlagSignMode, flags.SignModeLegacyAminoJSON), fmt.Sprintf("--%s=%s", flags.FlagSignMode, flags.SignModeLegacyAminoJSON),
}, },
@ -952,7 +952,7 @@ func (s *IntegrationTestSuite) TestTxUpdateGroupAccountDecisionPolicy() {
append( append(
[]string{ []string{
newAdmin.String(), newAdmin.String(),
groupAccount.Address, groupPolicy.Address,
"{\"@type\":\"/cosmos.group.v1beta1.ThresholdDecisionPolicy\", \"threshold\":\"1\", \"timeout\":\"1s\"}", "{\"@type\":\"/cosmos.group.v1beta1.ThresholdDecisionPolicy\", \"threshold\":\"1\", \"timeout\":\"1s\"}",
}, },
commonFlags..., commonFlags...,
@ -963,17 +963,17 @@ func (s *IntegrationTestSuite) TestTxUpdateGroupAccountDecisionPolicy() {
0, 0,
}, },
{ {
"wrong group account", "wrong group policy",
append( append(
[]string{ []string{
groupAccount.Admin, groupPolicy.Admin,
newAdmin.String(), newAdmin.String(),
"{\"@type\":\"/cosmos.group.v1beta1.ThresholdDecisionPolicy\", \"threshold\":\"1\", \"timeout\":\"1s\"}", "{\"@type\":\"/cosmos.group.v1beta1.ThresholdDecisionPolicy\", \"threshold\":\"1\", \"timeout\":\"1s\"}",
}, },
commonFlags..., commonFlags...,
), ),
true, true,
"load group account: not found", "load group policy: not found",
&sdk.TxResponse{}, &sdk.TxResponse{},
0, 0,
}, },
@ -983,7 +983,7 @@ func (s *IntegrationTestSuite) TestTxUpdateGroupAccountDecisionPolicy() {
tc := tc tc := tc
s.Run(tc.name, func() { s.Run(tc.name, func() {
cmd := client.MsgUpdateGroupAccountDecisionPolicyCmd() cmd := client.MsgUpdateGroupPolicyDecisionPolicyCmd()
out, err := cli.ExecTestCLICmd(clientCtx, cmd, tc.args) out, err := cli.ExecTestCLICmd(clientCtx, cmd, tc.args)
if tc.expectErr { if tc.expectErr {
@ -999,11 +999,11 @@ func (s *IntegrationTestSuite) TestTxUpdateGroupAccountDecisionPolicy() {
} }
} }
func (s *IntegrationTestSuite) TestTxUpdateGroupAccountMetadata() { func (s *IntegrationTestSuite) TestTxUpdateGroupPolicyMetadata() {
val := s.network.Validators[0] val := s.network.Validators[0]
newAdmin := s.network.Validators[1].Address newAdmin := s.network.Validators[1].Address
clientCtx := val.ClientCtx clientCtx := val.ClientCtx
groupAccount := s.groupAccounts[2] groupPolicy := s.groupPolicies[2]
var commonFlags = []string{ var commonFlags = []string{
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
@ -1023,8 +1023,8 @@ func (s *IntegrationTestSuite) TestTxUpdateGroupAccountMetadata() {
"correct data", "correct data",
append( append(
[]string{ []string{
groupAccount.Admin, groupPolicy.Admin,
groupAccount.Address, groupPolicy.Address,
validMetadata, validMetadata,
}, },
commonFlags..., commonFlags...,
@ -1038,8 +1038,8 @@ func (s *IntegrationTestSuite) TestTxUpdateGroupAccountMetadata() {
"with amino-json", "with amino-json",
append( append(
[]string{ []string{
groupAccount.Admin, groupPolicy.Admin,
groupAccount.Address, groupPolicy.Address,
validMetadata, validMetadata,
fmt.Sprintf("--%s=%s", flags.FlagSignMode, flags.SignModeLegacyAminoJSON), fmt.Sprintf("--%s=%s", flags.FlagSignMode, flags.SignModeLegacyAminoJSON),
}, },
@ -1054,14 +1054,14 @@ func (s *IntegrationTestSuite) TestTxUpdateGroupAccountMetadata() {
"long metadata", "long metadata",
append( append(
[]string{ []string{
groupAccount.Admin, groupPolicy.Admin,
groupAccount.Address, groupPolicy.Address,
strings.Repeat("a", 500), strings.Repeat("a", 500),
}, },
commonFlags..., commonFlags...,
), ),
true, true,
"group account metadata: limit exceeded", "group policy metadata: limit exceeded",
&sdk.TxResponse{}, &sdk.TxResponse{},
0, 0,
}, },
@ -1070,7 +1070,7 @@ func (s *IntegrationTestSuite) TestTxUpdateGroupAccountMetadata() {
append( append(
[]string{ []string{
newAdmin.String(), newAdmin.String(),
groupAccount.Address, groupPolicy.Address,
validMetadata, validMetadata,
}, },
commonFlags..., commonFlags...,
@ -1081,17 +1081,17 @@ func (s *IntegrationTestSuite) TestTxUpdateGroupAccountMetadata() {
0, 0,
}, },
{ {
"wrong group account", "wrong group policy",
append( append(
[]string{ []string{
groupAccount.Admin, groupPolicy.Admin,
newAdmin.String(), newAdmin.String(),
validMetadata, validMetadata,
}, },
commonFlags..., commonFlags...,
), ),
true, true,
"load group account: not found", "load group policy: not found",
&sdk.TxResponse{}, &sdk.TxResponse{},
0, 0,
}, },
@ -1101,7 +1101,7 @@ func (s *IntegrationTestSuite) TestTxUpdateGroupAccountMetadata() {
tc := tc tc := tc
s.Run(tc.name, func() { s.Run(tc.name, func() {
cmd := client.MsgUpdateGroupAccountMetadataCmd() cmd := client.MsgUpdateGroupPolicyMetadataCmd()
out, err := cli.ExecTestCLICmd(clientCtx, cmd, tc.args) out, err := cli.ExecTestCLICmd(clientCtx, cmd, tc.args)
if tc.expectErr { if tc.expectErr {
@ -1127,9 +1127,9 @@ func (s *IntegrationTestSuite) TestTxCreateProposal() {
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
} }
validTxFileName := getTxSendFileName(s, s.groupAccounts[0].Address, val.Address.String()) validTxFileName := getTxSendFileName(s, s.groupPolicies[0].Address, val.Address.String())
unauthzTxFileName := getTxSendFileName(s, val.Address.String(), s.groupAccounts[0].Address) unauthzTxFileName := getTxSendFileName(s, val.Address.String(), s.groupPolicies[0].Address)
validTxFileName2 := getTxSendFileName(s, s.groupAccounts[3].Address, val.Address.String()) validTxFileName2 := getTxSendFileName(s, s.groupPolicies[3].Address, val.Address.String())
testCases := []struct { testCases := []struct {
name string name string
@ -1143,7 +1143,7 @@ func (s *IntegrationTestSuite) TestTxCreateProposal() {
"correct data", "correct data",
append( append(
[]string{ []string{
s.groupAccounts[0].Address, s.groupPolicies[0].Address,
val.Address.String(), val.Address.String(),
validTxFileName, validTxFileName,
"", "",
@ -1160,7 +1160,7 @@ func (s *IntegrationTestSuite) TestTxCreateProposal() {
"with try exec", "with try exec",
append( append(
[]string{ []string{
s.groupAccounts[0].Address, s.groupPolicies[0].Address,
val.Address.String(), val.Address.String(),
validTxFileName, validTxFileName,
"", "",
@ -1178,7 +1178,7 @@ func (s *IntegrationTestSuite) TestTxCreateProposal() {
"with try exec, not enough yes votes for proposal to pass", "with try exec, not enough yes votes for proposal to pass",
append( append(
[]string{ []string{
s.groupAccounts[3].Address, s.groupPolicies[3].Address,
val.Address.String(), val.Address.String(),
validTxFileName2, validTxFileName2,
"", "",
@ -1196,7 +1196,7 @@ func (s *IntegrationTestSuite) TestTxCreateProposal() {
"with amino-json", "with amino-json",
append( append(
[]string{ []string{
s.groupAccounts[0].Address, s.groupPolicies[0].Address,
val.Address.String(), val.Address.String(),
validTxFileName, validTxFileName,
"", "",
@ -1214,7 +1214,7 @@ func (s *IntegrationTestSuite) TestTxCreateProposal() {
"metadata too long", "metadata too long",
append( append(
[]string{ []string{
s.groupAccounts[0].Address, s.groupPolicies[0].Address,
val.Address.String(), val.Address.String(),
validTxFileName, validTxFileName,
"AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ==", "AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ==",
@ -1231,7 +1231,7 @@ func (s *IntegrationTestSuite) TestTxCreateProposal() {
"unauthorized msg", "unauthorized msg",
append( append(
[]string{ []string{
s.groupAccounts[0].Address, s.groupPolicies[0].Address,
val.Address.String(), val.Address.String(),
unauthzTxFileName, unauthzTxFileName,
"", "",
@ -1240,7 +1240,7 @@ func (s *IntegrationTestSuite) TestTxCreateProposal() {
commonFlags..., commonFlags...,
), ),
true, true,
"msg does not have group account authorization: unauthorized", "msg does not have group policy authorization: unauthorized",
nil, nil,
0, 0,
}, },
@ -1248,7 +1248,7 @@ func (s *IntegrationTestSuite) TestTxCreateProposal() {
"invalid proposers", "invalid proposers",
append( append(
[]string{ []string{
s.groupAccounts[0].Address, s.groupPolicies[0].Address,
"invalid", "invalid",
validTxFileName, validTxFileName,
"", "",
@ -1262,7 +1262,7 @@ func (s *IntegrationTestSuite) TestTxCreateProposal() {
0, 0,
}, },
{ {
"invalid group account", "invalid group policy",
append( append(
[]string{ []string{
"invalid", "invalid",
@ -1274,12 +1274,12 @@ func (s *IntegrationTestSuite) TestTxCreateProposal() {
commonFlags..., commonFlags...,
), ),
true, true,
"group account: decoding bech32 failed", "group policy: decoding bech32 failed",
nil, nil,
0, 0,
}, },
{ {
"no group account", "no group policy",
append( append(
[]string{ []string{
val.Address.String(), val.Address.String(),
@ -1291,7 +1291,7 @@ func (s *IntegrationTestSuite) TestTxCreateProposal() {
commonFlags..., commonFlags...,
), ),
true, true,
"group account: not found", "group policy: not found",
nil, nil,
0, 0,
}, },
@ -1327,12 +1327,12 @@ func (s *IntegrationTestSuite) TestTxVote() {
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
} }
validTxFileName := getTxSendFileName(s, s.groupAccounts[1].Address, val.Address.String()) validTxFileName := getTxSendFileName(s, s.groupPolicies[1].Address, val.Address.String())
for i := 0; i < 2; i++ { for i := 0; i < 2; i++ {
out, err := cli.ExecTestCLICmd(val.ClientCtx, client.MsgCreateProposalCmd(), out, err := cli.ExecTestCLICmd(val.ClientCtx, client.MsgCreateProposalCmd(),
append( append(
[]string{ []string{
s.groupAccounts[1].Address, s.groupPolicies[1].Address,
val.Address.String(), val.Address.String(),
validTxFileName, validTxFileName,
"", "",
@ -1517,11 +1517,11 @@ func (s *IntegrationTestSuite) TestTxExec() {
// create proposals and vote // create proposals and vote
for i := 3; i <= 4; i++ { for i := 3; i <= 4; i++ {
validTxFileName := getTxSendFileName(s, s.groupAccounts[0].Address, val.Address.String()) validTxFileName := getTxSendFileName(s, s.groupPolicies[0].Address, val.Address.String())
out, err := cli.ExecTestCLICmd(val.ClientCtx, client.MsgCreateProposalCmd(), out, err := cli.ExecTestCLICmd(val.ClientCtx, client.MsgCreateProposalCmd(),
append( append(
[]string{ []string{
s.groupAccounts[0].Address, s.groupPolicies[0].Address,
val.Address.String(), val.Address.String(),
validTxFileName, validTxFileName,
"", "",

View File

@ -17,10 +17,10 @@ func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {
cdc.RegisterConcrete(&MsgUpdateGroupMembers{}, "cosmos-sdk/MsgUpdateGroupMembers", nil) cdc.RegisterConcrete(&MsgUpdateGroupMembers{}, "cosmos-sdk/MsgUpdateGroupMembers", nil)
cdc.RegisterConcrete(&MsgUpdateGroupAdmin{}, "cosmos-sdk/MsgUpdateGroupAdmin", nil) cdc.RegisterConcrete(&MsgUpdateGroupAdmin{}, "cosmos-sdk/MsgUpdateGroupAdmin", nil)
cdc.RegisterConcrete(&MsgUpdateGroupMetadata{}, "cosmos-sdk/MsgUpdateGroupMetadata", nil) cdc.RegisterConcrete(&MsgUpdateGroupMetadata{}, "cosmos-sdk/MsgUpdateGroupMetadata", nil)
cdc.RegisterConcrete(&MsgCreateGroupAccount{}, "cosmos-sdk/MsgCreateGroupAccount", nil) cdc.RegisterConcrete(&MsgCreateGroupPolicy{}, "cosmos-sdk/MsgCreateGroupPolicy", nil)
cdc.RegisterConcrete(&MsgUpdateGroupAccountAdmin{}, "cosmos-sdk/MsgUpdateGroupAccountAdmin", nil) cdc.RegisterConcrete(&MsgUpdateGroupPolicyAdmin{}, "cosmos-sdk/MsgUpdateGroupPolicyAdmin", nil)
cdc.RegisterConcrete(&MsgUpdateGroupAccountDecisionPolicy{}, "cosmos-sdk/MsgUpdateGroupAccountDecisionPolicy", nil) cdc.RegisterConcrete(&MsgUpdateGroupPolicyDecisionPolicy{}, "cosmos-sdk/MsgUpdateGroupPolicyDecisionPolicy", nil)
cdc.RegisterConcrete(&MsgUpdateGroupAccountMetadata{}, "cosmos-sdk/MsgUpdateGroupAccountMetadata", nil) cdc.RegisterConcrete(&MsgUpdateGroupPolicyMetadata{}, "cosmos-sdk/MsgUpdateGroupPolicyMetadata", nil)
cdc.RegisterConcrete(&MsgCreateProposal{}, "cosmos-sdk/group/MsgCreateProposal", nil) cdc.RegisterConcrete(&MsgCreateProposal{}, "cosmos-sdk/group/MsgCreateProposal", nil)
cdc.RegisterConcrete(&MsgVote{}, "cosmos-sdk/group/MsgVote", nil) cdc.RegisterConcrete(&MsgVote{}, "cosmos-sdk/group/MsgVote", nil)
cdc.RegisterConcrete(&MsgExec{}, "cosmos-sdk/group/MsgExec", nil) cdc.RegisterConcrete(&MsgExec{}, "cosmos-sdk/group/MsgExec", nil)
@ -32,10 +32,10 @@ func RegisterInterfaces(registry cdctypes.InterfaceRegistry) {
&MsgUpdateGroupMembers{}, &MsgUpdateGroupMembers{},
&MsgUpdateGroupAdmin{}, &MsgUpdateGroupAdmin{},
&MsgUpdateGroupMetadata{}, &MsgUpdateGroupMetadata{},
&MsgCreateGroupAccount{}, &MsgCreateGroupPolicy{},
&MsgUpdateGroupAccountAdmin{}, &MsgUpdateGroupPolicyAdmin{},
&MsgUpdateGroupAccountDecisionPolicy{}, &MsgUpdateGroupPolicyDecisionPolicy{},
&MsgUpdateGroupAccountMetadata{}, &MsgUpdateGroupPolicyMetadata{},
&MsgCreateProposal{}, &MsgCreateProposal{},
&MsgVote{}, &MsgVote{},
&MsgExec{}, &MsgExec{},

View File

@ -115,24 +115,24 @@ func (m *EventUpdateGroup) GetGroupId() uint64 {
return 0 return 0
} }
// EventCreateGroupAccount is an event emitted when a group account is created. // EventCreateGroupPolicy is an event emitted when a group policy is created.
type EventCreateGroupAccount struct { type EventCreateGroupPolicy struct {
// address is the address of the group account. // address is the account address of the group policy.
Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
} }
func (m *EventCreateGroupAccount) Reset() { *m = EventCreateGroupAccount{} } func (m *EventCreateGroupPolicy) Reset() { *m = EventCreateGroupPolicy{} }
func (m *EventCreateGroupAccount) String() string { return proto.CompactTextString(m) } func (m *EventCreateGroupPolicy) String() string { return proto.CompactTextString(m) }
func (*EventCreateGroupAccount) ProtoMessage() {} func (*EventCreateGroupPolicy) ProtoMessage() {}
func (*EventCreateGroupAccount) Descriptor() ([]byte, []int) { func (*EventCreateGroupPolicy) Descriptor() ([]byte, []int) {
return fileDescriptor_7879e051fb126fc0, []int{2} return fileDescriptor_7879e051fb126fc0, []int{2}
} }
func (m *EventCreateGroupAccount) XXX_Unmarshal(b []byte) error { func (m *EventCreateGroupPolicy) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b) return m.Unmarshal(b)
} }
func (m *EventCreateGroupAccount) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *EventCreateGroupPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic { if deterministic {
return xxx_messageInfo_EventCreateGroupAccount.Marshal(b, m, deterministic) return xxx_messageInfo_EventCreateGroupPolicy.Marshal(b, m, deterministic)
} else { } else {
b = b[:cap(b)] b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b) n, err := m.MarshalToSizedBuffer(b)
@ -142,43 +142,43 @@ func (m *EventCreateGroupAccount) XXX_Marshal(b []byte, deterministic bool) ([]b
return b[:n], nil return b[:n], nil
} }
} }
func (m *EventCreateGroupAccount) XXX_Merge(src proto.Message) { func (m *EventCreateGroupPolicy) XXX_Merge(src proto.Message) {
xxx_messageInfo_EventCreateGroupAccount.Merge(m, src) xxx_messageInfo_EventCreateGroupPolicy.Merge(m, src)
} }
func (m *EventCreateGroupAccount) XXX_Size() int { func (m *EventCreateGroupPolicy) XXX_Size() int {
return m.Size() return m.Size()
} }
func (m *EventCreateGroupAccount) XXX_DiscardUnknown() { func (m *EventCreateGroupPolicy) XXX_DiscardUnknown() {
xxx_messageInfo_EventCreateGroupAccount.DiscardUnknown(m) xxx_messageInfo_EventCreateGroupPolicy.DiscardUnknown(m)
} }
var xxx_messageInfo_EventCreateGroupAccount proto.InternalMessageInfo var xxx_messageInfo_EventCreateGroupPolicy proto.InternalMessageInfo
func (m *EventCreateGroupAccount) GetAddress() string { func (m *EventCreateGroupPolicy) GetAddress() string {
if m != nil { if m != nil {
return m.Address return m.Address
} }
return "" return ""
} }
// EventUpdateGroupAccount is an event emitted when a group account is updated. // EventUpdateGroupPolicy is an event emitted when a group policy is updated.
type EventUpdateGroupAccount struct { type EventUpdateGroupPolicy struct {
// address is the address of the group account. // address is the account address of the group policy.
Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
} }
func (m *EventUpdateGroupAccount) Reset() { *m = EventUpdateGroupAccount{} } func (m *EventUpdateGroupPolicy) Reset() { *m = EventUpdateGroupPolicy{} }
func (m *EventUpdateGroupAccount) String() string { return proto.CompactTextString(m) } func (m *EventUpdateGroupPolicy) String() string { return proto.CompactTextString(m) }
func (*EventUpdateGroupAccount) ProtoMessage() {} func (*EventUpdateGroupPolicy) ProtoMessage() {}
func (*EventUpdateGroupAccount) Descriptor() ([]byte, []int) { func (*EventUpdateGroupPolicy) Descriptor() ([]byte, []int) {
return fileDescriptor_7879e051fb126fc0, []int{3} return fileDescriptor_7879e051fb126fc0, []int{3}
} }
func (m *EventUpdateGroupAccount) XXX_Unmarshal(b []byte) error { func (m *EventUpdateGroupPolicy) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b) return m.Unmarshal(b)
} }
func (m *EventUpdateGroupAccount) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *EventUpdateGroupPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic { if deterministic {
return xxx_messageInfo_EventUpdateGroupAccount.Marshal(b, m, deterministic) return xxx_messageInfo_EventUpdateGroupPolicy.Marshal(b, m, deterministic)
} else { } else {
b = b[:cap(b)] b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b) n, err := m.MarshalToSizedBuffer(b)
@ -188,19 +188,19 @@ func (m *EventUpdateGroupAccount) XXX_Marshal(b []byte, deterministic bool) ([]b
return b[:n], nil return b[:n], nil
} }
} }
func (m *EventUpdateGroupAccount) XXX_Merge(src proto.Message) { func (m *EventUpdateGroupPolicy) XXX_Merge(src proto.Message) {
xxx_messageInfo_EventUpdateGroupAccount.Merge(m, src) xxx_messageInfo_EventUpdateGroupPolicy.Merge(m, src)
} }
func (m *EventUpdateGroupAccount) XXX_Size() int { func (m *EventUpdateGroupPolicy) XXX_Size() int {
return m.Size() return m.Size()
} }
func (m *EventUpdateGroupAccount) XXX_DiscardUnknown() { func (m *EventUpdateGroupPolicy) XXX_DiscardUnknown() {
xxx_messageInfo_EventUpdateGroupAccount.DiscardUnknown(m) xxx_messageInfo_EventUpdateGroupPolicy.DiscardUnknown(m)
} }
var xxx_messageInfo_EventUpdateGroupAccount proto.InternalMessageInfo var xxx_messageInfo_EventUpdateGroupPolicy proto.InternalMessageInfo
func (m *EventUpdateGroupAccount) GetAddress() string { func (m *EventUpdateGroupPolicy) GetAddress() string {
if m != nil { if m != nil {
return m.Address return m.Address
} }
@ -348,8 +348,8 @@ func (m *EventExec) GetProposalId() uint64 {
func init() { func init() {
proto.RegisterType((*EventCreateGroup)(nil), "cosmos.group.v1beta1.EventCreateGroup") proto.RegisterType((*EventCreateGroup)(nil), "cosmos.group.v1beta1.EventCreateGroup")
proto.RegisterType((*EventUpdateGroup)(nil), "cosmos.group.v1beta1.EventUpdateGroup") proto.RegisterType((*EventUpdateGroup)(nil), "cosmos.group.v1beta1.EventUpdateGroup")
proto.RegisterType((*EventCreateGroupAccount)(nil), "cosmos.group.v1beta1.EventCreateGroupAccount") proto.RegisterType((*EventCreateGroupPolicy)(nil), "cosmos.group.v1beta1.EventCreateGroupPolicy")
proto.RegisterType((*EventUpdateGroupAccount)(nil), "cosmos.group.v1beta1.EventUpdateGroupAccount") proto.RegisterType((*EventUpdateGroupPolicy)(nil), "cosmos.group.v1beta1.EventUpdateGroupPolicy")
proto.RegisterType((*EventCreateProposal)(nil), "cosmos.group.v1beta1.EventCreateProposal") proto.RegisterType((*EventCreateProposal)(nil), "cosmos.group.v1beta1.EventCreateProposal")
proto.RegisterType((*EventVote)(nil), "cosmos.group.v1beta1.EventVote") proto.RegisterType((*EventVote)(nil), "cosmos.group.v1beta1.EventVote")
proto.RegisterType((*EventExec)(nil), "cosmos.group.v1beta1.EventExec") proto.RegisterType((*EventExec)(nil), "cosmos.group.v1beta1.EventExec")
@ -358,7 +358,7 @@ func init() {
func init() { proto.RegisterFile("cosmos/group/v1beta1/events.proto", fileDescriptor_7879e051fb126fc0) } func init() { proto.RegisterFile("cosmos/group/v1beta1/events.proto", fileDescriptor_7879e051fb126fc0) }
var fileDescriptor_7879e051fb126fc0 = []byte{ var fileDescriptor_7879e051fb126fc0 = []byte{
// 281 bytes of a gzipped FileDescriptorProto // 280 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x4c, 0xce, 0x2f, 0xce, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x4c, 0xce, 0x2f, 0xce,
0xcd, 0x2f, 0xd6, 0x4f, 0x2f, 0xca, 0x2f, 0x2d, 0xd0, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, 0x34, 0xcd, 0x2f, 0xd6, 0x4f, 0x2f, 0xca, 0x2f, 0x2d, 0xd0, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, 0x34,
0xd4, 0x4f, 0x2d, 0x4b, 0xcd, 0x2b, 0x29, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x81, 0xd4, 0x4f, 0x2d, 0x4b, 0xcd, 0x2b, 0x29, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x81,
@ -366,17 +366,17 @@ var fileDescriptor_7879e051fb126fc0 = []byte{
0x95, 0x80, 0x39, 0x4a, 0xba, 0x5c, 0x02, 0xae, 0x20, 0x03, 0x9c, 0x8b, 0x52, 0x13, 0x4b, 0x52, 0x95, 0x80, 0x39, 0x4a, 0xba, 0x5c, 0x02, 0xae, 0x20, 0x03, 0x9c, 0x8b, 0x52, 0x13, 0x4b, 0x52,
0xdd, 0x41, 0xda, 0x84, 0x24, 0xb9, 0x38, 0xc0, 0xfa, 0xe3, 0x33, 0x53, 0x24, 0x18, 0x15, 0x18, 0xdd, 0x41, 0xda, 0x84, 0x24, 0xb9, 0x38, 0xc0, 0xfa, 0xe3, 0x33, 0x53, 0x24, 0x18, 0x15, 0x18,
0x35, 0x58, 0x82, 0xd8, 0xc1, 0x7c, 0xcf, 0x14, 0xb8, 0xf2, 0xd0, 0x82, 0x14, 0x62, 0x94, 0xfb, 0x35, 0x58, 0x82, 0xd8, 0xc1, 0x7c, 0xcf, 0x14, 0xb8, 0xf2, 0xd0, 0x82, 0x14, 0x62, 0x94, 0xfb,
0x72, 0x89, 0xa3, 0x9b, 0xee, 0x98, 0x9c, 0x9c, 0x5f, 0x9a, 0x57, 0x22, 0x64, 0xc4, 0xc5, 0x9e, 0x70, 0x89, 0xa1, 0x9b, 0x1e, 0x90, 0x9f, 0x93, 0x99, 0x5c, 0x29, 0x64, 0xc4, 0xc5, 0x9e, 0x98,
0x98, 0x92, 0x52, 0x94, 0x5a, 0x5c, 0x0c, 0xd6, 0xc4, 0xe9, 0x24, 0x71, 0x69, 0x8b, 0x2e, 0xcc, 0x92, 0x52, 0x94, 0x5a, 0x5c, 0x0c, 0xd6, 0xc3, 0xe9, 0x24, 0x71, 0x69, 0x8b, 0x2e, 0xcc, 0xf5,
0xf9, 0x8e, 0x10, 0x99, 0xe0, 0x92, 0xa2, 0xcc, 0xbc, 0xf4, 0x20, 0x98, 0x42, 0xb8, 0x71, 0x48, 0x8e, 0x10, 0x99, 0xe0, 0x92, 0xa2, 0xcc, 0xbc, 0xf4, 0x20, 0x98, 0x42, 0xb8, 0x69, 0x48, 0x96,
0xb6, 0x53, 0x62, 0x9c, 0x19, 0x97, 0x30, 0x92, 0xeb, 0x02, 0x8a, 0xf2, 0x0b, 0xf2, 0x8b, 0x13, 0x53, 0x60, 0x9a, 0x19, 0x97, 0x30, 0x92, 0xdb, 0x02, 0x8a, 0xf2, 0x0b, 0xf2, 0x8b, 0x13, 0x73,
0x73, 0x84, 0xe4, 0xb9, 0xb8, 0x0b, 0xa0, 0x6c, 0x84, 0x97, 0xb8, 0x60, 0x42, 0x9e, 0x29, 0x4a, 0x84, 0xe4, 0xb9, 0xb8, 0x0b, 0xa0, 0x6c, 0x84, 0x87, 0xb8, 0x60, 0x42, 0x9e, 0x29, 0x4a, 0x3a,
0x3a, 0x5c, 0x9c, 0x60, 0x7d, 0x61, 0xf9, 0x25, 0xa9, 0xc4, 0xab, 0x76, 0xad, 0x48, 0x4d, 0x26, 0x5c, 0x9c, 0x60, 0x7d, 0x61, 0xf9, 0x25, 0xa9, 0xc4, 0xab, 0x76, 0xad, 0x48, 0x4d, 0x26, 0xa8,
0xa8, 0xda, 0xc9, 0xee, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0xda, 0xc9, 0xee, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c,
0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0x54, 0xd2, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0x54, 0xd2, 0x33,
0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xa1, 0x51, 0x08, 0xa5, 0x74, 0x8b, 0x53, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xa1, 0x11, 0x08, 0xa5, 0x74, 0x8b, 0x53, 0xb2,
0xb2, 0xf5, 0x2b, 0x20, 0xa9, 0x22, 0x89, 0x0d, 0x1c, 0xad, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xf5, 0x2b, 0x20, 0x69, 0x22, 0x89, 0x0d, 0x1c, 0xa9, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff,
0xff, 0x90, 0x54, 0xa1, 0x1a, 0x2c, 0x02, 0x00, 0x00, 0x78, 0x22, 0x27, 0x30, 0x2a, 0x02, 0x00, 0x00,
} }
func (m *EventCreateGroup) Marshal() (dAtA []byte, err error) { func (m *EventCreateGroup) Marshal() (dAtA []byte, err error) {
@ -435,7 +435,7 @@ func (m *EventUpdateGroup) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil return len(dAtA) - i, nil
} }
func (m *EventCreateGroupAccount) Marshal() (dAtA []byte, err error) { func (m *EventCreateGroupPolicy) Marshal() (dAtA []byte, err error) {
size := m.Size() size := m.Size()
dAtA = make([]byte, size) dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size]) n, err := m.MarshalToSizedBuffer(dAtA[:size])
@ -445,12 +445,12 @@ func (m *EventCreateGroupAccount) Marshal() (dAtA []byte, err error) {
return dAtA[:n], nil return dAtA[:n], nil
} }
func (m *EventCreateGroupAccount) MarshalTo(dAtA []byte) (int, error) { func (m *EventCreateGroupPolicy) MarshalTo(dAtA []byte) (int, error) {
size := m.Size() size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size]) return m.MarshalToSizedBuffer(dAtA[:size])
} }
func (m *EventCreateGroupAccount) MarshalToSizedBuffer(dAtA []byte) (int, error) { func (m *EventCreateGroupPolicy) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA) i := len(dAtA)
_ = i _ = i
var l int var l int
@ -465,7 +465,7 @@ func (m *EventCreateGroupAccount) MarshalToSizedBuffer(dAtA []byte) (int, error)
return len(dAtA) - i, nil return len(dAtA) - i, nil
} }
func (m *EventUpdateGroupAccount) Marshal() (dAtA []byte, err error) { func (m *EventUpdateGroupPolicy) Marshal() (dAtA []byte, err error) {
size := m.Size() size := m.Size()
dAtA = make([]byte, size) dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size]) n, err := m.MarshalToSizedBuffer(dAtA[:size])
@ -475,12 +475,12 @@ func (m *EventUpdateGroupAccount) Marshal() (dAtA []byte, err error) {
return dAtA[:n], nil return dAtA[:n], nil
} }
func (m *EventUpdateGroupAccount) MarshalTo(dAtA []byte) (int, error) { func (m *EventUpdateGroupPolicy) MarshalTo(dAtA []byte) (int, error) {
size := m.Size() size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size]) return m.MarshalToSizedBuffer(dAtA[:size])
} }
func (m *EventUpdateGroupAccount) MarshalToSizedBuffer(dAtA []byte) (int, error) { func (m *EventUpdateGroupPolicy) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA) i := len(dAtA)
_ = i _ = i
var l int var l int
@ -614,7 +614,7 @@ func (m *EventUpdateGroup) Size() (n int) {
return n return n
} }
func (m *EventCreateGroupAccount) Size() (n int) { func (m *EventCreateGroupPolicy) Size() (n int) {
if m == nil { if m == nil {
return 0 return 0
} }
@ -627,7 +627,7 @@ func (m *EventCreateGroupAccount) Size() (n int) {
return n return n
} }
func (m *EventUpdateGroupAccount) Size() (n int) { func (m *EventUpdateGroupPolicy) Size() (n int) {
if m == nil { if m == nil {
return 0 return 0
} }
@ -820,7 +820,7 @@ func (m *EventUpdateGroup) Unmarshal(dAtA []byte) error {
} }
return nil return nil
} }
func (m *EventCreateGroupAccount) Unmarshal(dAtA []byte) error { func (m *EventCreateGroupPolicy) Unmarshal(dAtA []byte) error {
l := len(dAtA) l := len(dAtA)
iNdEx := 0 iNdEx := 0
for iNdEx < l { for iNdEx < l {
@ -843,10 +843,10 @@ func (m *EventCreateGroupAccount) Unmarshal(dAtA []byte) error {
fieldNum := int32(wire >> 3) fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7) wireType := int(wire & 0x7)
if wireType == 4 { if wireType == 4 {
return fmt.Errorf("proto: EventCreateGroupAccount: wiretype end group for non-group") return fmt.Errorf("proto: EventCreateGroupPolicy: wiretype end group for non-group")
} }
if fieldNum <= 0 { if fieldNum <= 0 {
return fmt.Errorf("proto: EventCreateGroupAccount: illegal tag %d (wire type %d)", fieldNum, wire) return fmt.Errorf("proto: EventCreateGroupPolicy: illegal tag %d (wire type %d)", fieldNum, wire)
} }
switch fieldNum { switch fieldNum {
case 1: case 1:
@ -902,7 +902,7 @@ func (m *EventCreateGroupAccount) Unmarshal(dAtA []byte) error {
} }
return nil return nil
} }
func (m *EventUpdateGroupAccount) Unmarshal(dAtA []byte) error { func (m *EventUpdateGroupPolicy) Unmarshal(dAtA []byte) error {
l := len(dAtA) l := len(dAtA)
iNdEx := 0 iNdEx := 0
for iNdEx < l { for iNdEx < l {
@ -925,10 +925,10 @@ func (m *EventUpdateGroupAccount) Unmarshal(dAtA []byte) error {
fieldNum := int32(wire >> 3) fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7) wireType := int(wire & 0x7)
if wireType == 4 { if wireType == 4 {
return fmt.Errorf("proto: EventUpdateGroupAccount: wiretype end group for non-group") return fmt.Errorf("proto: EventUpdateGroupPolicy: wiretype end group for non-group")
} }
if fieldNum <= 0 { if fieldNum <= 0 {
return fmt.Errorf("proto: EventUpdateGroupAccount: illegal tag %d (wire type %d)", fieldNum, wire) return fmt.Errorf("proto: EventUpdateGroupPolicy: illegal tag %d (wire type %d)", fieldNum, wire)
} }
switch fieldNum { switch fieldNum {
case 1: case 1:

View File

@ -2,6 +2,7 @@ package keeper
import ( import (
"context" "context"
"google.golang.org/grpc/codes" "google.golang.org/grpc/codes"
"google.golang.org/grpc/status" "google.golang.org/grpc/status"
@ -31,19 +32,19 @@ func (q Keeper) getGroupInfo(ctx sdk.Context, id uint64) (group.GroupInfo, error
return obj, err return obj, err
} }
func (q Keeper) GroupAccountInfo(goCtx context.Context, request *group.QueryGroupAccountInfoRequest) (*group.QueryGroupAccountInfoResponse, error) { func (q Keeper) GroupPolicyInfo(goCtx context.Context, request *group.QueryGroupPolicyInfoRequest) (*group.QueryGroupPolicyInfoResponse, error) {
ctx := sdk.UnwrapSDKContext(goCtx) ctx := sdk.UnwrapSDKContext(goCtx)
groupAccountInfo, err := q.getGroupAccountInfo(ctx, request.Address) groupPolicyInfo, err := q.getGroupPolicyInfo(ctx, request.Address)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return &group.QueryGroupAccountInfoResponse{Info: &groupAccountInfo}, nil return &group.QueryGroupPolicyInfoResponse{Info: &groupPolicyInfo}, nil
} }
func (q Keeper) getGroupAccountInfo(ctx sdk.Context, accountAddress string) (group.GroupAccountInfo, error) { func (q Keeper) getGroupPolicyInfo(ctx sdk.Context, accountAddress string) (group.GroupPolicyInfo, error) {
var obj group.GroupAccountInfo var obj group.GroupPolicyInfo
return obj, q.groupAccountTable.GetOne(ctx.KVStore(q.key), orm.PrimaryKey(&group.GroupAccountInfo{Address: accountAddress}), &obj) return obj, q.groupPolicyTable.GetOne(ctx.KVStore(q.key), orm.PrimaryKey(&group.GroupPolicyInfo{Address: accountAddress}), &obj)
} }
func (q Keeper) GroupMembers(goCtx context.Context, request *group.QueryGroupMembersRequest) (*group.QueryGroupMembersResponse, error) { func (q Keeper) GroupMembers(goCtx context.Context, request *group.QueryGroupMembersRequest) (*group.QueryGroupMembersResponse, error) {
@ -97,55 +98,55 @@ func (q Keeper) getGroupsByAdmin(ctx sdk.Context, admin sdk.AccAddress, pageRequ
return q.groupByAdminIndex.GetPaginated(ctx.KVStore(q.key), admin.Bytes(), pageRequest) return q.groupByAdminIndex.GetPaginated(ctx.KVStore(q.key), admin.Bytes(), pageRequest)
} }
func (q Keeper) GroupAccountsByGroup(goCtx context.Context, request *group.QueryGroupAccountsByGroupRequest) (*group.QueryGroupAccountsByGroupResponse, error) { func (q Keeper) GroupPoliciesByGroup(goCtx context.Context, request *group.QueryGroupPoliciesByGroupRequest) (*group.QueryGroupPoliciesByGroupResponse, error) {
ctx := sdk.UnwrapSDKContext(goCtx) ctx := sdk.UnwrapSDKContext(goCtx)
groupID := request.GroupId groupID := request.GroupId
it, err := q.getGroupAccountsByGroup(ctx, groupID, request.Pagination) it, err := q.getGroupPoliciesByGroup(ctx, groupID, request.Pagination)
if err != nil { if err != nil {
return nil, err return nil, err
} }
var accounts []*group.GroupAccountInfo var accounts []*group.GroupPolicyInfo
pageRes, err := orm.Paginate(it, request.Pagination, &accounts) pageRes, err := orm.Paginate(it, request.Pagination, &accounts)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return &group.QueryGroupAccountsByGroupResponse{ return &group.QueryGroupPoliciesByGroupResponse{
GroupAccounts: accounts, GroupPolicies: accounts,
Pagination: pageRes, Pagination: pageRes,
}, nil }, nil
} }
func (q Keeper) getGroupAccountsByGroup(ctx sdk.Context, id uint64, pageRequest *query.PageRequest) (orm.Iterator, error) { func (q Keeper) getGroupPoliciesByGroup(ctx sdk.Context, id uint64, pageRequest *query.PageRequest) (orm.Iterator, error) {
return q.groupAccountByGroupIndex.GetPaginated(ctx.KVStore(q.key), id, pageRequest) return q.groupPolicyByGroupIndex.GetPaginated(ctx.KVStore(q.key), id, pageRequest)
} }
func (q Keeper) GroupAccountsByAdmin(goCtx context.Context, request *group.QueryGroupAccountsByAdminRequest) (*group.QueryGroupAccountsByAdminResponse, error) { func (q Keeper) GroupPoliciesByAdmin(goCtx context.Context, request *group.QueryGroupPoliciesByAdminRequest) (*group.QueryGroupPoliciesByAdminResponse, error) {
ctx := sdk.UnwrapSDKContext(goCtx) ctx := sdk.UnwrapSDKContext(goCtx)
addr, err := sdk.AccAddressFromBech32(request.Admin) addr, err := sdk.AccAddressFromBech32(request.Admin)
if err != nil { if err != nil {
return nil, err return nil, err
} }
it, err := q.getGroupAccountsByAdmin(ctx, addr, request.Pagination) it, err := q.getGroupPoliciesByAdmin(ctx, addr, request.Pagination)
if err != nil { if err != nil {
return nil, err return nil, err
} }
var accounts []*group.GroupAccountInfo var accounts []*group.GroupPolicyInfo
pageRes, err := orm.Paginate(it, request.Pagination, &accounts) pageRes, err := orm.Paginate(it, request.Pagination, &accounts)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return &group.QueryGroupAccountsByAdminResponse{ return &group.QueryGroupPoliciesByAdminResponse{
GroupAccounts: accounts, GroupPolicies: accounts,
Pagination: pageRes, Pagination: pageRes,
}, nil }, nil
} }
func (q Keeper) getGroupAccountsByAdmin(ctx sdk.Context, admin sdk.AccAddress, pageRequest *query.PageRequest) (orm.Iterator, error) { func (q Keeper) getGroupPoliciesByAdmin(ctx sdk.Context, admin sdk.AccAddress, pageRequest *query.PageRequest) (orm.Iterator, error) {
return q.groupAccountByAdminIndex.GetPaginated(ctx.KVStore(q.key), admin.Bytes(), pageRequest) return q.groupPolicyByAdminIndex.GetPaginated(ctx.KVStore(q.key), admin.Bytes(), pageRequest)
} }
func (q Keeper) Proposal(goCtx context.Context, request *group.QueryProposalRequest) (*group.QueryProposalResponse, error) { func (q Keeper) Proposal(goCtx context.Context, request *group.QueryProposalRequest) (*group.QueryProposalResponse, error) {
@ -159,13 +160,13 @@ func (q Keeper) Proposal(goCtx context.Context, request *group.QueryProposalRequ
return &group.QueryProposalResponse{Proposal: &proposal}, nil return &group.QueryProposalResponse{Proposal: &proposal}, nil
} }
func (q Keeper) ProposalsByGroupAccount(goCtx context.Context, request *group.QueryProposalsByGroupAccountRequest) (*group.QueryProposalsByGroupAccountResponse, error) { func (q Keeper) ProposalsByGroupPolicy(goCtx context.Context, request *group.QueryProposalsByGroupPolicyRequest) (*group.QueryProposalsByGroupPolicyResponse, error) {
ctx := sdk.UnwrapSDKContext(goCtx) ctx := sdk.UnwrapSDKContext(goCtx)
addr, err := sdk.AccAddressFromBech32(request.Address) addr, err := sdk.AccAddressFromBech32(request.Address)
if err != nil { if err != nil {
return nil, err return nil, err
} }
it, err := q.getProposalsByGroupAccount(ctx, addr, request.Pagination) it, err := q.getProposalsByGroupPolicy(ctx, addr, request.Pagination)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -176,14 +177,14 @@ func (q Keeper) ProposalsByGroupAccount(goCtx context.Context, request *group.Qu
return nil, err return nil, err
} }
return &group.QueryProposalsByGroupAccountResponse{ return &group.QueryProposalsByGroupPolicyResponse{
Proposals: proposals, Proposals: proposals,
Pagination: pageRes, Pagination: pageRes,
}, nil }, nil
} }
func (q Keeper) getProposalsByGroupAccount(ctx sdk.Context, account sdk.AccAddress, pageRequest *query.PageRequest) (orm.Iterator, error) { func (q Keeper) getProposalsByGroupPolicy(ctx sdk.Context, account sdk.AccAddress, pageRequest *query.PageRequest) (orm.Iterator, error) {
return q.proposalByGroupAccountIndex.GetPaginated(ctx.KVStore(q.key), account.Bytes(), pageRequest) return q.proposalByGroupPolicyIndex.GetPaginated(ctx.KVStore(q.key), account.Bytes(), pageRequest)
} }
func (q Keeper) getProposal(ctx sdk.Context, proposalID uint64) (group.Proposal, error) { func (q Keeper) getProposal(ctx sdk.Context, proposalID uint64) (group.Proposal, error) {

View File

@ -22,7 +22,7 @@ func TestQueryGroupsByMember(t *testing.T) {
addrs := simapp.AddTestAddrsIncremental(app, ctx, 6, sdk.NewInt(30000000)) addrs := simapp.AddTestAddrsIncremental(app, ctx, 6, sdk.NewInt(30000000))
// Initial group, group account and balance setup // Initial group, group policy and balance setup
members := []group.Member{ members := []group.Member{
{Address: addrs[2].String(), Weight: "1"}, {Address: addrs[3].String(), Weight: "2"}, {Address: addrs[2].String(), Weight: "1"}, {Address: addrs[3].String(), Weight: "2"},
} }
@ -31,7 +31,7 @@ func TestQueryGroupsByMember(t *testing.T) {
Members: members, Members: members,
Metadata: nil, Metadata: nil,
}) })
require.NoError(t,err) require.NoError(t, err)
members = []group.Member{ members = []group.Member{
{Address: addrs[3].String(), Weight: "1"}, {Address: addrs[4].String(), Weight: "2"}, {Address: addrs[3].String(), Weight: "1"}, {Address: addrs[4].String(), Weight: "2"},
@ -41,26 +41,26 @@ func TestQueryGroupsByMember(t *testing.T) {
Members: members, Members: members,
Metadata: nil, Metadata: nil,
}) })
require.NoError(t,err) require.NoError(t, err)
// not part of any group // not part of any group
resp, err := queryClient.GroupsByMember(context.Background(), &group.QueryGroupsByMemberRequest{ resp, err := queryClient.GroupsByMember(context.Background(), &group.QueryGroupsByMemberRequest{
Address: addrs[5].String(), Address: addrs[5].String(),
}) })
require.NoError(t,err) require.NoError(t, err)
require.Len(t, resp.Groups,0) require.Len(t, resp.Groups, 0)
// expect one group // expect one group
resp, err = queryClient.GroupsByMember(context.Background(), &group.QueryGroupsByMemberRequest{ resp, err = queryClient.GroupsByMember(context.Background(), &group.QueryGroupsByMemberRequest{
Address: addrs[4].String(), Address: addrs[4].String(),
}) })
require.NoError(t,err) require.NoError(t, err)
require.Len(t, resp.Groups,1) require.Len(t, resp.Groups, 1)
// expect two groups // expect two groups
resp, err = queryClient.GroupsByMember(context.Background(), &group.QueryGroupsByMemberRequest{ resp, err = queryClient.GroupsByMember(context.Background(), &group.QueryGroupsByMemberRequest{
Address: addrs[3].String(), Address: addrs[3].String(),
}) })
require.NoError(t,err) require.NoError(t, err)
require.Len(t, resp.Groups,2) require.Len(t, resp.Groups, 2)
} }

View File

@ -49,7 +49,7 @@ func GroupTotalWeightInvariant(keeper Keeper) sdk.Invariant {
// TallyVotesSumInvariant checks that proposal VoteState must correspond to the vote choice. // TallyVotesSumInvariant checks that proposal VoteState must correspond to the vote choice.
func TallyVotesSumInvariant(keeper Keeper) sdk.Invariant { func TallyVotesSumInvariant(keeper Keeper) sdk.Invariant {
return func(ctx sdk.Context) (string, bool) { return func(ctx sdk.Context) (string, bool) {
msg, broken := TallyVotesSumInvariantHelper(ctx, keeper.key, keeper.groupTable, keeper.proposalTable, keeper.groupMemberTable, keeper.voteByProposalIndex, keeper.groupAccountTable) msg, broken := TallyVotesSumInvariantHelper(ctx, keeper.key, keeper.groupTable, keeper.proposalTable, keeper.groupMemberTable, keeper.voteByProposalIndex, keeper.groupPolicyTable)
return sdk.FormatInvariant(group.ModuleName, votesSumInvariant, msg), broken return sdk.FormatInvariant(group.ModuleName, votesSumInvariant, msg), broken
} }
} }
@ -200,13 +200,13 @@ func GroupTotalWeightInvariantHelper(ctx sdk.Context, key storetypes.StoreKey, g
return msg, broken return msg, broken
} }
func TallyVotesSumInvariantHelper(ctx sdk.Context, key storetypes.StoreKey, groupTable orm.AutoUInt64Table, proposalTable orm.AutoUInt64Table, groupMemberTable orm.PrimaryKeyTable, voteByProposalIndex orm.Index, groupAccountTable orm.PrimaryKeyTable) (string, bool) { func TallyVotesSumInvariantHelper(ctx sdk.Context, key storetypes.StoreKey, groupTable orm.AutoUInt64Table, proposalTable orm.AutoUInt64Table, groupMemberTable orm.PrimaryKeyTable, voteByProposalIndex orm.Index, groupPolicyTable orm.PrimaryKeyTable) (string, bool) {
var msg string var msg string
var broken bool var broken bool
var groupInfo group.GroupInfo var groupInfo group.GroupInfo
var proposal group.Proposal var proposal group.Proposal
var groupAcc group.GroupAccountInfo var groupPolicy group.GroupPolicyInfo
var groupMem group.GroupMember var groupMem group.GroupMember
var vote group.Vote var vote group.Vote
@ -251,20 +251,20 @@ func TallyVotesSumInvariantHelper(ctx sdk.Context, key storetypes.StoreKey, grou
break break
} }
err = groupAccountTable.GetOne(ctx.KVStore(key), orm.PrimaryKey(&group.GroupAccountInfo{Address: proposal.Address}), &groupAcc) err = groupPolicyTable.GetOne(ctx.KVStore(key), orm.PrimaryKey(&group.GroupPolicyInfo{Address: proposal.Address}), &groupPolicy)
if err != nil { if err != nil {
msg += fmt.Sprintf("group account not found for address: %s\n%v\n", proposal.Address, err) msg += fmt.Sprintf("group policy not found for address: %s\n%v\n", proposal.Address, err)
return msg, broken return msg, broken
} }
if proposal.GroupAccountVersion != groupAcc.Version { if proposal.GroupPolicyVersion != groupPolicy.Version {
msg += fmt.Sprintf("group account with address %s was modified\n", groupAcc.Address) msg += fmt.Sprintf("group policy with address %s was modified\n", groupPolicy.Address)
return msg, broken return msg, broken
} }
_, err = groupTable.GetOne(ctx.KVStore(key), groupAcc.GroupId, &groupInfo) _, err = groupTable.GetOne(ctx.KVStore(key), groupPolicy.GroupId, &groupInfo)
if err != nil { if err != nil {
msg += fmt.Sprintf("group info not found for group id %d\n%v\n", groupAcc.GroupId, err) msg += fmt.Sprintf("group info not found for group id %d\n%v\n", groupPolicy.GroupId, err)
return msg, broken return msg, broken
} }
@ -286,9 +286,9 @@ func TallyVotesSumInvariantHelper(ctx sdk.Context, key storetypes.StoreKey, grou
break break
} }
err = groupMemberTable.GetOne(ctx.KVStore(key), orm.PrimaryKey(&group.GroupMember{GroupId: groupAcc.GroupId, Member: &group.Member{Address: vote.Voter}}), &groupMem) err = groupMemberTable.GetOne(ctx.KVStore(key), orm.PrimaryKey(&group.GroupMember{GroupId: groupPolicy.GroupId, Member: &group.Member{Address: vote.Voter}}), &groupMem)
if err != nil { if err != nil {
msg += fmt.Sprintf("group member not found with group ID %d and group member %s\n%v\n", groupAcc.GroupId, vote.Voter, err) msg += fmt.Sprintf("group member not found with group ID %d and group member %s\n%v\n", groupPolicy.GroupId, vote.Voter, err)
return msg, broken return msg, broken
} }

View File

@ -72,146 +72,146 @@ func (s *invariantTestSuite) TestTallyVotesInvariant() {
}{ }{
"invariant not broken": { "invariant not broken": {
prevProposal: &group.Proposal{ prevProposal: &group.Proposal{
ProposalId: 1, ProposalId: 1,
Address: addr1.String(), Address: addr1.String(),
Proposers: []string{addr1.String()}, Proposers: []string{addr1.String()},
SubmittedAt: prevCtx.BlockTime(), SubmittedAt: prevCtx.BlockTime(),
GroupVersion: 1, GroupVersion: 1,
GroupAccountVersion: 1, GroupPolicyVersion: 1,
Status: group.ProposalStatusSubmitted, Status: group.ProposalStatusSubmitted,
Result: group.ProposalResultUnfinalized, Result: group.ProposalResultUnfinalized,
VoteState: group.Tally{YesCount: "1", NoCount: "0", AbstainCount: "0", VetoCount: "0"}, VoteState: group.Tally{YesCount: "1", NoCount: "0", AbstainCount: "0", VetoCount: "0"},
Timeout: prevCtx.BlockTime().Add(time.Second * 600), Timeout: prevCtx.BlockTime().Add(time.Second * 600),
ExecutorResult: group.ProposalExecutorResultNotRun, ExecutorResult: group.ProposalExecutorResultNotRun,
}, },
curProposal: &group.Proposal{ curProposal: &group.Proposal{
ProposalId: 1, ProposalId: 1,
Address: addr2.String(), Address: addr2.String(),
Proposers: []string{addr2.String()}, Proposers: []string{addr2.String()},
SubmittedAt: curCtx.BlockTime(), SubmittedAt: curCtx.BlockTime(),
GroupVersion: 1, GroupVersion: 1,
GroupAccountVersion: 1, GroupPolicyVersion: 1,
Status: group.ProposalStatusSubmitted, Status: group.ProposalStatusSubmitted,
Result: group.ProposalResultUnfinalized, Result: group.ProposalResultUnfinalized,
VoteState: group.Tally{YesCount: "2", NoCount: "0", AbstainCount: "0", VetoCount: "0"}, VoteState: group.Tally{YesCount: "2", NoCount: "0", AbstainCount: "0", VetoCount: "0"},
Timeout: curCtx.BlockTime().Add(time.Second * 600), Timeout: curCtx.BlockTime().Add(time.Second * 600),
ExecutorResult: group.ProposalExecutorResultNotRun, ExecutorResult: group.ProposalExecutorResultNotRun,
}, },
}, },
"current block yes vote count must be greater than previous block yes vote count": { "current block yes vote count must be greater than previous block yes vote count": {
prevProposal: &group.Proposal{ prevProposal: &group.Proposal{
ProposalId: 1, ProposalId: 1,
Address: addr1.String(), Address: addr1.String(),
Proposers: []string{addr1.String()}, Proposers: []string{addr1.String()},
SubmittedAt: prevCtx.BlockTime(), SubmittedAt: prevCtx.BlockTime(),
GroupVersion: 1, GroupVersion: 1,
GroupAccountVersion: 1, GroupPolicyVersion: 1,
Status: group.ProposalStatusSubmitted, Status: group.ProposalStatusSubmitted,
Result: group.ProposalResultUnfinalized, Result: group.ProposalResultUnfinalized,
VoteState: group.Tally{YesCount: "2", NoCount: "0", AbstainCount: "0", VetoCount: "0"}, VoteState: group.Tally{YesCount: "2", NoCount: "0", AbstainCount: "0", VetoCount: "0"},
Timeout: prevCtx.BlockTime().Add(time.Second * 600), Timeout: prevCtx.BlockTime().Add(time.Second * 600),
ExecutorResult: group.ProposalExecutorResultNotRun, ExecutorResult: group.ProposalExecutorResultNotRun,
}, },
curProposal: &group.Proposal{ curProposal: &group.Proposal{
ProposalId: 1, ProposalId: 1,
Address: addr2.String(), Address: addr2.String(),
Proposers: []string{addr2.String()}, Proposers: []string{addr2.String()},
SubmittedAt: curCtx.BlockTime(), SubmittedAt: curCtx.BlockTime(),
GroupVersion: 1, GroupVersion: 1,
GroupAccountVersion: 1, GroupPolicyVersion: 1,
Status: group.ProposalStatusSubmitted, Status: group.ProposalStatusSubmitted,
Result: group.ProposalResultUnfinalized, Result: group.ProposalResultUnfinalized,
VoteState: group.Tally{YesCount: "1", NoCount: "0", AbstainCount: "0", VetoCount: "0"}, VoteState: group.Tally{YesCount: "1", NoCount: "0", AbstainCount: "0", VetoCount: "0"},
Timeout: curCtx.BlockTime().Add(time.Second * 600), Timeout: curCtx.BlockTime().Add(time.Second * 600),
ExecutorResult: group.ProposalExecutorResultNotRun, ExecutorResult: group.ProposalExecutorResultNotRun,
}, },
expBroken: true, expBroken: true,
}, },
"current block no vote count must be greater than previous block no vote count": { "current block no vote count must be greater than previous block no vote count": {
prevProposal: &group.Proposal{ prevProposal: &group.Proposal{
ProposalId: 1, ProposalId: 1,
Address: addr1.String(), Address: addr1.String(),
Proposers: []string{addr1.String()}, Proposers: []string{addr1.String()},
SubmittedAt: prevCtx.BlockTime(), SubmittedAt: prevCtx.BlockTime(),
GroupVersion: 1, GroupVersion: 1,
GroupAccountVersion: 1, GroupPolicyVersion: 1,
Status: group.ProposalStatusSubmitted, Status: group.ProposalStatusSubmitted,
Result: group.ProposalResultUnfinalized, Result: group.ProposalResultUnfinalized,
VoteState: group.Tally{YesCount: "0", NoCount: "2", AbstainCount: "0", VetoCount: "0"}, VoteState: group.Tally{YesCount: "0", NoCount: "2", AbstainCount: "0", VetoCount: "0"},
Timeout: prevCtx.BlockTime().Add(time.Second * 600), Timeout: prevCtx.BlockTime().Add(time.Second * 600),
ExecutorResult: group.ProposalExecutorResultNotRun, ExecutorResult: group.ProposalExecutorResultNotRun,
}, },
curProposal: &group.Proposal{ curProposal: &group.Proposal{
ProposalId: 1, ProposalId: 1,
Address: addr2.String(), Address: addr2.String(),
Proposers: []string{addr2.String()}, Proposers: []string{addr2.String()},
SubmittedAt: curCtx.BlockTime(), SubmittedAt: curCtx.BlockTime(),
GroupVersion: 1, GroupVersion: 1,
GroupAccountVersion: 1, GroupPolicyVersion: 1,
Status: group.ProposalStatusSubmitted, Status: group.ProposalStatusSubmitted,
Result: group.ProposalResultUnfinalized, Result: group.ProposalResultUnfinalized,
VoteState: group.Tally{YesCount: "0", NoCount: "1", AbstainCount: "0", VetoCount: "0"}, VoteState: group.Tally{YesCount: "0", NoCount: "1", AbstainCount: "0", VetoCount: "0"},
Timeout: curCtx.BlockTime().Add(time.Second * 600), Timeout: curCtx.BlockTime().Add(time.Second * 600),
ExecutorResult: group.ProposalExecutorResultNotRun, ExecutorResult: group.ProposalExecutorResultNotRun,
}, },
expBroken: true, expBroken: true,
}, },
"current block abstain vote count must be greater than previous block abstain vote count": { "current block abstain vote count must be greater than previous block abstain vote count": {
prevProposal: &group.Proposal{ prevProposal: &group.Proposal{
ProposalId: 1, ProposalId: 1,
Address: addr1.String(), Address: addr1.String(),
Proposers: []string{addr1.String()}, Proposers: []string{addr1.String()},
SubmittedAt: prevCtx.BlockTime(), SubmittedAt: prevCtx.BlockTime(),
GroupVersion: 1, GroupVersion: 1,
GroupAccountVersion: 1, GroupPolicyVersion: 1,
Status: group.ProposalStatusSubmitted, Status: group.ProposalStatusSubmitted,
Result: group.ProposalResultUnfinalized, Result: group.ProposalResultUnfinalized,
VoteState: group.Tally{YesCount: "0", NoCount: "0", AbstainCount: "2", VetoCount: "0"}, VoteState: group.Tally{YesCount: "0", NoCount: "0", AbstainCount: "2", VetoCount: "0"},
Timeout: prevCtx.BlockTime().Add(time.Second * 600), Timeout: prevCtx.BlockTime().Add(time.Second * 600),
ExecutorResult: group.ProposalExecutorResultNotRun, ExecutorResult: group.ProposalExecutorResultNotRun,
}, },
curProposal: &group.Proposal{ curProposal: &group.Proposal{
ProposalId: 1, ProposalId: 1,
Address: addr2.String(), Address: addr2.String(),
Proposers: []string{addr2.String()}, Proposers: []string{addr2.String()},
SubmittedAt: curCtx.BlockTime(), SubmittedAt: curCtx.BlockTime(),
GroupVersion: 1, GroupVersion: 1,
GroupAccountVersion: 1, GroupPolicyVersion: 1,
Status: group.ProposalStatusSubmitted, Status: group.ProposalStatusSubmitted,
Result: group.ProposalResultUnfinalized, Result: group.ProposalResultUnfinalized,
VoteState: group.Tally{YesCount: "0", NoCount: "0", AbstainCount: "1", VetoCount: "0"}, VoteState: group.Tally{YesCount: "0", NoCount: "0", AbstainCount: "1", VetoCount: "0"},
Timeout: curCtx.BlockTime().Add(time.Second * 600), Timeout: curCtx.BlockTime().Add(time.Second * 600),
ExecutorResult: group.ProposalExecutorResultNotRun, ExecutorResult: group.ProposalExecutorResultNotRun,
}, },
expBroken: true, expBroken: true,
}, },
"current block veto vote count must be greater than previous block veto vote count": { "current block veto vote count must be greater than previous block veto vote count": {
prevProposal: &group.Proposal{ prevProposal: &group.Proposal{
ProposalId: 1, ProposalId: 1,
Address: addr1.String(), Address: addr1.String(),
Proposers: []string{addr1.String()}, Proposers: []string{addr1.String()},
SubmittedAt: prevCtx.BlockTime(), SubmittedAt: prevCtx.BlockTime(),
GroupVersion: 1, GroupVersion: 1,
GroupAccountVersion: 1, GroupPolicyVersion: 1,
Status: group.ProposalStatusSubmitted, Status: group.ProposalStatusSubmitted,
Result: group.ProposalResultUnfinalized, Result: group.ProposalResultUnfinalized,
VoteState: group.Tally{YesCount: "0", NoCount: "0", AbstainCount: "0", VetoCount: "2"}, VoteState: group.Tally{YesCount: "0", NoCount: "0", AbstainCount: "0", VetoCount: "2"},
Timeout: prevCtx.BlockTime().Add(time.Second * 600), Timeout: prevCtx.BlockTime().Add(time.Second * 600),
ExecutorResult: group.ProposalExecutorResultNotRun, ExecutorResult: group.ProposalExecutorResultNotRun,
}, },
curProposal: &group.Proposal{ curProposal: &group.Proposal{
ProposalId: 1, ProposalId: 1,
Address: addr2.String(), Address: addr2.String(),
Proposers: []string{addr2.String()}, Proposers: []string{addr2.String()},
SubmittedAt: curCtx.BlockTime(), SubmittedAt: curCtx.BlockTime(),
GroupVersion: 1, GroupVersion: 1,
GroupAccountVersion: 1, GroupPolicyVersion: 1,
Status: group.ProposalStatusSubmitted, Status: group.ProposalStatusSubmitted,
Result: group.ProposalResultUnfinalized, Result: group.ProposalResultUnfinalized,
VoteState: group.Tally{YesCount: "0", NoCount: "0", AbstainCount: "0", VetoCount: "1"}, VoteState: group.Tally{YesCount: "0", NoCount: "0", AbstainCount: "0", VetoCount: "1"},
Timeout: curCtx.BlockTime().Add(time.Second * 600), Timeout: curCtx.BlockTime().Add(time.Second * 600),
ExecutorResult: group.ProposalExecutorResultNotRun, ExecutorResult: group.ProposalExecutorResultNotRun,
}, },
expBroken: true, expBroken: true,
}, },
@ -341,8 +341,8 @@ func (s *invariantTestSuite) TestTallyVotesSumInvariant() {
groupTable, err := orm.NewAutoUInt64Table([2]byte{keeper.GroupTablePrefix}, keeper.GroupTableSeqPrefix, &group.GroupInfo{}, cdc) groupTable, err := orm.NewAutoUInt64Table([2]byte{keeper.GroupTablePrefix}, keeper.GroupTableSeqPrefix, &group.GroupInfo{}, cdc)
s.Require().NoError(err) s.Require().NoError(err)
// Group Account Table // Group Policy Table
groupAccountTable, err := orm.NewPrimaryKeyTable([2]byte{keeper.GroupAccountTablePrefix}, &group.GroupAccountInfo{}, cdc) groupPolicyTable, err := orm.NewPrimaryKeyTable([2]byte{keeper.GroupPolicyTablePrefix}, &group.GroupPolicyInfo{}, cdc)
s.Require().NoError(err) s.Require().NoError(err)
// Group Member Table // Group Member Table
@ -368,7 +368,7 @@ func (s *invariantTestSuite) TestTallyVotesSumInvariant() {
specs := map[string]struct { specs := map[string]struct {
groupsInfo *group.GroupInfo groupsInfo *group.GroupInfo
groupAcc *group.GroupAccountInfo groupPolicy *group.GroupPolicyInfo
groupMembers []*group.GroupMember groupMembers []*group.GroupMember
proposal *group.Proposal proposal *group.Proposal
votes []*group.Vote votes []*group.Vote
@ -381,7 +381,7 @@ func (s *invariantTestSuite) TestTallyVotesSumInvariant() {
Version: 1, Version: 1,
TotalWeight: "7", TotalWeight: "7",
}, },
groupAcc: &group.GroupAccountInfo{ groupPolicy: &group.GroupPolicyInfo{
Address: addr1.String(), Address: addr1.String(),
GroupId: 1, GroupId: 1,
Admin: adminAddr.String(), Admin: adminAddr.String(),
@ -404,17 +404,17 @@ func (s *invariantTestSuite) TestTallyVotesSumInvariant() {
}, },
}, },
proposal: &group.Proposal{ proposal: &group.Proposal{
ProposalId: 1, ProposalId: 1,
Address: addr1.String(), Address: addr1.String(),
Proposers: []string{addr1.String()}, Proposers: []string{addr1.String()},
SubmittedAt: curCtx.BlockTime(), SubmittedAt: curCtx.BlockTime(),
GroupVersion: 1, GroupVersion: 1,
GroupAccountVersion: 1, GroupPolicyVersion: 1,
Status: group.ProposalStatusSubmitted, Status: group.ProposalStatusSubmitted,
Result: group.ProposalResultUnfinalized, Result: group.ProposalResultUnfinalized,
VoteState: group.Tally{YesCount: "4", NoCount: "3", AbstainCount: "0", VetoCount: "0"}, VoteState: group.Tally{YesCount: "4", NoCount: "3", AbstainCount: "0", VetoCount: "0"},
Timeout: curCtx.BlockTime().Add(time.Second * 600), Timeout: curCtx.BlockTime().Add(time.Second * 600),
ExecutorResult: group.ProposalExecutorResultNotRun, ExecutorResult: group.ProposalExecutorResultNotRun,
}, },
votes: []*group.Vote{ votes: []*group.Vote{
{ {
@ -439,7 +439,7 @@ func (s *invariantTestSuite) TestTallyVotesSumInvariant() {
Version: 1, Version: 1,
TotalWeight: "5", TotalWeight: "5",
}, },
groupAcc: &group.GroupAccountInfo{ groupPolicy: &group.GroupPolicyInfo{
Address: addr1.String(), Address: addr1.String(),
GroupId: 1, GroupId: 1,
Admin: adminAddr.String(), Admin: adminAddr.String(),
@ -462,17 +462,17 @@ func (s *invariantTestSuite) TestTallyVotesSumInvariant() {
}, },
}, },
proposal: &group.Proposal{ proposal: &group.Proposal{
ProposalId: 1, ProposalId: 1,
Address: addr1.String(), Address: addr1.String(),
Proposers: []string{addr1.String()}, Proposers: []string{addr1.String()},
SubmittedAt: curCtx.BlockTime(), SubmittedAt: curCtx.BlockTime(),
GroupVersion: 1, GroupVersion: 1,
GroupAccountVersion: 1, GroupPolicyVersion: 1,
Status: group.ProposalStatusSubmitted, Status: group.ProposalStatusSubmitted,
Result: group.ProposalResultUnfinalized, Result: group.ProposalResultUnfinalized,
VoteState: group.Tally{YesCount: "6", NoCount: "0", AbstainCount: "0", VetoCount: "0"}, VoteState: group.Tally{YesCount: "6", NoCount: "0", AbstainCount: "0", VetoCount: "0"},
Timeout: curCtx.BlockTime().Add(time.Second * 600), Timeout: curCtx.BlockTime().Add(time.Second * 600),
ExecutorResult: group.ProposalExecutorResultNotRun, ExecutorResult: group.ProposalExecutorResultNotRun,
}, },
votes: []*group.Vote{ votes: []*group.Vote{
{ {
@ -497,7 +497,7 @@ func (s *invariantTestSuite) TestTallyVotesSumInvariant() {
Version: 1, Version: 1,
TotalWeight: "7", TotalWeight: "7",
}, },
groupAcc: &group.GroupAccountInfo{ groupPolicy: &group.GroupPolicyInfo{
Address: addr1.String(), Address: addr1.String(),
GroupId: 1, GroupId: 1,
Admin: adminAddr.String(), Admin: adminAddr.String(),
@ -520,17 +520,17 @@ func (s *invariantTestSuite) TestTallyVotesSumInvariant() {
}, },
}, },
proposal: &group.Proposal{ proposal: &group.Proposal{
ProposalId: 1, ProposalId: 1,
Address: addr1.String(), Address: addr1.String(),
Proposers: []string{addr1.String()}, Proposers: []string{addr1.String()},
SubmittedAt: curCtx.BlockTime(), SubmittedAt: curCtx.BlockTime(),
GroupVersion: 1, GroupVersion: 1,
GroupAccountVersion: 1, GroupPolicyVersion: 1,
Status: group.ProposalStatusSubmitted, Status: group.ProposalStatusSubmitted,
Result: group.ProposalResultUnfinalized, Result: group.ProposalResultUnfinalized,
VoteState: group.Tally{YesCount: "4", NoCount: "3", AbstainCount: "0", VetoCount: "0"}, VoteState: group.Tally{YesCount: "4", NoCount: "3", AbstainCount: "0", VetoCount: "0"},
Timeout: curCtx.BlockTime().Add(time.Second * 600), Timeout: curCtx.BlockTime().Add(time.Second * 600),
ExecutorResult: group.ProposalExecutorResultNotRun, ExecutorResult: group.ProposalExecutorResultNotRun,
}, },
votes: []*group.Vote{ votes: []*group.Vote{
{ {
@ -554,16 +554,16 @@ func (s *invariantTestSuite) TestTallyVotesSumInvariant() {
cacheCurCtx, _ := curCtx.CacheContext() cacheCurCtx, _ := curCtx.CacheContext()
groupsInfo := spec.groupsInfo groupsInfo := spec.groupsInfo
proposal := spec.proposal proposal := spec.proposal
groupAcc := spec.groupAcc groupPolicy := spec.groupPolicy
groupMembers := spec.groupMembers groupMembers := spec.groupMembers
votes := spec.votes votes := spec.votes
_, err := groupTable.Create(cacheCurCtx.KVStore(key), groupsInfo) _, err := groupTable.Create(cacheCurCtx.KVStore(key), groupsInfo)
s.Require().NoError(err) s.Require().NoError(err)
err = groupAcc.SetDecisionPolicy(group.NewThresholdDecisionPolicy("1", time.Second)) err = groupPolicy.SetDecisionPolicy(group.NewThresholdDecisionPolicy("1", time.Second))
s.Require().NoError(err) s.Require().NoError(err)
err = groupAccountTable.Create(cacheCurCtx.KVStore(key), groupAcc) err = groupPolicyTable.Create(cacheCurCtx.KVStore(key), groupPolicy)
s.Require().NoError(err) s.Require().NoError(err)
for i := 0; i < len(groupMembers); i++ { for i := 0; i < len(groupMembers); i++ {
@ -579,7 +579,7 @@ func (s *invariantTestSuite) TestTallyVotesSumInvariant() {
s.Require().NoError(err) s.Require().NoError(err)
} }
_, broken := keeper.TallyVotesSumInvariantHelper(cacheCurCtx, key, *groupTable, *proposalTable, *groupMemberTable, voteByProposalIndex, *groupAccountTable) _, broken := keeper.TallyVotesSumInvariantHelper(cacheCurCtx, key, *groupTable, *proposalTable, *groupMemberTable, voteByProposalIndex, *groupPolicyTable)
s.Require().Equal(spec.expBroken, broken) s.Require().Equal(spec.expBroken, broken)
} }
} }

View File

@ -24,17 +24,17 @@ const (
GroupMemberByGroupIndexPrefix byte = 0x11 GroupMemberByGroupIndexPrefix byte = 0x11
GroupMemberByMemberIndexPrefix byte = 0x12 GroupMemberByMemberIndexPrefix byte = 0x12
// Group Account Table // Group Policy Table
GroupAccountTablePrefix byte = 0x20 GroupPolicyTablePrefix byte = 0x20
GroupAccountTableSeqPrefix byte = 0x21 GroupPolicyTableSeqPrefix byte = 0x21
GroupAccountByGroupIndexPrefix byte = 0x22 GroupPolicyByGroupIndexPrefix byte = 0x22
GroupAccountByAdminIndexPrefix byte = 0x23 GroupPolicyByAdminIndexPrefix byte = 0x23
// Proposal Table // Proposal Table
ProposalTablePrefix byte = 0x30 ProposalTablePrefix byte = 0x30
ProposalTableSeqPrefix byte = 0x31 ProposalTableSeqPrefix byte = 0x31
ProposalByGroupAccountIndexPrefix byte = 0x32 ProposalByGroupPolicyIndexPrefix byte = 0x32
ProposalByProposerIndexPrefix byte = 0x33 ProposalByProposerIndexPrefix byte = 0x33
// Vote Table // Vote Table
VoteTablePrefix byte = 0x40 VoteTablePrefix byte = 0x40
@ -56,16 +56,16 @@ type Keeper struct {
groupMemberByGroupIndex orm.Index groupMemberByGroupIndex orm.Index
groupMemberByMemberIndex orm.Index groupMemberByMemberIndex orm.Index
// Group Account Table // Group Policy Table
groupAccountSeq orm.Sequence groupPolicySeq orm.Sequence
groupAccountTable orm.PrimaryKeyTable groupPolicyTable orm.PrimaryKeyTable
groupAccountByGroupIndex orm.Index groupPolicyByGroupIndex orm.Index
groupAccountByAdminIndex orm.Index groupPolicyByAdminIndex orm.Index
// Proposal Table // Proposal Table
proposalTable orm.AutoUInt64Table proposalTable orm.AutoUInt64Table
proposalByGroupAccountIndex orm.Index proposalByGroupPolicyIndex orm.Index
proposalByProposerIndex orm.Index proposalByProposerIndex orm.Index
// Vote Table // Vote Table
voteTable orm.PrimaryKeyTable voteTable orm.PrimaryKeyTable
@ -123,20 +123,20 @@ func NewKeeper(storeKey storetypes.StoreKey, cdc codec.Codec, router *authmiddle
} }
k.groupMemberTable = *groupMemberTable k.groupMemberTable = *groupMemberTable
// Group Account Table // Group Policy Table
k.groupAccountSeq = orm.NewSequence(GroupAccountTableSeqPrefix) k.groupPolicySeq = orm.NewSequence(GroupPolicyTableSeqPrefix)
groupAccountTable, err := orm.NewPrimaryKeyTable([2]byte{GroupAccountTablePrefix}, &group.GroupAccountInfo{}, cdc) groupPolicyTable, err := orm.NewPrimaryKeyTable([2]byte{GroupPolicyTablePrefix}, &group.GroupPolicyInfo{}, cdc)
if err != nil { if err != nil {
panic(err.Error()) panic(err.Error())
} }
k.groupAccountByGroupIndex, err = orm.NewIndex(groupAccountTable, GroupAccountByGroupIndexPrefix, func(value interface{}) ([]interface{}, error) { k.groupPolicyByGroupIndex, err = orm.NewIndex(groupPolicyTable, GroupPolicyByGroupIndexPrefix, func(value interface{}) ([]interface{}, error) {
return []interface{}{value.(*group.GroupAccountInfo).GroupId}, nil return []interface{}{value.(*group.GroupPolicyInfo).GroupId}, nil
}, group.GroupAccountInfo{}.GroupId) }, group.GroupPolicyInfo{}.GroupId)
if err != nil { if err != nil {
panic(err.Error()) panic(err.Error())
} }
k.groupAccountByAdminIndex, err = orm.NewIndex(groupAccountTable, GroupAccountByAdminIndexPrefix, func(value interface{}) ([]interface{}, error) { k.groupPolicyByAdminIndex, err = orm.NewIndex(groupPolicyTable, GroupPolicyByAdminIndexPrefix, func(value interface{}) ([]interface{}, error) {
admin := value.(*group.GroupAccountInfo).Admin admin := value.(*group.GroupPolicyInfo).Admin
addr, err := sdk.AccAddressFromBech32(admin) addr, err := sdk.AccAddressFromBech32(admin)
if err != nil { if err != nil {
return nil, err return nil, err
@ -146,14 +146,14 @@ func NewKeeper(storeKey storetypes.StoreKey, cdc codec.Codec, router *authmiddle
if err != nil { if err != nil {
panic(err.Error()) panic(err.Error())
} }
k.groupAccountTable = *groupAccountTable k.groupPolicyTable = *groupPolicyTable
// Proposal Table // Proposal Table
proposalTable, err := orm.NewAutoUInt64Table([2]byte{ProposalTablePrefix}, ProposalTableSeqPrefix, &group.Proposal{}, cdc) proposalTable, err := orm.NewAutoUInt64Table([2]byte{ProposalTablePrefix}, ProposalTableSeqPrefix, &group.Proposal{}, cdc)
if err != nil { if err != nil {
panic(err.Error()) panic(err.Error())
} }
k.proposalByGroupAccountIndex, err = orm.NewIndex(proposalTable, ProposalByGroupAccountIndexPrefix, func(value interface{}) ([]interface{}, error) { k.proposalByGroupPolicyIndex, err = orm.NewIndex(proposalTable, ProposalByGroupPolicyIndexPrefix, func(value interface{}) ([]interface{}, error) {
account := value.(*group.Proposal).Address account := value.(*group.Proposal).Address
addr, err := sdk.AccAddressFromBech32(account) addr, err := sdk.AccAddressFromBech32(account)
if err != nil { if err != nil {

View File

@ -24,14 +24,14 @@ import (
type TestSuite struct { type TestSuite struct {
suite.Suite suite.Suite
app *simapp.SimApp app *simapp.SimApp
sdkCtx sdk.Context sdkCtx sdk.Context
ctx context.Context ctx context.Context
addrs []sdk.AccAddress addrs []sdk.AccAddress
groupID uint64 groupID uint64
groupAccountAddr sdk.AccAddress groupPolicyAddr sdk.AccAddress
keeper keeper.Keeper keeper keeper.Keeper
blockTime time.Time blockTime time.Time
} }
func (s *TestSuite) SetupTest() { func (s *TestSuite) SetupTest() {
@ -47,7 +47,7 @@ func (s *TestSuite) SetupTest() {
s.keeper = s.app.GroupKeeper s.keeper = s.app.GroupKeeper
s.addrs = simapp.AddTestAddrsIncremental(app, ctx, 6, sdk.NewInt(30000000)) s.addrs = simapp.AddTestAddrsIncremental(app, ctx, 6, sdk.NewInt(30000000))
// Initial group, group account and balance setup // Initial group, group policy and balance setup
members := []group.Member{ members := []group.Member{
{Address: s.addrs[4].String(), Weight: "1"}, {Address: s.addrs[1].String(), Weight: "2"}, {Address: s.addrs[4].String(), Weight: "1"}, {Address: s.addrs[1].String(), Weight: "2"},
} }
@ -63,19 +63,19 @@ func (s *TestSuite) SetupTest() {
"2", "2",
time.Second, time.Second,
) )
accountReq := &group.MsgCreateGroupAccount{ policyReq := &group.MsgCreateGroupPolicy{
Admin: s.addrs[0].String(), Admin: s.addrs[0].String(),
GroupId: s.groupID, GroupId: s.groupID,
Metadata: nil, Metadata: nil,
} }
err = accountReq.SetDecisionPolicy(policy) err = policyReq.SetDecisionPolicy(policy)
s.Require().NoError(err) s.Require().NoError(err)
accountRes, err := s.keeper.CreateGroupAccount(s.ctx, accountReq) policyRes, err := s.keeper.CreateGroupPolicy(s.ctx, policyReq)
s.Require().NoError(err) s.Require().NoError(err)
addr, err := sdk.AccAddressFromBech32(accountRes.Address) addr, err := sdk.AccAddressFromBech32(policyRes.Address)
s.Require().NoError(err) s.Require().NoError(err)
s.groupAccountAddr = addr s.groupPolicyAddr = addr
s.Require().NoError(testutil.FundAccount(s.app.BankKeeper, s.sdkCtx, s.groupAccountAddr, sdk.Coins{sdk.NewInt64Coin("test", 10000)})) s.Require().NoError(testutil.FundAccount(s.app.BankKeeper, s.sdkCtx, s.groupPolicyAddr, sdk.Coins{sdk.NewInt64Coin("test", 10000)}))
} }
func TestKeeperTestSuite(t *testing.T) { func TestKeeperTestSuite(t *testing.T) {
@ -684,7 +684,7 @@ func (s *TestSuite) TestUpdateGroupMembers() {
} }
} }
func (s *TestSuite) TestCreateGroupAccount() { func (s *TestSuite) TestCreateGroupPolicy() {
addrs := s.addrs addrs := s.addrs
addr1 := addrs[0] addr1 := addrs[0]
addr4 := addrs[3] addr4 := addrs[3]
@ -698,12 +698,12 @@ func (s *TestSuite) TestCreateGroupAccount() {
myGroupID := groupRes.GroupId myGroupID := groupRes.GroupId
specs := map[string]struct { specs := map[string]struct {
req *group.MsgCreateGroupAccount req *group.MsgCreateGroupPolicy
policy group.DecisionPolicy policy group.DecisionPolicy
expErr bool expErr bool
}{ }{
"all good": { "all good": {
req: &group.MsgCreateGroupAccount{ req: &group.MsgCreateGroupPolicy{
Admin: addr1.String(), Admin: addr1.String(),
Metadata: nil, Metadata: nil,
GroupId: myGroupID, GroupId: myGroupID,
@ -714,7 +714,7 @@ func (s *TestSuite) TestCreateGroupAccount() {
), ),
}, },
"decision policy threshold > total group weight": { "decision policy threshold > total group weight": {
req: &group.MsgCreateGroupAccount{ req: &group.MsgCreateGroupPolicy{
Admin: addr1.String(), Admin: addr1.String(),
Metadata: nil, Metadata: nil,
GroupId: myGroupID, GroupId: myGroupID,
@ -725,7 +725,7 @@ func (s *TestSuite) TestCreateGroupAccount() {
), ),
}, },
"group id does not exists": { "group id does not exists": {
req: &group.MsgCreateGroupAccount{ req: &group.MsgCreateGroupPolicy{
Admin: addr1.String(), Admin: addr1.String(),
Metadata: nil, Metadata: nil,
GroupId: 9999, GroupId: 9999,
@ -737,7 +737,7 @@ func (s *TestSuite) TestCreateGroupAccount() {
expErr: true, expErr: true,
}, },
"admin not group admin": { "admin not group admin": {
req: &group.MsgCreateGroupAccount{ req: &group.MsgCreateGroupPolicy{
Admin: addr4.String(), Admin: addr4.String(),
Metadata: nil, Metadata: nil,
GroupId: myGroupID, GroupId: myGroupID,
@ -749,7 +749,7 @@ func (s *TestSuite) TestCreateGroupAccount() {
expErr: true, expErr: true,
}, },
"metadata too long": { "metadata too long": {
req: &group.MsgCreateGroupAccount{ req: &group.MsgCreateGroupPolicy{
Admin: addr1.String(), Admin: addr1.String(),
Metadata: []byte(strings.Repeat("a", 256)), Metadata: []byte(strings.Repeat("a", 256)),
GroupId: myGroupID, GroupId: myGroupID,
@ -767,7 +767,7 @@ func (s *TestSuite) TestCreateGroupAccount() {
err := spec.req.SetDecisionPolicy(spec.policy) err := spec.req.SetDecisionPolicy(spec.policy)
s.Require().NoError(err) s.Require().NoError(err)
res, err := s.keeper.CreateGroupAccount(s.ctx, spec.req) res, err := s.keeper.CreateGroupPolicy(s.ctx, spec.req)
if spec.expErr { if spec.expErr {
s.Require().Error(err) s.Require().Error(err)
return return
@ -776,43 +776,43 @@ func (s *TestSuite) TestCreateGroupAccount() {
addr := res.Address addr := res.Address
// then all data persisted // then all data persisted
groupAccountRes, err := s.keeper.GroupAccountInfo(s.ctx, &group.QueryGroupAccountInfoRequest{Address: addr}) groupPolicyRes, err := s.keeper.GroupPolicyInfo(s.ctx, &group.QueryGroupPolicyInfoRequest{Address: addr})
s.Require().NoError(err) s.Require().NoError(err)
groupAccount := groupAccountRes.Info groupPolicy := groupPolicyRes.Info
s.Assert().Equal(addr, groupAccount.Address) s.Assert().Equal(addr, groupPolicy.Address)
s.Assert().Equal(myGroupID, groupAccount.GroupId) s.Assert().Equal(myGroupID, groupPolicy.GroupId)
s.Assert().Equal(spec.req.Admin, groupAccount.Admin) s.Assert().Equal(spec.req.Admin, groupPolicy.Admin)
s.Assert().Equal(spec.req.Metadata, groupAccount.Metadata) s.Assert().Equal(spec.req.Metadata, groupPolicy.Metadata)
s.Assert().Equal(uint64(1), groupAccount.Version) s.Assert().Equal(uint64(1), groupPolicy.Version)
s.Assert().Equal(spec.policy.(*group.ThresholdDecisionPolicy), groupAccount.GetDecisionPolicy()) s.Assert().Equal(spec.policy.(*group.ThresholdDecisionPolicy), groupPolicy.GetDecisionPolicy())
}) })
} }
} }
func (s *TestSuite) TestUpdateGroupAccountAdmin() { func (s *TestSuite) TestUpdateGroupPolicyAdmin() {
addrs := s.addrs addrs := s.addrs
addr1 := addrs[0] addr1 := addrs[0]
addr2 := addrs[1] addr2 := addrs[1]
addr5 := addrs[4] addr5 := addrs[4]
admin, newAdmin := addr1, addr2 admin, newAdmin := addr1, addr2
groupAccountAddr, myGroupID, policy := createGroupAndGroupAccount(admin, s) groupPolicyAddr, myGroupID, policy := createGroupAndGroupPolicy(admin, s)
specs := map[string]struct { specs := map[string]struct {
req *group.MsgUpdateGroupAccountAdmin req *group.MsgUpdateGroupPolicyAdmin
expGroupAccount *group.GroupAccountInfo expGroupPolicy *group.GroupPolicyInfo
expErr bool expErr bool
}{ }{
"with wrong admin": { "with wrong admin": {
req: &group.MsgUpdateGroupAccountAdmin{ req: &group.MsgUpdateGroupPolicyAdmin{
Admin: addr5.String(), Admin: addr5.String(),
Address: groupAccountAddr, Address: groupPolicyAddr,
NewAdmin: newAdmin.String(), NewAdmin: newAdmin.String(),
}, },
expGroupAccount: &group.GroupAccountInfo{ expGroupPolicy: &group.GroupPolicyInfo{
Admin: admin.String(), Admin: admin.String(),
Address: groupAccountAddr, Address: groupPolicyAddr,
GroupId: myGroupID, GroupId: myGroupID,
Metadata: nil, Metadata: nil,
Version: 2, Version: 2,
@ -820,15 +820,15 @@ func (s *TestSuite) TestUpdateGroupAccountAdmin() {
}, },
expErr: true, expErr: true,
}, },
"with wrong group account": { "with wrong group policy": {
req: &group.MsgUpdateGroupAccountAdmin{ req: &group.MsgUpdateGroupPolicyAdmin{
Admin: admin.String(), Admin: admin.String(),
Address: addr5.String(), Address: addr5.String(),
NewAdmin: newAdmin.String(), NewAdmin: newAdmin.String(),
}, },
expGroupAccount: &group.GroupAccountInfo{ expGroupPolicy: &group.GroupPolicyInfo{
Admin: admin.String(), Admin: admin.String(),
Address: groupAccountAddr, Address: groupPolicyAddr,
GroupId: myGroupID, GroupId: myGroupID,
Metadata: nil, Metadata: nil,
Version: 2, Version: 2,
@ -837,14 +837,14 @@ func (s *TestSuite) TestUpdateGroupAccountAdmin() {
expErr: true, expErr: true,
}, },
"correct data": { "correct data": {
req: &group.MsgUpdateGroupAccountAdmin{ req: &group.MsgUpdateGroupPolicyAdmin{
Admin: admin.String(), Admin: admin.String(),
Address: groupAccountAddr, Address: groupPolicyAddr,
NewAdmin: newAdmin.String(), NewAdmin: newAdmin.String(),
}, },
expGroupAccount: &group.GroupAccountInfo{ expGroupPolicy: &group.GroupPolicyInfo{
Admin: newAdmin.String(), Admin: newAdmin.String(),
Address: groupAccountAddr, Address: groupPolicyAddr,
GroupId: myGroupID, GroupId: myGroupID,
Metadata: nil, Metadata: nil,
Version: 2, Version: 2,
@ -855,74 +855,74 @@ func (s *TestSuite) TestUpdateGroupAccountAdmin() {
} }
for msg, spec := range specs { for msg, spec := range specs {
spec := spec spec := spec
err := spec.expGroupAccount.SetDecisionPolicy(policy) err := spec.expGroupPolicy.SetDecisionPolicy(policy)
s.Require().NoError(err) s.Require().NoError(err)
s.Run(msg, func() { s.Run(msg, func() {
_, err := s.keeper.UpdateGroupAccountAdmin(s.ctx, spec.req) _, err := s.keeper.UpdateGroupPolicyAdmin(s.ctx, spec.req)
if spec.expErr { if spec.expErr {
s.Require().Error(err) s.Require().Error(err)
return return
} }
s.Require().NoError(err) s.Require().NoError(err)
res, err := s.keeper.GroupAccountInfo(s.ctx, &group.QueryGroupAccountInfoRequest{ res, err := s.keeper.GroupPolicyInfo(s.ctx, &group.QueryGroupPolicyInfoRequest{
Address: groupAccountAddr, Address: groupPolicyAddr,
}) })
s.Require().NoError(err) s.Require().NoError(err)
s.Assert().Equal(spec.expGroupAccount, res.Info) s.Assert().Equal(spec.expGroupPolicy, res.Info)
}) })
} }
} }
func (s *TestSuite) TestUpdateGroupAccountMetadata() { func (s *TestSuite) TestUpdateGroupPolicyMetadata() {
addrs := s.addrs addrs := s.addrs
addr1 := addrs[0] addr1 := addrs[0]
addr5 := addrs[4] addr5 := addrs[4]
admin := addr1 admin := addr1
groupAccountAddr, myGroupID, policy := createGroupAndGroupAccount(admin, s) groupPolicyAddr, myGroupID, policy := createGroupAndGroupPolicy(admin, s)
specs := map[string]struct { specs := map[string]struct {
req *group.MsgUpdateGroupAccountMetadata req *group.MsgUpdateGroupPolicyMetadata
expGroupAccount *group.GroupAccountInfo expGroupPolicy *group.GroupPolicyInfo
expErr bool expErr bool
}{ }{
"with wrong admin": { "with wrong admin": {
req: &group.MsgUpdateGroupAccountMetadata{ req: &group.MsgUpdateGroupPolicyMetadata{
Admin: addr5.String(), Admin: addr5.String(),
Address: groupAccountAddr, Address: groupPolicyAddr,
Metadata: []byte("hello"), Metadata: []byte("hello"),
}, },
expGroupAccount: &group.GroupAccountInfo{}, expGroupPolicy: &group.GroupPolicyInfo{},
expErr: true, expErr: true,
}, },
"with wrong group account": { "with wrong group policy": {
req: &group.MsgUpdateGroupAccountMetadata{ req: &group.MsgUpdateGroupPolicyMetadata{
Admin: admin.String(), Admin: admin.String(),
Address: addr5.String(), Address: addr5.String(),
Metadata: []byte("hello"), Metadata: []byte("hello"),
}, },
expGroupAccount: &group.GroupAccountInfo{}, expGroupPolicy: &group.GroupPolicyInfo{},
expErr: true, expErr: true,
}, },
"with comment too long": { "with comment too long": {
req: &group.MsgUpdateGroupAccountMetadata{ req: &group.MsgUpdateGroupPolicyMetadata{
Admin: admin.String(), Admin: admin.String(),
Address: addr5.String(), Address: addr5.String(),
Metadata: []byte(strings.Repeat("a", 256)), Metadata: []byte(strings.Repeat("a", 256)),
}, },
expGroupAccount: &group.GroupAccountInfo{}, expGroupPolicy: &group.GroupPolicyInfo{},
expErr: true, expErr: true,
}, },
"correct data": { "correct data": {
req: &group.MsgUpdateGroupAccountMetadata{ req: &group.MsgUpdateGroupPolicyMetadata{
Admin: admin.String(), Admin: admin.String(),
Address: groupAccountAddr, Address: groupPolicyAddr,
Metadata: []byte("hello"), Metadata: []byte("hello"),
}, },
expGroupAccount: &group.GroupAccountInfo{ expGroupPolicy: &group.GroupPolicyInfo{
Admin: admin.String(), Admin: admin.String(),
Address: groupAccountAddr, Address: groupPolicyAddr,
GroupId: myGroupID, GroupId: myGroupID,
Metadata: []byte("hello"), Metadata: []byte("hello"),
Version: 2, Version: 2,
@ -933,69 +933,69 @@ func (s *TestSuite) TestUpdateGroupAccountMetadata() {
} }
for msg, spec := range specs { for msg, spec := range specs {
spec := spec spec := spec
err := spec.expGroupAccount.SetDecisionPolicy(policy) err := spec.expGroupPolicy.SetDecisionPolicy(policy)
s.Require().NoError(err) s.Require().NoError(err)
s.Run(msg, func() { s.Run(msg, func() {
_, err := s.keeper.UpdateGroupAccountMetadata(s.ctx, spec.req) _, err := s.keeper.UpdateGroupPolicyMetadata(s.ctx, spec.req)
if spec.expErr { if spec.expErr {
s.Require().Error(err) s.Require().Error(err)
return return
} }
s.Require().NoError(err) s.Require().NoError(err)
res, err := s.keeper.GroupAccountInfo(s.ctx, &group.QueryGroupAccountInfoRequest{ res, err := s.keeper.GroupPolicyInfo(s.ctx, &group.QueryGroupPolicyInfoRequest{
Address: groupAccountAddr, Address: groupPolicyAddr,
}) })
s.Require().NoError(err) s.Require().NoError(err)
s.Assert().Equal(spec.expGroupAccount, res.Info) s.Assert().Equal(spec.expGroupPolicy, res.Info)
}) })
} }
} }
func (s *TestSuite) TestUpdateGroupAccountDecisionPolicy() { func (s *TestSuite) TestUpdateGroupPolicyDecisionPolicy() {
addrs := s.addrs addrs := s.addrs
addr1 := addrs[0] addr1 := addrs[0]
addr5 := addrs[4] addr5 := addrs[4]
admin := addr1 admin := addr1
groupAccountAddr, myGroupID, policy := createGroupAndGroupAccount(admin, s) groupPolicyAddr, myGroupID, policy := createGroupAndGroupPolicy(admin, s)
specs := map[string]struct { specs := map[string]struct {
req *group.MsgUpdateGroupAccountDecisionPolicy req *group.MsgUpdateGroupPolicyDecisionPolicy
policy group.DecisionPolicy policy group.DecisionPolicy
expGroupAccount *group.GroupAccountInfo expGroupPolicy *group.GroupPolicyInfo
expErr bool expErr bool
}{ }{
"with wrong admin": { "with wrong admin": {
req: &group.MsgUpdateGroupAccountDecisionPolicy{ req: &group.MsgUpdateGroupPolicyDecisionPolicy{
Admin: addr5.String(), Admin: addr5.String(),
Address: groupAccountAddr, Address: groupPolicyAddr,
}, },
policy: policy, policy: policy,
expGroupAccount: &group.GroupAccountInfo{}, expGroupPolicy: &group.GroupPolicyInfo{},
expErr: true, expErr: true,
}, },
"with wrong group account": { "with wrong group policy": {
req: &group.MsgUpdateGroupAccountDecisionPolicy{ req: &group.MsgUpdateGroupPolicyDecisionPolicy{
Admin: admin.String(), Admin: admin.String(),
Address: addr5.String(), Address: addr5.String(),
}, },
policy: policy, policy: policy,
expGroupAccount: &group.GroupAccountInfo{}, expGroupPolicy: &group.GroupPolicyInfo{},
expErr: true, expErr: true,
}, },
"correct data": { "correct data": {
req: &group.MsgUpdateGroupAccountDecisionPolicy{ req: &group.MsgUpdateGroupPolicyDecisionPolicy{
Admin: admin.String(), Admin: admin.String(),
Address: groupAccountAddr, Address: groupPolicyAddr,
}, },
policy: group.NewThresholdDecisionPolicy( policy: group.NewThresholdDecisionPolicy(
"2", "2",
time.Duration(2)*time.Second, time.Duration(2)*time.Second,
), ),
expGroupAccount: &group.GroupAccountInfo{ expGroupPolicy: &group.GroupPolicyInfo{
Admin: admin.String(), Admin: admin.String(),
Address: groupAccountAddr, Address: groupPolicyAddr,
GroupId: myGroupID, GroupId: myGroupID,
Metadata: nil, Metadata: nil,
Version: 2, Version: 2,
@ -1006,29 +1006,29 @@ func (s *TestSuite) TestUpdateGroupAccountDecisionPolicy() {
} }
for msg, spec := range specs { for msg, spec := range specs {
spec := spec spec := spec
err := spec.expGroupAccount.SetDecisionPolicy(spec.policy) err := spec.expGroupPolicy.SetDecisionPolicy(spec.policy)
s.Require().NoError(err) s.Require().NoError(err)
err = spec.req.SetDecisionPolicy(spec.policy) err = spec.req.SetDecisionPolicy(spec.policy)
s.Require().NoError(err) s.Require().NoError(err)
s.Run(msg, func() { s.Run(msg, func() {
_, err := s.keeper.UpdateGroupAccountDecisionPolicy(s.ctx, spec.req) _, err := s.keeper.UpdateGroupPolicyDecisionPolicy(s.ctx, spec.req)
if spec.expErr { if spec.expErr {
s.Require().Error(err) s.Require().Error(err)
return return
} }
s.Require().NoError(err) s.Require().NoError(err)
res, err := s.keeper.GroupAccountInfo(s.ctx, &group.QueryGroupAccountInfoRequest{ res, err := s.keeper.GroupPolicyInfo(s.ctx, &group.QueryGroupPolicyInfoRequest{
Address: groupAccountAddr, Address: groupPolicyAddr,
}) })
s.Require().NoError(err) s.Require().NoError(err)
s.Assert().Equal(spec.expGroupAccount, res.Info) s.Assert().Equal(spec.expGroupPolicy, res.Info)
}) })
} }
} }
func (s *TestSuite) TestGroupAccountsByAdminOrGroup() { func (s *TestSuite) TestGroupPoliciesByAdminOrGroup() {
addrs := s.addrs addrs := s.addrs
addr2 := addrs[1] addr2 := addrs[1]
@ -1053,19 +1053,19 @@ func (s *TestSuite) TestGroupAccountsByAdminOrGroup() {
} }
count := 2 count := 2
expectAccs := make([]*group.GroupAccountInfo, count) expectAccs := make([]*group.GroupPolicyInfo, count)
for i := range expectAccs { for i := range expectAccs {
req := &group.MsgCreateGroupAccount{ req := &group.MsgCreateGroupPolicy{
Admin: admin.String(), Admin: admin.String(),
Metadata: nil, Metadata: nil,
GroupId: myGroupID, GroupId: myGroupID,
} }
err := req.SetDecisionPolicy(policies[i]) err := req.SetDecisionPolicy(policies[i])
s.Require().NoError(err) s.Require().NoError(err)
res, err := s.keeper.CreateGroupAccount(s.ctx, req) res, err := s.keeper.CreateGroupPolicy(s.ctx, req)
s.Require().NoError(err) s.Require().NoError(err)
expectAcc := &group.GroupAccountInfo{ expectAcc := &group.GroupPolicyInfo{
Address: res.Address, Address: res.Address,
Admin: admin.String(), Admin: admin.String(),
Metadata: nil, Metadata: nil,
@ -1078,40 +1078,40 @@ func (s *TestSuite) TestGroupAccountsByAdminOrGroup() {
} }
sort.Slice(expectAccs, func(i, j int) bool { return expectAccs[i].Address < expectAccs[j].Address }) sort.Slice(expectAccs, func(i, j int) bool { return expectAccs[i].Address < expectAccs[j].Address })
// query group account by group // query group policy by group
accountsByGroupRes, err := s.keeper.GroupAccountsByGroup(s.ctx, &group.QueryGroupAccountsByGroupRequest{ policiesByGroupRes, err := s.keeper.GroupPoliciesByGroup(s.ctx, &group.QueryGroupPoliciesByGroupRequest{
GroupId: myGroupID, GroupId: myGroupID,
}) })
s.Require().NoError(err) s.Require().NoError(err)
accounts := accountsByGroupRes.GroupAccounts policyAccs := policiesByGroupRes.GroupPolicies
s.Require().Equal(len(accounts), count) s.Require().Equal(len(policyAccs), count)
// we reorder accounts by address to be able to compare them // we reorder policyAccs by address to be able to compare them
sort.Slice(accounts, func(i, j int) bool { return accounts[i].Address < accounts[j].Address }) sort.Slice(policyAccs, func(i, j int) bool { return policyAccs[i].Address < policyAccs[j].Address })
for i := range accounts { for i := range policyAccs {
s.Assert().Equal(accounts[i].Address, expectAccs[i].Address) s.Assert().Equal(policyAccs[i].Address, expectAccs[i].Address)
s.Assert().Equal(accounts[i].GroupId, expectAccs[i].GroupId) s.Assert().Equal(policyAccs[i].GroupId, expectAccs[i].GroupId)
s.Assert().Equal(accounts[i].Admin, expectAccs[i].Admin) s.Assert().Equal(policyAccs[i].Admin, expectAccs[i].Admin)
s.Assert().Equal(accounts[i].Metadata, expectAccs[i].Metadata) s.Assert().Equal(policyAccs[i].Metadata, expectAccs[i].Metadata)
s.Assert().Equal(accounts[i].Version, expectAccs[i].Version) s.Assert().Equal(policyAccs[i].Version, expectAccs[i].Version)
s.Assert().Equal(accounts[i].GetDecisionPolicy(), expectAccs[i].GetDecisionPolicy()) s.Assert().Equal(policyAccs[i].GetDecisionPolicy(), expectAccs[i].GetDecisionPolicy())
} }
// query group account by admin // query group policy by admin
accountsByAdminRes, err := s.keeper.GroupAccountsByAdmin(s.ctx, &group.QueryGroupAccountsByAdminRequest{ policiesByAdminRes, err := s.keeper.GroupPoliciesByAdmin(s.ctx, &group.QueryGroupPoliciesByAdminRequest{
Admin: admin.String(), Admin: admin.String(),
}) })
s.Require().NoError(err) s.Require().NoError(err)
accounts = accountsByAdminRes.GroupAccounts policyAccs = policiesByAdminRes.GroupPolicies
s.Require().Equal(len(accounts), count) s.Require().Equal(len(policyAccs), count)
// we reorder accounts by address to be able to compare them // we reorder policyAccs by address to be able to compare them
sort.Slice(accounts, func(i, j int) bool { return accounts[i].Address < accounts[j].Address }) sort.Slice(policyAccs, func(i, j int) bool { return policyAccs[i].Address < policyAccs[j].Address })
for i := range accounts { for i := range policyAccs {
s.Assert().Equal(accounts[i].Address, expectAccs[i].Address) s.Assert().Equal(policyAccs[i].Address, expectAccs[i].Address)
s.Assert().Equal(accounts[i].GroupId, expectAccs[i].GroupId) s.Assert().Equal(policyAccs[i].GroupId, expectAccs[i].GroupId)
s.Assert().Equal(accounts[i].Admin, expectAccs[i].Admin) s.Assert().Equal(policyAccs[i].Admin, expectAccs[i].Admin)
s.Assert().Equal(accounts[i].Metadata, expectAccs[i].Metadata) s.Assert().Equal(policyAccs[i].Metadata, expectAccs[i].Metadata)
s.Assert().Equal(accounts[i].Version, expectAccs[i].Version) s.Assert().Equal(policyAccs[i].Version, expectAccs[i].Version)
s.Assert().Equal(accounts[i].GetDecisionPolicy(), expectAccs[i].GetDecisionPolicy()) s.Assert().Equal(policyAccs[i].GetDecisionPolicy(), expectAccs[i].GetDecisionPolicy())
} }
} }
@ -1123,15 +1123,15 @@ func (s *TestSuite) TestCreateProposal() {
addr5 := addrs[4] addr5 := addrs[4]
myGroupID := s.groupID myGroupID := s.groupID
accountAddr := s.groupAccountAddr accountAddr := s.groupPolicyAddr
msgSend := &banktypes.MsgSend{ msgSend := &banktypes.MsgSend{
FromAddress: s.groupAccountAddr.String(), FromAddress: s.groupPolicyAddr.String(),
ToAddress: addr2.String(), ToAddress: addr2.String(),
Amount: sdk.Coins{sdk.NewInt64Coin("test", 100)}, Amount: sdk.Coins{sdk.NewInt64Coin("test", 100)},
} }
accountReq := &group.MsgCreateGroupAccount{ policyReq := &group.MsgCreateGroupPolicy{
Admin: addr1.String(), Admin: addr1.String(),
GroupId: myGroupID, GroupId: myGroupID,
Metadata: nil, Metadata: nil,
@ -1140,9 +1140,9 @@ func (s *TestSuite) TestCreateProposal() {
"100", "100",
time.Second, time.Second,
) )
err := accountReq.SetDecisionPolicy(policy) err := policyReq.SetDecisionPolicy(policy)
s.Require().NoError(err) s.Require().NoError(err)
bigThresholdRes, err := s.keeper.CreateGroupAccount(s.ctx, accountReq) bigThresholdRes, err := s.keeper.CreateGroupPolicy(s.ctx, policyReq)
s.Require().NoError(err) s.Require().NoError(err)
bigThresholdAddr := bigThresholdRes.Address bigThresholdAddr := bigThresholdRes.Address
@ -1194,7 +1194,7 @@ func (s *TestSuite) TestCreateProposal() {
expErr: true, expErr: true,
postRun: func(sdkCtx sdk.Context) {}, postRun: func(sdkCtx sdk.Context) {},
}, },
"group account required": { "group policy required": {
req: &group.MsgCreateProposal{ req: &group.MsgCreateProposal{
Metadata: nil, Metadata: nil,
Proposers: []string{addr2.String()}, Proposers: []string{addr2.String()},
@ -1202,7 +1202,7 @@ func (s *TestSuite) TestCreateProposal() {
expErr: true, expErr: true,
postRun: func(sdkCtx sdk.Context) {}, postRun: func(sdkCtx sdk.Context) {},
}, },
"existing group account required": { "existing group policy required": {
req: &group.MsgCreateProposal{ req: &group.MsgCreateProposal{
Address: addr1.String(), Address: addr1.String(),
Proposers: []string{addr2.String()}, Proposers: []string{addr2.String()},
@ -1243,7 +1243,7 @@ func (s *TestSuite) TestCreateProposal() {
expErr: true, expErr: true,
postRun: func(sdkCtx sdk.Context) {}, postRun: func(sdkCtx sdk.Context) {},
}, },
"reject msgs that are not authz by group account": { "reject msgs that are not authz by group policy": {
req: &group.MsgCreateProposal{ req: &group.MsgCreateProposal{
Address: accountAddr.String(), Address: accountAddr.String(),
Metadata: nil, Metadata: nil,
@ -1323,7 +1323,7 @@ func (s *TestSuite) TestCreateProposal() {
s.Assert().Equal(spec.req.Proposers, proposal.Proposers) s.Assert().Equal(spec.req.Proposers, proposal.Proposers)
s.Assert().Equal(s.blockTime, proposal.SubmittedAt) s.Assert().Equal(s.blockTime, proposal.SubmittedAt)
s.Assert().Equal(uint64(1), proposal.GroupVersion) s.Assert().Equal(uint64(1), proposal.GroupVersion)
s.Assert().Equal(uint64(1), proposal.GroupAccountVersion) s.Assert().Equal(uint64(1), proposal.GroupPolicyVersion)
s.Assert().Equal(spec.expProposal.Status, proposal.Status) s.Assert().Equal(spec.expProposal.Status, proposal.Status)
s.Assert().Equal(spec.expProposal.Result, proposal.Result) s.Assert().Equal(spec.expProposal.Result, proposal.Result)
s.Assert().Equal(spec.expProposal.VoteState, proposal.VoteState) s.Assert().Equal(spec.expProposal.VoteState, proposal.VoteState)
@ -1364,21 +1364,21 @@ func (s *TestSuite) TestVote() {
"2", "2",
time.Duration(2), time.Duration(2),
) )
accountReq := &group.MsgCreateGroupAccount{ policyReq := &group.MsgCreateGroupPolicy{
Admin: addr1.String(), Admin: addr1.String(),
GroupId: myGroupID, GroupId: myGroupID,
Metadata: nil, Metadata: nil,
} }
err = accountReq.SetDecisionPolicy(policy) err = policyReq.SetDecisionPolicy(policy)
s.Require().NoError(err) s.Require().NoError(err)
accountRes, err := s.keeper.CreateGroupAccount(s.ctx, accountReq) policyRes, err := s.keeper.CreateGroupPolicy(s.ctx, policyReq)
s.Require().NoError(err) s.Require().NoError(err)
accountAddr := accountRes.Address accountAddr := policyRes.Address
groupAccount, err := sdk.AccAddressFromBech32(accountAddr) groupPolicy, err := sdk.AccAddressFromBech32(accountAddr)
s.Require().NoError(err) s.Require().NoError(err)
s.Require().NotNil(groupAccount) s.Require().NotNil(groupPolicy)
s.Require().NoError(testutil.FundAccount(s.app.BankKeeper, s.sdkCtx, groupAccount, sdk.Coins{sdk.NewInt64Coin("test", 10000)})) s.Require().NoError(testutil.FundAccount(s.app.BankKeeper, s.sdkCtx, groupPolicy, sdk.Coins{sdk.NewInt64Coin("test", 10000)}))
req := &group.MsgCreateProposal{ req := &group.MsgCreateProposal{
Address: accountAddr, Address: accountAddr,
@ -1397,8 +1397,8 @@ func (s *TestSuite) TestVote() {
s.Require().NoError(err) s.Require().NoError(err)
myProposalID := proposalRes.ProposalId myProposalID := proposalRes.ProposalId
// proposals by group account // proposals by group policy
proposalsRes, err := s.keeper.ProposalsByGroupAccount(s.ctx, &group.QueryProposalsByGroupAccountRequest{ proposalsRes, err := s.keeper.ProposalsByGroupPolicy(s.ctx, &group.QueryProposalsByGroupPolicyRequest{
Address: accountAddr, Address: accountAddr,
}) })
s.Require().NoError(err) s.Require().NoError(err)
@ -1410,7 +1410,7 @@ func (s *TestSuite) TestVote() {
s.Assert().Equal(s.blockTime, proposals[0].SubmittedAt) s.Assert().Equal(s.blockTime, proposals[0].SubmittedAt)
s.Assert().Equal(uint64(1), proposals[0].GroupVersion) s.Assert().Equal(uint64(1), proposals[0].GroupVersion)
s.Assert().Equal(uint64(1), proposals[0].GroupAccountVersion) s.Assert().Equal(uint64(1), proposals[0].GroupPolicyVersion)
s.Assert().Equal(group.ProposalStatusSubmitted, proposals[0].Status) s.Assert().Equal(group.ProposalStatusSubmitted, proposals[0].Status)
s.Assert().Equal(group.ProposalResultUnfinalized, proposals[0].Result) s.Assert().Equal(group.ProposalResultUnfinalized, proposals[0].Result)
s.Assert().Equal(group.Tally{ s.Assert().Equal(group.Tally{
@ -1465,7 +1465,7 @@ func (s *TestSuite) TestVote() {
expResult: group.ProposalResultAccepted, expResult: group.ProposalResultAccepted,
expExecutorResult: group.ProposalExecutorResultSuccess, expExecutorResult: group.ProposalExecutorResultSuccess,
postRun: func(sdkCtx sdk.Context) { postRun: func(sdkCtx sdk.Context) {
fromBalances := s.app.BankKeeper.GetAllBalances(sdkCtx, groupAccount) fromBalances := s.app.BankKeeper.GetAllBalances(sdkCtx, groupPolicy)
s.Require().Contains(fromBalances, sdk.NewInt64Coin("test", 9900)) s.Require().Contains(fromBalances, sdk.NewInt64Coin("test", 9900))
toBalances := s.app.BankKeeper.GetAllBalances(sdkCtx, addr5) toBalances := s.app.BankKeeper.GetAllBalances(sdkCtx, addr5)
s.Require().Contains(toBalances, sdk.NewInt64Coin("test", 100)) s.Require().Contains(toBalances, sdk.NewInt64Coin("test", 100))
@ -1696,9 +1696,9 @@ func (s *TestSuite) TestVote() {
Choice: group.Choice_CHOICE_NO, Choice: group.Choice_CHOICE_NO,
}, },
doBefore: func(ctx context.Context) { doBefore: func(ctx context.Context) {
m, err := group.NewMsgUpdateGroupAccountDecisionPolicyRequest( m, err := group.NewMsgUpdateGroupPolicyDecisionPolicyRequest(
addr1, addr1,
groupAccount, groupPolicy,
&group.ThresholdDecisionPolicy{ &group.ThresholdDecisionPolicy{
Threshold: "1", Threshold: "1",
Timeout: time.Second, Timeout: time.Second,
@ -1706,7 +1706,7 @@ func (s *TestSuite) TestVote() {
) )
s.Require().NoError(err) s.Require().NoError(err)
_, err = s.keeper.UpdateGroupAccountDecisionPolicy(ctx, m) _, err = s.keeper.UpdateGroupPolicyDecisionPolicy(ctx, m)
s.Require().NoError(err) s.Require().NoError(err)
}, },
expErr: true, expErr: true,
@ -1797,12 +1797,12 @@ func (s *TestSuite) TestExecProposal() {
addr2 := addrs[1] addr2 := addrs[1]
msgSend1 := &banktypes.MsgSend{ msgSend1 := &banktypes.MsgSend{
FromAddress: s.groupAccountAddr.String(), FromAddress: s.groupPolicyAddr.String(),
ToAddress: addr2.String(), ToAddress: addr2.String(),
Amount: sdk.Coins{sdk.NewInt64Coin("test", 100)}, Amount: sdk.Coins{sdk.NewInt64Coin("test", 100)},
} }
msgSend2 := &banktypes.MsgSend{ msgSend2 := &banktypes.MsgSend{
FromAddress: s.groupAccountAddr.String(), FromAddress: s.groupPolicyAddr.String(),
ToAddress: addr2.String(), ToAddress: addr2.String(),
Amount: sdk.Coins{sdk.NewInt64Coin("test", 10001)}, Amount: sdk.Coins{sdk.NewInt64Coin("test", 10001)},
} }
@ -1903,13 +1903,13 @@ func (s *TestSuite) TestExecProposal() {
expProposalResult: group.ProposalResultUnfinalized, expProposalResult: group.ProposalResultUnfinalized,
expExecutorResult: group.ProposalExecutorResultNotRun, expExecutorResult: group.ProposalExecutorResultNotRun,
}, },
"with group account modified before tally": { "with group policy modified before tally": {
setupProposal: func(ctx context.Context) uint64 { setupProposal: func(ctx context.Context) uint64 {
myProposalID := createProposal(ctx, s, []sdk.Msg{msgSend1}, proposers) myProposalID := createProposal(ctx, s, []sdk.Msg{msgSend1}, proposers)
_, err := s.keeper.UpdateGroupAccountMetadata(ctx, &group.MsgUpdateGroupAccountMetadata{ _, err := s.keeper.UpdateGroupPolicyMetadata(ctx, &group.MsgUpdateGroupPolicyMetadata{
Admin: addr1.String(), Admin: addr1.String(),
Address: s.groupAccountAddr.String(), Address: s.groupPolicyAddr.String(),
Metadata: []byte("group account modified before tally"), Metadata: []byte("group policy modified before tally"),
}) })
s.Require().NoError(err) s.Require().NoError(err)
return myProposalID return myProposalID
@ -1950,7 +1950,7 @@ func (s *TestSuite) TestExecProposal() {
_, err := s.keeper.Exec(ctx, &group.MsgExec{Signer: addr1.String(), ProposalId: myProposalID}) _, err := s.keeper.Exec(ctx, &group.MsgExec{Signer: addr1.String(), ProposalId: myProposalID})
s.Require().NoError(err) s.Require().NoError(err)
sdkCtx := sdk.UnwrapSDKContext(ctx) sdkCtx := sdk.UnwrapSDKContext(ctx)
s.Require().NoError(testutil.FundAccount(s.app.BankKeeper, sdkCtx, s.groupAccountAddr, sdk.Coins{sdk.NewInt64Coin("test", 10002)})) s.Require().NoError(testutil.FundAccount(s.app.BankKeeper, sdkCtx, s.groupPolicyAddr, sdk.Coins{sdk.NewInt64Coin("test", 10002)}))
return myProposalID return myProposalID
}, },
@ -1996,7 +1996,7 @@ func (s *TestSuite) TestExecProposal() {
s.Assert().Equal(exp, got) s.Assert().Equal(exp, got)
if spec.expBalance { if spec.expBalance {
fromBalances := s.app.BankKeeper.GetAllBalances(sdkCtx, s.groupAccountAddr) fromBalances := s.app.BankKeeper.GetAllBalances(sdkCtx, s.groupPolicyAddr)
s.Require().Contains(fromBalances, spec.expFromBalances) s.Require().Contains(fromBalances, spec.expFromBalances)
toBalances := s.app.BankKeeper.GetAllBalances(sdkCtx, addr2) toBalances := s.app.BankKeeper.GetAllBalances(sdkCtx, addr2)
s.Require().Contains(toBalances, spec.expToBalances) s.Require().Contains(toBalances, spec.expToBalances)
@ -2009,7 +2009,7 @@ func createProposal(
ctx context.Context, s *TestSuite, msgs []sdk.Msg, ctx context.Context, s *TestSuite, msgs []sdk.Msg,
proposers []string) uint64 { proposers []string) uint64 {
proposalReq := &group.MsgCreateProposal{ proposalReq := &group.MsgCreateProposal{
Address: s.groupAccountAddr.String(), Address: s.groupPolicyAddr.String(),
Proposers: proposers, Proposers: proposers,
Metadata: nil, Metadata: nil,
} }
@ -2036,7 +2036,7 @@ func createProposalAndVote(
return myProposalID return myProposalID
} }
func createGroupAndGroupAccount( func createGroupAndGroupPolicy(
admin sdk.AccAddress, admin sdk.AccAddress,
s *TestSuite, s *TestSuite,
) (string, uint64, group.DecisionPolicy) { ) (string, uint64, group.DecisionPolicy) {
@ -2048,7 +2048,7 @@ func createGroupAndGroupAccount(
s.Require().NoError(err) s.Require().NoError(err)
myGroupID := groupRes.GroupId myGroupID := groupRes.GroupId
groupAccount := &group.MsgCreateGroupAccount{ groupPolicy := &group.MsgCreateGroupPolicy{
Admin: admin.String(), Admin: admin.String(),
GroupId: myGroupID, GroupId: myGroupID,
Metadata: nil, Metadata: nil,
@ -2058,11 +2058,11 @@ func createGroupAndGroupAccount(
"1", "1",
time.Second, time.Second,
) )
err = groupAccount.SetDecisionPolicy(policy) err = groupPolicy.SetDecisionPolicy(policy)
s.Require().NoError(err) s.Require().NoError(err)
groupAccountRes, err := s.keeper.CreateGroupAccount(s.ctx, groupAccount) groupPolicyRes, err := s.keeper.CreateGroupPolicy(s.ctx, groupPolicy)
s.Require().NoError(err) s.Require().NoError(err)
return groupAccountRes.Address, myGroupID, policy return groupPolicyRes.Address, myGroupID, policy
} }

View File

@ -231,7 +231,7 @@ func (k Keeper) UpdateGroupMetadata(goCtx context.Context, req *group.MsgUpdateG
return &group.MsgUpdateGroupMetadataResponse{}, nil return &group.MsgUpdateGroupMetadataResponse{}, nil
} }
func (k Keeper) CreateGroupAccount(goCtx context.Context, req *group.MsgCreateGroupAccount) (*group.MsgCreateGroupAccountResponse, error) { func (k Keeper) CreateGroupPolicy(goCtx context.Context, req *group.MsgCreateGroupPolicy) (*group.MsgCreateGroupPolicyResponse, error) {
ctx := sdk.UnwrapSDKContext(goCtx) ctx := sdk.UnwrapSDKContext(goCtx)
admin, err := sdk.AccAddressFromBech32(req.GetAdmin()) admin, err := sdk.AccAddressFromBech32(req.GetAdmin())
if err != nil { if err != nil {
@ -241,7 +241,7 @@ func (k Keeper) CreateGroupAccount(goCtx context.Context, req *group.MsgCreateGr
groupID := req.GetGroupID() groupID := req.GetGroupID()
metadata := req.GetMetadata() metadata := req.GetMetadata()
if err := assertMetadataLength(metadata, "group account metadata"); err != nil { if err := assertMetadataLength(metadata, "group policy metadata"); err != nil {
return nil, err return nil, err
} }
@ -253,20 +253,20 @@ func (k Keeper) CreateGroupAccount(goCtx context.Context, req *group.MsgCreateGr
if err != nil { if err != nil {
return nil, sdkerrors.Wrap(err, "group admin") return nil, sdkerrors.Wrap(err, "group admin")
} }
// Only current group admin is authorized to create a group account for this // Only current group admin is authorized to create a group policy for this
if !groupAdmin.Equals(admin) { if !groupAdmin.Equals(admin) {
return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "not group admin") return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "not group admin")
} }
// Generate group account address. // Generate account address of group policy.
var accountAddr sdk.AccAddress var accountAddr sdk.AccAddress
// loop here in the rare case of a collision // loop here in the rare case of a collision
for { for {
nextAccVal := k.groupAccountSeq.NextVal(ctx.KVStore(k.key)) nextAccVal := k.groupPolicySeq.NextVal(ctx.KVStore(k.key))
var buf = make([]byte, 8) var buf = make([]byte, 8)
binary.BigEndian.PutUint64(buf, nextAccVal) binary.BigEndian.PutUint64(buf, nextAccVal)
parentAcc := address.Module(group.ModuleName, []byte{GroupAccountTablePrefix}) parentAcc := address.Module(group.ModuleName, []byte{GroupPolicyTablePrefix})
accountAddr = address.Derive(parentAcc, buf) accountAddr = address.Derive(parentAcc, buf)
if k.accKeeper.GetAccount(ctx, accountAddr) != nil { if k.accKeeper.GetAccount(ctx, accountAddr) != nil {
@ -284,7 +284,7 @@ func (k Keeper) CreateGroupAccount(goCtx context.Context, req *group.MsgCreateGr
break break
} }
groupAccount, err := group.NewGroupAccountInfo( groupPolicy, err := group.NewGroupPolicyInfo(
accountAddr, accountAddr,
groupID, groupID,
admin, admin,
@ -296,83 +296,83 @@ func (k Keeper) CreateGroupAccount(goCtx context.Context, req *group.MsgCreateGr
return nil, err return nil, err
} }
if err := k.groupAccountTable.Create(ctx.KVStore(k.key), &groupAccount); err != nil { if err := k.groupPolicyTable.Create(ctx.KVStore(k.key), &groupPolicy); err != nil {
return nil, sdkerrors.Wrap(err, "could not create group account") return nil, sdkerrors.Wrap(err, "could not create group policy")
} }
err = ctx.EventManager().EmitTypedEvent(&group.EventCreateGroupAccount{Address: accountAddr.String()}) err = ctx.EventManager().EmitTypedEvent(&group.EventCreateGroupPolicy{Address: accountAddr.String()})
if err != nil { if err != nil {
return nil, err return nil, err
} }
return &group.MsgCreateGroupAccountResponse{Address: accountAddr.String()}, nil return &group.MsgCreateGroupPolicyResponse{Address: accountAddr.String()}, nil
} }
func (k Keeper) UpdateGroupAccountAdmin(goCtx context.Context, req *group.MsgUpdateGroupAccountAdmin) (*group.MsgUpdateGroupAccountAdminResponse, error) { func (k Keeper) UpdateGroupPolicyAdmin(goCtx context.Context, req *group.MsgUpdateGroupPolicyAdmin) (*group.MsgUpdateGroupPolicyAdminResponse, error) {
ctx := sdk.UnwrapSDKContext(goCtx) ctx := sdk.UnwrapSDKContext(goCtx)
action := func(groupAccount *group.GroupAccountInfo) error { action := func(groupPolicy *group.GroupPolicyInfo) error {
groupAccount.Admin = req.NewAdmin groupPolicy.Admin = req.NewAdmin
groupAccount.Version++ groupPolicy.Version++
return k.groupAccountTable.Update(ctx.KVStore(k.key), groupAccount) return k.groupPolicyTable.Update(ctx.KVStore(k.key), groupPolicy)
} }
err := k.doUpdateGroupAccount(ctx, req.Address, req.Admin, action, "group account admin updated") err := k.doUpdateGroupPolicy(ctx, req.Address, req.Admin, action, "group policy admin updated")
if err != nil { if err != nil {
return nil, err return nil, err
} }
return &group.MsgUpdateGroupAccountAdminResponse{}, nil return &group.MsgUpdateGroupPolicyAdminResponse{}, nil
} }
func (k Keeper) UpdateGroupAccountDecisionPolicy(goCtx context.Context, req *group.MsgUpdateGroupAccountDecisionPolicy) (*group.MsgUpdateGroupAccountDecisionPolicyResponse, error) { func (k Keeper) UpdateGroupPolicyDecisionPolicy(goCtx context.Context, req *group.MsgUpdateGroupPolicyDecisionPolicy) (*group.MsgUpdateGroupPolicyDecisionPolicyResponse, error) {
ctx := sdk.UnwrapSDKContext(goCtx) ctx := sdk.UnwrapSDKContext(goCtx)
policy := req.GetDecisionPolicy() policy := req.GetDecisionPolicy()
action := func(groupAccount *group.GroupAccountInfo) error { action := func(groupPolicy *group.GroupPolicyInfo) error {
err := groupAccount.SetDecisionPolicy(policy) err := groupPolicy.SetDecisionPolicy(policy)
if err != nil { if err != nil {
return err return err
} }
groupAccount.Version++ groupPolicy.Version++
return k.groupAccountTable.Update(ctx.KVStore(k.key), groupAccount) return k.groupPolicyTable.Update(ctx.KVStore(k.key), groupPolicy)
} }
err := k.doUpdateGroupAccount(ctx, req.Address, req.Admin, action, "group account decision policy updated") err := k.doUpdateGroupPolicy(ctx, req.Address, req.Admin, action, "group policy's decision policy updated")
if err != nil { if err != nil {
return nil, err return nil, err
} }
return &group.MsgUpdateGroupAccountDecisionPolicyResponse{}, nil return &group.MsgUpdateGroupPolicyDecisionPolicyResponse{}, nil
} }
func (k Keeper) UpdateGroupAccountMetadata(goCtx context.Context, req *group.MsgUpdateGroupAccountMetadata) (*group.MsgUpdateGroupAccountMetadataResponse, error) { func (k Keeper) UpdateGroupPolicyMetadata(goCtx context.Context, req *group.MsgUpdateGroupPolicyMetadata) (*group.MsgUpdateGroupPolicyMetadataResponse, error) {
ctx := sdk.UnwrapSDKContext(goCtx) ctx := sdk.UnwrapSDKContext(goCtx)
metadata := req.GetMetadata() metadata := req.GetMetadata()
action := func(groupAccount *group.GroupAccountInfo) error { action := func(groupPolicy *group.GroupPolicyInfo) error {
groupAccount.Metadata = metadata groupPolicy.Metadata = metadata
groupAccount.Version++ groupPolicy.Version++
return k.groupAccountTable.Update(ctx.KVStore(k.key), groupAccount) return k.groupPolicyTable.Update(ctx.KVStore(k.key), groupPolicy)
} }
if err := assertMetadataLength(metadata, "group account metadata"); err != nil { if err := assertMetadataLength(metadata, "group policy metadata"); err != nil {
return nil, err return nil, err
} }
err := k.doUpdateGroupAccount(ctx, req.Address, req.Admin, action, "group account metadata updated") err := k.doUpdateGroupPolicy(ctx, req.Address, req.Admin, action, "group policy metadata updated")
if err != nil { if err != nil {
return nil, err return nil, err
} }
return &group.MsgUpdateGroupAccountMetadataResponse{}, nil return &group.MsgUpdateGroupPolicyMetadataResponse{}, nil
} }
func (k Keeper) CreateProposal(goCtx context.Context, req *group.MsgCreateProposal) (*group.MsgCreateProposalResponse, error) { func (k Keeper) CreateProposal(goCtx context.Context, req *group.MsgCreateProposal) (*group.MsgCreateProposalResponse, error) {
ctx := sdk.UnwrapSDKContext(goCtx) ctx := sdk.UnwrapSDKContext(goCtx)
accountAddress, err := sdk.AccAddressFromBech32(req.Address) accountAddress, err := sdk.AccAddressFromBech32(req.Address)
if err != nil { if err != nil {
return nil, sdkerrors.Wrap(err, "request group account") return nil, sdkerrors.Wrap(err, "request account address of group policy")
} }
metadata := req.Metadata metadata := req.Metadata
proposers := req.Proposers proposers := req.Proposers
@ -382,14 +382,14 @@ func (k Keeper) CreateProposal(goCtx context.Context, req *group.MsgCreatePropos
return nil, err return nil, err
} }
account, err := k.getGroupAccountInfo(ctx, req.Address) policyAcc, err := k.getGroupPolicyInfo(ctx, req.Address)
if err != nil { if err != nil {
return nil, sdkerrors.Wrap(err, "load group account") return nil, sdkerrors.Wrap(err, "load group policy")
} }
g, err := k.getGroupInfo(ctx, account.GroupId) g, err := k.getGroupInfo(ctx, policyAcc.GroupId)
if err != nil { if err != nil {
return nil, sdkerrors.Wrap(err, "get group by account") return nil, sdkerrors.Wrap(err, "get group by groupId of group policy")
} }
// Only members of the group can submit a new proposal. // Only members of the group can submit a new proposal.
@ -399,12 +399,12 @@ func (k Keeper) CreateProposal(goCtx context.Context, req *group.MsgCreatePropos
} }
} }
// Check that if the messages require signers, they are all equal to the given group account. // Check that if the messages require signers, they are all equal to the given account address of group policy.
if err := ensureMsgAuthZ(msgs, accountAddress); err != nil { if err := ensureMsgAuthZ(msgs, accountAddress); err != nil {
return nil, err return nil, err
} }
policy := account.GetDecisionPolicy() policy := policyAcc.GetDecisionPolicy()
if policy == nil { if policy == nil {
return nil, sdkerrors.Wrap(errors.ErrEmpty, "nil policy") return nil, sdkerrors.Wrap(errors.ErrEmpty, "nil policy")
} }
@ -421,17 +421,17 @@ func (k Keeper) CreateProposal(goCtx context.Context, req *group.MsgCreatePropos
window := timeout window := timeout
m := &group.Proposal{ m := &group.Proposal{
ProposalId: k.proposalTable.Sequence().PeekNextVal(ctx.KVStore(k.key)), ProposalId: k.proposalTable.Sequence().PeekNextVal(ctx.KVStore(k.key)),
Address: req.Address, Address: req.Address,
Metadata: metadata, Metadata: metadata,
Proposers: proposers, Proposers: proposers,
SubmittedAt: ctx.BlockTime(), SubmittedAt: ctx.BlockTime(),
GroupVersion: g.Version, GroupVersion: g.Version,
GroupAccountVersion: account.Version, GroupPolicyVersion: policyAcc.Version,
Result: group.ProposalResultUnfinalized, Result: group.ProposalResultUnfinalized,
Status: group.ProposalStatusSubmitted, Status: group.ProposalStatusSubmitted,
ExecutorResult: group.ProposalExecutorResultNotRun, ExecutorResult: group.ProposalExecutorResultNotRun,
Timeout: ctx.BlockTime().Add(window), Timeout: ctx.BlockTime().Add(window),
VoteState: group.Tally{ VoteState: group.Tally{
YesCount: "0", YesCount: "0",
NoCount: "0", NoCount: "0",
@ -471,7 +471,7 @@ func (k Keeper) CreateProposal(goCtx context.Context, req *group.MsgCreatePropos
_, err = k.Exec(sdk.WrapSDKContext(ctx), &group.MsgExec{ _, err = k.Exec(sdk.WrapSDKContext(ctx), &group.MsgExec{
ProposalId: id, ProposalId: id,
// We consider the first proposer as the MsgExecRequest signer // We consider the first proposer as the MsgExecRequest signer
// but that could be revisited (eg using the group account) // but that could be revisited (eg using the group policy)
Signer: proposers[0], Signer: proposers[0],
}) })
if err != nil { if err != nil {
@ -512,18 +512,18 @@ func (k Keeper) Vote(goCtx context.Context, req *group.MsgVote) (*group.MsgVoteR
return nil, sdkerrors.Wrap(errors.ErrExpired, "voting period has ended already") return nil, sdkerrors.Wrap(errors.ErrExpired, "voting period has ended already")
} }
var accountInfo group.GroupAccountInfo var policyInfo group.GroupPolicyInfo
// Ensure that group account hasn't been modified since the proposal submission. // Ensure that group policy hasn't been modified since the proposal submission.
if accountInfo, err = k.getGroupAccountInfo(ctx, proposal.Address); err != nil { if policyInfo, err = k.getGroupPolicyInfo(ctx, proposal.Address); err != nil {
return nil, sdkerrors.Wrap(err, "load group account") return nil, sdkerrors.Wrap(err, "load group policy")
} }
if proposal.GroupAccountVersion != accountInfo.Version { if proposal.GroupPolicyVersion != policyInfo.Version {
return nil, sdkerrors.Wrap(errors.ErrModified, "group account was modified") return nil, sdkerrors.Wrap(errors.ErrModified, "group policy was modified")
} }
// Ensure that group hasn't been modified since the proposal submission. // Ensure that group hasn't been modified since the proposal submission.
electorate, err := k.getGroupInfo(ctx, accountInfo.GroupId) electorate, err := k.getGroupInfo(ctx, policyInfo.GroupId)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -555,7 +555,7 @@ func (k Keeper) Vote(goCtx context.Context, req *group.MsgVote) (*group.MsgVoteR
} }
// Run tally with new votes to close early. // Run tally with new votes to close early.
if err := doTally(ctx, &proposal, electorate, accountInfo); err != nil { if err := doTally(ctx, &proposal, electorate, policyInfo); err != nil {
return nil, err return nil, err
} }
@ -582,9 +582,9 @@ func (k Keeper) Vote(goCtx context.Context, req *group.MsgVote) (*group.MsgVoteR
return &group.MsgVoteResponse{}, nil return &group.MsgVoteResponse{}, nil
} }
// doTally updates the proposal status and tally if necessary based on the group account's decision policy. // doTally updates the proposal status and tally if necessary based on the group policy's decision policy.
func doTally(ctx sdk.Context, p *group.Proposal, electorate group.GroupInfo, accountInfo group.GroupAccountInfo) error { func doTally(ctx sdk.Context, p *group.Proposal, electorate group.GroupInfo, policyInfo group.GroupPolicyInfo) error {
policy := accountInfo.GetDecisionPolicy() policy := policyInfo.GetDecisionPolicy()
pSubmittedAt, err := gogotypes.TimestampProto(p.SubmittedAt) pSubmittedAt, err := gogotypes.TimestampProto(p.SubmittedAt)
if err != nil { if err != nil {
return err return err
@ -620,9 +620,9 @@ func (k Keeper) Exec(goCtx context.Context, req *group.MsgExec) (*group.MsgExecR
return nil, sdkerrors.Wrapf(errors.ErrInvalid, "not possible with proposal status %s", proposal.Status.String()) return nil, sdkerrors.Wrapf(errors.ErrInvalid, "not possible with proposal status %s", proposal.Status.String())
} }
var accountInfo group.GroupAccountInfo var policyInfo group.GroupPolicyInfo
if accountInfo, err = k.getGroupAccountInfo(ctx, proposal.Address); err != nil { if policyInfo, err = k.getGroupPolicyInfo(ctx, proposal.Address); err != nil {
return nil, sdkerrors.Wrap(err, "load group account") return nil, sdkerrors.Wrap(err, "load group policy")
} }
storeUpdates := func() (*group.MsgExecResponse, error) { storeUpdates := func() (*group.MsgExecResponse, error) {
@ -633,14 +633,14 @@ func (k Keeper) Exec(goCtx context.Context, req *group.MsgExec) (*group.MsgExecR
} }
if proposal.Status == group.ProposalStatusSubmitted { if proposal.Status == group.ProposalStatusSubmitted {
// Ensure that group account hasn't been modified before tally. // Ensure that group policy hasn't been modified before tally.
if proposal.GroupAccountVersion != accountInfo.Version { if proposal.GroupPolicyVersion != policyInfo.Version {
proposal.Result = group.ProposalResultUnfinalized proposal.Result = group.ProposalResultUnfinalized
proposal.Status = group.ProposalStatusAborted proposal.Status = group.ProposalStatusAborted
return storeUpdates() return storeUpdates()
} }
electorate, err := k.getGroupInfo(ctx, accountInfo.GroupId) electorate, err := k.getGroupInfo(ctx, policyInfo.GroupId)
if err != nil { if err != nil {
return nil, sdkerrors.Wrap(err, "load group") return nil, sdkerrors.Wrap(err, "load group")
} }
@ -651,7 +651,7 @@ func (k Keeper) Exec(goCtx context.Context, req *group.MsgExec) (*group.MsgExecR
proposal.Status = group.ProposalStatusAborted proposal.Status = group.ProposalStatusAborted
return storeUpdates() return storeUpdates()
} }
if err := doTally(ctx, &proposal, electorate, accountInfo); err != nil { if err := doTally(ctx, &proposal, electorate, policyInfo); err != nil {
return nil, err return nil, err
} }
} }
@ -662,7 +662,7 @@ func (k Keeper) Exec(goCtx context.Context, req *group.MsgExec) (*group.MsgExecR
// Caching context so that we don't update the store in case of failure. // Caching context so that we don't update the store in case of failure.
ctx, flush := ctx.CacheContext() ctx, flush := ctx.CacheContext()
addr, err := sdk.AccAddressFromBech32(accountInfo.Address) addr, err := sdk.AccAddressFromBech32(policyInfo.Address)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -697,31 +697,31 @@ type authNGroupReq interface {
} }
type actionFn func(m *group.GroupInfo) error type actionFn func(m *group.GroupInfo) error
type groupAccountActionFn func(m *group.GroupAccountInfo) error type groupPolicyActionFn func(m *group.GroupPolicyInfo) error
// doUpdateGroupAccount first makes sure that the group account admin initiated the group account update, // doUpdateGroupPolicy first makes sure that the group policy admin initiated the group policy update,
// before performing the group account update and emitting an event. // before performing the group policy update and emitting an event.
func (k Keeper) doUpdateGroupAccount(ctx sdk.Context, groupAccount string, admin string, action groupAccountActionFn, note string) error { func (k Keeper) doUpdateGroupPolicy(ctx sdk.Context, groupPolicy string, admin string, action groupPolicyActionFn, note string) error {
groupAccountInfo, err := k.getGroupAccountInfo(ctx, groupAccount) groupPolicyInfo, err := k.getGroupPolicyInfo(ctx, groupPolicy)
if err != nil { if err != nil {
return sdkerrors.Wrap(err, "load group account") return sdkerrors.Wrap(err, "load group policy")
} }
groupAccountAdmin, err := sdk.AccAddressFromBech32(admin) groupPolicyAdmin, err := sdk.AccAddressFromBech32(admin)
if err != nil { if err != nil {
return sdkerrors.Wrap(err, "group account admin") return sdkerrors.Wrap(err, "group policy admin")
} }
// Only current group account admin is authorized to update a group account. // Only current group policy admin is authorized to update a group policy.
if groupAccountAdmin.String() != groupAccountInfo.Admin { if groupPolicyAdmin.String() != groupPolicyInfo.Admin {
return sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "not group account admin") return sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "not group policy admin")
} }
if err := action(&groupAccountInfo); err != nil { if err := action(&groupPolicyInfo); err != nil {
return sdkerrors.Wrap(err, note) return sdkerrors.Wrap(err, note)
} }
err = ctx.EventManager().EmitTypedEvent(&group.EventUpdateGroupAccount{Address: admin}) err = ctx.EventManager().EmitTypedEvent(&group.EventUpdateGroupPolicy{Address: admin})
if err != nil { if err != nil {
return err return err
} }

View File

@ -9,12 +9,12 @@ import (
) )
// doExecuteMsgs routes the messages to the registered handlers. Messages are limited to those that require no authZ or // doExecuteMsgs routes the messages to the registered handlers. Messages are limited to those that require no authZ or
// by the group account only. Otherwise this gives access to other peoples accounts as the sdk ant handler is bypassed // by the account of group policy only. Otherwise this gives access to other peoples accounts as the sdk ant handler is bypassed
func (s Keeper) doExecuteMsgs(ctx sdk.Context, router *authmiddleware.MsgServiceRouter, proposal group.Proposal, groupAccount sdk.AccAddress) ([]sdk.Result, error) { func (s Keeper) doExecuteMsgs(ctx sdk.Context, router *authmiddleware.MsgServiceRouter, proposal group.Proposal, groupPolicyAcc sdk.AccAddress) ([]sdk.Result, error) {
msgs := proposal.GetMsgs() msgs := proposal.GetMsgs()
results := make([]sdk.Result, len(msgs)) results := make([]sdk.Result, len(msgs))
if err := ensureMsgAuthZ(msgs, groupAccount); err != nil { if err := ensureMsgAuthZ(msgs, groupPolicyAcc); err != nil {
return nil, err return nil, err
} }
for i, msg := range msgs { for i, msg := range msgs {
@ -33,12 +33,12 @@ func (s Keeper) doExecuteMsgs(ctx sdk.Context, router *authmiddleware.MsgService
return results, nil return results, nil
} }
// ensureMsgAuthZ checks that if a message requires signers that all of them are equal to the given group account. // ensureMsgAuthZ checks that if a message requires signers that all of them are equal to the given account address of group policy.
func ensureMsgAuthZ(msgs []sdk.Msg, groupAccount sdk.AccAddress) error { func ensureMsgAuthZ(msgs []sdk.Msg, groupPolicyAcc sdk.AccAddress) error {
for i := range msgs { for i := range msgs {
for _, acct := range msgs[i].GetSigners() { for _, acct := range msgs[i].GetSigners() {
if !groupAccount.Equals(acct) { if !groupPolicyAcc.Equals(acct) {
return errors.Wrap(errors.ErrUnauthorized, "msg does not have group account authorization") return errors.Wrap(errors.ErrUnauthorized, "msg does not have group policy authorization")
} }
} }
} }

View File

@ -15,17 +15,17 @@ import (
// Group message types and routes // Group message types and routes
const ( const (
TypeMsgCreateGroup = "create_group" TypeMsgCreateGroup = "create_group"
TypeMsgUpdateGroupAdmin = "update_group_admin" TypeMsgUpdateGroupAdmin = "update_group_admin"
TypeMsgUpdateGroupComment = "update_group_comment" TypeMsgUpdateGroupComment = "update_group_comment"
TypeMsgUpdateGroupMembers = "update_group_members" TypeMsgUpdateGroupMembers = "update_group_members"
TypeMsgCreateGroupAccount = "create_group_account" TypeMsgCreateGroupPolicy = "create_group_policy"
TypeMsgUpdateGroupAccountAdmin = "update_group_account_admin" TypeMsgUpdateGroupPolicyAdmin = "update_group_policy_admin"
TypeMsgUpdateGroupAccountDecisionPolicy = "update_group_account_decision_policy" TypeMsgUpdateGroupPolicyDecisionPolicy = "update_group_policy_decision_policy"
TypeMsgUpdateGroupAccountComment = "update_group_account_comment" TypeMsgUpdateGroupPolicyComment = "update_group_policy_comment"
TypeMsgCreateProposal = "create_proposal" TypeMsgCreateProposal = "create_proposal"
TypeMsgVote = "vote" TypeMsgVote = "vote"
TypeMsgExec = "exec" TypeMsgExec = "exec"
) )
var _ sdk.Msg = &MsgCreateGroup{} var _ sdk.Msg = &MsgCreateGroup{}
@ -226,23 +226,23 @@ func (m *MsgUpdateGroupMembers) GetGroupID() uint64 {
return m.GroupId return m.GroupId
} }
var _ sdk.Msg = &MsgCreateGroupAccount{} var _ sdk.Msg = &MsgCreateGroupPolicy{}
// Route Implements Msg. // Route Implements Msg.
func (m MsgCreateGroupAccount) Route() string { func (m MsgCreateGroupPolicy) Route() string {
return RouterKey return RouterKey
} }
// Type Implements Msg. // Type Implements Msg.
func (m MsgCreateGroupAccount) Type() string { return TypeMsgCreateGroupAccount } func (m MsgCreateGroupPolicy) Type() string { return TypeMsgCreateGroupPolicy }
// GetSignBytes Implements Msg. // GetSignBytes Implements Msg.
func (m MsgCreateGroupAccount) GetSignBytes() []byte { func (m MsgCreateGroupPolicy) GetSignBytes() []byte {
return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&m)) return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&m))
} }
// GetSigners returns the expected signers for a MsgCreateGroupAccount. // GetSigners returns the expected signers for a MsgCreateGroupPolicy.
func (m MsgCreateGroupAccount) GetSigners() []sdk.AccAddress { func (m MsgCreateGroupPolicy) GetSigners() []sdk.AccAddress {
admin, err := sdk.AccAddressFromBech32(m.Admin) admin, err := sdk.AccAddressFromBech32(m.Admin)
if err != nil { if err != nil {
panic(err) panic(err)
@ -251,7 +251,7 @@ func (m MsgCreateGroupAccount) GetSigners() []sdk.AccAddress {
} }
// ValidateBasic does a sanity check on the provided data // ValidateBasic does a sanity check on the provided data
func (m MsgCreateGroupAccount) ValidateBasic() error { func (m MsgCreateGroupPolicy) ValidateBasic() error {
_, err := sdk.AccAddressFromBech32(m.Admin) _, err := sdk.AccAddressFromBech32(m.Admin)
if err != nil { if err != nil {
return sdkerrors.Wrap(err, "admin") return sdkerrors.Wrap(err, "admin")
@ -271,23 +271,23 @@ func (m MsgCreateGroupAccount) ValidateBasic() error {
return nil return nil
} }
var _ sdk.Msg = &MsgUpdateGroupAccountAdmin{} var _ sdk.Msg = &MsgUpdateGroupPolicyAdmin{}
// Route Implements Msg. // Route Implements Msg.
func (m MsgUpdateGroupAccountAdmin) Route() string { func (m MsgUpdateGroupPolicyAdmin) Route() string {
return RouterKey return RouterKey
} }
// Type Implements Msg. // Type Implements Msg.
func (m MsgUpdateGroupAccountAdmin) Type() string { return TypeMsgUpdateGroupAccountAdmin } func (m MsgUpdateGroupPolicyAdmin) Type() string { return TypeMsgUpdateGroupPolicyAdmin }
// GetSignBytes Implements Msg. // GetSignBytes Implements Msg.
func (m MsgUpdateGroupAccountAdmin) GetSignBytes() []byte { func (m MsgUpdateGroupPolicyAdmin) GetSignBytes() []byte {
return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&m)) return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&m))
} }
// GetSigners returns the expected signers for a MsgUpdateGroupAccountAdmin. // GetSigners returns the expected signers for a MsgUpdateGroupPolicyAdmin.
func (m MsgUpdateGroupAccountAdmin) GetSigners() []sdk.AccAddress { func (m MsgUpdateGroupPolicyAdmin) GetSigners() []sdk.AccAddress {
admin, err := sdk.AccAddressFromBech32(m.Admin) admin, err := sdk.AccAddressFromBech32(m.Admin)
if err != nil { if err != nil {
panic(err) panic(err)
@ -296,7 +296,7 @@ func (m MsgUpdateGroupAccountAdmin) GetSigners() []sdk.AccAddress {
} }
// ValidateBasic does a sanity check on the provided data // ValidateBasic does a sanity check on the provided data
func (m MsgUpdateGroupAccountAdmin) ValidateBasic() error { func (m MsgUpdateGroupPolicyAdmin) ValidateBasic() error {
admin, err := sdk.AccAddressFromBech32(m.Admin) admin, err := sdk.AccAddressFromBech32(m.Admin)
if err != nil { if err != nil {
return sdkerrors.Wrap(err, "admin") return sdkerrors.Wrap(err, "admin")
@ -309,7 +309,7 @@ func (m MsgUpdateGroupAccountAdmin) ValidateBasic() error {
_, err = sdk.AccAddressFromBech32(m.Address) _, err = sdk.AccAddressFromBech32(m.Address)
if err != nil { if err != nil {
return sdkerrors.Wrap(err, "group account") return sdkerrors.Wrap(err, "group policy")
} }
if admin.Equals(newAdmin) { if admin.Equals(newAdmin) {
@ -318,11 +318,11 @@ func (m MsgUpdateGroupAccountAdmin) ValidateBasic() error {
return nil return nil
} }
var _ sdk.Msg = &MsgUpdateGroupAccountDecisionPolicy{} var _ sdk.Msg = &MsgUpdateGroupPolicyDecisionPolicy{}
var _ types.UnpackInterfacesMessage = MsgUpdateGroupAccountDecisionPolicy{} var _ types.UnpackInterfacesMessage = MsgUpdateGroupPolicyDecisionPolicy{}
func NewMsgUpdateGroupAccountDecisionPolicyRequest(admin sdk.AccAddress, address sdk.AccAddress, decisionPolicy DecisionPolicy) (*MsgUpdateGroupAccountDecisionPolicy, error) { func NewMsgUpdateGroupPolicyDecisionPolicyRequest(admin sdk.AccAddress, address sdk.AccAddress, decisionPolicy DecisionPolicy) (*MsgUpdateGroupPolicyDecisionPolicy, error) {
m := &MsgUpdateGroupAccountDecisionPolicy{ m := &MsgUpdateGroupPolicyDecisionPolicy{
Admin: admin.String(), Admin: admin.String(),
Address: address.String(), Address: address.String(),
} }
@ -333,7 +333,7 @@ func NewMsgUpdateGroupAccountDecisionPolicyRequest(admin sdk.AccAddress, address
return m, nil return m, nil
} }
func (m *MsgUpdateGroupAccountDecisionPolicy) SetDecisionPolicy(decisionPolicy DecisionPolicy) error { func (m *MsgUpdateGroupPolicyDecisionPolicy) SetDecisionPolicy(decisionPolicy DecisionPolicy) error {
msg, ok := decisionPolicy.(proto.Message) msg, ok := decisionPolicy.(proto.Message)
if !ok { if !ok {
return fmt.Errorf("can't proto marshal %T", msg) return fmt.Errorf("can't proto marshal %T", msg)
@ -347,22 +347,22 @@ func (m *MsgUpdateGroupAccountDecisionPolicy) SetDecisionPolicy(decisionPolicy D
} }
// Route Implements Msg. // Route Implements Msg.
func (m MsgUpdateGroupAccountDecisionPolicy) Route() string { func (m MsgUpdateGroupPolicyDecisionPolicy) Route() string {
return RouterKey return RouterKey
} }
// Type Implements Msg. // Type Implements Msg.
func (m MsgUpdateGroupAccountDecisionPolicy) Type() string { func (m MsgUpdateGroupPolicyDecisionPolicy) Type() string {
return TypeMsgUpdateGroupAccountDecisionPolicy return TypeMsgUpdateGroupPolicyDecisionPolicy
} }
// GetSignBytes Implements Msg. // GetSignBytes Implements Msg.
func (m MsgUpdateGroupAccountDecisionPolicy) GetSignBytes() []byte { func (m MsgUpdateGroupPolicyDecisionPolicy) GetSignBytes() []byte {
return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&m)) return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&m))
} }
// GetSigners returns the expected signers for a MsgUpdateGroupAccountDecisionPolicy. // GetSigners returns the expected signers for a MsgUpdateGroupPolicyDecisionPolicy.
func (m MsgUpdateGroupAccountDecisionPolicy) GetSigners() []sdk.AccAddress { func (m MsgUpdateGroupPolicyDecisionPolicy) GetSigners() []sdk.AccAddress {
admin, err := sdk.AccAddressFromBech32(m.Admin) admin, err := sdk.AccAddressFromBech32(m.Admin)
if err != nil { if err != nil {
panic(err) panic(err)
@ -371,7 +371,7 @@ func (m MsgUpdateGroupAccountDecisionPolicy) GetSigners() []sdk.AccAddress {
} }
// ValidateBasic does a sanity check on the provided data // ValidateBasic does a sanity check on the provided data
func (m MsgUpdateGroupAccountDecisionPolicy) ValidateBasic() error { func (m MsgUpdateGroupPolicyDecisionPolicy) ValidateBasic() error {
_, err := sdk.AccAddressFromBech32(m.Admin) _, err := sdk.AccAddressFromBech32(m.Admin)
if err != nil { if err != nil {
return sdkerrors.Wrap(err, "admin") return sdkerrors.Wrap(err, "admin")
@ -379,7 +379,7 @@ func (m MsgUpdateGroupAccountDecisionPolicy) ValidateBasic() error {
_, err = sdk.AccAddressFromBech32(m.Address) _, err = sdk.AccAddressFromBech32(m.Address)
if err != nil { if err != nil {
return sdkerrors.Wrap(err, "group account") return sdkerrors.Wrap(err, "group policy")
} }
policy := m.GetDecisionPolicy() policy := m.GetDecisionPolicy()
@ -394,7 +394,7 @@ func (m MsgUpdateGroupAccountDecisionPolicy) ValidateBasic() error {
return nil return nil
} }
func (m *MsgUpdateGroupAccountDecisionPolicy) GetDecisionPolicy() DecisionPolicy { func (m *MsgUpdateGroupPolicyDecisionPolicy) GetDecisionPolicy() DecisionPolicy {
decisionPolicy, ok := m.DecisionPolicy.GetCachedValue().(DecisionPolicy) decisionPolicy, ok := m.DecisionPolicy.GetCachedValue().(DecisionPolicy)
if !ok { if !ok {
return nil return nil
@ -403,28 +403,28 @@ func (m *MsgUpdateGroupAccountDecisionPolicy) GetDecisionPolicy() DecisionPolicy
} }
// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces // UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces
func (m MsgUpdateGroupAccountDecisionPolicy) UnpackInterfaces(unpacker types.AnyUnpacker) error { func (m MsgUpdateGroupPolicyDecisionPolicy) UnpackInterfaces(unpacker types.AnyUnpacker) error {
var decisionPolicy DecisionPolicy var decisionPolicy DecisionPolicy
return unpacker.UnpackAny(m.DecisionPolicy, &decisionPolicy) return unpacker.UnpackAny(m.DecisionPolicy, &decisionPolicy)
} }
var _ sdk.Msg = &MsgUpdateGroupAccountMetadata{} var _ sdk.Msg = &MsgUpdateGroupPolicyMetadata{}
// Route Implements Msg. // Route Implements Msg.
func (m MsgUpdateGroupAccountMetadata) Route() string { func (m MsgUpdateGroupPolicyMetadata) Route() string {
return RouterKey return RouterKey
} }
// Type Implements Msg. // Type Implements Msg.
func (m MsgUpdateGroupAccountMetadata) Type() string { return TypeMsgUpdateGroupAccountComment } func (m MsgUpdateGroupPolicyMetadata) Type() string { return TypeMsgUpdateGroupPolicyComment }
// GetSignBytes Implements Msg. // GetSignBytes Implements Msg.
func (m MsgUpdateGroupAccountMetadata) GetSignBytes() []byte { func (m MsgUpdateGroupPolicyMetadata) GetSignBytes() []byte {
return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&m)) return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&m))
} }
// GetSigners returns the expected signers for a MsgUpdateGroupAccountMetadata. // GetSigners returns the expected signers for a MsgUpdateGroupPolicyMetadata.
func (m MsgUpdateGroupAccountMetadata) GetSigners() []sdk.AccAddress { func (m MsgUpdateGroupPolicyMetadata) GetSigners() []sdk.AccAddress {
admin, err := sdk.AccAddressFromBech32(m.Admin) admin, err := sdk.AccAddressFromBech32(m.Admin)
if err != nil { if err != nil {
panic(err) panic(err)
@ -433,7 +433,7 @@ func (m MsgUpdateGroupAccountMetadata) GetSigners() []sdk.AccAddress {
} }
// ValidateBasic does a sanity check on the provided data // ValidateBasic does a sanity check on the provided data
func (m MsgUpdateGroupAccountMetadata) ValidateBasic() error { func (m MsgUpdateGroupPolicyMetadata) ValidateBasic() error {
_, err := sdk.AccAddressFromBech32(m.Admin) _, err := sdk.AccAddressFromBech32(m.Admin)
if err != nil { if err != nil {
return sdkerrors.Wrap(err, "admin") return sdkerrors.Wrap(err, "admin")
@ -441,18 +441,18 @@ func (m MsgUpdateGroupAccountMetadata) ValidateBasic() error {
_, err = sdk.AccAddressFromBech32(m.Address) _, err = sdk.AccAddressFromBech32(m.Address)
if err != nil { if err != nil {
return sdkerrors.Wrap(err, "group account") return sdkerrors.Wrap(err, "group policy")
} }
return nil return nil
} }
var _ sdk.Msg = &MsgCreateGroupAccount{} var _ sdk.Msg = &MsgCreateGroupPolicy{}
var _ types.UnpackInterfacesMessage = MsgCreateGroupAccount{} var _ types.UnpackInterfacesMessage = MsgCreateGroupPolicy{}
// NewMsgCreateGroupAccount creates a new MsgCreateGroupAccount. // NewMsgCreateGroupPolicy creates a new MsgCreateGroupPolicy.
func NewMsgCreateGroupAccount(admin sdk.AccAddress, group uint64, metadata []byte, decisionPolicy DecisionPolicy) (*MsgCreateGroupAccount, error) { func NewMsgCreateGroupPolicy(admin sdk.AccAddress, group uint64, metadata []byte, decisionPolicy DecisionPolicy) (*MsgCreateGroupPolicy, error) {
m := &MsgCreateGroupAccount{ m := &MsgCreateGroupPolicy{
Admin: admin.String(), Admin: admin.String(),
GroupId: group, GroupId: group,
Metadata: metadata, Metadata: metadata,
@ -464,19 +464,19 @@ func NewMsgCreateGroupAccount(admin sdk.AccAddress, group uint64, metadata []byt
return m, nil return m, nil
} }
func (m *MsgCreateGroupAccount) GetAdmin() string { func (m *MsgCreateGroupPolicy) GetAdmin() string {
return m.Admin return m.Admin
} }
func (m *MsgCreateGroupAccount) GetGroupID() uint64 { func (m *MsgCreateGroupPolicy) GetGroupID() uint64 {
return m.GroupId return m.GroupId
} }
func (m *MsgCreateGroupAccount) GetMetadata() []byte { func (m *MsgCreateGroupPolicy) GetMetadata() []byte {
return m.Metadata return m.Metadata
} }
func (m *MsgCreateGroupAccount) GetDecisionPolicy() DecisionPolicy { func (m *MsgCreateGroupPolicy) GetDecisionPolicy() DecisionPolicy {
decisionPolicy, ok := m.DecisionPolicy.GetCachedValue().(DecisionPolicy) decisionPolicy, ok := m.DecisionPolicy.GetCachedValue().(DecisionPolicy)
if !ok { if !ok {
return nil return nil
@ -484,7 +484,7 @@ func (m *MsgCreateGroupAccount) GetDecisionPolicy() DecisionPolicy {
return decisionPolicy return decisionPolicy
} }
func (m *MsgCreateGroupAccount) SetDecisionPolicy(decisionPolicy DecisionPolicy) error { func (m *MsgCreateGroupPolicy) SetDecisionPolicy(decisionPolicy DecisionPolicy) error {
msg, ok := decisionPolicy.(proto.Message) msg, ok := decisionPolicy.(proto.Message)
if !ok { if !ok {
return fmt.Errorf("can't proto marshal %T", msg) return fmt.Errorf("can't proto marshal %T", msg)
@ -498,7 +498,7 @@ func (m *MsgCreateGroupAccount) SetDecisionPolicy(decisionPolicy DecisionPolicy)
} }
// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces // UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces
func (m MsgCreateGroupAccount) UnpackInterfaces(unpacker types.AnyUnpacker) error { func (m MsgCreateGroupPolicy) UnpackInterfaces(unpacker types.AnyUnpacker) error {
var decisionPolicy DecisionPolicy var decisionPolicy DecisionPolicy
return unpacker.UnpackAny(m.DecisionPolicy, &decisionPolicy) return unpacker.UnpackAny(m.DecisionPolicy, &decisionPolicy)
} }
@ -550,7 +550,7 @@ func (m MsgCreateProposal) GetSigners() []sdk.AccAddress {
func (m MsgCreateProposal) ValidateBasic() error { func (m MsgCreateProposal) ValidateBasic() error {
_, err := sdk.AccAddressFromBech32(m.Address) _, err := sdk.AccAddressFromBech32(m.Address)
if err != nil { if err != nil {
return sdkerrors.Wrap(err, "group account") return sdkerrors.Wrap(err, "group policy")
} }
if len(m.Proposers) == 0 { if len(m.Proposers) == 0 {

File diff suppressed because it is too large Load Diff

View File

@ -85,8 +85,8 @@ func local_request_Query_GroupInfo_0(ctx context.Context, marshaler runtime.Mars
} }
func request_Query_GroupAccountInfo_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { func request_Query_GroupPolicyInfo_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QueryGroupAccountInfoRequest var protoReq QueryGroupPolicyInfoRequest
var metadata runtime.ServerMetadata var metadata runtime.ServerMetadata
var ( var (
@ -107,13 +107,13 @@ func request_Query_GroupAccountInfo_0(ctx context.Context, marshaler runtime.Mar
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err) return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err)
} }
msg, err := client.GroupAccountInfo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) msg, err := client.GroupPolicyInfo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err return msg, metadata, err
} }
func local_request_Query_GroupAccountInfo_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { func local_request_Query_GroupPolicyInfo_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QueryGroupAccountInfoRequest var protoReq QueryGroupPolicyInfoRequest
var metadata runtime.ServerMetadata var metadata runtime.ServerMetadata
var ( var (
@ -134,7 +134,7 @@ func local_request_Query_GroupAccountInfo_0(ctx context.Context, marshaler runti
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err) return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err)
} }
msg, err := server.GroupAccountInfo(ctx, &protoReq) msg, err := server.GroupPolicyInfo(ctx, &protoReq)
return msg, metadata, err return msg, metadata, err
} }
@ -284,11 +284,11 @@ func local_request_Query_GroupsByAdmin_0(ctx context.Context, marshaler runtime.
} }
var ( var (
filter_Query_GroupAccountsByGroup_0 = &utilities.DoubleArray{Encoding: map[string]int{"group_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} filter_Query_GroupPoliciesByGroup_0 = &utilities.DoubleArray{Encoding: map[string]int{"group_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
) )
func request_Query_GroupAccountsByGroup_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { func request_Query_GroupPoliciesByGroup_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QueryGroupAccountsByGroupRequest var protoReq QueryGroupPoliciesByGroupRequest
var metadata runtime.ServerMetadata var metadata runtime.ServerMetadata
var ( var (
@ -312,17 +312,17 @@ func request_Query_GroupAccountsByGroup_0(ctx context.Context, marshaler runtime
if err := req.ParseForm(); err != nil { if err := req.ParseForm(); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
} }
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_GroupAccountsByGroup_0); err != nil { if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_GroupPoliciesByGroup_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
} }
msg, err := client.GroupAccountsByGroup(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) msg, err := client.GroupPoliciesByGroup(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err return msg, metadata, err
} }
func local_request_Query_GroupAccountsByGroup_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { func local_request_Query_GroupPoliciesByGroup_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QueryGroupAccountsByGroupRequest var protoReq QueryGroupPoliciesByGroupRequest
var metadata runtime.ServerMetadata var metadata runtime.ServerMetadata
var ( var (
@ -346,21 +346,21 @@ func local_request_Query_GroupAccountsByGroup_0(ctx context.Context, marshaler r
if err := req.ParseForm(); err != nil { if err := req.ParseForm(); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
} }
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_GroupAccountsByGroup_0); err != nil { if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_GroupPoliciesByGroup_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
} }
msg, err := server.GroupAccountsByGroup(ctx, &protoReq) msg, err := server.GroupPoliciesByGroup(ctx, &protoReq)
return msg, metadata, err return msg, metadata, err
} }
var ( var (
filter_Query_GroupAccountsByAdmin_0 = &utilities.DoubleArray{Encoding: map[string]int{"admin": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} filter_Query_GroupPoliciesByAdmin_0 = &utilities.DoubleArray{Encoding: map[string]int{"admin": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
) )
func request_Query_GroupAccountsByAdmin_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { func request_Query_GroupPoliciesByAdmin_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QueryGroupAccountsByAdminRequest var protoReq QueryGroupPoliciesByAdminRequest
var metadata runtime.ServerMetadata var metadata runtime.ServerMetadata
var ( var (
@ -384,17 +384,17 @@ func request_Query_GroupAccountsByAdmin_0(ctx context.Context, marshaler runtime
if err := req.ParseForm(); err != nil { if err := req.ParseForm(); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
} }
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_GroupAccountsByAdmin_0); err != nil { if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_GroupPoliciesByAdmin_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
} }
msg, err := client.GroupAccountsByAdmin(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) msg, err := client.GroupPoliciesByAdmin(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err return msg, metadata, err
} }
func local_request_Query_GroupAccountsByAdmin_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { func local_request_Query_GroupPoliciesByAdmin_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QueryGroupAccountsByAdminRequest var protoReq QueryGroupPoliciesByAdminRequest
var metadata runtime.ServerMetadata var metadata runtime.ServerMetadata
var ( var (
@ -418,11 +418,11 @@ func local_request_Query_GroupAccountsByAdmin_0(ctx context.Context, marshaler r
if err := req.ParseForm(); err != nil { if err := req.ParseForm(); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
} }
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_GroupAccountsByAdmin_0); err != nil { if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_GroupPoliciesByAdmin_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
} }
msg, err := server.GroupAccountsByAdmin(ctx, &protoReq) msg, err := server.GroupPoliciesByAdmin(ctx, &protoReq)
return msg, metadata, err return msg, metadata, err
} }
@ -482,11 +482,11 @@ func local_request_Query_Proposal_0(ctx context.Context, marshaler runtime.Marsh
} }
var ( var (
filter_Query_ProposalsByGroupAccount_0 = &utilities.DoubleArray{Encoding: map[string]int{"address": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} filter_Query_ProposalsByGroupPolicy_0 = &utilities.DoubleArray{Encoding: map[string]int{"address": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
) )
func request_Query_ProposalsByGroupAccount_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { func request_Query_ProposalsByGroupPolicy_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QueryProposalsByGroupAccountRequest var protoReq QueryProposalsByGroupPolicyRequest
var metadata runtime.ServerMetadata var metadata runtime.ServerMetadata
var ( var (
@ -510,17 +510,17 @@ func request_Query_ProposalsByGroupAccount_0(ctx context.Context, marshaler runt
if err := req.ParseForm(); err != nil { if err := req.ParseForm(); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
} }
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_ProposalsByGroupAccount_0); err != nil { if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_ProposalsByGroupPolicy_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
} }
msg, err := client.ProposalsByGroupAccount(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) msg, err := client.ProposalsByGroupPolicy(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err return msg, metadata, err
} }
func local_request_Query_ProposalsByGroupAccount_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { func local_request_Query_ProposalsByGroupPolicy_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QueryProposalsByGroupAccountRequest var protoReq QueryProposalsByGroupPolicyRequest
var metadata runtime.ServerMetadata var metadata runtime.ServerMetadata
var ( var (
@ -544,11 +544,11 @@ func local_request_Query_ProposalsByGroupAccount_0(ctx context.Context, marshale
if err := req.ParseForm(); err != nil { if err := req.ParseForm(); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
} }
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_ProposalsByGroupAccount_0); err != nil { if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_ProposalsByGroupPolicy_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
} }
msg, err := server.ProposalsByGroupAccount(ctx, &protoReq) msg, err := server.ProposalsByGroupPolicy(ctx, &protoReq)
return msg, metadata, err return msg, metadata, err
} }
@ -871,7 +871,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv
}) })
mux.Handle("GET", pattern_Query_GroupAccountInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { mux.Handle("GET", pattern_Query_GroupPolicyInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context()) ctx, cancel := context.WithCancel(req.Context())
defer cancel() defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
@ -880,14 +880,14 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return return
} }
resp, md, err := local_request_Query_GroupAccountInfo_0(rctx, inboundMarshaler, server, req, pathParams) resp, md, err := local_request_Query_GroupPolicyInfo_0(rctx, inboundMarshaler, server, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md) ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil { if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return return
} }
forward_Query_GroupAccountInfo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) forward_Query_GroupPolicyInfo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
}) })
@ -931,7 +931,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv
}) })
mux.Handle("GET", pattern_Query_GroupAccountsByGroup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { mux.Handle("GET", pattern_Query_GroupPoliciesByGroup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context()) ctx, cancel := context.WithCancel(req.Context())
defer cancel() defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
@ -940,18 +940,18 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return return
} }
resp, md, err := local_request_Query_GroupAccountsByGroup_0(rctx, inboundMarshaler, server, req, pathParams) resp, md, err := local_request_Query_GroupPoliciesByGroup_0(rctx, inboundMarshaler, server, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md) ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil { if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return return
} }
forward_Query_GroupAccountsByGroup_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) forward_Query_GroupPoliciesByGroup_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
}) })
mux.Handle("GET", pattern_Query_GroupAccountsByAdmin_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { mux.Handle("GET", pattern_Query_GroupPoliciesByAdmin_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context()) ctx, cancel := context.WithCancel(req.Context())
defer cancel() defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
@ -960,14 +960,14 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return return
} }
resp, md, err := local_request_Query_GroupAccountsByAdmin_0(rctx, inboundMarshaler, server, req, pathParams) resp, md, err := local_request_Query_GroupPoliciesByAdmin_0(rctx, inboundMarshaler, server, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md) ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil { if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return return
} }
forward_Query_GroupAccountsByAdmin_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) forward_Query_GroupPoliciesByAdmin_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
}) })
@ -991,7 +991,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv
}) })
mux.Handle("GET", pattern_Query_ProposalsByGroupAccount_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { mux.Handle("GET", pattern_Query_ProposalsByGroupPolicy_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context()) ctx, cancel := context.WithCancel(req.Context())
defer cancel() defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
@ -1000,14 +1000,14 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return return
} }
resp, md, err := local_request_Query_ProposalsByGroupAccount_0(rctx, inboundMarshaler, server, req, pathParams) resp, md, err := local_request_Query_ProposalsByGroupPolicy_0(rctx, inboundMarshaler, server, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md) ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil { if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return return
} }
forward_Query_ProposalsByGroupAccount_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) forward_Query_ProposalsByGroupPolicy_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
}) })
@ -1152,7 +1152,7 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie
}) })
mux.Handle("GET", pattern_Query_GroupAccountInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { mux.Handle("GET", pattern_Query_GroupPolicyInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context()) ctx, cancel := context.WithCancel(req.Context())
defer cancel() defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
@ -1161,14 +1161,14 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return return
} }
resp, md, err := request_Query_GroupAccountInfo_0(rctx, inboundMarshaler, client, req, pathParams) resp, md, err := request_Query_GroupPolicyInfo_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md) ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil { if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return return
} }
forward_Query_GroupAccountInfo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) forward_Query_GroupPolicyInfo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
}) })
@ -1212,7 +1212,7 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie
}) })
mux.Handle("GET", pattern_Query_GroupAccountsByGroup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { mux.Handle("GET", pattern_Query_GroupPoliciesByGroup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context()) ctx, cancel := context.WithCancel(req.Context())
defer cancel() defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
@ -1221,18 +1221,18 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return return
} }
resp, md, err := request_Query_GroupAccountsByGroup_0(rctx, inboundMarshaler, client, req, pathParams) resp, md, err := request_Query_GroupPoliciesByGroup_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md) ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil { if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return return
} }
forward_Query_GroupAccountsByGroup_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) forward_Query_GroupPoliciesByGroup_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
}) })
mux.Handle("GET", pattern_Query_GroupAccountsByAdmin_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { mux.Handle("GET", pattern_Query_GroupPoliciesByAdmin_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context()) ctx, cancel := context.WithCancel(req.Context())
defer cancel() defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
@ -1241,14 +1241,14 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return return
} }
resp, md, err := request_Query_GroupAccountsByAdmin_0(rctx, inboundMarshaler, client, req, pathParams) resp, md, err := request_Query_GroupPoliciesByAdmin_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md) ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil { if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return return
} }
forward_Query_GroupAccountsByAdmin_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) forward_Query_GroupPoliciesByAdmin_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
}) })
@ -1272,7 +1272,7 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie
}) })
mux.Handle("GET", pattern_Query_ProposalsByGroupAccount_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { mux.Handle("GET", pattern_Query_ProposalsByGroupPolicy_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context()) ctx, cancel := context.WithCancel(req.Context())
defer cancel() defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
@ -1281,14 +1281,14 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return return
} }
resp, md, err := request_Query_ProposalsByGroupAccount_0(rctx, inboundMarshaler, client, req, pathParams) resp, md, err := request_Query_ProposalsByGroupPolicy_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md) ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil { if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return return
} }
forward_Query_ProposalsByGroupAccount_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) forward_Query_ProposalsByGroupPolicy_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
}) })
@ -1378,19 +1378,19 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie
var ( var (
pattern_Query_GroupInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "group", "v1beta1", "group_info", "group_id"}, "", runtime.AssumeColonVerbOpt(false))) pattern_Query_GroupInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "group", "v1beta1", "group_info", "group_id"}, "", runtime.AssumeColonVerbOpt(false)))
pattern_Query_GroupAccountInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "group", "v1beta1", "group_account_info", "address"}, "", runtime.AssumeColonVerbOpt(false))) pattern_Query_GroupPolicyInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "group", "v1beta1", "group_policy_info", "address"}, "", runtime.AssumeColonVerbOpt(false)))
pattern_Query_GroupMembers_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "group", "v1beta1", "group_members", "group_id"}, "", runtime.AssumeColonVerbOpt(false))) pattern_Query_GroupMembers_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "group", "v1beta1", "group_members", "group_id"}, "", runtime.AssumeColonVerbOpt(false)))
pattern_Query_GroupsByAdmin_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "group", "v1beta1", "groups_by_admin", "admin"}, "", runtime.AssumeColonVerbOpt(false))) pattern_Query_GroupsByAdmin_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "group", "v1beta1", "groups_by_admin", "admin"}, "", runtime.AssumeColonVerbOpt(false)))
pattern_Query_GroupAccountsByGroup_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "group", "v1beta1", "group_accounts_by_group", "group_id"}, "", runtime.AssumeColonVerbOpt(false))) pattern_Query_GroupPoliciesByGroup_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "group", "v1beta1", "group_policies_by_group", "group_id"}, "", runtime.AssumeColonVerbOpt(false)))
pattern_Query_GroupAccountsByAdmin_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "group", "v1beta1", "group_accounts_by_admin", "admin"}, "", runtime.AssumeColonVerbOpt(false))) pattern_Query_GroupPoliciesByAdmin_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "group", "v1beta1", "group_policies_by_admin", "admin"}, "", runtime.AssumeColonVerbOpt(false)))
pattern_Query_Proposal_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "group", "v1beta1", "proposal", "proposal_id"}, "", runtime.AssumeColonVerbOpt(false))) pattern_Query_Proposal_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "group", "v1beta1", "proposal", "proposal_id"}, "", runtime.AssumeColonVerbOpt(false)))
pattern_Query_ProposalsByGroupAccount_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "group", "v1beta1", "proposals_by_group_account", "address"}, "", runtime.AssumeColonVerbOpt(false))) pattern_Query_ProposalsByGroupPolicy_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "group", "v1beta1", "proposals_by_group_policy", "address"}, "", runtime.AssumeColonVerbOpt(false)))
pattern_Query_VoteByProposalVoter_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"cosmos", "group", "v1beta1", "vote_by_proposal_voter", "proposal_id", "voter"}, "", runtime.AssumeColonVerbOpt(false))) pattern_Query_VoteByProposalVoter_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"cosmos", "group", "v1beta1", "vote_by_proposal_voter", "proposal_id", "voter"}, "", runtime.AssumeColonVerbOpt(false)))
@ -1404,19 +1404,19 @@ var (
var ( var (
forward_Query_GroupInfo_0 = runtime.ForwardResponseMessage forward_Query_GroupInfo_0 = runtime.ForwardResponseMessage
forward_Query_GroupAccountInfo_0 = runtime.ForwardResponseMessage forward_Query_GroupPolicyInfo_0 = runtime.ForwardResponseMessage
forward_Query_GroupMembers_0 = runtime.ForwardResponseMessage forward_Query_GroupMembers_0 = runtime.ForwardResponseMessage
forward_Query_GroupsByAdmin_0 = runtime.ForwardResponseMessage forward_Query_GroupsByAdmin_0 = runtime.ForwardResponseMessage
forward_Query_GroupAccountsByGroup_0 = runtime.ForwardResponseMessage forward_Query_GroupPoliciesByGroup_0 = runtime.ForwardResponseMessage
forward_Query_GroupAccountsByAdmin_0 = runtime.ForwardResponseMessage forward_Query_GroupPoliciesByAdmin_0 = runtime.ForwardResponseMessage
forward_Query_Proposal_0 = runtime.ForwardResponseMessage forward_Query_Proposal_0 = runtime.ForwardResponseMessage
forward_Query_ProposalsByGroupAccount_0 = runtime.ForwardResponseMessage forward_Query_ProposalsByGroupPolicy_0 = runtime.ForwardResponseMessage
forward_Query_VoteByProposalVoter_0 = runtime.ForwardResponseMessage forward_Query_VoteByProposalVoter_0 = runtime.ForwardResponseMessage

View File

@ -10,17 +10,17 @@ A group is simply an aggregation of accounts with associated weights. It is not
an account and doesn't have a balance. It doesn't in and of itself have any an account and doesn't have a balance. It doesn't in and of itself have any
sort of voting or decision weight. It does have an "administrator" which has sort of voting or decision weight. It does have an "administrator" which has
the ability to add, remove and update members in the group. Note that a the ability to add, remove and update members in the group. Note that a
group account could be an administrator of a group. group policy account could be an administrator of a group.
## Group Account ## Group Policy
A group account is an account associated with a group and a decision policy. A group policy is an account associated with a group and a decision policy.
Group accounts are abstracted from groups because a single group may have Group policies are abstracted from groups because a single group may have
multiple decision policies for different types of actions. Managing group multiple decision policies for different types of actions. Managing group
membership separately from decision policies results in the least overhead membership separately from decision policies results in the least overhead
and keeps membership consistent across different policies. The pattern that and keeps membership consistent across different policies. The pattern that
is recommended is to have a single master group account for a given group, is recommended is to have a single master group policy for a given group,
and then to create separate group accounts with different decision policies and then to create separate group policies with different decision policies
and delegate the desired permissions from the master account to and delegate the desired permissions from the master account to
those "sub-accounts" using the `x/authz` module. those "sub-accounts" using the `x/authz` module.
@ -43,7 +43,7 @@ this decision policy, abstain and veto are simply treated as no's.
## Proposal ## Proposal
Any member of a group can submit a proposal for a group account to decide upon. Any member of a group can submit a proposal for a group policy account to decide upon.
A proposal consists of a set of messages that will be executed if the proposal A proposal consists of a set of messages that will be executed if the proposal
passes as well as any metadata associated with the proposal. passes as well as any metadata associated with the proposal.
@ -69,6 +69,6 @@ could be executed later on.
### Changing Group Membership ### Changing Group Membership
In the current implementation, changing a group's membership (adding or removing members or changing their weight) In the current implementation, changing a group's membership (adding or removing members or changing their weight)
will cause all existing proposals for group accounts linked to this group will cause all existing proposals for group policy accounts linked to this group
to be invalidated. They will simply fail if someone calls `Msg/Exec` and will to be invalidated. They will simply fail if someone calls `Msg/Exec` and will
eventually be garbage collected. eventually be garbage collected.

View File

@ -41,28 +41,28 @@ The `groupMemberTable` is a primary key table and its `PrimaryKey` is given by
`groupMemberByMemberIndex` allows to retrieve group members by member address: `groupMemberByMemberIndex` allows to retrieve group members by member address:
`0x12 | len([]byte(member.Address)) | []byte(member.Address) | PrimaryKey -> []byte()`. `0x12 | len([]byte(member.Address)) | []byte(member.Address) | PrimaryKey -> []byte()`.
## Group Account Table ## Group Policy Table
The `groupAccountTable` stores `GroupAccountInfo`: `0x20 | len([]byte(Address)) | []byte(Address) -> ProtocolBuffer(GroupAccountInfo)`. The `groupPolicyTable` stores `GroupPolicyInfo`: `0x20 | len([]byte(Address)) | []byte(Address) -> ProtocolBuffer(GroupPolicyInfo)`.
The `groupAccountTable` is a primary key table and its `PrimaryKey` is given by The `groupPolicyTable` is a primary key table and its `PrimaryKey` is given by
`len([]byte(Address)) | []byte(Address)` which is used by the following indexes. `len([]byte(Address)) | []byte(Address)` which is used by the following indexes.
### groupAccountSeq ### groupPolicySeq
The value of `groupAccountSeq` is incremented when creating a new group account and is used to generate the new group account `Address`: The value of `groupPolicySeq` is incremented when creating a new group policy and is used to generate the new group policy account `Address`:
`0x21 | 0x1 -> BigEndian`. `0x21 | 0x1 -> BigEndian`.
The second `0x1` corresponds to the ORM `sequenceStorageKey`. The second `0x1` corresponds to the ORM `sequenceStorageKey`.
### groupAccountByGroupIndex ### groupPolicyByGroupIndex
`groupAccountByGroupIndex` allows to retrieve group accounts by group id: `groupPolicyByGroupIndex` allows to retrieve group policies by group id:
`0x22 | BigEndian(GroupId) | PrimaryKey -> []byte()`. `0x22 | BigEndian(GroupId) | PrimaryKey -> []byte()`.
### groupAccountByAdminIndex ### groupPolicyByAdminIndex
`groupAccountByAdminIndex` allows to retrieve group accounts by admin address: `groupPolicyByAdminIndex` allows to retrieve group policies by admin address:
`0x23 | len([]byte(Address)) | []byte(Address) | PrimaryKey -> []byte()`. `0x23 | len([]byte(Address)) | []byte(Address) | PrimaryKey -> []byte()`.
## Proposal Table ## Proposal Table
@ -75,9 +75,9 @@ The value of `proposalSeq` is incremented when creating a new proposal and corre
The second `0x1` corresponds to the ORM `sequenceStorageKey`. The second `0x1` corresponds to the ORM `sequenceStorageKey`.
### proposalByGroupAccountIndex ### proposalByGroupPolicyIndex
`proposalByGroupAccountIndex` allows to retrieve proposals by group account address: `proposalByGroupPolicyIndex` allows to retrieve proposals by group policy account address:
`0x32 | len([]byte(account.Address)) | []byte(account.Address) | BigEndian(ProposalId) -> []byte()`. `0x32 | len([]byte(account.Address)) | []byte(account.Address) | BigEndian(ProposalId) -> []byte()`.
### proposalByProposerIndex ### proposalByProposerIndex

View File

@ -40,33 +40,33 @@ It's expecting to fail if:
- new metadata length is greater than some `MaxMetadataLength`. - new metadata length is greater than some `MaxMetadataLength`.
- the signer is not the admin of the group. - the signer is not the admin of the group.
## Msg/CreateGroupAccount ## Msg/CreateGroupPolicy
A new group account can be created with the `MsgCreateGroupAccount`, which has an admin address, a group id, a decision policy and some optional metadata bytes. A new group policy can be created with the `MsgCreateGroupPolicy`, which has an admin address, a group id, a decision policy and some optional metadata bytes.
+++ https://github.com/cosmos/cosmos-sdk/blob/6f58963e7f6ce820e9b33f02f06f7b96f6d2e347/proto/cosmos/group/v1beta1/tx.proto#L121-L142 +++ https://github.com/cosmos/cosmos-sdk/blob/6f58963e7f6ce820e9b33f02f06f7b96f6d2e347/proto/cosmos/group/v1beta1/tx.proto#L121-L142
It's expecting to fail if metadata length is greater than some `MaxMetadataLength`. It's expecting to fail if metadata length is greater than some `MaxMetadataLength`.
## Msg/UpdateGroupAccountAdmin ## Msg/UpdateGroupPolicyAdmin
The `UpdateGroupAccountAdmin` can be used to update a group account admin. The `UpdateGroupPolicyAdmin` can be used to update a group policy admin.
+++ https://github.com/cosmos/cosmos-sdk/blob/6f58963e7f6ce820e9b33f02f06f7b96f6d2e347/proto/cosmos/group/v1beta1/tx.proto#L151-L162 +++ https://github.com/cosmos/cosmos-sdk/blob/6f58963e7f6ce820e9b33f02f06f7b96f6d2e347/proto/cosmos/group/v1beta1/tx.proto#L151-L162
It's expecting to fail if the signer is not the admin of the group account. It's expecting to fail if the signer is not the admin of the group policy.
## Msg/UpdateGroupAccountDecisionPolicy ## Msg/UpdateGroupPolicyDecisionPolicy
The `UpdateGroupAccountDecisionPolicy` can be used to update a decision policy. The `UpdateGroupPolicyDecisionPolicy` can be used to update a decision policy.
+++ https://github.com/cosmos/cosmos-sdk/blob/6f58963e7f6ce820e9b33f02f06f7b96f6d2e347/proto/cosmos/group/v1beta1/tx.proto#L167-L179 +++ https://github.com/cosmos/cosmos-sdk/blob/6f58963e7f6ce820e9b33f02f06f7b96f6d2e347/proto/cosmos/group/v1beta1/tx.proto#L167-L179
It's expecting to fail if the signer is not the admin of the group account. It's expecting to fail if the signer is not the admin of the group policy.
## Msg/UpdateGroupAccountMetadata ## Msg/UpdateGroupPolicyMetadata
The `UpdateGroupAccountMetadata` can be used to update a group account metadata. The `UpdateGroupPolicyMetadata` can be used to update a group policy metadata.
+++ https://github.com/cosmos/cosmos-sdk/blob/6f58963e7f6ce820e9b33f02f06f7b96f6d2e347/proto/cosmos/group/v1beta1/tx.proto#L184-L195 +++ https://github.com/cosmos/cosmos-sdk/blob/6f58963e7f6ce820e9b33f02f06f7b96f6d2e347/proto/cosmos/group/v1beta1/tx.proto#L184-L195
@ -76,7 +76,7 @@ It's expecting to fail if:
## Msg/CreateProposal ## Msg/CreateProposal
A new group account can be created with the `MsgCreateProposal`, which has a group account address, a list of proposers addresses, a list of messages to execute if the proposal is accepted and some optional metadata bytes. A new proposal can be created with the `MsgCreateProposal`, which has a group policy account address, a list of proposers addresses, a list of messages to execute if the proposal is accepted and some optional metadata bytes.
An optional `Exec` value can be provided to try to execute the proposal immediately after proposal creation. Proposers signatures are considered as yes votes in this case. An optional `Exec` value can be provided to try to execute the proposal immediately after proposal creation. Proposers signatures are considered as yes votes in this case.
+++ https://github.com/cosmos/cosmos-sdk/blob/6f58963e7f6ce820e9b33f02f06f7b96f6d2e347/proto/cosmos/group/v1beta1/tx.proto#L218-L239 +++ https://github.com/cosmos/cosmos-sdk/blob/6f58963e7f6ce820e9b33f02f06f7b96f6d2e347/proto/cosmos/group/v1beta1/tx.proto#L218-L239
@ -100,7 +100,7 @@ A proposal can be executed with the `MsgExec`.
The messages that are part of this proposal won't be executed if: The messages that are part of this proposal won't be executed if:
- the group has been modified before tally. - the group has been modified before tally.
- the group account has been modified before tally. - the group policy has been modified before tally.
- the proposal has not been accepted. - the proposal has not been accepted.
- the proposal status is not closed. - the proposal status is not closed.
- the proposal has already been successfully executed. - the proposal has already been successfully executed.

View File

@ -20,19 +20,19 @@ The group module emits the following events:
| message | action | /cosmos.group.v1beta1.Msg/UpdateGroup{Admin\|Metadata\|Members} | | message | action | /cosmos.group.v1beta1.Msg/UpdateGroup{Admin\|Metadata\|Members} |
| cosmos.group.v1beta1.EventUpdateGroup | group_id | {groupId} | | cosmos.group.v1beta1.EventUpdateGroup | group_id | {groupId} |
## EventCreateGroupAccount ## EventCreateGroupPolicy
| Type | Attribute Key | Attribute Value | | Type | Attribute Key | Attribute Value |
|----------------------------------------------|---------------|----------------------------------------------| |----------------------------------------------|---------------|----------------------------------------------|
| message | action | /cosmos.group.v1beta1.Msg/CreateGroupAccount | | message | action | /cosmos.group.v1beta1.Msg/CreateGroupPolicy |
| cosmos.group.v1beta1.EventCreateGroupAccount | address | {groupAccountAddress} | | cosmos.group.v1beta1.EventCreateGroupPolicy | address | {groupPolicyAddress} |
## EventUpdateGroupAccount ## EventUpdateGroupPolicy
| Type | Attribute Key | Attribute Value | | Type | Attribute Key | Attribute Value |
|----------------------------------------------|---------------|-------------------------------------------------------------------------------| |----------------------------------------------|---------------|-------------------------------------------------------------------------------|
| message | action | /cosmos.group.v1beta1.Msg/UpdateGroupAccount{Admin\|Metadata\|DecisionPolicy} | | message | action | /cosmos.group.v1beta1.Msg/UpdateGroupPolicy{Admin\|Metadata\|DecisionPolicy} |
| cosmos.group.v1beta1.EventUpdateGroupAccount | address | {groupAccountAddress} | | cosmos.group.v1beta1.EventUpdateGroupPolicy | address | {groupPolicyAddress} |
## EventCreateProposal ## EventCreateProposal

View File

@ -40,18 +40,18 @@ total_weight: "3"
version: "1" version: "1"
``` ```
#### group-account-info #### group-policy-info
The `group-account-info` command allows users to query for group account info by group account address. The `group-policy-info` command allows users to query for group policy info by account address of group policy .
```bash ```bash
simd query group group-account-info [group-account] [flags] simd query group group-policy-info [group-policy-account] [flags]
``` ```
Example: Example:
```bash ```bash
simd query group group-account-info cosmos1.. simd query group group-policy-info cosmos1..
``` ```
Example Output: Example Output:
@ -134,24 +134,24 @@ pagination:
total: "2" total: "2"
``` ```
#### group-accounts-by-group #### group-policies-by-group
The `group-accounts-by-group` command allows users to query for group accounts by group id with pagination flags. The `group-policies-by-group` command allows users to query for group policies by group id with pagination flags.
```bash ```bash
simd query group group-accounts-by-group [group-id] [flags] simd query group group-policies-by-group [group-id] [flags]
``` ```
Example: Example:
```bash ```bash
simd query group group-accounts-by-group 1 simd query group group-policies-by-group 1
``` ```
Example Output: Example Output:
```bash ```bash
group_accounts: group_policies:
- address: cosmos1.. - address: cosmos1..
admin: cosmos1.. admin: cosmos1..
decision_policy: decision_policy:
@ -175,24 +175,24 @@ pagination:
total: "2" total: "2"
``` ```
#### group-accounts-by-admin #### group-policies-by-admin
The `group-accounts-by-admin` command allows users to query for group accounts by admin account address with pagination flags. The `group-policies-by-admin` command allows users to query for group policies by admin account address with pagination flags.
```bash ```bash
simd query group group-accounts-by-admin [admin] [flags] simd query group group-policies-by-admin [admin] [flags]
``` ```
Example: Example:
```bash ```bash
simd query group group-accounts-by-admin cosmos1.. simd query group group-policies-by-admin cosmos1..
``` ```
Example Output: Example Output:
```bash ```bash
group_accounts: group_policies:
- address: cosmos1.. - address: cosmos1..
admin: cosmos1.. admin: cosmos1..
decision_policy: decision_policy:
@ -236,7 +236,7 @@ Example Output:
proposal: proposal:
address: cosmos1.. address: cosmos1..
executor_result: EXECUTOR_RESULT_NOT_RUN executor_result: EXECUTOR_RESULT_NOT_RUN
group_account_version: "1" group_policy_version: "1"
group_version: "1" group_version: "1"
metadata: AQ== metadata: AQ==
msgs: msgs:
@ -260,18 +260,18 @@ proposal:
yes_count: "0" yes_count: "0"
``` ```
#### proposals-by-group-account #### proposals-by-group-policy
The `proposals-by-group-account` command allows users to query for proposals by group account address with pagination flags. The `proposals-by-group-policy` command allows users to query for proposals by account address of group policy with pagination flags.
```bash ```bash
simd query group proposals-by-group-account [group-account] [flags] simd query group proposals-by-group-policy [group-policy-account] [flags]
``` ```
Example: Example:
```bash ```bash
simd query group proposals-by-group-account cosmos1.. simd query group proposals-by-group-policy cosmos1..
``` ```
Example Output: Example Output:
@ -283,7 +283,7 @@ pagination:
proposals: proposals:
- address: cosmos1.. - address: cosmos1..
executor_result: EXECUTOR_RESULT_NOT_RUN executor_result: EXECUTOR_RESULT_NOT_RUN
group_account_version: "1" group_policy_version: "1"
group_version: "1" group_version: "1"
metadata: AQ== metadata: AQ==
msgs: msgs:
@ -453,54 +453,54 @@ Example:
simd tx group update-group-metadata cosmos1.. 1 "AQ==" simd tx group update-group-metadata cosmos1.. 1 "AQ=="
``` ```
#### create-group-account #### create-group-policy
The `create-group-account` command allows users to create a group account which is an account associated with a group and a decision policy. The `create-group-policy` command allows users to create a group policy which is an account associated with a group and a decision policy.
```bash ```bash
simd tx group create-group-account [admin] [group-id] [metadata] [decision-policy] [flags] simd tx group create-group-policy [admin] [group-id] [metadata] [decision-policy] [flags]
``` ```
Example: Example:
```bash ```bash
simd tx group create-group-account cosmos1.. 1 "AQ==" '{"@type":"/cosmos.group.v1beta1.ThresholdDecisionPolicy", "threshold":"1", "timeout":"600s"}' simd tx group create-group-policy cosmos1.. 1 "AQ==" '{"@type":"/cosmos.group.v1beta1.ThresholdDecisionPolicy", "threshold":"1", "timeout":"600s"}'
``` ```
#### update-group-account-admin #### update-group-policy-admin
The `update-group-account-admin` command allows users to update a group account admin. The `update-group-policy-admin` command allows users to update a group policy admin.
```bash ```bash
simd tx group update-group-account-admin [admin] [group-account] [new-admin] [flags] simd tx group update-group-policy-admin [admin] [group-policy-account] [new-admin] [flags]
``` ```
Example: Example:
```bash ```bash
simd tx group update-group-account-admin cosmos1.. cosmos1.. cosmos1.. simd tx group update-group-policy-admin cosmos1.. cosmos1.. cosmos1..
``` ```
#### update-group-account-metadata #### update-group-policy-metadata
The `update-group-account-metadata` command allows users to update a group account metadata. The `update-group-policy-metadata` command allows users to update a group policy metadata.
```bash ```bash
simd tx group update-group-account-metadata [admin] [group-account] [new-metadata] [flags] simd tx group update-group-policy-metadata [admin] [group-policy-account] [new-metadata] [flags]
``` ```
Example: Example:
```bash ```bash
simd tx group update-group-account-metadata cosmos1.. cosmos1.. "AQ==" simd tx group update-group-policy-metadata cosmos1.. cosmos1.. "AQ=="
``` ```
#### update-group-account-policy #### update-group-account-policy
The `update-group-account-policy` command allows users to update a group account decision policy. The `update-group-account-policy` command allows users to update a group policy's decision policy.
```bash ```bash
simd tx group update-group-account-policy [admin] [group-account] [decision-policy] [flags] simd tx group update-group-account-policy [admin] [group-policy-account] [decision-policy] [flags]
``` ```
Example: Example:
@ -514,7 +514,7 @@ simd tx group update-group-account-policy cosmos1.. cosmos1.. '{"@type":"/cosmos
The `create-proposal` command allows users to submit a new proposal. The `create-proposal` command allows users to submit a new proposal.
```bash ```bash
simd tx group create-proposal [group-account] [proposer[,proposer]*] [msg_tx_json_file] [metadata] [flags] simd tx group create-proposal [group-policy-account] [proposer[,proposer]*] [msg_tx_json_file] [metadata] [flags]
``` ```
Example: Example:
@ -584,19 +584,19 @@ Example Output:
} }
``` ```
### GroupAccountInfo ### GroupPolicyInfo
The `GroupAccountInfo` endpoint allows users to query for group account info by group account address. The `GroupPolicyInfo` endpoint allows users to query for group policy info by account address of group policy.
```bash ```bash
cosmos.group.v1beta1.Query/GroupAccountInfo cosmos.group.v1beta1.Query/GroupPolicyInfo
``` ```
Example: Example:
```bash ```bash
grpcurl -plaintext \ grpcurl -plaintext \
-d '{"address":"cosmos1.."}' localhost:9090 cosmos.group.v1beta1.Query/GroupAccountInfo -d '{"address":"cosmos1.."}' localhost:9090 cosmos.group.v1beta1.Query/GroupPolicyInfo
``` ```
Example Output: Example Output:
@ -695,26 +695,26 @@ Example Output:
} }
``` ```
### GroupAccountsByGroup ### GroupPolicysByGroup
The `GroupAccountsByGroup` endpoint allows users to query for group accounts by group id with pagination flags. The `GroupPolicysByGroup` endpoint allows users to query for group policies by group id with pagination flags.
```bash ```bash
cosmos.group.v1beta1.Query/GroupAccountsByGroup cosmos.group.v1beta1.Query/GroupPolicysByGroup
``` ```
Example: Example:
```bash ```bash
grpcurl -plaintext \ grpcurl -plaintext \
-d '{"group_id":"1"}' localhost:9090 cosmos.group.v1beta1.Query/GroupAccountsByGroup -d '{"group_id":"1"}' localhost:9090 cosmos.group.v1beta1.Query/GroupPolicysByGroup
``` ```
Example Output: Example Output:
```bash ```bash
{ {
"groupAccounts": [ "GroupPolicys": [
{ {
"address": "cosmos1..", "address": "cosmos1..",
"groupId": "1", "groupId": "1",
@ -736,26 +736,26 @@ Example Output:
} }
``` ```
### GroupAccountsByAdmin ### GroupPolicysByAdmin
The `GroupAccountsByAdmin` endpoint allows users to query for group accounts by admin account address with pagination flags. The `GroupPolicysByAdmin` endpoint allows users to query for group policies by admin account address with pagination flags.
```bash ```bash
cosmos.group.v1beta1.Query/GroupAccountsByAdmin cosmos.group.v1beta1.Query/GroupPolicysByAdmin
``` ```
Example: Example:
```bash ```bash
grpcurl -plaintext \ grpcurl -plaintext \
-d '{"admin":"cosmos1.."}' localhost:9090 cosmos.group.v1beta1.Query/GroupAccountsByAdmin -d '{"admin":"cosmos1.."}' localhost:9090 cosmos.group.v1beta1.Query/GroupPolicysByAdmin
``` ```
Example Output: Example Output:
```bash ```bash
{ {
"groupAccounts": [ "GroupPolicys": [
{ {
"address": "cosmos1..", "address": "cosmos1..",
"groupId": "1", "groupId": "1",
@ -804,7 +804,7 @@ Example Output:
], ],
"submittedAt": "2021-12-17T07:06:26.310638964Z", "submittedAt": "2021-12-17T07:06:26.310638964Z",
"groupVersion": "1", "groupVersion": "1",
"groupAccountVersion": "1", "GroupPolicyVersion": "1",
"status": "STATUS_SUBMITTED", "status": "STATUS_SUBMITTED",
"result": "RESULT_UNFINALIZED", "result": "RESULT_UNFINALIZED",
"voteState": { "voteState": {
@ -822,19 +822,19 @@ Example Output:
} }
``` ```
### ProposalsByGroupAccount ### ProposalsByGroupPolicy
The `ProposalsByGroupAccount` endpoint allows users to query for proposals by group account address with pagination flags. The `ProposalsByGroupPolicy` endpoint allows users to query for proposals by account address of group policy with pagination flags.
```bash ```bash
cosmos.group.v1beta1.Query/ProposalsByGroupAccount cosmos.group.v1beta1.Query/ProposalsByGroupPolicy
``` ```
Example: Example:
```bash ```bash
grpcurl -plaintext \ grpcurl -plaintext \
-d '{"address":"cosmos1.."}' localhost:9090 cosmos.group.v1beta1.Query/ProposalsByGroupAccount -d '{"address":"cosmos1.."}' localhost:9090 cosmos.group.v1beta1.Query/ProposalsByGroupPolicy
``` ```
Example Output: Example Output:
@ -850,7 +850,7 @@ Example Output:
], ],
"submittedAt": "2021-12-17T08:03:27.099649352Z", "submittedAt": "2021-12-17T08:03:27.099649352Z",
"groupVersion": "1", "groupVersion": "1",
"groupAccountVersion": "1", "GroupPolicyVersion": "1",
"status": "STATUS_CLOSED", "status": "STATUS_CLOSED",
"result": "RESULT_ACCEPTED", "result": "RESULT_ACCEPTED",
"voteState": { "voteState": {
@ -998,18 +998,18 @@ Example Output:
} }
``` ```
### GroupAccountInfo ### GroupPolicyInfo
The `GroupAccountInfo` endpoint allows users to query for group account info by group account address. The `GroupPolicyInfo` endpoint allows users to query for group policy info by account address of group policy.
```bash ```bash
/cosmos/group/v1beta1/group_account_info/{address} /cosmos/group/v1beta1/group_policy_info/{address}
``` ```
Example: Example:
```bash ```bash
curl localhost:1317/cosmos/group/v1beta1/group_account_info/cosmos1.. curl localhost:1317/cosmos/group/v1beta1/group_policy_info/cosmos1..
``` ```
Example Output: Example Output:
@ -1114,25 +1114,25 @@ Example Output:
} }
``` ```
### GroupAccountsByGroup ### GroupPolicysByGroup
The `GroupAccountsByGroup` endpoint allows users to query for group accounts by group id with pagination flags. The `GroupPolicysByGroup` endpoint allows users to query for group policies by group id with pagination flags.
```bash ```bash
/cosmos/group/v1beta1/group_accounts_by_group/{group_id} /cosmos/group/v1beta1/group_policies_by_group/{group_id}
``` ```
Example: Example:
```bash ```bash
curl localhost:1317/cosmos/group/v1beta1/group_accounts_by_group/1 curl localhost:1317/cosmos/group/v1beta1/group_policies_by_group/1
``` ```
Example Output: Example Output:
```bash ```bash
{ {
"group_accounts": [ "group_policies": [
{ {
"address": "cosmos1..", "address": "cosmos1..",
"group_id": "1", "group_id": "1",
@ -1165,25 +1165,25 @@ Example Output:
} }
``` ```
### GroupAccountsByAdmin ### GroupPolicysByAdmin
The `GroupAccountsByAdmin` endpoint allows users to query for group accounts by admin account address with pagination flags. The `GroupPolicysByAdmin` endpoint allows users to query for group policies by admin account address with pagination flags.
```bash ```bash
/cosmos/group/v1beta1/group_accounts_by_admin/{admin} /cosmos/group/v1beta1/group_policies_by_admin/{admin}
``` ```
Example: Example:
```bash ```bash
curl localhost:1317/cosmos/group/v1beta1/group_accounts_by_admin/cosmos1.. curl localhost:1317/cosmos/group/v1beta1/group_policies_by_admin/cosmos1..
``` ```
Example Output: Example Output:
```bash ```bash
{ {
"group_accounts": [ "group_policies": [
{ {
"address": "cosmos1..", "address": "cosmos1..",
"group_id": "1", "group_id": "1",
@ -1242,7 +1242,7 @@ Example Output:
], ],
"submitted_at": "2021-12-17T07:06:26.310638964Z", "submitted_at": "2021-12-17T07:06:26.310638964Z",
"group_version": "1", "group_version": "1",
"group_account_version": "1", "group_policy_version": "1",
"status": "STATUS_SUBMITTED", "status": "STATUS_SUBMITTED",
"result": "RESULT_UNFINALIZED", "result": "RESULT_UNFINALIZED",
"vote_state": { "vote_state": {
@ -1270,18 +1270,18 @@ Example Output:
} }
``` ```
### ProposalsByGroupAccount ### ProposalsByGroupPolicy
The `ProposalsByGroupAccount` endpoint allows users to query for proposals by group account address with pagination flags. The `ProposalsByGroupPolicy` endpoint allows users to query for proposals by account address of group policy with pagination flags.
```bash ```bash
/cosmos/group/v1beta1/proposals_by_group_account/{address} /cosmos/group/v1beta1/proposals_by_group_policy/{address}
``` ```
Example: Example:
```bash ```bash
curl localhost:1317/cosmos/group/v1beta1/proposals_by_group_account/cosmos1.. curl localhost:1317/cosmos/group/v1beta1/proposals_by_group_policy/cosmos1..
``` ```
Example Output: Example Output:
@ -1298,7 +1298,7 @@ Example Output:
], ],
"submitted_at": "2021-12-17T08:03:27.099649352Z", "submitted_at": "2021-12-17T08:03:27.099649352Z",
"group_version": "1", "group_version": "1",
"group_account_version": "1", "group_policy_version": "1",
"status": "STATUS_CLOSED", "status": "STATUS_CLOSED",
"result": "RESULT_ACCEPTED", "result": "RESULT_ACCEPTED",
"vote_state": { "vote_state": {

File diff suppressed because it is too large Load Diff

View File

@ -118,12 +118,12 @@ func (p *ThresholdDecisionPolicy) Validate(g GroupInfo) error {
return nil return nil
} }
var _ orm.Validateable = GroupAccountInfo{} var _ orm.Validateable = GroupPolicyInfo{}
// NewGroupAccountInfo creates a new GroupAccountInfo instance // NewGroupPolicyInfo creates a new GroupPolicyInfo instance
func NewGroupAccountInfo(address sdk.AccAddress, group uint64, admin sdk.AccAddress, metadata []byte, func NewGroupPolicyInfo(address sdk.AccAddress, group uint64, admin sdk.AccAddress, metadata []byte,
version uint64, decisionPolicy DecisionPolicy) (GroupAccountInfo, error) { version uint64, decisionPolicy DecisionPolicy) (GroupPolicyInfo, error) {
p := GroupAccountInfo{ p := GroupPolicyInfo{
Address: address.String(), Address: address.String(),
GroupId: group, GroupId: group,
Admin: admin.String(), Admin: admin.String(),
@ -133,13 +133,13 @@ func NewGroupAccountInfo(address sdk.AccAddress, group uint64, admin sdk.AccAddr
err := p.SetDecisionPolicy(decisionPolicy) err := p.SetDecisionPolicy(decisionPolicy)
if err != nil { if err != nil {
return GroupAccountInfo{}, err return GroupPolicyInfo{}, err
} }
return p, nil return p, nil
} }
func (g *GroupAccountInfo) SetDecisionPolicy(decisionPolicy DecisionPolicy) error { func (g *GroupPolicyInfo) SetDecisionPolicy(decisionPolicy DecisionPolicy) error {
msg, ok := decisionPolicy.(proto.Message) msg, ok := decisionPolicy.(proto.Message)
if !ok { if !ok {
return fmt.Errorf("can't proto marshal %T", msg) return fmt.Errorf("can't proto marshal %T", msg)
@ -152,7 +152,7 @@ func (g *GroupAccountInfo) SetDecisionPolicy(decisionPolicy DecisionPolicy) erro
return nil return nil
} }
func (g GroupAccountInfo) GetDecisionPolicy() DecisionPolicy { func (g GroupPolicyInfo) GetDecisionPolicy() DecisionPolicy {
decisionPolicy, ok := g.DecisionPolicy.GetCachedValue().(DecisionPolicy) decisionPolicy, ok := g.DecisionPolicy.GetCachedValue().(DecisionPolicy)
if !ok { if !ok {
return nil return nil
@ -161,12 +161,12 @@ func (g GroupAccountInfo) GetDecisionPolicy() DecisionPolicy {
} }
// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces // UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces
func (g GroupAccountInfo) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error { func (g GroupPolicyInfo) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
var decisionPolicy DecisionPolicy var decisionPolicy DecisionPolicy
return unpacker.UnpackAny(g.DecisionPolicy, &decisionPolicy) return unpacker.UnpackAny(g.DecisionPolicy, &decisionPolicy)
} }
func (g GroupAccountInfo) PrimaryKeyFields() []interface{} { func (g GroupPolicyInfo) PrimaryKeyFields() []interface{} {
addr, err := sdk.AccAddressFromBech32(g.Address) addr, err := sdk.AccAddressFromBech32(g.Address)
if err != nil { if err != nil {
panic(err) panic(err)
@ -174,7 +174,7 @@ func (g GroupAccountInfo) PrimaryKeyFields() []interface{} {
return []interface{}{addr.Bytes()} return []interface{}{addr.Bytes()}
} }
func (g GroupAccountInfo) ValidateBasic() error { func (g GroupPolicyInfo) ValidateBasic() error {
_, err := sdk.AccAddressFromBech32(g.Admin) _, err := sdk.AccAddressFromBech32(g.Admin)
if err != nil { if err != nil {
return sdkerrors.Wrap(err, "admin") return sdkerrors.Wrap(err, "admin")
@ -182,7 +182,7 @@ func (g GroupAccountInfo) ValidateBasic() error {
_, err = sdk.AccAddressFromBech32(g.Address) _, err = sdk.AccAddressFromBech32(g.Address)
if err != nil { if err != nil {
return sdkerrors.Wrap(err, "group account") return sdkerrors.Wrap(err, "group policy")
} }
if g.GroupId == 0 { if g.GroupId == 0 {
@ -232,16 +232,16 @@ func (v Vote) PrimaryKeyFields() []interface{} {
} }
// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces // UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces
func (q QueryGroupAccountsByGroupResponse) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error { func (q QueryGroupPoliciesByGroupResponse) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
return unpackGroupAccounts(unpacker, q.GroupAccounts) return unpackGroupPolicies(unpacker, q.GroupPolicies)
} }
// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces // UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces
func (q QueryGroupAccountsByAdminResponse) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error { func (q QueryGroupPoliciesByAdminResponse) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
return unpackGroupAccounts(unpacker, q.GroupAccounts) return unpackGroupPolicies(unpacker, q.GroupPolicies)
} }
func unpackGroupAccounts(unpacker codectypes.AnyUnpacker, accs []*GroupAccountInfo) error { func unpackGroupPolicies(unpacker codectypes.AnyUnpacker, accs []*GroupPolicyInfo) error {
for _, g := range accs { for _, g := range accs {
err := g.UnpackInterfaces(unpacker) err := g.UnpackInterfaces(unpacker)
if err != nil { if err != nil {

View File

@ -486,35 +486,35 @@ func (m *GroupMember) GetMember() *Member {
return nil return nil
} }
// GroupAccountInfo represents the high-level on-chain information for a group account. // GroupPolicyInfo represents the high-level on-chain information for a group policy.
type GroupAccountInfo struct { type GroupPolicyInfo struct {
// address is the group account address. // address is the account address of group policy.
Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
// group_id is the unique ID of the group. // group_id is the unique ID of the group.
GroupId uint64 `protobuf:"varint,2,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` GroupId uint64 `protobuf:"varint,2,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
// admin is the account address of the group admin. // admin is the account address of the group admin.
Admin string `protobuf:"bytes,3,opt,name=admin,proto3" json:"admin,omitempty"` Admin string `protobuf:"bytes,3,opt,name=admin,proto3" json:"admin,omitempty"`
// metadata is any arbitrary metadata to attached to the group account. // metadata is any arbitrary metadata to attached to the group policy.
Metadata []byte `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` Metadata []byte `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"`
// version is used to track changes to a group's GroupAccountInfo structure that // version is used to track changes to a group's GroupPolicyInfo structure that
// would create a different result on a running proposal. // would create a different result on a running proposal.
Version uint64 `protobuf:"varint,5,opt,name=version,proto3" json:"version,omitempty"` Version uint64 `protobuf:"varint,5,opt,name=version,proto3" json:"version,omitempty"`
// decision_policy specifies the group account's decision policy. // decision_policy specifies the group policy's decision policy.
DecisionPolicy *types.Any `protobuf:"bytes,6,opt,name=decision_policy,json=decisionPolicy,proto3" json:"decision_policy,omitempty"` DecisionPolicy *types.Any `protobuf:"bytes,6,opt,name=decision_policy,json=decisionPolicy,proto3" json:"decision_policy,omitempty"`
} }
func (m *GroupAccountInfo) Reset() { *m = GroupAccountInfo{} } func (m *GroupPolicyInfo) Reset() { *m = GroupPolicyInfo{} }
func (m *GroupAccountInfo) String() string { return proto.CompactTextString(m) } func (m *GroupPolicyInfo) String() string { return proto.CompactTextString(m) }
func (*GroupAccountInfo) ProtoMessage() {} func (*GroupPolicyInfo) ProtoMessage() {}
func (*GroupAccountInfo) Descriptor() ([]byte, []int) { func (*GroupPolicyInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_e091dfce5c49c8b6, []int{5} return fileDescriptor_e091dfce5c49c8b6, []int{5}
} }
func (m *GroupAccountInfo) XXX_Unmarshal(b []byte) error { func (m *GroupPolicyInfo) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b) return m.Unmarshal(b)
} }
func (m *GroupAccountInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *GroupPolicyInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic { if deterministic {
return xxx_messageInfo_GroupAccountInfo.Marshal(b, m, deterministic) return xxx_messageInfo_GroupPolicyInfo.Marshal(b, m, deterministic)
} else { } else {
b = b[:cap(b)] b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b) n, err := m.MarshalToSizedBuffer(b)
@ -524,26 +524,26 @@ func (m *GroupAccountInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, er
return b[:n], nil return b[:n], nil
} }
} }
func (m *GroupAccountInfo) XXX_Merge(src proto.Message) { func (m *GroupPolicyInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_GroupAccountInfo.Merge(m, src) xxx_messageInfo_GroupPolicyInfo.Merge(m, src)
} }
func (m *GroupAccountInfo) XXX_Size() int { func (m *GroupPolicyInfo) XXX_Size() int {
return m.Size() return m.Size()
} }
func (m *GroupAccountInfo) XXX_DiscardUnknown() { func (m *GroupPolicyInfo) XXX_DiscardUnknown() {
xxx_messageInfo_GroupAccountInfo.DiscardUnknown(m) xxx_messageInfo_GroupPolicyInfo.DiscardUnknown(m)
} }
var xxx_messageInfo_GroupAccountInfo proto.InternalMessageInfo var xxx_messageInfo_GroupPolicyInfo proto.InternalMessageInfo
// Proposal defines a group proposal. Any member of a group can submit a proposal // Proposal defines a group proposal. Any member of a group can submit a proposal
// for a group account to decide upon. // for a group policy to decide upon.
// A proposal consists of a set of `sdk.Msg`s that will be executed if the proposal // A proposal consists of a set of `sdk.Msg`s that will be executed if the proposal
// passes as well as some optional metadata associated with the proposal. // passes as well as some optional metadata associated with the proposal.
type Proposal struct { type Proposal struct {
// proposal_id is the unique id of the proposal. // proposal_id is the unique id of the proposal.
ProposalId uint64 `protobuf:"varint,1,opt,name=proposal_id,json=proposalId,proto3" json:"proposal_id,omitempty"` ProposalId uint64 `protobuf:"varint,1,opt,name=proposal_id,json=proposalId,proto3" json:"proposal_id,omitempty"`
// address is the group account address. // address is the account address of group policy.
Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"`
// metadata is any arbitrary metadata to attached to the proposal. // metadata is any arbitrary metadata to attached to the proposal.
Metadata []byte `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"` Metadata []byte `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"`
@ -554,9 +554,9 @@ type Proposal struct {
// group_version tracks the version of the group that this proposal corresponds to. // group_version tracks the version of the group that this proposal corresponds to.
// When group membership is changed, existing proposals from previous group versions will become invalid. // When group membership is changed, existing proposals from previous group versions will become invalid.
GroupVersion uint64 `protobuf:"varint,6,opt,name=group_version,json=groupVersion,proto3" json:"group_version,omitempty"` GroupVersion uint64 `protobuf:"varint,6,opt,name=group_version,json=groupVersion,proto3" json:"group_version,omitempty"`
// group_account_version tracks the version of the group account that this proposal corresponds to. // group_policy_version tracks the version of the group policy that this proposal corresponds to.
// When a decision policy is changed, existing proposals from previous policy versions will become invalid. // When a decision policy is changed, existing proposals from previous policy versions will become invalid.
GroupAccountVersion uint64 `protobuf:"varint,7,opt,name=group_account_version,json=groupAccountVersion,proto3" json:"group_account_version,omitempty"` GroupPolicyVersion uint64 `protobuf:"varint,7,opt,name=group_policy_version,json=groupPolicyVersion,proto3" json:"group_policy_version,omitempty"`
// Status represents the high level position in the life cycle of the proposal. Initial value is Submitted. // Status represents the high level position in the life cycle of the proposal. Initial value is Submitted.
Status Proposal_Status `protobuf:"varint,8,opt,name=status,proto3,enum=cosmos.group.v1beta1.Proposal_Status" json:"status,omitempty"` Status Proposal_Status `protobuf:"varint,8,opt,name=status,proto3,enum=cosmos.group.v1beta1.Proposal_Status" json:"status,omitempty"`
// result is the final result based on the votes and election rule. Initial value is unfinalized. // result is the final result based on the votes and election rule. Initial value is unfinalized.
@ -744,7 +744,7 @@ func init() {
proto.RegisterType((*ThresholdDecisionPolicy)(nil), "cosmos.group.v1beta1.ThresholdDecisionPolicy") proto.RegisterType((*ThresholdDecisionPolicy)(nil), "cosmos.group.v1beta1.ThresholdDecisionPolicy")
proto.RegisterType((*GroupInfo)(nil), "cosmos.group.v1beta1.GroupInfo") proto.RegisterType((*GroupInfo)(nil), "cosmos.group.v1beta1.GroupInfo")
proto.RegisterType((*GroupMember)(nil), "cosmos.group.v1beta1.GroupMember") proto.RegisterType((*GroupMember)(nil), "cosmos.group.v1beta1.GroupMember")
proto.RegisterType((*GroupAccountInfo)(nil), "cosmos.group.v1beta1.GroupAccountInfo") proto.RegisterType((*GroupPolicyInfo)(nil), "cosmos.group.v1beta1.GroupPolicyInfo")
proto.RegisterType((*Proposal)(nil), "cosmos.group.v1beta1.Proposal") proto.RegisterType((*Proposal)(nil), "cosmos.group.v1beta1.Proposal")
proto.RegisterType((*Tally)(nil), "cosmos.group.v1beta1.Tally") proto.RegisterType((*Tally)(nil), "cosmos.group.v1beta1.Tally")
proto.RegisterType((*Vote)(nil), "cosmos.group.v1beta1.Vote") proto.RegisterType((*Vote)(nil), "cosmos.group.v1beta1.Vote")
@ -753,98 +753,97 @@ func init() {
func init() { proto.RegisterFile("cosmos/group/v1beta1/types.proto", fileDescriptor_e091dfce5c49c8b6) } func init() { proto.RegisterFile("cosmos/group/v1beta1/types.proto", fileDescriptor_e091dfce5c49c8b6) }
var fileDescriptor_e091dfce5c49c8b6 = []byte{ var fileDescriptor_e091dfce5c49c8b6 = []byte{
// 1285 bytes of a gzipped FileDescriptorProto // 1278 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0xcf, 0x6f, 0x1b, 0xc5, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0x4d, 0x6f, 0x1b, 0x45,
0x17, 0xf7, 0xda, 0x8e, 0x7f, 0x3c, 0x27, 0x8e, 0x35, 0xdf, 0xb4, 0x75, 0x9c, 0xd6, 0xd9, 0xba, 0x18, 0xf6, 0xda, 0x8e, 0x3f, 0x5e, 0x27, 0x8e, 0x35, 0x0a, 0xad, 0xe3, 0xb4, 0xce, 0xd6, 0x05,
0x5f, 0xa4, 0x08, 0x14, 0x5b, 0x09, 0x3f, 0x0e, 0x15, 0xad, 0xb0, 0x37, 0x9b, 0x62, 0x94, 0xda, 0x29, 0x02, 0xc5, 0x26, 0xe1, 0xe3, 0x50, 0xd1, 0x0a, 0x7b, 0xb3, 0x29, 0x46, 0xa9, 0x1d, 0x76,
0x61, 0x77, 0x1d, 0xa0, 0x07, 0xac, 0xf5, 0xee, 0xd4, 0x59, 0xb0, 0x77, 0xac, 0xdd, 0xd9, 0x50, 0xd7, 0x01, 0x7a, 0xc0, 0x5a, 0xef, 0x4e, 0x9d, 0x05, 0x7b, 0xc7, 0xda, 0x9d, 0x0d, 0x35, 0xbf,
0xf3, 0x17, 0x14, 0x9f, 0x7a, 0x84, 0x83, 0xa5, 0x4a, 0x70, 0xe1, 0xc4, 0xa5, 0x7f, 0x44, 0xc5, 0xa0, 0xf8, 0xd4, 0x23, 0x1c, 0x2c, 0x55, 0xea, 0x81, 0x23, 0x97, 0xfe, 0x88, 0x8a, 0x53, 0xc5,
0xa9, 0xe2, 0x84, 0x38, 0x00, 0x6a, 0x2f, 0x9c, 0xf9, 0x0b, 0xd0, 0xce, 0xcc, 0x36, 0x71, 0xeb, 0x09, 0x71, 0x00, 0xd4, 0x5e, 0x38, 0xf3, 0x0b, 0xd0, 0xce, 0xcc, 0x36, 0x75, 0xeb, 0x3a, 0x2d,
0xba, 0x2d, 0xe2, 0xe4, 0x7d, 0xf3, 0x3e, 0x9f, 0x79, 0xef, 0x7d, 0xe6, 0xcd, 0x0f, 0x83, 0x6c, 0xe2, 0x14, 0xbf, 0xf3, 0x3e, 0xcf, 0xfb, 0xf1, 0xcc, 0xbb, 0x33, 0x13, 0x90, 0x2d, 0xe2, 0x0f,
0x11, 0x7f, 0x48, 0xfc, 0x5a, 0xdf, 0x23, 0xc1, 0xa8, 0x76, 0xb2, 0xd3, 0xc3, 0xd4, 0xdc, 0xa9, 0x89, 0x5f, 0xeb, 0x7b, 0x24, 0x18, 0xd5, 0x4e, 0x76, 0x7a, 0x98, 0x9a, 0x3b, 0x35, 0x3a, 0x1e,
0xd1, 0xf1, 0x08, 0xfb, 0xd5, 0x91, 0x47, 0x28, 0x41, 0x6b, 0x1c, 0x51, 0x65, 0x88, 0xaa, 0x40, 0x61, 0xbf, 0x3a, 0xf2, 0x08, 0x25, 0x68, 0x8d, 0x23, 0xaa, 0x0c, 0x51, 0x15, 0x88, 0xd2, 0x5a,
0x94, 0xd6, 0xfa, 0xa4, 0x4f, 0x18, 0xa0, 0x16, 0x7e, 0x71, 0x6c, 0xa9, 0xdc, 0x27, 0xa4, 0x3f, 0x9f, 0xf4, 0x09, 0x03, 0xd4, 0xc2, 0x5f, 0x1c, 0x5b, 0x2a, 0xf7, 0x09, 0xe9, 0x0f, 0x70, 0x8d,
0xc0, 0x35, 0x66, 0xf5, 0x82, 0xdb, 0x35, 0x3b, 0xf0, 0x4c, 0xea, 0x10, 0x57, 0xf8, 0x37, 0x9f, 0x59, 0xbd, 0xe0, 0x56, 0xcd, 0x0e, 0x3c, 0x93, 0x3a, 0xc4, 0x15, 0xfe, 0xcd, 0xe7, 0xfd, 0xd4,
0xf5, 0x53, 0x67, 0x88, 0x7d, 0x6a, 0x0e, 0x47, 0x02, 0xb0, 0xce, 0x83, 0x75, 0xf9, 0xcc, 0x22, 0x19, 0x62, 0x9f, 0x9a, 0xc3, 0x91, 0x00, 0xac, 0xf3, 0x64, 0x5d, 0x1e, 0x59, 0x64, 0x16, 0xae,
0xb2, 0x70, 0x3d, 0xcb, 0x35, 0xdd, 0x31, 0x77, 0x55, 0x46, 0x90, 0xba, 0x89, 0x87, 0x3d, 0xec, 0xe7, 0xb9, 0xa6, 0x3b, 0xe6, 0xae, 0xca, 0x08, 0x52, 0x37, 0xf0, 0xb0, 0x87, 0x3d, 0xb4, 0x0b,
0xa1, 0x5d, 0x48, 0x9b, 0xb6, 0xed, 0x61, 0xdf, 0x2f, 0x4a, 0xb2, 0xb4, 0x95, 0x6d, 0x14, 0x7f, 0x69, 0xd3, 0xb6, 0x3d, 0xec, 0xfb, 0x45, 0x49, 0x96, 0xb6, 0xb2, 0x8d, 0xe2, 0xaf, 0x0f, 0xb6,
0x79, 0xb0, 0x1d, 0x55, 0x50, 0xe7, 0x1e, 0x9d, 0x7a, 0x8e, 0xdb, 0xd7, 0x22, 0x20, 0x3a, 0x0f, 0xa3, 0x0e, 0xea, 0xdc, 0xa3, 0x53, 0xcf, 0x71, 0xfb, 0x5a, 0x04, 0x44, 0xe7, 0x20, 0xf5, 0x2d,
0xa9, 0xaf, 0xb0, 0xd3, 0x3f, 0xa6, 0xc5, 0x78, 0x48, 0xd1, 0x84, 0x85, 0x4a, 0x90, 0x19, 0x62, 0x76, 0xfa, 0xc7, 0xb4, 0x18, 0x0f, 0x29, 0x9a, 0xb0, 0x50, 0x09, 0x32, 0x43, 0x4c, 0x4d, 0xdb,
0x6a, 0xda, 0x26, 0x35, 0x8b, 0x09, 0x59, 0xda, 0x5a, 0xd6, 0x9e, 0xda, 0x95, 0x1b, 0x90, 0xe6, 0xa4, 0x66, 0x31, 0x21, 0x4b, 0x5b, 0xcb, 0xda, 0x53, 0xbb, 0x72, 0x1d, 0xd2, 0x3c, 0xa3, 0x8f,
0x11, 0x7d, 0xf4, 0x3e, 0xa4, 0x87, 0xfc, 0xb3, 0x28, 0xc9, 0x89, 0xad, 0xdc, 0xee, 0xc5, 0xea, 0x3e, 0x82, 0xf4, 0x90, 0xff, 0x2c, 0x4a, 0x72, 0x62, 0x2b, 0xb7, 0x7b, 0xa1, 0x3a, 0x4f, 0xb1,
0x3c, 0xc5, 0xaa, 0x1c, 0xdf, 0x48, 0x3e, 0xfc, 0x7d, 0x33, 0xa6, 0x45, 0x94, 0xca, 0x44, 0x82, 0x2a, 0xc7, 0x37, 0x92, 0x0f, 0xff, 0xd8, 0x8c, 0x69, 0x11, 0xa5, 0x32, 0x91, 0xe0, 0xbc, 0x71,
0x0b, 0xc6, 0xb1, 0x87, 0xfd, 0x63, 0x32, 0xb0, 0xf7, 0xb0, 0xe5, 0xf8, 0x0e, 0x71, 0x0f, 0xc9, 0xec, 0x61, 0xff, 0x98, 0x0c, 0xec, 0x3d, 0x6c, 0x39, 0xbe, 0x43, 0xdc, 0x43, 0x32, 0x70, 0xac,
0xc0, 0xb1, 0xc6, 0xe8, 0x22, 0x64, 0x69, 0xe4, 0xe2, 0xe5, 0x68, 0xa7, 0x03, 0xe8, 0x1a, 0xa4, 0x31, 0xba, 0x00, 0x59, 0x1a, 0xb9, 0x78, 0x3b, 0xda, 0xe9, 0x02, 0xba, 0x0a, 0xe9, 0x50, 0x3d,
0x43, 0xf5, 0x48, 0xc0, 0xf3, 0xce, 0xed, 0xae, 0x57, 0xb9, 0x42, 0xd5, 0x48, 0xa1, 0xea, 0x9e, 0x12, 0xf0, 0xba, 0x73, 0xbb, 0xeb, 0x55, 0xae, 0x50, 0x35, 0x52, 0xa8, 0xba, 0x27, 0xd4, 0x6f,
0x50, 0xbf, 0x91, 0x09, 0x83, 0x7e, 0xfb, 0xc7, 0xa6, 0xa4, 0x45, 0x9c, 0xab, 0xe8, 0xe7, 0x07, 0x64, 0xc2, 0xa4, 0x3f, 0xfc, 0xb9, 0x29, 0x69, 0x11, 0xe7, 0x0a, 0xfa, 0xe5, 0xc1, 0x76, 0x7e,
0xdb, 0xf9, 0xd9, 0x80, 0x95, 0x9f, 0x24, 0xc8, 0xde, 0x08, 0x93, 0x6e, 0xba, 0xb7, 0x09, 0x5a, 0x36, 0x61, 0xe5, 0x67, 0x09, 0xb2, 0xd7, 0xc3, 0xa2, 0x9b, 0xee, 0x2d, 0x82, 0xd6, 0x21, 0xc3,
0x87, 0x0c, 0xab, 0xa0, 0xeb, 0xf0, 0xe8, 0x49, 0x2d, 0xcd, 0xec, 0xa6, 0x8d, 0xaa, 0xb0, 0x64, 0x3a, 0xe8, 0x3a, 0x3c, 0x7b, 0x52, 0x4b, 0x33, 0xbb, 0x69, 0xa3, 0x2a, 0x2c, 0x99, 0xf6, 0xd0,
0xda, 0x43, 0xc7, 0xe5, 0x8a, 0x2d, 0x10, 0x99, 0xc3, 0x16, 0x49, 0x89, 0x8a, 0x90, 0x3e, 0xc1, 0x71, 0xb9, 0x62, 0x0b, 0x44, 0xe6, 0xb0, 0x45, 0x52, 0xa2, 0x22, 0xa4, 0x4f, 0xb0, 0x17, 0x56,
0x5e, 0x98, 0x45, 0x31, 0xc9, 0xa3, 0x08, 0x13, 0x5d, 0x86, 0x65, 0x4a, 0xa8, 0x39, 0xe8, 0x8a, 0x51, 0x4c, 0xf2, 0x2c, 0xc2, 0x44, 0x97, 0x60, 0x99, 0x12, 0x6a, 0x0e, 0xba, 0x62, 0x7b, 0x96,
0xe5, 0x59, 0x62, 0x12, 0xe4, 0xd8, 0xd8, 0x27, 0x6c, 0xa8, 0xf2, 0x39, 0xe4, 0x58, 0xc2, 0x62, 0x98, 0x04, 0x39, 0xb6, 0xf6, 0x39, 0x5b, 0xaa, 0x7c, 0x05, 0x39, 0x56, 0xb0, 0xd8, 0xfe, 0x05,
0xf9, 0x17, 0xa4, 0xfc, 0x0e, 0xa4, 0xb8, 0xe6, 0x42, 0xad, 0x85, 0xab, 0xa4, 0x09, 0x6c, 0xe5, 0x25, 0xbf, 0x0f, 0x29, 0xae, 0xb9, 0x50, 0x6b, 0xe1, 0x2e, 0x69, 0x02, 0x5b, 0xb9, 0x1f, 0x87,
0x87, 0x38, 0x14, 0x58, 0x80, 0xba, 0x65, 0x91, 0xc0, 0xa5, 0x4c, 0x98, 0x7f, 0xd3, 0x64, 0x67, 0x55, 0x96, 0x80, 0x2b, 0xc4, 0x74, 0xf9, 0x2f, 0x33, 0xf6, 0x6c, 0x61, 0xf1, 0x97, 0x68, 0x99,
0x33, 0x8b, 0xbf, 0x40, 0xcc, 0xc4, 0xeb, 0x8b, 0x99, 0x7c, 0xb1, 0x98, 0x4b, 0xb3, 0x62, 0x7e, 0x78, 0x7d, 0x2d, 0x93, 0x2f, 0xd7, 0x72, 0x69, 0x56, 0xcb, 0xcf, 0x60, 0xd5, 0x16, 0x9b, 0xdd,
0x0c, 0xab, 0xb6, 0x58, 0xed, 0xee, 0x88, 0x2d, 0x77, 0x31, 0xc5, 0x84, 0x58, 0x7b, 0xae, 0x6d, 0x1d, 0xb1, 0x5e, 0x8a, 0x29, 0xa6, 0xc3, 0xda, 0x0b, 0x53, 0x53, 0x77, 0xc7, 0x8d, 0x39, 0xd3,
0xea, 0xee, 0xb8, 0x31, 0xa7, 0x3d, 0xb4, 0xbc, 0x3d, 0x63, 0x5f, 0xcd, 0xdc, 0xbd, 0xbf, 0x19, 0xa1, 0xe5, 0xed, 0x19, 0xfb, 0x4a, 0xe6, 0xce, 0xbd, 0xcd, 0xd8, 0xdf, 0xf7, 0x36, 0xa5, 0xca,
0xfb, 0xeb, 0xfe, 0xa6, 0x54, 0xf9, 0x31, 0x07, 0x99, 0x43, 0x8f, 0x8c, 0x88, 0x6f, 0x0e, 0xd0, 0x4f, 0x39, 0xc8, 0x1c, 0x7a, 0x64, 0x44, 0x7c, 0x73, 0x80, 0x36, 0x21, 0x37, 0x12, 0xbf, 0x4f,
0x26, 0xe4, 0x46, 0xe2, 0xfb, 0x74, 0x1d, 0x20, 0x1a, 0x6a, 0xda, 0x67, 0xf5, 0x8b, 0xbf, 0xaa, 0xb7, 0x01, 0xa2, 0xa5, 0xa6, 0xfd, 0xac, 0x7e, 0xf1, 0x57, 0xd5, 0x6f, 0xd1, 0x00, 0x7d, 0x08,
0x7e, 0x8b, 0x3a, 0xe8, 0x3d, 0xc8, 0xf2, 0xd9, 0xc3, 0x3d, 0x98, 0x94, 0x13, 0x0b, 0x67, 0x3c, 0x59, 0x1e, 0x3d, 0xfc, 0x04, 0x93, 0x72, 0x62, 0x61, 0xc4, 0x53, 0x28, 0xba, 0x0e, 0xcb, 0x7e,
0x85, 0xa2, 0x1b, 0xb0, 0xec, 0x07, 0xbd, 0xa1, 0x43, 0x29, 0xb6, 0xbb, 0x26, 0xef, 0xaf, 0xdc, 0xd0, 0x1b, 0x3a, 0x94, 0x62, 0xbb, 0x6b, 0xf2, 0xf1, 0xca, 0xed, 0x96, 0x5e, 0xd0, 0xc3, 0x88,
0x6e, 0xe9, 0x39, 0x3d, 0x8c, 0xe8, 0x90, 0xe2, 0xfb, 0xe8, 0x5e, 0xb8, 0x8f, 0x72, 0x4f, 0x99, 0xce, 0x28, 0xfe, 0x19, 0xdd, 0x0d, 0x3f, 0xa3, 0xdc, 0x53, 0x66, 0x9d, 0xa2, 0xcb, 0xb0, 0xc2,
0x75, 0x8a, 0xae, 0xc0, 0x0a, 0x5f, 0xdc, 0x48, 0xfb, 0x14, 0xab, 0x79, 0x99, 0x0d, 0x1e, 0x89, 0x37, 0x37, 0xd2, 0x3e, 0xc5, 0x7a, 0x5e, 0x66, 0x8b, 0x47, 0x62, 0x03, 0xde, 0x85, 0x35, 0x0e,
0x05, 0xd8, 0x85, 0x73, 0x1c, 0x64, 0xf2, 0x56, 0x7a, 0x0a, 0x4e, 0x33, 0xf0, 0xff, 0xfa, 0x67, 0xe2, 0xea, 0x3f, 0xc5, 0xa6, 0x19, 0x16, 0xf5, 0x4f, 0x87, 0x2c, 0x62, 0x5c, 0x85, 0x94, 0x4f,
0xda, 0x2c, 0xe2, 0x5c, 0x83, 0x94, 0x4f, 0x4d, 0x1a, 0xf8, 0xc5, 0x8c, 0x2c, 0x6d, 0xe5, 0x77, 0x4d, 0x1a, 0xf8, 0xc5, 0x8c, 0x2c, 0x6d, 0xe5, 0x77, 0xdf, 0x9a, 0x3f, 0xb1, 0x91, 0xf0, 0x55,
0xdf, 0x98, 0xdf, 0xb4, 0x91, 0xf4, 0x55, 0x9d, 0x81, 0x35, 0x41, 0x0a, 0xe9, 0x1e, 0xf6, 0x83, 0x9d, 0x81, 0x35, 0x41, 0x0a, 0xe9, 0x1e, 0xf6, 0x83, 0x01, 0x2d, 0x66, 0x5f, 0x89, 0xae, 0x31,
0x01, 0x2d, 0x66, 0x5f, 0x89, 0xae, 0x31, 0xb0, 0x26, 0x48, 0xe8, 0x03, 0x80, 0x13, 0x42, 0x71, 0xb0, 0x26, 0x48, 0xe8, 0x63, 0x80, 0x13, 0x42, 0x71, 0x37, 0x8c, 0x86, 0x8b, 0xc0, 0xb4, 0xd9,
0x37, 0x9c, 0x0d, 0x17, 0x81, 0xa9, 0xb3, 0x31, 0x7f, 0x0a, 0xc3, 0x1c, 0x0c, 0xc6, 0xe2, 0x6c, 0x98, 0x1f, 0xc2, 0x30, 0x07, 0x83, 0xb1, 0x38, 0xd8, 0xb2, 0x21, 0x29, 0xac, 0x04, 0xa3, 0x6b,
0xcb, 0x86, 0xa4, 0x30, 0x13, 0x8c, 0xae, 0x9f, 0x9e, 0x51, 0xb9, 0xd7, 0x10, 0x37, 0x22, 0xa1, 0xa7, 0x07, 0x54, 0xee, 0x35, 0xa4, 0x8d, 0x48, 0xe8, 0x08, 0x56, 0xf1, 0x6d, 0x6c, 0x05, 0x94,
0x23, 0x58, 0xc5, 0x77, 0xb0, 0x15, 0x50, 0xe2, 0x75, 0x45, 0x25, 0xcb, 0xac, 0x92, 0xed, 0x97, 0x78, 0x5d, 0xd1, 0xc9, 0x32, 0xeb, 0x64, 0xfb, 0x8c, 0x4e, 0x54, 0xc1, 0x12, 0x1d, 0xe5, 0xf1,
0x54, 0xa2, 0x0a, 0x96, 0xa8, 0x28, 0x8f, 0x67, 0x6c, 0xb4, 0x05, 0xc9, 0xa1, 0xdf, 0xf7, 0x8b, 0x8c, 0x8d, 0xb6, 0x20, 0x39, 0xf4, 0xfb, 0x7e, 0x71, 0x85, 0x9d, 0xd6, 0x73, 0xe7, 0x5f, 0x63,
0x2b, 0xec, 0xc0, 0x9e, 0xbb, 0x03, 0x34, 0x86, 0xa8, 0x3c, 0x92, 0x20, 0xc5, 0x55, 0x45, 0x3b, 0x88, 0xca, 0x23, 0x09, 0x52, 0x5c, 0x55, 0xb4, 0x03, 0x48, 0x37, 0xea, 0x46, 0x47, 0xef, 0x76,
0x80, 0x74, 0xa3, 0x6e, 0x74, 0xf4, 0x6e, 0xa7, 0xa5, 0x1f, 0xaa, 0x4a, 0x73, 0xbf, 0xa9, 0xee, 0x5a, 0xfa, 0xa1, 0xaa, 0x34, 0xf7, 0x9b, 0xea, 0x5e, 0x21, 0x56, 0x5a, 0x9f, 0x4c, 0xe5, 0x37,
0x15, 0x62, 0xa5, 0xf5, 0xc9, 0x54, 0x3e, 0x17, 0x45, 0xe6, 0xd8, 0xa6, 0x7b, 0x62, 0x0e, 0x1c, 0xa2, 0xcc, 0x1c, 0xdb, 0x74, 0x4f, 0xcc, 0x81, 0x63, 0xa3, 0x1d, 0x28, 0x08, 0x8a, 0xde, 0x69,
0x1b, 0xed, 0x40, 0x41, 0x50, 0xf4, 0x4e, 0xe3, 0x66, 0xd3, 0x30, 0xd4, 0xbd, 0x82, 0x54, 0xda, 0xdc, 0x68, 0x1a, 0x86, 0xba, 0x57, 0x90, 0x4a, 0x1b, 0x93, 0xa9, 0x7c, 0x7e, 0x96, 0xa0, 0x47,
0x98, 0x4c, 0xe5, 0x0b, 0xb3, 0x04, 0x3d, 0xea, 0x26, 0xf4, 0x16, 0xac, 0x08, 0x8a, 0x72, 0xd0, 0xb3, 0x84, 0xde, 0x81, 0x15, 0x41, 0x51, 0x0e, 0xda, 0xba, 0xba, 0x57, 0x88, 0x97, 0x8a, 0x93,
0xd6, 0xd5, 0xbd, 0x42, 0xbc, 0x54, 0x9c, 0x4c, 0xe5, 0xb5, 0x59, 0xbc, 0x32, 0x20, 0x3e, 0xb6, 0xa9, 0xbc, 0x36, 0x8b, 0x57, 0x06, 0xc4, 0xc7, 0x36, 0xda, 0x86, 0xbc, 0x00, 0xd7, 0x1b, 0x6d,
0xd1, 0x36, 0xe4, 0x05, 0xb8, 0xde, 0x68, 0x6b, 0xe1, 0xec, 0x89, 0x79, 0xe9, 0xd4, 0x7b, 0xc4, 0x2d, 0x8c, 0x9e, 0x98, 0x57, 0x4e, 0xbd, 0x47, 0x3c, 0x8a, 0xed, 0x52, 0xf2, 0xce, 0xfd, 0x72,
0xa3, 0xd8, 0x2e, 0x25, 0xef, 0x7e, 0x5f, 0x8e, 0x55, 0x7e, 0x93, 0x20, 0x25, 0x74, 0xd8, 0x01, 0xac, 0xf2, 0xbb, 0x04, 0x29, 0xa1, 0xc3, 0x0e, 0x20, 0x4d, 0xd5, 0x3b, 0x07, 0xc6, 0xa2, 0x96,
0xa4, 0xa9, 0x7a, 0xe7, 0xc0, 0x58, 0x54, 0x12, 0xc7, 0x46, 0x25, 0xbd, 0x7b, 0x86, 0xb2, 0xdf, 0x38, 0x36, 0x6a, 0xe9, 0x83, 0x67, 0x28, 0xfb, 0xcd, 0x56, 0xfd, 0xa0, 0x79, 0x93, 0x35, 0x75,
0x6c, 0xd5, 0x0f, 0x9a, 0xb7, 0x58, 0x51, 0x97, 0x26, 0x53, 0x79, 0x7d, 0x96, 0xd2, 0x71, 0x6f, 0x71, 0x32, 0x95, 0xd7, 0x67, 0x29, 0x1d, 0xf7, 0x96, 0xe3, 0x9a, 0x03, 0xe7, 0x3b, 0x6c, 0xa3,
0x3b, 0xae, 0x39, 0x70, 0xbe, 0xc6, 0x36, 0xaa, 0xc1, 0xaa, 0xa0, 0xd5, 0x15, 0x45, 0x3d, 0x34, 0x1a, 0xac, 0x0a, 0x5a, 0x5d, 0x51, 0xd4, 0x43, 0x83, 0x35, 0x56, 0x9a, 0x4c, 0xe5, 0x73, 0xb3,
0x58, 0x61, 0xa5, 0xc9, 0x54, 0x3e, 0x3f, 0xcb, 0xa9, 0x5b, 0x16, 0x1e, 0xd1, 0x19, 0x82, 0xa6, 0x9c, 0xba, 0x65, 0xe1, 0x11, 0x9d, 0x21, 0x68, 0xea, 0xa7, 0xaa, 0xc2, 0x7b, 0x9b, 0x43, 0xd0,
0x7e, 0xa4, 0x2a, 0xbc, 0xb6, 0x39, 0x04, 0x0d, 0x7f, 0x81, 0xad, 0xd3, 0xe2, 0xbe, 0x8b, 0x43, 0xf0, 0xd7, 0xd8, 0x3a, 0x6d, 0xee, 0xc7, 0x38, 0xe4, 0x67, 0x37, 0x1f, 0x35, 0x60, 0x43, 0xfd,
0x7e, 0x76, 0xf1, 0x51, 0x03, 0x36, 0xd4, 0x4f, 0x55, 0xa5, 0x63, 0xb4, 0xb5, 0xee, 0xdc, 0x6a, 0x42, 0x55, 0x3a, 0x46, 0x5b, 0xeb, 0xce, 0xed, 0xf6, 0xd2, 0x64, 0x2a, 0x5f, 0x8c, 0xa2, 0xce,
0x2f, 0x4f, 0xa6, 0xf2, 0xa5, 0x68, 0xd6, 0x59, 0x72, 0x54, 0xf5, 0x35, 0xb8, 0xf0, 0xec, 0x1c, 0x92, 0xa3, 0xae, 0xaf, 0xc2, 0xf9, 0xe7, 0x63, 0xb4, 0xda, 0x46, 0x57, 0xeb, 0xb4, 0x0a, 0x52,
0xad, 0xb6, 0xd1, 0xd5, 0x3a, 0xad, 0x82, 0x54, 0x92, 0x27, 0x53, 0xf9, 0xe2, 0x7c, 0x7e, 0x8b, 0x49, 0x9e, 0x4c, 0xe5, 0x0b, 0xf3, 0xf9, 0x2d, 0x42, 0xb5, 0xc0, 0x45, 0xd7, 0x5e, 0xa4, 0xeb,
0x50, 0x2d, 0x70, 0xd1, 0xf5, 0xe7, 0xe9, 0x7a, 0x47, 0x51, 0x54, 0x5d, 0x2f, 0xc4, 0x17, 0x85, 0x1d, 0x45, 0x51, 0x75, 0xbd, 0x10, 0x5f, 0x94, 0x5e, 0x0f, 0x2c, 0x2b, 0x3c, 0xfb, 0xe6, 0xf0,
0xd7, 0x03, 0xcb, 0x0a, 0x4f, 0xbf, 0x39, 0xfc, 0xfd, 0x7a, 0xf3, 0xa0, 0xa3, 0xa9, 0x85, 0xc4, 0xf7, 0xeb, 0xcd, 0x83, 0x8e, 0xa6, 0x16, 0x12, 0x8b, 0xf8, 0xfb, 0xa6, 0x33, 0x08, 0x3c, 0xcc,
0x22, 0xfe, 0xbe, 0xe9, 0x0c, 0x02, 0x0f, 0x73, 0x6d, 0xae, 0x26, 0xc3, 0xf3, 0xba, 0xf2, 0x8d, 0xb5, 0xb9, 0x92, 0x0c, 0x4f, 0xeb, 0xca, 0xf7, 0x12, 0x2c, 0xb1, 0xcf, 0x15, 0x6d, 0x40, 0x76,
0x04, 0x4b, 0x6c, 0xbb, 0xa2, 0x0d, 0xc8, 0x8e, 0xb1, 0xdf, 0x65, 0x27, 0x8e, 0x78, 0x5f, 0x64, 0x8c, 0xfd, 0xae, 0x45, 0x02, 0x97, 0x8a, 0xc7, 0x45, 0x66, 0x8c, 0x7d, 0x25, 0xb4, 0xc3, 0xeb,
0xc6, 0xd8, 0x57, 0x42, 0x3b, 0xbc, 0xb0, 0x5c, 0x22, 0x7c, 0xfc, 0x5d, 0x94, 0x76, 0x09, 0x77, 0xca, 0x25, 0xc2, 0xc7, 0x1f, 0x45, 0x69, 0x97, 0x70, 0xd7, 0x65, 0x58, 0x31, 0x7b, 0x3e, 0x35,
0x5d, 0x81, 0x15, 0xb3, 0xe7, 0x53, 0xd3, 0x71, 0x85, 0x9f, 0x5d, 0x5c, 0xda, 0xb2, 0x18, 0xe4, 0x1d, 0x57, 0xf8, 0xd9, 0xb5, 0xa5, 0x2d, 0x8b, 0x45, 0x0e, 0xba, 0x08, 0x70, 0x82, 0x69, 0x14,
0xa0, 0x4b, 0x00, 0x27, 0x98, 0x46, 0x33, 0x24, 0xf9, 0xeb, 0x25, 0x1c, 0x61, 0x6e, 0x91, 0xcb, 0x21, 0xc9, 0x9f, 0x2e, 0xe1, 0x0a, 0x73, 0x8b, 0x5a, 0xfe, 0x91, 0x20, 0x79, 0x44, 0x28, 0x3e,
0xdf, 0x12, 0x24, 0x8f, 0x08, 0xc5, 0x2f, 0xbf, 0x33, 0xaa, 0xb0, 0x14, 0x1e, 0x2b, 0xde, 0xcb, 0xfb, 0xc6, 0xa8, 0xc2, 0x52, 0x78, 0xac, 0x78, 0x67, 0x3f, 0x37, 0x18, 0x2c, 0xbc, 0xeb, 0xad,
0x5f, 0x1c, 0x0c, 0x16, 0x5e, 0xf7, 0xd6, 0x31, 0x71, 0x2c, 0xcc, 0x92, 0xcb, 0xbf, 0xe8, 0xba, 0x63, 0xe2, 0x58, 0x98, 0x15, 0x97, 0x7f, 0xd9, 0x5d, 0xaf, 0x30, 0x8c, 0x26, 0xb0, 0x0b, 0x2f,
0x57, 0x18, 0x46, 0x13, 0xd8, 0x85, 0x57, 0xeb, 0x7f, 0x75, 0x5b, 0xbc, 0x69, 0x43, 0x8a, 0x87, 0xd6, 0xff, 0xeb, 0xae, 0x78, 0xdb, 0x86, 0x14, 0x4f, 0x8b, 0xce, 0x01, 0x52, 0x3e, 0x69, 0x37,
0x45, 0xe7, 0x01, 0x29, 0x1f, 0xb6, 0x9b, 0x8a, 0x3a, 0xdb, 0x90, 0x68, 0x05, 0xb2, 0x62, 0xbc, 0x15, 0x75, 0x76, 0x20, 0xd1, 0x0a, 0x64, 0xc5, 0x7a, 0xab, 0x5d, 0x90, 0x50, 0x1e, 0x40, 0x98,
0xd5, 0x2e, 0x48, 0x28, 0x0f, 0x20, 0xcc, 0xcf, 0x54, 0xbd, 0x10, 0x47, 0x08, 0xf2, 0xc2, 0xae, 0x5f, 0xaa, 0x7a, 0x21, 0x8e, 0x10, 0xe4, 0x85, 0x5d, 0x6f, 0xe8, 0x46, 0xbd, 0xd9, 0x2a, 0x24,
0x37, 0x74, 0xa3, 0xde, 0x6c, 0x15, 0x12, 0x68, 0x15, 0x72, 0x62, 0xec, 0x48, 0x35, 0xda, 0x85, 0xd0, 0x2a, 0xe4, 0xc4, 0xda, 0x91, 0x6a, 0xb4, 0x0b, 0xc9, 0xc6, 0xb5, 0x87, 0x8f, 0xcb, 0xd2,
0x64, 0xe3, 0xfa, 0xc3, 0xc7, 0x65, 0xe9, 0xd1, 0xe3, 0xb2, 0xf4, 0xe7, 0xe3, 0xb2, 0x74, 0xef, 0xa3, 0xc7, 0x65, 0xe9, 0xaf, 0xc7, 0x65, 0xe9, 0xee, 0x93, 0x72, 0xec, 0xd1, 0x93, 0x72, 0xec,
0x49, 0x39, 0xf6, 0xe8, 0x49, 0x39, 0xf6, 0xeb, 0x93, 0x72, 0xec, 0xd6, 0xff, 0xfb, 0x0e, 0x3d, 0xb7, 0x27, 0xe5, 0xd8, 0xcd, 0x37, 0xfb, 0x0e, 0x3d, 0x0e, 0x7a, 0x55, 0x8b, 0x0c, 0xc5, 0xf3,
0x0e, 0x7a, 0x55, 0x8b, 0x0c, 0xc5, 0x0b, 0x5b, 0xfc, 0x6c, 0xfb, 0xf6, 0x97, 0xb5, 0x3b, 0xfc, 0x5a, 0xfc, 0xd9, 0xf6, 0xed, 0x6f, 0x6a, 0xb7, 0xf9, 0xff, 0x01, 0xbd, 0x14, 0x6b, 0xe8, 0xbd,
0xaf, 0x40, 0x2f, 0xc5, 0x0a, 0x7a, 0xfb, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe0, 0x88, 0x0e, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x46, 0x84, 0xac, 0x3a, 0x1e, 0x0c, 0x00, 0x00,
0x45, 0x21, 0x0c, 0x00, 0x00,
} }
func (this *GroupAccountInfo) Equal(that interface{}) bool { func (this *GroupPolicyInfo) Equal(that interface{}) bool {
if that == nil { if that == nil {
return this == nil return this == nil
} }
that1, ok := that.(*GroupAccountInfo) that1, ok := that.(*GroupPolicyInfo)
if !ok { if !ok {
that2, ok := that.(GroupAccountInfo) that2, ok := that.(GroupPolicyInfo)
if ok { if ok {
that1 = &that2 that1 = &that2
} else { } else {
@ -1089,7 +1088,7 @@ func (m *GroupMember) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil return len(dAtA) - i, nil
} }
func (m *GroupAccountInfo) Marshal() (dAtA []byte, err error) { func (m *GroupPolicyInfo) Marshal() (dAtA []byte, err error) {
size := m.Size() size := m.Size()
dAtA = make([]byte, size) dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size]) n, err := m.MarshalToSizedBuffer(dAtA[:size])
@ -1099,12 +1098,12 @@ func (m *GroupAccountInfo) Marshal() (dAtA []byte, err error) {
return dAtA[:n], nil return dAtA[:n], nil
} }
func (m *GroupAccountInfo) MarshalTo(dAtA []byte) (int, error) { func (m *GroupPolicyInfo) MarshalTo(dAtA []byte) (int, error) {
size := m.Size() size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size]) return m.MarshalToSizedBuffer(dAtA[:size])
} }
func (m *GroupAccountInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { func (m *GroupPolicyInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA) i := len(dAtA)
_ = i _ = i
var l int var l int
@ -1222,8 +1221,8 @@ func (m *Proposal) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i-- i--
dAtA[i] = 0x40 dAtA[i] = 0x40
} }
if m.GroupAccountVersion != 0 { if m.GroupPolicyVersion != 0 {
i = encodeVarintTypes(dAtA, i, uint64(m.GroupAccountVersion)) i = encodeVarintTypes(dAtA, i, uint64(m.GroupPolicyVersion))
i-- i--
dAtA[i] = 0x38 dAtA[i] = 0x38
} }
@ -1482,7 +1481,7 @@ func (m *GroupMember) Size() (n int) {
return n return n
} }
func (m *GroupAccountInfo) Size() (n int) { func (m *GroupPolicyInfo) Size() (n int) {
if m == nil { if m == nil {
return 0 return 0
} }
@ -1541,8 +1540,8 @@ func (m *Proposal) Size() (n int) {
if m.GroupVersion != 0 { if m.GroupVersion != 0 {
n += 1 + sovTypes(uint64(m.GroupVersion)) n += 1 + sovTypes(uint64(m.GroupVersion))
} }
if m.GroupAccountVersion != 0 { if m.GroupPolicyVersion != 0 {
n += 1 + sovTypes(uint64(m.GroupAccountVersion)) n += 1 + sovTypes(uint64(m.GroupPolicyVersion))
} }
if m.Status != 0 { if m.Status != 0 {
n += 1 + sovTypes(uint64(m.Status)) n += 1 + sovTypes(uint64(m.Status))
@ -2260,7 +2259,7 @@ func (m *GroupMember) Unmarshal(dAtA []byte) error {
} }
return nil return nil
} }
func (m *GroupAccountInfo) Unmarshal(dAtA []byte) error { func (m *GroupPolicyInfo) Unmarshal(dAtA []byte) error {
l := len(dAtA) l := len(dAtA)
iNdEx := 0 iNdEx := 0
for iNdEx < l { for iNdEx < l {
@ -2283,10 +2282,10 @@ func (m *GroupAccountInfo) Unmarshal(dAtA []byte) error {
fieldNum := int32(wire >> 3) fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7) wireType := int(wire & 0x7)
if wireType == 4 { if wireType == 4 {
return fmt.Errorf("proto: GroupAccountInfo: wiretype end group for non-group") return fmt.Errorf("proto: GroupPolicyInfo: wiretype end group for non-group")
} }
if fieldNum <= 0 { if fieldNum <= 0 {
return fmt.Errorf("proto: GroupAccountInfo: illegal tag %d (wire type %d)", fieldNum, wire) return fmt.Errorf("proto: GroupPolicyInfo: illegal tag %d (wire type %d)", fieldNum, wire)
} }
switch fieldNum { switch fieldNum {
case 1: case 1:
@ -2682,9 +2681,9 @@ func (m *Proposal) Unmarshal(dAtA []byte) error {
} }
case 7: case 7:
if wireType != 0 { if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field GroupAccountVersion", wireType) return fmt.Errorf("proto: wrong wireType = %d for field GroupPolicyVersion", wireType)
} }
m.GroupAccountVersion = 0 m.GroupPolicyVersion = 0
for shift := uint(0); ; shift += 7 { for shift := uint(0); ; shift += 7 {
if shift >= 64 { if shift >= 64 {
return ErrIntOverflowTypes return ErrIntOverflowTypes
@ -2694,7 +2693,7 @@ func (m *Proposal) Unmarshal(dAtA []byte) error {
} }
b := dAtA[iNdEx] b := dAtA[iNdEx]
iNdEx++ iNdEx++
m.GroupAccountVersion |= uint64(b&0x7F) << shift m.GroupPolicyVersion |= uint64(b&0x7F) << shift
if b < 0x80 { if b < 0x80 {
break break
} }