Skip to content

Latest commit

 

History

History
3316 lines (2642 loc) · 206 KB

CHANGELOG.md

File metadata and controls

3316 lines (2642 loc) · 206 KB

Changelog

Client Breaking

  • (cli) #6651 The gentx command has been improved. No longer are --from and --name flags required. Instead, a single argument, name, is required which refers to the key pair in the Keyring. In addition, an optional --moniker flag can be provided to override the moniker found in config.toml.
  • (api) #6426 The ability to start an out-of-process API REST server has now been removed. Instead, the API server is now started in-process along with the application and Tendermint. Configuration options have been added to app.toml to enable/disable the API server along with additional HTTP server options.
  • (baseapp) #6384 The Result.Data is now a Protocol Buffer encoded binary blob of type TxData. The TxData contains Data which contains a list of Protocol Buffer encoded message data and the corresponding message type.
  • (x/gov) #6295 Fix typo in querying governance params.
  • (x/auth) #6054 Remove custom JSON marshaling for base accounts as multsigs cannot be bech32 decoded.
  • (modules) #5572 The /bank/balances/{address} endpoint now returns all account balances or a single balance by denom when the denom query parameter is present.
  • (client) #5640 The rest server endpoint /swagger-ui/ is replaced by ´/´.
  • (x/auth) #5702 The x/auth querier route has changed from "acc" to "auth".
  • (store/rootmulti) #6390 Proofs of empty stores are no longer supported.
  • (store/types) #5730 store.types.Cp() is removed in favour of types.CopyBytes().
  • (client) #5640 Unify all coins representations on JSON client requests for governance proposals.
  • #5785 JSON strings coerced to valid UTF-8 bytes at JSON marshalling time are now replaced by human-readable expressions. This change can potentially break compatibility with all those client side tools that parse log messages.
  • (client) #5799 The tx encode/decode commands, due to change on encoding break compatibility with older clients.
  • (x/auth) #5844 tx sign command now returns an error when signing is attempted with offline/multisig keys.
  • (x/auth) #6108 tx sign command's --validate-signatures flag is migrated into a tx validate-signatures standalone command.
  • (client/keys) #5889 Remove keys update command.
  • (x/evidence) #5952 Remove CLI and REST handlers for querying x/evidence parameters.
  • (server) #5982 --pruning now must be set to custom if you want to customise the granular options.
  • (x/gov) #7000 #6859 ProposalStatus and VoteOption are now JSON serialized using its protobuf name, so expect names like PROPOSAL_STATUS_DEPOSIT_PERIOD as opposed to DepositPeriod.
  • (x/auth/vesting) #6859 Custom JSON marshaling of vesting accounts was removed. Vesting accounts are now marshaled using their default proto or amino JSON representation.

API Breaking Changes

  • (modules) #6564 Constant DefaultParamspace is removed from all modules, use ModuleName instead.

  • (client) #6525 Removed support for indent in JSON responses. Clients should consider piping to an external tool such as jq.

  • (x/staking) #6451 DefaultParamspace and ParamKeyTable in staking module are moved from keeper to types to enforce consistency.

  • #6409 Rename all IsEmpty methods to Empty across the codebase and enforce consistency.

  • #6231 Simplify AppModule interface, Route and NewHandler methods become only Route and returns a new Route type.

  • #6212 Remove Get* prefixes from key construction functions

  • #6079 Remove UpgradeOldPrivValFile (deprecated in Tendermint Core v0.28).

  • (modules) #5664 Remove amino Codec from simulation StoreDecoder, which now returns a function closure in order to unmarshal the key-value pairs.

  • (x/auth) #6029 Module accounts have been moved from x/supply to x/auth.

  • (x/supply) #6010 All x/supply types and APIs have been moved to x/bank.

  • (baseapp) #5865 The SimulationResponse returned from tx simulation is now JSON encoded instead of Amino binary.

  • #5719 Bump Go requirement to 1.14+

  • (x/params) #5619 The x/params keeper now accepts a codec.Marshaller instead of a reference to an amino codec. Amino is still used for JSON serialization.

  • (types) #5579 The keepRecent field has been removed from the PruningOptions type. The PruningOptions type now only includes fields KeepEvery and SnapshotEvery, where KeepEvery determines which committed heights are flushed to disk and SnapshotEvery determines which of these heights are kept after pruning. The IsValid method should be called whenever using these options. Methods SnapshotVersion and FlushVersion accept a version arugment and determine if the version should be flushed to disk or kept as a snapshot. Note, KeepRecent is automatically inferred from the options and provided directly the IAVL store.

  • (modules) #5555 Move x/auth/client/utils/ types and functions to x/auth/client/.

  • (modules) #5572 Move account balance logic and APIs from x/auth to x/bank.

  • (types) #5533 Refactored AppModuleBasic and AppModuleGenesis to now accept a codec.JSONMarshaler for modular serialization of genesis state.

  • (types/rest) #5779 Drop unused Parse{Int64OrReturnBadRequest,QueryParamBool}() functions.

  • (keys) #5820 Removed method CloseDB from Keybase interface.

  • (client/input) #5904 Removal of unnecessary GetCheckPassword, PrintPrefixed functions.

  • (client/keys) #5889 Rename NewKeyBaseFromDir() -> NewLegacyKeyBaseFromDir().

  • (crypto) #5880 Merge crypto/keys/mintkey into crypto.

  • (crypto/hd) #5904 crypto/keys/hd moved to crypto/hd.

  • (crypto/keyring):

    • #5866 Rename crypto/keys/ to crypto/keyring/.
    • #5904 Keybase -> Keyring interfaces migration. LegacyKeybase interface is added in order to guarantee limited backward compatibility with the old Keybase interface for the sole purpose of migrating keys across the new keyring backends. NewLegacy constructor is provided #5889 to allow for smooth migration of keys from the legacy LevelDB based implementation to new keyring backends. Plus, the package and the new keyring no longer depends on the sdk.Config singleton. Please consult the package documentation for more information on how to implement the new Keyring interface.
    • #5858 Make Keyring store keys by name and address's hexbytes representation.
  • (x/evidence) #5952 Remove APIs for getting and setting x/evidence parameters. BaseApp now uses a ParamStore to manage Tendermint consensus parameters which is managed via the x/params Substore type.

  • (export) #5952 AppExporter now returns ABCI consensus parameters to be included in marshaled exported state. These parameters must be returned from the application via the BaseApp.

  • (codec) *codec.LegacyAmino is now a wrapper around Amino which provides backwards compatibility with protobuf Any. ALL legacy code should use *codec.LegacyAmino instead of *amino.Codec directly

  • (x/gov) #6147 The Content field on Proposal and MsgSubmitProposal is now Any in concordance with ADR 019 and GetContent should now be used to retrieve the actual proposal Content. Also the NewMsgSubmitProposal constructor now may return an error

  • (modules) #5989 AppModuleBasic.GetTxCmd now takes a single CLIContext parameter.

  • (x/auth) #7006 All AccountRetriever methods now take client.Context as a parameter instead of as a struct member.

  • (x/auth) #6270 The passphrase argument has been removed from the signature of the following functions and methods:

    • BuildAndSign
    • MakeSignature
    • SignStdTx
    • TxBuilder.BuildAndSign
    • TxBuilder.Sign
    • TxBuilder.SignStdTx
  • (client) #6290 CLIContext is renamed to Context. Context and all related methods have been moved from package context to client.

  • (modules) #6326 AppModuleBasic.GetQueryCmd now takes a single CLIContext parameter.

  • (modules) #6336 AppModuleBasic.RegisterQueryService method was added to support gRPC queries, and QuerierRoute and NewQuerierHandler were deprecated.

  • (modules) #6311 Remove alias.go usage

  • (x/auth) #6443 Move FeeTx and TxWithMemo interfaces from x/auth/ante to types.

  • (modules) #6447 Rename blacklistedAddrs to blockedAddrs.

    Migration guide:

    cliCtx := context.CLIContext{} 

    Now becomes:

    clientCtx = client.Context{}
  • (client/rpc) #6290 RegisterRoutes of rpc is moved from package client to client/rpc and client/rpc.RegisterRPCRoutes is removed.

  • (client/lcd) #6290 CliCtx of struct RestServer in package client/lcd has been renamed to ClientCtx.

  • (types) #6327 sdk.Msg now inherits proto.Message, as a result all sdk.Msg types now use pointer semantics.

  • (codec) #6330 codec.RegisterCrypto has been moved to the crypto/codec package and the global codec.Cdc Amino instance has been deprecated and moved to the codec/legacy_global package.

  • (x/ibc) #6374 VerifyMembership and VerifyNonMembership now take a specs []string argument to specify the proof format used for verification. Most SDK chains can simply use commitmenttypes.GetSDKSpecs() for this argument.

  • (crypto/types/multisig) #6373 multisig.Multisignature has been renamed to AminoMultisignature

  • (x/auth) #6428:

    • NewAnteHandler and NewSigVerificationDecorator both now take a SignModeHandler parameter.
    • SignatureVerificationGasConsumer now has the signature: func(meter sdk.GasMeter, sig signing.SignatureV2, params types.Params) error.
    • The SigVerifiableTx interface now has a GetSignaturesV2() ([]signing.SignatureV2, error) method and no longer has the GetSignBytes method.
  • (client/flags) #6632 Remove NewCompletionCmd(), the function is now available in tendermint.

  • (crypto) #6780 Move ledger code to its own package.

  • (modules) #6834 Add RegisterInterfaces method to AppModuleBasic to support registration of protobuf interface types.

  • (modules) #6734 Add TxEncodingConfig parameter to AppModuleBasic.ValidateGenesis command to support JSON tx decoding in genutil.

  • (genesis) #7000 The root GenesisState is now decoded using encoding/json instead of amino so int64 and uint64 types are now encoded as integers as opposed to strings.

  • (types) #7032 All types ending with ID (e.g. ProposalID) now end with Id (e.g. ProposalId), to match default Protobuf generated format. Also see #7033 for more details.

Features

Bug Fixes

  • (types) #7084 Fix panic when calling BigInt() on an uninitialized Int.
  • (x/bank) #6536 Fix bug in WriteGeneratedTxResponse function used by multiple REST endpoints. Now it writes a Tx in StdTx format.
  • (x/staking) #6529 Export validator addresses (previously was empty).
  • (export) #6510 Field TimeIotaMs now is included in genesis file while exporting.
  • (client) #6402 Fix keys add --algo flag which only worked for Tendermint's secp256k1 default key signing algorithm.
  • (x/staking) #6061 Allow a validator to immediately unjail when no signing info is present due to falling below their minimum self-delegation and never having been bonded. The validator may immediately unjail once they've met their minimum self-delegation.
  • (modules) #5569 InitGenesis, for the relevant modules, now ensures module accounts exist.
  • (crypto/keyring) #5844 Keyring.Sign() methods no longer decode amino signatures when method receivers are offline/multisig keys.
  • (x/auth) #5892 Add RegisterKeyTypeCodec to register new types (eg. keys) to the auth module internal amino codec.
  • (rest) #5906 Fix an issue that make some REST calls panic when sending invalid or incomplete requests.
  • (x/genutil) #5938 Fix InitializeNodeValidatorFiles error handling.
  • (x/staking) #5949 Skip staking HistoricalInfoKey in simulations as headers are not exported.
  • (client) #5964 --trust-node is now false by default - for real. Users must ensure it is set to true if they don't want to enable the verifier.

State Machine Breaking

  • (x/staking) #6844 Validators are now inserted into the unbonding queue based on their unbonding time and height. The relevant keeper APIs are modified to reflect these changes by now also requiring a height.
  • (x/bank) #6518 Support for global and per-denomination send enabled flags.
    • Existing send_enabled global flag has been moved into a Params structure as default_send_enabled.
    • An array of: {denom: string, enabled: bool} is added to bank Params to support per-denomination override of global default value.
  • (x/staking) #6061 Allow a validator to immediately unjail when no signing info is present due to falling below their minimum self-delegation and never having been bonded. The validator may immediately unjail once they've met their minimum self-delegation.
  • (x/supply) #6010 Removed the x/supply module by merging the existing types and APIs into the x/bank module.
  • (modules) #5572 Separate balance from accounts per ADR 004.
    • Account balances are now persisted and retrieved via the x/bank module.
    • Vesting account interface has been modified to account for changes.
    • Callers to NewBaseVestingAccount are responsible for verifying account balance in relation to the original vesting amount.
    • The SendKeeper and ViewKeeper interfaces in x/bank have been modified to account for changes.
  • (x/staking) #5600 Migrate the x/staking module to use Protocol Buffers for state serialization instead of Amino. The exact codec used is codec.HybridCodec which utilizes Protobuf for binary encoding and Amino for JSON encoding.
    • BondStatus is now of type int32 instead of byte.
    • Types of int16 in the Params type are now of type int32.
    • Every reference of crypto.Pubkey in context of a Validator is now of type string. GetPubKeyFromBech32 must be used to get the crypto.Pubkey.
    • The Keeper constructor now takes a codec.Marshaler instead of a concrete Amino codec. This exact type provided is specified by ModuleCdc.
  • (x/slashing) #5627 Migrate the x/slashing module to use Protocol Buffers for state serialization instead of Amino. The exact codec used is codec.HybridCodec which utilizes Protobuf for binary encoding and Amino for JSON encoding.
    • The Keeper constructor now takes a codec.Marshaler instead of a concrete Amino codec. This exact type provided is specified by ModuleCdc.
  • (x/distribution) #5610 Migrate the x/distribution module to use Protocol Buffers for state serialization instead of Amino. The exact codec used is codec.HybridCodec which utilizes Protobuf for binary encoding and Amino for JSON encoding.
    • ValidatorHistoricalRewards.ReferenceCount is now of types uint32 instead of uint16.
    • ValidatorSlashEvents is now a struct with slashevents.
    • ValidatorOutstandingRewards is now a struct with rewards.
    • ValidatorAccumulatedCommission is now a struct with commission.
    • The Keeper constructor now takes a codec.Marshaler instead of a concrete Amino codec. This exact type provided is specified by ModuleCdc.
  • (x/auth) #5533 Migrate the x/auth module to use Protocol Buffers for state serialization instead of Amino.
    • The BaseAccount.PubKey field is now represented as a Bech32 string instead of a crypto.Pubkey.
    • NewBaseAccountWithAddress now returns a reference to a BaseAccount.
    • The x/auth module now accepts a Codec interface which extends the codec.Marshaler interface by requiring a concrete codec to know how to serialize accounts.
    • The AccountRetriever type now accepts a Codec in its constructor in order to know how to serialize accounts.
  • (x/supply) #5533 Migrate the x/supply module to use Protocol Buffers for state serialization instead of Amino.
    • The internal sub-package has been removed in order to expose the types proto file.
    • The x/supply module now accepts a Codec interface which extends the codec.Marshaler interface by requiring a concrete codec to know how to serialize SupplyI types.
    • The SupplyI interface has been modified to no longer return SupplyI on methods. Instead the concrete type's receiver should modify the type.
  • (x/mint) #5634 Migrate the x/mint module to use Protocol Buffers for state serialization instead of Amino.
    • The internal sub-package has been removed in order to expose the types proto file.
  • (x/evidence) #5634 Migrate the x/evidence module to use Protocol Buffers for state serialization instead of Amino.
    • The internal sub-package has been removed in order to expose the types proto file.
    • The module now accepts a Codec interface which extends the codec.Marshaler interface by requiring a concrete codec to know how to serialize Evidence types.
    • The MsgSubmitEvidence message has been removed in favor of MsgSubmitEvidenceBase. The application-level codec must now define the concrete MsgSubmitEvidence type which must implement the module's MsgSubmitEvidence interface.
  • (x/upgrade) #5659 Migrate the x/upgrade module to use Protocol Buffers for state serialization instead of Amino.
    • The internal sub-package has been removed in order to expose the types proto file.
    • The x/upgrade module now accepts a codec.Marshaler interface.
  • (x/gov) #5737 Migrate the x/gov module to use Protocol Buffers for state serialization instead of Amino.
    • MsgSubmitProposal will be removed in favor of the application-level proto-defined MsgSubmitProposal which implements the MsgSubmitProposalI interface. Applications should extend the NewMsgSubmitProposalBase type to define their own concrete MsgSubmitProposal types.
    • The module now accepts a Codec interface which extends the codec.Marshaler interface by requiring a concrete codec to know how to serialize Proposal types.
  • (codec) #5799 Now we favor the use of (Un)MarshalBinaryBare instead of (Un)MarshalBinaryLengthPrefixed in all cases that are not needed.
  • (x/evidence) #5952 Remove parameters from x/evidence genesis and module state. The x/evidence module now solely uses Tendermint consensus parameters to determine of evidence is valid or not.

Improvements

  • (x/ibc-transfer) #6871 Implement ADR 001 - Coin Source Tracing.
  • (types) #7027 Coin(s) and DecCoin(s) updates:
    • Bump denomination max length to 128
    • Allow uppercase letters and numbers in denominations to support ADR 001
    • Added Validate function that returns a descriptive error
  • (baseapp) #6186 Support emitting events during AnteHandler execution.
  • (x/auth) #5702 Add parameter querying support for x/auth.
  • (types) #5581 Add convenience functions {,Must}Bech32ifyAddressBytes.
  • (staking) #5584 Add util function ToTmValidator that converts a staking.Validator type to *tmtypes.Validator.
  • (types) #5585 IBC additions:
    • Coin denomination max lenght has been increased to 32.
    • Added CapabilityKey alias for StoreKey to match IBC spec.
  • (client) #5810 Added a new --offline flag that allows commands to be executed without an internet connection. Previously, --generate-only served this purpose in addition to only allowing txs to be generated. Now, --generate-only solely allows txs to be generated without being broadcasted and disallows Keybase use and --offline allows the use of Keybase but does not allow any functionality that requires an online connection.
  • (types/module) #5724 The types/module package does no longer depend on x/simulation.
  • (client) #5856 Added the possibility to set --offline flag with config command.
  • (client) #5895 show config options in the config command's help screen.
  • (types/rest) #5900 Add Check*Error function family to spare developers from replicating tons of boilerplate code.
  • (x/evidence) #5952 Tendermint Consensus parameters can now be changed via parameter change proposals through x/gov.
  • (x/evidence) #5961 Add StoreDecoder simulation for evidence module.
  • (x/auth/ante) #6040 AccountKeeper interface used for NewAnteHandler and handler's decorators to add support of using custom AccountKeeper implementations.
  • (simulation) #6002 Add randomized consensus params into simulation.
  • (x/staking) #6059 Updated HistoricalEntries parameter default to 100.
  • (x/ibc) #5948 Add InitGenesis and ExportGenesis functions for ibc module.
  • (types) #6128 Add String() method to GasMeter
  • (x/staking) #6163 CLI and REST call to unbonding delegations and delegations now accept pagination.
  • (types) #6128 Add String() method to GasMeter.
  • (types) #6195 Add codespace to broadcast(sync/async) response.
  • (baseapp) #6053 Customizable panic recovery handling added for app.runTx() method (as proposed in the ADR 22). Adds ability for developers to register custom panic handlers extending standard ones.
  • (store) #6481 Move SimpleProofsFromMap from Tendermint into the SDK.
  • (store) #6719 Add validity checks to stores for nil and empty keys.
  • (types) #6897 Add KV type from tendermint to types directory.

