# Anomaly Detection in Blockchain Networks Using Unsupervised Learning: A Survey
## 7 Unsupervised Learning-Based Blockchain Anomaly Detection
### Category 1: Solitary Implementation of Unsupervised Learning
One reason behind this is that the algorithm appears to be very sensitive to initialization, and therefore, the resulting clusters are unbalanced in the sense that the utilizations of the corresponding clusters appear to be very different from each other, without obtaining a certain level of equalization [158]. However, traditionally, it has been treated as a basic tool in blockchain anomaly detection, especially some of its variants. \begin{table}
\begin{tabular}{c c c c c} \hline \hline
**Method** & **Network Type** & **Data Source** & **Data Structure** & **Programming Framework** \\ \hline [PERSON] and [PERSON] [134] & Private & Artificially generated & Transaction sequences & Python \\ \hline [PERSON] et al. [135] & Public (Ethereum) & etherscan.io & Smart contract codes as sequences of opcodes & Not reported \\ \hline [PERSON] et al. [133] & Private (stock trading dataset) & \begin{tabular}{c} Real blockchain application data on stock trading \\ \end{tabular} & \begin{tabular}{c} Sequences of transaction data \\ \end{tabular} & Not reported \\ \hline [PERSON] et al. [124] & Public (Bitcoin) & Bitcoin core client & Tabular & Python, JavaScript/D3 \\ \hline [PERSON] et al. [125] & Private & UCI repository & Tabular & \begin{tabular}{c} Go language, \\ Go-LibP2P, Ubuntu \\ System \\ \end{tabular} \\ \hline [PERSON] and [PERSON] [138] & Public (Bitcoin) & Publicly available data & Graph-based & Not reported \\ \hline [PERSON] et al. [132] & Public (Bitcoin) & Bitcoin Core client & \begin{tabular}{c} Sequences of \\ transaction data \\ \end{tabular} & Not reported \\ \hline [PERSON] et al. [106] & \begin{tabular}{c} Private (IoT \\ environment) \\ \end{tabular} & \begin{tabular}{c} Specially designed IoT \\ database \\ \end{tabular} & Tabular & C++ \\ \hline [PERSON] and [PERSON] [128] & Private & \begin{tabular}{c} Transaction data \\ (private blockchain network) \\ \end{tabular} & \begin{tabular}{c} Time sequences of \\ transaction data \\ \end{tabular} & \begin{tabular}{c} Python on Anaconda \\ Framework \\ \end{tabular} \\ \hline [PERSON] and [PERSON] [145] & Private & Custom data & Graph-based & Python \\ \hline [PERSON] et al. [152] & Private & Custom data & \begin{tabular}{c} Binary protocol \\ messages \\ \end{tabular} & Python \\ \hline [PERSON] et al. [144] & Public (Bitcoin) & \
\begin{tabular}{c} Bitcoin historical \\ transactions \\ \end{tabular} & Graph-based & Python \\ \hline [PERSON] et al. [127] & Public (Bitcoin) & University of Illinois & Tabular &
\begin{tabular}{c} R programming \\ language \\ \end{tabular} \\ \hline [PERSON] et al. [160] & Public (Bitcoin) & ELTE Bitcoin Project & Tabular & Matlab \\ \hline [PERSON] and [PERSON] [146] & Public (Bitcoin) & Bitcoin Testnet & List Structure & Python–Scikit Learn \\ \hline [PERSON] et al. [143] & Public (Bitcoin) & Bitcoin Core client & Graph-based & Python–Scikit Learn \\ \hline \hline \end{tabular}
\end{table} 
Table 5: The characteristics of the methods belonging to Category 1, which are given in terms of types of network type, data source and structure, and programming framework. [PERSON] et al. [127] embedded the trimmed k-Means [159] into a framework, which performed object clustering within a multivariate setup. The final number of clusters was determined through optimal clustering, where the sum of square distances within clusters played the role of the performance index. The trimmed k-Means was also used in [160] to develop a collective anomaly detection approach, diverging from the conventional methods in that instead of implementing anomaly detection considering individual addresses and wallets, the study focused on scrutinizing anomalies at the user level, where the available dataset was taken from [PERSON] et al. [161]. An interesting result of the study indicated that anomalies were more conspicuous among users with multiple wallets.