digraph paymentchannel {
size=6.66;
rankdir=LR;
//splines = false;
nodesep = 0.1;

edge [ minlen = 1.33 ];
node [ shape = box ];




subgraph cluster_nemo {
    label = "Nemo's UTXOs"

    nemo_out1 [ label = "10 mBTC" ];
    nemo_out2 [ label = "90 mBTC" ];
}


subgraph cluster_neminem {
    label = "Neminem's UTXOs"

    neminem_out1 [ label = "100 mBTC" ];

}

subgraph cluster_alice {
    label = "AnonGirl's UTXOs"

    alice_out1 [ label = "55 mBTC" ];
    alice_out2 [ label = "25 mBTC" ];
    alice_out3 [ label = "20 mBTC" ];

}

subgraph prevouts {
    node [ style = invis, label="", width=0, height=0 ]

    prevout3;
    prevout4;
    prevout5;
    prevout0;
    prevout1;
    prevout2;

}

subgraph cluster_coinjoin {
    label = "CoinJoin Transaction"

    subgraph cluster_inputs {
        label = "Inputs"
        node [ label = "" ]
        nemo_in1;
        nemo_in2;
        neminem_in1;
        alice_in1;
        alice_in2;
        alice_in3;
    }

    subgraph cluster_outputs {
        label = "Outputs"
        node [ label = "100 mBTC" ];
        out1;
        out2;
        out3;
    }
}

utxo1 [ label = "Person 1" ];
utxo2 [ label = "Person 2" ];
utxo3 [ label = "Person 3" ];

// prevouts

prevout0 -> alice_out1 [ style = dashed, label = "From Bob" ];
prevout1 -> alice_out2 [ style = dashed, label = "From Charlie" ];
prevout2 -> alice_out3 [ style = dashed ];
prevout3 -> nemo_out1 [ style = dashed ];
prevout4 -> nemo_out2 [ style = dashed ];
prevout5 -> neminem_out1 [ style = dashed ];

alice_out1 -> alice_in1;
alice_out2 -> alice_in2;
alice_out3 -> alice_in3;
nemo_out1 -> nemo_in1;
nemo_out2 -> nemo_in2;
neminem_out1 -> neminem_in1;


out1 -> utxo1;
out2 -> utxo2;
out3 -> utxo3;


label = "Example CoinJoin Transaction\nOnly the participants know who gets which output."
}
