Beccamose
Beccamose is a wallet-to-wallet private geolocation sharing application. It allows to share real time location between two Ethereum wallets in a completely encrypted and peer-to-peer way, without going through intermediaries.
Discord Username: mattiapomelli
Telegram Username: @mattiapomelli
https://github.com/mattiapomelli/beccamose
https://www.youtube.com/watch?v=OcpJLcck9zo
Contract Deployed on Base Testnet
Waku
Waku is the infrastructure that powers the communication of Beccamose. We use Waku for exchanging messages containing real-time geo-location data between peers.
The communication is wallet-to-wallet and encrypted. When two wallets want to share location, we derive a public/private key pair deterministically generated starting from a wallet signature. The key pairs are then used to encrypt and decrypt messages so that no other user can access them.
We use a single channel (content topic) for all the communications happening on Beccamose. The reason for this is to offuscate a direct connection between two users and obtain even more privacy besides encryption.
BuidlGuidl (ScaffoldETH2)
We used ScaffoldETH2 as our main stack for both frontend and smart contracts. It helped us to synchronise and speed up the development.
We also leveraged one of its unique capabilities, the Burner Wallet. By using Burner Wallet we allow users to automatically create a new disposable address every time they want to use the app. This is good for UX since it makes the onboarding process smoother. And it can also improve the user privacy by having a new wallet generated for every new location-sharing session (so you don't have to use your personal wallet).
Base
When two users meet through Beccamose, they are able to (optionally) mint a "Proof of Meet" NFT on Base that proves that they met (but without revealing the geolocation). Thanks to Base performance and scalability, we are able to provide a great UX to users for the minting process.