Detecting Structures in Graphs – a first problem

We want to detect structures in graphs. Our graph is the one built by Bitcoin transactions. It consists of N nodes where N is the number of existing Bitcoin addresses. Further the graph consists of M edges. The number of edges is cannot be defined so easily. Lets assume a Bitcoin transaction consisting of input addresses I and output addresses O. Now lets create the graph for this transaction. We create \(|I| + |O|\) nodes. Now lets create the edges. We start with the first address \(a \in I\) and are going to create edges from \(a\) to every \(b \in O\). We proceed then with the next address from I. And we would repeat the process. So every address from I is then connected to every address from O. How should we face this. Therefore we have some options. The first would be to accept this type of graph. The other one would be „create“ the Bitcoin graph outgoing from one address. Lets suppose the last described transaction. But we only consider one address from I. The reason for that is, that the other ones in I are not necessary for us at the moment. When we go further to the next depth of the graph and consider all addresses in O, we proceed the same way. For sure, there can be some addresses which have many edges connected to the previous depth. Further we now extend this graph to all transactions taken by the original considered address. Conclusion is that we only take care of „one“ address as starting node. We further discuss the approach on clusters, where we can merge all addresses from I into one node.