cosmos-sdk/x
Marie Gauthier c7a933cd6e
feat: Add Table-Store (aka ORM) package - Table and Indexable (#9751)
<!--
The default pull request template is for types feat, fix, or refactor.
For other templates, add one of the following parameters to the url:
- template=docs.md
- template=other.md
-->

## Description

ref: https://github.com/cosmos/cosmos-sdk/issues/9237, https://github.com/cosmos/cosmos-sdk/discussions/9156

This is the first step towards the migration of the [Table-Store (ORM) package](c99dbedd1f/orm) currently in regen-ledger into the SDK. This won't be exposed as a public API to start with but rather be internal to `x/group`.

This first PR brings these core concepts:
- `table` is the high level object for storage mapper functionality where entities are stored by an unique identifier called `RowID`
- `Indexable` types can be used to setup new tables.

There will be follow-up PRs for adding the following features:
- table types with auto-incrementing `uint64` primary keys and natural primary keys
- secondary indexes
- iterator and pagination
- import/export genesis


---

### 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
- [x] 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) _not applicable_
- [x] 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` _not applicable_
- [x] included comments for [documenting Go code](https://blog.golang.org/godoc)
- [x] 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)
2021-10-21 10:19:52 +00:00
..
auth revert: Remove SIGN_MODE_AMINO_AUX (#10322) 2021-10-18 10:32:43 +00:00
authz revert: Remove SIGN_MODE_AMINO_AUX (#10322) 2021-10-18 10:32:43 +00:00
bank chore: Fix comment on DenomMetadata for 0.44 (#10408) 2021-10-20 15:34:21 +00:00
capability perf: avoid unnecessary byteslice->string before fmt %s verb (#10364) 2021-10-14 08:53:38 +00:00
crisis docs: add crisis module client docs (#10304) 2021-10-06 11:31:20 +00:00
distribution docs: Update proposal.go for spelling mistakes (#10390) 2021-10-18 08:49:44 +00:00
epoching refactor: Remove store type aliases (#10295) 2021-10-04 16:36:38 +00:00
evidence refactor: Remove store type aliases (#10295) 2021-10-04 16:36:38 +00:00
feegrant feat!: Ensure InitGenesis returns with non-empty validator set (#9697) 2021-10-05 12:02:51 +00:00
genutil perf: avoid unnecessary byteslice->string before fmt %s verb (#10364) 2021-10-14 08:53:38 +00:00
gov refactor!: remove gov keeper.MustMarshal (#10373) 2021-10-15 13:00:29 +02:00
group feat: Add Table-Store (aka ORM) package - Table and Indexable (#9751) 2021-10-21 10:19:52 +00:00
mint docs: add client spec for x/mint (#10330) 2021-10-11 08:07:38 +00:00
nft feat: Introduce Cosmos Scalars (#9933) 2021-09-21 09:46:29 +00:00
params perf: avoid unnecessary byteslice->string before fmt %s verb (#10364) 2021-10-14 08:53:38 +00:00
simulation refactor: move from io/ioutil to io and os package (#10341) 2021-10-13 07:38:22 +00:00
slashing docs: add client spec for x/slashing (#10307) 2021-10-06 11:40:03 +00:00
staking docs: Added staking client docs. (#10306) 2021-10-12 10:49:38 +00:00
upgrade perf: avoid unnecessary byteslice->string before fmt %s verb (#10364) 2021-10-14 08:53:38 +00:00
README.md docs: fix module spec ordering (#9870) 2021-08-09 08:09:17 +00:00

README.md

List of Modules

Here are some production-grade modules that can be used in Cosmos SDK applications, along with their respective documentation:

  • Auth - Authentication of accounts and transactions for Cosmos SDK application.
  • Authz - Authorization for accounts to perform actions on behalf of other accounts.
  • Bank - Token transfer functionalities.
  • Capability - Object capability implementation.
  • Crisis - Halting the blockchain under certain circumstances (e.g. if an invariant is broken).
  • Distribution - Fee distribution, and staking token provision distribution.
  • Evidence - Evidence handling for double signing, misbehaviour, etc.
  • Feegrant - Grant fee allowances for executing transactions.
  • Governance - On-chain proposals and voting.
  • Mint - Creation of new units of staking token.
  • Params - Globally available parameter store.
  • Slashing - Validator punishment mechanisms.
  • Staking - Proof-of-Stake layer for public blockchains.
  • Upgrade - Software upgrades handling and coordination.

To learn more about the process of building modules, visit the building modules reference documentation.

IBC

The IBC module for the SDK has moved to its own repository.