A Framework for Building High Value Public Blockchains
APACHE-2.0 License
Bot releases are hidden (Show)
Published by robert-zaremba over 2 years ago
This release introduces bug fixes and improvements on the Cosmos SDK v0.45 series:
iavl-cache-size
config parameter parsing to set a desired IAVL cache size. The default value is way to small for big chains, and causes OOM failures.x/upgrade
module's BeginBlock
preventing accidental binary downgrades/cosmos/tx/v1beta1/txs/{hash}
endpoint returns correct return code (404) for a non existing tx.See the Cosmos SDK v0.45.1 Changelog for the exhaustive list of all changes and check other fixes in 0.45.x release series.
Full Diff: https://github.com/cosmos/cosmos-sdk/compare/v0.45.0...v0.45.1
Published by amaury1729 almost 3 years ago
Cosmos SDK v0.45.0 is a logical continuation of the v0.44.* series, but brings a couple of state- and API-breaking changes requested by the community.
There are few important changes in gas consumption, which improve the gas economics:
.Seek()
even if there are no entries, and for the key length (on top of the value length).Finally, a small improvement in gov, we increased the maximum proposal description size from 5k characters to 10k characters.
BankKeeper
interface has a new HasSupply
method to ensure that input denom actually exists on chain.CommitMultiStore
interface contains a new SetIAVLCacheSize
method for a configurable IAVL cache size.AuthKeeper
interface in x/auth
now includes a function HasAccount
.Finally, when using the SetOrder*
functions in simapp, e.g. SetOrderBeginBlocker
, we now require that all modules be present in the function arguments, or else the node panics at startup. We also added a new SetOrderMigration
function to set the order of running module migrations.
Coins.String()
, reduce RAM/CPU usage inside store/cachekv's Store.Write
) are included in this release.See our CHANGELOG for the exhaustive list of all changes, or a full commit diff.
Published by robert-zaremba almost 3 years ago
github.com/cosmos/cosmos-sdk/db
(cosmos-sdk/db here an after) is a module in the Cosmos SDK repository. It is used in store/v2
instead of tendermint/tm-db
which is now deprecated.
cosmos-sdk/db
extends the tendermint/tm-db
interface. however, it only supports BaggerDB and RocksDB (the databases we tested, which provide snapshot functionality necessary for store/v2 and ADR-040 implementation).
Published by amaury1729 almost 3 years ago
This release introduces bug fixes and improvements on the Cosmos SDK v0.44 series.
The main performance improvement concerns gRPC queries, which are now able to run concurrently on the node (#10045). To benefit from this performance boost, make sure to send your gRPC queries to the gRPC server directly (default port 9090
) instead of using the Tendermint RPC abci_query
endpoint (default port 26657
).
This release notably also:
gin-gonic/gin
version to 1.7.0 to fix the upstream security vulnerability.Amount
in tx fee Coins
.See the Cosmos SDK v0.44.3 milestone on our issue tracker for the exhaustive list of all changes.
Published by robert-zaremba about 3 years ago
Recently, the Cosmos-SDK team became aware of a high-severity security vulnerability that impacts Cosmos-SDK v0.43.x and v0.44.x and can result in a consensus halt. User funds are NOT at risk; however, the vulnerability can result in a chain halt. This vulnerability does not impact the current Cosmos Hub, though other Cosmos-SDK based blockchains using v0.43.x or v0.44.x may be affected and are advised to update to v0.44.2 immediately.
Nodes can update their software independently of each other (no coordinated chain restart necessary), but should do so as soon as they are able.
A full disclosure will be published a week after the release.
Published by robert-zaremba about 3 years ago
This is the first major release of Cosmovisor. It changes the way Cosmovisor is searching for an upgrade event from an app. Instead of scanning standard input and standard output logs, the Cosmovisor observes the $DAEMON_HOME/upgrade-info.json
file, that is produced by the x/upgrade
module. The upgrade-info.json
files is created by the x/upgrade
module and contains information from the on-chain upgrade Plan record. Using the file based approach solved many outstanding problems: freezing when logs are too long, race condition with the x/upgrade
handler, and potential exploit (if a chain would allow to log an arbitrary message, then an attacker could produce a fake upgrade signal and halt a chain or instrument a download of modified, hacked binary when the auto download option is enabled).
Cosmovisor v1.0 supports auto downloads based on the information in the data/upgrade-info.json
. In the Cosmos SDK < v0.44
, that file doesn't contain upgrade.Plan.Info
, that is needed for doing auto download. Hence Cosmovisor v1.0
auto download won't work with Apps updating from v0.43
and earlier.
NOTE: we don't recommend using auto download functionality. It can lead to potential chain halt when the upgrade Plan contains a bad link or the resource with the binary will be temporarily unavailable. We are planning on adding a upgrade verification command which can potentially solve this issue.
DAEMON_RESTART_AFTER_UPGRADE
to true
.version
command, which prints both the Cosmovisor and the associated app version.help
command, which prints the Cosmovisor help without passing it to the associated version. This is an exception, because normally, Cosmovisor passes all arguments to the associated app.For more details, please see the CHANGELOG.
Published by amaury1729 about 3 years ago
This release includes a new AnteHandler
that rejects redundant IBC transactions to save relayers fees. This is a backport of ibc-go #235.
v0.42.10 also includes multiple performance improvements, such as:
We fixed the keyring to use pre-configured data for add-genesis-account
command.
Finally, when using the client.Context
, we modified ABCI queries to use abci.QueryRequest
's Height
field if it is non-zero, otherwise continue using client.Context
's height. This is a minor client-breaking change for users of the client.Context
.
See the Cosmos SDK v0.42.10 milestone on our issue tracker for the exhaustive list of all changes.
Published by robert-zaremba about 3 years ago
v0.44 is a security release which contains a consensus breaking change.
It doesn't bring any new feature and it's a logical continuation of v0.43.
Consequences:
Please see Cosmos SDK v0.43.0 Release Notes.
For a comprehensive list of all breaking changes and improvements since the v0.42 "Stargate" release series, please see the CHANGELOG.
Published by amaury1729 about 3 years ago
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.
x/authz
and x/feegrant
The v0.43 release focused on simplifying keys and fee management 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.
x/authz
provides functionality for granting arbitrary privileges from one account (the "granter") to another account (the "grantee"). These privileges, called Authorization
s in the code, can for example allow grantees to execute Msg
s on behalf of the granter.
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 documentation.
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. Following is a quick summary:
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. When 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:
app.go
,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. 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 Protobuf change process using an ADR. It will be a guideline for all chain developers, follow #9477 for more info.
Published by robert-zaremba about 3 years ago
This is the first tracked release of Cosmovisor. It contains the original behavior of scanning app stdin and stdout.
Since the original design, this release contains one important feature: state backup. Since v0.1, by default, cosmovisor will make a state backup (<app_directory>/data
directory). Backup will be skipped if UNSAFE_SKIP_BACKUP=true
is set.
Updates to this release will be pushed to release/cosmovisor/v0.1.x
branch.
Please see the CHANGELOG for more details.
Published by robert-zaremba about 3 years ago
This is a fourth Release Candidate for v0.43. If no issue will be reported this will be the final release.
This release contains two major bug fixes:
x/capabiliy
module bug fix which prohibited IBC to create new channels (issue #9800).x/capability/keeper/Keeper.InitializeAndSeal
method and replaces it with Seal()
. It also requires app developers to update their app module manager by adding x/capability module to BeginBlocker
s before any other module's BeginBlocker
.One client-breaking change has also been introduced to fix an emitted event:
create_validator
event.It also includes a couple of minor fixes and improvements:
tx.signature='<base64_sig>'
) or by address and sequence combo (tx.acc_seq='<addr>/<seq>'
).<app> tx distribution withdraw-all-rewards
CLI by forcing the broadcast mode if a chunk size is greater than 0. This will ensure that the transactions do not fail even if the user uses invalid broadcast modes for this command (sync and async). This was requested by the community and we consider it as fixing the withdraw-all-rewards
behavior.Please see the CHANGELOG for more details.
Published by robert-zaremba about 3 years ago
This release includes an important x/capabiliy
module bug fix for 0.42.7 and 0.42.8 which prohibits IBC to create new channels (issuse #9800).
The fix changes the x/capability/keeper/Keeper.InitializeAndSeal
method behavior and requires to update an app module manager by adding x/capability module to Begin Blockers.
We also fixed <app> init --recovery
mode where the mnemonic was not handled correctly.
We also changed <app> tx distribution withdraw-all-rewards
CLI by forcing the broadcast mode if a chunk size is greater than 0. This will ensure that the transactions do not fail even if the user uses invalid broadcast modes for this command (sync and async). This was requested by the community and we consider it as fixing the withdraw-all-rewards
behavior.
See the Cosmos SDK v0.42.9 milestone on our issue tracker for the exhaustive list of all changes.
Published by robert-zaremba about 3 years ago
This release includes various minor bug fixes and improvements, including:
tx.signature='<base64_sig>'
) or by address and sequence combo (tx.acc_seq='<addr>/<seq>'
),secp256k1
with --ledger
in with the CLI keys add
command,--output json/text
to all tx
cli commands.See the Cosmos SDK v0.42.8 milestone on our issue tracker for the exhaustive list of all changes.
Published by robert-zaremba over 3 years ago
This is a third Release Candidate for v0.43. If no issue will be reported this will be the final release.
This release contains one bug fix:
Published by robert-zaremba over 3 years ago
This is a second Release Candidate for v0.43. If no issue will be reported this will be the final release.
There are 3 changes since v0.43.0-rc0:
min-gas-price
. This is an issue for chains running with cosmovisor - the node will not be able to start without a manual intervention. So we decided to make a warning. In the next release (v0.44) this will be an error (w will bring back #9371).Read Release Notes and v0.43.0-rc0 notes for all updates related to v0.43.0 release.
Published by robert-zaremba over 3 years ago
This is minor release porting few bug fixes and backward compatible improvements. See the Cosmos SDK v0.42.7 milestone for more details.
Baseapp
's trace
value for logging error stack traces.Published by ryanchristo over 3 years ago
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.
x/authz
and x/feegrant
The v0.43 release focused on simplifying keys and fee management 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.
x/authz
provides functionality for granting arbitrary privileges from one account (the "granter") to another account (the "grantee"). These privileges, called Authorization
s in the code, can for example allow grantees to execute Msg
s on behalf of the granter.
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 documentation.
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. Following is a quick summary:
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:
app.go
,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. 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 Protobuf change process using an ADR. It will be a guideline for all chain developers, follow #9477 for more info.
Published by amaury1729 over 3 years ago
This release includes various minor bugfixes and improvments, including:
cosmos_sdk_version
to node_info
to be able to query the SDK version used by a node,sdk.Context
(see below for more info).See the Cosmos SDK v0.42.6 milestone on our issue tracker for the exhaustive list of all changes.
The [appd] query ibc client header
is fixed and allows querying by height for the header and node-state command. This allows easier venerability of which IBC tokens belong to which chains. IBC's ExportGenesis now exports all fields, including previously missing NextClientSequence
, NextConnectionSequence
and NextChannelSequence
. A new subcommand [appd] query ibc-transfer escrow-address
has been added to get the escrow address for a channel; it can be used to then query balance of escrowed tokens.
sdk.Context
Two fields have been added on sdk.Context
:
ctx.HeaderHash
adds the current block header hash obtained during abci.RequestBeginBlock to the Context,ctx.GasMeter().RefundGas(<amount>, <description>)
adds support for refunding gas directly to the gas meter.Published by amaury1729 over 3 years ago
This release includes various minor bugfixes and improvments, including:
[appd] keys show/list
CLI subcommands for multisigs,It also introduces one new feature: adding the [appd] config
subcommand back to the SDK.
See the Cosmos SDK v0.42.5 milestone on our issue tracker for the exhaustive list of all changes.
config
SubcommandOne new feature introduced in the Stargate series was the merging of the two CLI binaries [appd]
and [appcli]
into one single application binary. In this process, the [appcli] config
subcommand, which was used to save client-side configuration into a TOML file, was removed.
Due to popular demand, we have introduced this feature back to the SDK, under the [appd] config
subcommand. The functionality is as follows:
[appd] config
: Output all client-side configuration.[appd] config [config-name]
: Get the given configuration (e.g. keyring-backend
or node-id
).[appd] config [config-name] [config-value]
: Set and persist the given configuration with the new value.All configurations are persisted to the filesystem, under the path $APP_HOME/config/client.toml
. For the list of all possible client-side configurations, please have a look at this client.toml
file, as it is heavily commented.
Environment variables binding to client-side configuration also works. For example, the command KEYRING_BACKEND=os [appd] tx bank send ...
will bind ENV variable to the keyring-backend
config. The order or precedence for config is: flags > env vars > client.toml file
.
Published by clevinson over 3 years ago
new_shares
attribute inside EventTypeDelegate
event.--memo
to --note
.ServiceMsg
TypeURLs (e.g. message.action='/cosmos.bank.v1beta1.Msg/Send'
) does not work anymore,msg.Type()
(e.g. message.action='send'
) is being deprecated, new Msg
s won't emit these events.Msg
TypeURLs instead (e.g. message.action='/cosmos.bank.v1beta1.MsgSend'
).migrate
command. The oldest supported migration is v0.39->v0.42.codec.Marshaler
→ codec.Codec
(this defines objects which serialize other objects)codec.BinaryMarshaler
→ codec.BinaryCodec
codec.JSONMarshaler
→ codec.JSONCodec
BinaryBare
suffix from BinaryCodec
methods (MarshalBinaryBare
, UnmarshalBinaryBare
, ...)Binary
infix from BinaryCodec
methods (MarshalBinaryLengthPrefixed
, UnmarshalBinaryLengthPrefixed
, ...)ServiceMsg
TypeURLs (e.g. /cosmos.bank.v1beta1.Msg/Send
) have been removed, as they don't comply to the Probobuf Any
spec. Please use Msg
type TypeURLs (e.g. /cosmos.bank.v1beta1.MsgSend
). This has multiple consequences:
sdk.ServiceMsg
struct has been removed.sdk.Msg
now only contains ValidateBasic
and GetSigners
methods. The remaining methods GetSignBytes
, Route
and Type
are moved to legacytx.LegacyMsg
.RegisterCustomTypeURL
function and the cosmos.base.v1beta1.ServiceMsg
interface have been removed from the interface registry.clientCtx.JSONMarshaler
to clientCtx.JSONCodec
as per #9226.abci
handleQueryP2P