Skip to content

Instantly share code, notes, and snippets.

@AljoschaMeyer
Created October 22, 2018 21:02
Show Gist options
  • Save AljoschaMeyer/83fb8b84e630ebf703c972bc6ba6055d to your computer and use it in GitHub Desktop.
Save AljoschaMeyer/83fb8b84e630ebf703c972bc6ba6055d to your computer and use it in GitHub Desktop.
A few graphs for the merkle tree discussion on ssb
digraph G {
rankdir = TB;
node [shape=box];
m0[shape=oval];
m2[shape=oval];
m4[shape=oval];
m6[shape=oval];
subgraph _1 {
m1[shape=oval];
h01[shape=diamond];
}
subgraph _3 {
m3[shape=oval];
h23;
h0123[shape=diamond];
}
subgraph _5 {
m5[shape=oval];
h45;
}
subgraph _7 {
m7[shape=oval];
h67;
h4567;
h01234567[shape=diamond];
}
{ rank=same; m0; m1; m2; m3; m4; m5; m6; m7}
m0 -> m1 -> m2 -> m3 -> m4 -> m5 -> m6 -> m7[style=invis];
{ rank=same; h0[shape=diamond]; h1; h2; h3; h4; h5; h6; h7;}
h0 -> h1 -> h2 -> h3 -> h4 -> h5 -> h6 -> h7[style=invis];
m0 -> h0;
m1 -> h1;
m2 -> h2;
m3 -> h3;
m4 -> h4;
m5 -> h5;
m6 -> h6;
m7 -> h7;
m1 -> h0[style=dotted];
m2 -> h1[style=dotted];
m3 -> h2[style=dotted];
m4 -> h3[style=dotted];
m5 -> h4[style=dotted];
m6 -> h5[style=dotted];
m7 -> h6[style=dotted];
h0 -> h01;
h1 -> h01;
h2 -> h23;
h3 -> h23;
23[style=invis];
h2 -> 23[style=invis];
h4 -> h45;
h5 -> h45;
45[style=invis];
h4 -> 45[style=invis];
h6 -> h67;
h7 -> h67;
67[style=invis];
h6 -> 67[style=invis];
{rank = same; g0[style=invis]; g1[style=invis]; h0123}
h01 -> g0 -> g1 -> h0123[style=invis];
h01 -> h0123;
h23 -> h0123;
h45 -> h4567;
h67 -> h4567;
4567[style=invis];
h45 -> 4567[style=invis];
67 -> 4567[style=invis];
4567 -> h4567[style=invis];
{rank = same; h0123; 4567; foo[style=invis]; h4567;}
4567 -> foo -> h4567[style=invis];
h0123 -> h01234567;
{rank = same; f0[style=invis]; f1[style=invis]; f2[style=invis]; f3[style=invis]; h01234567;}
h4567 -> h01234567;
f0 -> f1 -> f2 -> f3 -> h01234567[style=invis];
h0123 -> f0[style=invis];
}
digraph G {
rankdir = TB;
node [shape=box];
m0[shape=oval];
m2[shape=oval];
m4[shape=oval];
m6[shape=oval];
subgraph _1 {
m1[shape=oval];
h01[shape=diamond];
}
subgraph _3 {
m3[shape=oval];
h23;
h0123[shape=diamond];
}
subgraph _5 {
m5[shape=oval];
h45[shape=hexagon];
}
{ rank=same; m0; m1; m2; m3; m4; m5; m6}
m0 -> m1 -> m2 -> m3 -> m4 -> m5 -> m6[style=invis];
{ rank=same; h0[shape=diamond]; h1; h2; h3; h4; h5; h6[shape=hexagon];}
h0 -> h1 -> h2 -> h3 -> h4 -> h5 -> h6[style=invis];
m0 -> h0;
m1 -> h1;
m2 -> h2;
m3 -> h3;
m4 -> h4;
m5 -> h5;
m6 -> h6;
m1 -> h0[style=dotted];
m2 -> h1[style=dotted];
m3 -> h2[style=dotted];
m4 -> h3[style=dotted];
m5 -> h4[style=dotted];
m6 -> h5[style=dotted];
h0 -> h01;
h1 -> h01;
h2 -> h23;
h3 -> h23;
23[style=invis];
h2 -> 23[style=invis];
h4 -> h45;
h5 -> h45;
45[style=invis];
h4 -> 45[style=invis];
{rank = same; g0[style=invis]; g1[style=invis]; h0123}
h01 -> g0 -> g1 -> h0123[style=invis];
h01 -> h0123;
h23 -> h0123;
}
digraph G {
rankdir = TB;
node [shape=box];
m0[shape=oval];
m2[shape=oval];
m4[shape=oval];
m6[shape=oval];
subgraph _1 {
m1[shape=oval];
h01[shape=diamond];
}
subgraph _3 {
m3[shape=oval];
h23;
h0123[shape=diamond];
}
subgraph _5 {
m5[shape=oval];
h45[shape=hexagon];
}
{ rank=same; m0; m1; m2; m3; m4; m5; m6}
m0 -> m1 -> m2 -> m3 -> m4 -> m5 -> m6[style=invis];
{ rank=same; h0[shape=diamond]; h1; h2; h3; h4; h5; h6[shape=hexagon];}
h0 -> h1 -> h2 -> h3 -> h4 -> h5 -> h6[style=invis];
m0 -> h0;
m1 -> h1;
m2 -> h2;
m3 -> h3;
m4 -> h4;
m5 -> h5;
m6 -> h6;
m1 -> h0[style=dotted];
m2 -> h1[style=dotted];
m3 -> h2[style=dotted];
m4 -> h3[style=dotted];
m5 -> h4[style=dotted];
m6 -> h5[style=dotted];
h0 -> h01;
h1 -> h01;
h2 -> h23;
h3 -> h23;
Hh01h2[color=blue];
h01 -> Hh01h2;
h2 -> Hh01h2;
{rank = same; h01; Hh01h2}
Hh23h4[color=blue];
h23 -> Hh23h4;
h4 -> Hh23h4;
{rank = same; h23; Hh23h4}
h4 -> h45;
h5 -> h45;
h4 -> Hh23h4[style=invis];
Hh45h6[color=blue];
h45 -> Hh45h6;
h6 -> Hh45h6;
{rank = same; h45; Hh45h6}
{rank = same; g0[style=invis]; g1[style=invis]; h0123; Hh0123h45[color=blue]}
h01 -> g0 -> g1 -> h0123[style=invis];
h0123 -> Hh0123h45;
h45 -> Hh0123h45;
h01 -> h0123;
h23 -> h0123;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment