syntax = "proto3"; package quilibrium.node.data.pb; option go_package = "source.quilibrium.com/quilibrium/monorepo/node/protobufs"; import "google/protobuf/wrappers.proto"; import "channel.proto"; import "clock.proto"; import "keys.proto"; import "node.proto"; message DataPeerListAnnounce { reserved 1; reserved "peer_list"; DataPeer peer = 2; } message DataPeer { bytes peer_id = 1; string multiaddr = 2; uint64 max_frame = 3; int64 timestamp = 4; bytes version = 5; reserved 6; reserved "signature"; reserved 7; reserved "public_key"; bytes total_distance = 8; bytes patch_version = 9; google.protobuf.BoolValue externally_reachable = 10; } 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; string peer_id = 2; } message DataFrameResponse { quilibrium.node.clock.pb.ClockFrame clock_frame = 1; bytes proof = 2; } message PreMidnightMintResponse { bytes address = 1; uint32 increment = 2; } message PreMidnightMintStatusRequest { bytes owner = 1; } message FrameRebroadcast { uint64 from = 1; uint64 to = 2; repeated quilibrium.node.clock.pb.ClockFrame clock_frames = 3; bytes random = 4; } 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); rpc HandlePreMidnightMint (quilibrium.node.node.pb.MintCoinRequest) returns (PreMidnightMintResponse); rpc GetPreMidnightMintStatus (PreMidnightMintStatusRequest) returns (PreMidnightMintResponse); } message ChallengeProofRequest { bytes peer_id = 1; uint32 core = 2; quilibrium.node.clock.pb.ClockFrame clock_frame = 3; bytes output = 4; uint64 frame_number = 5; uint32 difficulty = 6; } message ChallengeProofResponse { bytes output = 1; } service DataIPCService { rpc CalculateChallengeProof(ChallengeProofRequest) returns (ChallengeProofResponse); }