multinode/payouts: satellite period/allTime summaries added

payout summaries for specific satellite period/allTime added

Change-Id: I144138304f01f23d5c4b10931988eaaced656aaf
This commit is contained in:
Qweder93 2021-05-05 23:01:16 +03:00 committed by Nikolai Siedov
parent dfe85beac2
commit f2812d76cd
9 changed files with 641 additions and 121 deletions

View File

@ -58,22 +58,28 @@ func (controller *Payouts) SatelliteEstimations(w http.ResponseWriter, r *http.R
ctx := r.Context() ctx := r.Context()
var err error var err error
defer mon.Task()(&ctx)(&err) defer mon.Task()(&ctx)(&err)
w.Header().Add("Content-Type", "application/json")
segmentParams := mux.Vars(r) segmentParams := mux.Vars(r)
id, ok := segmentParams["satelliteID"] id, ok := segmentParams["satelliteID"]
if !ok { if !ok {
controller.serveError(w, http.StatusBadRequest, ErrPayouts.Wrap(err)) controller.serveError(w, http.StatusBadRequest, ErrPayouts.New("couldn't receive route variable satelliteID"))
return return
} }
satelliteID, err := storj.NodeIDFromString(id) satelliteID, err := storj.NodeIDFromString(id)
if err != nil { if err != nil {
controller.serveError(w, http.StatusBadRequest, ErrPayouts.Wrap(err)) controller.serveError(w, http.StatusBadRequest, ErrPayouts.Wrap(err))
return return
} }
estimatedEarnings, err := controller.service.AllNodesSatelliteEstimations(ctx, satelliteID)
estimatedEarnings, err := controller.service.NodesSatelliteEstimations(ctx, satelliteID)
if err != nil { if err != nil {
controller.serveError(w, http.StatusInternalServerError, ErrPayouts.Wrap(err)) controller.serveError(w, http.StatusInternalServerError, ErrPayouts.Wrap(err))
return return
} }
if err = json.NewEncoder(w).Encode(estimatedEarnings); err != nil { if err = json.NewEncoder(w).Encode(estimatedEarnings); err != nil {
controller.log.Error("failed to write json response", zap.Error(err)) controller.log.Error("failed to write json response", zap.Error(err))
return return
@ -85,11 +91,15 @@ func (controller *Payouts) Estimations(w http.ResponseWriter, r *http.Request) {
ctx := r.Context() ctx := r.Context()
var err error var err error
defer mon.Task()(&ctx)(&err) defer mon.Task()(&ctx)(&err)
estimatedEarnings, err := controller.service.AllNodesEstimations(ctx)
w.Header().Add("Content-Type", "application/json")
estimatedEarnings, err := controller.service.NodesEstimations(ctx)
if err != nil { if err != nil {
controller.serveError(w, http.StatusInternalServerError, ErrPayouts.Wrap(err)) controller.serveError(w, http.StatusInternalServerError, ErrPayouts.Wrap(err))
return return
} }
if err = json.NewEncoder(w).Encode(estimatedEarnings); err != nil { if err = json.NewEncoder(w).Encode(estimatedEarnings); err != nil {
controller.log.Error("failed to write json response", zap.Error(err)) controller.log.Error("failed to write json response", zap.Error(err))
return return
@ -102,12 +112,12 @@ func (controller *Payouts) PeriodSummary(w http.ResponseWriter, r *http.Request)
var err error var err error
defer mon.Task()(&ctx)(&err) defer mon.Task()(&ctx)(&err)
segmentParams := mux.Vars(r)
w.Header().Add("Content-Type", "application/json") w.Header().Add("Content-Type", "application/json")
segmentParams := mux.Vars(r)
period, ok := segmentParams["period"] period, ok := segmentParams["period"]
if !ok { if !ok {
controller.serveError(w, http.StatusBadRequest, ErrPayouts.Wrap(err)) controller.serveError(w, http.StatusBadRequest, ErrPayouts.New("couldn't receive route variable period"))
return return
} }
@ -143,6 +153,78 @@ func (controller *Payouts) Summary(w http.ResponseWriter, r *http.Request) {
} }
} }
// SatellitePeriodSummary handles retrieval from nodes from specific satellite for specific period.
func (controller *Payouts) SatellitePeriodSummary(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
var err error
defer mon.Task()(&ctx)(&err)
w.Header().Add("Content-Type", "application/json")
segmentParams := mux.Vars(r)
period, ok := segmentParams["period"]
if !ok {
controller.serveError(w, http.StatusBadRequest, ErrPayouts.New("couldn't receive route variable period"))
return
}
id, ok := segmentParams["id"]
if !ok {
controller.serveError(w, http.StatusBadRequest, ErrPayouts.New("couldn't receive route variable satelliteID"))
return
}
satelliteID, err := storj.NodeIDFromString(id)
if err != nil {
controller.serveError(w, http.StatusBadRequest, ErrPayouts.Wrap(err))
return
}
summary, err := controller.service.NodesSatellitePeriodSummary(ctx, satelliteID, period)
if err != nil {
controller.serveError(w, http.StatusInternalServerError, ErrPayouts.Wrap(err))
return
}
if err = json.NewEncoder(w).Encode(summary); err != nil {
controller.log.Error("failed to write json response", zap.Error(err))
return
}
}
// SatelliteSummary handles retrieval from nodes from specific satellite.
func (controller *Payouts) SatelliteSummary(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
var err error
defer mon.Task()(&ctx)(&err)
w.Header().Add("Content-Type", "application/json")
segmentParams := mux.Vars(r)
id, ok := segmentParams["id"]
if !ok {
controller.serveError(w, http.StatusBadRequest, ErrPayouts.New("couldn't receive route variable satelliteID"))
return
}
satelliteID, err := storj.NodeIDFromString(id)
if err != nil {
controller.serveError(w, http.StatusBadRequest, ErrPayouts.Wrap(err))
return
}
summary, err := controller.service.NodesSatelliteSummary(ctx, satelliteID)
if err != nil {
controller.serveError(w, http.StatusInternalServerError, ErrPayouts.Wrap(err))
return
}
if err = json.NewEncoder(w).Encode(summary); err != nil {
controller.log.Error("failed to write json response", zap.Error(err))
return
}
}
// serveError set http statuses and send json error. // serveError set http statuses and send json error.
func (controller *Payouts) serveError(w http.ResponseWriter, status int, err error) { func (controller *Payouts) serveError(w http.ResponseWriter, status int, err error) {
w.WriteHeader(status) w.WriteHeader(status)

View File

@ -75,6 +75,8 @@ func NewServer(log *zap.Logger, config Config, nodes *nodes.Service, payouts *pa
payoutsController := controllers.NewPayouts(server.log, server.payouts) payoutsController := controllers.NewPayouts(server.log, server.payouts)
payoutsRouter := apiRouter.PathPrefix("/payouts").Subrouter() payoutsRouter := apiRouter.PathPrefix("/payouts").Subrouter()
payoutsRouter.HandleFunc("/satellite/{id}/summary/{period}", payoutsController.SatellitePeriodSummary).Methods(http.MethodGet)
payoutsRouter.HandleFunc("/satellite/{id}/summary", payoutsController.SatelliteSummary).Methods(http.MethodGet)
payoutsRouter.HandleFunc("/summary/{period}", payoutsController.PeriodSummary).Methods(http.MethodGet) payoutsRouter.HandleFunc("/summary/{period}", payoutsController.PeriodSummary).Methods(http.MethodGet)
payoutsRouter.HandleFunc("/summary", payoutsController.Summary).Methods(http.MethodGet) payoutsRouter.HandleFunc("/summary", payoutsController.Summary).Methods(http.MethodGet)
payoutsRouter.HandleFunc("/total-earned", payoutsController.GetAllNodesTotalEarned).Methods(http.MethodGet) payoutsRouter.HandleFunc("/total-earned", payoutsController.GetAllNodesTotalEarned).Methods(http.MethodGet)

View File

@ -16,6 +16,7 @@ type SatelliteSummary struct {
// NodeSummary contains node's payout information. // NodeSummary contains node's payout information.
type NodeSummary struct { type NodeSummary struct {
NodeID storj.NodeID `json:"nodeId"` NodeID storj.NodeID `json:"nodeId"`
NodeName string `json:"nodeName"`
Held int64 `json:"held"` Held int64 `json:"held"`
Paid int64 `json:"paid"` Paid int64 `json:"paid"`
} }
@ -27,3 +28,16 @@ type Summary struct {
TotalPaid int64 `json:"totalPaid"` TotalPaid int64 `json:"totalPaid"`
NodeSummary []NodeSummary `json:"nodeSummary"` NodeSummary []NodeSummary `json:"nodeSummary"`
} }
// Add appends node payout data to summary.
func (summary *Summary) Add(held, paid int64, id storj.NodeID, name string) {
summary.TotalPaid += paid
summary.TotalHeld += held
summary.TotalEarned += paid + held
summary.NodeSummary = append(summary.NodeSummary, NodeSummary{
NodeID: id,
Held: held,
Paid: paid,
NodeName: name,
})
}

View File

@ -129,17 +129,9 @@ func (service *Service) NodesSummary(ctx context.Context) (_ Summary, err error)
return Summary{}, Error.Wrap(err) return Summary{}, Error.Wrap(err)
} }
summary.TotalPaid += info.Paid summary.Add(info.Held, info.Paid, node.ID, node.Name)
summary.TotalHeld += info.Held
summary.NodeSummary = append(summary.NodeSummary, NodeSummary{
NodeID: node.ID,
Held: info.Held,
Paid: info.Paid,
})
} }
summary.TotalEarned = summary.TotalPaid + summary.TotalHeld
return summary, nil return summary, nil
} }
@ -160,20 +152,110 @@ func (service *Service) NodesPeriodSummary(ctx context.Context, period string) (
return Summary{}, Error.Wrap(err) return Summary{}, Error.Wrap(err)
} }
summary.TotalPaid += info.Paid summary.Add(info.Held, info.Paid, node.ID, node.Name)
summary.TotalHeld += info.Held
summary.NodeSummary = append(summary.NodeSummary, NodeSummary{
NodeID: node.ID,
Held: info.Held,
Paid: info.Paid,
})
} }
summary.TotalEarned = summary.TotalPaid + summary.TotalHeld return summary, nil
}
// NodesSatelliteSummary returns specific satellite all time stats.
func (service *Service) NodesSatelliteSummary(ctx context.Context, satelliteID storj.NodeID) (_ Summary, err error) {
defer mon.Task()(&ctx)(&err)
var summary Summary
list, err := service.nodes.List(ctx)
if err != nil {
return Summary{}, Error.Wrap(err)
}
for _, node := range list {
info, err := service.nodeSatelliteSummary(ctx, node, satelliteID)
if err != nil {
return Summary{}, Error.Wrap(err)
}
summary.Add(info.Held, info.Paid, node.ID, node.Name)
}
return summary, nil return summary, nil
} }
// NodesSatellitePeriodSummary returns specific satellite stats for specific period.
func (service *Service) NodesSatellitePeriodSummary(ctx context.Context, satelliteID storj.NodeID, period string) (_ Summary, err error) {
defer mon.Task()(&ctx)(&err)
var summary Summary
list, err := service.nodes.List(ctx)
if err != nil {
return Summary{}, Error.Wrap(err)
}
for _, node := range list {
info, err := service.nodeSatellitePeriodSummary(ctx, node, satelliteID, period)
if err != nil {
return Summary{}, Error.Wrap(err)
}
summary.Add(info.Held, info.Paid, node.ID, node.Name)
}
return summary, nil
}
// nodeSatelliteSummary returns payout info for single satellite, for specific node.
func (service *Service) nodeSatelliteSummary(ctx context.Context, node nodes.Node, satelliteID storj.NodeID) (info *multinodepb.PayoutInfo, err error) {
conn, err := service.dialer.DialNodeURL(ctx, storj.NodeURL{
ID: node.ID,
Address: node.PublicAddress,
})
if err != nil {
return &multinodepb.PayoutInfo{}, Error.Wrap(err)
}
defer func() {
err = errs.Combine(err, conn.Close())
}()
payoutClient := multinodepb.NewDRPCPayoutClient(conn)
header := &multinodepb.RequestHeader{
ApiKey: node.APISecret,
}
response, err := payoutClient.SatelliteSummary(ctx, &multinodepb.SatelliteSummaryRequest{Header: header, SatelliteId: satelliteID})
if err != nil {
return &multinodepb.PayoutInfo{}, Error.Wrap(err)
}
return response.PayoutInfo, nil
}
// nodeSatellitePeriodSummary returns satellite payout info for specific node for specific period.
func (service *Service) nodeSatellitePeriodSummary(ctx context.Context, node nodes.Node, satelliteID storj.NodeID, period string) (info *multinodepb.PayoutInfo, err error) {
conn, err := service.dialer.DialNodeURL(ctx, storj.NodeURL{
ID: node.ID,
Address: node.PublicAddress,
})
if err != nil {
return &multinodepb.PayoutInfo{}, Error.Wrap(err)
}
defer func() {
err = errs.Combine(err, conn.Close())
}()
payoutClient := multinodepb.NewDRPCPayoutClient(conn)
header := &multinodepb.RequestHeader{
ApiKey: node.APISecret,
}
response, err := payoutClient.SatellitePeriodSummary(ctx, &multinodepb.SatellitePeriodSummaryRequest{Header: header, SatelliteId: satelliteID, Period: period})
if err != nil {
return &multinodepb.PayoutInfo{}, Error.Wrap(err)
}
return response.PayoutInfo, nil
}
func (service *Service) getAllSatellitesPeriod(ctx context.Context, node nodes.Node, period string) (info *multinodepb.PayoutInfo, err error) { func (service *Service) getAllSatellitesPeriod(ctx context.Context, node nodes.Node, period string) (info *multinodepb.PayoutInfo, err error) {
conn, err := service.dialer.DialNodeURL(ctx, storj.NodeURL{ conn, err := service.dialer.DialNodeURL(ctx, storj.NodeURL{
ID: node.ID, ID: node.ID,
@ -226,8 +308,8 @@ func (service *Service) getAllSatellitesAllTime(ctx context.Context, node nodes.
return response.PayoutInfo, nil return response.PayoutInfo, nil
} }
// AllNodesSatelliteEstimations returns specific satellite all time estimated earnings. // NodesSatelliteEstimations returns specific satellite all time estimated earnings.
func (service *Service) AllNodesSatelliteEstimations(ctx context.Context, satelliteID storj.NodeID) (_ int64, err error) { func (service *Service) NodesSatelliteEstimations(ctx context.Context, satelliteID storj.NodeID) (_ int64, err error) {
defer mon.Task()(&ctx)(&err) defer mon.Task()(&ctx)(&err)
var estimatedEarnings int64 var estimatedEarnings int64
@ -249,8 +331,8 @@ func (service *Service) AllNodesSatelliteEstimations(ctx context.Context, satell
return estimatedEarnings, nil return estimatedEarnings, nil
} }
// AllNodesEstimations returns all satellites all time estimated earnings. // NodesEstimations returns all satellites all time estimated earnings.
func (service *Service) AllNodesEstimations(ctx context.Context) (_ int64, err error) { func (service *Service) NodesEstimations(ctx context.Context) (_ int64, err error) {
defer mon.Task()(&ctx)(&err) defer mon.Task()(&ctx)(&err)
var estimatedEarnings int64 var estimatedEarnings int64

View File

@ -1002,6 +1002,168 @@ func (m *AllSatellitesPeriodSummaryResponse) GetPayoutInfo() *PayoutInfo {
return nil return nil
} }
type SatelliteSummaryRequest struct {
Header *RequestHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"`
SatelliteId NodeID `protobuf:"bytes,2,opt,name=satellite_id,json=satelliteId,proto3,customtype=NodeID" json:"satellite_id"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *SatelliteSummaryRequest) Reset() { *m = SatelliteSummaryRequest{} }
func (m *SatelliteSummaryRequest) String() string { return proto.CompactTextString(m) }
func (*SatelliteSummaryRequest) ProtoMessage() {}
func (*SatelliteSummaryRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_9a45fd79b06f3a1b, []int{21}
}
func (m *SatelliteSummaryRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SatelliteSummaryRequest.Unmarshal(m, b)
}
func (m *SatelliteSummaryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_SatelliteSummaryRequest.Marshal(b, m, deterministic)
}
func (m *SatelliteSummaryRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_SatelliteSummaryRequest.Merge(m, src)
}
func (m *SatelliteSummaryRequest) XXX_Size() int {
return xxx_messageInfo_SatelliteSummaryRequest.Size(m)
}
func (m *SatelliteSummaryRequest) XXX_DiscardUnknown() {
xxx_messageInfo_SatelliteSummaryRequest.DiscardUnknown(m)
}
var xxx_messageInfo_SatelliteSummaryRequest proto.InternalMessageInfo
func (m *SatelliteSummaryRequest) GetHeader() *RequestHeader {
if m != nil {
return m.Header
}
return nil
}
type SatelliteSummaryResponse struct {
PayoutInfo *PayoutInfo `protobuf:"bytes,1,opt,name=payout_info,json=payoutInfo,proto3" json:"payout_info,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *SatelliteSummaryResponse) Reset() { *m = SatelliteSummaryResponse{} }
func (m *SatelliteSummaryResponse) String() string { return proto.CompactTextString(m) }
func (*SatelliteSummaryResponse) ProtoMessage() {}
func (*SatelliteSummaryResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_9a45fd79b06f3a1b, []int{22}
}
func (m *SatelliteSummaryResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SatelliteSummaryResponse.Unmarshal(m, b)
}
func (m *SatelliteSummaryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_SatelliteSummaryResponse.Marshal(b, m, deterministic)
}
func (m *SatelliteSummaryResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_SatelliteSummaryResponse.Merge(m, src)
}
func (m *SatelliteSummaryResponse) XXX_Size() int {
return xxx_messageInfo_SatelliteSummaryResponse.Size(m)
}
func (m *SatelliteSummaryResponse) XXX_DiscardUnknown() {
xxx_messageInfo_SatelliteSummaryResponse.DiscardUnknown(m)
}
var xxx_messageInfo_SatelliteSummaryResponse proto.InternalMessageInfo
func (m *SatelliteSummaryResponse) GetPayoutInfo() *PayoutInfo {
if m != nil {
return m.PayoutInfo
}
return nil
}
type SatellitePeriodSummaryRequest struct {
Header *RequestHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"`
SatelliteId NodeID `protobuf:"bytes,2,opt,name=satellite_id,json=satelliteId,proto3,customtype=NodeID" json:"satellite_id"`
Period string `protobuf:"bytes,3,opt,name=period,proto3" json:"period,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *SatellitePeriodSummaryRequest) Reset() { *m = SatellitePeriodSummaryRequest{} }
func (m *SatellitePeriodSummaryRequest) String() string { return proto.CompactTextString(m) }
func (*SatellitePeriodSummaryRequest) ProtoMessage() {}
func (*SatellitePeriodSummaryRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_9a45fd79b06f3a1b, []int{23}
}
func (m *SatellitePeriodSummaryRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SatellitePeriodSummaryRequest.Unmarshal(m, b)
}
func (m *SatellitePeriodSummaryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_SatellitePeriodSummaryRequest.Marshal(b, m, deterministic)
}
func (m *SatellitePeriodSummaryRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_SatellitePeriodSummaryRequest.Merge(m, src)
}
func (m *SatellitePeriodSummaryRequest) XXX_Size() int {
return xxx_messageInfo_SatellitePeriodSummaryRequest.Size(m)
}
func (m *SatellitePeriodSummaryRequest) XXX_DiscardUnknown() {
xxx_messageInfo_SatellitePeriodSummaryRequest.DiscardUnknown(m)
}
var xxx_messageInfo_SatellitePeriodSummaryRequest proto.InternalMessageInfo
func (m *SatellitePeriodSummaryRequest) GetHeader() *RequestHeader {
if m != nil {
return m.Header
}
return nil
}
func (m *SatellitePeriodSummaryRequest) GetPeriod() string {
if m != nil {
return m.Period
}
return ""
}
type SatellitePeriodSummaryResponse struct {
PayoutInfo *PayoutInfo `protobuf:"bytes,1,opt,name=payout_info,json=payoutInfo,proto3" json:"payout_info,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *SatellitePeriodSummaryResponse) Reset() { *m = SatellitePeriodSummaryResponse{} }
func (m *SatellitePeriodSummaryResponse) String() string { return proto.CompactTextString(m) }
func (*SatellitePeriodSummaryResponse) ProtoMessage() {}
func (*SatellitePeriodSummaryResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_9a45fd79b06f3a1b, []int{24}
}
func (m *SatellitePeriodSummaryResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SatellitePeriodSummaryResponse.Unmarshal(m, b)
}
func (m *SatellitePeriodSummaryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_SatellitePeriodSummaryResponse.Marshal(b, m, deterministic)
}
func (m *SatellitePeriodSummaryResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_SatellitePeriodSummaryResponse.Merge(m, src)
}
func (m *SatellitePeriodSummaryResponse) XXX_Size() int {
return xxx_messageInfo_SatellitePeriodSummaryResponse.Size(m)
}
func (m *SatellitePeriodSummaryResponse) XXX_DiscardUnknown() {
xxx_messageInfo_SatellitePeriodSummaryResponse.DiscardUnknown(m)
}
var xxx_messageInfo_SatellitePeriodSummaryResponse proto.InternalMessageInfo
func (m *SatellitePeriodSummaryResponse) GetPayoutInfo() *PayoutInfo {
if m != nil {
return m.PayoutInfo
}
return nil
}
type EarnedRequest struct { type EarnedRequest struct {
Header *RequestHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` Header *RequestHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
@ -1013,7 +1175,7 @@ func (m *EarnedRequest) Reset() { *m = EarnedRequest{} }
func (m *EarnedRequest) String() string { return proto.CompactTextString(m) } func (m *EarnedRequest) String() string { return proto.CompactTextString(m) }
func (*EarnedRequest) ProtoMessage() {} func (*EarnedRequest) ProtoMessage() {}
func (*EarnedRequest) Descriptor() ([]byte, []int) { func (*EarnedRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_9a45fd79b06f3a1b, []int{21} return fileDescriptor_9a45fd79b06f3a1b, []int{25}
} }
func (m *EarnedRequest) XXX_Unmarshal(b []byte) error { func (m *EarnedRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_EarnedRequest.Unmarshal(m, b) return xxx_messageInfo_EarnedRequest.Unmarshal(m, b)
@ -1051,7 +1213,7 @@ func (m *EarnedResponse) Reset() { *m = EarnedResponse{} }
func (m *EarnedResponse) String() string { return proto.CompactTextString(m) } func (m *EarnedResponse) String() string { return proto.CompactTextString(m) }
func (*EarnedResponse) ProtoMessage() {} func (*EarnedResponse) ProtoMessage() {}
func (*EarnedResponse) Descriptor() ([]byte, []int) { func (*EarnedResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_9a45fd79b06f3a1b, []int{22} return fileDescriptor_9a45fd79b06f3a1b, []int{26}
} }
func (m *EarnedResponse) XXX_Unmarshal(b []byte) error { func (m *EarnedResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_EarnedResponse.Unmarshal(m, b) return xxx_messageInfo_EarnedResponse.Unmarshal(m, b)
@ -1089,7 +1251,7 @@ func (m *EarnedPerSatelliteRequest) Reset() { *m = EarnedPerSatelliteReq
func (m *EarnedPerSatelliteRequest) String() string { return proto.CompactTextString(m) } func (m *EarnedPerSatelliteRequest) String() string { return proto.CompactTextString(m) }
func (*EarnedPerSatelliteRequest) ProtoMessage() {} func (*EarnedPerSatelliteRequest) ProtoMessage() {}
func (*EarnedPerSatelliteRequest) Descriptor() ([]byte, []int) { func (*EarnedPerSatelliteRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_9a45fd79b06f3a1b, []int{23} return fileDescriptor_9a45fd79b06f3a1b, []int{27}
} }
func (m *EarnedPerSatelliteRequest) XXX_Unmarshal(b []byte) error { func (m *EarnedPerSatelliteRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_EarnedPerSatelliteRequest.Unmarshal(m, b) return xxx_messageInfo_EarnedPerSatelliteRequest.Unmarshal(m, b)
@ -1127,7 +1289,7 @@ func (m *EarnedPerSatelliteResponse) Reset() { *m = EarnedPerSatelliteRe
func (m *EarnedPerSatelliteResponse) String() string { return proto.CompactTextString(m) } func (m *EarnedPerSatelliteResponse) String() string { return proto.CompactTextString(m) }
func (*EarnedPerSatelliteResponse) ProtoMessage() {} func (*EarnedPerSatelliteResponse) ProtoMessage() {}
func (*EarnedPerSatelliteResponse) Descriptor() ([]byte, []int) { func (*EarnedPerSatelliteResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_9a45fd79b06f3a1b, []int{24} return fileDescriptor_9a45fd79b06f3a1b, []int{28}
} }
func (m *EarnedPerSatelliteResponse) XXX_Unmarshal(b []byte) error { func (m *EarnedPerSatelliteResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_EarnedPerSatelliteResponse.Unmarshal(m, b) return xxx_messageInfo_EarnedPerSatelliteResponse.Unmarshal(m, b)
@ -1166,7 +1328,7 @@ func (m *EarnedSatellite) Reset() { *m = EarnedSatellite{} }
func (m *EarnedSatellite) String() string { return proto.CompactTextString(m) } func (m *EarnedSatellite) String() string { return proto.CompactTextString(m) }
func (*EarnedSatellite) ProtoMessage() {} func (*EarnedSatellite) ProtoMessage() {}
func (*EarnedSatellite) Descriptor() ([]byte, []int) { func (*EarnedSatellite) Descriptor() ([]byte, []int) {
return fileDescriptor_9a45fd79b06f3a1b, []int{25} return fileDescriptor_9a45fd79b06f3a1b, []int{29}
} }
func (m *EarnedSatellite) XXX_Unmarshal(b []byte) error { func (m *EarnedSatellite) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_EarnedSatellite.Unmarshal(m, b) return xxx_messageInfo_EarnedSatellite.Unmarshal(m, b)
@ -1205,7 +1367,7 @@ func (m *PayoutInfo) Reset() { *m = PayoutInfo{} }
func (m *PayoutInfo) String() string { return proto.CompactTextString(m) } func (m *PayoutInfo) String() string { return proto.CompactTextString(m) }
func (*PayoutInfo) ProtoMessage() {} func (*PayoutInfo) ProtoMessage() {}
func (*PayoutInfo) Descriptor() ([]byte, []int) { func (*PayoutInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_9a45fd79b06f3a1b, []int{26} return fileDescriptor_9a45fd79b06f3a1b, []int{30}
} }
func (m *PayoutInfo) XXX_Unmarshal(b []byte) error { func (m *PayoutInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PayoutInfo.Unmarshal(m, b) return xxx_messageInfo_PayoutInfo.Unmarshal(m, b)
@ -1264,6 +1426,10 @@ func init() {
proto.RegisterType((*AllSatellitesSummaryResponse)(nil), "multinode.AllSatellitesSummaryResponse") proto.RegisterType((*AllSatellitesSummaryResponse)(nil), "multinode.AllSatellitesSummaryResponse")
proto.RegisterType((*AllSatellitesPeriodSummaryRequest)(nil), "multinode.AllSatellitesPeriodSummaryRequest") proto.RegisterType((*AllSatellitesPeriodSummaryRequest)(nil), "multinode.AllSatellitesPeriodSummaryRequest")
proto.RegisterType((*AllSatellitesPeriodSummaryResponse)(nil), "multinode.AllSatellitesPeriodSummaryResponse") proto.RegisterType((*AllSatellitesPeriodSummaryResponse)(nil), "multinode.AllSatellitesPeriodSummaryResponse")
proto.RegisterType((*SatelliteSummaryRequest)(nil), "multinode.SatelliteSummaryRequest")
proto.RegisterType((*SatelliteSummaryResponse)(nil), "multinode.SatelliteSummaryResponse")
proto.RegisterType((*SatellitePeriodSummaryRequest)(nil), "multinode.SatellitePeriodSummaryRequest")
proto.RegisterType((*SatellitePeriodSummaryResponse)(nil), "multinode.SatellitePeriodSummaryResponse")
proto.RegisterType((*EarnedRequest)(nil), "multinode.EarnedRequest") proto.RegisterType((*EarnedRequest)(nil), "multinode.EarnedRequest")
proto.RegisterType((*EarnedResponse)(nil), "multinode.EarnedResponse") proto.RegisterType((*EarnedResponse)(nil), "multinode.EarnedResponse")
proto.RegisterType((*EarnedPerSatelliteRequest)(nil), "multinode.EarnedPerSatelliteRequest") proto.RegisterType((*EarnedPerSatelliteRequest)(nil), "multinode.EarnedPerSatelliteRequest")
@ -1275,75 +1441,80 @@ func init() {
func init() { proto.RegisterFile("multinode.proto", fileDescriptor_9a45fd79b06f3a1b) } func init() { proto.RegisterFile("multinode.proto", fileDescriptor_9a45fd79b06f3a1b) }
var fileDescriptor_9a45fd79b06f3a1b = []byte{ var fileDescriptor_9a45fd79b06f3a1b = []byte{
// 1120 bytes of a gzipped FileDescriptorProto // 1199 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0x5f, 0x73, 0xdb, 0x44, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0xdd, 0x72, 0xdb, 0x44,
0x10, 0x47, 0x4d, 0x22, 0xd7, 0xeb, 0x34, 0x7f, 0x8e, 0x00, 0x8a, 0xea, 0xd4, 0x41, 0x0d, 0x4d, 0x14, 0x46, 0x4d, 0x22, 0xd7, 0xc7, 0x69, 0x7e, 0x96, 0xd0, 0x2a, 0xaa, 0x13, 0x07, 0x25, 0x34,
0xa0, 0xad, 0x03, 0x2e, 0xc3, 0x0c, 0x33, 0x30, 0x43, 0x42, 0x52, 0x9a, 0x21, 0xa1, 0xa9, 0x1c, 0x29, 0x6d, 0x1d, 0x70, 0x19, 0x66, 0x98, 0x81, 0x19, 0x12, 0x92, 0xd2, 0x0c, 0x09, 0x4d, 0x95,
0xfa, 0x50, 0x98, 0x7a, 0x2e, 0xd6, 0xc5, 0x16, 0x95, 0x75, 0x42, 0x77, 0x0a, 0xf8, 0x0b, 0xf0, 0xd0, 0x61, 0x0a, 0x53, 0xcf, 0xc6, 0xda, 0x38, 0xa2, 0xb2, 0x56, 0x68, 0xd7, 0x81, 0xdc, 0x70,
0xcc, 0x37, 0x62, 0x78, 0x61, 0xf8, 0x0c, 0x3c, 0x94, 0x2f, 0xc0, 0x3b, 0xaf, 0xcc, 0xfd, 0xb1, 0xc9, 0x35, 0x0f, 0xc0, 0x83, 0x70, 0xc7, 0x70, 0xc3, 0xf0, 0x0c, 0x5c, 0x94, 0xc7, 0xe0, 0x96,
0x2c, 0xdb, 0xb2, 0x93, 0xb1, 0x67, 0x78, 0xbb, 0xdb, 0xfd, 0xed, 0x6f, 0xf7, 0x76, 0xef, 0xf6, 0xd9, 0x1f, 0xcb, 0xb2, 0x2d, 0x2b, 0xc1, 0x66, 0xb8, 0xdb, 0x3d, 0x3f, 0xdf, 0x39, 0xbb, 0xe7,
0x16, 0x96, 0x3b, 0x49, 0xc0, 0xfd, 0x90, 0x7a, 0xa4, 0x1a, 0xc5, 0x94, 0x53, 0x54, 0x4c, 0x05, 0xe8, 0xec, 0x27, 0x98, 0x6d, 0xb5, 0x03, 0xee, 0x87, 0xd4, 0x23, 0xd5, 0x28, 0xa6, 0x9c, 0xa2,
0x36, 0xb4, 0x68, 0x8b, 0x2a, 0xb1, 0x5d, 0x69, 0x51, 0xda, 0x0a, 0xc8, 0xae, 0xdc, 0x9d, 0x27, 0x62, 0x22, 0xb0, 0xa1, 0x49, 0x9b, 0x54, 0x89, 0xed, 0x4a, 0x93, 0xd2, 0x66, 0x40, 0x36, 0xe5,
0x17, 0xbb, 0xdc, 0xef, 0x10, 0xc6, 0x71, 0x27, 0x52, 0x00, 0x67, 0x07, 0x6e, 0xb9, 0xe4, 0xc7, 0xee, 0xa4, 0x7d, 0xba, 0xc9, 0xfd, 0x16, 0x61, 0x1c, 0xb7, 0x22, 0x65, 0xe0, 0x6c, 0xc0, 0x0d,
0x84, 0x30, 0xfe, 0x84, 0x60, 0x8f, 0xc4, 0xe8, 0x1d, 0x28, 0xe0, 0xc8, 0x6f, 0xbc, 0x22, 0x5d, 0x97, 0x7c, 0xdb, 0x26, 0x8c, 0x3f, 0x26, 0xd8, 0x23, 0x31, 0xba, 0x05, 0x05, 0x1c, 0xf9, 0xf5,
0xcb, 0xd8, 0x34, 0x76, 0x16, 0x5d, 0x13, 0x47, 0xfe, 0xd7, 0xa4, 0xeb, 0x1c, 0xc0, 0xca, 0x81, 0x97, 0xe4, 0xc2, 0x32, 0x56, 0x8c, 0x8d, 0x69, 0xd7, 0xc4, 0x91, 0xff, 0x19, 0xb9, 0x70, 0x76,
0xcf, 0x5e, 0xd5, 0x23, 0xdc, 0x24, 0xda, 0x04, 0x7d, 0x08, 0x66, 0x5b, 0x9a, 0x49, 0x6c, 0xa9, 0x60, 0x6e, 0xc7, 0x67, 0x2f, 0x8f, 0x22, 0xdc, 0x20, 0xda, 0x05, 0xbd, 0x03, 0xe6, 0x99, 0x74,
0x66, 0x55, 0xfb, 0x71, 0x0d, 0xd0, 0xba, 0x1a, 0xe7, 0xfc, 0x66, 0xc0, 0x6a, 0x86, 0x86, 0x45, 0x93, 0xb6, 0xa5, 0x9a, 0x55, 0xed, 0xe6, 0xd5, 0x03, 0xeb, 0x6a, 0x3b, 0xe7, 0x57, 0x03, 0xe6,
0x34, 0x64, 0x04, 0x95, 0xa1, 0x88, 0x83, 0x80, 0x36, 0x31, 0x27, 0x9e, 0xa4, 0x9a, 0x73, 0xfb, 0x53, 0x30, 0x2c, 0xa2, 0x21, 0x23, 0xa8, 0x0c, 0x45, 0x1c, 0x04, 0xb4, 0x81, 0x39, 0xf1, 0x24,
0x02, 0x54, 0x81, 0x52, 0xc2, 0x88, 0xd7, 0x88, 0x7c, 0xd2, 0x24, 0xcc, 0xba, 0x21, 0xf5, 0x20, 0xd4, 0x84, 0xdb, 0x15, 0xa0, 0x0a, 0x94, 0xda, 0x8c, 0x78, 0xf5, 0xc8, 0x27, 0x0d, 0xc2, 0xac,
0x44, 0xa7, 0x52, 0x82, 0x36, 0x40, 0xee, 0x1a, 0x3c, 0xc6, 0xac, 0x6d, 0xcd, 0x29, 0x7b, 0x21, 0x6b, 0x52, 0x0f, 0x42, 0x74, 0x28, 0x25, 0x68, 0x09, 0xe4, 0xae, 0xce, 0x63, 0xcc, 0xce, 0xac,
0x39, 0x13, 0x02, 0x84, 0x60, 0xfe, 0x22, 0x26, 0xc4, 0x9a, 0x97, 0x0a, 0xb9, 0x96, 0x1e, 0x2f, 0x09, 0xe5, 0x2f, 0x24, 0xc7, 0x42, 0x80, 0x10, 0x4c, 0x9e, 0xc6, 0x84, 0x58, 0x93, 0x52, 0x21,
0xb1, 0x1f, 0xe0, 0xf3, 0x80, 0x58, 0x0b, 0xda, 0x63, 0x4f, 0x80, 0x6c, 0xb8, 0x49, 0x2f, 0x49, 0xd7, 0x32, 0xe2, 0x39, 0xf6, 0x03, 0x7c, 0x12, 0x10, 0x6b, 0x4a, 0x47, 0xec, 0x08, 0x90, 0x0d,
0x2c, 0x28, 0x2c, 0x53, 0x2a, 0xd3, 0xbd, 0x73, 0x0a, 0xe5, 0x7d, 0x1c, 0x7a, 0x3f, 0xf9, 0x1e, 0xd7, 0xe9, 0x39, 0x89, 0x05, 0x84, 0x65, 0x4a, 0x65, 0xb2, 0x77, 0x0e, 0xa1, 0xbc, 0x8d, 0x43,
0x6f, 0x9f, 0xd0, 0x90, 0xb7, 0xeb, 0x49, 0xa7, 0x83, 0xe3, 0xee, 0xf4, 0x39, 0x79, 0x04, 0x1b, 0xef, 0x3b, 0xdf, 0xe3, 0x67, 0x07, 0x34, 0xe4, 0x67, 0x47, 0xed, 0x56, 0x0b, 0xc7, 0x17, 0xa3,
0x63, 0x18, 0x75, 0x7a, 0x10, 0xcc, 0xcb, 0x50, 0x54, 0x66, 0xe4, 0xda, 0xd9, 0x87, 0xa5, 0xe7, 0xdf, 0xc9, 0x43, 0x58, 0x1a, 0x82, 0xa8, 0xaf, 0x07, 0xc1, 0xa4, 0x4c, 0x45, 0xdd, 0x8c, 0x5c,
0x24, 0x66, 0x3e, 0x0d, 0xa7, 0x77, 0x7c, 0x1f, 0x96, 0x53, 0x0e, 0xed, 0xca, 0x82, 0xc2, 0xa5, 0x3b, 0xdb, 0x30, 0xf3, 0x8c, 0xc4, 0xcc, 0xa7, 0xe1, 0xe8, 0x81, 0xef, 0xc1, 0x6c, 0x82, 0xa1,
0x12, 0x49, 0x96, 0xa2, 0xdb, 0xdb, 0x3a, 0x8f, 0x01, 0x1d, 0x63, 0xc6, 0xbf, 0xa4, 0x21, 0xc7, 0x43, 0x59, 0x50, 0x38, 0x57, 0x22, 0x89, 0x52, 0x74, 0x3b, 0x5b, 0xe7, 0x11, 0xa0, 0x7d, 0xcc,
0x4d, 0x3e, 0xbd, 0xd3, 0x97, 0xf0, 0xe6, 0x00, 0x8f, 0x76, 0xfc, 0x15, 0x2c, 0x06, 0x98, 0xf1, 0xf8, 0x27, 0x34, 0xe4, 0xb8, 0xc1, 0x47, 0x0f, 0xfa, 0x02, 0x5e, 0xef, 0xc1, 0xd1, 0x81, 0x3f,
0x46, 0x53, 0xc9, 0x35, 0x9d, 0x5d, 0x55, 0x17, 0xb8, 0xda, 0xbb, 0xc0, 0xd5, 0xb3, 0xde, 0x05, 0x85, 0xe9, 0x00, 0x33, 0x5e, 0x6f, 0x28, 0xb9, 0x86, 0xb3, 0xab, 0xaa, 0x81, 0xab, 0x9d, 0x06,
0xde, 0xbf, 0xf9, 0xe7, 0xeb, 0xca, 0x1b, 0xbf, 0xfe, 0x5d, 0x31, 0xdc, 0x52, 0xd0, 0x27, 0x74, 0xae, 0x1e, 0x77, 0x1a, 0x78, 0xfb, 0xfa, 0x1f, 0xaf, 0x2a, 0xaf, 0xfd, 0xf4, 0x57, 0xc5, 0x70,
0x7e, 0x86, 0x55, 0x97, 0x44, 0x09, 0xc7, 0x7c, 0x96, 0xdc, 0xa0, 0x8f, 0x60, 0x91, 0x61, 0x4e, 0x4b, 0x41, 0x17, 0xd0, 0xf9, 0x1e, 0xe6, 0x5d, 0x12, 0xb5, 0x39, 0xe6, 0xe3, 0xdc, 0x0d, 0x7a,
0x82, 0xc0, 0xe7, 0xa4, 0xe1, 0x7b, 0xf2, 0xd6, 0x2d, 0xee, 0x2f, 0x09, 0x9f, 0x7f, 0xbd, 0xae, 0x17, 0xa6, 0x19, 0xe6, 0x24, 0x08, 0x7c, 0x4e, 0xea, 0xbe, 0x27, 0xbb, 0x6e, 0x7a, 0x7b, 0x46,
0x98, 0xdf, 0x50, 0x8f, 0x1c, 0x1d, 0xb8, 0xa5, 0x14, 0x73, 0xe4, 0x39, 0xff, 0x1a, 0x80, 0xb2, 0xc4, 0xfc, 0xf3, 0x55, 0xc5, 0xfc, 0x9c, 0x7a, 0x64, 0x6f, 0xc7, 0x2d, 0x25, 0x36, 0x7b, 0x9e,
0xae, 0xf5, 0xc9, 0x3e, 0x03, 0x93, 0x86, 0x81, 0x1f, 0x12, 0xed, 0x7b, 0x6b, 0xc0, 0xf7, 0x30, 0xf3, 0xb7, 0x01, 0x28, 0x1d, 0x5a, 0x9f, 0xec, 0x43, 0x30, 0x69, 0x18, 0xf8, 0x21, 0xd1, 0xb1,
0xbc, 0xfa, 0x54, 0x62, 0x5d, 0x6d, 0x83, 0x3e, 0x85, 0x05, 0x9c, 0x78, 0x3e, 0x97, 0x01, 0x94, 0xd7, 0x7a, 0x62, 0xf7, 0x9b, 0x57, 0x9f, 0x48, 0x5b, 0x57, 0xfb, 0xa0, 0x0f, 0x60, 0x0a, 0xb7,
0x6a, 0x77, 0x27, 0x1b, 0xef, 0x09, 0xa8, 0xab, 0x2c, 0xec, 0x3b, 0x60, 0x2a, 0x32, 0xb4, 0x06, 0x3d, 0x9f, 0xcb, 0x04, 0x4a, 0xb5, 0xd5, 0x7c, 0xe7, 0x2d, 0x61, 0xea, 0x2a, 0x0f, 0x7b, 0x19,
0x0b, 0xac, 0x49, 0x63, 0x15, 0x81, 0xe1, 0xaa, 0x8d, 0xfd, 0x04, 0x16, 0x24, 0x3e, 0x5f, 0x8d, 0x4c, 0x05, 0x86, 0x16, 0x60, 0x8a, 0x35, 0x68, 0xac, 0x32, 0x30, 0x5c, 0xb5, 0xb1, 0x1f, 0xc3,
0xde, 0x87, 0x15, 0x96, 0xb0, 0x88, 0x84, 0xa2, 0xfc, 0x0d, 0x05, 0xb8, 0x21, 0x01, 0xcb, 0x7d, 0x94, 0xb4, 0xcf, 0x56, 0xa3, 0xbb, 0x30, 0xc7, 0xda, 0x2c, 0x22, 0xa1, 0x28, 0x7f, 0x5d, 0x19,
0x79, 0x5d, 0x88, 0x9d, 0x63, 0xb0, 0xce, 0xe2, 0x84, 0x71, 0xe2, 0xd5, 0x7b, 0xf9, 0x60, 0xd3, 0x5c, 0x93, 0x06, 0xb3, 0x5d, 0xf9, 0x91, 0x10, 0x3b, 0xfb, 0x60, 0x1d, 0xc7, 0x6d, 0xc6, 0x89,
0xdf, 0x90, 0x3f, 0x0c, 0x58, 0xcf, 0xa1, 0xd3, 0xe9, 0xfc, 0x0e, 0x10, 0x57, 0xca, 0x46, 0x9a, 0x77, 0xd4, 0xb9, 0x0f, 0x36, 0x7a, 0x87, 0xfc, 0x6e, 0xc0, 0x62, 0x06, 0x9c, 0xbe, 0xce, 0xaf,
0x7c, 0x66, 0x19, 0x9b, 0x73, 0x3b, 0xa5, 0xda, 0x83, 0x0c, 0xf7, 0x58, 0x86, 0xaa, 0xa8, 0xdd, 0x00, 0x71, 0xa5, 0xac, 0x27, 0x97, 0xcf, 0x2c, 0x63, 0x65, 0x62, 0xa3, 0x54, 0xbb, 0x9f, 0xc2,
0xb7, 0xee, 0xb1, 0xbb, 0xca, 0x87, 0x21, 0xf6, 0x31, 0x14, 0xb4, 0x16, 0x6d, 0x43, 0x41, 0xf0, 0x1e, 0x8a, 0x50, 0x15, 0xb5, 0xfb, 0xc2, 0xdd, 0x77, 0xe7, 0x79, 0xbf, 0x89, 0xbd, 0x0f, 0x05,
0x88, 0xda, 0x1b, 0xb9, 0xb5, 0x37, 0x85, 0xfa, 0xc8, 0x13, 0x4f, 0x06, 0x7b, 0x5e, 0x4c, 0x98, 0xad, 0x45, 0xeb, 0x50, 0x10, 0x38, 0xa2, 0xf6, 0x46, 0x66, 0xed, 0x4d, 0xa1, 0xde, 0xf3, 0xc4,
0x6a, 0x4d, 0x45, 0xb7, 0xb7, 0x75, 0x7e, 0x31, 0xa0, 0x72, 0xc8, 0xb8, 0xdf, 0x11, 0x6d, 0xec, 0x27, 0x83, 0x3d, 0x2f, 0x26, 0x4c, 0x8d, 0xa6, 0xa2, 0xdb, 0xd9, 0x3a, 0x3f, 0x1a, 0x50, 0xd9,
0x14, 0x77, 0x69, 0xc2, 0x53, 0x5f, 0xff, 0xeb, 0xcd, 0x7c, 0x06, 0x9b, 0xe3, 0xe3, 0xd0, 0x79, 0x65, 0xdc, 0x6f, 0x89, 0x31, 0x76, 0x88, 0x2f, 0x68, 0x9b, 0x27, 0xb1, 0xfe, 0xd7, 0xce, 0x7c,
0x7d, 0x08, 0x88, 0xf4, 0x30, 0x0d, 0x82, 0xe3, 0xd0, 0x0f, 0x5b, 0x4c, 0xb7, 0x9c, 0xd5, 0x54, 0x0a, 0x2b, 0xc3, 0xf3, 0xd0, 0xf7, 0xfa, 0x00, 0x10, 0xe9, 0xd8, 0xd4, 0x09, 0x8e, 0x43, 0x3f,
0x73, 0xa8, 0x15, 0xce, 0x53, 0xb8, 0x3d, 0x44, 0x79, 0x46, 0x39, 0x0e, 0xa6, 0xaf, 0xfa, 0x09, 0x6c, 0x32, 0x3d, 0x72, 0xe6, 0x13, 0xcd, 0xae, 0x56, 0x38, 0x4f, 0xe0, 0x76, 0x1f, 0xe4, 0x31,
0x94, 0xf3, 0x09, 0xa7, 0x8e, 0x6f, 0x2f, 0x08, 0xfa, 0xa5, 0x9d, 0xb9, 0x4b, 0x3f, 0x87, 0x72, 0xe5, 0x38, 0x18, 0xbd, 0xea, 0x07, 0x50, 0xce, 0x06, 0x1c, 0x39, 0xbf, 0xad, 0x20, 0xe8, 0x96,
0x3e, 0xa1, 0x8e, 0xef, 0x13, 0x28, 0x45, 0x32, 0xec, 0x86, 0x1f, 0x5e, 0x50, 0x4d, 0xfb, 0x56, 0x76, 0xec, 0x29, 0xfd, 0x0c, 0xca, 0xd9, 0x80, 0x3a, 0xbf, 0xf7, 0xa1, 0x14, 0xc9, 0xb4, 0xeb,
0x86, 0x56, 0x1d, 0xea, 0x28, 0xbc, 0xa0, 0x2e, 0x44, 0xe9, 0xda, 0xe9, 0xc0, 0xbb, 0x03, 0xbc, 0x7e, 0x78, 0x4a, 0x35, 0xec, 0x1b, 0x29, 0x58, 0x75, 0xa8, 0xbd, 0xf0, 0x94, 0xba, 0x10, 0x25,
0xa7, 0x24, 0xf6, 0xa9, 0x37, 0x6b, 0xb8, 0xe8, 0x6d, 0x30, 0x23, 0xc9, 0xa4, 0x2f, 0xa5, 0xde, 0x6b, 0xa7, 0x05, 0x6f, 0xf6, 0xe0, 0x1e, 0x92, 0xd8, 0xa7, 0xde, 0xb8, 0xe9, 0xa2, 0x9b, 0x60,
0x39, 0xdf, 0x83, 0x33, 0xc9, 0xdd, 0x8c, 0x87, 0xd9, 0x83, 0x5b, 0xa2, 0x02, 0xc4, 0x9b, 0x3e, 0x46, 0x12, 0x49, 0x37, 0xa5, 0xde, 0x39, 0x5f, 0x83, 0x93, 0x17, 0x6e, 0xcc, 0xc3, 0xfc, 0x00,
0xcf, 0xf7, 0x60, 0xa9, 0x47, 0xa1, 0x83, 0x59, 0x83, 0x05, 0x2e, 0xae, 0x82, 0x2e, 0xb6, 0xda, 0xb7, 0x12, 0xe8, 0xb1, 0x8f, 0x30, 0x42, 0xa3, 0xbb, 0x60, 0x0d, 0xc6, 0x1f, 0xf3, 0x4c, 0x3f,
0x38, 0x27, 0xb0, 0xae, 0x70, 0xa7, 0x24, 0x9e, 0xfd, 0x55, 0x39, 0x4d, 0xb0, 0xf3, 0xe8, 0x74, 0x1b, 0xb0, 0x94, 0x80, 0xfe, 0x47, 0xd5, 0xf9, 0xf7, 0x47, 0x4b, 0x15, 0x74, 0xa2, 0xa7, 0xa0,
0x08, 0x87, 0xb0, 0x42, 0xa4, 0xb6, 0xdf, 0x73, 0x74, 0xcb, 0xb1, 0x33, 0xcc, 0x8a, 0xa0, 0x6f, 0x5f, 0xc2, 0xf2, 0xb0, 0xec, 0xc6, 0x3c, 0xf8, 0x16, 0xdc, 0x10, 0x9f, 0x13, 0xf1, 0x46, 0xff,
0xbd, 0x4c, 0x06, 0x05, 0xce, 0x0b, 0x58, 0x1e, 0xc2, 0xe4, 0x1f, 0x6e, 0x9a, 0x37, 0xfe, 0x31, 0x68, 0xee, 0xc0, 0x4c, 0x07, 0x42, 0x27, 0xb3, 0x00, 0x53, 0x5c, 0x7c, 0xd7, 0xfa, 0xcb, 0x55,
0x40, 0xbf, 0x28, 0x62, 0x64, 0x68, 0x93, 0x20, 0x1d, 0x19, 0xc4, 0x5a, 0xc8, 0x22, 0xac, 0xc9, 0x1b, 0xe7, 0x00, 0x16, 0x95, 0xdd, 0x21, 0x89, 0xc7, 0x1f, 0x91, 0x4e, 0x03, 0xec, 0x2c, 0x38,
0xe6, 0x5c, 0xb9, 0xae, 0x3d, 0x83, 0x42, 0x9d, 0xd3, 0x18, 0xb7, 0x08, 0x7a, 0x0c, 0xc5, 0x74, 0x9d, 0xc2, 0x2e, 0xcc, 0x11, 0xa9, 0xed, 0x3e, 0x20, 0xfa, 0xfd, 0xb0, 0x53, 0xc8, 0x0a, 0xa0,
0x32, 0x43, 0xb7, 0x33, 0xc7, 0x1a, 0x1e, 0xfb, 0xec, 0x72, 0xbe, 0x52, 0xe5, 0xaa, 0x16, 0x42, 0xeb, 0x3d, 0x4b, 0x7a, 0x05, 0xce, 0x73, 0x98, 0xed, 0xb3, 0xc9, 0x3e, 0xdc, 0x28, 0x7d, 0xfc,
0x31, 0x1d, 0x67, 0x10, 0x86, 0xc5, 0xec, 0x48, 0x83, 0xb6, 0x33, 0xa6, 0x93, 0xc6, 0x28, 0x7b, 0x1e, 0x40, 0xb7, 0x28, 0x82, 0xff, 0x9d, 0x91, 0x20, 0xe1, 0x7f, 0x62, 0x2d, 0x64, 0x11, 0xd6,
0xe7, 0x6a, 0xa0, 0xf6, 0xf7, 0xfb, 0x0d, 0x98, 0x17, 0x09, 0x41, 0x5f, 0x40, 0x41, 0x8f, 0x33, 0x60, 0x13, 0xae, 0x5c, 0xd7, 0x9e, 0x42, 0xe1, 0x88, 0xd3, 0x18, 0x37, 0x09, 0x7a, 0x04, 0xc5,
0x68, 0x3d, 0x63, 0x3d, 0x38, 0x26, 0xd9, 0x76, 0x9e, 0x4a, 0x97, 0xf9, 0x18, 0x4a, 0x99, 0xd9, 0x84, 0x66, 0xa3, 0xdb, 0xa9, 0x63, 0xf5, 0x73, 0x78, 0xbb, 0x9c, 0xad, 0x54, 0x77, 0x55, 0x0b,
0x04, 0x6d, 0x64, 0xa0, 0xa3, 0xb3, 0x8f, 0x7d, 0x67, 0x9c, 0x5a, 0xb3, 0x1d, 0x01, 0xf4, 0xbf, 0xa1, 0x98, 0x70, 0x53, 0x84, 0x61, 0x3a, 0xcd, 0x4f, 0xd1, 0x7a, 0xca, 0x35, 0x8f, 0x13, 0xdb,
0x68, 0x54, 0x1e, 0xf3, 0x73, 0x2b, 0xae, 0x8d, 0x89, 0xff, 0x3a, 0x7a, 0x09, 0xab, 0x23, 0xff, 0x1b, 0x97, 0x1b, 0xea, 0x78, 0xbf, 0x5d, 0x83, 0x49, 0x71, 0x21, 0xe8, 0x63, 0x28, 0x68, 0x6e,
0x19, 0xba, 0x3b, 0xf9, 0xb7, 0x53, 0xc4, 0x5b, 0xd7, 0xf9, 0x12, 0x6b, 0xff, 0xcc, 0x83, 0xa9, 0x8a, 0x16, 0x53, 0xde, 0xbd, 0x9c, 0xd7, 0xb6, 0xb3, 0x54, 0xba, 0xcc, 0xfb, 0x50, 0x4a, 0x11,
0x6e, 0x0f, 0x6a, 0xc1, 0x5a, 0x5e, 0x9f, 0x43, 0xf7, 0x32, 0x44, 0x13, 0x3a, 0xab, 0xbd, 0x7d, 0x4d, 0xb4, 0x94, 0x32, 0x1d, 0x24, 0xb2, 0xf6, 0xf2, 0x30, 0xb5, 0x46, 0xdb, 0x03, 0xe8, 0xf2,
0x25, 0x4e, 0x9f, 0xa9, 0x0b, 0xf6, 0xf8, 0x4e, 0x84, 0x1e, 0x8c, 0xa3, 0xc9, 0xeb, 0x8f, 0xf6, 0x2d, 0x54, 0x1e, 0x42, 0xc3, 0x14, 0xd6, 0x52, 0x2e, 0x49, 0x43, 0x2f, 0x60, 0x7e, 0x80, 0x9c,
0xc3, 0x6b, 0xa2, 0xb5, 0xeb, 0xcf, 0xc1, 0x54, 0xef, 0x10, 0x59, 0x23, 0xcf, 0xb7, 0x47, 0xb9, 0xa0, 0xd5, 0x7c, 0xea, 0xa2, 0x80, 0xd7, 0xae, 0xc2, 0x6f, 0x6a, 0xbf, 0x98, 0x60, 0xaa, 0xee,
0x9e, 0xa3, 0xd1, 0xe6, 0x18, 0xd0, 0x68, 0xaf, 0x40, 0x5b, 0x23, 0x06, 0x39, 0x9d, 0xc9, 0x7e, 0x41, 0x4d, 0x58, 0xc8, 0x7a, 0xb4, 0xd0, 0x9d, 0x14, 0x50, 0xce, 0x33, 0x69, 0xaf, 0x5f, 0x6a,
0xef, 0x0a, 0x94, 0x76, 0xc1, 0xc0, 0x1a, 0xf7, 0x63, 0xa3, 0x0f, 0xb2, 0x14, 0x93, 0xc7, 0x0b, 0xa7, 0xcf, 0x74, 0x01, 0xf6, 0xf0, 0x67, 0x05, 0xdd, 0x1f, 0x06, 0x93, 0x35, 0x4e, 0xed, 0x07,
0xfb, 0xfe, 0xb5, 0xb0, 0xda, 0x69, 0x0b, 0xd6, 0xf2, 0xbe, 0xe0, 0x81, 0xd2, 0x4f, 0xf8, 0xf4, 0x57, 0xb4, 0x4e, 0x08, 0xe1, 0x5c, 0xff, 0xcc, 0x47, 0x4e, 0x0a, 0x62, 0xc8, 0x83, 0x64, 0xaf,
0x07, 0x4a, 0x3f, 0xe9, 0x2f, 0xdf, 0xdf, 0x7a, 0xe1, 0x30, 0x4e, 0xe3, 0x1f, 0xaa, 0x3e, 0xdd, 0xe6, 0xda, 0x68, 0xf0, 0x16, 0xdc, 0xcc, 0x9e, 0xae, 0x68, 0x23, 0xcb, 0x3d, 0xf3, 0x3c, 0x77,
0x95, 0x8b, 0xdd, 0x28, 0xf6, 0x2f, 0x31, 0x27, 0xbb, 0x29, 0x41, 0x74, 0x7e, 0x6e, 0xca, 0xa1, 0xaf, 0x60, 0xa9, 0xc3, 0x7d, 0x04, 0xa6, 0x9a, 0x29, 0xc8, 0x1a, 0x18, 0x45, 0x1d, 0xb8, 0xc5,
0xff, 0xd1, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xe2, 0x80, 0x59, 0xb0, 0xed, 0x0e, 0x00, 0x00, 0x0c, 0x8d, 0x76, 0xc7, 0x80, 0x06, 0xe7, 0x1e, 0x5a, 0x1b, 0x70, 0xc8, 0x98, 0xb2, 0xf6, 0x5b,
0x97, 0x58, 0xe9, 0x10, 0x0c, 0xac, 0x61, 0x54, 0x12, 0xbd, 0x9d, 0x86, 0xc8, 0xe7, 0xbd, 0xf6,
0xbd, 0x2b, 0xd9, 0xea, 0xa0, 0x4d, 0x58, 0xc8, 0xe2, 0x86, 0x3d, 0x6d, 0x9c, 0xc3, 0x46, 0x7b,
0xda, 0x38, 0x8f, 0x64, 0x6e, 0xaf, 0x3d, 0x77, 0x18, 0xa7, 0xf1, 0x37, 0x55, 0x9f, 0x6e, 0xca,
0xc5, 0x66, 0x14, 0xfb, 0xe7, 0x98, 0x93, 0xcd, 0x04, 0x20, 0x3a, 0x39, 0x31, 0xe5, 0xdf, 0xe8,
0xc3, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x44, 0x72, 0xb4, 0x3b, 0x86, 0x11, 0x00, 0x00,
} }

View File

@ -99,6 +99,8 @@ message TrustedSatellitesResponse {
service Payout { service Payout {
rpc AllSatellitesSummary(AllSatellitesSummaryRequest) returns (AllSatellitesSummaryResponse); rpc AllSatellitesSummary(AllSatellitesSummaryRequest) returns (AllSatellitesSummaryResponse);
rpc AllSatellitesPeriodSummary(AllSatellitesPeriodSummaryRequest) returns (AllSatellitesPeriodSummaryResponse); rpc AllSatellitesPeriodSummary(AllSatellitesPeriodSummaryRequest) returns (AllSatellitesPeriodSummaryResponse);
rpc SatelliteSummary(SatelliteSummaryRequest) returns (SatelliteSummaryResponse);
rpc SatellitePeriodSummary(SatellitePeriodSummaryRequest) returns (SatellitePeriodSummaryResponse);
rpc Earned(EarnedRequest) returns (EarnedResponse); rpc Earned(EarnedRequest) returns (EarnedResponse);
rpc EarnedPerSatellite(EarnedPerSatelliteRequest) returns (EarnedPerSatelliteResponse); rpc EarnedPerSatellite(EarnedPerSatelliteRequest) returns (EarnedPerSatelliteResponse);
rpc EstimatedPayoutSatellite(EstimatedPayoutSatelliteRequest) returns (EstimatedPayoutSatelliteResponse); rpc EstimatedPayoutSatellite(EstimatedPayoutSatelliteRequest) returns (EstimatedPayoutSatelliteResponse);
@ -109,12 +111,15 @@ message EstimatedPayoutSatelliteRequest {
RequestHeader header = 1; RequestHeader header = 1;
bytes satellite_id = 2 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false]; bytes satellite_id = 2 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false];
} }
message EstimatedPayoutSatelliteResponse { message EstimatedPayoutSatelliteResponse {
int64 estimated_earnings = 1; int64 estimated_earnings = 1;
} }
message EstimatedPayoutTotalRequest { message EstimatedPayoutTotalRequest {
RequestHeader header = 1; RequestHeader header = 1;
} }
message EstimatedPayoutTotalResponse { message EstimatedPayoutTotalResponse {
int64 estimated_earnings = 1; int64 estimated_earnings = 1;
} }
@ -136,6 +141,25 @@ message AllSatellitesPeriodSummaryResponse {
PayoutInfo payout_info = 1; PayoutInfo payout_info = 1;
} }
message SatelliteSummaryRequest {
RequestHeader header = 1;
bytes satellite_id = 2 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false];
}
message SatelliteSummaryResponse {
PayoutInfo payout_info = 1;
}
message SatellitePeriodSummaryRequest {
RequestHeader header = 1;
bytes satellite_id = 2 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false];
string period = 3;
}
message SatellitePeriodSummaryResponse {
PayoutInfo payout_info = 1;
}
message EarnedRequest { message EarnedRequest {
RequestHeader header = 1; RequestHeader header = 1;
} }

View File

@ -389,6 +389,8 @@ type DRPCPayoutClient interface {
AllSatellitesSummary(ctx context.Context, in *AllSatellitesSummaryRequest) (*AllSatellitesSummaryResponse, error) AllSatellitesSummary(ctx context.Context, in *AllSatellitesSummaryRequest) (*AllSatellitesSummaryResponse, error)
AllSatellitesPeriodSummary(ctx context.Context, in *AllSatellitesPeriodSummaryRequest) (*AllSatellitesPeriodSummaryResponse, error) AllSatellitesPeriodSummary(ctx context.Context, in *AllSatellitesPeriodSummaryRequest) (*AllSatellitesPeriodSummaryResponse, error)
SatelliteSummary(ctx context.Context, in *SatelliteSummaryRequest) (*SatelliteSummaryResponse, error)
SatellitePeriodSummary(ctx context.Context, in *SatellitePeriodSummaryRequest) (*SatellitePeriodSummaryResponse, error)
Earned(ctx context.Context, in *EarnedRequest) (*EarnedResponse, error) Earned(ctx context.Context, in *EarnedRequest) (*EarnedResponse, error)
EarnedPerSatellite(ctx context.Context, in *EarnedPerSatelliteRequest) (*EarnedPerSatelliteResponse, error) EarnedPerSatellite(ctx context.Context, in *EarnedPerSatelliteRequest) (*EarnedPerSatelliteResponse, error)
EstimatedPayoutSatellite(ctx context.Context, in *EstimatedPayoutSatelliteRequest) (*EstimatedPayoutSatelliteResponse, error) EstimatedPayoutSatellite(ctx context.Context, in *EstimatedPayoutSatelliteRequest) (*EstimatedPayoutSatelliteResponse, error)
@ -423,6 +425,24 @@ func (c *drpcPayoutClient) AllSatellitesPeriodSummary(ctx context.Context, in *A
return out, nil return out, nil
} }
func (c *drpcPayoutClient) SatelliteSummary(ctx context.Context, in *SatelliteSummaryRequest) (*SatelliteSummaryResponse, error) {
out := new(SatelliteSummaryResponse)
err := c.cc.Invoke(ctx, "/multinode.Payout/SatelliteSummary", drpcEncoding_File_multinode_proto{}, in, out)
if err != nil {
return nil, err
}
return out, nil
}
func (c *drpcPayoutClient) SatellitePeriodSummary(ctx context.Context, in *SatellitePeriodSummaryRequest) (*SatellitePeriodSummaryResponse, error) {
out := new(SatellitePeriodSummaryResponse)
err := c.cc.Invoke(ctx, "/multinode.Payout/SatellitePeriodSummary", drpcEncoding_File_multinode_proto{}, in, out)
if err != nil {
return nil, err
}
return out, nil
}
func (c *drpcPayoutClient) Earned(ctx context.Context, in *EarnedRequest) (*EarnedResponse, error) { func (c *drpcPayoutClient) Earned(ctx context.Context, in *EarnedRequest) (*EarnedResponse, error) {
out := new(EarnedResponse) out := new(EarnedResponse)
err := c.cc.Invoke(ctx, "/multinode.Payout/Earned", drpcEncoding_File_multinode_proto{}, in, out) err := c.cc.Invoke(ctx, "/multinode.Payout/Earned", drpcEncoding_File_multinode_proto{}, in, out)
@ -462,6 +482,8 @@ func (c *drpcPayoutClient) EstimatedPayoutTotal(ctx context.Context, in *Estimat
type DRPCPayoutServer interface { type DRPCPayoutServer interface {
AllSatellitesSummary(context.Context, *AllSatellitesSummaryRequest) (*AllSatellitesSummaryResponse, error) AllSatellitesSummary(context.Context, *AllSatellitesSummaryRequest) (*AllSatellitesSummaryResponse, error)
AllSatellitesPeriodSummary(context.Context, *AllSatellitesPeriodSummaryRequest) (*AllSatellitesPeriodSummaryResponse, error) AllSatellitesPeriodSummary(context.Context, *AllSatellitesPeriodSummaryRequest) (*AllSatellitesPeriodSummaryResponse, error)
SatelliteSummary(context.Context, *SatelliteSummaryRequest) (*SatelliteSummaryResponse, error)
SatellitePeriodSummary(context.Context, *SatellitePeriodSummaryRequest) (*SatellitePeriodSummaryResponse, error)
Earned(context.Context, *EarnedRequest) (*EarnedResponse, error) Earned(context.Context, *EarnedRequest) (*EarnedResponse, error)
EarnedPerSatellite(context.Context, *EarnedPerSatelliteRequest) (*EarnedPerSatelliteResponse, error) EarnedPerSatellite(context.Context, *EarnedPerSatelliteRequest) (*EarnedPerSatelliteResponse, error)
EstimatedPayoutSatellite(context.Context, *EstimatedPayoutSatelliteRequest) (*EstimatedPayoutSatelliteResponse, error) EstimatedPayoutSatellite(context.Context, *EstimatedPayoutSatelliteRequest) (*EstimatedPayoutSatelliteResponse, error)
@ -478,6 +500,14 @@ func (s *DRPCPayoutUnimplementedServer) AllSatellitesPeriodSummary(context.Conte
return nil, drpcerr.WithCode(errors.New("Unimplemented"), 12) return nil, drpcerr.WithCode(errors.New("Unimplemented"), 12)
} }
func (s *DRPCPayoutUnimplementedServer) SatelliteSummary(context.Context, *SatelliteSummaryRequest) (*SatelliteSummaryResponse, error) {
return nil, drpcerr.WithCode(errors.New("Unimplemented"), 12)
}
func (s *DRPCPayoutUnimplementedServer) SatellitePeriodSummary(context.Context, *SatellitePeriodSummaryRequest) (*SatellitePeriodSummaryResponse, error) {
return nil, drpcerr.WithCode(errors.New("Unimplemented"), 12)
}
func (s *DRPCPayoutUnimplementedServer) Earned(context.Context, *EarnedRequest) (*EarnedResponse, error) { func (s *DRPCPayoutUnimplementedServer) Earned(context.Context, *EarnedRequest) (*EarnedResponse, error) {
return nil, drpcerr.WithCode(errors.New("Unimplemented"), 12) return nil, drpcerr.WithCode(errors.New("Unimplemented"), 12)
} }
@ -496,7 +526,7 @@ func (s *DRPCPayoutUnimplementedServer) EstimatedPayoutTotal(context.Context, *E
type DRPCPayoutDescription struct{} type DRPCPayoutDescription struct{}
func (DRPCPayoutDescription) NumMethods() int { return 6 } func (DRPCPayoutDescription) NumMethods() int { return 8 }
func (DRPCPayoutDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver, interface{}, bool) { func (DRPCPayoutDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver, interface{}, bool) {
switch n { switch n {
@ -519,6 +549,24 @@ func (DRPCPayoutDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver
) )
}, DRPCPayoutServer.AllSatellitesPeriodSummary, true }, DRPCPayoutServer.AllSatellitesPeriodSummary, true
case 2: case 2:
return "/multinode.Payout/SatelliteSummary", drpcEncoding_File_multinode_proto{},
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
return srv.(DRPCPayoutServer).
SatelliteSummary(
ctx,
in1.(*SatelliteSummaryRequest),
)
}, DRPCPayoutServer.SatelliteSummary, true
case 3:
return "/multinode.Payout/SatellitePeriodSummary", drpcEncoding_File_multinode_proto{},
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
return srv.(DRPCPayoutServer).
SatellitePeriodSummary(
ctx,
in1.(*SatellitePeriodSummaryRequest),
)
}, DRPCPayoutServer.SatellitePeriodSummary, true
case 4:
return "/multinode.Payout/Earned", drpcEncoding_File_multinode_proto{}, return "/multinode.Payout/Earned", drpcEncoding_File_multinode_proto{},
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
return srv.(DRPCPayoutServer). return srv.(DRPCPayoutServer).
@ -527,7 +575,7 @@ func (DRPCPayoutDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver
in1.(*EarnedRequest), in1.(*EarnedRequest),
) )
}, DRPCPayoutServer.Earned, true }, DRPCPayoutServer.Earned, true
case 3: case 5:
return "/multinode.Payout/EarnedPerSatellite", drpcEncoding_File_multinode_proto{}, return "/multinode.Payout/EarnedPerSatellite", drpcEncoding_File_multinode_proto{},
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
return srv.(DRPCPayoutServer). return srv.(DRPCPayoutServer).
@ -536,7 +584,7 @@ func (DRPCPayoutDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver
in1.(*EarnedPerSatelliteRequest), in1.(*EarnedPerSatelliteRequest),
) )
}, DRPCPayoutServer.EarnedPerSatellite, true }, DRPCPayoutServer.EarnedPerSatellite, true
case 4: case 6:
return "/multinode.Payout/EstimatedPayoutSatellite", drpcEncoding_File_multinode_proto{}, return "/multinode.Payout/EstimatedPayoutSatellite", drpcEncoding_File_multinode_proto{},
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
return srv.(DRPCPayoutServer). return srv.(DRPCPayoutServer).
@ -545,7 +593,7 @@ func (DRPCPayoutDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver
in1.(*EstimatedPayoutSatelliteRequest), in1.(*EstimatedPayoutSatelliteRequest),
) )
}, DRPCPayoutServer.EstimatedPayoutSatellite, true }, DRPCPayoutServer.EstimatedPayoutSatellite, true
case 5: case 7:
return "/multinode.Payout/EstimatedPayoutTotal", drpcEncoding_File_multinode_proto{}, return "/multinode.Payout/EstimatedPayoutTotal", drpcEncoding_File_multinode_proto{},
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
return srv.(DRPCPayoutServer). return srv.(DRPCPayoutServer).
@ -595,6 +643,38 @@ func (x *drpcPayout_AllSatellitesPeriodSummaryStream) SendAndClose(m *AllSatelli
return x.CloseSend() return x.CloseSend()
} }
type DRPCPayout_SatelliteSummaryStream interface {
drpc.Stream
SendAndClose(*SatelliteSummaryResponse) error
}
type drpcPayout_SatelliteSummaryStream struct {
drpc.Stream
}
func (x *drpcPayout_SatelliteSummaryStream) SendAndClose(m *SatelliteSummaryResponse) error {
if err := x.MsgSend(m, drpcEncoding_File_multinode_proto{}); err != nil {
return err
}
return x.CloseSend()
}
type DRPCPayout_SatellitePeriodSummaryStream interface {
drpc.Stream
SendAndClose(*SatellitePeriodSummaryResponse) error
}
type drpcPayout_SatellitePeriodSummaryStream struct {
drpc.Stream
}
func (x *drpcPayout_SatellitePeriodSummaryStream) SendAndClose(m *SatellitePeriodSummaryResponse) error {
if err := x.MsgSend(m, drpcEncoding_File_multinode_proto{}); err != nil {
return err
}
return x.CloseSend()
}
type DRPCPayout_EarnedStream interface { type DRPCPayout_EarnedStream interface {
drpc.Stream drpc.Stream
SendAndClose(*EarnedResponse) error SendAndClose(*EarnedResponse) error

View File

@ -172,3 +172,39 @@ func (payout *PayoutEndpoint) AllSatellitesPeriodSummary(ctx context.Context, re
return &multinodepb.AllSatellitesPeriodSummaryResponse{PayoutInfo: &multinodepb.PayoutInfo{Held: totalHeld, Paid: totalPaid}}, nil return &multinodepb.AllSatellitesPeriodSummaryResponse{PayoutInfo: &multinodepb.PayoutInfo{Held: totalHeld, Paid: totalPaid}}, nil
} }
// SatelliteSummary returns satellite all time payout summary.
func (payout *PayoutEndpoint) SatelliteSummary(ctx context.Context, req *multinodepb.SatelliteSummaryRequest) (_ *multinodepb.SatelliteSummaryResponse, err error) {
defer mon.Task()(&ctx)(&err)
if err = authenticate(ctx, payout.apiKeys, req.GetHeader()); err != nil {
return nil, rpcstatus.Wrap(rpcstatus.Unauthenticated, err)
}
var totalPaid, totalHeld int64
totalPaid, totalHeld, err = payout.db.GetSatelliteSummary(ctx, req.SatelliteId)
if err != nil {
return &multinodepb.SatelliteSummaryResponse{}, rpcstatus.Wrap(rpcstatus.Internal, err)
}
return &multinodepb.SatelliteSummaryResponse{PayoutInfo: &multinodepb.PayoutInfo{Held: totalHeld, Paid: totalPaid}}, nil
}
// SatellitePeriodSummary returns satellite period payout summary.
func (payout *PayoutEndpoint) SatellitePeriodSummary(ctx context.Context, req *multinodepb.SatellitePeriodSummaryRequest) (_ *multinodepb.SatellitePeriodSummaryResponse, err error) {
defer mon.Task()(&ctx)(&err)
if err = authenticate(ctx, payout.apiKeys, req.GetHeader()); err != nil {
return nil, rpcstatus.Wrap(rpcstatus.Unauthenticated, err)
}
var totalPaid, totalHeld int64
totalPaid, totalHeld, err = payout.db.GetSatellitePeriodSummary(ctx, req.SatelliteId, req.Period)
if err != nil {
return &multinodepb.SatellitePeriodSummaryResponse{}, rpcstatus.Wrap(rpcstatus.Internal, err)
}
return &multinodepb.SatellitePeriodSummaryResponse{PayoutInfo: &multinodepb.PayoutInfo{Held: totalHeld, Paid: totalPaid}}, nil
}

View File

@ -16,7 +16,6 @@ import (
"storj.io/common/testcontext" "storj.io/common/testcontext"
"storj.io/common/testrand" "storj.io/common/testrand"
"storj.io/storj/private/multinodepb" "storj.io/storj/private/multinodepb"
"storj.io/storj/private/testplanet"
"storj.io/storj/storagenode" "storj.io/storj/storagenode"
"storj.io/storj/storagenode/apikeys" "storj.io/storj/storagenode/apikeys"
"storj.io/storj/storagenode/multinode" "storj.io/storj/storagenode/multinode"
@ -49,14 +48,26 @@ var (
} }
) )
func TestEarnedPerSatellite(t *testing.T) { func TestPayoutsEndpointSummary(t *testing.T) {
testplanet.Run(t, testplanet.Config{ storagenodedbtest.Run(t, func(ctx *testcontext.Context, t *testing.T, db storagenode.DB) {
StorageNodeCount: 1,
}, func(t *testing.T, ctx *testcontext.Context, planet *testplanet.Planet) {
log := zaptest.NewLogger(t) log := zaptest.NewLogger(t)
service := apikeys.NewService(planet.StorageNodes[0].DB.APIKeys()) satelliteID := testrand.NodeID()
estimatedPayoutsService := estimatedpayouts.NewService(planet.StorageNodes[0].DB.Bandwidth(), planet.StorageNodes[0].DB.Reputation(), planet.StorageNodes[0].DB.StorageUsage(), planet.StorageNodes[0].DB.Pricing(), planet.StorageNodes[0].DB.Satellites(), &trust.Pool{}) apikeydb := db.APIKeys()
endpoint := multinode.NewPayoutEndpoint(log, service, estimatedPayoutsService, planet.StorageNodes[0].DB.Payout()) payoutdb := db.Payout()
service := apikeys.NewService(apikeydb)
// Initialize a trust pool
poolConfig := trust.Config{
CachePath: ctx.File("trust-cache.json"),
}
poolConfig.Sources = append(poolConfig.Sources, &trust.StaticURLSource{URL: trust.SatelliteURL{ID: satelliteID}})
trustPool, err := trust.NewPool(zaptest.NewLogger(t), trust.Dialer(rpc.Dialer{}), poolConfig)
require.NoError(t, err)
require.NoError(t, trustPool.Refresh(ctx))
estimatedPayoutsService := estimatedpayouts.NewService(db.Bandwidth(), db.Reputation(), db.StorageUsage(), db.Pricing(), db.Satellites(), trustPool)
endpoint := multinode.NewPayoutEndpoint(log, service, estimatedPayoutsService, db.Payout())
id := testrand.NodeID() id := testrand.NodeID()
id2 := testrand.NodeID() id2 := testrand.NodeID()
@ -64,7 +75,7 @@ func TestEarnedPerSatellite(t *testing.T) {
var amount int64 = 200 var amount int64 = 200
var amount2 int64 = 150 var amount2 int64 = 150
err := planet.StorageNodes[0].DB.Payout().StorePayStub(ctx, payouts.PayStub{ err = payoutdb.StorePayStub(ctx, payouts.PayStub{
SatelliteID: id, SatelliteID: id,
Held: amount, Held: amount,
Paid: amount, Paid: amount,
@ -72,7 +83,7 @@ func TestEarnedPerSatellite(t *testing.T) {
}) })
require.NoError(t, err) require.NoError(t, err)
err = planet.StorageNodes[0].DB.Payout().StorePayStub(ctx, payouts.PayStub{ err = payoutdb.StorePayStub(ctx, payouts.PayStub{
SatelliteID: id2, SatelliteID: id2,
Held: amount2, Held: amount2,
Paid: amount2, Paid: amount2,
@ -100,10 +111,28 @@ func TestEarnedPerSatellite(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, response2.PayoutInfo.Paid, amount+amount2) require.Equal(t, response2.PayoutInfo.Paid, amount+amount2)
require.Equal(t, response2.PayoutInfo.Held, amount+amount2) require.Equal(t, response2.PayoutInfo.Held, amount+amount2)
response3, err := endpoint.SatellitePeriodSummary(ctx, &multinodepb.SatellitePeriodSummaryRequest{
Header: &multinodepb.RequestHeader{
ApiKey: key.Secret[:],
}, SatelliteId: id2, Period: "2020-11",
})
require.NoError(t, err)
require.Equal(t, response3.PayoutInfo.Paid, amount2)
require.Equal(t, response3.PayoutInfo.Held, amount2)
response4, err := endpoint.SatelliteSummary(ctx, &multinodepb.SatelliteSummaryRequest{
Header: &multinodepb.RequestHeader{
ApiKey: key.Secret[:],
}, SatelliteId: id,
})
require.NoError(t, err)
require.Equal(t, response4.PayoutInfo.Paid, amount)
require.Equal(t, response4.PayoutInfo.Held, amount)
}) })
} }
func TestStorageNodeApi(t *testing.T) { func TestPayoutsEndpointEstimations(t *testing.T) {
storagenodedbtest.Run(t, func(ctx *testcontext.Context, t *testing.T, db storagenode.DB) { storagenodedbtest.Run(t, func(ctx *testcontext.Context, t *testing.T, db storagenode.DB) {
satelliteID := testrand.NodeID() satelliteID := testrand.NodeID()
bandwidthdb := db.Bandwidth() bandwidthdb := db.Bandwidth()