Go to file
Facundo Medica 6a03586074
fix: remove previous header in Prepare/Process Proposal + provide chain id in baseapp + fix context for verifying txs (#15303)
## Description

### Issue
Some values (like chain ID) were being leaked from the previous block/initialization into PrepareProposal and ProcessProposal, these values are only available if:
1. The node has never been stopped since the genesis block (as these values are set on `InitChain`)
2. The node has already commited a block (as the previous header was being used for the new state of prepare and process proposal).

So if a node is restarted, during the first prepare and process proposal these values won't be populated, and that will cause issues if they are being used.

### Solution

Remove any previous header information from a previous block in the prepare and process proposal contexts, making things consistent at every height.

- Added ChainID to baseapp
- Use an empty header in Commit() with only the chain id set
- Fix context for prepare and process proposal

Closes: #15269



---

### 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/main/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/main/docs/docs/building-modules)
- [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/main/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)
2023-03-13 17:15:39 +00:00
.github refactor: remove capability module (#15344) 2023-03-10 12:59:10 +00:00
.vscode feat: add vscode e2e config (#13851) 2022-11-14 11:26:28 +01:00
api refactor: remove capability module (#15344) 2023-03-10 12:59:10 +00:00
baseapp fix: remove previous header in Prepare/Process Proposal + provide chain id in baseapp + fix context for verifying txs (#15303) 2023-03-13 17:15:39 +00:00
client build(deps): Bump cosmossdk.io/log from 0.0.0-20230313123454-0fe816b71a62 to 0.1.0 (#15371) 2023-03-13 15:07:47 +00:00
codec refactor(bank): use collections for state management (#15293) 2023-03-09 11:36:39 +00:00
collections build(deps): Bump deps and remove replaces (#15335) 2023-03-09 18:46:15 +01:00
contrib build(deps): Bump bufbuild/buf-setup-action from 1.15.0 to 1.15.1 (#15333) 2023-03-09 16:37:09 +00:00
core build(deps): Bump cosmossdk.io/math from 1.0.0-beta.6.0.20230216172121-959ce49135e4 to 1.0.0-rc.0 (#15370) 2023-03-13 15:38:47 +01:00
crypto fix(crypto/keyring): disallow non-owner reads of keyhash (#15258) 2023-03-03 16:25:22 +00:00
depinject chore: bump cometbft to v0.37.0-rc3 (#15220) 2023-03-01 16:30:41 +01:00
docs feat: make logger easily replaceable (#15358) 2023-03-13 09:01:58 +00:00
errors build(deps): Bump github.com/golang/protobuf from 1.5.2 to 1.5.3 (#15310) 2023-03-08 21:16:24 +00:00
fuzz chore: use sdkmath in misc packages (#14606) 2023-01-16 12:48:32 +00:00
internal refactor: create go.mod for store (#14746) 2023-01-25 13:31:56 +00:00
log feat: add filtering to logger (#15212) 2023-03-13 13:16:20 +00:00
math chore: bump cometbft to v0.37.0-rc3 (#15220) 2023-03-01 16:30:41 +01:00
orm build(deps): Bump deps and remove replaces (#15335) 2023-03-09 18:46:15 +01:00
proto refactor: remove capability module (#15344) 2023-03-10 12:59:10 +00:00
runtime refactor(bank): use collections for state management (#15293) 2023-03-09 11:36:39 +00:00
scripts feat!: use cosmossdk.io/log logger (#15011) 2023-02-27 21:36:22 +00:00
server fix: remove previous header in Prepare/Process Proposal + provide chain id in baseapp + fix context for verifying txs (#15303) 2023-03-13 17:15:39 +00:00
simapp fix: remove previous header in Prepare/Process Proposal + provide chain id in baseapp + fix context for verifying txs (#15303) 2023-03-13 17:15:39 +00:00
std fix: register evidence regression (#10595) 2021-12-14 14:25:31 +00:00
store build(deps): Bump cosmossdk.io/log from 0.0.0-20230313123454-0fe816b71a62 to 0.1.0 (#15371) 2023-03-13 15:07:47 +00:00
telemetry fix: all: fix resource leaks found by staticmajor (#13394) 2022-10-06 20:11:40 +00:00
tests fix: remove previous header in Prepare/Process Proposal + provide chain id in baseapp + fix context for verifying txs (#15303) 2023-03-13 17:15:39 +00:00
testutil fix: remove previous header in Prepare/Process Proposal + provide chain id in baseapp + fix context for verifying txs (#15303) 2023-03-13 17:15:39 +00:00
tools build(deps): Bump cosmossdk.io/log from 0.0.0-20230313123454-0fe816b71a62 to 0.1.0 (#15371) 2023-03-13 15:07:47 +00:00
types refactor(bank): use collections for state management (#15293) 2023-03-09 11:36:39 +00:00
version test: add cmdtest package (#15251) 2023-03-06 19:40:24 +00:00
x build(deps): Bump cosmossdk.io/log from 0.0.0-20230313123454-0fe816b71a62 to 0.1.0 (#15371) 2023-03-13 15:07:47 +00:00
.clang-format chore: improve proto formatting (#12656) 2022-07-21 10:56:31 +00:00
.dockerignore Add basic Dockerfile to build all binaries and export gaiad 2018-04-10 12:39:47 +02:00
.gitattributes Merge PR #6426: Migrate API Server 2020-06-15 13:39:09 -04:00
.gitignore feat(depinject): send logging to file instead of stderr (#14825) 2023-01-27 21:10:55 +01:00
.gitpod.yml Create .gitpod.yml (#12662) 2022-08-15 15:18:30 +02:00
.golangci.yml fix: correct path required proto testdata (#14991) 2023-02-11 16:59:16 +00:00
.goreleaser.yml ci: fix release notes not populated by goreleaser 2022-08-13 20:41:27 +02:00
.markdownlint.json docs: Code blocks in SDK docs are broken (#11189) 2022-02-14 23:39:35 +01:00
.markdownlintignore docs: Improve markdownlint configuration (#11104) 2022-02-10 12:07:01 +00:00
.mergify.yml chore: update .mergify.yml #13841 2022-11-11 18:49:36 +00:00
buf.work.yaml refactor: migrate to cosmos/gogoproto (#13070) 2022-09-08 17:27:48 +00:00
CHANGELOG.md feat: make logger easily replaceable (#15358) 2023-03-13 09:01:58 +00:00
CODE_OF_CONDUCT.md Update CODE_OF_CONDUCT.md (#7381) 2020-09-28 11:28:30 +02:00
CODING_GUIDELINES.md feat: migrate to docusaurus (#13471) 2022-10-10 14:01:53 +00:00
CONTRIBUTING.md docs: set buf commit for v0.47.x (#14675) 2023-01-20 12:43:53 +00:00
docker-compose.yml build: add remote debugging with delve (#10587) 2021-12-01 12:44:54 +00:00
Dockerfile build(deps): bump Go to v1.20 on SDK, simapp and standalone modules (#14979) 2023-02-09 11:56:07 -05:00
go.mod build(deps): Bump cosmossdk.io/log from 0.0.0-20230313123454-0fe816b71a62 to 0.1.0 (#15371) 2023-03-13 15:07:47 +00:00
go.sum build(deps): Bump cosmossdk.io/log from 0.0.0-20230313123454-0fe816b71a62 to 0.1.0 (#15371) 2023-03-13 15:07:47 +00:00
go.work.example build(deps): bump Go to v1.20 on SDK, simapp and standalone modules (#14979) 2023-02-09 11:56:07 -05:00
LICENSE chore: update license copyright (#12542) 2022-07-13 10:19:10 +00:00
Makefile build(deps): Bump github.com/cometbft/cometbft from 0.37.0-rc4 to 0.37.0 (#15283) 2023-03-06 22:07:16 +00:00
README.md build(deps): bump Go to v1.20 on SDK, simapp and standalone modules (#14979) 2023-02-09 11:56:07 -05:00
RELEASE_PROCESS.md docs: update tasks list for release branch (#15025) 2023-02-14 05:40:47 -08:00
ROADMAP.md chore: update roadmap with completed items (#15263) 2023-03-05 00:29:47 +01:00
SECURITY.md refactor: remove capability module (#15344) 2023-03-10 12:59:10 +00:00
sonar-project.properties ci: make sonarcloud more quiet (#14585) 2023-01-12 10:24:56 +00:00
UPGRADING.md chore: clarify some part in UPGRADING.md (#15345) 2023-03-10 17:25:03 +01:00

Cosmos SDK

banner

The Cosmos SDK is a framework for building blockchain applications. CometBFT (BFT Consensus) and the Cosmos SDK are written in the Go programming language. Cosmos SDK is used to build Gaia, the implementation of the Cosmos Hub.

WARNING: The Cosmos SDK has mostly stabilized, but we are still making some breaking changes.

Note: Requires Go 1.20+

Quick Start

To learn how the Cosmos SDK works from a high-level perspective, see the Cosmos SDK High-Level Intro.

If you want to get started quickly and learn how to build on top of Cosmos SDK, visit Cosmos SDK Tutorials. You can also fork the tutorial's repository to get started building your own Cosmos SDK application.

For more information, see the Cosmos SDK Documentation.

Contributing

See CONTRIBUTING.md for details on how to contribute and participate in our dev calls. If you want to follow the updates or learn more about the latest design then join our Discord.

Tools and Frameworks

The Cosmos ecosystem is vast. Awesome Cosmos is a community-curated list of notable frameworks, modules and tools.

Cosmos Hub Mainnet

The Cosmos Hub application, gaia, has its own cosmos/gaia repository. Go there to join the Cosmos Hub mainnet and more.

Inter-Blockchain Communication (IBC)

The IBC module for the Cosmos SDK has its own cosmos/ibc-go repository. Go there to build and integrate with the IBC module.

Ignite CLI

Ignite CLI is the all-in-one platform to build, launch, and maintain any crypto application on a sovereign and secured blockchain. If you are building a new app or a new module, use Ignite CLI to get started and speed up development.

Disambiguation

This Cosmos SDK project is not related to the React-Cosmos project (yet). Many thanks to Evan Coury and Ovidiu (@skidding) for this Github organization name. As per our agreement, this disambiguation notice will stay here.