smart contract based payment settlement. the escrow for payment is done using smart contracts.
decentralized dispute claim between guest and host. Dispute & insurance claims are handled by a group of arbiters that the guest and host agree on, and the contract is flexible enough to most court patterns (like Kleros court or Gnosis Safe based voting).
ZK claims for sensitive information: Proof of personhood / sex is done through Zk passport claims using Polygon ID. Once the guest has authenticated and can prove on-chain using their Zk claims that they have been KYC'ed, the guest can begin using the "insta-book" feature for hosts who have enabled it. For instance, a host can allow anyone who can prove that they are a certain sex, verified their passports, had have at least x good reviews on the protocol to insta-book their properties.
These zk credentials are verified on-chain to issue anonymized badges to users that they can then use on other products or to make bookings without having to reveal their entire history.
Decentralized hosting of listings. The metadata can be self-hosted, on IPFS or hosted by a DAO.
wallet to wallet messaging to enable off-chain signatures. To save on gas and improve privacy, the approval process for a guest happens mostly off chain in the beginning. The guest sends the host a request off-chain, then the host gives approval to a guest off-chain, using wallet to wallet messaging. The in-app chat client can then take the host's signature and enter it into the escrow smart contract.
Portable identity using zk-badges. You can create portable badges such that you can prove you are a highly rated guest on the protocol, without revealing your past history or wallet. Guests can either use this to book anonymously on the platform or use the insta-book feature.
The zk reputation is mostly done using Polygon ID. However, there were a few limitations with Polygon ID, so we had to use some reasonable workarounds. For instance, the on-chain verifier + Polygon ID app doesn't allow people to call arbitrary smart contract with input data. So we used a work around where we used the zk-claims to generate anonymized NFTs, then used those NFTs as reputation badges.
XMTP is used as the primary channel for arbitrary messaging, as well as the booking negotiation that involves EIP-712 typed signatures from the host as their approval. Guests are allowed to message hosts before and during a host, and for a short amount of time after. To support richer types of interactions over XMTP, we created our own ContentType / Codecs.
We use Covalent API for access to our data, as well as Lens protocol profiles as optional fields for hosts to show their credibility.
We think our main innovations are 1) allowing people to transact inside the protocol, without having to reveal all of their previous booking history 2) allowing people to use KYC credentials in a trust-minimized way 3) using a p2p messaging channel instead of a centralized server to handle back and forths + transaction/signatures between the guest /hosts
The smart contracts for the Escrow, reputation system, and ZK-based NFTS are all written in Solidity + Hardhat. The front end is in nextjs.