syntax = "proto3"; package quilibrium.node.data.pb; option go_package = "source.quilibrium.com/quilibrium/monorepo/node/protobufs"; import "channel.proto"; import "clock.proto"; import "keys.proto"; message DataPeerListAnnounce { repeated DataPeer peer_list = 1; } message DataPeer { bytes peer_id = 1; string multiaddr = 2; uint64 max_frame = 3; int64 timestamp = 4; bytes version = 5; bytes signature = 6; bytes public_key = 7; bytes total_distance = 8; } message DataCompressedSync { uint64 from_frame_number = 1; uint64 to_frame_number = 2; repeated quilibrium.node.clock.pb.ClockFrame truncated_clock_frames = 3; repeated InclusionProofsMap proofs = 4; repeated InclusionSegmentsMap segments = 5; } message SyncRequestAuthentication { bytes peer_id = 1; bytes challenge = 2; quilibrium.node.keys.pb.Ed448Signature response = 3; } message DataCompressedSyncRequestMessage { oneof sync_message { quilibrium.node.clock.pb.ClockFramesPreflight preflight = 1; quilibrium.node.clock.pb.ClockFramesRequest request = 2; SyncRequestAuthentication authentication = 3; } } message DataCompressedSyncResponseMessage { oneof sync_message { quilibrium.node.clock.pb.ClockFramesPreflight preflight = 1; DataCompressedSync response = 2; } } message InclusionProofsMap { bytes frame_commit = 1; bytes proof = 2; repeated InclusionCommitmentsMap commitments = 3; } message InclusionSegmentsMap { bytes hash = 1; bytes data = 2; } message InclusionCommitmentsMap { bytes commitment = 1; string type_url = 2; repeated bytes segment_hashes = 3; } message GetDataFrameRequest { uint64 frame_number = 1; } message DataFrameResponse { quilibrium.node.clock.pb.ClockFrame clock_frame = 1; bytes proof = 2; } service DataService { rpc GetCompressedSyncFrames (quilibrium.node.clock.pb.ClockFramesRequest) returns (stream DataCompressedSync); rpc NegotiateCompressedSyncFrames (stream DataCompressedSyncRequestMessage) returns (stream DataCompressedSyncResponseMessage); rpc GetPublicChannel (stream quilibrium.node.channel.pb.P2PChannelEnvelope) returns (stream quilibrium.node.channel.pb.P2PChannelEnvelope); rpc GetDataFrame (GetDataFrameRequest) returns (DataFrameResponse); } message ChallengeProofRequest { bytes peer_id = 1; quilibrium.node.clock.pb.ClockFrame clock_frame = 3; } message ChallengeProofResponse { bytes output = 1; } service DataIPCService { rpc CalculateChallengeProof(ChallengeProofRequest) returns (ChallengeProofResponse); }