Skip to content

Commit

Permalink
adding miss counters grpc api
Browse files Browse the repository at this point in the history
  • Loading branch information
gsk967 committed Dec 7, 2023
1 parent 64e559f commit f4888b4
Show file tree
Hide file tree
Showing 8 changed files with 1,943 additions and 227 deletions.
29 changes: 29 additions & 0 deletions proto/umee/oracle/v1/query.proto
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,35 @@ service Query {
option (google.api.http).get =
"/umee/oracle/v1/denoms/exg_rates_timestamp";
}

// MissCounters returns oracle missing votes count of validators.
rpc MissCounters(QueryMissCounters)
returns (QueryMissCountersResponse) {
option (google.api.http).get =
"/umee/oracle/v1/miss_counters";
}
}

// QueryMissCounters is the request type for the Query/MissCounters RPC
// method.
message QueryMissCounters {
option (gogoproto.equal) = false;
option (gogoproto.goproto_getters) = false;
string validator = 1;
}

// QueryMissCountersResponse is response type for the Query/MissCounters RPC method.
message QueryMissCountersResponse {
repeated PriceMissCounter miss_counters = 1 [
(gogoproto.nullable) = false
];
}

// PriceMissCounter is the validator's oracle price votes missing count.
message PriceMissCounter {
string validator = 1;
// miss_counter defines the oracle miss counter of a validator
uint64 miss_counter = 2;
}

// QueryExgRatesWithTimestamp is the request type for the Query/ExchangeRatesWithTimestamp RPC
Expand Down
38 changes: 38 additions & 0 deletions proto/umee/uibc/v1/query.proto
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,44 @@ service Query {
rpc AllOutflows(QueryAllOutflows) returns (QueryAllOutflowsResponse) {
option (google.api.http).get = "/umee/uibc/v1/all_outflows";
}

// Inflows returns registered IBC denoms inflows in the current quota period.
// If denom is not specified, returns sum of all registered inflows.
rpc Inflows(QueryInflows) returns (QueryInflowsResponse) {
option (google.api.http).get = "/umee/uibc/v1/inflows";
}

// AllInflows returns inflows for each registered denom in the current quota period.
rpc AllInflows(QueryAllInflows) returns (QueryAllInflowsResponse) {
option (google.api.http).get = "/umee/uibc/v1/all_inflows";
}
}

// QueryAllInflows defines request type for query the inflow quota of registered denoms.
message QueryAllInflows {
string denom = 1;
}

// QueryAllInflowsResponse defines response type of Query/AllInflows
message QueryAllInflowsResponse {
repeated cosmos.base.v1beta1.DecCoin inflows = 1 [
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.DecCoins",
(gogoproto.nullable) = false
];
}

// QueryInflows defines request type for query the inflow quota of denoms
message QueryInflows {
string denom = 1;
}

// QueryInflowsResponse defines response type of Query/Inflows
message QueryInflowsResponse {
string amount = 1 [
(cosmos_proto.scalar) = "cosmos.Dec",
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec",
(gogoproto.nullable) = false
];
}

// QueryParams defines the request structure for the Params gRPC service
Expand Down
35 changes: 35 additions & 0 deletions x/oracle/keeper/grpc_query.go
Original file line number Diff line number Diff line change
Expand Up @@ -362,3 +362,38 @@ func (q querier) ExgRatesWithTimestamp(

return &types.QueryExgRatesWithTimestampResponse{ExgRates: exgRates}, nil
}

// MissCounters implements types.QueryServer.
func (q querier) MissCounters(goCtx context.Context, req *types.QueryMissCounters) (*types.QueryMissCountersResponse,
error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "empty request")
}

ctx := sdk.UnwrapSDKContext(goCtx)

var pfMissCounts []types.PriceMissCounter
if len(req.Validator) != 0 {
valAddr, err := sdk.ValAddressFromBech32(req.Validator)
if err != nil {
return nil, status.Error(codes.InvalidArgument, err.Error())
}
missCounter := q.GetMissCounter(ctx, valAddr)
pfMissCounts = append(pfMissCounts, types.PriceMissCounter{
Validator: req.Validator,
MissCounter: missCounter,
})
} else {
q.IterateMissCounters(ctx, func(val sdk.ValAddress, u uint64) bool {
pfMissCounts = append(pfMissCounts, types.PriceMissCounter{
Validator: val.String(),
MissCounter: u,
})
return false
})
}

return &types.QueryMissCountersResponse{
MissCounters: pfMissCounts,
}, nil
}
Loading

0 comments on commit f4888b4

Please sign in to comment.