From 4866e2207f6b31dca6d57ae47c15679a68f50033 Mon Sep 17 00:00:00 2001 From: Hidenori Shinohara Date: Fri, 8 Jul 2022 09:34:44 -0400 Subject: [PATCH] Add adverts & demands to StellarMessage --- Stellar-overlay.x | 40 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/Stellar-overlay.x b/Stellar-overlay.x index 0601a3a..ac67956 100644 --- a/Stellar-overlay.x +++ b/Stellar-overlay.x @@ -47,11 +47,19 @@ struct Hello uint256 nonce; }; +// During the roll-out phrase, pull mode will be optional. +// Therefore, we need a way to communicate with other nodes +// that we want/don't want pull mode. +// However, the goal is for everyone to enable it by default, +// so we don't want to introduce a new member variable. +// For now, we'll use the `flags` field (originally named +// `unused`) in `Auth`. +// 100 is just a number that is not 0. +const AUTH_MSG_FLAG_PULL_MODE_REQUESTED = 100; + struct Auth { - // Empty message, just to confirm - // establishment of MAC keys. - int unused; + int flags; }; enum IPAddrType @@ -102,7 +110,9 @@ enum MessageType SURVEY_REQUEST = 14, SURVEY_RESPONSE = 15, - SEND_MORE = 16 + SEND_MORE = 16, + FLOOD_ADVERT = 18, + FLOOD_DEMAND = 19 }; struct DontHave @@ -179,6 +189,22 @@ struct TopologyResponseBody uint32 totalOutboundPeerCount; }; +const TX_ADVERT_VECTOR_MAX_SIZE = 1000; +typedef Hash TxAdvertVector; + +struct FloodAdvert +{ + TxAdvertVector txHashes; +}; + +const TX_DEMAND_VECTOR_MAX_SIZE = 1000; +typedef Hash TxDemandVector; + +struct FloodDemand +{ + TxDemandVector txHashes; +}; + union SurveyResponseBody switch (SurveyMessageCommandType type) { case SURVEY_TOPOLOGY: @@ -227,6 +253,12 @@ case GET_SCP_STATE: uint32 getSCPLedgerSeq; // ledger seq requested ; if 0, requests the latest case SEND_MORE: SendMore sendMoreMessage; + +// Pull mode +case FLOOD_ADVERT: + FloodAdvert floodAdvert; +case FLOOD_DEMAND: + FloodDemand floodDemand; }; union AuthenticatedMessage switch (uint32 v)