GCNs on Bitcoin Transaction Graphs

This was a personal project I undertook in September 2019. The aim was to classify licit and illicit Bitcoin transactions using Graph Convolutional Networks. I implemented the methods described in the paper- “Anti-Money Laundering in Bitcoin: Experimenting with Graph Convolutional Networks for Financial Forensics” by Weber et. al.

The dataset used is provided by Elliptic. It is a dataset of a graph network of Bitcoin transactions with handcrafted features. The edges denote the flow of bitcoins on the bitcoin blockchain network amongst transactions. It has 203,769 nodes and 234,355 directed edge. The nodes have been labelled as licit or illicit(or unknown, only labelled nodes are used). The features include local features and aggregated features. The dataset has 49 unique snapshots of the network at different timesteps.

gcn image

I implemented two models:

A graph convolutional network tries to take into consideration the adjacency information of data points as provided in the adjacency matrix of the graph. A GCN layer takes the node features and adjacency matrix as input and produces a new set of features for each node as output. The layers progressively update the node embeddings based on the information in the adjacency matrix. The skip connection GCN uses features from the first and second layer to calculate the final output.

You can find the code for my implementation here. This code was written with reference from here.