project screenshot 1
project screenshot 2
project screenshot 3
project screenshot 4
project screenshot 5
project screenshot 6

Travel Protocol

Travel Protocol allows you to book flights, hotels, and travel products without sharing sensitive personal data with booking platforms!

Travel Protocol

Created At

ETHGlobal Brussels

Winner of

Polygon - Best ZK dApp 2nd place

Worldcoin - Most Creative Use Case

Project Description

Problem When booking a hotel through platforms like Booking.com or Airbnb, users must submit personal information such as names, nationality, gender, and passport number. While hotels are legally required to verify this information upon check-in, booking platforms enforce their own policies requiring users to share this sensitive data, ostensibly to pass it on to hotels for verification (by manually match the name, gender and other personal information).

Solution Travel Protocol eliminates the need for users to share personal data with booking platforms. Instead, a zero-knowledge proof (ZKP) called a Booking Proof is generated and passed to the hotel. This allows the hotel to verify bookings without accessing users' sensitive data. A unique ID is used to link users to their Booking Proof. Hotel can still check users' identity document if required by law, but we eliminate the need to share such user data to booking platforms.

Result In the future, users can book hotels and travel products by logging in with a unique ID, selecting their hotel, and paying—no need to provide personal details. Once the booking is confirmed, a Booking Proof is created and associated with the user's unique ID. At check-in, users verify their unique ID (e.g., via QR code), and the associated Booking Proof is verified on the blockchain.

This process ensures privacy by keeping personal data away from booking platforms.

How it's Made

We created webapp using Next.js. and we use world ID as the login method, we use NextAuth.js here for authentication. Once user login we get user's unique World ID. Once user complete their hotel booking, our BE will use their booking ID information, hotel check-in/out, hotel info to create a proof using snarkjs. We use the snarkjs and circuit to generate the verify.sol smart contract. Then we wrote a travel_protocol.sol smart contract which contains the logics to use the verify.sol to verify the proof. We deploy the smart contract to polygon zkEVM using hardhat, and verify it on Blockscout. We have a mini database running along with the webapp using pocketbase, there we store a list of world ID and their associated Booking Proof.

On the same web app, we have a button to open the hotel page (for hotel to use), on this page, we display the QR code generated from the Action we created in the worldcoin developer portal. We have added business logics that fetch the Booking Proof based on the World ID and then verify it with the smart contract on the blockchain. So when user go to hotel, they basically scan the QR code to verify their World ID identity, then everything is automated to verify their associated booking proof. if it's verified, it means it's the same user who book the hotel that is trying to check-in now.

The combination of worldcoin and ZKP perfectly solves our problem, we are able to verify the people, and their bookings.

background image mobile

Join the mailing list

Get the latest news and updates