The Internet of Things (IoT) devices is being implemented in many fields like military, health care, smart environments, etc. where such devices or things may gather, process, and upload a huge amount of data to the internet, which can lead to many challenges in terms of keeping IoT secure, protecting the IoT from disclosure to unauthorized parties, ensuring information integrity and so on. Such challenges can be addressed by BlockChain (BC) technology. This paper provides a comprehensive and high-level technical overview of BC technology by creating a common language through business and technology about BC to adapt it to the specific needs of IoT in order to develop BC-based IoT (BC-IoT) applications. Then an overview of a BC technology, its architectures, classification, challenges, etc. is presented. Finally, some recommendations are provided to researchers that will have to be tackled before deploying the next generation of IoT applications based on BC technology.