network_protocol.md 2.2 KB

Network Protocol

Common Structures

Event ID

Is blake3::Hash of the event, we use those IDs to request and reply events and tips (tips being childless events in the graph).

Event

Representation of an event in the Event Graph. This is either sent when a new event is created, or in response to EventReq.

Description Data Type Comments
timestamp u64 Timestamp of the event
content Vec<u8> Content of the event
parents [blake3::Hash; N_EVENT_PARENTS] Parent nodes in the event DAG
layer u64 DAG layer index of the event

Events could have multiple parents, N_EVENT_PARENTS is the maximum number of parents an event could have.

Receiving an event with missing parents, the node will issue EventReq requesting the missing parent from a peer.

P2P Messages

EventPut

This message serves as a container of the event being published on the network.

Description Data Type Comments
EventPut Event Event data.

EventReq

Requests event data from a peer.

Description Data Type Comments
EventReq EventId Request event using its ID.

EventRep

Replys back the requested event's data.

Description Data Type Comments
EventRep Event Reply event data.

TipReq

Requests tips from connected peers. We use this message as first step into syncing asking connected peers for their DAG's tips.

TipRep

Replys back our DAG tips' IDs.

Description Data Type Comments
TipRep Vec<EventId> Event IDs.