ceremonyclient/node/protobufs/data.proto
2024-10-12 11:55:17 -07:00

99 lines
2.5 KiB
Protocol Buffer

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);
}