From d02a0eb65d403ed0090094b627d3d0255bfa9ad8 Mon Sep 17 00:00:00 2001 From: Amaury M <1293565+amaurym@users.noreply.github.com> Date: Thu, 24 Jun 2021 11:55:51 +0200 Subject: [PATCH 1/9] Add release notes first draft --- RELEASE_NOTES.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 RELEASE_NOTES.md diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md new file mode 100644 index 000000000000..aa9b79b2ff31 --- /dev/null +++ b/RELEASE_NOTES.md @@ -0,0 +1,23 @@ +# Cosmos SDK v0.43.0 Release Notes + +This release introduces several new important updates to the Cosmos SDK. The release notes below provide an overview of the larger high-level changes introduced in the v0.43 release series. + +That being said, this release does contain many more minor and module-level changes besides those mentioned below. For a comprehsive list of all breaking changes and improvements since the v0.42 "Stargate" release series, please see the +[changelog](https://github.com/cosmos/cosmos-sdk/blob/v0.43.0-rc0/CHANGELOG.md). + +## Two new modules: `x/authz` and `x/feegrant` + +The v0.43 release focused on simplifying [keys and fee management](https://github.com/cosmos/cosmos-sdk/issues/7074) for SDK users, by introducing the two following modules: + +- `x/feegrant` allows one account, the "granter" to grant another account, the "grantee" an allowance to spend the granter's account balance for fees within certain well-defined limits. It solves the problem of signing accounts needing to possess a sufficient balance in order to pay fees. + - See [ADR-029](https://github.com/cosmos/cosmos-sdk/blob/8f21e26a6506c9ee81686bad6cf9be3f0e8e11d7/docs/architecture/adr-029-fee-grant-module.md) introducing the module. + - Read the [documentation](https://docs.cosmos.network/master/modules/feegrant/). + - Check out its [Protobuf definitions](https://github.com/cosmos/cosmos-sdk/tree/master/proto/cosmos/feegrant/v1beta1). +- `x/authz` provides functionality for granting arbitrary privileges from one account (the "granter") to another account (the "grantee"). These privileges, called [`Authorization`](https://github.com/cosmos/cosmos-sdk/blob/f2cea6a137ce19ad8987fa8a0cb99f4b37c4484d/x/authz/authorizations.go#L11)s in the code, can for example allow grantees to execute `Msg`s on behalf of the granter. + - See [ADR-030](https://github.com/cosmos/cosmos-sdk/blob/8f21e26a6506c9ee81686bad6cf9be3f0e8e11d7/docs/architecture/adr-030-authz-module.md) introducing the module. + - Read the [documentation](https://docs.cosmos.network/master/modules/authz/). + - Check out its [Protobuf definitions](https://github.com/cosmos/cosmos-sdk/tree/master/proto/cosmos/authz/v1beta1). + +## ADR-028 Address derivation from public keys + +## In-place store migrations From f664e65faf18f5ad9122ca34a51bb71b995e3bfa Mon Sep 17 00:00:00 2001 From: Amaury M <1293565+amaurym@users.noreply.github.com> Date: Thu, 24 Jun 2021 13:08:32 +0200 Subject: [PATCH 2/9] Add adr-028 --- RELEASE_NOTES.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index aa9b79b2ff31..57521403550a 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -3,7 +3,7 @@ This release introduces several new important updates to the Cosmos SDK. The release notes below provide an overview of the larger high-level changes introduced in the v0.43 release series. That being said, this release does contain many more minor and module-level changes besides those mentioned below. For a comprehsive list of all breaking changes and improvements since the v0.42 "Stargate" release series, please see the -[changelog](https://github.com/cosmos/cosmos-sdk/blob/v0.43.0-rc0/CHANGELOG.md). +[CHANGELOG](https://github.com/cosmos/cosmos-sdk/blob/v0.43.0-rc0/CHANGELOG.md). ## Two new modules: `x/authz` and `x/feegrant` @@ -18,6 +18,16 @@ The v0.43 release focused on simplifying [keys and fee management](https://githu - Read the [documentation](https://docs.cosmos.network/master/modules/authz/). - Check out its [Protobuf definitions](https://github.com/cosmos/cosmos-sdk/tree/master/proto/cosmos/authz/v1beta1). -## ADR-028 Address derivation from public keys +## ADR-028 Addresses + +In the SDK versions v0.42 and earlier, addresses were all 20-bytes long, generated by truncating the first 20 bytes of the SHA256 hash of some given bytes (e.g. the public key for normal accounts, or the module name for module accounts). Unfortunately, this significantly decreases the security of Cosmos SDK due to address space collisions. + +ADR-028 introduces a new specification for deriving addresses for all kinds of addressable accounts. As a quick summary: + +- secp256k1 public keys still have 20-byte addresses to keep backwards-compatibility, +- new public key types (e.g. ed25519) and module accounts will have 32-byte address to increase collision resistance, +- new algorithms have also been specified for composed accounts (accounts composed of multiple components, like multisigs) or derived accounts (e.g. module sub-accounts). + +[Link to ADR-028](https://github.com/cosmos/cosmos-sdk/blob/master/docs/architecture/adr-028-public-key-addresses.md). ## In-place store migrations From 77c2b6e8146617ce42e9db58b913afea58034f44 Mon Sep 17 00:00:00 2001 From: Amaury M <1293565+amaurym@users.noreply.github.com> Date: Thu, 24 Jun 2021 14:03:05 +0200 Subject: [PATCH 3/9] tweaks --- RELEASE_NOTES.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 57521403550a..c67c40dd2069 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -20,14 +20,14 @@ The v0.43 release focused on simplifying [keys and fee management](https://githu ## ADR-028 Addresses -In the SDK versions v0.42 and earlier, addresses were all 20-bytes long, generated by truncating the first 20 bytes of the SHA256 hash of some given bytes (e.g. the public key for normal accounts, or the module name for module accounts). Unfortunately, this significantly decreases the security of Cosmos SDK due to address space collisions. +In the SDK versions v0.42 and earlier, addresses were all 20-bytes long, generated by truncating the first 20 bytes of the SHA-256 hash of some given bytes (e.g. the public key for normal accounts, or the module name for module accounts). Unfortunately, this significantly decreases the security of Cosmos SDK due to address space collisions. -ADR-028 introduces a new specification for deriving addresses for all kinds of addressable accounts. As a quick summary: +ADR-028 introduces a new specification for deriving addresses for all kinds of addressable accounts. Following is a quick summary: - secp256k1 public keys still have 20-byte addresses to keep backwards-compatibility, - new public key types (e.g. ed25519) and module accounts will have 32-byte address to increase collision resistance, -- new algorithms have also been specified for composed accounts (accounts composed of multiple components, like multisigs) or derived accounts (e.g. module sub-accounts). +- new algorithms have also been specified for composed accounts (like multisigs) or derived accounts (like module sub-accounts). [Link to ADR-028](https://github.com/cosmos/cosmos-sdk/blob/master/docs/architecture/adr-028-public-key-addresses.md). -## In-place store migrations +## ADR-041 In-place store migrations From 683044253fce2c4cf5a0f037aa2b1039ecba490e Mon Sep 17 00:00:00 2001 From: Amaury M <1293565+amaurym@users.noreply.github.com> Date: Fri, 25 Jun 2021 13:13:51 +0200 Subject: [PATCH 4/9] Add stuff --- RELEASE_NOTES.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index c67c40dd2069..db15b6ac62a3 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -31,3 +31,23 @@ ADR-028 introduces a new specification for deriving addresses for all kinds of a [Link to ADR-028](https://github.com/cosmos/cosmos-sdk/blob/master/docs/architecture/adr-028-public-key-addresses.md). ## ADR-041 In-place store migrations + +Chain upgrades were historically done with the Cosmos SDK by creating an upgrade proposal, halting the chain at the given height, exporting state to a JSON file, making the necessary JSON file changes, and creating a new chain with the modified JSON file as genesis. This procedure is tedious, and could take up to several hours. + +Cosmos SDK v0.43 introduces a new way of handling upgrades. Whan an upgrade happens, instead of starting a new chain, the new binary will read the existing database, and perform in-place modifications of the store. We expect this method to significantly reduce the migration time. + +For more information: + +- see the [module's documenation](https://docs.cosmos.network/master/building-modules/upgrade.html) to how to modify your module to be able to support in-place store migrations, +- check out how to [set up an upgrade handler](https://docs.cosmos.network/master/core/upgrade.html) that perform in-place store migrations in your `app.go`, +- read [ADR-041](https://github.com/cosmos/cosmos-sdk/blob/master/docs/architecture/adr-041-in-place-store-migrations.md) introducing this feature. + +## Protobuf Client-Side Breaking Changes + +In this release, we deprecated a couple of fields in our Protobuf definitions. When using these fields, some changes in behavior might occur whether you're hitting an v0.42 or a v0.43 node. + +- `cosmos.gov.v1beta1.Vote#option` is deprecated in favor of `cosmos.gov.v1beta1.Vote#options` (with an "s") to support x/gov [split votes](https://github.com/cosmos/cosmos-sdk/blob/master/docs/architecture/adr-037-gov-split-vote.md). There are no breaking changes in `Msg`s, as a new `MsgWeightedVote` has been added to support split votes. However, when querying, the deprecated `option` field is populated only when the underlying vote has one VoteOption with weight 1. For other split votes, the `option` field will be equal to `OptionEmpty`. +- `cosmos.upgrade.v1beta1.Plan#time` is deprecated, because the SDK stops supporting time-based upgrades in favor or height-based upgrades. If an upgrade Plan is created with a non-empty time, the node will error. +- `cosmos.upgrade.v1beta1.Plan#upgraded_client_state` is deprecated as IBC logic has been moved to the IBC repo. If this field is set, the node will error. + +The SDK team is planning to document in the form of an ADR a set of Protobuf guidelines for all chain developers, follow [#9477](https://github.com/cosmos/cosmos-sdk/issues/9477) for more info. From 712bcc3bd15cc694fa663c8a04da91ddaaff122a Mon Sep 17 00:00:00 2001 From: Amaury <1293565+amaurym@users.noreply.github.com> Date: Fri, 25 Jun 2021 16:27:16 +0200 Subject: [PATCH 5/9] Update RELEASE_NOTES.md Co-authored-by: Robert Zaremba --- RELEASE_NOTES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index db15b6ac62a3..29bd3169b4cc 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -50,4 +50,4 @@ In this release, we deprecated a couple of fields in our Protobuf definitions. W - `cosmos.upgrade.v1beta1.Plan#time` is deprecated, because the SDK stops supporting time-based upgrades in favor or height-based upgrades. If an upgrade Plan is created with a non-empty time, the node will error. - `cosmos.upgrade.v1beta1.Plan#upgraded_client_state` is deprecated as IBC logic has been moved to the IBC repo. If this field is set, the node will error. -The SDK team is planning to document in the form of an ADR a set of Protobuf guidelines for all chain developers, follow [#9477](https://github.com/cosmos/cosmos-sdk/issues/9477) for more info. +The SDK team is planning to document Protobuf change process using an ADR. It will be a guideline for all chain developers, follow [#9477](https://github.com/cosmos/cosmos-sdk/issues/9477) for more info. From e0299cc51e5feef8907bfb0f80ceded6e3558b14 Mon Sep 17 00:00:00 2001 From: Amaury M <1293565+amaurym@users.noreply.github.com> Date: Fri, 25 Jun 2021 16:36:46 +0200 Subject: [PATCH 6/9] Add mention of new structure --- RELEASE_NOTES.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 29bd3169b4cc..708a91b77a0f 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -18,6 +18,8 @@ The v0.43 release focused on simplifying [keys and fee management](https://githu - Read the [documentation](https://docs.cosmos.network/master/modules/authz/). - Check out its [Protobuf definitions](https://github.com/cosmos/cosmos-sdk/tree/master/proto/cosmos/authz/v1beta1). +These two modules have a slightly different folder structure compared to previously existing modules. For example, all Protobuf-generated files are generated in the module root folder instead of the `types/` folder, and the module itself is defined inside a `module` sub-package. Moving forward, we believe this folder structure is clearer and sets a better example for module developers. To learn more about building modules following this structure, please read our [building module docs](https://docs.cosmos.network/master/building-modules/intro.html). + ## ADR-028 Addresses In the SDK versions v0.42 and earlier, addresses were all 20-bytes long, generated by truncating the first 20 bytes of the SHA-256 hash of some given bytes (e.g. the public key for normal accounts, or the module name for module accounts). Unfortunately, this significantly decreases the security of Cosmos SDK due to address space collisions. From f2ceff7a43e80020d9f43ce388f6d6a26f401678 Mon Sep 17 00:00:00 2001 From: Amaury <1293565+amaurym@users.noreply.github.com> Date: Fri, 25 Jun 2021 16:57:28 +0200 Subject: [PATCH 7/9] Update RELEASE_NOTES.md Co-authored-by: Ryan Christoffersen <12519942+ryanchristo@users.noreply.github.com> --- RELEASE_NOTES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 708a91b77a0f..515f331ed277 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -18,7 +18,7 @@ The v0.43 release focused on simplifying [keys and fee management](https://githu - Read the [documentation](https://docs.cosmos.network/master/modules/authz/). - Check out its [Protobuf definitions](https://github.com/cosmos/cosmos-sdk/tree/master/proto/cosmos/authz/v1beta1). -These two modules have a slightly different folder structure compared to previously existing modules. For example, all Protobuf-generated files are generated in the module root folder instead of the `types/` folder, and the module itself is defined inside a `module` sub-package. Moving forward, we believe this folder structure is clearer and sets a better example for module developers. To learn more about building modules following this structure, please read our [building module docs](https://docs.cosmos.network/master/building-modules/intro.html). +These two modules have a slightly different folder structure compared to previously existing modules. For example, all Protobuf-generated files are generated in the module root folder instead of the `types/` folder, and the module itself is defined inside a `module` sub-package. Moving forward, we believe this folder structure is clearer and sets a better example for module developers. To learn more about building modules following this structure, please read our [building modules](https://docs.cosmos.network/master/building-modules/intro.html) documentation. ## ADR-028 Addresses From 43976b840d87f47534df66755ec53d29fdcd5acc Mon Sep 17 00:00:00 2001 From: Amaury <1293565+amaurym@users.noreply.github.com> Date: Fri, 25 Jun 2021 16:57:39 +0200 Subject: [PATCH 8/9] Update RELEASE_NOTES.md Co-authored-by: Ryan Christoffersen <12519942+ryanchristo@users.noreply.github.com> --- RELEASE_NOTES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 515f331ed277..3ae77e22b111 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -40,7 +40,7 @@ Cosmos SDK v0.43 introduces a new way of handling upgrades. Whan an upgrade happ For more information: -- see the [module's documenation](https://docs.cosmos.network/master/building-modules/upgrade.html) to how to modify your module to be able to support in-place store migrations, +- see the [upgrading modules](https://docs.cosmos.network/master/building-modules/upgrade.html) documentation to learn how to modify your module to be able to support in-place store migrations, - check out how to [set up an upgrade handler](https://docs.cosmos.network/master/core/upgrade.html) that perform in-place store migrations in your `app.go`, - read [ADR-041](https://github.com/cosmos/cosmos-sdk/blob/master/docs/architecture/adr-041-in-place-store-migrations.md) introducing this feature. From 933d9d0e8f5afcc6a38a1ef518ddc52e1b187ddb Mon Sep 17 00:00:00 2001 From: Amaury <1293565+amaurym@users.noreply.github.com> Date: Fri, 25 Jun 2021 16:58:04 +0200 Subject: [PATCH 9/9] Update RELEASE_NOTES.md Co-authored-by: Ryan Christoffersen <12519942+ryanchristo@users.noreply.github.com> --- RELEASE_NOTES.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 3ae77e22b111..422de7219935 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -2,8 +2,7 @@ This release introduces several new important updates to the Cosmos SDK. The release notes below provide an overview of the larger high-level changes introduced in the v0.43 release series. -That being said, this release does contain many more minor and module-level changes besides those mentioned below. For a comprehsive list of all breaking changes and improvements since the v0.42 "Stargate" release series, please see the -[CHANGELOG](https://github.com/cosmos/cosmos-sdk/blob/v0.43.0-rc0/CHANGELOG.md). +That being said, this release does contain many more minor and module-level changes besides those mentioned below. For a comprehsive list of all breaking changes and improvements since the v0.42 "Stargate" release series, please see the [CHANGELOG](https://github.com/cosmos/cosmos-sdk/blob/v0.43.0-rc0/CHANGELOG.md). ## Two new modules: `x/authz` and `x/feegrant`