PassGate lets apps sell encrypted Walrus data using Sui payments and user-owned access passes.
PassGate is a Sui-native payment and access layer for private data. Sellers upload encrypted datasets or files to Walrus, then create an on-chain product object with price, metadata, and encryption identity. Buyers pay with testnet SUI and receive a user-owned AccessPass object. The app verifies that pass before unlocking the encrypted content. The MVP includes a deployed Move package on Sui testnet, live Walrus uploads for encrypted bytes and metadata, wallet-based product creation and purchase, and a proof panel linking to the Sui package, Product object, AccessPass object, transaction, and Walrus blobs. For the demo, the final unlock step uses a local browser encryption key so the flow is easy to show end-to-end. On chain, the Move contract already includes a seal_approve_access policy that can be used with Seal key servers for production-grade access enforcement.
PassGate is a React/Vite app connected to Sui through Sui dApp Kit. The core logic lives in a custom Move package that we deployed to Sui testnet. The contract has two main objects: Product, which represents an encrypted dataset for sale, and AccessPass, which is minted to a buyer after payment. When a seller publishes a dataset, the browser encrypts the data, uploads the encrypted file and metadata to Walrus testnet, and then creates the Product object on Sui. When a buyer pays, the Move contract sends the payment to the seller and gives the buyer an AccessPass object. The app then reads the transaction results and shows the real Product, AccessPass, transaction, and Walrus blob IDs in the UI so judges can verify what happened. We also added a Seal-ready seal_approve_access function in Move for future key-server based access checks. For this MVP, the final decrypt step uses local browser crypto so the demo stays reliable.

