To continue our series on the FOAM MVP and to mark the end of a very productive 2023 for FOAM, we are excited to share an end-to-end demonstration of the current proof of location process!
To reiterate from prior blog posts, the core objective of the FOAM MVP is to demonstrate proofs of location (”Presence Claims”). Recently, this has required developing new layers to our stack, such as our FOAM Devnet (OP Stack rollup), Proof of Location smart contracts, an indexing and publishing service and new user-interface flows for our Hostel web-app. Generating Presence Claims also requires tightly integrating all these new elements into our existing hardware, firmware, and software packages we built and tested over the past several years.
We recently provided a sneak peak of the process for minting Presence Claims in this prior post, and explained some of the technical gears shifting under the hood. In this post, the focus is on the current user-flow for checking in with the FOAM network to mint Presence Claims. Note that the user experience will be heavily upgraded in January 2024 with a wireless, miniaturized mobile node and a mobile-native UX.
By the way, if you missed it, be sure to check out our last post, where we explained how FOAM acts as a radio extension of Ethereum, trustlessly sending Ethereum transactions over-the-air and decoding them onchain.
For this demo of minting locations proofs (”Presence Claims”), the following hardware is used:
Zone - four Zone Anchor FOAM radios installed in the Brooklyn Navy Yard in NYC.
Mobile Node - a hand-held LoRa radio transmitter, attached to a laptop using a USB cable. As a reminder, mobile nodes are the user-devices required for interacting with Zones.
Laptop - 2023 Macbook Air laptop.
Some of the critical software pieces include:
Hostel - web-app for interacting with Zones to mint Presence Claims. Also the same web-app used by Zone Operators to manage their Zones.
FOAM OP Devnet & Contracts - an Ethereum rollup built on OP Stack, with Proof of Location smart contracts explained in a previous post here.
MetaMask - well-known web3 browser extension for interacting with FOAM OP Devnet. We have also integrated and are testing Wallet Connect and other wallet providers for a mobile experience.
Timesink and LTSP - firmware packages running on Zone Anchor radios and the mobile node.
The first step in the process for a user wishing to prove their location with FOAM is to open Hostel. Hostel is the front-end web-app for getting Presence Claims, as well as other activities like managing Zones for operators. Currently, Hostel is permissioned to those managing active Zones in the FOAM physical testnet, like former Trust Zone Program participants. To sign in, MetaMask is used. They connect their wallet to the app and sign a message - same as they do for most web3 signins. Note that before signing in the first time, the user needs to add the FOAM OP Devnet to their list of MetaMask networks, as they would do to interact with any new network.
After connecting their wallet, the user must register their mobile node with their wallet address by signing a one time second message from the mobile node’s private key in its firmware. For now, this happens through issuing a simple command on the terminal, which is explained and simplified in the user-flow and shown in the video above.
The resulting chain of signatures, first from MetaMask and second from the mobile node, establishes an important mapping of the user’s wallet (i.e. address) to their mobile node(s). This one-time process is required so that when the user wants a Presence Claim, the cryptographically-signed over-the-air Presence Claim request from their mobile node to the Zone can be both localized and authenticated onchain. i.e. Only the user with that address and mobile node have the right to mint the Presence Claim, a condition enforced onchain. Importantly, this process also paves the way for miniaturized, wireless mobile nodes, which will be explained in a subsequent post.
With the initial one-time setup steps complete, the user can prove their location. They start by clicking Ping FOAM Zones
, which equates to requesting a location proof (i.e. Presence Claim). If a Zone is nearby, the user will see on the Hostel map in real-time as each Zone Anchor receives the mobile node’s OTA request for a location proof (Presence Claim). This is displayed as a green dot over the Zone Anchor. If at least three Zone Anchors receive the packet, a blue dot will display showing the approximate FOAM location of the user. If four Zone Anchors receive the packet, a special additional green dot may appear, also representing their approximate location, but with additional guarantees.
As mentioned in a previous post, we currently have multiple localizers, each able to calculate location from the same dataset in a different way. This opens a trade-off space for users or developers building on FOAM to choose between having more location data (i.e. more coverage), or more secure and accurate data. It is a trade-off between quantity and quality. We are excited to be modularizing and unbundling localization. We will dedicate a forthcoming blog to the different localizers.
With the blue dot shown in Hostel as the user’s location, the user is able to see the details of the Presence Claim, including their coordinates, the mobile node’s address, Zone, Zone Anchors and fee. If the user does not already have FOAM tokens in their wallet, they will need to acquire them to pay the fee to the Zone for generating the Presence Claim. Currently, the fee is fixed and there is a faucet on our devnet for claiming test FOAM tokens in the minting flow. However, in the live system, the existing FOAM token supply will fill this role.
If the user has sufficient FOAM, they can mint the Presence Claim by clicking the Mint Location Proof
button. MetaMask will open showing the proposed transaction and allowing them to approve or decline it. After approving the transaction in their wallet, they will see a message Location proof successfully minted!
and can see the Presence Claim transaction details both in MetaMask and Hostel 🎉 The user has successfully proved their location with FOAM!
As happy as we are with our blockchain and Presence Claim claim work in 2023 for the FOAM MVP, there are many exciting upgrades to integrate into the user-experience in early 2024! We are currently finishing work on a pocket-sized, wireless mobile node; as well as making the experience of minting Presence Claims mobile-native. Users should be able to easily check in with the FOAM Proof of Location network from their phone and pocket-sized mobile nodes, rather than needing a laptop. To enable the mobile-native UX, we have WalletConnect integrated and are making some changes to Hostel to make it more mobile-friendly. We see a progressive web-app (PWA) in Hostel’s future. 🔮 Stayed tuned for our next demo with these upgrades integrated with footage from the field.
With a feature-complete demo in place in early 2024, we will focus on releasing this test functionality for others to mint Presence Claims, as well as building the first application on top of FOAM Proof of Location - a geospatial game. Finally, will finish the plug-and-play accelerated Zone Anchor radios, test them and gear up for an incentivized and permissionless FOAM network launch. Thanks to our community for monitoring our efforts this year, and cheers to an even more exciting 2024 as we approach the final vision of FOAM Proof of Location! 🥂 Look out for an updated overview post next with new information on how to get involved!
FOAM is a Proof of Location technology for applications needing secure location services. It enables a handshake between the location service providers and the user, proving the user’s location. Terrestrial radios and time-of-flight algorithms are used to perform localizations, and digital signatures ensure the location data cannot be spoofed. The system is completely independent of satellite-based location services like GPS.