// Copyright (C) 2019 Storj Labs, Inc. // See LICENSE for copying information. syntax = "proto3"; option go_package = "pb"; package node; import "gogo.proto"; import "google/protobuf/timestamp.proto"; // TODO move statdb.Update() stuff out of here // Node represents a node in the overlay network // Node is info for a updating a single storagenode, used in the Update rpc calls message Node { bytes id = 1 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false]; NodeAddress address = 2; NodeType type = 3; NodeRestrictions restrictions = 4; NodeStats reputation = 5; NodeMetadata metadata = 6; repeated int64 latency_list = 7; bool audit_success = 8; bool is_up = 9; bool update_latency = 10; bool update_audit_success = 11; bool update_uptime = 12; NodeVersion version = 13; } // NodeType is an enum of possible node types enum NodeType { INVALID = 0; SATELLITE = 1; STORAGE = 2; UPLINK = 3; BOOTSTRAP = 4; } // NodeAddress contains the information needed to communicate with a node on the network message NodeAddress { NodeTransport transport = 1; string address = 2; } // NodeTransport is an enum of possible transports for the overlay network enum NodeTransport { TCP_TLS_GRPC = 0; } // NodeStats is the reputation characteristics of a node message NodeStats { bytes node_id = 1 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false]; // TODO: remove int64 latency_90 = 2; // 90th percentile measure of storagenode latency double audit_success_ratio = 3; // (auditSuccessCount / totalAuditCount) double uptime_ratio = 4; // (uptimeCount / totalUptimeCheckCount) int64 audit_count = 5; int64 audit_success_count = 6; int64 uptime_count = 7; int64 uptime_success_count = 8; google.protobuf.Timestamp last_contact_success = 9; google.protobuf.Timestamp last_contact_failure = 10; } // NodeOperator contains info about the storage node operator message NodeOperator { string email = 1; string wallet = 2; } // NodeCapacity contains all relevant data about a nodes ability to store data message NodeCapacity { int64 free_bandwidth = 1; int64 free_disk = 2; } // Deprecated: use NodeOperator instead message NodeMetadata { string email = 1; string wallet = 2; } // Deprecated: use NodeCapacity instead message NodeRestrictions { int64 free_bandwidth = 1; int64 free_disk = 2; } // NodeVersion contains message NodeVersion { string version = 1; // must be semver formatted string commit_hash = 2; google.protobuf.Timestamp timestamp = 3; bool release = 4; }