  In recent years, decentralized applications (dApps) built on blockchain
platforms such as Ethereum and coded in languages such as Solidity, have gained
attention for their potential to disrupt traditional centralized systems.
Despite their rapid adoption, limited research has been conducted to understand
the underlying code structure of these applications. In particular, each dApp
is composed of multiple smart contracts, each containing a number of functions
that can be called to trigger a specific event, e.g., a token transfer. In this
paper, we reconstruct and analyse the network of contracts and functions calls
within the dApp, which is helpful to unveil vulnerabilities that can be
exploited by malicious attackers. We show how decentralization is
architecturally implemented, identifying common development patterns and
anomalies that could influence the system's robustness and efficiency. We find
a consistent network structure characterized by modular, self-sufficient
contracts and a complex web of function interactions, indicating common coding
practices across the blockchain community. Critically, a small number of key
functions within each dApp play a pivotal role in maintaining network
connectivity, making them potential targets for cyber attacks and highlighting
the need for robust security measures.
