🪩 Inspiration
We’ve all seen how event tickets and exclusive fan goods get resold at crazy prices or faked entirely. LoyalTicket was inspired by the idea that true fans deserve authentic access — verified, traceable, and even rewarded for loyalty. We wanted to combine Sui’s low-latency blockchain, Walrus decentralized storage, and NFT verification to make a transparent, fan-friendly ticket ecosystem.
⸻
🎟️ What it does
LoyalTicket is a ticketing platform that bridges event NFTs from Sui to Ethereum. It lets artists, venues, and brands issue verifiable NFT tickets and reward loyal fans with on-chain collectibles. Each ticket is minted as a Sui NFT through modules like ticket.move and locked via the bridge.move smart contract, which emits a LockedEvent when users choose to bridge. A TypeScript relayer listens for these events and triggers the SuiBridge contract on Ethereum, minting a wrapped ERC-721 that mirrors the original NFT using the WrappedSui721 contract. This design enables transparent ownership, anti-scalping protection, and cross-platform fan engagement.
LoyalTicket is a decentralized ticket hub and fan goods marketplace:
• Fans can browse NFT tickets and limited fan goods backed by artist-specific coins (BILL, BTS, MARO, SABR).
• Sellers (verified creators or venues) can mint tickets, list them on-chain, and have metadata stored securely on Walrus (via Tusky SDK).
• Buyers can purchase directly with SUI (and later artist coins), verified through Move smart contracts.
• LoyalFan Goods lets verified sellers post special merch or exclusive access tokens for loyal holders.
• Future plans: Bridge to Ethereum on front-end so tickets can be recognized or traded cross-chain.
⸻
⚙️ Wallet management & Enoki-Google Wallet-less connection
LoyalTicket simplifies the onboarding process by enabling wallet-less access through Enoki and Google authentication. Instead of requiring users to manually install crypto wallets or manage seed phrases, we integrate Enoki’s key management SDK to create non-custodial ephemeral wallets tied to verified Google accounts.
We also offer Slush wallet connection for SUI users.
⸻
⚙️ How we built it
• Frontend: Next.js 14 + Tailwind for fast, clean UI.
• Smart Contracts: Move modules deployed on Sui testnet for creating and buying listings. We built Solidity smart contract on ETH sepolia for interchain protocol.
• Storage: Tusky SDK + Walrus decentralized blobs for storing listing JSON and images.
• Wallet Integration: Sui Dapp Kit for wallet connect, signing, and transaction execution.
• APIs: Next.js API routes handle Tusky uploads and listing aggregation.
• Buy Feature: Client-side transaction using market::buy with dynamic detection of the correct Move call signature.
⸻
🧠 Smart Contract Architecture (Sui + Ethereum)
Our project implements a cross-chain NFT bridge that allows NFTs originally minted on Sui to be locked, verified, and mirrored as wrapped ERC-721 tokens on Ethereum (Sepolia). Each Move and Solidity module has a specific responsibility within this ecosystem.
⸻
bridge.move — Sui → Ethereum Lock Logic • Core Move module that defines the Vault and State objects.
• When a user calls lock_nft_entry, their NFT is:
• Moved into a shared vault on Sui.
• Marked as “locked” inside the global state table.
• Emits a LockedEvent containing:
• NFT object ID
• destination chain ID
• destination EVM address (encoded as bytes)
• metadata URI
• This event is then picked up by an off-chain relayer script (watch-sui-relay-to-eth.ts), which listens for LockedEvent and signs a mint message for Ethereum.
⸻
SuiBridge.sol — Ethereum Verification & Minting • Deployed on Sepolia.
• Accepts a signed message (MintMsg struct) containing the Sui NFT details and relayer signature.
• Recomputes the hash and verifies it with ECDSA.recover.
• On success, mints a wrapped NFT on Ethereum using WrappedSui721.
• Prevents replay attacks via a consumed mapping.
⸻
WrappedSui721.sol — ERC-721 Wrapper • A minimal ERC-721 implementation (using Solmate).
• Only the bridge contract can mint wrapped tokens.
• Stores immutable token URIs referencing the original Sui NFT metadata.
• Users can later burn the wrapped NFT if return bridging is implemented.
⸻
Sui NFT Modules (bill.move, bts.move, burg.move, coff.move, pizz.move, maro.move, sabr.move, sand.move, ticket.move)
Each represents a category of NFT ticket or brand token: • ticket.move — base template used for event or concert tickets.
• burg.move, coff.move, pizz.move, sabr.move, bts.move, etc. — themed mints for different brands (Burger, Coffee, Pizza, Sabrina, BTS).
• These use public entry fun mint_and_transfer_* to mint NFTs directly to a user’s address, often with custom metadata fields.
⸻
market.move • Handles on-chain listings and peer-to-peer NFT trades within the Sui environment before bridging.
• Defines listing creation, cancellation, and purchase functions.
⸻
rewards.move • Implements a reward system tied to NFT activity — e.g., redeeming points or rewarding engagement after ticket usage.
⸻
receipt.move • Generates proof-of-purchase receipts stored on-chain, linked to NFTs from the marketplace.
⸻
🔄 Cross-Chain Flow
1. User mints a Sui NFT (e.g., from ticket.move).
2. Calls lock_nft_entry in bridge.move with the target Ethereum address.
3. The event is emitted → the Node.js relayer (watch-sui-relay-to-eth.ts) picks it up.
4. The relayer signs a message and calls mintWrapped() on SuiBridge.sol.
5. The Ethereum contract mints a wrapped ERC-721 token to the user’s address.
⸻
⚙️ Tools & Integration
• Move (Sui) for object-based asset custody.
• Solidity (Sepolia) for wrapped NFT logic.
• Node.js + ethers.js + Sui SDK for off-chain relay automation.
• ECDSA signatures for secure, replay-protected bridging.
⸻
⚙️ Minting new Artist coins
BILL: Billie Eilish Reward coin
BTS: BTS Reward coin
MARO: Maroon5 Reward coin
SABR: Sabrina Carpenter Reward coin.
We were able to deploy .move smart contract for each coin to issue and mint these coins.
⸻
⚙️ SUI to ETH inter-chain protocol to transfer NFT (Burn/Lock it on SUI, mint it on ETH).
We built a bridging protocol to transfer NFT from SUI testnet chain to ETH sepolia testnet. It is burn (lock) NFT on SUI chain and mint it on ETH protocol.
The purpose is that our ticket exchange and fan artist platform should have a ecosystem beyond SUI chain to potentially connect to applications built on EVM chain. The big picture of our platform and ecosystem is accessibility to as many people as possible.
The sui-eth bridge protocol is in the other repo, we provided 2 repos. The protocol consists of ERC721Mirror.sol, SuiBridge.sol, WrappedSui721.sol deployed on Sepolia testnet and gift_cards/sources/bridge.move contract on SUI testnet. This was done on command line environment, still need time to finish nice front end option to achieve this task.
⸻
🧩 Challenges we ran into
• Sui Move builds and dependency resolution were slow and tricky during iteration.
• Tusky’s rate limits required retries and caching of uploads.
• Matching on-chain listings with off-chain metadata while keeping them in sync was non-trivial.
• Designing a unified interface for both ticket resale and “LoyalFan Goods” while minimizing gas and complexity.
• The biggest challenge -> Inconsistent WIFI, I gave up and in the morning I was able to have wifi working when others went to sleep.
⸻
🏆 Accomplishments that we’re proud of
• Integrated Tusky + Walrus decentralized storage successfully into a Next.js app.
• Deployed a functioning Sui marketplace smart contract with working create_listing and buy flows.
• Built a clean dashboard that lists live on-chain ticket metadata and enables in-app purchases.
• Designed a model for artist-specific coins for loyalty-based fan economies.
⸻
📚 What we learned
• The Sui Dapp Kit and Move language allow expressive, secure asset logic for NFTs and marketplaces.
• Walrus/Tusky make decentralized storage manageable directly from the frontend.
• Creating cross-chain flows (Sui → Ethereum) will require either bridging NFTs or using event proofs and signatures.
⸻
🚀 What’s next for LoyalTicket
• Implement artist token rewards for verified purchases.
• Implement front-end option of Sui ↔ Ethereum NFT bridge for multi-chain marketplace support.
• Integrate dynamic pricing and loyalty tiers.
• Expand the LoyalFan Goods section with richer metadata and media previews.
• Deploy on Sui mainnet and open to early testers.
Built With
- eth
- solidity
- sui
- sui-cli
- tusky
- typescript
- walrus


Log in or sign up for Devpost to join the conversation.