Skip to content

The very first implementation of enhanced security in IoT using Blockchain **Simulation**

License

Notifications You must be signed in to change notification settings

Salmandabbakuti/IOT-Blockchain

Repository files navigation

IoT-and-Blockchain

A simple IoT and Blockchain based application to demonstrate the use of blockchain in IoT.

Getting Started

Prerequisites

  • Node.js
  • Python
  • Windows 8+ (for simulating GPIO pins on Windows), Raspberry Pi (for using actual GPIO pins)
  • Windows Build Tools - Only for Windows (Simulating GPIO pins on Windows)

Note: Windows Build Tools is required to install web3. Install through Powershell(Admin) if not installed already

npm install -g windows-build-tools

Steps

Before starting with app, you need to compile the smart contract and start a local blockchain. Follow the steps below to do so:

  1. Install required dependencies:
npm install
  1. Start a local blockchain using Hardhat:
npx hardhat node
  1. Compile contract in a separate terminal:
npx hardhat compile
  1. Install python dependencies and start the app:
pip install -r requirements.txt

python app.py

Open http://localhost:8000 in your browser to see the app and Interact with the IoT device.

Demo

screen

Built With

  • Flask - The web framework used for the backend
  • Web3.py - Python library for interacting with Ethereum blockchain
  • Hardhat - Ethereum development environment for compiling, testing, deploying, and interacting with smart contracts
  • Solidity - Ethereum's smart contract programming language
  • GPIO Simulator - Python library for simulating GPIO pins
  • RPi.GPIO - Python library for accessing GPIO pins on Raspberry Pi

Safety

This is experimental software and subject to change over time.

This is a proof of concept and is not ready for production use. It is not audited and has not been tested for security. Use at your own risk. I do not give any warranties and will not be liable for any loss incurred through any use of this codebase.

License

This project is licensed under the MIT License - see the LICENSE file for details