grafic with hyperswarm

This commit is contained in:
Claus-Peter Hübner 2022-03-25 20:41:48 +01:00
parent c2d3f5232d
commit ec33fbf72a
3 changed files with 265 additions and 9 deletions

View File

@ -32,3 +32,5 @@ The Varaint B with an external server contains the benefit to reduce the impleme
The decision to switch from ActivityPub to HyperSwarm base on the arguments, that the *hyperswarm/dht* library will satify the most federation requirements out of the box. It is now to design the business requirements of the [gradido community communication](../BusinessRequirements/CommunityVerwaltung.md#UC-createCommunity) in a technical conception. The decision to switch from ActivityPub to HyperSwarm base on the arguments, that the *hyperswarm/dht* library will satify the most federation requirements out of the box. It is now to design the business requirements of the [gradido community communication](../BusinessRequirements/CommunityVerwaltung.md#UC-createCommunity) in a technical conception.
At first the following diagramm shows the pure logical handshake between an existing community-A and a new created community-B and the data exchange for buildup an authenticated relationship. At first the following diagramm shows the pure logical handshake between an existing community-A and a new created community-B and the data exchange for buildup an authenticated relationship.
![FederationHyperSwarm.png](./image/FederationHyperSwarm.png)

View File

@ -1,20 +1,274 @@
<mxfile host="65bd71144e"> <mxfile host="65bd71144e">
<diagram id="jqy9GLoHfEna4h-l2pXZ" name="Seite-1"> <diagram id="jqy9GLoHfEna4h-l2pXZ" name="Seite-1">
<mxGraphModel dx="1074" dy="800" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2336" pageHeight="1654" math="0" shadow="0"> <mxGraphModel dx="2148" dy="1600" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2336" pageHeight="1654" math="0" shadow="0">
<root> <root>
<mxCell id="0"/> <mxCell id="0"/>
<mxCell id="1" parent="0"/> <mxCell id="1" parent="0"/>
<mxCell id="2" value="&lt;div&gt;&lt;span&gt;existing Community-A&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;- uuidA&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;- publickeyA&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;- privatekeyA&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;- urlA&lt;/span&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;fontStyle=1;fontSize=14;align=left;fillColor=#d5e8d4;strokeColor=#82b366;gradientColor=#97d077;" vertex="1" parent="1"> <mxCell id="39" value="&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new Community-B&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - uuid_B&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - url_B&lt;/span&gt;&lt;br&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;fontStyle=1;fontSize=14;align=left;fillColor=#dae8fc;strokeColor=#6c8ebf;gradientColor=#7ea6e0;" vertex="1" parent="1">
<mxGeometry x="80" y="40" width="280" height="160" as="geometry"/> <mxGeometry x="1360" y="640" width="400" height="160" as="geometry"/>
</mxCell> </mxCell>
<mxCell id="3" value="dht-node" style="rounded=0;whiteSpace=wrap;html=1;fontSize=14;fillColor=#60a917;fontColor=#ffffff;strokeColor=#2D7600;verticalAlign=top;" vertex="1" parent="1"> <mxCell id="35" value="&lt;div style=&quot;text-align: center&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;existing Community-A&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;- uuid_A&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;- url_A&lt;/span&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;fontStyle=1;fontSize=14;align=left;fillColor=#d5e8d4;strokeColor=#82b366;gradientColor=#97d077;" vertex="1" parent="1">
<mxGeometry x="200" y="100" width="150" height="80" as="geometry"/> <mxGeometry x="200" y="653" width="360" height="157" as="geometry"/>
</mxCell> </mxCell>
<mxCell id="4" value="&lt;div&gt;&lt;span&gt;new Community-B&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;- uuidB&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;- publickeyB&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;- privatekeyB&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;- urlB&lt;/span&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;fontStyle=1;fontSize=14;align=left;fillColor=#dae8fc;strokeColor=#6c8ebf;gradientColor=#7ea6e0;" vertex="1" parent="1"> <mxCell id="2" value="&lt;div style=&quot;text-align: center&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;existing Community-A&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;- uuid_A&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;- url_A&lt;/span&gt;&lt;br&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;fontStyle=1;fontSize=14;align=left;fillColor=#d5e8d4;strokeColor=#82b366;gradientColor=#97d077;" vertex="1" parent="1">
<mxGeometry x="640" y="40" width="280" height="160" as="geometry"/> <mxGeometry x="360" y="80" width="280" height="160" as="geometry"/>
</mxCell> </mxCell>
<mxCell id="5" value="dht-node" style="rounded=0;whiteSpace=wrap;html=1;fontSize=14;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;verticalAlign=top;" vertex="1" parent="1"> <mxCell id="3" value="dht-node&lt;br&gt;- dht_gradido-topic&lt;br&gt;&lt;div style=&quot;text-align: left&quot;&gt;&lt;span&gt;- keypair_A&lt;/span&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontSize=14;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;verticalAlign=top;" vertex="1" parent="1">
<mxGeometry x="760" y="100" width="150" height="80" as="geometry"/> <mxGeometry x="480" y="140" width="160" height="80" as="geometry"/>
</mxCell>
<mxCell id="4" value="&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new Community-B&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - uuid_B&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - url_B&lt;/span&gt;&lt;br&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;fontStyle=1;fontSize=14;align=left;fillColor=#dae8fc;strokeColor=#6c8ebf;gradientColor=#7ea6e0;" vertex="1" parent="1">
<mxGeometry x="1280" y="240" width="280" height="160" as="geometry"/>
</mxCell>
<mxCell id="5" value="dht-node&lt;br&gt;&lt;div style=&quot;text-align: left&quot;&gt;&lt;span&gt;- dht_gradido_topic&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left&quot;&gt;&lt;span&gt;- keypair_B&lt;/span&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontSize=14;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;verticalAlign=top;" vertex="1" parent="1">
<mxGeometry x="1290" y="300" width="140" height="80" as="geometry"/>
</mxCell>
<mxCell id="15" value="" style="endArrow=classic;html=1;fontSize=14;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="560" y="280" as="sourcePoint"/>
<mxPoint x="1000" y="280" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="17" value="&lt;b&gt;&amp;nbsp; join_AsServer&lt;/b&gt;(dht_gradido_topic, keypair_A.pubKey)&amp;nbsp;&amp;nbsp;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=14;" vertex="1" connectable="0" parent="15">
<mxGeometry x="0.2216" relative="1" as="geometry">
<mxPoint x="-36" y="-1" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="19" value="" style="endArrow=classic;html=1;fontSize=14;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1360" y="420" as="sourcePoint"/>
<mxPoint x="560" y="420" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="20" value="&lt;b&gt;&amp;nbsp; join_AsClient&lt;/b&gt;(dht_gradido_topic, keypair_B.pubKey)&amp;nbsp;&amp;nbsp;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=14;" vertex="1" connectable="0" parent="19">
<mxGeometry x="0.4162" relative="1" as="geometry">
<mxPoint x="126" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="23" value="" style="endArrow=none;html=1;fontSize=14;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" target="3">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="560" y="840" as="sourcePoint"/>
<mxPoint x="990" y="390" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="24" value="" style="endArrow=none;html=1;fontSize=14;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" target="5">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1360" y="840" as="sourcePoint"/>
<mxPoint x="1090" y="100" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="25" value="dht-node&lt;br&gt;- dht_gradido-topic&lt;br&gt;&lt;div style=&quot;text-align: left&quot;&gt;&lt;span&gt;- keypair_A&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left&quot;&gt;&lt;span&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left&quot;&gt;&lt;span&gt;&lt;font color=&quot;#ff8000&quot;&gt;* pubkey_B&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontSize=14;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;verticalAlign=top;" vertex="1" parent="1">
<mxGeometry x="400" y="420" width="160" height="100" as="geometry"/>
</mxCell>
<mxCell id="26" value="dht-node&lt;br&gt;&lt;div style=&quot;text-align: left&quot;&gt;&lt;span&gt;- dht_gradido_topic&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left&quot;&gt;&lt;span&gt;- keypair_B&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left&quot;&gt;&lt;span&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left&quot;&gt;&lt;span&gt;&lt;font color=&quot;#ff8000&quot;&gt;* pubkey_A&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontSize=14;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;verticalAlign=top;" vertex="1" parent="1">
<mxGeometry x="1360" y="520" width="140" height="100" as="geometry"/>
</mxCell>
<mxCell id="27" value="" style="endArrow=classic;html=1;fontSize=14;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="560" y="520" as="sourcePoint"/>
<mxPoint x="1360" y="520" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="28" value="&lt;b&gt;&amp;nbsp; connect&lt;/b&gt;( socket_B( pubkey_A) )&amp;nbsp;&amp;nbsp;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=14;" vertex="1" connectable="0" parent="27">
<mxGeometry x="0.2216" relative="1" as="geometry">
<mxPoint x="-129" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="31" value="" style="shape=flexArrow;endArrow=classic;startArrow=classic;html=1;fontSize=14;" edge="1" parent="1">
<mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="560" y="683" as="sourcePoint"/>
<mxPoint x="1360" y="683" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="32" value="&amp;nbsp; SocketStream( exchange (url_A), exchange(url_B) )&amp;nbsp;&amp;nbsp;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=14;" vertex="1" connectable="0" parent="31">
<mxGeometry x="-0.215" y="-1" relative="1" as="geometry">
<mxPoint x="46" y="-3" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="33" value="dht-node&lt;br&gt;- dht_gradido-topic&lt;br&gt;&lt;div style=&quot;text-align: left&quot;&gt;&lt;span&gt;- keypair_A&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left&quot;&gt;&lt;span&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left&quot;&gt;&lt;span&gt;* pubkey_B&lt;/span&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontSize=14;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;verticalAlign=top;" vertex="1" parent="1">
<mxGeometry x="400" y="683" width="160" height="100" as="geometry"/>
</mxCell>
<mxCell id="34" value="dht-node&lt;br&gt;&lt;div style=&quot;text-align: left&quot;&gt;&lt;span&gt;- dht_gradido_topic&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left&quot;&gt;&lt;span&gt;- keypair_B&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left&quot;&gt;&lt;span&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left&quot;&gt;&lt;span&gt;* pubkey_A&lt;/span&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontSize=14;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;verticalAlign=top;" vertex="1" parent="1">
<mxGeometry x="1360" y="683" width="140" height="100" as="geometry"/>
</mxCell>
<mxCell id="36" value="" style="endArrow=classic;html=1;fontSize=14;exitX=0;exitY=0.75;exitDx=0;exitDy=0;startArrow=none;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="33" target="37">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="620" y="783" as="sourcePoint"/>
<mxPoint x="240" y="742" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="37" value="&lt;font color=&quot;#ff8000&quot;&gt;&amp;nbsp;* url_B / pubkey_B&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontSize=14;fillColor=#60a917;fontColor=#ffffff;strokeColor=#2D7600;align=left;" vertex="1" parent="1">
<mxGeometry x="200" y="732" width="160" height="50" as="geometry"/>
</mxCell>
<mxCell id="40" value="&lt;font color=&quot;#ff8000&quot;&gt;&amp;nbsp;* url_A / pubkey_A&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontSize=14;fillColor=#1ba1e2;fontColor=#ffffff;strokeColor=#006EAF;align=left;" vertex="1" parent="1">
<mxGeometry x="1570" y="733" width="190" height="50" as="geometry"/>
</mxCell>
<mxCell id="41" value="" style="endArrow=classic;html=1;fontSize=14;exitX=1.014;exitY=0.82;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.014;entryY=0.64;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="34" target="40">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1770" y="600" as="sourcePoint"/>
<mxPoint x="1820" y="550" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="42" value="&lt;div style=&quot;text-align: center&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;existing Community-A&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;- uuid_A&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;- url_A&lt;/span&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;fontStyle=1;fontSize=14;align=left;fillColor=#d5e8d4;strokeColor=#82b366;gradientColor=#97d077;" vertex="1" parent="1">
<mxGeometry x="200" y="960" width="360" height="240" as="geometry"/>
</mxCell>
<mxCell id="43" value="&amp;nbsp;* url_B / pubkey_B &lt;font color=&quot;#ff8000&quot;&gt;/ uuid_B&lt;/font&gt;&lt;br&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontSize=14;fillColor=#60a917;fontColor=#ffffff;strokeColor=#2D7600;align=left;" vertex="1" parent="1">
<mxGeometry x="200" y="1039" width="200" height="50" as="geometry"/>
</mxCell>
<mxCell id="44" value="&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new Community-B&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - uuid_B&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - url_B&lt;/span&gt;&lt;br&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;fontStyle=1;fontSize=14;align=left;fillColor=#dae8fc;strokeColor=#6c8ebf;gradientColor=#7ea6e0;" vertex="1" parent="1">
<mxGeometry x="1360" y="960" width="440" height="240" as="geometry"/>
</mxCell>
<mxCell id="45" value="&amp;nbsp;* url_A / pubkey_A&lt;br&gt;&lt;br&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontSize=14;fillColor=#1ba1e2;fontColor=#ffffff;strokeColor=#006EAF;align=left;" vertex="1" parent="1">
<mxGeometry x="1610" y="1040" width="190" height="50" as="geometry"/>
</mxCell>
<mxCell id="46" value="" style="endArrow=classic;html=1;fontSize=14;exitX=1;exitY=0.329;exitDx=0;exitDy=0;entryX=0.003;entryY=0.338;entryDx=0;entryDy=0;entryPerimeter=0;exitPerimeter=0;" edge="1" parent="1" source="42" target="44">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="920" y="1130" as="sourcePoint"/>
<mxPoint x="970" y="1080" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="47" value="&lt;b&gt;&amp;nbsp; request: &lt;/b&gt;http://&amp;lt;url_B&amp;gt;/openConnection( encrypted url_A, pubkey_A )&amp;nbsp;&amp;nbsp;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=14;" vertex="1" connectable="0" parent="46">
<mxGeometry x="-0.215" y="-1" relative="1" as="geometry">
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="48" value="encrypt url_A&amp;nbsp; &lt;br&gt;with pubkey_B" style="rounded=0;whiteSpace=wrap;html=1;fontSize=14;fillColor=#60a917;fontColor=#ffffff;strokeColor=#2D7600;align=left;" vertex="1" parent="1">
<mxGeometry x="420" y="1019.5" width="110" height="41" as="geometry"/>
</mxCell>
<mxCell id="49" value="" style="endArrow=classic;html=1;fontSize=14;exitX=0;exitY=0.75;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;" edge="1" parent="1" source="44" target="42">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="990" y="790" as="sourcePoint"/>
<mxPoint x="1040" y="740" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="50" value="&lt;b&gt;&amp;nbsp; response:&lt;/b&gt; uui_B&amp;nbsp;&amp;nbsp;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=14;" vertex="1" connectable="0" parent="49">
<mxGeometry x="0.255" y="2" relative="1" as="geometry">
<mxPoint x="52" y="-3" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="51" value="decrypt encoded_url_A&amp;nbsp; &lt;br&gt;with privatkey_B" style="rounded=0;whiteSpace=wrap;html=1;fontSize=14;fillColor=#1ba1e2;fontColor=#ffffff;strokeColor=#006EAF;align=left;" vertex="1" parent="1">
<mxGeometry x="1455" y="1012.5" width="110" height="48" as="geometry"/>
</mxCell>
<mxCell id="53" value="matching &lt;br&gt;pubkey of url_A&lt;br&gt;with given &lt;br&gt;pubkey_A?" style="rhombus;whiteSpace=wrap;html=1;fontSize=14;fillColor=#1ba1e2;fontColor=#ffffff;strokeColor=#006EAF;" vertex="1" parent="1">
<mxGeometry x="1420" y="1080" width="180" height="100" as="geometry"/>
</mxCell>
<mxCell id="54" value="" style="endArrow=classic;html=1;fontSize=14;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;" edge="1" parent="1" source="42" target="43">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="670" y="1090" as="sourcePoint"/>
<mxPoint x="720" y="1040" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="55" value="&lt;div style=&quot;text-align: center&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;existing Community-A&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;- uuid_A&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;- url_A&lt;/span&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;fontStyle=1;fontSize=14;align=left;fillColor=#d5e8d4;strokeColor=#82b366;gradientColor=#97d077;" vertex="1" parent="1">
<mxGeometry x="80" y="1220" width="480" height="240" as="geometry"/>
</mxCell>
<mxCell id="56" value="&amp;nbsp;* url_B / pubkey_B / uuid_B &lt;font color=&quot;#ff8000&quot;&gt;/ communityTO_B&lt;br&gt;&lt;/font&gt;&lt;br&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontSize=14;fillColor=#60a917;fontColor=#ffffff;strokeColor=#2D7600;align=left;" vertex="1" parent="1">
<mxGeometry x="80" y="1299" width="300" height="50" as="geometry"/>
</mxCell>
<mxCell id="57" value="&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new Community-B&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - uuid_B&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - url_B&lt;/span&gt;&lt;br&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;fontStyle=1;fontSize=14;align=left;fillColor=#dae8fc;strokeColor=#6c8ebf;gradientColor=#7ea6e0;" vertex="1" parent="1">
<mxGeometry x="1360" y="1220" width="520" height="240" as="geometry"/>
</mxCell>
<mxCell id="58" value="&amp;nbsp;* url_A / pubkey_A&lt;font color=&quot;#ff8000&quot;&gt; / uuid_A / communityTO_A&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontSize=14;fillColor=#1ba1e2;fontColor=#ffffff;strokeColor=#006EAF;align=left;" vertex="1" parent="1">
<mxGeometry x="1570" y="1313" width="310" height="50" as="geometry"/>
</mxCell>
<mxCell id="59" value="" style="endArrow=classic;html=1;fontSize=14;exitX=1;exitY=0.329;exitDx=0;exitDy=0;entryX=0.003;entryY=0.338;entryDx=0;entryDy=0;entryPerimeter=0;exitPerimeter=0;" edge="1" parent="1" source="55" target="57">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="920" y="1390" as="sourcePoint"/>
<mxPoint x="970" y="1340" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="60" value="&lt;b&gt;&amp;nbsp; request: &lt;/b&gt;http://&amp;lt;url_B&amp;gt;/familiarizeCommunity( encrypted uuid_B, pubkey_A, communityTO_A )&amp;nbsp;&amp;nbsp;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=14;" vertex="1" connectable="0" parent="59">
<mxGeometry x="-0.215" y="-1" relative="1" as="geometry">
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="61" value="encrypt uuid_B&amp;nbsp;&amp;nbsp;&lt;br&gt;with pubkey_B&lt;br&gt;and init CommunityTO : &lt;br&gt;- uuid_A&lt;br&gt;- etc." style="rounded=0;whiteSpace=wrap;html=1;fontSize=14;fillColor=#60a917;fontColor=#ffffff;strokeColor=#2D7600;align=left;" vertex="1" parent="1">
<mxGeometry x="420" y="1248.5" width="120" height="100.5" as="geometry"/>
</mxCell>
<mxCell id="62" value="" style="endArrow=classic;html=1;fontSize=14;exitX=0;exitY=0.75;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;" edge="1" parent="1" source="57" target="55">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="990" y="1050" as="sourcePoint"/>
<mxPoint x="1040" y="1000" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="63" value="&lt;b&gt;&amp;nbsp; response:&lt;/b&gt;&amp;nbsp;communityTO_B&amp;nbsp;&amp;nbsp;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=14;" vertex="1" connectable="0" parent="62">
<mxGeometry x="0.255" y="2" relative="1" as="geometry">
<mxPoint x="52" y="-3" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="74" value="" style="edgeStyle=none;html=1;fontSize=14;fontColor=#FF8000;startArrow=none;startFill=0;endArrow=classic;endFill=1;" edge="1" parent="1" source="64" target="65">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="64" value="decrypt encoded_uuid_B&amp;nbsp;&amp;nbsp;&lt;br&gt;with privatkey_B" style="rounded=0;whiteSpace=wrap;html=1;fontSize=14;fillColor=#1ba1e2;fontColor=#ffffff;strokeColor=#006EAF;align=left;" vertex="1" parent="1">
<mxGeometry x="1375" y="1272" width="110" height="48" as="geometry"/>
</mxCell>
<mxCell id="75" style="edgeStyle=none;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontSize=14;fontColor=#FF8000;startArrow=none;startFill=0;endArrow=classic;endFill=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="65" target="73">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1540" y="1365"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="76" style="edgeStyle=none;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=14;fontColor=#FF8000;startArrow=none;startFill=0;endArrow=classic;endFill=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="65" target="58">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1540" y="1365"/>
<mxPoint x="1540" y="1338"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="77" value="yes" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=14;fontColor=#FF8000;" vertex="1" connectable="0" parent="76">
<mxGeometry x="-0.7009" y="1" relative="1" as="geometry">
<mxPoint y="1" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="65" value="matching &lt;br&gt;uui_B&amp;nbsp;?" style="rhombus;whiteSpace=wrap;html=1;fontSize=14;fillColor=#1ba1e2;fontColor=#ffffff;strokeColor=#006EAF;" vertex="1" parent="1">
<mxGeometry x="1370" y="1340" width="120" height="50" as="geometry"/>
</mxCell>
<mxCell id="67" value="" style="endArrow=classic;html=1;fontSize=14;fontColor=#FF8000;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="51" target="53">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1350" y="1050" as="sourcePoint"/>
<mxPoint x="1400" y="1000" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="68" value="" style="endArrow=classic;html=1;fontSize=14;fontColor=#FF8000;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0.005;exitY=0.338;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="44" target="51">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1350" y="1050" as="sourcePoint"/>
<mxPoint x="1400" y="1000" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="71" value="" style="endArrow=classic;html=1;fontSize=14;fontColor=#FF8000;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;" edge="1" parent="1" source="53" target="44">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1300" y="1220" as="sourcePoint"/>
<mxPoint x="1350" y="1170" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="72" value="yes" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=14;fontColor=#FF8000;" vertex="1" connectable="0" parent="71">
<mxGeometry x="0.4703" y="1" relative="1" as="geometry">
<mxPoint x="24" y="-8" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="78" style="edgeStyle=none;html=1;entryX=0;entryY=0.75;entryDx=0;entryDy=0;fontSize=14;fontColor=#FF8000;startArrow=none;startFill=0;endArrow=classic;endFill=1;" edge="1" parent="1" source="73" target="57">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="73" value="init communityTO_B" style="rounded=0;whiteSpace=wrap;html=1;fontSize=14;fillColor=#1ba1e2;fontColor=#ffffff;strokeColor=#006EAF;align=left;" vertex="1" parent="1">
<mxGeometry x="1470" y="1400" width="140" height="30" as="geometry"/>
</mxCell>
<mxCell id="79" value="" style="endArrow=classic;html=1;fontSize=14;fontColor=#FF8000;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=1;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="55" target="56">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="300" y="1370" as="sourcePoint"/>
<mxPoint x="350" y="1320" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="80" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=4;fontSize=14;fontColor=#FF8000;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="40" y="880" as="sourcePoint"/>
<mxPoint x="1960" y="880" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="81" value="&lt;font style=&quot;font-size: 18px;&quot;&gt;Federation&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=18;fontColor=#000000;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="40" y="840" width="120" height="30" as="geometry"/>
</mxCell>
<mxCell id="82" value="&lt;font style=&quot;font-size: 18px&quot;&gt;GraphQL&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=18;fontColor=#000000;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="40" y="890" width="160" height="30" as="geometry"/>
</mxCell> </mxCell>
</root> </root>
</mxGraphModel> </mxGraphModel>

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 KiB