Inspiration
Smallholder freshwater fish farmers lose stock to water-quality problems they often can't see coming — undetected pH swings, oxygen crashes, or ammonia build-up, frequently worsened by rainfall-runoff events. Vimarso Technologies (incubated at IIT BHU) has built a solar-powered floating IoT buoy ("IAMS") that measures six confirmed water-quality parameters, but today it has no climate context, no explainable risk scoring, and no tamper-evident, independently-verifiable record of what was actually observed. We built Water-Climate TOPI to close exactly that gap, honestly, around what the real device is actually confirmed to measure — nothing fabricated or assumed.
What it does
Water-Climate TOPI is an end-to-end pipeline: floating water-quality observation → climate-data integration → data quality & cryptographic provenance → blockchain registration → AI risk assessment → decision-support alert → transparent, shareable environmental record.
- Ingestion of the six confirmed sensor parameters (pH, dissolved oxygen, temperature, TDS, ORP, ammonia) from a synthetic demo dataset or an uploaded CSV/JSON.
- Real climate integration via the Open-Meteo API, cached with graceful fallback.
- Explainable risk engine — rule-based + robust z-score anomaly detection, with full explanation, confidence, and recommended action, explicitly labeled a prototype indicator, not a validated forecast.
- Cryptographic provenance — every record is canonically serialized and SHA-256 hashed (deterministic, versioned canonicalization rules).
- Real blockchain integration — the hash is optionally registered on
ObservationRegistry.sol, a Solidity smart contract we wrote, compiled, unit-tested (11/11 passing), and actually deployed to a real local Hardhat EVM node with a genuine contract address, deployment transaction, and block number. Registration, on-chain confirmation, independent re-verification, and a live tamper-detection demo (flip one byte, watch the chain say so) all run for real in the dashboard — with blockchain integrity verification always shown separately from the AI risk score, since a verified hash proves data wasn't altered, not that a sensor reading is accurate. - Local hash-linked ledger — always-on, zero-dependency tamper evidence, explicitly labeled as NOT a public blockchain.
- A 7-page Streamlit dashboard — overview, geographic map, risk analysis, data transparency & blockchain verification, data explorer, and methodology.
How we built it
Python + Streamlit + pandas/NumPy/Plotly/Matplotlib for the application and risk engine; Solidity + Hardhat + web3.py for the blockchain layer. We used the solc npm package directly (bypassing Hardhat's own native-binary downloader, which our build environment's network policy blocked) to compile the contract, then deployed it to a real, locally-running Hardhat node and exercised the full register → confirm → verify → tamper-detect cycle live, captured with Playwright screenshots as evidence, not just unit tests.
Challenges we ran into
- Hardhat's native
solcdownloader and every public EVM testnet RPC we tried (Sepolia, Polygon Amoy) were blocked by our build sandbox's network policy. Rather than fake a public deployment, we deployed for real to a local EVM node, documented exactly which public endpoints failed and why, and kept the testnet deploy path fully implemented and untouched for anyone running it on an unrestricted network. - Decoding a custom Solidity revert error (
AlreadyRegistered) wasn't handled automatically by web3.py's gas estimation — we had to compute the real 4-byte error selectors via keccak256 and match them ourselves, verified against a live revert from the deployed contract. - Making sure an RPC/network outage could never be mistaken for proof of tampering — this became the single most tested correctness property in the whole system.
Accomplishments that we're proud of
A genuinely working, not just designed, blockchain data-transparency layer: real compiled + tested contract, real local deployment, real transactions, real tamper detection — all integrated into an existing AI pipeline without ever blocking or altering its risk output. 47 automated Python tests + 11 Solidity tests, all passing together. Every claim in our submission is backed by something we actually ran, not something we assumed would work.
What we learned
That "add blockchain" is mostly an exercise in refusing to blur two different kinds of failure — connectivity failure vs. integrity failure — and refusing to blur two different kinds of success — a real local deployment vs. a real public one. Both distinctions ended up mattering more than the Solidity code itself.
What's next for Water-Climate TOPI
Deploy ObservationRegistry.sol to a public testnet (Sepolia) from an unrestricted network — the deploy script is already written and tested, just blocked by our build sandbox; confirm the live device's real payload schema and wire up real ingestion; evaluate the risk model against real labelled contamination events; and get a hosted public URL so judges and partners can try it without cloning the repo.
Log in or sign up for Devpost to join the conversation.