feat(epochs): backport (#23815)
Co-authored-by: Tyler <48813565+technicallyty@users.noreply.github.com>
This commit is contained in:
co-authored by
Tyler
parent
4ed61468a2
commit
ff779eca8d
@@ -0,0 +1,13 @@
|
||||
// Since: cosmos-sdk 0.53
|
||||
syntax = "proto3";
|
||||
|
||||
package cosmos.epochs.module.v1;
|
||||
|
||||
import "cosmos/app/v1alpha1/module.proto";
|
||||
|
||||
// Module is the config object of the epochs module.
|
||||
message Module {
|
||||
option (cosmos.app.v1alpha1.module) = {
|
||||
go_import: "github.com/cosmos/cosmos-sdk/x/epochs"
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
// Since: cosmos-sdk 0.53
|
||||
syntax = "proto3";
|
||||
|
||||
package cosmos.epochs.v1beta1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/epochs/types";
|
||||
|
||||
// EventEpochEnd is an event emitted when an epoch end.
|
||||
message EventEpochEnd {
|
||||
int64 epoch_number = 1;
|
||||
}
|
||||
|
||||
// EventEpochStart is an event emitted when an epoch start.
|
||||
message EventEpochStart {
|
||||
int64 epoch_number = 1;
|
||||
int64 epoch_start_time = 2;
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
// Since: cosmos-sdk 0.53
|
||||
syntax = "proto3";
|
||||
package cosmos.epochs.v1beta1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "google/protobuf/duration.proto";
|
||||
import "google/protobuf/timestamp.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/epochs/types";
|
||||
|
||||
// EpochInfo is a struct that describes the data going into
|
||||
// a timer defined by the x/epochs module.
|
||||
message EpochInfo {
|
||||
// identifier is a unique reference to this particular timer.
|
||||
string identifier = 1;
|
||||
// start_time is the time at which the timer first ever ticks.
|
||||
// If start_time is in the future, the epoch will not begin until the start
|
||||
// time.
|
||||
google.protobuf.Timestamp start_time = 2 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false];
|
||||
// duration is the time in between epoch ticks.
|
||||
// In order for intended behavior to be met, duration should
|
||||
// be greater than the chains expected block time.
|
||||
// Duration must be non-zero.
|
||||
google.protobuf.Duration duration = 3
|
||||
[(gogoproto.nullable) = false, (gogoproto.stdduration) = true, (gogoproto.jsontag) = "duration,omitempty"];
|
||||
// current_epoch is the current epoch number, or in other words,
|
||||
// how many times has the timer 'ticked'.
|
||||
// The first tick (current_epoch=1) is defined as
|
||||
// the first block whose blocktime is greater than the EpochInfo start_time.
|
||||
int64 current_epoch = 4;
|
||||
// current_epoch_start_time describes the start time of the current timer
|
||||
// interval. The interval is (current_epoch_start_time,
|
||||
// current_epoch_start_time + duration] When the timer ticks, this is set to
|
||||
// current_epoch_start_time = last_epoch_start_time + duration only one timer
|
||||
// tick for a given identifier can occur per block.
|
||||
//
|
||||
// NOTE! The current_epoch_start_time may diverge significantly from the
|
||||
// wall-clock time the epoch began at. Wall-clock time of epoch start may be
|
||||
// >> current_epoch_start_time. Suppose current_epoch_start_time = 10,
|
||||
// duration = 5. Suppose the chain goes offline at t=14, and comes back online
|
||||
// at t=30, and produces blocks at every successive time. (t=31, 32, etc.)
|
||||
// * The t=30 block will start the epoch for (10, 15]
|
||||
// * The t=31 block will start the epoch for (15, 20]
|
||||
// * The t=32 block will start the epoch for (20, 25]
|
||||
// * The t=33 block will start the epoch for (25, 30]
|
||||
// * The t=34 block will start the epoch for (30, 35]
|
||||
// * The **t=36** block will start the epoch for (35, 40]
|
||||
google.protobuf.Timestamp current_epoch_start_time = 5 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false];
|
||||
// epoch_counting_started is a boolean, that indicates whether this
|
||||
// epoch timer has began yet.
|
||||
bool epoch_counting_started = 6;
|
||||
reserved 7;
|
||||
// current_epoch_start_height is the block height at which the current epoch
|
||||
// started. (The block height at which the timer last ticked)
|
||||
int64 current_epoch_start_height = 8;
|
||||
}
|
||||
|
||||
// GenesisState defines the epochs module's genesis state.
|
||||
message GenesisState {
|
||||
repeated EpochInfo epochs = 1 [(gogoproto.nullable) = false];
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
// Since: cosmos-sdk 0.53
|
||||
syntax = "proto3";
|
||||
package cosmos.epochs.v1beta1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "google/api/annotations.proto";
|
||||
import "cosmos/epochs/v1beta1/genesis.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/epochs/types";
|
||||
|
||||
// Query defines the gRPC querier service.
|
||||
service Query {
|
||||
// EpochInfos provide running epochInfos
|
||||
rpc EpochInfos(QueryEpochInfosRequest) returns (QueryEpochInfosResponse) {
|
||||
option (google.api.http).get = "/cosmos/epochs/v1beta1/epochs";
|
||||
}
|
||||
// CurrentEpoch provide current epoch of specified identifier
|
||||
rpc CurrentEpoch(QueryCurrentEpochRequest) returns (QueryCurrentEpochResponse) {
|
||||
option (google.api.http).get = "/cosmos/epochs/v1beta1/current_epoch";
|
||||
}
|
||||
}
|
||||
|
||||
// QueryEpochInfosRequest defines the gRPC request structure for
|
||||
// querying all epoch info.
|
||||
message QueryEpochInfosRequest {}
|
||||
|
||||
// QueryEpochInfosRequest defines the gRPC response structure for
|
||||
// querying all epoch info.
|
||||
message QueryEpochInfosResponse {
|
||||
repeated EpochInfo epochs = 1 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryCurrentEpochRequest defines the gRPC request structure for
|
||||
// querying an epoch by its identifier.
|
||||
message QueryCurrentEpochRequest {
|
||||
string identifier = 1;
|
||||
}
|
||||
|
||||
// QueryCurrentEpochResponse defines the gRPC response structure for
|
||||
// querying an epoch by its identifier.
|
||||
message QueryCurrentEpochResponse {
|
||||
int64 current_epoch = 1;
|
||||
}
|
||||
Reference in New Issue
Block a user