From 4e4255c2c1276880c12a6aa2342d98c592c36346 Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 9 Nov 2017 11:17:50 -0500 Subject: [PATCH] MN/Goverance P2P messages - Add diagram of message exchange Update Dash Core 0.12.2 release date --- _includes/devdoc/ref_p2p_networking.md | 11 +- img/dev/en-p2p-governance-messages.dot | 34 ++ img/dev/en-p2p-governance-messages.png | Bin 36954 -> 21628 bytes img/dev/en-p2p-governance-messages.svg | 631 ++++--------------------- img/dev/en-p2p-masternode-messages.dot | 41 ++ img/dev/en-p2p-masternode-messages.svg | 121 +++++ 6 files changed, 294 insertions(+), 544 deletions(-) create mode 100644 img/dev/en-p2p-governance-messages.dot create mode 100644 img/dev/en-p2p-masternode-messages.dot create mode 100644 img/dev/en-p2p-masternode-messages.svg diff --git a/_includes/devdoc/ref_p2p_networking.md b/_includes/devdoc/ref_p2p_networking.md index a03f63f6..86f7b4df 100644 --- a/_includes/devdoc/ref_p2p_networking.md +++ b/_includes/devdoc/ref_p2p_networking.md @@ -67,7 +67,7 @@ As of Dash Core 0.12.1.5, the most recent protocol version is 70206. | Version | Initial Release | Major Changes |---------|------------------------------------|-------------- -| 70208 | Dash Core 0.12.2.x
(??? 2017) | +| 70208 | Dash Core 0.12.2.x
(Nov 2017) | | 70206 | Dash Core 0.12.1.x
(Mar 2017) | | 70103 | Dash Core 0.12.0.x
(Aug 2015) | | 70076 | Dash Core 0.11.2.x
(Apr 2015) | @@ -2153,7 +2153,12 @@ ece5a95900000000 ..................... Signature Timestamp {% autocrossref %} -The following network messages enable the Masternode features built in to Dash. +The following network messages enable the masternode features built in to Dash. + +![Overview Of P2P Protocol Masternode Request And Reply Messages](/img/dev/en-p2p-masternode-messages.svg) + +For additional details, refer to the Developer Guide [Masternode Sync](developer-guide#masternode-sync) +and [Masternode Payment](developer-guide#masternode-payment) sections. {% endautocrossref %} @@ -2776,7 +2781,7 @@ message header has been omitted.) {% autocrossref %} -The following network messages have been deprecated and should not longer be used. +The following network messages have been deprecated and should no longer be used. {% endautocrossref %} diff --git a/img/dev/en-p2p-governance-messages.dot b/img/dev/en-p2p-governance-messages.dot new file mode 100644 index 00000000..e8d28513 --- /dev/null +++ b/img/dev/en-p2p-governance-messages.dot @@ -0,0 +1,34 @@ +digraph { + +size="6.25"; +rankdir=LR +nodesep=0.05; +ranksep=0.1; +splines="false" + +edge [ penwidth = 1.75, fontname="Sans", dir="none" ] +node [ penwidth = 1.75, shape = "box", fontname="Sans", ] +graph [ penwidth = 1.75, fontname="Sans" ] + +"govsync" -> "ssc (govobj)\ninv (govobj)"; +govsync -> "ssc (govobjvote)\ninv (govobjvote)"; + +"ssc (govobj)\ninv (govobj)" -> getdata; +"ssc (govobjvote)\ninv (govobjvote)" -> getdata; + +getdata -> govobj; +getdata -> govobjvote; + + +{ + node [ shape = "none" ]; + label1 [ label = "Request For Help\nGetting Up To Date" ]; + label2 [ label = "Reply With\nCount/Inventory" ]; + label3 [ label = "Request For\nSpecific Data" ]; + label4 [ label = "Reply With\nRequested Data" ]; + + label1 -> label2 -> label3 -> label4 [style = "invis" ]; +} + +label = "Overview Of P2P Protocol Governance Request and Reply Messages" +} diff --git a/img/dev/en-p2p-governance-messages.png b/img/dev/en-p2p-governance-messages.png index 2f9fc6d40bb045fd4cd914a9f18568af0e15b23d..45b72386d6044d33727c400af1ced580a5f5fead 100644 GIT binary patch literal 21628 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 BpZov- diff --git a/img/dev/en-p2p-governance-messages.svg b/img/dev/en-p2p-governance-messages.svg index f8f1959f..489cc108 100644 --- a/img/dev/en-p2p-governance-messages.svg +++ b/img/dev/en-p2p-governance-messages.svg @@ -1,544 +1,93 @@ - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - _anonymous_0 - - Overview Of P2P Protocol Governance Request And Reply Messages - - - - getblocks - - - govsync - - - - - - - - getdata - - - getdata->block - - - - - - - - - - block - - - govobj - - - - - - merkleblock - - - govobjvote - - - - - getdata->merkleblock - - - - - - - - headers - - - - - Request For - Governance Sync - - - - Reply With - Count / Inventory - - - - - label3 - - Request For - Specific Data - - - - - - label4 - - Reply With - Requested Data - - - - - inv->getdata - - - - inv->getdata - - - - - - govsync_response - - ssc - - - ssc - - - - inv - - - inv - - - - getheaders->headers - - - - - govsync_response - - ssc - - - ssc - - - - inv - - - inv - - - - getheaders->headers - - - - - govobjvote - - - govobj - - - + + + +%3 + +Overview Of P2P Protocol Governance Request and Reply Messages + +govsync + +govsync + + +ssc (govobj)\ninv (govobj) + +ssc (govobj) +inv (govobj) + + +govsync->ssc (govobj)\ninv (govobj) + + + +ssc (govobjvote)\ninv (govobjvote) + +ssc (govobjvote) +inv (govobjvote) + + +govsync->ssc (govobjvote)\ninv (govobjvote) + + + +getdata + +getdata + + +ssc (govobj)\ninv (govobj)->getdata + + + +ssc (govobjvote)\ninv (govobjvote)->getdata + + + +govobj + +govobj + + +getdata->govobj + + + +govobjvote + +govobjvote + + +getdata->govobjvote + + + +label1 +Request For Help +Getting Up To Date + + +label2 +Reply With +Count/Inventory + + + +label3 +Request For +Specific Data + + + +label4 +Reply With +Requested Data + + + diff --git a/img/dev/en-p2p-masternode-messages.dot b/img/dev/en-p2p-masternode-messages.dot new file mode 100644 index 00000000..8873c01b --- /dev/null +++ b/img/dev/en-p2p-masternode-messages.dot @@ -0,0 +1,41 @@ +digraph { + +size="6.25"; +rankdir=LR +nodesep=0.05; +ranksep=0.1; +splines="false" + +edge [ penwidth = 1.75, fontname="Sans", dir="none" ] +node [ penwidth = 1.75, shape = "box", fontname="Sans", ] +graph [ penwidth = 1.75, fontname="Sans" ] + +// MN List +dseg -> "ssc (mnb)\ninv (mnb)"; +dseg -> "ssc (mnp)\ninv (mnp)"; + +"ssc (mnb)\ninv (mnb)" -> getdata; +"ssc (mnp)\ninv (mnp)" -> getdata; + +getdata -> mnb; +getdata -> mnp; + +// MN Payments +mnget -> "ssc (mnget)\ninv (mnw)"; + +"ssc (mnget)\ninv (mnw)" -> getdata; + +getdata -> mnw; + +{ + node [ shape = "none" ]; + label1 [ label = "Request For Help\nGetting Up To Date" ]; + label2 [ label = "Reply With\nCount/Inventory" ]; + label3 [ label = "Request For\nSpecific Data" ]; + label4 [ label = "Reply With\nRequested Data" ]; + + label1 -> label2 -> label3 -> label4 [style = "invis" ]; +} + +label = "Overview Of P2P Protocol Masternode Request and Reply Messages" +} diff --git a/img/dev/en-p2p-masternode-messages.svg b/img/dev/en-p2p-masternode-messages.svg new file mode 100644 index 00000000..e396214e --- /dev/null +++ b/img/dev/en-p2p-masternode-messages.svg @@ -0,0 +1,121 @@ + + + + + + +%3 + +Overview Of P2P Protocol Masternode Request and Reply Messages + +dseg + +dseg + + +ssc (mnb)\ninv (mnb) + +ssc (mnb) +inv (mnb) + + +dseg->ssc (mnb)\ninv (mnb) + + + +ssc (mnp)\ninv (mnp) + +ssc (mnp) +inv (mnp) + + +dseg->ssc (mnp)\ninv (mnp) + + + +getdata + +getdata + + +ssc (mnb)\ninv (mnb)->getdata + + + +ssc (mnp)\ninv (mnp)->getdata + + + +mnb + +mnb + + +getdata->mnb + + + +mnp + +mnp + + +getdata->mnp + + + +mnw + +mnw + + +getdata->mnw + + + +mnget + +mnget + + +ssc (mnget)\ninv (mnw) + +ssc (mnget) +inv (mnw) + + +mnget->ssc (mnget)\ninv (mnw) + + + +ssc (mnget)\ninv (mnw)->getdata + + + +label1 +Request For Help +Getting Up To Date + + +label2 +Reply With +Count/Inventory + + + +label3 +Request For +Specific Data + + + +label4 +Reply With +Requested Data + + + +