[v0.39.0] - 2020-07-20

Improvements

  • (deps) Bump IAVL version to v0.14.0
  • (client) #5585 CLIContext additions:
    • Introduce QueryABCI that returns the full abci.ResponseQuery with inclusion Merkle proofs.
    • Added prove flag for Merkle proof verification.
  • (x/staking) #6791) Close {UBDQueue,RedelegationQueu}Iterator once used.

API Breaking Changes

  • (baseapp) #5837 Transaction simulation now returns a SimulationResponse which contains the GasInfo and Result from the execution.

Client Breaking Changes

  • (x/auth) #6745 Remove BaseAccount's custom JSON {,un}marshalling.

Bug Fixes

  • (store) #6475 Revert IAVL pruning functionality introduced in v0.13.0, where the IAVL no longer keeps states in-memory in which it flushes periodically. IAVL now commits and flushes every state to disk as it did pre-v0.13.0. The SDK's multi-store will track and ensure the proper heights are pruned. The operator can set the pruning options via a pruning config via the CLI or through app.toml. The pruning flag exposes default|everything|nothing|custom as options -- see docs for further details. If the operator chooses custom, they may provide granular pruning options pruning-keep-recent, pruning-keep-every, and pruning-interval. The former two options dictate how many recent versions are kept on disk and the offset of what versions are kept after that respectively, and the latter defines the height interval in which versions are deleted in a batch. Note, there are some client-facing API breaking changes with regard to IAVL, stores, and pruning settings.
  • (x/distribution) #6210 Register MsgFundCommunityPool in distribution amino codec.
  • (types) #5741 Prevent ChainAnteDecorators() from panicking when empty AnteDecorator slice is supplied.
  • (baseapp) #6306 Prevent events emitted by the antehandler from being persisted between transactions.
  • (client/keys) #5091 keys parse does not honor client app's configuration.
  • (x/bank) #6674 Create account if recipient does not exist on handing MsgMultiSend.
  • (x/auth) #6287 Fix nonce stuck when sending multiple transactions from an account in a same block.

[v0.38.5] - 2020-07-02

Improvements

  • (tendermint) Bump Tendermint version to v0.33.6.

[v0.38.4] - 2020-05-21

Bug Fixes

  • (x/auth) #5950 Fix IncrementSequenceDecorator to use is IsReCheckTx instead of IsCheckTx to allow account sequence incrementing.

[v0.38.3] - 2020-04-09

Improvements

  • (tendermint) Bump Tendermint version to v0.33.3.

v0.38.2 - 2020-03-25

Bug Fixes

  • (baseapp) #5718 Remove call to ctx.BlockGasMeter during failed message validation which resulted in a panic when the tx execution mode was CheckTx.
  • (x/genutil) #5775 Fix ExportGenesis in x/genutil to export default genesis state ([]) instead of null.
  • (client) #5618 Fix crash on the client when the verifier is not set.
  • (crypto/keys/mintkey) #5823 fix errors handling in UnarmorPubKeyBytes (underlying armoring function's return error was not being checked).
  • (x/distribution) #5620 Fix nil pointer deref in distribution tax/reward validation helpers.

Improvements

  • (rest) #5648 Enhance /txs usability:
    • Add tx.minheight key to filter transaction with an inclusive minimum block height
    • Add tx.maxheight key to filter transaction with an inclusive maximum block height
  • (crypto/keys) #5739 Print an error message if the password input failed.

v0.38.1 - 2020-02-11

Improvements

  • (modules) #5597 Add amount event attribute to the complete_unbonding and complete_redelegation events that reflect the total balances of the completed unbondings and redelegations respectively.

Bug Fixes

  • (types) #5579 The IAVL Store#Commit method has been refactored to delete a flushed version if it is not a snapshot version. The root multi-store now keeps track of commitInfo instead of types.CommitID. During Commit of the root multi-store, lastCommitInfo is updated from the saved state and is only flushed to disk if it is a snapshot version. During Query of the root multi-store, if the request height is the latest height, we'll use the store's lastCommitInfo. Otherwise, we fetch commitInfo from disk.
  • (x/bank) #5531 Added missing amount event to MsgMultiSend, emitted for each output.
  • (x/gov) #5622 Track any events emitted from a proposal's handler upon successful execution.

v0.38.0 - 2020-01-23

State Machine Breaking

  • (genesis) #5506 The x/distribution genesis state now includes params instead of individual parameters.
  • (genesis) #5017 The x/genaccounts module has been deprecated and all components removed except the legacy/ package. This requires changes to the genesis state. Namely, accounts now exist under app_state.auth.accounts. The corresponding migration logic has been implemented for v0.38 target version. Applications can migrate via: $ {appd} migrate v0.38 genesis.json.
  • (modules) #5299 Handling of ABCIEvidenceTypeDuplicateVote during BeginBlock along with the corresponding parameters (MaxEvidenceAge) have moved from the x/slashing module to the x/evidence module.

API Breaking Changes

  • (modules) #5506 Remove individual setters of x/distribution parameters. Instead, follow the module spec in getting parameters, setting new value(s) and finally calling SetParams.
  • (types) #5495 Remove redundant (Must)Bech32ify* and (Must)Get*KeyBech32 functions in favor of (Must)Bech32ifyPubKey and (Must)GetPubKeyFromBech32 respectively, both of which take a Bech32PubKeyType (string).
  • (types) #5430 DecCoins#Add parameter changed from DecCoins to ...DecCoin, Coins#Add parameter changed from Coins to ...Coin.
  • (baseapp/types) #5421 The Error interface (types/errors.go) has been removed in favor of the concrete type defined in types/errors/ which implements the standard error interface.
    • As a result, the Handler and Querier implementations now return a standard error. Within BaseApp, runTx now returns a (GasInfo, *Result, error) tuple and runMsgs returns a (*Result, error) tuple. A reference to a Result is now used to indicate success whereas an error signals an invalid message or failed message execution. As a result, the fields Code, Codespace, GasWanted, and GasUsed have been removed the Result type. The latter two fields are now found in the GasInfo type which is always returned regardless of execution outcome.
    • Note to developers: Since all handlers and queriers must now return a standard error, the types/errors/ package contains all the relevant and pre-registered errors that you typically work with. A typical error returned will look like sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, "..."). You can retrieve relevant ABCI information from the error via ABCIInfo.
  • (client) #5442 Remove client/alias.go as it's not necessary and components can be imported directly from the packages.
  • (store) #4748 The CommitMultiStore interface now requires a SetInterBlockCache method. Applications that do not wish to support this can simply have this method perform a no-op.
  • (modules) #4665 Refactored x/gov module structure and dev-UX:
    • Prepare for module spec integration
    • Update gov keys to use big endian encoding instead of little endian
  • (modules) #5017 The x/genaccounts module has been deprecated and all components removed except the legacy/ package.
  • #4486 Vesting account types decoupled from the x/auth module and now live under x/auth/vesting. Applications wishing to use vesting account types must be sure to register types via RegisterCodec under the new vesting package.
  • #4486 The NewBaseVestingAccount constructor returns an error if the provided arguments are invalid.
  • (x/auth) #5006 Modular AnteHandler via composable decorators:
    • The AnteHandler interface now returns (newCtx Context, err error) instead of (newCtx Context, result sdk.Result, abort bool)
    • The NewAnteHandler function returns an AnteHandler function that returns the new AnteHandler interface and has been moved into the auth/ante directory.
    • ValidateSigCount, ValidateMemo, ProcessPubKey, EnsureSufficientMempoolFee, and GetSignBytes have all been removed as public functions.
    • Invalid Signatures may return InvalidPubKey instead of Unauthorized error, since the transaction will first hit SetPubKeyDecorator before the SigVerificationDecorator runs.
    • StdTx#GetSignatures will return an array of just signature byte slices [][]byte instead of returning an array of StdSignature structs. To replicate the old behavior, use the public field StdTx.Signatures to get back the array of StdSignatures []StdSignature.
  • (modules) #5299 HandleDoubleSign along with params MaxEvidenceAge and DoubleSignJailEndTime have moved from the x/slashing module to the x/evidence module.
  • (keys) #4941 Keybase concrete types constructors such as NewKeyBaseFromDir and NewInMemory now accept optional parameters of type KeybaseOption. These optional parameters are also added on the keys sub-commands functions, which are now public, and allows these options to be set on the commands or ignored to default to previous behavior.
  • #5547 NewKeyBaseFromHomeFlag constructor has been removed.
  • #5439 Further modularization was done to the keybase package to make it more suitable for use with different key formats and algorithms:
    • The WithKeygenFunc function added as a KeybaseOption which allows a custom bytes to key implementation to be defined when keys are created.
    • The WithDeriveFunc function added as a KeybaseOption allows custom logic for deriving a key from a mnemonic, bip39 password, and HD Path.
    • BIP44 is no longer build into keybase.CreateAccount(). It is however the default when using the client/keys add command.
    • SupportedAlgos and SupportedAlgosLedger functions return a slice of SigningAlgos that are supported by the keybase and the ledger integration respectively.
  • (simapp) #5419 The helpers.GenTx() now accepts a gas argument.
  • (baseapp) #5455 A sdk.Context is now passed into the router.Route() function.

Client Breaking Changes

  • (rest) #5270 All account types now implement custom JSON serialization.
  • (rest) #4783 The balance field in the DelegationResponse type is now sdk.Coin instead of sdk.Int
  • (x/auth) #5006 The gas required to pass the AnteHandler has increased significantly due to modular AnteHandler support. Increase GasLimit accordingly.
  • (rest) #5336 MsgEditValidator uses description instead of Description as a JSON key.
  • (keys) #5097 Due to the keybase -> keyring transition, keys need to be migrated. See keys migrate command for more info.
  • (x/auth) #5424 Drop decode-tx command from x/auth/client/cli, duplicate of the decode command.

Features

  • (store) #5435 New iterator for paginated requests. Iterator limits DB reads to the range of the requested page.
  • (x/evidence) #5240 Initial implementation of the x/evidence module.
  • (cli) #5212 The q gov proposals command now supports pagination.
  • (store) #4724 Multistore supports substore migrations upon load. New rootmulti.Store.LoadLatestVersionAndUpgrade method in Baseapp supports StoreLoader to enable various upgrade strategies. It no longer panics if the store to load contains substores that we didn't explicitly mount.
  • #4972 A TxResponse with a corresponding code and tx hash will be returned for specific Tendermint errors:
    • CodeTxInMempoolCache
    • CodeMempoolIsFull
    • CodeTxTooLarge
  • #3872 Implement a RESTful endpoint and cli command to decode transactions.
  • (keys) #4754 Introduce new Keybase implementation that can leverage operating systems' built-in functionalities to securely store secrets. MacOS users may encounter the following issue with the go-keychain library. If you encounter this issue, you must upgrade your xcode command line tools to version >= 10.2. You can upgrade via: sudo rm -rf /Library/Developer/CommandLineTools; xcode-select --install. Verify the correct version via: pkgutil --pkg-info=com.apple.pkg.CLTools_Executables.
  • #5355 Client commands accept a new --keyring-backend option through which users can specify which backend should be used by the new key store:
    • os: use OS default credentials storage (default).
    • file: use encrypted file-based store.
    • kwallet: use KDE Wallet service.
    • pass: use the pass command line password manager.
    • test: use password-less key store. For testing purposes only. Use it at your own risk.
  • (keys) #5097 New keys migrate command to assist users migrate their keys to the new keyring.
  • (keys) #5366 keys list now accepts a --list-names option to list key names only, whilst the keys delete command can delete multiple keys by passing their names as arguments. The aforementioned commands can then be piped together, e.g. appcli keys list -n | xargs appcli keys delete
  • (modules) #4233 Add upgrade module that coordinates software upgrades of live chains.
  • #4486 Introduce new PeriodicVestingAccount vesting account type that allows for arbitrary vesting periods.
  • (baseapp) #5196 Baseapp has a new runTxModeReCheck to allow applications to skip expensive and unnecessary re-checking of transactions.
  • (types) #5196 Context has new IsRecheckTx() bool and WithIsReCheckTx(bool) Context methods to to be used in the AnteHandler.
  • (x/auth/ante) #5196 AnteDecorators have been updated to avoid unnecessary checks when ctx.IsReCheckTx() == true
  • (x/auth) #5006 Modular AnteHandler via composable decorators:
    • The AnteDecorator interface has been introduced to allow users to implement modular AnteHandler functionality that can be composed together to create a single AnteHandler rather than implementing a custom AnteHandler completely from scratch, where each AnteDecorator allows for custom behavior in tightly defined and logically isolated manner. These custom AnteDecorator can then be chained together with default AnteDecorator or third-party AnteDecorator to create a modularized AnteHandler which will run each AnteDecorator in the order specified in ChainAnteDecorators. For details on the new architecture, refer to the ADR.
    • ChainAnteDecorators function has been introduced to take in a list of AnteDecorators and chain them in sequence and return a single AnteHandler:
      • SetUpContextDecorator: Sets GasMeter in context and creates defer clause to recover from any OutOfGas panics in future AnteDecorators and return OutOfGas error to BaseApp. It MUST be the first AnteDecorator in the chain for any application that uses gas (or another one that sets the gas meter).
      • ValidateBasicDecorator: Calls tx.ValidateBasic and returns any non-nil error.
      • ValidateMemoDecorator: Validates tx memo with application parameters and returns any non-nil error.
      • ConsumeGasTxSizeDecorator: Consumes gas proportional to the tx size based on application parameters.
      • MempoolFeeDecorator: Checks if fee is above local mempool minFee parameter during CheckTx.
      • DeductFeeDecorator: Deducts the FeeAmount from first signer of the transaction.
      • SetPubKeyDecorator: Sets pubkey of account in any account that does not already have pubkey saved in state machine.
      • SigGasConsumeDecorator: Consume parameter-defined amount of gas for each signature.
      • SigVerificationDecorator: Verify each signature is valid, return if there is an error.
      • ValidateSigCountDecorator: Validate the number of signatures in tx based on app-parameters.
      • IncrementSequenceDecorator: Increments the account sequence for each signer to prevent replay attacks.
  • (cli) #5223 Cosmos Ledger App v2.0.0 is now supported. The changes are backwards compatible and App v1.5.x is still supported.
  • (x/staking) #5380 Introduced ability to store historical info entries in staking keeper, allows applications to introspect specified number of past headers and validator sets
    • Introduces new parameter HistoricalEntries which allows applications to determine how many recent historical info entries they want to persist in store. Default value is 0.
    • Introduces cli commands and rest routes to query historical information at a given height
  • (modules) #5249 Funds are now allowed to be directly sent to the community pool (via the distribution module account).
  • (keys) #4941 Introduce keybase option to allow overriding the default private key implementation of a key generated through the keys add cli command.
  • (keys) #5439 Flags --algo and --hd-path are added to keys add command in order to make use of keybase modularized. By default, it uses (0, 0) bip44 HD path and secp256k1 keys, so is non-breaking.
  • (types) #5447 Added ApproxRoot function to sdk.Decimal type in order to get the nth root for a decimal number, where n is a positive integer.
    • An ApproxSqrt function was also added for convenience around the common case of n=2.

