  This paper presents a new blockchain network simulator that uses bitcoin's
original reference implementation as its main application. The proposed
simulator leverages the use of lightweight virtualization technology to build a
fine tuned local testing network. To enable fast simulation of a large scale
network without disabling mining service, the simulator can adjust the bitcoin
mining difficulty level to below the default minimum value. In order to assess
the performance of blockchain under different network conditions, the simulator
allows to define different network topologies, and integrates Linux kernel
traffic control (tc) tool to apply distinct delay or packet loss on the network
nodes. Moreover, to validate the efficiency of our simulator we conduct a set
of experiments and study the impact of the computation power and network delay
on the network's consistency in terms of number of forks and mining revenues.
The impact of applying different mining difficulty levels is also studied and
the block time as well as fork occurrences are evaluated. Furthermore, a
comprehensive survey and taxonomy of existing blockchain simulators are
provided along with a discussion justifying the need of new simulator. As part
of our contribution, we have made the simulator available on Github
(https://github.com/noureddinel/core-bitcoin-net-simulator) for the community
to use and improve it.
