# An In-Depth Review on Blockchain Simulators for IoT Environments
## 1 Introduction  
The Internet of Things (IoT) is a recent technology that uses smart connected systems to create a global network of physical devices that exchange and communicate data with each other. While IoT technologies have already been widely successful and popular in different sectors, they lack a secure and unified method of communication and data transfer. IoT devices typically have hardware constraints which make it much more difficult to implement strong security measures. As a result, trying to implement strict security protocols with minimal processing power and low-energy usage can be very difficult. Blockchain technology has recently gained a lot of recognition and attention due to its implementation in cryptocurrencies such as Bitcoin and Ethereum. Blockchain is essentially a system for recording data that makes it much more difficult to change or hack. Blockchain uses a distributed networking system of machines that replicate and create a chain of data. This chain of data can be considered a ledger, with each of these becoming a block. This chain of data is turned into a block which is linked to the previous block creating a chain of blocks, hence the name blockchain. Every block is further reinforced with blocks that come after it. This is due to the fact that the blocks that come after the previous one will contain information on the last block. Additionally, each block is propagated within the network, allowing each machine to view the entire chain and all of its data allowing for multiple verifications to happen. This ensures that the data is authentic, and that the block's integrity is not compromised. The distributed nature of blockchain allows it to be a decentralized transaction system that is transparent and secure. By being independent of a centralized network, blockchain technology has become an increasingly promising foundation for future development of the internet and data processing. As the world becomes more interconnected and \"smart\",it will ultimately become more reliant on data storage and data processing. This brings up the need for a faster and more efficient means of securing data and providing a trustworthy system. These smart and connected systems can leverage blockchain, which has the ability to provide data security using its distributed and immutable structure. A proposed solution to this is to implement blockchain within IoT. Blockchain, being decentralized and distributed in nature, allows it to be highly resistant to tampering. It also takes less processing power from each individual node or device, making it suitable for a minimal processing device typically seen in IoT. Blockchains have been successfully used in IoT applications, as shown in Figure 1, including smart homes [1], smart cities [2], smart agriculture [3], smart power grids [4], smart transportation and automotives [5], smart healthcare [6], and smart manufacturing. It also aids in developing future applications such as a cloud constellation of nanosatellites forming a sort of data center in orbit where companies can upload their data and bypass the terrestrial network. However, despite this positivity regarding blockchain technology, only recently have we seen enough development of IoT devices to implement it. For instance, blockchain in satellites would create transparency, trust, and efficiency, in the satellite value chain for logistics purposes. Indeed, blockchain over satellite eliminates the dependence on terrestrial infrastructure for the movement, storage, or computation of data, and removes a significant vulnerability for data breach or the compromise of data. Blockchain can provide data privacy, prevent fraud, improve transparency, and ease record keeping. In order to test the effectiveness and security of the blockchain being implemented in IoT, the most cost-effective way is to use simulations. Blockchain simulators have been developed which are capable of demonstrating the different layers of blockchain, as well as applications in IoT.