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


Personalized eCommerce powered by ZKP, implementing a novel Proof-of-Purchase system based on Polygon ID


Created At

ETHOnline 2023

Winner of


🏊‍♀️ Mantle — Build on Mantle


🆔 Polygon — Best Use of Polygon ID


🏊 Scroll — Pool Prize


🏆 ETHOnline 2023 Finalist

Project Description

This project combines zk-proofs using Polygon ID and a browser extension frontend to generate personalized experiences for eCommerce consumers.

On the frontend, there are actually two components:

  1. A ShopConnect Plugin that's installed on the eCommerce store
  2. A ShopConnect browser extension used by consumers

Whenever a purchase is made on an eCommerce store with the plugin installed, the ShopConnect API issues a Polygon ID Verifiable Credential as Proof-of-Purchase to the consumer's wallet.

The consumer can view all of this in their ShopConnect extension. This then allows them to qualify for any other deals, be it collaborative business promotions, or businesses wanting to target customers who have a certain shopping profile based on their purchase history.

When a deal is found, the consumer can apply it through the extension before checkout. The extension prompts them to apply (where the extension is actually generating the zero-knowledge proof of the Verifiable Credential through Polygon ID in the backend. This way, the consumer gets to keep their data privacy while still being able to qualify for personalized deals.

So we believe that zero-knowledge proofs and web3 allow for truly multiplayer, collaborative, and personalized e-commerce.

How it's Made

The project is mostly built in Typescript. In the technical architecture, there are 5 main components:

  1. ShopConnect Extension This is a chrome extension wrapped around Polygon ID. We've abstracted away the original Polygon ID UX, and converted it into a smooth onboarding flow for eCommerce customers to quickly unlock personalized deals.


  1. ShopConnect Plugin Is a JS script installed on every store. This lets the extension know that this particular eCommerce store is ShopConnect-enabled, and serves as the communication point between extension and backend.

  2. ShopConnect API This backend server exposes endpoints that connect the extension, backend, and stores together. All requests to issue new Verifiable Credentials are made through the API, and requests to verify credentials in a user's wallet are also made through the API. ShopConnect operates an Issuer Node on the backend, allowing it to issue VCs whenever a purchase is made.

  3. Polygon ID The Iden3 State V2 Smart Contracts have been deployed on multiple chains, including Scroll Sepolia, Mantle Testnet and Polygon zkEVM testnet (although zkEVM testnet is pending a fix by the zkEVM team before the deployment can be fully functional). We've also deployed on our Issuer Node to issue Verifiable Credentials with a custom eCommerce schema.

  4. Store Mockup Built with nextJS, tailwind


DISCLAIMER - Scope of implementation:

Even though we wanted to achieve the full flow, including verifications, and that we built all the components in order to achieve it, our best efforts didn't match the time required for it, so for that reason we have partially simulated how it would actually work.

We have created the architecture of the real-world implementation, with two APIs, an e-commerce store, and a browser extension. We have achieved bidirectional communication between the browser extension and the backend, and partially implemented the required Polygon ID actions on the backend.

On the demo, however, the applied promotions are fetched from the APIs, but the application of promotions (or verification of VCs), as well as the emission of the proof of purchase, are simulated. The components were indeed built and developed, but we didn't manage to achieve full integration with testing due to time limitations.

Technical architecture details and flowchart:

Presentation Slides linked here:

background image mobile

Join the mailing list

Get the latest news and updates