2022-12-09 21:24:35 +00:00
|
|
|
<!--
|
|
|
|
order: 2
|
|
|
|
-->
|
|
|
|
|
|
|
|
# State
|
|
|
|
|
2023-10-30 23:53:29 +00:00
|
|
|
## Parameters and Genesis State
|
|
|
|
|
|
|
|
`Params` define the module parameters, containing the information required to
|
|
|
|
set the current staking rewards per second at a future date. When the
|
|
|
|
`upgrade_time_disable_inflation` time is reached, `staking_rewards_per_second`
|
|
|
|
will be set to `upgrade_time_set_staking_rewards_per_second`.
|
|
|
|
|
|
|
|
```protobuf
|
|
|
|
// Params defines the parameters of the community module.
|
|
|
|
message Params {
|
|
|
|
option (gogoproto.equal) = true;
|
|
|
|
|
|
|
|
// upgrade_time_disable_inflation is the time at which to disable mint and kavadist module inflation.
|
|
|
|
// If set to 0, inflation will be disabled from block 1.
|
|
|
|
google.protobuf.Timestamp upgrade_time_disable_inflation = 1 [
|
|
|
|
(gogoproto.stdtime) = true,
|
|
|
|
(gogoproto.nullable) = false
|
|
|
|
];
|
|
|
|
|
|
|
|
// staking_rewards_per_second is the amount paid out to delegators each block from the community account
|
|
|
|
string staking_rewards_per_second = 2 [
|
|
|
|
(cosmos_proto.scalar) = "cosmos.Dec",
|
|
|
|
(gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
|
|
|
|
(gogoproto.nullable) = false
|
|
|
|
];
|
|
|
|
|
|
|
|
// upgrade_time_set_staking_rewards_per_second is the initial staking_rewards_per_second to set
|
|
|
|
// and use when the disable inflation time is reached
|
|
|
|
string upgrade_time_set_staking_rewards_per_second = 3 [
|
|
|
|
(cosmos_proto.scalar) = "cosmos.Dec",
|
|
|
|
(gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
|
|
|
|
(gogoproto.nullable) = false
|
|
|
|
];
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
`GenesisState` defines the state that must be persisted when the blockchain
|
|
|
|
stops/restarts in order for normal function of the module to resume. It contains
|
|
|
|
the parameters and staking rewards state to keep track of payout between blocks.
|
|
|
|
|
|
|
|
```protobuf
|
|
|
|
// GenesisState defines the community module's genesis state.
|
|
|
|
message GenesisState {
|
|
|
|
// params defines all the paramaters related to commmunity
|
|
|
|
Params params = 1 [(gogoproto.nullable) = false];
|
|
|
|
|
|
|
|
// StakingRewardsState stores the internal staking reward data required to
|
|
|
|
// track staking rewards across blocks
|
|
|
|
StakingRewardsState staking_rewards_state = 2 [(gogoproto.nullable) = false];
|
|
|
|
}
|
|
|
|
|
|
|
|
// StakingRewardsState represents the state of staking reward accumulation between blocks.
|
|
|
|
message StakingRewardsState {
|
|
|
|
// last_accumulation_time represents the last block time which rewards where calculated and distributed.
|
|
|
|
// This may be zero to signal accumulation should start on the next interval.
|
|
|
|
google.protobuf.Timestamp last_accumulation_time = 1 [
|
|
|
|
(gogoproto.stdtime) = true,
|
|
|
|
(gogoproto.nullable) = false
|
|
|
|
];
|
|
|
|
|
|
|
|
// accumulated_truncation_error represents the sum of previous errors due to truncation on payout
|
|
|
|
// This value will always be on the interval [0, 1).
|
|
|
|
string last_truncation_error = 2 [
|
|
|
|
(cosmos_proto.scalar) = "cosmos.Dec",
|
|
|
|
(gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
|
|
|
|
(gogoproto.nullable) = false
|
|
|
|
];
|
|
|
|
}
|
|
|
|
```
|