syntax = "proto3"; package kava.kavadist.v1beta1; import "cosmos/base/v1beta1/coin.proto"; import "cosmos_proto/cosmos.proto"; import "gogoproto/gogo.proto"; import "google/protobuf/timestamp.proto"; option go_package = "github.com/0glabs/0g-chain/x/kavadist/types"; option (gogoproto.goproto_getters_all) = false; option (gogoproto.goproto_stringer_all) = false; // Params governance parameters for kavadist module message Params { bool active = 1; repeated Period periods = 3 [(gogoproto.nullable) = false]; InfrastructureParams infrastructure_params = 4 [(gogoproto.nullable) = false]; } // InfrastructureParams define the parameters for infrastructure rewards. message InfrastructureParams { repeated Period infrastructure_periods = 1 [ (gogoproto.castrepeated) = "Periods", (gogoproto.nullable) = false ]; repeated CoreReward core_rewards = 2 [ (gogoproto.castrepeated) = "CoreRewards", (gogoproto.nullable) = false ]; repeated PartnerReward partner_rewards = 3 [ (gogoproto.castrepeated) = "PartnerRewards", (gogoproto.nullable) = false ]; option (gogoproto.goproto_stringer) = true; } // CoreReward defines the reward weights for core infrastructure providers. message CoreReward { bytes address = 1 [ (cosmos_proto.scalar) = "cosmos.AddressBytes", (gogoproto.casttype) = "github.com/cosmos/cosmos-sdk/types.AccAddress" ]; string weight = 2 [ (cosmos_proto.scalar) = "cosmos.Dec", (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", (gogoproto.nullable) = false ]; option (gogoproto.goproto_stringer) = true; } // PartnerRewards defines the reward schedule for partner infrastructure providers. message PartnerReward { bytes address = 1 [ (cosmos_proto.scalar) = "cosmos.AddressBytes", (gogoproto.casttype) = "github.com/cosmos/cosmos-sdk/types.AccAddress" ]; cosmos.base.v1beta1.Coin rewards_per_second = 2 [(gogoproto.nullable) = false]; option (gogoproto.goproto_stringer) = true; } // Period stores the specified start and end dates, and the inflation, expressed as a decimal // representing the yearly APR of KAVA tokens that will be minted during that period message Period { option (gogoproto.equal) = true; // example "2020-03-01T15:20:00Z" google.protobuf.Timestamp start = 1 [ (gogoproto.stdtime) = true, (gogoproto.nullable) = false ]; // example "2020-06-01T15:20:00Z" google.protobuf.Timestamp end = 2 [ (gogoproto.stdtime) = true, (gogoproto.nullable) = false ]; // example "1.000000003022265980" - 10% inflation bytes inflation = 3 [ (gogoproto.nullable) = false, (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec" ]; }