Improvements

  • (iavl) #5538 Remove manual IAVL pruning in favor of IAVL's internal pruning strategy.
  • (server) #4215 The --pruning flag has been moved to the configuration file, to allow easier node configuration.
  • (cli) #5116 The CLIContext now supports multiple verifiers when connecting to multiple chains. The connecting chain's CLIContext will have to have the correct chain ID and node URI or client set. To use a CLIContext with a verifier for another chain:
    // main or parent chain (chain as if you're running without IBC)
    mainCtx := context.NewCLIContext()
    
    // connecting IBC chain
    sideCtx := context.NewCLIContext().
      WithChainID(sideChainID).
      WithNodeURI(sideChainNodeURI) // or .WithClient(...)
    
    sideCtx = sideCtx.WithVerifier(
      context.CreateVerifier(sideCtx, context.DefaultVerifierCacheSize),
    )
  • (modules) #5017 The x/auth package now supports generalized genesis accounts through the GenesisAccount interface.
  • (modules) #4762 Deprecate remove and add permissions in ModuleAccount.
  • (modules) #4760 update x/auth to match module spec.
  • (modules) #4814 Add security contact to Validator description.
  • (modules) #4875 refactor integration tests to use SimApp and separate test package
  • (sdk) #4566 Export simulation's parameters and app state to JSON in order to reproduce bugs and invariants.
  • (sdk) #4640 improve import/export simulation errors by extending DiffKVStores to return an array of KVPairs that are then compared to check for inconsistencies.
  • (sdk) #4717 refactor x/slashing to match the new module spec
  • (sdk) #4758 update x/genaccounts to match module spec
  • (simulation) #4824 PrintAllInvariants flag will print all failed invariants
  • (simulation) #4490 add InitialBlockHeight flag to resume a simulation from a given block
    • Support exporting the simulation stats to a given JSON file
  • (simulation) #4847, #4838 and #4869 SimApp and simulation refactors:
    • Implement SimulationManager for executing modules' simulation functionalities in a modularized way
    • Add RegisterStoreDecoders to the SimulationManager for decoding each module's types
    • Add GenerateGenesisStates to the SimulationManager to generate a randomized GenState for each module
    • Add RandomizedParams to the SimulationManager that registers each modules' parameters in order to simulate ParamChangeProposals' Contents
    • Add WeightedOperations to the SimulationManager that define simulation operations (modules' Msgs) with their respective weights (i.e chance of being simulated).
    • Add ProposalContents to the SimulationManager to register each module's governance proposal Contents.
  • (simulation) #4893 Change SimApp keepers to be public and add getter functions for keys and codec
  • (simulation) #4906 Add simulation Config struct that wraps simulation flags
  • (simulation) #4935 Update simulation to reflect a proper ABCI application without bypassing BaseApp semantics
  • (simulation) #5378 Simulation tests refactor:
    • Add App interface for general SDK-based app's methods.
    • Refactor and cleanup simulation tests into util functions to simplify their implementation for other SDK apps.
  • (store) #4792 panic on non-registered store
  • (types) #4821 types/errors package added with support for stacktraces. It is meant as a more feature-rich replacement for sdk.Errors in the mid-term.
  • (store) #1947 Implement inter-block (persistent) caching through CommitKVStoreCacheManager. Any application wishing to utilize an inter-block cache must set it in their app via a BaseApp option. The BaseApp docs have been drastically improved to detail this new feature and how state transitions occur.
  • (docs/spec) All module specs moved into their respective module dir in x/ (i.e. docs/spec/staking -->> x/staking/spec)
  • (docs/) #5379 Major documentation refactor, including:
    • (docs/intro/) Add and improve introduction material for newcomers.
    • (docs/basics/) Add documentation about basic concepts of the cosmos sdk such as the anatomy of an SDK application, the transaction lifecycle or accounts.
    • (docs/core/) Add documentation about core conepts of the cosmos sdk such as baseapp, server, stores, context and more.
    • (docs/building-modules/) Add reference documentation on concepts relevant for module developers (keeper, handler, messages, queries,...).
    • (docs/interfaces/) Add documentation on building interfaces for the Cosmos SDK.
    • Redesigned user interface that features new dynamically generated sidebar, build-time code embedding from GitHub, new homepage as well as many other improvements.
  • (types) #5428 Add Mod (modulo) method and RelativePow (exponentation) function for Uint.
  • (modules) #5506 Remove redundancy in x/distributions use of parameters. There now exists a single Params type with a getter and setter along with a getter for each individual parameter.

Bug Fixes

  • (client) #5303 Fix ignored error in tx generate only mode.
  • (cli) #4763 Fix flag --min-self-delegation for staking EditValidator
  • (keys) Fix ledger custom coin type support bug.
  • (x/gov) #5107 Sum validator operator's all voting power when tally votes
  • (rest) #5212 Fix pagination in the /gov/proposals handler.

[v0.37.14] - 2020-08-12

Improvements

  • (tendermint) Bump Tendermint version to v0.32.13.

[v0.37.13] - 2020-06-03

Improvements

  • (tendermint) Bump Tendermint version to v0.32.12.
  • (cosmos-ledger-go) Bump Cosmos Ledger Wallet library version to v0.11.1.

[v0.37.12] - 2020-05-05

Improvements

  • (tendermint) Bump Tendermint version to v0.32.11.

[v0.37.11] - 2020-04-22

Bug Fixes

  • (x/staking) #6021 --trust-node's false default value prevents creation of the genesis transaction.

[v0.37.10] - 2020-04-22

Bug Fixes

  • (client/context) #5964 Fix incorrect instantiation of tmlite verifier when --trust-node is off.

v0.37.9 - 2020-04-09

Improvements

  • (tendermint) Bump Tendermint version to v0.32.10.

v0.37.8 - 2020-03-11

Bug Fixes

  • (rest) #5508 Fix x/distribution endpoints to properly return height in the response.
  • (x/genutil) #5499 Ensure DefaultGenesis returns valid and non-nil default genesis state.
  • (x/genutil) #5775 Fix ExportGenesis in x/genutil to export default genesis state ([]) instead of null.
  • (genesis) #5086 Ensure gentxs are always an empty array instead of nil.

Improvements

  • (rest) #5648 Enhance /txs usability:
    • Add tx.minheight key to filter transaction with an inclusive minimum block height
    • Add tx.maxheight key to filter transaction with an inclusive maximum block height

v0.37.7 - 2020-02-10

Improvements

  • (modules) #5597 Add amount event attribute to the complete_unbonding and complete_redelegation events that reflect the total balances of the completed unbondings and redelegations respectively.

Bug Fixes

  • (x/gov) #5622 Track any events emitted from a proposal's handler upon successful execution.
  • (x/bank) #5531 Added missing amount event to MsgMultiSend, emitted for each output.

v0.37.6 - 2020-01-21

Improvements

  • (tendermint) Bump Tendermint version to v0.32.9

v0.37.5 - 2020-01-07

Features

  • (types) #5360 Implement SortableDecBytes which allows the Dec type be sortable.

Improvements

  • (tendermint) Bump Tendermint version to v0.32.8
  • (cli) #5482 Remove old "tags" nomenclature from the q txs command in favor of the new events system. Functionality remains unchanged except that = is used instead of : to be consistent with the API's use of event queries.

Bug Fixes

  • (iavl) #5276 Fix potential race condition in iavlIterator#Close.
  • (baseapp) #5350 Allow a node to restart successfully after a halt-height or halt-time has been triggered.
  • (types) #5395 Fix Uint#LTE.
  • (types) #5408 NewDecCoins constructor now sorts the coins.

v0.37.4 - 2019-11-04

Improvements

  • (tendermint) Bump Tendermint version to v0.32.7
  • (ledger) #4716 Fix ledger custom coin type support bug.

Bug Fixes

  • (baseapp) #5200 Remove duplicate events from previous messages.

v0.37.3 - 2019-10-10

Bug Fixes

  • (genesis) #5095 Fix genesis file migration from v0.34 to v0.36/v0.37 not converting validator consensus pubkey to bech32 format.

Improvements

  • (tendermint) Bump Tendermint version to v0.32.6

v0.37.1 - 2019-09-19

Features

  • (cli) #4973 Enable application CPU profiling via the --cpu-profile flag.
  • #4979 Introduce a new halt-time config and CLI option to the start command. When provided, an application will halt during Commit when the block time is >= the halt-time.

Improvements

  • #4990 Add Events to the ABCIMessageLog to provide context and grouping of events based on the messages they correspond to. The Events field in TxResponse is deprecated and will be removed in the next major release.

Bug Fixes

  • #4979 Use Signal(os.Interrupt) over os.Exit(0) during configured halting to allow any defer calls to be executed.
  • #5034 Binary search in NFT Module wasn't working on larger sets.

v0.37.0 - 2019-08-21

Bug Fixes

  • (baseapp) #4903 Various height query fixes:
    • Move height with proof check from CLIContext to BaseApp as the height can automatically be injected there.
    • Update handleQueryStore to resemble handleQueryCustom
  • (simulation) #4912 Fix SimApp ModuleAccountAddrs to properly return black listed addresses for bank keeper initialization.
  • (cli) #4919 Don't crash CLI if user doesn't answer y/n confirmation request.
  • (cli) #4927 Fix the q gov vote command to handle empty (pruned) votes correctly.

Improvements

  • (rest) #4924 Return response height even upon error as it may be useful for the downstream caller and have /auth/accounts/{address} return a 200 with an empty account upon error when that error is that the account doesn't exist.

v0.36.0 - 2019-08-13

Breaking Changes

  • (rest) #4837 Remove /version and /node_version endpoints in favor of refactoring /node_info to also include application version info.
  • All REST responses now wrap the original resource/result. The response will contain two fields: height and result.
  • #3565 Updates to the governance module:
    • Rename JSON field from proposal_content to content
    • Rename JSON field from proposal_id to id
    • Disable ProposalTypeSoftwareUpgrade temporarily
  • #3775 unify sender transaction tag for ease of querying
  • #4255 Add supply module that passively tracks the supplies of a chain
    • Renamed x/distribution ModuleName
    • Genesis JSON and CLI now use distribution instead of distr
    • Introduce ModuleAccount type, which tracks the flow of coins held within a module
    • Replaced FeeCollectorKeeper for a ModuleAccount
    • Replaced the staking Pool, which coins are now held by the BondedPool and NotBonded module accounts
    • The NotBonded module account now only keeps track of the not bonded tokens within staking, instead of the whole chain
    • #3628 Replaced governance's burn and deposit accounts for a ModuleAccount
    • Added a ModuleAccount for the distribution module
    • Added a ModuleAccount for the mint module #4472 validation for crisis genesis
  • #3985 ValidatorPowerRank uses potential consensus power instead of tendermint power
  • #4104 Gaia has been moved to its own repository: https://github.com/cosmos/gaia
  • #4104 Rename gaiad.toml to app.toml. The internal contents of the application config remain unchanged.
  • #4159 create the default module patterns and module manager
  • #4230 Change the type of ABCIMessageLog#MsgIndex to uint16 for proper serialization.
  • #4250 BaseApp.Query() returns app's version string set via BaseApp.SetAppVersion() when handling /app/version queries instead of the version string passed as build flag at compile time.
  • #4262 GoSumHash is no longer returned by the version command.
  • #4263 RestServer#Start now takes read and write timeout arguments.
  • #4305 GenerateOrBroadcastMsgs no longer takes an offline parameter.
  • #4342 Upgrade go-amino to v0.15.0
  • #4351 InitCmd, AddGenesisAccountCmd, and CollectGenTxsCmd take node's and client's default home directories as arguments.
  • #4387 Refactor the usage of tags (now called events) to reflect the new ABCI events semantics:
    • Move x/{module}/tags/tags.go => x/{module}/types/events.go
    • Update docs/specs
    • Refactor tags in favor of new Event(s) type(s)
    • Update Context to use new EventManager
    • (Begin|End)Blocker no longer return tags, but rather uses new EventManager
    • Message handlers no longer return tags, but rather uses new EventManager Any component (e.g. BeginBlocker, message handler, etc...) wishing to emit an event must do so through ctx.EventManger().EmitEvent(s). To reset or wipe emitted events: ctx = ctx.WithEventManager(sdk.NewEventManager()) To get all emitted events: events := ctx.EventManager().Events()
  • #4437 Replace governance module store keys to use []byte instead of string.
  • #4451 Improve modularization of clients and modules:
    • Module directory structure improved and standardized
    • Aliases autogenerated
    • Auth and bank related commands are now mounted under the respective moduels
    • Client initialization and mounting standardized
  • #4479 Remove codec argument redundency in client usage where the CLIContext's codec should be used instead.
  • #4488 Decouple client tx, REST, and ultil packages from auth. These packages have been restructured and retrofitted into the x/auth module.
  • #4521 Flatten x/bank structure by hiding module internals.
  • #4525 Remove --cors flag, the feature is long gone.
  • #4536 The /auth/accounts/{address} now returns a height in the response. The account is now nested under account.
  • #4543 Account getters are no longer part of client.CLIContext() and have now moved to reside in the auth-specific AccountRetriever.
  • #4588 Context does not depend on x/auth anymore. client/context is stripped out of the following features:
    • GetAccountDecoder()
    • CLIContext.WithAccountDecoder()
    • CLIContext.WithAccountStore() x/auth.AccountDecoder is unnecessary and consequently removed.
  • #4602 client/input.{Buffer,Override}Stdin() functions are removed. Thanks to cobra's new release they are now redundant.
  • #4633 Update old Tx search by tags APIs to use new Events nomenclature.
  • #4649 Refactor x/crisis as per modules new specs.
  • #3685 The default signature verification gas logic (DefaultSigVerificationGasConsumer) now specifies explicit key types rather than string pattern matching. This means that zones that depended on string matching to allow other keys will need to write a custom SignatureVerificationGasConsumer function.
  • #4663 Refactor bank keeper by removing private functions
    • InputOutputCoins, SetCoins, SubtractCoins and AddCoins are now part of the SendKeeper instead of the Keeper interface
  • (tendermint) #4721 Upgrade Tendermint to v0.32.1

Features

  • #4843 Add RegisterEvidences function in the codec package to register Tendermint evidence types with a given codec.
  • (rest) #3867 Allow querying for genesis transaction when height query param is set to zero.
  • #2020 New keys export/import command line utilities to export/import private keys in ASCII format that rely on Keybase's new underlying ExportPrivKey()/ImportPrivKey() API calls.
  • #3565 Implement parameter change proposal support. Parameter change proposals can be submitted through the CLI or a REST endpoint. See docs for further usage.
  • #3850 Add rewards and commission to distribution tx tags.
  • #3981 Add support to gracefully halt a node at a given height via the node's halt-height config or CLI value.
  • #4144 Allow for configurable BIP44 HD path and coin type.
  • #4250 New BaseApp.{,Set}AppVersion() methods to get/set app's version string.
  • #4263 Add --read-timeout and --write-timeout args to the rest-server command to support custom RPC R/W timeouts.
  • #4271 Implement Coins#IsAnyGT
  • #4318 Support height queries. Queries against nodes that have the queried height pruned will return an error.
  • #4409 Implement a command that migrates exported state from one version to the next. The migrate command currently supports migrating from v0.34 to v0.36 by implementing necessary types for both versions.
  • #4570 Move /bank/balances/{address} REST handler to x/bank/client/rest. The exposed interface is unchanged.
  • Community pool spend proposal per Cosmos Hub governance proposal #7 "Activate the Community Pool"

Improvements

  • (simulation) PrintAllInvariants flag will print all failed invariants

  • (simulation) Add InitialBlockHeight flag to resume a simulation from a given block

  • (simulation) #4670 Update simulation statistics to JSON format

    • Support exporting the simulation stats to a given JSON file
  • #4775 Refactor CI config

  • Upgrade IAVL to v0.12.4

  • (tendermint) Upgrade Tendermint to v0.32.2

  • (modules) #4751 update x/genutils to match module spec

  • (keys) #4611 store keys in simapp now use a map instead of using individual literal keys

  • #2286 Improve performance of CacheKVStore iterator.

  • #3512 Implement Logger method on each module's keeper.

  • #3655 Improve signature verification failure error message.

  • #3774 add category tag to transactions for ease of filtering

  • #3914 Implement invariant benchmarks and add target to makefile.

  • #3928 remove staking references from types package

  • #3978 Return ErrUnknownRequest in message handlers for unknown or invalid routed messages.

  • #4190 Client responses that return (re)delegation(s) now return balances instead of shares.

  • #4194 ValidatorSigningInfo now includes the validator's consensus address.

  • #4235 Add parameter change proposal messages to simulation.

  • #4235 Update the minting module params to implement params.ParamSet so individual keys can be set via proposals instead of passing a struct.

  • #4259 Coins that are nil are now JSON encoded as an empty array []. Decoding remains unchanged and behavior is left intact.

  • #4305 The --generate-only CLI flag fully respects offline tx processing.

  • #4379 close db write batch.

  • #4384- Allow splitting withdrawal transaction in several chunks

  • #4403 Allow for parameter change proposals to supply only desired fields to be updated in objects instead of the entire object (only applies to values that are objects).

  • #4415 /client refactor, reduce genutil dependancy on staking

  • #4439 Implement governance module iterators.

  • #4465 Unknown subcommands print relevant error message

  • #4466 Commission validation added to validate basic of MsgCreateValidator by changing CommissionMsg to CommissionRates

  • #4501 Support height queriers in rest client

  • #4535 Improve import-export simulation errors by decoding the KVPair.Value into its respective type

  • #4536 cli context queries return query height and accounts are returned with query height

  • #4553 undelegate max entries check first

  • #4556 Added IsValid function to Coin

  • #4564 client/input.GetConfirmation()'s default is changed to No.

  • #4573 Returns height in response for query endpoints.

  • #4580 Update Context#BlockHeight to properly set the block height via WithBlockHeader.

  • #4584 Update bank Keeper to use expected keeper interface of the AccountKeeper.

  • #4584 Move Account and VestingAccount interface types to x/auth/exported.

  • #4082 supply module queriers for CLI and REST endpoints

  • #4601 Implement generic pangination helper function to be used in REST handlers and queriers.

  • #4629 Added warning event that gets emitted if validator misses a block.

  • #4674 Export Simapp genState generators and util functions by making them public

  • #4706 Simplify context Replace complex Context construct with a simpler immutible struct. Only breaking change is not to support Value and GetValue as first class calls. We do embed ctx.Context() as a raw context.Context instead to be used as you see fit.

    Migration guide:

    ctx = ctx.WithValue(contextKeyBadProposal, false)

    Now becomes:

    ctx = ctx.WithContext(context.WithValue(ctx.Context(), contextKeyBadProposal, false))

    A bit more verbose, but also allows context.WithTimeout(), etc and only used in one function in this repo, in test code.

  • #3685 Add SetAddressVerifier and GetAddressVerifier to sdk.Config to allow SDK users to configure custom address format verification logic (to override the default limitation of 20-byte addresses).

  • #3685 Add an additional parameter to NewAnteHandler for a custom SignatureVerificationGasConsumer (the default logic is now in `DefaultSigVerificationGasConsumer). This allows SDK users to configure their own logic for which key types are accepted and how those key types consume gas.

  • Remove --print-response flag as it is no longer used.

  • Revert #2284 to allow create_empty_blocks in the config

  • (tendermint) #4718 Upgrade tendermint/iavl to v0.12.3

Bug Fixes

  • #4891 Disable querying with proofs enabled when the query height <= 1.
  • (rest) #4858 Do not return an error in BroadcastTxCommit when the tx broadcasting was successful. This allows the proper REST response to be returned for a failed tx during block broadcasting mode.
  • (store) #4880 Fix error check in IAVL Store#DeleteVersion.
  • (tendermint) #4879 Don't terminate the process immediately after startup when run in standalone mode.
  • (simulation) #4861 Fix non-determinism simulation by using CLI flags as input and updating Makefile target.
  • #4868 Context#CacheContext now sets a new EventManager. This prevents unwanted events from being emitted.
  • (cli) #4870 Disable the withdraw-all-rewards command when --generate-only is supplied
  • (modules) #4831 Prevent community spend proposal from transferring funds to a module account
  • (keys) #4338 fix multisig key output for CLI
  • (modules) #4795 restrict module accounts from receiving transactions. Allowing this would cause an invariant on the module account coins.
  • (modules) #4823 Update the DefaultUnbondingTime from 3 days to 3 weeks to be inline with documentation.
  • (abci) #4639 Fix CheckTx by verifying the message route
  • Return height in responses when querying against BaseApp
  • #1351 Stable AppHash allows no_empty_blocks
  • #3705 Return [] instead of null when querying delegator rewards.
  • #3966 fixed multiple assigns to action tags #3793 add delegator tag for MsgCreateValidator and deleted unused moniker and identity tags
  • #4194 Fix pagination and results returned from /slashing/signing_infos
  • #4230 Properly set and display the message index through the TxResponse.
  • #4234 Allow tx send --generate-only to actually work offline.
  • #4271 Fix addGenesisAccount by using Coins#IsAnyGT for vesting amount validation.
  • #4273 Fix usage of AppendTags in x/staking/handler.go
  • #4303 Fix NewCoins() underlying function for duplicate coins detection.
  • #4307 Don't pass height to RPC calls as Tendermint will automatically use the latest height.
  • #4362 simulation setup bugfix for multisim 7601778
  • #4383 - currentStakeRoundUp is now always atleast currentStake + smallest-decimal-precision
  • #4394 Fix signature count check to use the TxSigLimit param instead of a default.
  • #4455 Use QueryWithData() to query unbonding delegations.
  • #4493 Fix validator-outstanding-rewards command. It now takes as an argument a validator address.
  • #4598 Fix redelegation and undelegation txs that were not checking for the correct bond denomination.
  • #4619 Close iterators in GetAllMatureValidatorQueue and UnbondAllMatureValidatorQueue methods.
  • #4654 validator slash event stored by period and height
  • #4681 panic on invalid amount on MintCoins and BurnCoins
    • skip minting if inflation is set to zero
  • Sort state JSON during export and initialization

0.35.0

Bug Fixes

  • Fix gas consumption bug in Undelegate preventing the ability to sync from genesis.

0.34.10

Bug Fixes

  • Bump Tendermint version to v0.31.11 to address the vulnerability found in the consensus package.

0.34.9

Bug Fixes

  • Bump Tendermint version to v0.31.10 to address p2p panic errors.

0.34.8

Bug Fixes

  • Bump Tendermint version to v0.31.9 to fix the p2p panic error.
  • Update gaiareplay's use of an internal Tendermint API

0.34.7

Bug Fixes

SDK

  • Fix gas consumption bug in Undelegate preventing the ability to sync from genesis.

0.34.6

Bug Fixes

SDK

  • Unbonding from a validator is now only considered "complete" after the full unbonding period has elapsed regardless of the validator's status.

0.34.5

Bug Fixes

SDK

  • #4273 Fix usage of AppendTags in x/staking/handler.go

Improvements

SDK

  • #2286 Improve performance of CacheKVStore iterator.
  • #3655 Improve signature verification failure error message.
  • #4384 Allow splitting withdrawal transaction in several chunks.

Gaia CLI

  • #4227 Support for Ledger App v1.5.
  • #4345 Update ledger-cosmos-go to v0.10.3.

0.34.4

Bug Fixes

SDK

  • #4234 Allow tx send --generate-only to actually work offline.

Gaia

  • #4219 Return an error when an empty mnemonic is provided during key recovery.

Improvements

Gaia

  • #2007 Return 200 status code on empty results

New features

SDK

  • #3850 Add rewards and commission to distribution tx tags.

0.34.3

Bug Fixes

Gaia

  • #4196 Set default invariant check period to zero.

0.34.2

Improvements

SDK

  • #4135 Add further clarification to generate only usage.

Bug Fixes

SDK

  • #4135 Fix NewResponseFormatBroadcastTxCommit
  • #4053 Add --inv-check-period flag to gaiad to set period at which invariants checks will run.
  • #4099 Update the /staking/validators endpoint to support status and pagination query flags.

0.34.1

Bug Fixes

Gaia

  • #4163 Fix v0.33.x export script to port gov data correctly.

0.34.0

Breaking Changes

Gaia

  • #3463 Revert bank module handler fork (re-enables transfers)
  • #3875 Replace async flag with --broadcast-mode flag where the default value is sync. The block mode should not be used. The REST client now uses mode parameter instead of the return parameter.

Gaia CLI

  • #3938 Remove REST server's SSL support altogether.

SDK

  • #3245 Rename validator.GetJailed() to validator.IsJailed()
  • #3516 Remove concept of shares from staking unbonding and redelegation UX; replaced by direct coin amount.

Tendermint

  • #4029 Upgrade Tendermint to v0.31.3

New features

SDK

  • #2935 New module Crisis which can test broken invariant with messages
  • #3813 New sdk.NewCoins safe constructor to replace bare sdk.Coins{} declarations.
  • #3858 add website, details and identity to gentx cli command
  • Implement coin conversion and denomination registration utilities

Gaia

  • #2935 Optionally assert invariants on a blockly basis using gaiad --assert-invariants-blockly
  • #3886 Implement minting module querier and CLI/REST clients.

Gaia CLI

  • #3937 Add command to query community-pool

Gaia REST API

  • #3937 Add route to fetch community-pool
  • #3949 added /slashing/signing_infos to get signing_info for all validators

Improvements

Gaia

  • #3808 gaiad and gaiacli integration tests use ./build/ binaries.
  • [#3819](cosmos#3819) Simulation refactor, log output now stored in ~/.gaiad/simulation/
    • Simulation moved to its own module (not a part of mock)
    • Logger type instead of passing function variables everywhere
    • Logger json output (for reloadable simulation running)
    • Cleanup bank simulation messages / remove dup code in bank simulation
    • Simulations saved in ~/.gaiad/simulations/
    • "Lean" simulation output option to exclude No-ops and !ok functions (--SimulationLean flag)
  • #3893 Improve gaiacli tx sign command
    • Add shorthand flags -a and -s for the account and sequence numbers respectively
    • Mark the account and sequence numbers required during "offline" mode
    • Always do an RPC query for account and sequence number during "online" mode
  • #4018 create genesis port script for release v.0.34.0

Gaia CLI

  • #3833 Modify stake to atom in gaia's doc.
  • #3841 Add indent to JSON of gaiacli keys [add|show|list]
  • #3859 Add newline to echo of gaiacli keys ...
  • #3959 Improving error messages when signing with ledger devices fails

SDK

  • #3238 Add block time to tx responses when querying for txs by tags or hash.
  • [#3752](cosmos#3752) Explanatory docs for minting mechanism (docs/spec/mint/01_concepts.md)
  • #3801 baseapp safety improvements
  • #3820 Make Coins.IsAllGT() more robust and consistent.
  • #3828 New sdkch tool to maintain changelogs
  • #3864 Make Coins.IsAllGTE() more consistent.
  • #3907: dep -> go mod migration
    • Drop dep in favor of go modules.
    • Upgrade to Go 1.12.1.
  • #3917 Allow arbitrary decreases to validator commission rates.
  • #3937 Implement community pool querier.
  • #3940 Codespace should be lowercase.
  • #3986 Update the Stringer implementation of the Proposal type.
  • #926 circuit breaker high level explanation
  • #3896 Fixed various linters warnings in the context of the gometalinter -> golangci-lint migration
  • #3916 Hex encode data in tx responses

Bug Fixes

Gaia

  • #3825 Validate genesis before running gentx
  • #3889 When --generate-only is provided, the Keybase is not used and as a result the --from value must be a valid Bech32 cosmos address.
  • 3974 Fix go env setting in installation.md
  • 3996 Change 'make get_tools' to 'make tools' in DOCS_README.md.

Gaia CLI

  • #3883 Remove Height Flag from CLI Queries
  • #3899 Using 'gaiacli config node' breaks ~/config/config.toml

SDK

  • #3837 Fix WithdrawValidatorCommission to properly set the validator's remaining commission.
  • #3870 Fix DecCoins#TruncateDecimal to never return zero coins in either the truncated coins or the change coins.
  • #3915 Remove ';' delimiting support from ParseDecCoins
  • #3977 Fix docker image build
  • #4020 Fix queryDelegationRewards by returning an error when the validator or delegation do not exist.
  • #4050 Fix DecCoins APIs where rounding or truncation could result in zero decimal coins.
  • #4088 Fix calculateDelegationRewards by accounting for rounding errors when multiplying stake by slashing fractions.

0.33.2

Improvements

Tendermint

  • Upgrade Tendermint to v0.31.0-dev0-fix0 which includes critical security fixes.

0.33.1

Bug Fixes

Gaia

  • #3999 Fix distribution delegation for zero height export bug

0.33.0

BREAKING CHANGES

  • Gaia REST API

    • #3641 Remove the ability to use a Keybase from the REST API client:
      • password and generate_only have been removed from the base_req object
      • All txs that used to sign or use the Keybase now only generate the tx
      • keys routes completely removed
    • #3692 Update tx encoding and broadcasting endpoints:
      • Remove duplicate broadcasting endpoints in favor of POST @ /txs
        • The Tx field now accepts a StdTx and not raw tx bytes
      • Move encoding endpoint to /txs/encode
  • Gaia

    • #3787 Fork the x/bank module into the Gaia application with only a modified message handler, where the modified message handler behaves the same as the standard x/bank message handler except for MsgMultiSend that must burn exactly 9 atoms and transfer 1 atom, and MsgSend is disabled.
    • #3789 Update validator creation flow:
      • Remove NewMsgCreateValidatorOnBehalfOf and corresponding business logic
      • Ensure the validator address equals the delegator address during MsgCreateValidator#ValidateBasic
  • SDK

    • #3750 Track outstanding rewards per-validator instead of globally, and fix the main simulation issue, which was that slashes of re-delegations to a validator were not correctly accounted for in fee distribution when the redelegation in question had itself been slashed (from a fault committed by a different validator) in the same BeginBlock. Outstanding rewards are now available on a per-validator basis in REST.
    • #3669 Ensure consistency in message naming, codec registration, and JSON tags.
    • #3788 Change order of operations for greater accuracy when calculating delegation share token value
    • #3788 DecCoins.Cap -> DecCoins.Intersect
    • #3666 Improve coins denom validation.
    • #3751 Disable (temporarily) support for ED25519 account key pairs.
  • Tendermint

    • [#3804] Update to Tendermint v0.31.0-dev0

FEATURES

  • SDK
    • #3719 DBBackend can now be set at compile time. Defaults: goleveldb. Supported: cleveldb.

IMPROVEMENTS

  • Gaia REST API

    • Update the TxResponse type allowing for the Logs result to be JSON decoded automatically.
  • Gaia CLI

    • #3653 Prompt user confirmation prior to signing and broadcasting a transaction.
    • #3670 CLI support for showing bech32 addresses in Ledger devices
    • #3711 Update tx sign to use --from instead of the deprecated --name CLI flag.
    • #3738 Improve multisig UX:
      • gaiacli keys show -o json now includes constituent pubkeys, respective weights and threshold
      • gaiacli keys show --show-multisig now displays constituent pubkeys, respective weights and threshold
      • gaiacli tx sign --validate-signatures now displays multisig signers with their respective weights
    • #3730 Improve workflow for gaiad gentx with offline public keys, by outputting stdtx file that needs to be signed.
    • #3761 Querying account related information using custom querier in auth module
  • SDK

    • #3753 Remove no-longer-used governance penalty parameter
    • #3679 Consistent operators across Coins, DecCoins, Int, Dec replaced: Minus->Sub Plus->Add Div->Quo
    • #3665 Overhaul sdk.Uint type in preparation for Coins Int -> Uint migration.
    • #3691 Cleanup error messages
    • #3456 Integrate in the Int.ToDec() convenience function
    • #3300 Update the spec-spec, spec file reorg, and TOC updates.
    • #3694 Push tagged docker images on docker hub when tag is created.
    • #3716 Update file permissions the client keys directory and contents to 0700.
    • #3681 Migrate ledger-cosmos-go from ZondaX to Cosmos organization
  • Tendermint

    • #3699 Upgrade to Tendermint 0.30.1

BUG FIXES

  • Gaia CLI

    • #3731 keys add --interactive bip32 passphrase regression fix
    • #3714 Fix USB raw access issues with gaiacli when installed via snap
  • Gaia

    • #3777 gaiad export no longer panics when the database is empty
    • #3806 Properly return errors from a couple of struct Unmarshal functions
  • SDK

    • #3728 Truncate decimal multiplication & division in distribution to ensure no more than the collected fees / inflation are distributed
    • #3727 Return on zero-length (including []byte{}) PrefixEndBytes() calls
    • #3559 fix occasional failing due to non-determinism in lcd test TestBonding where validator is unexpectedly slashed throwing off test calculations
    • #3411 Include the RequestInitChain.Time in the block header init during InitChain.
    • #3717 Update the vesting specification and implementation to cap deduction from DelegatedVesting by at most DelegatedVesting. This accounts for the case where the undelegation amount may exceed the original delegation amount due to truncation of undelegation tokens.
    • #3717 Ignore unknown proposers in allocating rewards for proposers, in case unbonding period was just 1 block and proposer was already deleted.
    • #3726 Cap(clip) reward to remaining coins in AllocateTokens.

0.32.0

BREAKING CHANGES

  • Gaia REST API

    • #3642 GET /tx/{hash} now returns 404 instead of 500 if the transaction is not found
  • SDK

  • #3580 Migrate HTTP request/response types and utilities to types/rest.

  • #3592 Drop deprecated keybase implementation's New() constructor in favor of a new crypto/keys.New(string, string) implementation that returns a lazy keybase instance. Remove client.MockKeyBase, superseded by crypto/keys.NewInMemory()

  • #3621 staking.GenesisState.Bonds -> Delegations

IMPROVEMENTS

  • SDK

    • #3311 Reconcile the DecCoin/s API with the Coin/s API.
    • #3614 Add coin denom length checks to the coins constructors.
    • #3621 remove many inter-module dependancies
    • #3601 JSON-stringify the ABCI log response which includes the log and message index.
    • #3604 Improve SDK funds related error messages and allow for unicode in JSON ABCI log.
    • #3620 Version command shows build tags
    • #3638 Add Bcrypt benchmarks & justification of security parameter choice
    • #3648 Add JSON struct tags to vesting accounts.
  • Tendermint

    • #3618 Upgrade to Tendermint 0.30.03

BUG FIXES

  • SDK
    • #3646 x/mint now uses total token supply instead of total bonded tokens to calculate inflation

0.31.2

BREAKING CHANGES

  • SDK
  • #3592 Drop deprecated keybase implementation's New constructor in favor of a new crypto/keys.New(string, string) implementation that returns a lazy keybase instance. Remove client.MockKeyBase, superseded by crypto/keys.NewInMemory()

IMPROVEMENTS

  • SDK

    • #3604 Improve SDK funds related error messages and allow for unicode in JSON ABCI log.
  • Tendermint

    • #3563 Update to Tendermint version 0.30.0-rc0

BUG FIXES

  • Gaia

    • [#3585] Fix setting the tx hash in NewResponseFormatBroadcastTxCommit.
    • [#3585] Return an empty TxResponse when Tendermint returns an empty ResultBroadcastTx.
  • SDK

    • #3582 Running make test_unit was failing due to a missing tag
    • #3617 Fix fee comparison when the required fees does not contain any denom present in the tx fees.

0.31.0

BREAKING CHANGES

  • Gaia REST API (gaiacli advanced rest-server)

    • #3284 Rename the name field to from in the base_req body.
    • #3485 Error responses are now JSON objects.
    • [#3477][distribution] endpoint changed "all_delegation_rewards" -> "delegator_total_rewards"
  • Gaia CLI (gaiacli)

    • #3399 Add gaiad validate-genesis command to facilitate checking of genesis files
    • #1894 version prints out short info by default. Add --long flag. Proper handling of --format flag introduced.
    • #3465 gaiacli rest-server switched back to insecure mode by default:
      • --insecure flag is removed.
      • --tls is now used to enable secure layer.
    • #3451 gaiacli now returns transactions in plain text including tags.
    • #3497 gaiad init now takes moniker as required arguments, not as parameter.
    • #3501 Change validator address Bech32 encoding to consensus address in tendermint-validator-set.
  • Gaia

    • #3457 Changed governance tally validatorGovInfo to use sdk.Int power instead of sdk.Dec
    • #3495 Added Validator Minimum Self Delegation
    • Reintroduce OR semantics for tx fees
  • SDK

    • #2513 Tendermint updates are adjusted by 10^-6 relative to staking tokens,
    • #3487 Move HTTP/REST utilities out of client/utils into a new dedicated client/rest package.
    • #3490 ReadRESTReq() returns bool to avoid callers to write error responses twice.
    • #3502 Fixes issue when comparing genesis states
    • #3514 Various clean ups:
      • Replace all GetKeyBase* functions family in favor of NewKeyBaseFromDir and NewKeyBaseFromHomeFlag.
      • Remove Get prefix from all TxBuilder's getters.
    • #3522 Get rid of double negatives: Coins.IsNotNegative() -> Coins.IsAnyNegative().
    • #3561 Don't unnecessarily store denominations in staking

FEATURES

  • Gaia REST API

    • #2358 Add distribution module REST interface
  • Gaia CLI (gaiacli)

    • #3429 Support querying for all delegator distribution rewards.
    • #3449 Proof verification now works with absence proofs
    • #3484 Add support vesting accounts to the add-genesis-account command.
  • Gaia

    • #3397 Implement genesis file sanitization to avoid failures at chain init.
    • #3428 Run the simulation from a particular genesis state loaded from a file
  • SDK

    • #3270 [x/staking] limit number of ongoing unbonding delegations /redelegations per pair/trio
    • [#3477][distribution] new query endpoint "delegator_validators"
    • #3514 Provided a lazy loading implementation of Keybase that locks the underlying storage only for the time needed to perform the required operation. Also added Keybase reference to TxBuilder struct.
    • [types] #2580 Addresses now Bech32 empty addresses to an empty string

IMPROVEMENTS

  • Gaia REST API

    • #3284 Update Gaia Lite REST service to support the following:
      • Automatic account number and sequence population when fields are omitted
      • Generate only functionality no longer requires access to a local Keybase
      • from field in the base_req body can be a Keybase name or account address
    • #3423 Allow simulation (auto gas) to work with generate only.
    • #3514 REST server calls to keybase does not lock the underlying storage anymore.
    • #3523 Added /tx/encode endpoint to serialize a JSON tx to base64-encoded Amino.
  • Gaia CLI (gaiacli)

    • #3476 New withdraw-all-rewards command to withdraw all delegations rewards for delegators.
    • #3497 gaiad gentx supports --ip and --node-id flags to override defaults.
    • #3518 Fix flow in keys add to show the mnemonic by default.
    • #3517 Increased test coverage
    • #3523 Added tx encode command to serialize a JSON tx to base64-encoded Amino.
  • Gaia

    • #3418 Add vesting account genesis validation checks to GaiaValidateGenesisState.
    • #3420 Added maximum length to governance proposal descriptions and titles
    • #3256 Add gas consumption for tx size in the ante handler.
    • #3454 Add --jail-whitelist to gaiad export to enable testing of complex exports
    • #3424 Allow generation of gentxs with empty memo field.
    • #3507 General cleanup, removal of unnecessary struct fields, undelegation bugfix, and comment clarification in x/staking and x/slashing
  • SDK

    • [#2605] x/params add subkey accessing
    • #2986 Store Refactor
    • #3435 Test that store implementations do not allow nil values
    • #2509 Sanitize all usage of Dec.RoundInt64()
    • #556 Increase BaseApp test coverage.
    • #3357 develop state-transitions.md for staking spec, missing states added to state.md
    • #3552 Validate bit length when deserializing Int types.

BUG FIXES

  • Gaia CLI (gaiacli)

    • #3417 Fix q slashing signing-info panic by ensuring safety of user input and properly returning not found error
    • #3345 Upgrade ledger-cosmos-go dependency to v0.9.3 to pull https://github.com/ZondaX/ledger-cosmos-go/commit/ed9aa39ce8df31bad1448c72d3d226bf2cb1a8d1 in order to fix a derivation path issue that causes gaiacli keys add --recover to malfunction.
    • #3419 Fix q distr slashes panic
    • #3453 The rest-server command didn't respect persistent flags such as --chain-id and --trust-node if they were passed on the command line.
    • #3441 Improved resource management and connection handling (ledger devices). Fixes issue with DER vs BER signatures.
  • Gaia

    • #3486 Use AmountOf in vesting accounts instead of zipping/aligning denominations.

0.30.0

BREAKING CHANGES

  • Gaia REST API (gaiacli advanced rest-server)

    • [gaia-lite] [#2182] Renamed and merged all redelegations endpoints into /staking/redelegations
    • #3176 tx/sign endpoint now expects BaseReq fields as nested object.
    • [#2222] all endpoints renamed from /stake -> /staking
    • [#1268] LooseTokens -> NotBondedTokens
    • [#3289] misc renames:
      • Validator.UnbondingMinTime -> Validator.UnbondingCompletionTime
      • Delegation -> Value in MsgCreateValidator and MsgDelegate
      • MsgBeginUnbonding -> MsgUndelegate
  • Gaia CLI (gaiacli)

    • #810 Don't fallback to any default values for chain ID.
      • Users need to supply chain ID either via config file or the --chain-id flag.
      • Change chain_id and trust_node in gaiacli configuration to chain-id and trust-node respectively.
    • #3069 --fee flag renamed to --fees to support multiple coins
    • #3156 Remove unimplemented gaiacli init command
    • [#2222] gaiacli tx stake -> gaiacli tx staking, gaiacli query stake -> gaiacli query staking
    • #1894 version command now shows latest commit, vendor dir hash, and build machine info.
    • #3320 Ensure all gaiacli query commands respect the --output and --indent flags
  • Gaia

    • cosmos#2838 - Move store keys to constants
    • #3162 The --gas flag now takes auto instead of simulate in order to trigger a simulation of the tx before the actual execution.
    • #3285 New gaiad tendermint version to print libs versions
    • #1894 version command now shows latest commit, vendor dir hash, and build machine info.
    • [#3249(cosmos#3249) tendermint's show-validator and show-address --json flags removed in favor of --output-format=json.
  • SDK

    • [distribution] #3359 Always round down when calculating rewards-to-be-withdrawn in F1 fee distribution
    • #3336 Ensure all SDK messages have their signature bytes contain canonical fields value and type.
    • #3333 - F1 storage efficiency improvements - automatic withdrawals when unbonded, historical reward reference counting
    • [staking] #2513 Validator power type from Dec -> Int
    • [staking] #3233 key and value now contain duplicate fields to simplify code
    • #3064 Sanitize sdk.Coin denom. Coins denoms are now case insensitive, i.e. 100fooToken equals to 100FOOTOKEN.
    • #3195 Allows custom configuration for syncable strategy
    • #3242 Fix infinite gas meter utilization during aborted ante handler executions.
    • [x/distribution] #3292 Enable or disable withdraw addresses with a parameter in the param store
    • [staking] #2222 /stake -> /staking module rename
    • [staking] #1268 LooseTokens -> NotBondedTokens
    • [staking] #1402 Redelegation and unbonding-delegation structs changed to include multiple an array of entries
    • [staking] #3289 misc renames:
      • Validator.UnbondingMinTime -> Validator.UnbondingCompletionTime
      • Delegation -> Value in MsgCreateValidator and MsgDelegate
      • MsgBeginUnbonding -> MsgUndelegate
    • [#3315] Increase decimal precision to 18
    • #3323 Update to Tendermint 0.29.0
    • #3328 [x/gov] Remove redundant action tag
  • Tendermint

    • #3298 Upgrade to Tendermint 0.28.0

FEATURES

  • Gaia REST API (gaiacli advanced rest-server)

    • #3067 Add support for fees on transactions
    • #3069 Add a custom memo on transactions
    • #3027 Implement /gov/proposals/{proposalID}/proposer to query for a proposal's proposer.
  • Gaia CLI (gaiacli)

    • #2399 Implement params command to query slashing parameters.
    • #2730 Add tx search pagination parameter
    • #3027 Implement query gov proposer [proposal-id] to query for a proposal's proposer.
    • #3198 New keys add --multisig flag to store multisig keys locally.
    • #3198 New multisign command to generate multisig signatures.
    • #3198 New sign --multisig flag to enable multisig mode.
    • #2715 Reintroduce gaia server's insecure mode.
    • #3334 New gaiad completion and gaiacli completion to generate Bash/Zsh completion scripts.
    • #2607 Make gaiacli config handle the boolean indent flag to beautify commands JSON output.
  • Gaia

    • [#2182] [x/staking] Added querier for querying a single redelegation
    • #3305 Add support for vesting accounts at genesis.
    • #3198 [x/auth] Add multisig transactions support
    • #3198 add-genesis-account can take both account addresses and key names
  • SDK

    • #3099 Implement F1 fee distribution
    • #2926 Add TxEncoder to client TxBuilder.
    • #2694 Vesting account implementation.
    • #2996 Update the AccountKeeper to contain params used in the context of the ante handler.
    • #3179 New CodeNoSignatures error code.
    • #3319 [x/distribution] Queriers for all distribution state worth querying; distribution query commands
    • #3356 [x/auth] bech32-ify accounts address in error message.

IMPROVEMENTS

  • Gaia REST API

    • #3176 Validate tx/sign endpoint POST body.
    • #2948 Swagger UI now makes requests to light client node
  • Gaia CLI (gaiacli)

    • #3224 Support adding offline public keys to the keystore
  • Gaia

    • #2186 Add Address Interface
    • #3158 Validate slashing genesis
    • #3172 Support minimum fees in a local testnet.
    • #3250 Refactor integration tests and increase coverage
    • #3248 Refactor tx fee model:
      • Validators specify minimum gas prices instead of minimum fees
      • Clients may provide either fees or gas prices directly
      • The gas prices of a tx must meet a validator's minimum
      • gaiad start and gaia.toml take --minimum-gas-prices flag and minimum-gas-price config key respectively.
    • #2859 Rename TallyResult in gov proposals to FinalTallyResult
    • #3286 Fix gaiad gentx printout of account's addresses, i.e. user bech32 instead of hex.
    • [#3249(cosmos#3249) --json flag removed, users should use --output=json instead.
  • SDK

    • #3137 Add tag documentation for each module along with cleaning up a few existing tags in the governance, slashing, and staking modules.
    • #3093 Ante handler does no longer read all accounts in one go when processing signatures as signature verification may fail before last signature is checked.
    • [staking] #1402 Add for multiple simultaneous redelegations or unbonding-delegations within an unbonding period
    • [staking] #1268 staking spec rewrite
  • CI

    • #2498 Added macos CI job to CircleCI
    • #142 Increased the number of blocks to be tested during multi-sim
    • #147 Added docker image build to CI

BUG FIXES

  • Gaia CLI (gaiacli)

    • #3141 Fix the bug in GetAccount when len(res) == 0 and err == nil
    • #810 Fix regression in gaiacli config file handling
  • Gaia

    • #3148 Fix gaiad export by adding a boolean to NewGaiaApp determining whether or not to load the latest version
    • #3181 Correctly reset total accum update height and jailed-validator bond height / unbonding height on export-for-zero-height
    • #3172 Fix parsing gaiad.toml when it already exists.
    • #3223 Fix unset governance proposal queues when importing state from old chain
    • #3187 Fix gaiad export by resetting each validator's slashing period.

0.29.1

BUG FIXES

  • SDK
    • #3207 - Fix token printing bug

0.29.0

BREAKING CHANGES

  • Gaia

    • #3148 Fix gaiad export by adding a boolean to NewGaiaApp determining whether or not to load the latest version
  • SDK

    • #3163 Withdraw commission on self bond removal

0.28.1

BREAKING CHANGES

  • Gaia REST API (gaiacli advanced rest-server)
    • [lcd] #3045 Fix quoted json return on GET /keys (keys list)
    • [gaia-lite] #2191 Split POST /stake/delegators/{delegatorAddr}/delegations into POST /stake/delegators/{delegatorAddr}/delegations, POST /stake/delegators/{delegatorAddr}/unbonding_delegations and POST /stake/delegators/{delegatorAddr}/redelegations
    • [gaia-lite] #3056 generate_only and simulate have moved from query arguments to POST requests body.
  • Tendermint
    • [tendermint] Now using Tendermint 0.27.3

FEATURES

  • Gaia REST API (gaiacli advanced rest-server)
    • [slashing] #2399 Implement /slashing/parameters endpoint to query slashing parameters.
  • Gaia CLI (gaiacli)
    • [gaiacli] #2399 Implement params command to query slashing parameters.
  • SDK
    • [client] #2926 Add TxEncoder to client TxBuilder.
  • Other
    • Introduced the logjack tool for saving logs w/ rotation

IMPROVEMENTS

  • Gaia REST API (gaiacli advanced rest-server)
    • #2879, #2880 Update deposit and vote endpoints to perform a direct txs query when a given proposal is inactive and thus having votes and deposits removed from state.
  • Gaia CLI (gaiacli)
    • #2879, #2880 Update deposit and vote CLI commands to perform a direct txs query when a given proposal is inactive and thus having votes and deposits removed from state.
  • Gaia
    • #3021 Add --gentx-dir to gaiad collect-gentxs to specify a directory from which collect and load gentxs. Add --output-document to gaiad init to allow one to redirect output to file.

0.28.0

BREAKING CHANGES

  • Gaia CLI (gaiacli)

    • [cli] #2595 Remove keys new in favor of keys add incorporating existing functionality with addition of key recovery functionality.
    • [cli] #2987 Add shorthand -a to gaiacli keys show and update docs
    • [cli] #2971 Additional verification when running gaiad gentx
    • [cli] #2734 Rewrite gaiacli config. It is now a non-interactive config utility.
  • Gaia

    • #128 Updated CircleCI job to trigger website build on every push to master/develop.
    • #2994 Change wrong-password error message.
    • #3009 Added missing Gaia genesis verification
    • #128 Updated CircleCI job to trigger website build on every push to master/develop.
    • #2994 Change wrong-password error message.
    • #3009 Added missing Gaia genesis verification
    • [gas] #3052 Updated gas costs to more reasonable numbers
  • SDK

    • [auth] #2952 Signatures are no longer serialized on chain with the account number and sequence number
    • [auth] #2952 Signatures are no longer serialized on chain with the account number and sequence number
    • [stake] #3055 Use address instead of bond height / intratxcounter for deduplication

FEATURES

  • Gaia CLI (gaiacli)
    • #2961 Add --force flag to gaiacli keys delete command to skip passphrase check and force key deletion unconditionally.

IMPROVEMENTS

  • Gaia CLI (gaiacli)

    • #2991 Fully validate transaction signatures during gaiacli tx sign --validate-signatures
  • SDK

    • #1277 Complete bank module specification
    • #2963 Complete auth module specification
    • #2914 No longer withdraw validator rewards on bond/unbond, but rather move the rewards to the respective validator's pools.

BUG FIXES

  • Gaia CLI (gaiacli)

    • #2921 Fix keys delete inability to delete offline and ledger keys.
  • Gaia

    • #3003 CollectStdTxs() must validate DelegatorAddr against genesis accounts.
  • SDK

    • #2967 Change ordering of mint.BeginBlocker and distr.BeginBlocker, recalculate inflation each block
    • #3068 check for uint64 gas overflow during Std#ValidateBasic.
    • #3071 Catch overflow on block gas meter

0.27.0

BREAKING CHANGES

  • Gaia REST API (gaiacli advanced rest-server)

    • [gaia-lite] #2819 Txs query param format is now: /txs?tag=value (removed '' wrapping the query parameter value)
  • Gaia CLI (gaiacli)

    • [cli] #2728 Seperate tx and query subcommands by module
    • [cli] #2727 Fix unbonding command flow
    • [cli] #2786 Fix redelegation command flow
    • [cli] #2829 add-genesis-account command now validates state when adding accounts
    • [cli] #2804 Check whether key exists before passing it on to tx create-validator.
    • [cli] #2874 gaiacli tx sign takes an optional --output-document flag to support output redirection.
    • [cli] #2875 Refactor gaiad gentx and avoid redirection to gaiacli tx sign for tx signing.
  • Gaia

    • [mint] [#2825] minting now occurs every block, inflation parameter updates still hourly
  • SDK

    • #2752 Don't hardcode bondable denom.
    • #2701 Account numbers and sequence numbers in auth are now uint64 instead of int64
    • #2019 Cap total number of signatures. Current per-transaction limit is 7, and if that is exceeded transaction is rejected.
    • #2801 Remove AppInit structure.
    • #2798 Governance API has miss-spelled English word in JSON response ('depositer' -> 'depositor')
    • #2943 Transaction action tags equal the message type. Staking EndBlocker tags are included.
  • Tendermint

    • Update to Tendermint 0.27.0

FEATURES

  • Gaia REST API (gaiacli advanced rest-server)

    • [gov] #2479 Added governance parameter query REST endpoints.
  • Gaia CLI (gaiacli)

    • [gov][cli] #2479 Added governance parameter query commands.
    • [stake][cli] [#2027] Add CLI query command for getting all delegations to a specific validator.
    • #2840 Standardize CLI exports from modules
  • Gaia

    • [app] #2791 Support export at a specific height, with gaiad export --height=HEIGHT.
    • [x/gov] #2479 Implemented querier for getting governance parameters.
    • [app] #2663 - Runtime-assertable invariants
    • [app] #2791 Support export at a specific height, with gaiad export --height=HEIGHT.
    • [app] #2812 Support export alterations to prepare for restarting at zero-height
  • SDK

    • [simulator] #2682 MsgEditValidator now looks at the validator's max rate, thus it now succeeds a significant portion of the time
    • [core] #2775 Add deliverTx maximum block gas limit

IMPROVEMENTS

  • Gaia REST API (gaiacli advanced rest-server)

    • [gaia-lite] #2819 Tx search now supports multiple tags as query parameters
    • #2836 Expose LCD router to allow users to register routes there.
  • Gaia CLI (gaiacli)

    • #2749 Add --chain-id flag to gaiad testnet
    • #2819 Tx search now supports multiple tags as query parameters
  • Gaia

    • #2772 Update BaseApp to not persist state when the ante handler fails on DeliverTx.
    • #2773 Require moniker to be provided on gaiad init.
    • #2672 [Makefile] Updated for better Windows compatibility and ledger support logic, get_tools was rewritten as a cross-compatible Makefile.
    • #2766 [Makefile] Added goimports tool to get_tools. Get_tools now only builds new versions if binaries are missing.
    • #110 Updated CircleCI job to trigger website build when cosmos docs are updated.
  • SDK & [x/mock/simulation] [#2720] major cleanup, introduction of helper objects, reorganization

  • #2821 Codespaces are now strings

  • [types] #2776 Improve safety of Coin and Coins types. Various functions and methods will panic when a negative amount is discovered.

  • #2815 Gas unit fields changed from int64 to uint64.

  • #2821 Codespaces are now strings

  • #2779 Introduce ValidateBasic to the Tx interface and call it in the ante handler.

  • #2825 More staking and distribution invariants

  • #2912 Print commit ID in hex when commit is synced.

  • Tendermint

  • #2796 Update to go-amino 0.14.1

BUG FIXES

  • Gaia REST API (gaiacli advanced rest-server)

    • [gaia-lite] #2868 Added handler for governance tally endpoint
    • #2907 Refactor and fix the way Gaia Lite is started.
  • Gaia

    • [#2723] Use cosmosvalcons Bech32 prefix in tendermint show-address
    • #2742 Fix time format of TimeoutCommit override
    • #2898 Remove redundant '$' in docker-compose.yml
  • SDK

    • #2733 [x/gov, x/mock/simulation] Fix governance simulation, update x/gov import/export
    • #2854 [x/bank] Remove unused bank.MsgIssue, prevent possible panic
    • #2884 [docs/examples] Fix basecli version panic
  • Tendermint

    • #2797 AddressBook requires addresses to have IDs; Do not crap out immediately after sending pex addrs in seed mode

0.26.0

BREAKING CHANGES

  • Gaia

    • [gaiad init] #2602 New genesis workflow
  • SDK

    • [simulation] #2665 only argument to sdk.Invariant is now app
  • Tendermint

    • Upgrade to version 0.26.0

FEATURES

  • Gaia CLI (gaiacli)

    • [cli] #2569 Add commands to query validator unbondings and redelegations
    • [cli] #2569 Add commands to query validator unbondings and redelegations
    • [cli] #2524 Add support offline mode to gaiacli tx sign. Lookups are not performed if the flag --offline is on.
    • [cli] #2558 Rename --print-sigs to --validate-signatures. It now performs a complete set of sanity checks and reports to the user. Also added --print-signature-only to print the signature only, not the whole transaction.
    • [cli] #2704 New add-genesis-account convenience command to populate genesis.json with genesis accounts.
  • SDK

    • #1336 Mechanism for SDK Users to configure their own Bech32 prefixes instead of using the default cosmos prefixes.

IMPROVEMENTS

  • Gaia

  • #2637 [x/gov] Switched inactive and active proposal queues to an iterator based queue

  • SDK

  • #2573 [x/distribution] add accum invariance

  • #2556 [x/mock/simulation] Fix debugging output

  • #2396 [x/mock/simulation] Change parameters to get more slashes

  • #2617 [x/mock/simulation] Randomize all genesis parameters

  • #2669 [x/stake] Added invarant check to make sure validator's power aligns with its spot in the power store.

  • #1924 [x/mock/simulation] Use a transition matrix for block size

  • #2660 [x/mock/simulation] Staking transactions get tested far more frequently

  • #2610 [x/stake] Block redelegation to and from the same validator

  • #2652 [x/auth] Add benchmark for get and set account

  • #2685 [store] Add general merkle absence proof (also for empty substores)

  • #2708 [store] Disallow setting nil values

BUG FIXES

  • Gaia

  • #2670 [x/stake] fixed incorrect IterateBondedValidators and split into two functions: IterateBondedValidators and IterateLastBlockConsValidators

  • #2691 Fix local testnet creation by using a single canonical genesis time

  • #2648 [gaiad] Fix gaiad export / gaiad import consistency, test in CI

  • SDK

  • #2625 [x/gov] fix AppendTag function usage error

  • #2677 [x/stake, x/distribution] various staking/distribution fixes as found by the simulator

  • #2674 [types] Fix coin.IsLT() impl, coins.IsLT() impl, and renamed coins.Is* to coins.IsAll* (see #2686)

  • #2711 [x/stake] Add commission data to MsgCreateValidator signature bytes.

  • Temporarily disable insecure mode for Gaia Lite

0.25.0

October 24th, 2018

BREAKING CHANGES

  • Gaia REST API (gaiacli advanced rest-server)

    • [x/stake] Validator.Owner renamed to Validator.Operator
    • #595 Connections to the REST server are now secured using Transport Layer Security by default. The --insecure flag is provided to switch back to insecure HTTP.
    • [gaia-lite] #2258 Split GET stake/delegators/{delegatorAddr} into GET stake/delegators/{delegatorAddr}/delegations, GET stake/delegators/{delegatorAddr}/unbonding_delegations and GET stake/delegators/{delegatorAddr}/redelegations
  • Gaia CLI (gaiacli)

    • [x/stake] Validator.Owner renamed to Validator.Operator
    • [cli] unsafe_reset_all, show_validator, and show_node_id have been renamed to unsafe-reset-all, show-validator, and show-node-id
    • [cli] #1983 --print-response now defaults to true in commands that create and send a transaction
    • [cli] #1983 you can now pass --pubkey or --address to gaiacli keys show to return a plaintext representation of the key's address or public key for use with other commands
    • [cli] #2061 changed proposalID in governance REST endpoints to proposal-id
    • [cli] #2014 gaiacli advanced no longer exists - to access ibc, rest-server, and validator-set commands use gaiacli ibc, gaiacli rest-server, and gaiacli tendermint, respectively
    • [makefile] get_vendor_deps no longer updates lock file it just updates vendor directory. Use update_vendor_deps to update the lock file. #2152
    • [cli] #2221 All commands that utilize a validator's operator address must now use the new Bech32 prefix, cosmosvaloper.
    • [cli] #2190 gaiacli init --gen-txs is now gaiacli init --with-txs to reduce confusion
    • [cli] #2073 --from can now be either an address or a key name
    • [cli] #1184 Subcommands reorganisation, see #2390 for a comprehensive list of changes.
    • [cli] #2524 Add support offline mode to gaiacli tx sign. Lookups are not performed if the flag --offline is on.
    • [cli] #2570 Add commands to query deposits on proposals
  • Gaia

    • Make the transient store key use a distinct store key. #2013
    • [x/stake] #1901 Validator type's Owner field renamed to Operator; Validator's GetOwner() renamed accordingly to comply with the SDK's Validator interface.
    • [docs] #2001 Update slashing spec for slashing period
    • [x/stake, x/slashing] #1305 - Rename "revoked" to "jailed"
    • [x/stake] [#1676] Revoked and jailed validators put into the unbonding state
    • [x/stake] [#1877] Redelegations/unbonding-delegation from unbonding validator have reduced time
    • [x/slashing] #1789 Slashing changes for Tendermint validator set offset (NextValSet)
    • [x/stake] #2040 Validator operator type has now changed to sdk.ValAddress
    • [x/stake] #2221 New Bech32 prefixes have been introduced for a validator's consensus address and public key: cosmosvalcons and cosmosvalconspub respectively. Also, existing Bech32 prefixes have been renamed for accounts and validator operators:
      • cosmosaccaddr / cosmosaccpub => cosmos / cosmospub
      • cosmosvaladdr / cosmosvalpub => cosmosvaloper / cosmosvaloperpub
    • [x/stake] [#1013] TendermintUpdates now uses transient store
    • [x/stake] #2435 Remove empty bytes from the ValidatorPowerRank store key
    • [x/gov] #2195 Governance uses BFT Time
    • [x/gov] #2256 Removed slashing for governance non-voting validators
    • [simulation] #2162 Added back correct supply invariants
    • [x/slashing] #2430 Simulate more slashes, check if validator is jailed before jailing
    • [x/stake] #2393 Removed CompleteUnbonding and CompleteRedelegation Msg types, and instead added unbonding/redelegation queues to endblocker
    • [x/mock/simulation] #2501 Simulate transactions & invariants for fee distribution, and fix bugs discovered in the process
      • [x/auth] Simulate random fee payments
      • [cmd/gaia/app] Simulate non-zero inflation
      • [x/stake] Call hooks correctly in several cases related to delegation/validator updates
      • [x/stake] Check full supply invariants, including yet-to-be-withdrawn fees
      • [x/stake] Remove no-longer-in-use store key
      • [x/slashing] Call hooks correctly when a validator is slashed
      • [x/slashing] Truncate withdrawals (unbonding, redelegation) and burn change
      • [x/mock/simulation] Ensure the simulation cannot set a proposer address of nil
      • [x/mock/simulation] Add more event logs on begin block / end block for clarity
      • [x/mock/simulation] Correctly set validator power in abci.RequestBeginBlock
      • [x/minting] Correctly call stake keeper to track inflated supply
      • [x/distribution] Sanity check for nonexistent rewards
      • [x/distribution] Truncate withdrawals and return change to the community pool
      • [x/distribution] Add sanity checks for incorrect accum / total accum relations
      • [x/distribution] Correctly calculate total power using Tendermint updates
      • [x/distribution] Simulate withdrawal transactions
      • [x/distribution] Fix a bug where the fee pool was not correctly tracked on WithdrawDelegatorRewardsAll
    • [x/stake] #1673 Validators are no longer deleted until they can no longer possibly be slashed
    • #1890 Start chain with initial state + sequence of transactions
      • [cli] Rename gaiad init gentx to gaiad gentx.
      • [cli] Add --skip-genesis flag to gaiad init to prevent genesis.json generation.
      • Drop GenesisTx in favor of a signed StdTx with only one MsgCreateValidator message.
      • [cli] Port gaiad init and gaiad testnet to work with StdTx genesis transactions.
      • [cli] Add --moniker flag to gaiad init to override moniker when generating genesis.json - i.e. it takes effect when running with the --with-txs flag, it is ignored otherwise.
  • SDK

    • [core] #2219 Update to Tendermint 0.24.0
      • Validator set updates delayed by one block
      • BFT timestamp that can safely be used by applications
      • Fixed maximum block size enforcement
    • [core] #1807 Switch from use of rational to decimal
    • [types] #1901 Validator interface's GetOwner() renamed to GetOperator()
    • [x/slashing] #2122 - Implement slashing period
    • [types] #2119 Parsed error messages and ABCI log errors to make them more human readable.
    • [types] #2407 MulInt method added to big decimal in order to improve efficiency of slashing
    • [simulation] Rename TestAndRunTx to Operation #2153
    • [simulation] Remove log and testing.TB from Operation and Invariants, in favor of using errors #2282
    • [simulation] Remove usage of keys and addrs in the types, in favor of simulation.Account #2384
    • [tools] Removed gocyclo #2211
    • [baseapp] Remove SetTxDecoder in favor of requiring the decoder be set in baseapp initialization. #1441
    • [baseapp] #1921 Add minimumFees field to BaseApp.
    • [store] Change storeInfo within the root multistore to use tmhash instead of ripemd160 #2308
    • [codec] #2324 All referrences to wire have been renamed to codec. Additionally, wire.NewCodec is now codec.New().
    • [types] #2343 Make sdk.Msg have a names field, to facilitate automatic tagging.
    • [baseapp] #2366 Automatically add action tags to all messages
    • [x/auth] #2377 auth.StdSignMsg -> txbuilder.StdSignMsg
    • [x/staking] #2244 staking now holds a consensus-address-index instead of a consensus-pubkey-index
    • [x/staking] #2236 more distribution hooks for distribution
    • [x/stake] #2394 Split up UpdateValidator into distinct state transitions applied only in EndBlock
    • [x/slashing] #2480 Fix signing info handling bugs & faulty slashing
    • [x/stake] #2412 Added an unbonding validator queue to EndBlock to automatically update validator.Status when finished Unbonding
    • [x/stake] #2500 Block conflicting redelegations until we add an index
    • [x/params] Global Paramstore refactored
    • [types] #2506 sdk.Dec MarshalJSON now marshals as a normal Decimal, with 10 digits of decimal precision
    • [x/stake] #2508 Utilize Tendermint power for validator power key
    • [x/stake] #2531 Remove all inflation logic
    • [x/mint] #2531 Add minting module and inflation logic
    • [x/auth] #2540 Rename AccountMapper to AccountKeeper.
    • [types] #2456 Renamed msg.Name() and msg.Type() to msg.Type() and msg.Route() respectively
  • Tendermint

    • Update tendermint version from v0.23.0 to v0.25.0, notable changes
      • Mempool now won't build too large blocks, or too computationally expensive blocks
      • Maximum tx sizes and gas are now removed, and are implicitly the blocks maximums
      • ABCI validators no longer send the pubkey. The pubkey is only sent in validator updates
      • Validator set changes are now delayed by one block
      • Block header now includes the next validator sets hash
      • BFT time is implemented
      • Secp256k1 signature format has changed
      • There is now a threshold multisig format
      • See the tendermint changelog for other changes.

FEATURES

  • Gaia REST API (gaiacli advanced rest-server)

    • [gaia-lite] Endpoints to query staking pool and params
    • [gaia-lite] #2110 Add support for simulate=true requests query argument to endpoints that send txs to run simulations of transactions
    • [gaia-lite] #966 Add support for generate_only=true query argument to generate offline unsigned transactions
    • [gaia-lite] #1953 Add /sign endpoint to sign transactions generated with generate_only=true.
    • [gaia-lite] #1954 Add /broadcast endpoint to broadcast transactions signed by the /sign endpoint.
    • [gaia-lite] #2113 Rename /accounts/{address}/send to /bank/accounts/{address}/transfers, rename /accounts/{address} to /auth/accounts/{address}, replace proposal-id with proposalId in all gov endpoints
    • [gaia-lite] #2478 Add query gov proposal's deposits endpoint
    • [gaia-lite] #2477 Add query validator's outgoing redelegations and unbonding delegations endpoints
  • Gaia CLI (gaiacli)

    • [cli] Cmds to query staking pool and params
    • [gov][cli] #2062 added --proposal flag to submit-proposal that allows a JSON file containing a proposal to be passed in
    • #2040 Add --bech to gaiacli keys show and respective REST endpoint to provide desired Bech32 prefix encoding
    • [cli] #2047 #2306 Passing --gas=simulate triggers a simulation of the tx before the actual execution. The gas estimate obtained via the simulation will be used as gas limit in the actual execution.
    • [cli] #2047 The --gas-adjustment flag can be used to adjust the estimate obtained via the simulation triggered by --gas=simulate.
    • [cli] #2110 Add --dry-run flag to perform a simulation of a transaction without broadcasting it. The --gas flag is ignored as gas would be automatically estimated.
    • [cli] #2204 Support generating and broadcasting messages with multiple signatures via command line:
      • #966 Add --generate-only flag to build an unsigned transaction and write it to STDOUT.
      • #1953 New sign command to sign transactions generated with the --generate-only flag.
      • #1954 New broadcast command to broadcast transactions generated offline and signed with the sign command.
    • [cli] #2220 Add gaiacli config feature to interactively create CLI config files to reduce the number of required flags
    • [stake][cli] #1672 Introduced new commission flags for validator commands create-validator and edit-validator.
    • [stake][cli] #1890 Add --genesis-format flag to gaiacli tx create-validator to produce transactions in genesis-friendly format.
    • [cli]#2554 Make gaiacli keys show multisig ready.
  • Gaia

    • [cli] #2170 added ability to show the node's address via gaiad tendermint show-address
    • [simulation] #2313 Reworked make test_sim_gaia_slow to make test_sim_gaia_full, now simulates from multiple starting seeds in parallel
    • [cli] [#1921] (cosmos#1921)
      • New configuration file gaiad.toml is now created to host Gaia-specific configuration.
      • New --minimum_fees/minimum_fees flag/config option to set a minimum fee.
  • SDK

    • [querier] added custom querier functionality, so ABCI query requests can be handled by keepers
    • [simulation] #1924 allow operations to specify future operations
    • [simulation] #1924 Add benchmarking capabilities, with makefile commands "test_sim_gaia_benchmark, test_sim_gaia_profile"
    • [simulation] #2349 Add time-based future scheduled operations to simulator
    • [x/auth] #2376 Remove FeePayer() from StdTx
    • [x/stake] #1672 Implement basis for the validator commission model.
    • [x/auth] Support account removal in the account mapper.

IMPROVEMENTS

  • [tools] Improved terraform and ansible scripts for infrastructure deployment

  • [tools] Added ansible script to enable process core dumps

  • Gaia REST API (gaiacli advanced rest-server)

    • [x/stake] #2000 Added tests for new staking endpoints
    • [gaia-lite] #2445 Standarized REST error responses
    • [gaia-lite] Added example to Swagger specification for /keys/seed.
    • [x/stake] Refactor REST utils
  • Gaia CLI (gaiacli)

    • [cli] #2060 removed --select from block command
    • [cli] #2128 fixed segfault when exporting directly after gaiad init
    • [cli] #1255 open KeyBase in read-only mode for query-purpose CLI commands
    • [docs] Added commands for querying governance deposits, votes and tally
  • Gaia

    • [x/stake] #2023 Terminate iteration loop in UpdateBondedValidators and UpdateBondedValidatorsFull when the first revoked validator is encountered and perform a sanity check.
    • [x/auth] Signature verification's gas cost now accounts for pubkey type. #2046
    • [x/stake] [x/slashing] Ensure delegation invariants to jailed validators #1883.
    • [x/stake] Improve speed of GetValidator, which was shown to be a performance bottleneck. #2046
    • [x/stake] #2435 Improve memory efficiency of getting the various store keys
    • [genesis] #2229 Ensure that there are no duplicate accounts or validators in the genesis state.
    • [genesis] #2450 Validate staking genesis parameters.
    • Add SDK validation to config.toml (namely disabling create_empty_blocks) #1571
    • #1941(cosmos#1941) Version is now inferred via git describe --tags.
    • [x/distribution] #1671 add distribution types and tests
  • SDK

    • [tools] Make get_vendor_deps deletes .vendor-new directories, in case scratch files are present.
    • [spec] Added simple piggy bank distribution spec
    • [cli] #1632 Add integration tests to ensure basecoind init && basecoind start sequences run successfully for both democoin and basecoin examples.
    • [store] Speedup IAVL iteration, and consequently everything that requires IAVL iteration. #2143
    • [store] #1952, #2281 Update IAVL dependency to v0.11.0
    • [simulation] Make timestamps randomized #2153
    • [simulation] Make logs not just pure strings, speeding it up by a large factor at greater block heights #2282
    • [simulation] Add a concept of weighting the operations #2303
    • [simulation] Logs get written to file if large, and also get printed on panics #2285
    • [simulation] Bank simulations now makes testing auth configurable #2425
    • [gaiad] #1992 Add optional flag to gaiad testnet to make config directory of daemon (default gaiad) and cli (default gaiacli) configurable
    • [x/stake] Add stake Queriers for Gaia-lite endpoints. This increases the staking endpoints performance by reusing the staking keeper logic for queries. #2249
    • [store] #2017 Refactor gas iterator gas consumption to only consume gas for iterator creation and Next calls which includes dynamic consumption of value length.
    • [types/decimal] #2378 - Added truncate functionality to decimal
    • [client] #1184 Remove unused client/tx/sign.go.
    • [tools] #2464 Lock binary dependencies to a specific version
    • #2573 [x/distribution] add accum invariance

BUG FIXES

  • Gaia CLI (gaiacli)

    • [cli] #1997 Handle panics gracefully when gaiacli stake {delegation,unbond} fail to unmarshal delegation.
    • [cli] #2265 Fix JSON formatting of the gaiacli send command.
    • [cli] #2547 Mark --to and --amount as required flags for gaiacli tx send.
  • Gaia

    • [x/stake] Return correct Tendermint validator update set on EndBlocker by not including non previously bonded validators that have zero power. #2189
    • [docs] Fixed light client section links
  • SDK

    • #1988 Make us compile on OpenBSD (disable ledger) [#1988] (cosmos#1988)
    • #2105 Fix DB Iterator leak, which may leak a go routine.
    • [ledger] #2064 Fix inability to sign and send transactions via the LCD by loading a Ledger device at runtime.
    • #2158 Fix non-deterministic ordering of validator iteration when slashing in gov EndBlocker
    • [simulation] #1924 Make simulation stop on SIGTERM
    • #2388 Remove dependency on deprecated tendermint/tmlibs repository.
    • #2416 Refactored InitializeTestLCD to properly include proposing validator in genesis state.
    • #2573 [x/distribution] accum invariance bugfix
    • #2573 [x/slashing] unbonding-delegation slashing invariance bugfix

0.24.2

August 22nd, 2018

BUG FIXES

  • Tendermint
    • Fix unbounded consensus WAL growth

0.24.1

August 21st, 2018

BUG FIXES

  • Gaia
    • [x/slashing] Evidence tracking now uses validator address instead of validator pubkey

0.24.0

August 13th, 2018

BREAKING CHANGES

  • Gaia REST API (gaiacli advanced rest-server)

    • [x/stake] #1880 More REST-ful endpoints (large refactor)
    • [x/slashing] #1866 /slashing/signing_info takes cosmosvalpub instead of cosmosvaladdr
    • use time.Time instead of int64 for time. See Tendermint v0.23.0
    • Signatures are no longer Amino encoded with prefixes (just encoded as raw bytes) - see Tendermint v0.23.0
  • Gaia CLI (gaiacli)

    • [x/stake] change --keybase-sig to --identity
    • [x/stake] #1828 Force user to specify amount on create-validator command by removing default
    • [x/gov] Change --proposalID to --proposal-id
    • [x/stake, x/gov] #1606 Use --from instead of adhoc flags like --address-validator and --proposer to indicate the sender address.
    • #1551 Remove --name completely
    • Genesis/key creation (gaiad init) now supports user-provided key passwords
  • Gaia

    • [x/stake] Inflation doesn't use rationals in calculation (performance boost)
    • [x/stake] Persist a map from addr->pubkey in the state since BeginBlock doesn't provide pubkeys.
    • [x/gov] #1781 Added tags sub-package, changed tags to use dash-case
    • [x/gov] #1688 Governance parameters are now stored in globalparams store
    • [x/gov] #1859 Slash validators who do not vote on a proposal
    • [x/gov] #1914 added TallyResult type that gets stored in Proposal after tallying is finished
  • SDK

    • [baseapp] Msgs are no longer run on CheckTx, removed ctx.IsCheckTx()
    • [baseapp] NewBaseApp constructor takes sdk.TxDecoder as argument instead of wire.Codec
    • [types] sdk.NewCoin takes sdk.Int, sdk.NewInt64Coin takes int64
    • [x/auth] Default TxDecoder can be found in x/auth rather than baseapp
    • [client] #1551: Refactored CoreContext to TxContext and QueryContext
      • Removed all tx related fields and logic (building & signing) to separate structure TxContext in x/auth/client/context
  • Tendermint

    • v0.22.5 -> See Tendermint PR
      • change all the cryptography imports.
    • v0.23.0 -> See Changelog and SDK PR
      • BeginBlock no longer includes crypto.Pubkey
      • use time.Time instead of int64 for time.

FEATURES

  • Gaia REST API (gaiacli advanced rest-server)

    • [x/gov] Can now query governance proposals by ProposalStatus
  • Gaia CLI (gaiacli)

    • [x/gov] added query-proposals command. Can filter by depositer, voter, and status
    • [x/stake] #2043 Added staking query cli cmds for unbonding-delegations and redelegations
  • Gaia

    • [networks] Added ansible scripts to upgrade seed nodes on a network
  • SDK

    • [x/mock/simulation] Randomized simulation framework
      • Modules specify invariants and operations, preferably in an x/[module]/simulation package
      • Modules can test random combinations of their own operations
      • Applications can integrate operations and invariants from modules together for an integrated simulation
      • Simulates Tendermint's algorithm for validator set updates
      • Simulates validator signing/downtime with a Markov chain, and occaisional double-signatures
      • Includes simulated operations & invariants for staking, slashing, governance, and bank modules
    • [store] #1481 Add transient store
    • [baseapp] Initialize validator set on ResponseInitChain
    • [baseapp] added BaseApp.Seal - ability to seal baseapp parameters once they've been set
    • [cosmos-sdk-cli] New cosmos-sdk-cli tool to quickly initialize a new SDK-based project
    • [scripts] added log output monitoring to DataDog using Ansible scripts

IMPROVEMENTS

  • Gaia

    • [spec] #967 Inflation and distribution specs drastically improved
    • [x/gov] #1773 Votes on a proposal can now be queried
    • [x/gov] Initial governance parameters can now be set in the genesis file
    • [x/stake] #1815 Sped up the processing of EditValidator txs.
    • [config] #1930 Transactions indexer indexes all tags by default.
    • [ci] #2057 Run make localnet-start on every commit and ensure network reaches at least 10 blocks
  • SDK

    • [baseapp] #1587 Allow any alphanumeric character in route
    • [baseapp] Allow any alphanumeric character in route
    • [tools] Remove rm -rf vendor/ from make get_vendor_deps
    • [x/auth] Recover ErrorOutOfGas panic in order to set sdk.Result attributes correctly
    • [x/auth] #2376 No longer runs any signature in a multi-msg, if any account/sequence number is wrong.
    • [x/auth] #2376 No longer charge gas for subtracting fees
    • [x/bank] Unit tests are now table-driven
    • [tests] Add tests to example apps in docs
    • [tests] Fixes ansible scripts to work with AWS too
    • [tests] #1806 CLI tests are now behind the build flag 'cli_test', so go test works on a new repo

BUG FIXES

  • Gaia CLI (gaiacli)

    • #1766 Fixes bad example for keybase identity
    • [x/stake] #2021 Fixed repeated CLI commands in staking
  • Gaia

    • [x/stake] #2077 Fixed invalid cliff power comparison
    • #1804 Fixes gen-tx genesis generation logic temporarily until upstream updates
    • #1799 Fix gaiad export
    • #1839 Fixed bug where intra-tx counter wasn't set correctly for genesis validators
    • [x/stake] #1858 Fixed bug where the cliff validator was not updated correctly
    • [tests] #1675 Fix non-deterministic test_cover
    • [tests] #1551 Fixed invalid LCD test JSON payload in doIBCTransfer
    • [basecoin] Fixes coin transaction failure and account query discussion
    • [x/gov] #1757 Fix VoteOption conversion to String
    • [x/stake] [#2083] Fix broken invariant of bonded validator power decrease

0.23.1

July 27th, 2018

BUG FIXES

  • [tendermint] Update to v0.22.8
    • [consensus, blockchain] Register the Evidence interface so it can be marshalled/unmarshalled by the blockchain and consensus reactors

0.23.0

July 25th, 2018

BREAKING CHANGES

  • [x/stake] Fixed the period check for the inflation calculation

IMPROVEMENTS

  • [cli] Improve error messages for all txs when the account doesn't exist
  • [tendermint] Update to v0.22.6
    • Updates the crypto imports/API (#1966)
  • [x/stake] Add revoked to human-readable validator

BUG FIXES

  • [tendermint] Update to v0.22.6
    • Fixes some security vulnerabilities reported in the Bug Bounty
  • #1797 Fix off-by-one error in slashing for downtime
  • #1787 Fixed bug where Tally fails due to revoked/unbonding validator
  • #1666 Add intra-tx counter to the genesis validators

0.22.0

July 16th, 2018

BREAKING CHANGES

  • [x/gov] Increase VotingPeriod, DepositPeriod, and MinDeposit

IMPROVEMENTS

  • [gaiad] Default config updates:
    • timeout_commit=5000 so blocks only made every 5s
    • prof_listen_addr=localhost:6060 so profile server is on by default
    • p2p.send_rate and p2p.recv_rate increases 10x (~5MB/s)

BUG FIXES

  • [server] Fix to actually overwrite default tendermint config

0.21.1

July 14th, 2018

BUG FIXES

  • [build] Added Ledger build support via LEDGER_ENABLED=true|false
    • True by default except when cross-compiling

0.21.0

July 13th, 2018

BREAKING CHANGES

  • [x/stake] Specify DelegatorAddress in MsgCreateValidator
  • [x/stake] Remove the use of global shares in the pool
    • Remove the use of PoolShares type in x/stake/validator type - replace with Status Tokens fields
  • [x/auth] NewAccountMapper takes a constructor instead of a prototype
  • [keys] Keybase.Update function now takes in a function to get the newpass, rather than the password itself

FEATURES

  • [baseapp] NewBaseApp now takes option functions as parameters

IMPROVEMENTS

  • Updated docs folder to accommodate cosmos.network docs project
  • [store] Added support for tracing multi-store operations via --trace-store
  • [store] Pruning strategy configurable with pruning flag on gaiad start

BUG FIXES

  • #1630 - redelegation nolonger removes tokens from the delegator liquid account
  • [keys] #1629 - updating password no longer asks for a new password when the first entered password was incorrect
  • [lcd] importing an account would create a random account
  • [server] 'gaiad init' command family now writes provided name as the moniker in config.toml
  • [build] Added Ledger build support via LEDGER_ENABLED=true|false
    • True by default except when cross-compiling

0.20.0

July 10th, 2018

BREAKING CHANGES

  • msg.GetSignBytes() returns sorted JSON (by key)
  • msg.GetSignBytes() field changes
    • msg_bytes -> msgs
    • fee_bytes -> fee
  • Update Tendermint to v0.22.2
    • Default ports changed from 466xx to 266xx
    • Amino JSON uses type names instead of prefix bytes
    • ED25519 addresses are the first 20-bytes of the SHA256 of the raw 32-byte pubkey (Instead of RIPEMD160)
    • go-crypto, abci, tmlibs have been merged into Tendermint
      • The keys sub-module is now in the SDK
    • Various other fixes
  • [auth] Signers of a transaction now only sign over their own account and sequence number
  • [auth] Removed MsgChangePubKey
  • [auth] Removed SetPubKey from account mapper
  • [auth] AltBytes renamed to Memo, now a string, max 100 characters, costs a bit of gas
  • [types] GetMsg() -> GetMsgs() as txs wrap many messages
  • [types] Removed GetMemo from Tx (it is still on StdTx)
  • [types] renamed rational.Evaluate to rational.Round{Int64, Int}
  • [types] Renamed sdk.Address to sdk.AccAddress/sdk.ValAddress
  • [types] sdk.AccAddress/sdk.ValAddress natively marshals to Bech32 in String, Sprintf (when used with %s), and MarshalJSON
  • [keys] Keybase and Ledger support from go-crypto merged into the SDK in the crypto folder
  • [cli] Rearranged commands under subcommands
  • [x/slashing] Update slashing for unbonding period
    • Slash according to power at time of infraction instead of power at time of discovery
    • Iterate through unbonding delegations & redelegations which contributed to an infraction, slash them proportional to their stake at the time
    • Add REST endpoint to unrevoke a validator previously revoked for downtime
    • Add REST endpoint to retrieve liveness signing information for a validator
  • [x/stake] Remove Tick and add EndBlocker
  • [x/stake] most index keys nolonger hold a value - inputs are rearranged to form the desired key
  • [x/stake] store-value for delegation, validator, ubd, and red do not hold duplicate information contained store-key
  • [x/stake] Introduce concept of unbonding for delegations and validators
    • gaiacli stake unbond replaced with gaiacli stake begin-unbonding
    • Introduced:
      • gaiacli stake complete-unbonding
      • gaiacli stake begin-redelegation
      • gaiacli stake complete-redelegation
  • [lcd] Switch key creation output to return bech32
  • [lcd] Removed shorthand CLI flags (a, c, n, o)
  • [gaiad] genesis transactions now use bech32 addresses / pubkeys
  • [gov] VoteStatus renamed to ProposalStatus
  • [gov] VoteOption, ProposalType, and ProposalStatus all marshal to string form in JSON

DEPRECATED

  • [cli] Deprecated --name flag in commands that send txs, in favor of --from

FEATURES

  • [x/gov] Implemented MVP
    • Supported proposal types: just binary (pass/fail) TextProposals for now
    • Proposals need deposits to be votable; deposits are burned if proposal fails
    • Delegators delegate votes to validator by default but can override (for their stake)
  • [gaiacli] Ledger support added
    • You can now use a Ledger with gaiacli --ledger for all key-related commands
    • Ledger keys can be named and tracked locally in the key DB
  • [gaiacli] You can now attach a simple text-only memo to any transaction, with the --memo flag
  • [gaiacli] added the following flags for commands that post transactions to the chain:
    • async -- send the tx without waiting for a tendermint response
    • json -- return the output in json format for increased readability
    • print-response -- return the tx response. (includes fields like gas cost)
  • [lcd] Queried TXs now include the tx hash to identify each tx
  • [mockapp] CompleteSetup() no longer takes a testing parameter
  • [x/bank] Add benchmarks for signing and delivering a block with a single bank transaction
    • Run with cd x/bank && go test --bench=.
  • [tools] make get_tools installs tendermint's linter, and gometalinter
  • [tools] Switch gometalinter to the stable version
  • [tools] Add the following linters
    • misspell
    • gofmt
    • go vet -composites=false
    • unconvert
    • ineffassign
    • errcheck
    • unparam
    • gocyclo
  • [tools] Added make format command to automate fixing misspell and gofmt errors.
  • [server] Default config now creates a profiler at port 6060, and increase p2p send/recv rates
  • [types] Switches internal representation of Int/Uint/Rat to use pointers
  • [types] Added MinInt and MinUint functions
  • [gaiad] unsafe_reset_all now resets addrbook.json
  • [democoin] add x/oracle, x/assoc
  • [tests] created a randomized testing framework.
    • Currently bank has limited functionality in the framework
    • Auth has its invariants checked within the framework
  • [tests] Add WaitForNextNBlocksTM helper method
  • [keys] New keys now have 24 word recovery keys, for heightened security
  • [keys] Add a temporary method for exporting the private key

IMPROVEMENTS

  • [x/bank] Now uses go-wire codec instead of 'encoding/json'
  • [x/auth] Now uses go-wire codec instead of 'encoding/json'
  • revised use of endblock and beginblock
  • [stake] module reorganized to include types and keeper package
  • [stake] keeper always loads the store (instead passing around which doesn't really boost efficiency)
  • [stake] edit-validator changes now can use the keyword [do-not-modify] to not modify unspecified --flag (aka won't set them to "" value)
  • [stake] offload more generic functionality from the handler into the keeper
  • [stake] clearer staking logic
  • [types] added common tag constants
  • [keys] improve error message when deleting non-existent key
  • [gaiacli] improve error messages on send and account commands
  • added contributing guidelines
  • [docs] Added commands for governance CLI on testnet README

BUG FIXES

  • [x/slashing] #1510 Unrevoked validators cannot un-revoke themselves
  • [x/stake] #1513 Validators slashed to zero power are unbonded and removed from the store
  • [x/stake] #1567 Validators decreased in power but not unbonded are now updated in Tendermint
  • [x/stake] error strings lower case
  • [x/stake] pool loose tokens now accounts for unbonding and unbonding tokens not associated with any validator
  • [x/stake] fix revoke bytes ordering (was putting revoked candidates at the top of the list)
  • [x/stake] bond count was counting revoked validators as bonded, fixed
  • [gaia] Added self delegation for validators in the genesis creation
  • [lcd] tests now don't depend on raw json text
  • Retry on HTTP request failure in CLI tests, add option to retry tests in Makefile
  • Fixed bug where chain ID wasn't passed properly in x/bank REST handler, removed Viper hack from ante handler
  • Fixed bug where democli account didn't decode the account data correctly
  • #872 - recovery phrases no longer all end in abandon
  • #887 - limit the size of rationals that can be passed in from user input
  • #1052 - Make all now works
  • #1258 - printing big.rat's can no longer overflow int64
  • #1259 - fix bug where certain tests that could have a nil pointer in defer
  • #1343 - fixed unnecessary parallelism in CI
  • #1353 - CLI: Show pool shares fractions in human-readable format
  • #1367 - set ChainID in InitChain
  • #1461 - CLI tests now no longer reset your local environment data
  • #1505 - gaiacli stake validator no longer panics if validator doesn't exist
  • #1565 - fix cliff validator persisting when validator set shrinks from max
  • #1287 - prevent zero power validators at genesis
  • [x/stake] fix bug when unbonding/redelegating using --shares-percent
  • #1010 - two validators can't bond with the same pubkey anymore

0.19.0

June 13, 2018

BREAKING CHANGES

  • msg.GetSignBytes() now returns bech32-encoded addresses in all cases
  • [lcd] REST end-points now include gas
  • sdk.Coin now uses sdk.Int, a big.Int wrapper with 256bit range cap

FEATURES

  • [x/auth] Added AccountNumbers to BaseAccount and StdTxs to allow for replay protection with account pruning
  • [lcd] added an endpoint to query for the SDK version of the connected node

IMPROVEMENTS

  • export command now writes current validator set for Tendermint
  • [tests] Application module tests now use a mock application
  • [gaiacli] Fix error message when account isn't found when running gaiacli account
  • [lcd] refactored to eliminate use of global variables, and interdependent tests
  • [tests] Added testnet command to gaiad
  • [tests] Added localnet targets to Makefile
  • [x/stake] More stake tests added to test ByPower index

FIXES

  • Fixes consensus fault on testnet - see postmortem here
  • [x/stake] bonded inflation removed, non-bonded inflation partially implemented
  • [lcd] Switch to bech32 for addresses on all human readable inputs and outputs
  • [lcd] fixed tx indexing/querying
  • [cli] Added --gas flag to specify transaction gas limit
  • [gaia] Registered slashing message handler
  • [x/slashing] Set signInfo.StartHeight correctly for newly bonded validators

FEATURES

  • [docs] Reorganize documentation
  • [docs] Update staking spec, create WIP spec for slashing, and fees

0.18.0

June 9, 2018

BREAKING CHANGES

  • [stake] candidate -> validator throughout (details in refactor comment)
  • [stake] delegate-bond -> delegation throughout
  • [stake] gaiacli query validator takes and argument instead of using the --address-candidate flag
  • [stake] introduce gaiacli query delegations
  • [stake] staking refactor
    • ValidatorsBonded store now take sorted pubKey-address instead of validator owner-address, is sorted like Tendermint by pk's address
    • store names more understandable
    • removed temporary ToKick store, just needs a local map!
    • removed distinction between candidates and validators
      • everything is now a validator
      • only validators with a status == bonded are actively validating/receiving rewards
    • Introduction of Unbonding fields, lowlevel logic throughout (not fully implemented with queue)
    • Introduction of PoolShares type within validators, replaces three rational fields (BondedShares, UnbondingShares, UnbondedShares
  • [x/auth] move stuff specific to auth anteHandler to the auth module rather than the types folder. This includes:
    • StdTx (and its related stuff i.e. StdSignDoc, etc)
    • StdFee
    • StdSignature
    • Account interface
    • Related to this organization, I also:
  • [x/auth] got rid of AccountMapper interface (in favor of the struct already in auth module)
  • [x/auth] removed the FeeHandler function from the AnteHandler, Replaced with FeeKeeper
  • [x/auth] Removed GetSignatures() from Tx interface (as different Tx styles might use something different than StdSignature)
  • [store] Removed SubspaceIterator and ReverseSubspaceIterator from KVStore interface and replaced them with helper functions in /types
  • [cli] rearranged commands under subcommands
  • [stake] remove Tick and add EndBlocker
  • Switch to bech32cosmos on all human readable inputs and outputs

FEATURES

  • [x/auth] Added ability to change pubkey to auth module
  • [baseapp] baseapp now has settable functions for filtering peers by address/port & public key
  • [sdk] Gas consumption is now measured as transactions are executed
    • Transactions which run out of gas stop execution and revert state changes
    • A "simulate" query has been added to determine how much gas a transaction will need
    • Modules can include their own gas costs for execution of particular message types
  • [stake] Seperation of fee distribution to a new module
  • [stake] Creation of a validator/delegation generics in /types
  • [stake] Helper Description of the store in x/stake/store.md
  • [stake] removed use of caches in the stake keeper
  • [stake] Added REST API
  • [Makefile] Added terraform/ansible playbooks to easily create remote testnets on Digital Ocean

BUG FIXES

  • [stake] staking delegator shares exchange rate now relative to equivalent-bonded-tokens the validator has instead of bonded tokens ^ this is important for unbonded validators in the power store!
  • [cli] fixed cli-bash tests
  • [ci] added cli-bash tests
  • [basecoin] updated basecoin for stake and slashing
  • [docs] fixed references to old cli commands
  • [docs] Downgraded Swagger to v2 for downstream compatibility
  • auto-sequencing transactions correctly
  • query sequence via account store
  • fixed duplicate pub_key in stake.Validator
  • Auto-sequencing now works correctly
  • [gaiacli] Fix error message when account isn't found when running gaiacli account

0.17.5

June 5, 2018

Update to Tendermint v0.19.9 (Fix evidence reactor, mempool deadlock, WAL panic, memory leak)

0.17.4

May 31, 2018

Update to Tendermint v0.19.7 (WAL fixes and more)

0.17.3

May 29, 2018

Update to Tendermint v0.19.6 (fix fast-sync halt)

0.17.5

June 5, 2018

Update to Tendermint v0.19.9 (Fix evidence reactor, mempool deadlock, WAL panic, memory leak)

0.17.4

May 31, 2018

Update to Tendermint v0.19.7 (WAL fixes and more)

0.17.3

May 29, 2018

Update to Tendermint v0.19.6 (fix fast-sync halt)

0.17.2

May 20, 2018

Update to Tendermint v0.19.5 (reduce WAL use, bound the mempool and some rpcs, improve logging)

0.17.1 (May 17, 2018)

Update to Tendermint v0.19.4 (fixes a consensus bug and improves logging)

0.17.0 (May 15, 2018)

BREAKING CHANGES

  • [stake] MarshalJSON -> MarshalBinaryLengthPrefixed
  • Queries against the store must be prefixed with the path "/store"

FEATURES

  • [gaiacli] Support queries for candidates, delegator-bonds
  • [gaiad] Added gaiad export command to export current state to JSON
  • [x/bank] Tx tags with sender/recipient for indexing & later retrieval
  • [x/stake] Tx tags with delegator/candidate for delegation & unbonding, and candidate info for declare candidate / edit validator

IMPROVEMENTS

  • [gaiad] Update for Tendermint v0.19.3 (improve /dump_consensus_state and add /consensus_state)
  • [spec/ibc] Added spec!
  • [spec/stake] Cleanup structure, include details about slashing and auto-unbonding
  • [spec/governance] Fixup some names and pseudocode
  • NOTE: specs are still a work-in-progress ...

BUG FIXES

  • Auto-sequencing now works correctly

0.16.0 (May 14th, 2018)

BREAKING CHANGES

  • Move module REST/CLI packages to x/[module]/client/rest and x/[module]/client/cli
  • Gaia simple-staking bond and unbond functions replaced
  • [stake] Delegator bonds now store the height at which they were updated
  • All module keepers now require a codespace, see basecoin or democoin for usage
  • Many changes to names throughout
    • Type as a prefix naming convention applied (ex. BondMsg -> MsgBond)
    • Removed redundancy in names (ex. stake.StakingKeeper -> stake.Keeper)
  • Removed SealedAccountMapper
  • gaiad init now requires use of --name flag
  • Removed Get from Msg interface
  • types/rational now extends big.Rat

FEATURES:

  • Gaia stake commands include, CreateValidator, EditValidator, Delegate, Unbond
  • MountStoreWithDB without providing a custom store works.
  • Repo is now lint compliant / GoMetaLinter with tendermint-lint integrated into CI
  • Better key output, pubkey go-amino hex bytes now output by default
  • gaiad init overhaul
    • Create genesis transactions with gaiad init gen-tx
    • New genesis account keys are automatically added to the client keybase (introduce --client-home flag)
    • Initialize with genesis txs using --gen-txs flag
  • Context now has access to the application-configured logger
  • Add (non-proof) subspace query helper functions
  • Add more staking query functions: candidates, delegator-bonds

BUG FIXES

  • Gaia now uses stake, ported from github.com/cosmos/gaia

0.15.1 (April 29, 2018)

IMPROVEMENTS:

  • Update Tendermint to v0.19.1 (includes many rpc fixes)

0.15.0 (April 29, 2018)

NOTE: v0.15.0 is a large breaking change that updates the encoding scheme to use Amino.

For details on how this changes encoding for public keys and addresses, see the docs.

BREAKING CHANGES

  • Remove go-wire, use go-amino
  • [store] Add SubspaceIterator and ReverseSubspaceIterator to KVStore interface
  • [basecoin] NewBasecoinApp takes a dbm.DB and uses namespaced DBs for substores

FEATURES:

  • Add CacheContext
  • Add auto sequencing to client
  • Add FeeHandler to ante handler

BUG FIXES

  • MountStoreWithDB without providing a custom store works.

0.14.1 (April 9, 2018)

BUG FIXES

  • [gaiacli] Fix all commands (just a duplicate of basecli for now)

0.14.0 (April 9, 2018)

BREAKING CHANGES:

  • [client/builder] Renamed to client/core and refactored to use a CoreContext struct
  • [server] Refactor to improve useability and de-duplicate code
  • [types] Result.ToQuery -> Error.QueryResult
  • [makefile] make build and make install only build/install gaiacli and gaiad. Use make build_examples and make install_examples for basecoind/basecli and democoind/democli
  • [staking] Various fixes/improvements

FEATURES:

  • [democoin] Added Proof-of-Work module

BUG FIXES

  • [client] Reuse Tendermint RPC client to avoid excessive open files
  • [client] Fix setting log level
  • [basecoin] Sort coins in genesis

0.13.1 (April 3, 2018)

BUG FIXES

  • [x/ibc] Fix CLI and relay for IBC txs
  • [x/stake] Various fixes/improvements

0.13.0 (April 2, 2018)

BREAKING CHANGES

  • [basecoin] Remove cool/sketchy modules -> moved to new democoin
  • [basecoin] NewBasecoinApp takes a map[string]dbm.DB as temporary measure to allow mounting multiple stores with their own DB until they can share one
  • [x/staking] Renamed to simplestake
  • [builder] Functions don't take passphrase as argument
  • [server] GenAppParams returns generated seed and address
  • [basecoind] init command outputs JSON of everything necessary for testnet
  • [basecoind] basecoin.db -> data/basecoin.db
  • [basecli] data/keys.db -> keys/keys.db

FEATURES

  • [types] Coin supports direct arithmetic operations
  • [basecoind] Add show_validator and show_node_id commands
  • [x/stake] Initial merge of full staking module!
  • [democoin] New example application to demo custom modules

IMPROVEMENTS

  • [makefile] make install
  • [testing] Use /tmp for directories so they don't get left in the repo

BUG FIXES

  • [basecoin] Allow app to be restarted
  • [makefile] Fix build on Windows
  • [basecli] Get confirmation before overriding key with same name

0.12.0 (March 27 2018)

BREAKING CHANGES

  • Revert to old go-wire for now
  • glide -> godep
  • [types] ErrBadNonce -> ErrInvalidSequence
  • [types] Replace tx.GetFeePayer with FeePayer(tx) - returns the first signer
  • [types] NewStdTx takes the Fee
  • [types] ParseAccount -> AccountDecoder; ErrTxParse -> ErrTxDecoder
  • [x/auth] AnteHandler deducts fees
  • [x/bank] Move some errors to types
  • [x/bank] Remove sequence and signature from Input

FEATURES

  • [examples/basecoin] New cool module to demonstrate use of state and custom transactions
  • [basecoind] show_node_id command
  • [lcd] Implement the Light Client Daemon and endpoints
  • [types/stdlib] Queue functionality
  • [store] Subspace iterator on IAVLTree
  • [types] StdSignDoc is the document that gets signed (chainid, msg, sequence, fee)
  • [types] CodeInvalidPubKey
  • [types] StdFee, and StdTx takes the StdFee
  • [specs] Progression of MVPs for IBC
  • [x/ibc] Initial shell of IBC functionality (no proofs)
  • [x/simplestake] Simple staking module with bonding/unbonding

IMPROVEMENTS

  • Lots more tests!
  • [client/builder] Helpers for forming and signing transactions
  • [types] sdk.Address
  • [specs] Staking

BUG FIXES

  • [x/auth] Fix setting pubkey on new account
  • [x/auth] Require signatures to include the sequences
  • [baseapp] Dont panic on nil handler
  • [basecoin] Check for empty bytes in account and tx

0.11.0 (March 1, 2017)

BREAKING CHANGES

  • [examples] dummy -> kvstore
  • [examples] Remove gaia
  • [examples/basecoin] MakeTxCodec -> MakeCodec
  • [types] CommitMultiStore interface has new GetCommitKVStore(key StoreKey) CommitKVStore method

FEATURES

  • [examples/basecoin] CLI for basecli and basecoind (!)
  • [baseapp] router.AddRoute returns Router

IMPROVEMENTS

  • [baseapp] Run msg handlers on CheckTx
  • [docs] Add spec for REST API
  • [all] More tests!

BUG FIXES

  • [baseapp] Fix panic on app restart
  • [baseapp] InitChain does not call Commit
  • [basecoin] Remove IBCStore because mounting multiple stores is currently broken

0.10.0 (February 20, 2017)

BREAKING CHANGES

  • [baseapp] NewBaseApp(logger, db)
  • [baseapp] NewContext(isCheckTx, header)
  • [x/bank] CoinMapper -> CoinKeeper

FEATURES

  • [examples/gaia] Mock CLI !
  • [baseapp] InitChainer, BeginBlocker, EndBlocker
  • [baseapp] MountStoresIAVL

IMPROVEMENTS

  • [docs] Various improvements.
  • [basecoin] Much simpler :)

BUG FIXES

  • [baseapp] initialize and reset msCheck and msDeliver properly

0.9.0 (February 13, 2017)

BREAKING CHANGES

  • Massive refactor. Basecoin works. Still needs <3

0.8.1

  • Updates for dependencies

0.8.0 (December 18, 2017)

  • Updates for dependencies

0.7.1 (October 11, 2017)

IMPROVEMENTS:

  • server/commands: GetInitCmd takes list of options

0.7.0 (October 11, 2017)

BREAKING CHANGES:

  • Everything has changed, and it's all about to change again, so don't bother using it yet!

0.6.2 (July 27, 2017)

IMPROVEMENTS:

  • auto-test all tutorials to detect breaking changes
  • move deployment scripts from /scripts to /publish for clarity

BUG FIXES:

  • basecoin init ensures the address in genesis.json is valid
  • fix bug that certain addresses couldn't receive ibc packets

0.6.1 (June 28, 2017)

Make lots of small cli fixes that arose when people were using the tools for the testnet.

IMPROVEMENTS:

  • basecoin
    • basecoin start supports all flags that tendermint node does, such as --rpc.laddr, --p2p.seeds, and --p2p.skip_upnp
    • fully supports --log_level and --trace for logger configuration
    • merkleeyes no longers spams the logs... unless you want it
      • Example: basecoin start --log_level="merkleeyes:info,state:info,*:error"
      • Example: basecoin start --log_level="merkleeyes:debug,state:info,*:error"
  • basecli
    • basecli init is more intelligent and only complains if there really was a connected chain, not just random files
    • support localhost:46657 or http://localhost:46657 format for nodes, not just tcp://localhost:46657
    • Add --genesis to init to specify chain-id and validator hash
      • Example: basecli init --node=localhost:46657 --genesis=$HOME/.basecoin/genesis.json
    • basecli rpc has a number of methods to easily accept tendermint rpc, and verifies what it can

BUG FIXES:

  • basecli
    • basecli query account accepts hex account address with or without 0x prefix
    • gives error message when running commands on an unitialized chain, rather than some unintelligable panic

0.6.0 (June 22, 2017)

Make the basecli command the only way to use client-side, to enforce best security practices. Lots of enhancements to get it up to production quality.

BREAKING CHANGES:

  • ./cmd/commands -> ./cmd/basecoin/commands
  • basecli
    • basecli proof state get -> basecli query key
    • basecli proof tx get -> basecli query tx
    • basecli proof state get --app=account -> basecli query account
    • use --chain-id not --chainid for consistency
    • update to use --trace not --debug for stack traces on errors
    • complete overhaul on how tx and query subcommands are added. (see counter or trackomatron for examples)
    • no longer supports counter app (see new countercli)
  • basecoin
    • basecoin init takes an argument, an address to allocate funds to in the genesis
    • removed key2.json
    • removed all client side functionality from it (use basecli now for proofs)
      • no tx subcommand
      • no query subcommand
      • no account (query) subcommand
      • a few other random ones...
    • enhanced relay subcommand
      • relay start did what relay used to do
      • relay init registers both chains on one another (to set it up so relay start just works)
  • docs
    • removed example-plugin, put counter inside docs/guide
  • app
    • Implements ABCI handshake by proxying merkleeyes.Info()

IMPROVEMENTS:

  • basecoin init support --chain-id
  • intergrates tendermint 0.10.0 (not the rc-2, but the real thing)
  • commands return error code (1) on failure for easier script testing
  • add reset_all to basecli, and never delete keys on init
  • new shutil based unit tests, with better coverage of the cli actions
  • just make fresh when things are getting stale ;)

BUG FIXES:

  • app: no longer panics on missing app_options in genesis (thanks, anton)
  • docs: updated all docs... again
  • ibc: fix panic on getting BlockID from commit without 100% precommits (still a TODO)

0.5.2 (June 2, 2017)

BUG FIXES:

  • fix parsing of the log level from Tendermint config (#97)

0.5.1 (May 30, 2017)

BUG FIXES:

  • fix ibc demo app to use proper tendermint flags, 0.10.0-rc2 compatibility
  • Make sure all cli uses new json.Marshal not wire.JSONBytes

0.5.0 (May 27, 2017)

BREAKING CHANGES:

  • only those related to the tendermint 0.9 -> 0.10 upgrade

IMPROVEMENTS:

  • basecoin cli
    • integrates tendermint 0.10.0 and unifies cli (init, unsafe_reset_all, ...)
    • integrate viper, all command line flags can also be defined in environmental variables or config.toml
  • genesis file
    • you can define accounts with either address or pub_key
    • sorts coins for you, so no silent errors if not in alphabetical order
  • light-client integration
    • no longer must you trust the node you connect to, prove everything!
    • new basecli command
    • integrated key management, stored encrypted locally
    • tracks validator set changes and proves everything from one initial validator seed
    • basecli proof state gets complete proofs for any abci state
    • basecli proof tx gets complete proof where a tx was stored in the chain
    • basecli proxy exposes tendermint rpc, but only passes through results after doing complete verification

BUG FIXES:

  • no more silently ignored error with invalid coin names (eg. "17.22foo coin" used to parse as "17 foo", not warning/error)

0.4.1 (April 26, 2017)

BUG FIXES:

  • Fix bug in basecoin unsafe_reset_X where the priv_validator.json was not being reset

0.4.0 (April 21, 2017)

BREAKING CHANGES:

  • CLI now uses Cobra, which forced changes to some of the flag names and orderings

IMPROVEMENTS:

  • basecoin init doesn't generate error if already initialized
  • Much more testing

0.3.1 (March 23, 2017)

IMPROVEMENTS:

  • CLI returns exit code 1 and logs error before exiting

0.3.0 (March 23, 2017)

BREAKING CHANGES:

  • Remove --data flag and use BCHOME to set the home directory (defaults to ~/.basecoin)
  • Remove --in-proc flag and start Tendermint in-process by default (expect Tendermint files in $BCHOME/tendermint). To start just the ABCI app/server, use basecoin start --without-tendermint.
  • Consolidate genesis files so the Basecoin genesis is an object under app_options in Tendermint genesis. For instance:
{
  "app_hash": "",
  "chain_id": "foo_bar_chain",
  "genesis_time": "0001-01-01T00:00:00.000Z",
  "validators": [
    {
      "amount": 10,
      "name": "",
      "pub_key": [
	1,
	"7B90EA87E7DC0C7145C8C48C08992BE271C7234134343E8A8E8008E617DE7B30"
      ]
    }
  ],
  "app_options": {
    "accounts": [{
      "pub_key": {
        "type": "ed25519",
        "data": "6880db93598e283a67c4d88fc67a8858aa2de70f713fe94a5109e29c137100c2"
      },
      "coins": [
        {
          "denom": "blank",
          "amount": 12345
        },
        {
          "denom": "ETH",
          "amount": 654321
        }
      ]
    }],
    "plugin_options": ["plugin1/key1", "value1", "plugin1/key2", "value2"]
  }
}

Note the array of key-value pairs is now under app_options.plugin_options while the app_options themselves are well formed. We also changed chainID to chain_id and consolidated to have just one of them.

FEATURES:

  • Introduce basecoin init and basecoin unsafe_reset_all

0.2.0 (March 6, 2017)

BREAKING CHANGES:

  • Update to ABCI v0.4.0 and Tendermint v0.9.0
  • Coins are specified on the CLI as Xcoin, eg. 5gold
  • Cost is now Fee

FEATURES:

  • CLI for sending transactions and querying the state, designed to be easily extensible as plugins are implemented
  • Run Basecoin in-process with Tendermint
  • Add /account path in Query
  • IBC plugin for InterBlockchain Communication
  • Demo script of IBC between two chains

IMPROVEMENTS:

  • Use new Tendermint /commit endpoint for crafting IBC transactions
  • More unit tests
  • Use go-crypto S structs and go-data for more standard JSON
  • Demo uses fewer sleeps

BUG FIXES:

  • Various little fixes in coin arithmetic
  • More commit validation in IBC
  • Return results from transactions

PreHistory

January 14-18, 2017
  • Update to Tendermint v0.8.0
  • Cleanup a bit and release blog post
September 22, 2016
  • Basecoin compiles again