Devooja
StarkNET - IIoT Data NFT Validate
The problem Devooja solves
Industrial IoT (IIoT) devices across manufacturing, energy, supply-chain, healthcare, and environmental industries generate massive amounts of operational data. However, this data is often transmitted without proper verification, allowing attackers, insiders, or misconfigured devices to send fake, altered, or manipulated sensor data into the system.
Such falsified data leads to:
❌ Wrong R&D decisions
❌ Incorrect operational analytics
❌ Faulty predictive maintenance models
❌ Risky safety and compliance evaluations
❌ Financial loss and wrong investments
❌ Zero traceability for who sent what data
Challenges we ran into
🚧 Challenges I Ran Into
- Receiving Unstable Sensor Data From the IIoT Device
The ESP8266 was sending noisy or incomplete air-quality readings through the serial port.
This caused corrupted JSON, missing values, and inconsistent uploads.
How I fixed it:
Added a newline-terminated protocol for every sensor message
Introduced buffer cleaning and retry logic on the Python backend
Added basic filtering and averaging to stabilise the sensor output
- IPFS Upload Failing Due to Invalid or Partial Data
Sometimes the Pinata API rejected the upload because the payload arrived before the sensor reading was fully parsed.
How I fixed it:
Implemented strict input validation
Uploaded only after successful checksum verification
Added exception handling + retry mechanism
- StarkNet Testnet RPC Not Responding / Rate Limiting
The biggest hurdle was interacting with StarkNet testnet.
RPC nodes were sometimes down, slow, or returned signature errors.
How I fixed it:
Switched to a stable Sepolia StarkNet RPC provider
Added automatic exponential backoff
Implemented transaction polling with timeout
- Smart Contract Rejected TokenURI Updates
While minting NFT metadata, the contract rejected some CIDs because of URI encoding issues.
How I fixed it:
Cleaned CID formatting
Ensured tokenURI string length matched Cairo contract expectations
Used a consistent IPFS prefix (ipfs://)
- Fake / Manipulated Data Detection Logic
One of my main goals was preventing fake industrial data.
Initially, any serial input—even spoofed—would get uploaded and minted.
How I fixed it:
Added a device-identity signature (simple hash-based validation)
Implemented timestamp signing before IPFS upload
Ensured every CID minted on-chain matches a validated, genuine device reading
This helped prevent false or manipulated sensor values.
- Syncing Frontend Dashboard With Real-Time Data
The client dashboard did not show new NFT updates instantly.
How I fixed it:
Added a WebSocket listener for NFT mint events
Queried StarkNet indexers for new token IDs
Auto-refreshed Pinata metadata without manual reload
- Debugging the Full Pipeline End-to-End
IIoT → Serial → Python → IPFS → StarkNet NFT → Dashboard
is a long chain — a single break stops the whole flow.
How I fixed it:
Added logging at each stage
Used small mock payloads for testing
Debugged layer-by-layer instead of all at once
Cheer Project
Cheering for a project means supporting a project you like with as little as 0.0025 ETH. Right now, you can Cheer using ETH on Arbitrum, Optimism and Base.
