0g-chain/x/community/spec/02_state.md
drklee3 84f84c4eec
Update x/community spec (#1764)
* Update x/community spec

* Update reward details, remove old pool section

* Reward parameters typoish

Co-authored-by: Robert Pirtle <Astropirtle@gmail.com>

---------

Co-authored-by: Robert Pirtle <Astropirtle@gmail.com>
2023-10-30 16:53:29 -07:00

76 lines
2.8 KiB
Markdown

<!--
order: 2
-->
# State
## 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
];
}
```