mirror of
https://github.com/0glabs/0g-chain.git
synced 2024-12-27 00:35:18 +00:00
614d4e40fe
* Update cometbft, cosmos, ethermint, and ibc-go * Replace github.com/tendermint/tendermint by github.com/cometbft/cometbft * Replace github.com/tendermint/tm-db by github.com/cometbft/cometbft-db * Replace gogo/protobuf with cosmos/gogoproto & simapp replacement * Replace cosmos-sdk/simapp/helpers with cosmos-sdk/testutil/sims * Remove no longer used simulations * Replace ibchost with ibcexported See https://github.com/cosmos/ibc-go/blob/v7.2.2/docs/migrations/v6-to-v7.md#ibc-module-constants * Add new consensus params keeper * Add consensus keeper to blockers * Fix keeper and module issues in app.go * Add IsSendEnabledCoins and update SetParams interface changes * Fix protobuf build for cosmos 47 (#1800) * fix cp errors by using -f; fix lint by only linting our proto dir; and use proofs.proto directly from ics23 for ibc-go v7 * run proto-all; commit updated third party deps and swagger changes * regenerate proto files * use correct gocosmos build plugin for buf * re-gen all protobuf files to update paths for new gocosmos plugin * update protoc and buf to latest versions * fix staking keeper issues in app.go * update tally handler for gov changes * chain id fix and flag fixes * update deps for cometbft 47.7 upgrade * remove all module legacy queriers * update stakingKeeper to pointer * Replace ModuleCdc from govv1beta1 to govcodec * remove simulations * abci.LastCommitInfo → abci.CommitInfo * Remove unused code in keys.go * simapp.MakeTestEncodingConfig -> moduletestutil.MakeTestEncodingConfi * Fix chain id issues in tests * Fix remaining unit test issues * Update changelog for upgrade * Fix e2e tests using updated kvtool * Update protonet to v47 compatible genesis * Bump cometbft-db to v0.9.1-kava.1 * Update kvtool * Remove extra changelog * Fix merged rocksdb issues * go mod cleanup * Bump cometbft-db to v9 and go to 1.21 * Bump rocksdb version to v8.10.0 * Update kvtool to latest version * Update gin to v1.9.0 * Use ibctm.ModuleName in app_test * Fallback to genesis chain id instead of client toml * Remove all simulations * Fix cdp migrations issue with v47 * Update dependencies to correct tags --------- Co-authored-by: Nick DeLuca <nickdeluca08@gmail.com>
406 lines
18 KiB
Protocol Buffer
406 lines
18 KiB
Protocol Buffer
syntax = "proto3";
|
|
package cosmos.staking.v1beta1;
|
|
|
|
import "gogoproto/gogo.proto";
|
|
import "google/protobuf/any.proto";
|
|
import "google/protobuf/duration.proto";
|
|
import "google/protobuf/timestamp.proto";
|
|
|
|
import "cosmos_proto/cosmos.proto";
|
|
import "cosmos/base/v1beta1/coin.proto";
|
|
import "amino/amino.proto";
|
|
import "tendermint/types/types.proto";
|
|
import "tendermint/abci/types.proto";
|
|
|
|
option go_package = "github.com/cosmos/cosmos-sdk/x/staking/types";
|
|
|
|
// HistoricalInfo contains header and validator information for a given block.
|
|
// It is stored as part of staking module's state, which persists the `n` most
|
|
// recent HistoricalInfo
|
|
// (`n` is set by the staking module's `historical_entries` parameter).
|
|
message HistoricalInfo {
|
|
tendermint.types.Header header = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true];
|
|
repeated Validator valset = 2 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true];
|
|
}
|
|
|
|
// CommissionRates defines the initial commission rates to be used for creating
|
|
// a validator.
|
|
message CommissionRates {
|
|
option (gogoproto.equal) = true;
|
|
option (gogoproto.goproto_stringer) = false;
|
|
|
|
// rate is the commission rate charged to delegators, as a fraction.
|
|
string rate = 1 [
|
|
(cosmos_proto.scalar) = "cosmos.Dec",
|
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec",
|
|
(gogoproto.nullable) = false
|
|
];
|
|
// max_rate defines the maximum commission rate which validator can ever charge, as a fraction.
|
|
string max_rate = 2 [
|
|
(cosmos_proto.scalar) = "cosmos.Dec",
|
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec",
|
|
(gogoproto.nullable) = false
|
|
];
|
|
// max_change_rate defines the maximum daily increase of the validator commission, as a fraction.
|
|
string max_change_rate = 3 [
|
|
(cosmos_proto.scalar) = "cosmos.Dec",
|
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec",
|
|
(gogoproto.nullable) = false
|
|
];
|
|
}
|
|
|
|
// Commission defines commission parameters for a given validator.
|
|
message Commission {
|
|
option (gogoproto.equal) = true;
|
|
option (gogoproto.goproto_stringer) = false;
|
|
|
|
// commission_rates defines the initial commission rates to be used for creating a validator.
|
|
CommissionRates commission_rates = 1
|
|
[(gogoproto.embed) = true, (gogoproto.nullable) = false, (amino.dont_omitempty) = true];
|
|
// update_time is the last time the commission rate was changed.
|
|
google.protobuf.Timestamp update_time = 2
|
|
[(gogoproto.nullable) = false, (amino.dont_omitempty) = true, (gogoproto.stdtime) = true];
|
|
}
|
|
|
|
// Description defines a validator description.
|
|
message Description {
|
|
option (gogoproto.equal) = true;
|
|
option (gogoproto.goproto_stringer) = false;
|
|
|
|
// moniker defines a human-readable name for the validator.
|
|
string moniker = 1;
|
|
// identity defines an optional identity signature (ex. UPort or Keybase).
|
|
string identity = 2;
|
|
// website defines an optional website link.
|
|
string website = 3;
|
|
// security_contact defines an optional email for security contact.
|
|
string security_contact = 4;
|
|
// details define other optional details.
|
|
string details = 5;
|
|
}
|
|
|
|
// Validator defines a validator, together with the total amount of the
|
|
// Validator's bond shares and their exchange rate to coins. Slashing results in
|
|
// a decrease in the exchange rate, allowing correct calculation of future
|
|
// undelegations without iterating over delegators. When coins are delegated to
|
|
// this validator, the validator is credited with a delegation whose number of
|
|
// bond shares is based on the amount of coins delegated divided by the current
|
|
// exchange rate. Voting power can be calculated as total bonded shares
|
|
// multiplied by exchange rate.
|
|
message Validator {
|
|
option (gogoproto.equal) = false;
|
|
option (gogoproto.goproto_stringer) = false;
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
// operator_address defines the address of the validator's operator; bech encoded in JSON.
|
|
string operator_address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
|
|
// consensus_pubkey is the consensus public key of the validator, as a Protobuf Any.
|
|
google.protobuf.Any consensus_pubkey = 2 [(cosmos_proto.accepts_interface) = "cosmos.crypto.PubKey"];
|
|
// jailed defined whether the validator has been jailed from bonded status or not.
|
|
bool jailed = 3;
|
|
// status is the validator status (bonded/unbonding/unbonded).
|
|
BondStatus status = 4;
|
|
// tokens define the delegated tokens (incl. self-delegation).
|
|
string tokens = 5 [
|
|
(cosmos_proto.scalar) = "cosmos.Int",
|
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
|
(gogoproto.nullable) = false
|
|
];
|
|
// delegator_shares defines total shares issued to a validator's delegators.
|
|
string delegator_shares = 6 [
|
|
(cosmos_proto.scalar) = "cosmos.Dec",
|
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec",
|
|
(gogoproto.nullable) = false
|
|
];
|
|
// description defines the description terms for the validator.
|
|
Description description = 7 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true];
|
|
// unbonding_height defines, if unbonding, the height at which this validator has begun unbonding.
|
|
int64 unbonding_height = 8;
|
|
// unbonding_time defines, if unbonding, the min time for the validator to complete unbonding.
|
|
google.protobuf.Timestamp unbonding_time = 9
|
|
[(gogoproto.nullable) = false, (amino.dont_omitempty) = true, (gogoproto.stdtime) = true];
|
|
// commission defines the commission parameters.
|
|
Commission commission = 10 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true];
|
|
// min_self_delegation is the validator's self declared minimum self delegation.
|
|
//
|
|
// Since: cosmos-sdk 0.46
|
|
string min_self_delegation = 11 [
|
|
(cosmos_proto.scalar) = "cosmos.Int",
|
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
|
(gogoproto.nullable) = false
|
|
];
|
|
|
|
// strictly positive if this validator's unbonding has been stopped by external modules
|
|
int64 unbonding_on_hold_ref_count = 12;
|
|
|
|
// list of unbonding ids, each uniquely identifing an unbonding of this validator
|
|
repeated uint64 unbonding_ids = 13;
|
|
}
|
|
|
|
// BondStatus is the status of a validator.
|
|
enum BondStatus {
|
|
option (gogoproto.goproto_enum_prefix) = false;
|
|
|
|
// UNSPECIFIED defines an invalid validator status.
|
|
BOND_STATUS_UNSPECIFIED = 0 [(gogoproto.enumvalue_customname) = "Unspecified"];
|
|
// UNBONDED defines a validator that is not bonded.
|
|
BOND_STATUS_UNBONDED = 1 [(gogoproto.enumvalue_customname) = "Unbonded"];
|
|
// UNBONDING defines a validator that is unbonding.
|
|
BOND_STATUS_UNBONDING = 2 [(gogoproto.enumvalue_customname) = "Unbonding"];
|
|
// BONDED defines a validator that is bonded.
|
|
BOND_STATUS_BONDED = 3 [(gogoproto.enumvalue_customname) = "Bonded"];
|
|
}
|
|
|
|
// ValAddresses defines a repeated set of validator addresses.
|
|
message ValAddresses {
|
|
option (gogoproto.goproto_stringer) = false;
|
|
option (gogoproto.stringer) = true;
|
|
|
|
repeated string addresses = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
|
|
}
|
|
|
|
// DVPair is struct that just has a delegator-validator pair with no other data.
|
|
// It is intended to be used as a marshalable pointer. For example, a DVPair can
|
|
// be used to construct the key to getting an UnbondingDelegation from state.
|
|
message DVPair {
|
|
option (gogoproto.equal) = false;
|
|
option (gogoproto.goproto_getters) = false;
|
|
option (gogoproto.goproto_stringer) = false;
|
|
|
|
string delegator_address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
|
|
string validator_address = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"];
|
|
}
|
|
|
|
// DVPairs defines an array of DVPair objects.
|
|
message DVPairs {
|
|
repeated DVPair pairs = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true];
|
|
}
|
|
|
|
// DVVTriplet is struct that just has a delegator-validator-validator triplet
|
|
// with no other data. It is intended to be used as a marshalable pointer. For
|
|
// example, a DVVTriplet can be used to construct the key to getting a
|
|
// Redelegation from state.
|
|
message DVVTriplet {
|
|
option (gogoproto.equal) = false;
|
|
option (gogoproto.goproto_getters) = false;
|
|
option (gogoproto.goproto_stringer) = false;
|
|
|
|
string delegator_address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
|
|
string validator_src_address = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"];
|
|
string validator_dst_address = 3 [(cosmos_proto.scalar) = "cosmos.AddressString"];
|
|
}
|
|
|
|
// DVVTriplets defines an array of DVVTriplet objects.
|
|
message DVVTriplets {
|
|
repeated DVVTriplet triplets = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true];
|
|
}
|
|
|
|
// Delegation represents the bond with tokens held by an account. It is
|
|
// owned by one delegator, and is associated with the voting power of one
|
|
// validator.
|
|
message Delegation {
|
|
option (gogoproto.equal) = false;
|
|
option (gogoproto.goproto_getters) = false;
|
|
option (gogoproto.goproto_stringer) = false;
|
|
|
|
// delegator_address is the bech32-encoded address of the delegator.
|
|
string delegator_address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
|
|
// validator_address is the bech32-encoded address of the validator.
|
|
string validator_address = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"];
|
|
// shares define the delegation shares received.
|
|
string shares = 3 [
|
|
(cosmos_proto.scalar) = "cosmos.Dec",
|
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec",
|
|
(gogoproto.nullable) = false
|
|
];
|
|
}
|
|
|
|
// UnbondingDelegation stores all of a single delegator's unbonding bonds
|
|
// for a single validator in an time-ordered list.
|
|
message UnbondingDelegation {
|
|
option (gogoproto.equal) = false;
|
|
option (gogoproto.goproto_getters) = false;
|
|
option (gogoproto.goproto_stringer) = false;
|
|
|
|
// delegator_address is the bech32-encoded address of the delegator.
|
|
string delegator_address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
|
|
// validator_address is the bech32-encoded address of the validator.
|
|
string validator_address = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"];
|
|
// entries are the unbonding delegation entries.
|
|
repeated UnbondingDelegationEntry entries = 3
|
|
[(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; // unbonding delegation entries
|
|
}
|
|
|
|
// UnbondingDelegationEntry defines an unbonding object with relevant metadata.
|
|
message UnbondingDelegationEntry {
|
|
option (gogoproto.equal) = true;
|
|
option (gogoproto.goproto_stringer) = false;
|
|
|
|
// creation_height is the height which the unbonding took place.
|
|
int64 creation_height = 1;
|
|
// completion_time is the unix time for unbonding completion.
|
|
google.protobuf.Timestamp completion_time = 2
|
|
[(gogoproto.nullable) = false, (amino.dont_omitempty) = true, (gogoproto.stdtime) = true];
|
|
// initial_balance defines the tokens initially scheduled to receive at completion.
|
|
string initial_balance = 3 [
|
|
(cosmos_proto.scalar) = "cosmos.Int",
|
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
|
(gogoproto.nullable) = false
|
|
];
|
|
// balance defines the tokens to receive at completion.
|
|
string balance = 4 [
|
|
(cosmos_proto.scalar) = "cosmos.Int",
|
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
|
(gogoproto.nullable) = false
|
|
];
|
|
// Incrementing id that uniquely identifies this entry
|
|
uint64 unbonding_id = 5;
|
|
|
|
// Strictly positive if this entry's unbonding has been stopped by external modules
|
|
int64 unbonding_on_hold_ref_count = 6;
|
|
}
|
|
|
|
// RedelegationEntry defines a redelegation object with relevant metadata.
|
|
message RedelegationEntry {
|
|
option (gogoproto.equal) = true;
|
|
option (gogoproto.goproto_stringer) = false;
|
|
|
|
// creation_height defines the height which the redelegation took place.
|
|
int64 creation_height = 1;
|
|
// completion_time defines the unix time for redelegation completion.
|
|
google.protobuf.Timestamp completion_time = 2
|
|
[(gogoproto.nullable) = false, (amino.dont_omitempty) = true, (gogoproto.stdtime) = true];
|
|
// initial_balance defines the initial balance when redelegation started.
|
|
string initial_balance = 3 [
|
|
(cosmos_proto.scalar) = "cosmos.Int",
|
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
|
(gogoproto.nullable) = false
|
|
];
|
|
// shares_dst is the amount of destination-validator shares created by redelegation.
|
|
string shares_dst = 4 [
|
|
(cosmos_proto.scalar) = "cosmos.Dec",
|
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec",
|
|
(gogoproto.nullable) = false
|
|
];
|
|
// Incrementing id that uniquely identifies this entry
|
|
uint64 unbonding_id = 5;
|
|
|
|
// Strictly positive if this entry's unbonding has been stopped by external modules
|
|
int64 unbonding_on_hold_ref_count = 6;
|
|
}
|
|
|
|
// Redelegation contains the list of a particular delegator's redelegating bonds
|
|
// from a particular source validator to a particular destination validator.
|
|
message Redelegation {
|
|
option (gogoproto.equal) = false;
|
|
option (gogoproto.goproto_getters) = false;
|
|
option (gogoproto.goproto_stringer) = false;
|
|
|
|
// delegator_address is the bech32-encoded address of the delegator.
|
|
string delegator_address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
|
|
// validator_src_address is the validator redelegation source operator address.
|
|
string validator_src_address = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"];
|
|
// validator_dst_address is the validator redelegation destination operator address.
|
|
string validator_dst_address = 3 [(cosmos_proto.scalar) = "cosmos.AddressString"];
|
|
// entries are the redelegation entries.
|
|
repeated RedelegationEntry entries = 4
|
|
[(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; // redelegation entries
|
|
}
|
|
|
|
// Params defines the parameters for the x/staking module.
|
|
message Params {
|
|
option (amino.name) = "cosmos-sdk/x/staking/Params";
|
|
option (gogoproto.equal) = true;
|
|
option (gogoproto.goproto_stringer) = false;
|
|
|
|
// unbonding_time is the time duration of unbonding.
|
|
google.protobuf.Duration unbonding_time = 1
|
|
[(gogoproto.nullable) = false, (amino.dont_omitempty) = true, (gogoproto.stdduration) = true];
|
|
// max_validators is the maximum number of validators.
|
|
uint32 max_validators = 2;
|
|
// max_entries is the max entries for either unbonding delegation or redelegation (per pair/trio).
|
|
uint32 max_entries = 3;
|
|
// historical_entries is the number of historical entries to persist.
|
|
uint32 historical_entries = 4;
|
|
// bond_denom defines the bondable coin denomination.
|
|
string bond_denom = 5;
|
|
// min_commission_rate is the chain-wide minimum commission rate that a validator can charge their delegators
|
|
string min_commission_rate = 6 [
|
|
(gogoproto.moretags) = "yaml:\"min_commission_rate\"",
|
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec",
|
|
(gogoproto.nullable) = false
|
|
];
|
|
}
|
|
|
|
// DelegationResponse is equivalent to Delegation except that it contains a
|
|
// balance in addition to shares which is more suitable for client responses.
|
|
message DelegationResponse {
|
|
option (gogoproto.equal) = false;
|
|
option (gogoproto.goproto_stringer) = false;
|
|
|
|
Delegation delegation = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true];
|
|
|
|
cosmos.base.v1beta1.Coin balance = 2 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true];
|
|
}
|
|
|
|
// RedelegationEntryResponse is equivalent to a RedelegationEntry except that it
|
|
// contains a balance in addition to shares which is more suitable for client
|
|
// responses.
|
|
message RedelegationEntryResponse {
|
|
option (gogoproto.equal) = true;
|
|
|
|
RedelegationEntry redelegation_entry = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true];
|
|
string balance = 4 [
|
|
(cosmos_proto.scalar) = "cosmos.Int",
|
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
|
(gogoproto.nullable) = false
|
|
];
|
|
}
|
|
|
|
// RedelegationResponse is equivalent to a Redelegation except that its entries
|
|
// contain a balance in addition to shares which is more suitable for client
|
|
// responses.
|
|
message RedelegationResponse {
|
|
option (gogoproto.equal) = false;
|
|
|
|
Redelegation redelegation = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true];
|
|
repeated RedelegationEntryResponse entries = 2 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true];
|
|
}
|
|
|
|
// Pool is used for tracking bonded and not-bonded token supply of the bond
|
|
// denomination.
|
|
message Pool {
|
|
option (gogoproto.description) = true;
|
|
option (gogoproto.equal) = true;
|
|
string not_bonded_tokens = 1 [
|
|
(cosmos_proto.scalar) = "cosmos.Int",
|
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
|
(gogoproto.nullable) = false,
|
|
(gogoproto.jsontag) = "not_bonded_tokens",
|
|
(amino.dont_omitempty) = true
|
|
];
|
|
string bonded_tokens = 2 [
|
|
(cosmos_proto.scalar) = "cosmos.Int",
|
|
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
|
(gogoproto.nullable) = false,
|
|
(gogoproto.jsontag) = "bonded_tokens",
|
|
(amino.dont_omitempty) = true
|
|
];
|
|
}
|
|
|
|
// Infraction indicates the infraction a validator commited.
|
|
enum Infraction {
|
|
// UNSPECIFIED defines an empty infraction.
|
|
INFRACTION_UNSPECIFIED = 0;
|
|
// DOUBLE_SIGN defines a validator that double-signs a block.
|
|
INFRACTION_DOUBLE_SIGN = 1;
|
|
// DOWNTIME defines a validator that missed signing too many blocks.
|
|
INFRACTION_DOWNTIME = 2;
|
|
}
|
|
|
|
// ValidatorUpdates defines an array of abci.ValidatorUpdate objects.
|
|
// TODO: explore moving this to proto/cosmos/base to separate modules from tendermint dependence
|
|
message ValidatorUpdates {
|
|
repeated tendermint.abci.ValidatorUpdate updates = 1 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true];
|
|
}
|