GreenGait is a Web3 rewards platform that transforms physical activity into real digital value using the Solana blockchain. With a secure, Wi-Fi-enabled wearable device (ESP32), every step you take is cryptographically signed and submitted to the blockchain β all in real time. π + β β π° on-chain.
- Architecture Overview
- Features Implemented
- Security Architecture
- Project Structure
- Example Flow
- How to Run Locally
- What's Next?
- Author
πΉ ESP32-WROOM-32D A microcontroller that simulates steps via a button. Sends step data via MQTT over TLS using mutual certificate authentication.
π TLS Mutual Authentication Secure communication using custom client certificates and a trusted CA, protecting against unauthorized devices.
π§ Rust Backend Validator Receives messages via MQTT, validates authenticity (HMAC + timestamp), then logs valid steps on-chain via a Solana smart contract.
βοΈ Solana Anchor Program Deployed on Devnet. Uses Program Derived Addresses (PDAs) to store step data per user per day. Tokens are minted automatically every 3 steps.
π‘ EMQX Broker (Google Cloud VPS) A hardened MQTT broker with TLS, ACL rules, and certificate-based access control.
π₯οΈ Frontend Interface Visualizes your step history and blockchain rewards in a simple dashboard.
-
β ESP32 device with WiFi + MQTT + TLS client auth
-
β TLS mutual authentication via custom certificates
-
β HMAC-SHA256 signature generation on device
-
β JSON payload with:
steps
,timestamp
,nonce
,signature
-
β Rust backend:
- MQTT TLS client
- HMAC & timestamp validation
- PDA-based step tracking and token minting
-
β Solana Anchor program with
log_step
instruction -
β Solana Devnet deployment and testing
- HMAC-SHA256 signed payloads (shared secret)
- Timestamp validation to prevent replay attacks (Β±30s)
- TLS mutual authentication (ESP32 β EMQX β backend)
- EMQX Broker enforces certificate-based access and ACL rules
- Backend runs on a hardened Google Cloud VPS with TLS
- PDA ensures unique, tamper-proof on-chain logs per
(user, day)
GreenGait/
βββ backend/ # Rust backend (MQTT client, validation, blockchain interaction)
βββ solana_program/ # Anchor smart contract + TypeScript tests
βββ solana/ # CLI scripts, account utilities, program deploy
βββ frontend/ # (WIP) UI for displaying step history and rewards
βββ firmware/ # ESP32 Arduino code (WiFi, MQTT, HMAC)
βββ docs/ # Arch-Diagram + PPT Presentation + Logo
βββ README.md # You're here!
- Press the button β ESP32 sends a signed JSON payload
- EMQX broker securely forwards it to the backend
- Backend verifies the HMAC + timestamp β logs it on-chain
- If steps are divisible by 3, a token is minted
- Frontend displays user stats (WIP)
Upload ESP32.ino
from firmware/
using Arduino IDE.
Make sure certificates.h
contains:
ca.crt
client.crt
client.key
cd backend
cargo run
Make sure these files exist in certs/
:
ca.crt
client.crt
client.key
stepmint-validator.json (Solana keypair)
cd solana_program
anchor build
anchor test
anchor deploy
- π§ PDA optimization
- π NFT/token design for major milestones
- π¨ Dashboard UI with wallet connection and real-time stats
- π ESP32 OTA firmware delivery
- π‘οΈ Replay prevention & abuse detection
- π Connection with energy harvesting system
- π°οΈ GPS Accuracy
- ποΈ User Database
Robert PanΘa
MSc Student in Cybersecurity at Technical University of Cluj-Napoca
π GreenGait β where every step countsβ¦ on-chain, securely, and sustainably.