Video thumbnail

Proximity

A proximity proof, protocol & native app that enables mobile device wireless contract interaction.

Proximity

Created At

ETHGlobal Prague

Winner of

Rootstock - Freestyle Track 2nd place

Project Description

Proximity is a Bluetooth-powered protocol and platform that connects real-world presence with blockchain-based actions, enabling secure, private, and scalable physical interactions for digital applications. Proximity replaces QR code-based systems with Bluetooth Low Energy (BLE), allowing users to interact with smart contracts simply by being physically near each other or specific locations—no scanning, pairing, or manual input required. The system revolves around two components: ProxClients (users/devices) and ProxHosts (users/devices that verify presence). When a ProxClient comes within range of a ProxHost, a proximity proof is generated. This proof, which uses a ZKP often, can then trigger on-chain interactions like unlocking a multisig wallet, placing a bid in an auction, redeeming a ticket, or discovering mutual friends anonymously. Proximity is multichain, optimized for different use cases: Rootstock secures multisig wallets by requiring physical co-location of multiple signers, anchored by hardware-based key storage (PowHSM) and Bitcoin-level security. Hedera Hashgraph powers fair, real-time auctions using fixed gas fees and scheduled smart contracts, preventing frontrunning and supporting fast transactions. Flow supports high-volume, social/NFT use cases with its low fees, high TPS, and account abstraction, enabling scalable user onboarding and asset handling. The mobile app bridges BLE discovery and blockchain logic, making the experience seamless for end-users. Whether it’s friending someone at an event without revealing your contact list, redeeming a location-gated NFT, or unlocking a wallet with nearby teammates, Proximity merges the physical and digital worlds in a privacy-preserving and user-friendly way. It is particularly useful for social networking, Web3 security, NFT drops, IRL events, and any decentralised app that benefits from location-based access control.

How it's Made

We built Proximity as a cross-platform proximity networking suite, merging physical-world device interactions with smart contract logic, rapid UI prototyping, and a seamless mobile-first experience. The stack was designed for real-world demos and experimentation across BLE, Wi-Fi, and blockchain systems.

🛠 Technologies Used React Native (Expo) powered the app frontend (appv2) for fast cross-platform development. With Expo’s managed workflow, we avoided native boilerplate during iteration.

TypeScript kept the codebase clean and maintainable, with strong typing across all networking and UI layers.

BLE (Bluetooth Low Energy) functionality was built using react-native-ble-advertiser. This allowed us to do both scanning and advertising on Android—something that required diving into native Gradle config and permissions, especially post-Android 12.

Wi-Fi/UDP Discovery: We implemented local peer discovery using react-native-udp, enabling fast multicast-based device detection over local networks.

AsyncStorage persisted key global state—like whether a tab is in “mock” mode (WebView) or “real” mode (native BLE/Wi-Fi).

WebView UI Mocks: For UI/UX demos, each tab can switch to a full-screen embedded web mock (uimocks/), allowing us to test flows like auction bidding or wallet creation rapidly, even before native functionality was complete.

Smart Contracts (Solidity, Cadence): Used across three different chains for real use cases like auctions, multisig wallets, and social graphs.

🔗 Blockchain Partner Integrations We worked with Rootstock, Hedera, and Flow—each chosen for a specific aspect of the Proximity Protocol.

🟢 Rootstock – Multisig Wallets We used Rootstock for our Proximity Multisig system. Rootstock’s strong EVM compatibility and unique PowPeg setup (which stores keys in HSM-secured hardware) made it ideal for building co-location-based multisig wallets. The idea was simple: multiple phones physically near each other (verified over BLE) could jointly unlock a shared wallet—combining real-world security with on-chain safety.

🟣 Hedera – Auctions Hedera’s fixed gas fees and near-instant finality made it perfect for Proximity Auctions, where time-sensitive bidding was gated by real-world location. BLE proximity would whitelist users for bidding, and Hedera’s low-latency consensus allowed us to avoid frontrunning or long confirmation delays—something we couldn’t achieve with Ethereum.

🔵 Flow – Social Graph + Scale Flow’s high throughput and low-cost transactions made it our choice for social media-like features. Every user is both a ProxHost and ProxClient, and friending happens via local BLE encounters. Flow’s resource-oriented model and account abstraction let us efficiently store and sync user data with on-chain privacy and scalability—ideal for large user graphs without relying on any third-party servers.

🧠 Architecture & Logic BLE + Wi-Fi Parallel Discovery: Devices are discovered via both channels, with deduplication logic and a “gray state” system. Devices are marked gray after 3 missed heartbeats and disappear after 10s of inactivity.

Global App Context: We implemented a global AppContext to manage BLE/Wi-Fi toggles, known devices, and the mock/real UI state—ensuring consistent experience across tabs.

Tabbed Interface: Tabs like Discover, Proximity, and Auction could toggle between native logic and WebView UI demos at the flick of a switch—ideal for iterating quickly during the hackathon.

Smart Contract Integration: Contracts were deployed to each partner chain, and interacted with using ethers.js, viem, or Flow SDKs, depending on the use case.

🧪 Hacky But Cool Things We Did True P2P BLE on Android: React Native BLE libraries don’t support both advertising and scanning out of the box. We had to inject native Android code and manually tweak permissions and services to get this working, especially on Android 12+.

Global Mock Mode: A single toggle switched all tabs between full native stack and embedded mock UI. This let us iterate faster—especially useful when smart contracts or BLE were flaky in early testing.

Merged Discovery Stack: BLE and UDP-based discovery were unified into one deduped device list with live status updates—a lot trickier than it sounds when both run on different timers and data formats.

Location-Gated Auctions: Only users physically near a “host” device could see or bid in auctions. BLE scanning handled access, while Hedera contracts enforced bid logic—creating a real-world gating mechanism.

In short, Proximity combines real-time, local hardware interaction with secure, chain-specific smart contracts, all wrapped in a rapidly iterable UI framework. Working with Rootstock, Hedera, and Flow gave us the ability to go beyond just “demoing” blockchain—they let us embed it in real-world interactions.

Let us know if you want the auction, wallet, or social graph demo—we've got a BLE beacon ready. 😉

background image mobile

Join the mailing list

Get the latest news and updates