docs: Improve markdownlint configuration (#11104)
## Description Closes: #9404 --- ### 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... - [x] 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 - [x] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#pr-targeting)) - [x] 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 - [x] reviewed "Files changed" and left comments if necessary - [x] 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:
@@ -2,17 +2,17 @@
|
||||
|
||||
A table can be built given a `codec.ProtoMarshaler` model type, a prefix to access the underlying prefix store used to store table data as well as a `Codec` for marshalling/unmarshalling.
|
||||
|
||||
+++ https://github.com/cosmos/cosmos-sdk/blob/9f78f16ae75cc42fc5fe636bde18a453ba74831f/x/group/internal/orm/table.go#L24-L30
|
||||
+++ <https://github.com/cosmos/cosmos-sdk/blob/9f78f16ae75cc42fc5fe636bde18a453ba74831f/x/group/internal/orm/table.go#L24-L30>
|
||||
|
||||
In the prefix store, entities should be stored by an unique identifier called `RowID` which can be based either on an `uint64` auto-increment counter, string or dynamic size bytes.
|
||||
Regular CRUD operations can be performed on a table, these methods take a `sdk.KVStore` as parameter to get the table prefix store.
|
||||
|
||||
The `table` struct does not:
|
||||
|
||||
- enforce uniqueness of the `RowID`
|
||||
- enforce prefix uniqueness of keys, i.e. not allowing one key to be a prefix
|
||||
* enforce uniqueness of the `RowID`
|
||||
* enforce prefix uniqueness of keys, i.e. not allowing one key to be a prefix
|
||||
of another
|
||||
- optimize Gas usage conditions
|
||||
* optimize Gas usage conditions
|
||||
The `table` struct is private, so that we only have custom tables built on top of it, that do satisfy these requirements.
|
||||
|
||||
`table` provides methods for exporting (using a [`PrefixScan` `Iterator`](03_iterator_pagination.md#iterator)) and importing genesis data. For the import to be successful, objects have to be aware of their primary key by implementing the [`PrimaryKeyed`](#primarykeyed) interface.
|
||||
@@ -21,7 +21,7 @@ The `table` struct is private, so that we only have custom tables built on top o
|
||||
|
||||
`AutoUInt64Table` is a table type with an auto incrementing `uint64` ID.
|
||||
|
||||
+++ https://github.com/cosmos/cosmos-sdk/blob/9f78f16ae75cc42fc5fe636bde18a453ba74831f/x/group/internal/orm/auto_uint64.go#L11-L14
|
||||
+++ <https://github.com/cosmos/cosmos-sdk/blob/9f78f16ae75cc42fc5fe636bde18a453ba74831f/x/group/internal/orm/auto_uint64.go#L11-L14>
|
||||
|
||||
It's based on the `Sequence` struct which is a persistent unique key generator based on a counter encoded using 8 byte big endian.
|
||||
|
||||
@@ -33,7 +33,7 @@ It's based on the `Sequence` struct which is a persistent unique key generator b
|
||||
|
||||
The model provided for creating a `PrimaryKeyTable` should implement the `PrimaryKeyed` interface:
|
||||
|
||||
+++ https://github.com/cosmos/cosmos-sdk/blob/9f78f16ae75cc42fc5fe636bde18a453ba74831f/x/group/internal/orm/primary_key.go#L28-L41
|
||||
+++ <https://github.com/cosmos/cosmos-sdk/blob/9f78f16ae75cc42fc5fe636bde18a453ba74831f/x/group/internal/orm/primary_key.go#L28-L41>
|
||||
|
||||
`PrimaryKeyFields()` method returns the list of key parts for a given object.
|
||||
The primary key parts can be []byte, string, and `uint64` types.
|
||||
@@ -42,6 +42,6 @@ The primary key parts can be []byte, string, and `uint64` types.
|
||||
|
||||
Key parts, except the last part, follow these rules:
|
||||
|
||||
- []byte is encoded with a single byte length prefix
|
||||
- strings are null-terminated
|
||||
- `uint64` are encoded using 8 byte big endian.
|
||||
* []byte is encoded with a single byte length prefix
|
||||
* strings are null-terminated
|
||||
* `uint64` are encoded using 8 byte big endian.
|
||||
|
||||
@@ -2,19 +2,19 @@
|
||||
|
||||
Secondary indexes can be used on `Indexable` [tables](01_table.md). Indeed, those tables implement the `Indexable` interface that provides a set of functions that can be called by indexes to register and interact with the tables, like callback functions that are called on entries creation, update or deletion to create, update or remove corresponding entries in the table secondary indexes.
|
||||
|
||||
+++ https://github.com/cosmos/cosmos-sdk/blob/430163ed4eefcc0d67b706411ffc0b7c5414cd90/x/group/internal/orm/types.go#L88-L92
|
||||
+++ <https://github.com/cosmos/cosmos-sdk/blob/430163ed4eefcc0d67b706411ffc0b7c5414cd90/x/group/internal/orm/types.go#L88-L92>
|
||||
|
||||
## MultiKeyIndex
|
||||
|
||||
A `MultiKeyIndex` is an index where multiple entries can point to the same underlying object.
|
||||
|
||||
+++ https://github.com/cosmos/cosmos-sdk/blob/430163ed4eefcc0d67b706411ffc0b7c5414cd90/x/group/internal/orm/index.go#L25-L31
|
||||
+++ <https://github.com/cosmos/cosmos-sdk/blob/430163ed4eefcc0d67b706411ffc0b7c5414cd90/x/group/internal/orm/index.go#L25-L31>
|
||||
|
||||
Internally, it uses an `Indexer` that manages the persistence of the index based on searchable keys and create/update/delete operations.
|
||||
|
||||
+++ https://github.com/cosmos/cosmos-sdk/blob/430163ed4eefcc0d67b706411ffc0b7c5414cd90/x/group/internal/orm/index.go#L15-L19
|
||||
+++ <https://github.com/cosmos/cosmos-sdk/blob/430163ed4eefcc0d67b706411ffc0b7c5414cd90/x/group/internal/orm/index.go#L15-L19>
|
||||
|
||||
+++ https://github.com/cosmos/cosmos-sdk/blob/430163ed4eefcc0d67b706411ffc0b7c5414cd90/x/group/internal/orm/indexer.go#L15-L18
|
||||
+++ <https://github.com/cosmos/cosmos-sdk/blob/430163ed4eefcc0d67b706411ffc0b7c5414cd90/x/group/internal/orm/indexer.go#L15-L18>
|
||||
|
||||
The currently used implementation of an `indexer`, `Indexer`, relies on an `IndexerFunc` that should be provided when instantiating the index. Based on the source object, this function returns one or multiple index keys as `[]interface{}`. Such secondary index keys should be bytes, string or `uint64` in order to be handled properly by the [key codec](01_table.md#key-codec) which defines specific encoding for those types.
|
||||
In the index prefix store, the keys are built based on the source object's `RowID` and its secondary index key(s) using the key codec and the values are set as empty bytes.
|
||||
|
||||
@@ -6,15 +6,15 @@ Both [tables](01_table.md) and [secondary indexes](02_secondary_index.md) suppor
|
||||
|
||||
An `Iterator` allows iteration through a sequence of key value pairs.
|
||||
|
||||
+++ https://github.com/cosmos/cosmos-sdk/blob/430163ed4eefcc0d67b706411ffc0b7c5414cd90/x/group/internal/orm/types.go#L77-L83
|
||||
+++ <https://github.com/cosmos/cosmos-sdk/blob/430163ed4eefcc0d67b706411ffc0b7c5414cd90/x/group/internal/orm/types.go#L77-L83>
|
||||
|
||||
Tables rely on a `typeSafeIterator` that is used by `PrefixScan` and `ReversePrefixScan` `table` methods to iterate through a range of `RowID`s.
|
||||
|
||||
+++ https://github.com/cosmos/cosmos-sdk/blob/430163ed4eefcc0d67b706411ffc0b7c5414cd90/x/group/internal/orm/table.go#235-L239
|
||||
+++ <https://github.com/cosmos/cosmos-sdk/blob/430163ed4eefcc0d67b706411ffc0b7c5414cd90/x/group/internal/orm/table.go#235-L239>
|
||||
|
||||
Secondary indexes rely on an `indexIterator` that can strip the `RowID` from the full index key in order to get the underlying value in the table prefix store.
|
||||
|
||||
+++ https://github.com/cosmos/cosmos-sdk/blob/430163ed4eefcc0d67b706411ffc0b7c5414cd90/x/group/internal/orm/index.go#L227-L232
|
||||
+++ <https://github.com/cosmos/cosmos-sdk/blob/430163ed4eefcc0d67b706411ffc0b7c5414cd90/x/group/internal/orm/index.go#L227-L232>
|
||||
|
||||
Under the hood, both use a prefix store `Iterator` (alias for tm-db `Iterator`).
|
||||
|
||||
@@ -23,6 +23,6 @@ Under the hood, both use a prefix store `Iterator` (alias for tm-db `Iterator`).
|
||||
The `Paginate` function does pagination given an [`Iterator`](#iterator) and a `query.PageRequest`, and returns a `query.PageResponse`.
|
||||
It unmarshals the results into the provided dest interface that should be a pointer to a slice of models.
|
||||
|
||||
+++ https://github.com/cosmos/cosmos-sdk/blob/430163ed4eefcc0d67b706411ffc0b7c5414cd90/x/group/internal/orm/iterator.go#L117-L216
|
||||
+++ <https://github.com/cosmos/cosmos-sdk/blob/430163ed4eefcc0d67b706411ffc0b7c5414cd90/x/group/internal/orm/iterator.go#L117-L216>
|
||||
|
||||
Secondary indexes have a `GetPaginated` method that returns an `Iterator` for the given searched secondary index key, starting from the `query.PageRequest` key if provided. It's important to note that this `query.PageRequest` key should be a `RowID` (that could have been returned by a previous paginated request). The returned `Iterator` can then be used with the `Paginate` function and the same `query.PageRequest`.
|
||||
|
||||
@@ -5,11 +5,11 @@ The orm package provides a framework for creating relational database tables wit
|
||||
## Contents
|
||||
|
||||
1. **[Table](01_table.md)**
|
||||
- [AutoUInt64Table](01_table.md#autouint64table)
|
||||
- [PrimaryKeyTable](01_table.md#primarykeytable)
|
||||
* [AutoUInt64Table](01_table.md#autouint64table)
|
||||
* [PrimaryKeyTable](01_table.md#primarykeytable)
|
||||
2. **[Secondary Index](02_secondary_index.md)**
|
||||
- [MultiKeyIndex](02_secondary_index.md#multikeyindex)
|
||||
- [UniqueIndex](02_secondary_index.md#uniqueindex)
|
||||
* [MultiKeyIndex](02_secondary_index.md#multikeyindex)
|
||||
* [UniqueIndex](02_secondary_index.md#uniqueindex)
|
||||
3. **[Iterator and Pagination](03_iterator_pagination.md)**
|
||||
- [Iterator](03_iterator_pagination.md#iterator)
|
||||
- [Pagination](03_iterator_pagination.md#pagination)
|
||||
* [Iterator](03_iterator_pagination.md#iterator)
|
||||
* [Pagination](03_iterator_pagination.md#pagination)
|
||||
|
||||
@@ -71,4 +71,4 @@ could be executed later on.
|
||||
In the current implementation, changing a group's membership (adding or removing members or changing their weight)
|
||||
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
|
||||
eventually be garbage collected.
|
||||
eventually be garbage collected.
|
||||
|
||||
+27
-23
@@ -11,7 +11,7 @@ A new group can be created with the `MsgCreateGroup`, which has an admin address
|
||||
The metadata has a maximum length that is chosen by the app developer, and
|
||||
passed into the group keeper as a config.
|
||||
|
||||
+++ https://github.com/cosmos/cosmos-sdk/blob/6f58963e7f6ce820e9b33f02f06f7b96f6d2e347/proto/cosmos/group/v1beta1/tx.proto#L54-L65
|
||||
+++ <https://github.com/cosmos/cosmos-sdk/blob/6f58963e7f6ce820e9b33f02f06f7b96f6d2e347/proto/cosmos/group/v1beta1/tx.proto#L54-L65>
|
||||
|
||||
It's expecting to fail if metadata length is greater than `MaxMetadataLen` config.
|
||||
|
||||
@@ -19,7 +19,7 @@ It's expecting to fail if metadata length is greater than `MaxMetadataLen` confi
|
||||
|
||||
Group members can be updated with the `UpdateGroupMembers`.
|
||||
|
||||
+++ https://github.com/cosmos/cosmos-sdk/blob/6f58963e7f6ce820e9b33f02f06f7b96f6d2e347/proto/cosmos/group/v1beta1/tx.proto#L74-L86
|
||||
+++ <https://github.com/cosmos/cosmos-sdk/blob/6f58963e7f6ce820e9b33f02f06f7b96f6d2e347/proto/cosmos/group/v1beta1/tx.proto#L74-L86>
|
||||
|
||||
In the list of `MemberUpdates`, an existing member can be removed by setting its weight to 0.
|
||||
|
||||
@@ -29,7 +29,7 @@ It's expecting to fail if the signer is not the admin of the group.
|
||||
|
||||
The `UpdateGroupAdmin` can be used to update a group admin.
|
||||
|
||||
+++ https://github.com/cosmos/cosmos-sdk/blob/6f58963e7f6ce820e9b33f02f06f7b96f6d2e347/proto/cosmos/group/v1beta1/tx.proto#L91-L102
|
||||
+++ <https://github.com/cosmos/cosmos-sdk/blob/6f58963e7f6ce820e9b33f02f06f7b96f6d2e347/proto/cosmos/group/v1beta1/tx.proto#L91-L102>
|
||||
|
||||
It's expecting to fail if the signer is not the admin of the group.
|
||||
|
||||
@@ -37,17 +37,18 @@ It's expecting to fail if the signer is not the admin of the group.
|
||||
|
||||
The `UpdateGroupMetadata` can be used to update a group metadata.
|
||||
|
||||
+++ https://github.com/cosmos/cosmos-sdk/blob/6f58963e7f6ce820e9b33f02f06f7b96f6d2e347/proto/cosmos/group/v1beta1/tx.proto#L107-L118
|
||||
+++ <https://github.com/cosmos/cosmos-sdk/blob/6f58963e7f6ce820e9b33f02f06f7b96f6d2e347/proto/cosmos/group/v1beta1/tx.proto#L107-L118>
|
||||
|
||||
It's expecting to fail if:
|
||||
- new metadata length is greater than `MaxMetadataLen` config.
|
||||
- the signer is not the admin of the group.
|
||||
|
||||
* new metadata length is greater than `MaxMetadataLen` config.
|
||||
* the signer is not the admin of the group.
|
||||
|
||||
## Msg/CreateGroupPolicy
|
||||
|
||||
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 `MaxMetadataLen` config.
|
||||
|
||||
@@ -55,7 +56,7 @@ It's expecting to fail if metadata length is greater than `MaxMetadataLen` confi
|
||||
|
||||
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 policy.
|
||||
|
||||
@@ -63,7 +64,7 @@ It's expecting to fail if the signer is not the admin of the group 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 policy.
|
||||
|
||||
@@ -71,18 +72,19 @@ It's expecting to fail if the signer is not the admin of the group policy.
|
||||
|
||||
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>
|
||||
|
||||
It's expecting to fail if:
|
||||
- new metadata length is greater than `MaxMetadataLen` config.
|
||||
- the signer is not the admin of the group.
|
||||
|
||||
* new metadata length is greater than `MaxMetadataLen` config.
|
||||
* the signer is not the admin of the group.
|
||||
|
||||
## Msg/CreateProposal
|
||||
|
||||
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.
|
||||
|
||||
+++ 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>
|
||||
|
||||
It's expecting to fail if metadata length is greater than `MaxMetadataLen` config.
|
||||
|
||||
@@ -90,18 +92,19 @@ It's expecting to fail if metadata length is greater than `MaxMetadataLen` confi
|
||||
|
||||
A proposal can be withdrawn using `MsgWithdrawProposal` which has a `address` (can be either proposer or policy admin) and a `proposal_id` (which has to be withdrawn).
|
||||
|
||||
+++ https://github.com/cosmos/cosmos-sdk/blob/f2d6f0e4bb1a9bd7f7ae3cdc4702c9d3d1fc0329/proto/cosmos/group/v1beta1/tx.proto#L251-L258
|
||||
+++ <https://github.com/cosmos/cosmos-sdk/blob/f2d6f0e4bb1a9bd7f7ae3cdc4702c9d3d1fc0329/proto/cosmos/group/v1beta1/tx.proto#L251-L258>
|
||||
|
||||
It's expecting to fail if:
|
||||
- the signer is neither policy address nor proposer of the proposal.
|
||||
- the proposal is already closed or aborted.
|
||||
|
||||
* the signer is neither policy address nor proposer of the proposal.
|
||||
* the proposal is already closed or aborted.
|
||||
|
||||
## Msg/Vote
|
||||
|
||||
A new vote can be created with the `MsgVote`, given a proposal id, a voter address, a choice (yes, no, veto or abstain) and some optional metadata bytes.
|
||||
An optional `Exec` value can be provided to try to execute the proposal immediately after voting.
|
||||
|
||||
+++ https://github.com/cosmos/cosmos-sdk/blob/6f58963e7f6ce820e9b33f02f06f7b96f6d2e347/proto/cosmos/group/v1beta1/tx.proto#L248-L265
|
||||
+++ <https://github.com/cosmos/cosmos-sdk/blob/6f58963e7f6ce820e9b33f02f06f7b96f6d2e347/proto/cosmos/group/v1beta1/tx.proto#L248-L265>
|
||||
|
||||
It's expecting to fail if metadata length is greater than `MaxMetadataLen` config.
|
||||
|
||||
@@ -109,11 +112,12 @@ It's expecting to fail if metadata length is greater than `MaxMetadataLen` confi
|
||||
|
||||
A proposal can be executed with the `MsgExec`.
|
||||
|
||||
+++ https://github.com/cosmos/cosmos-sdk/blob/6f58963e7f6ce820e9b33f02f06f7b96f6d2e347/proto/cosmos/group/v1beta1/tx.proto#L270-L278
|
||||
+++ <https://github.com/cosmos/cosmos-sdk/blob/6f58963e7f6ce820e9b33f02f06f7b96f6d2e347/proto/cosmos/group/v1beta1/tx.proto#L270-L278>
|
||||
|
||||
The messages that are part of this proposal won't be executed if:
|
||||
- the group has been modified before tally.
|
||||
- the group policy has been modified before tally.
|
||||
- the proposal has not been accepted.
|
||||
- the proposal status is not closed.
|
||||
- the proposal has already been successfully executed.
|
||||
|
||||
* the group has been modified before tally.
|
||||
* the group policy has been modified before tally.
|
||||
* the proposal has not been accepted.
|
||||
* the proposal status is not closed.
|
||||
* the proposal has already been successfully executed.
|
||||
|
||||
@@ -60,4 +60,4 @@ The group module emits the following events:
|
||||
| Type | Attribute Key | Attribute Value |
|
||||
|--------------------------------|---------------|--------------------------------|
|
||||
| message | action | /cosmos.group.v1beta1.Msg/Exec |
|
||||
| cosmos.group.v1beta1.EventExec | proposal_id | {proposalId} |
|
||||
| cosmos.group.v1beta1.EventExec | proposal_id | {proposalId} |
|
||||
|
||||
+34
-34
@@ -16,41 +16,41 @@ This module allows the creation and management of on-chain multisig accounts and
|
||||
## Contents
|
||||
|
||||
1. **[Concepts](01_concepts.md)**
|
||||
- [Group](01_concepts.md#group)
|
||||
- [Group Policy](01_concepts.md#group-policy)
|
||||
- [Decision Policy](01_concepts.md#decision-policy)
|
||||
- [Proposal](01_concepts.md#proposal)
|
||||
- [Voting](01_concepts.md#voting)
|
||||
- [Executing Proposals](01_concepts.md#executing-proposals)
|
||||
* [Group](01_concepts.md#group)
|
||||
* [Group Policy](01_concepts.md#group-policy)
|
||||
* [Decision Policy](01_concepts.md#decision-policy)
|
||||
* [Proposal](01_concepts.md#proposal)
|
||||
* [Voting](01_concepts.md#voting)
|
||||
* [Executing Proposals](01_concepts.md#executing-proposals)
|
||||
2. **[State](02_state.md)**
|
||||
- [Group Table](02_state.md#group-table)
|
||||
- [Group Member Table](02_state.md#group-member-table)
|
||||
- [Group Policy Table](02_state.md#group-policy-table)
|
||||
- [Proposal](02_state.md#proposal-table)
|
||||
- [Vote Table](02_state.md#vote-table)
|
||||
* [Group Table](02_state.md#group-table)
|
||||
* [Group Member Table](02_state.md#group-member-table)
|
||||
* [Group Policy Table](02_state.md#group-policy-table)
|
||||
* [Proposal](02_state.md#proposal-table)
|
||||
* [Vote Table](02_state.md#vote-table)
|
||||
3. **[Msg Service](03_messages.md)**
|
||||
- [Msg/CreateGroup](03_messages.md#msgcreategroup)
|
||||
- [Msg/UpdateGroupMembers](03_messages.md#msgupdategroupmembers)
|
||||
- [Msg/UpdateGroupAdmin](03_messages.md#msgupdategroupadmin)
|
||||
- [Msg/UpdateGroupMetadata](03_messages.md#msgupdategroupmetadata)
|
||||
- [Msg/CreateGroupPolicy](03_messages.md#msgcreategrouppolicy)
|
||||
- [Msg/UpdateGroupPolicyAdmin](03_messages.md#msgupdategrouppolicyadmin)
|
||||
- [Msg/UpdateGroupPolicyDecisionPolicy](03_messages.md#msgupdategrouppolicydecisionpolicy)
|
||||
- [Msg/UpdateGroupPolicyMetadata](03_messages.md#msgupdategrouppolicymetadata)
|
||||
- [Msg/CreateProposal](03_messages.md#msgcreateproposal)
|
||||
- [Msg/WithdrawProposal](03_messages.md#msgwithdrawproposal)
|
||||
- [Msg/Vote](03_messages.md#msgvote)
|
||||
- [Msg/Exec](03_messages.md#msgexec)
|
||||
* [Msg/CreateGroup](03_messages.md#msgcreategroup)
|
||||
* [Msg/UpdateGroupMembers](03_messages.md#msgupdategroupmembers)
|
||||
* [Msg/UpdateGroupAdmin](03_messages.md#msgupdategroupadmin)
|
||||
* [Msg/UpdateGroupMetadata](03_messages.md#msgupdategroupmetadata)
|
||||
* [Msg/CreateGroupPolicy](03_messages.md#msgcreategrouppolicy)
|
||||
* [Msg/UpdateGroupPolicyAdmin](03_messages.md#msgupdategrouppolicyadmin)
|
||||
* [Msg/UpdateGroupPolicyDecisionPolicy](03_messages.md#msgupdategrouppolicydecisionpolicy)
|
||||
* [Msg/UpdateGroupPolicyMetadata](03_messages.md#msgupdategrouppolicymetadata)
|
||||
* [Msg/CreateProposal](03_messages.md#msgcreateproposal)
|
||||
* [Msg/WithdrawProposal](03_messages.md#msgwithdrawproposal)
|
||||
* [Msg/Vote](03_messages.md#msgvote)
|
||||
* [Msg/Exec](03_messages.md#msgexec)
|
||||
4. **[Events](04_events.md)**
|
||||
- [EventCreateGroup](04_events.md#eventcreategroup)
|
||||
- [EventUpdateGroup](04_events.md#eventupdategroup)
|
||||
- [EventCreateGroupPolicy](04_events.md#eventcreategrouppolicy)
|
||||
- [EventUpdateGroupPolicy](04_events.md#eventupdategrouppolicy)
|
||||
- [EventCreateProposal](04_events.md#eventcreateproposal)
|
||||
- [EventWithdrawProposal](04_events.md#eventwithdrawproposal)
|
||||
- [EventVote](04_events.md#eventvote)
|
||||
- [EventExec](04_events.md#eventexec)
|
||||
* [EventCreateGroup](04_events.md#eventcreategroup)
|
||||
* [EventUpdateGroup](04_events.md#eventupdategroup)
|
||||
* [EventCreateGroupPolicy](04_events.md#eventcreategrouppolicy)
|
||||
* [EventUpdateGroupPolicy](04_events.md#eventupdategrouppolicy)
|
||||
* [EventCreateProposal](04_events.md#eventcreateproposal)
|
||||
* [EventWithdrawProposal](04_events.md#eventwithdrawproposal)
|
||||
* [EventVote](04_events.md#eventvote)
|
||||
* [EventExec](04_events.md#eventexec)
|
||||
5. **[Client](05_client.md)**
|
||||
- [CLI](05_client.md#cli)
|
||||
- [gRPC](05_client.md#grpc)
|
||||
- [REST](05_client.md#rest)
|
||||
* [CLI](05_client.md#cli)
|
||||
* [gRPC](05_client.md#grpc)
|
||||
* [REST](05_client.md#rest)
|
||||
|
||||
Reference in New Issue
Block a user