
Circom circuit (ported from our existing Noir implementation) that proves email ownership via RSA-2048 JWT verification without revealing the email on-chain, targeting BN254/Groth16. Stellar usage: BN254 curve selected for direct compatibility with Protocol 25 native host functions (bn254_g1_add, bn254_g1_mul, bn254_multi_pairing_check). Impact: Enables zkJWT verification on Stellar
Four contracts forming the on-chain protocol: Groth16 Verifier, ZarfVesting (claim + vesting logic), JWK Registry (RSA key management), and VestingFactory (deterministic deployment). Stellar usage: Protocol 25 BN254 host functions (bn254_g1_add, bn254_g1_mul, bn254_multi_pairing_check) for Groth16 proof verification; Poseidon host functions (CAP-0075) available for future on-chain hashing if needed; Stellar Asset Contracts (SAC) for token transfers; env.deployer() for deterministic factory deployment; persistent storage for nullifiers, vesting state, and key management. Impact: Full privacy-preserving claim pipeline natively on Soroban. For pure Soroban tokens (SEP-41), the entire flow completes in a single transaction. For SAC-wrapped classic assets (e.g., USDC, EURC), a relay service orchestrates a 2-transaction sequential flow: trustline setup (classic) followed by ZK proof verification and token transfer (Soroban), with fee-bump sponsorship for gasless recipient experience.
SvelteKit wizard that guides distributors through distribution setup: token selection, CSV upload, vesting configuration, backup key generation, and one-click deployment. Stellar usage: Freighter wallet integration for transaction signing, Soroban RPC and @stellar/stellar-sdk for contract interaction, SAC token queries for balance and metadata. Impact: Non-technical users can create private token distributions on Stellar through a guided interface
SvelteKit interface where recipients log in with Google OAuth, generate a ZK proof entirely in-browser, and claim vested tokens, all without understanding the underlying cryptography. Stellar usage: Freighter wallet for claim transaction signing, Soroban RPC for contract calls, @stellar/stellar-sdk for transaction assembly and submission. Impact: Email-first onboarding that requires zero prior crypto experience, recipients interact with a familiar Google login while ZK proof generation runs invisibly in a Web Worker.
Integration guide for building on top of Zarf or reusing its ZK verification infrastructure. Stellar usage: Soroban contract API documentation with @stellar/stellar-sdk code examples, deployment instructions for Stellar testnet and mainnet. Impact: Lowers the barrier for other Stellar projects to integrate private token distribution or reuse Groth16 verification, extending Zarf's utility beyond its own protocol.
Contract event indexing and operational dashboard providing real-time visibility into distribution health, claim activity, and system status. Stellar usage: Soroban contract events for claim, distribution, and key operations, Mercury or SubQuery indexer for event capture and aggregation. Impact: Visibility for distributors, track claims, debug failures, and monitor distribution health without reading raw blockchain data.
$40.0K
zarf.to is currently deployed on Ethereum Sepolia as a live showcase product to validate the core technology. We have successfully deployed and tested the logic using Noir-based ZK circuits (noir-jwt) for JWT verification, proving that the user experience of claiming tokens via email is seamless and viable.
Our goal is now to port this project to Stellar and bring it to real users. We are requesting this grant to migrate our proven architecture to Stellar, leveraging Stellar X-Ray, Protocol 25 to build scalable email payments and payroll solutions that are ready for mass adoption.
Market Validation: The Stellar Disbursement Platform (SDP) has already processed $7.6M in payments solving a similar "walletless recipient" problem for humanitarian use cases, and the Marshall Islands on-chain UBI deployment reached 33,000+ recipients on Stellar. Zarf extends this model by adding ZK-based privacy and targeting broader commercial use cases including payroll, DAO distributions, and B2B payments — a serviceable market we estimate at $1.5–3.5B.
Market Research: https://astromina.notion.site/zarf-market-research?source=copy_link
Our teammates prior work includes the following traction records across previous projects:
astromina.org: 60+ developers onboarded, managed 100k+ MINA in bounty payments.
Sui Builder Reward: Launched an NFT campaign onboarding 30k users to Sui.
DojoDuel.fun (Solana Mobile Hackathon Finalist): Launched the first mobile game on Solana, achieving 60,000+ players.
ETHGlobal Hackathon Finalist: adFHE (FHE-based advertising protocol).
Cropto.io: Technical development for Turkey’s first agricultural asset-backed token. Built the policy engine, multisig architecture, and token engine.
Nori-ZK Light Client Bridge: Spearheaded early-stage development of a ZK bridge; subsequently funded by o1Labs & Mina Foundation and preparing for upcoming launch.
MinaMastermind.com: Optimized circuit proving speed by 2x and redesigned UX to abstract ZK complexity. Funded by Mina Foundation.
ZK Product Studio (UAE): Established our dedicated headquarters 2 months ago, rapidly prototyping and deploying multiple zero-knowledge use cases to validate privacy-preserving architectures and accelerate product delivery.
We believe that this prior traction demonstrates our ability to design, implement, and deliver complex cryptographic systems with quick iteration , which we will now apply to building zarf.to as a Stellar-native application.
Core ZK circuit and smart contract primitives implemented. All deliverables are development work with testable artifacts.
Port ZK circuits from Noir to Circom, replacing Pedersen hash with Poseidon and targeting Groth16/BN254 for Soroban Protocol 25 compatibility. The circuit must implement:
RSA-2048 JWT signature verification (18 * 120-bit limbs)
Email claim extraction and hashing
Identity commitment computation: Poseidon(emailHash, secretHash)
Merkle proof verification (depth 20, sparse tree)
Public input/output mapping matching the existing 23-field interface
Completion criteria:
Circuit compiles
Passes all equivalent test vectors from the existing Noir test suite (JWT verification, Merkle membership, identity commitment generation)
Proof generation succeeds for a valid test input and fails for invalid inputs
Soroban smart contract that verifies Groth16 proofs using Stellar Protocol 25 native BN254 host functions (bn254_g1_add, bn254_g1_mul, bn254_multi_pairing_check).
Completion criteria:
Contract compiles
verify(proof, public_inputs) returns true for a valid proof generated by the Circom circuit (Deliverable 1.1)
verify(proof, public_inputs) returns false for tampered proofs (modified proof points, altered public inputs)
Unit tests cover valid proof, invalid proof, and malformed input cases
Soroban smart contract implementing the claim pipeline: proof verification, nullifier tracking, time-lock enforcement, and token transfer.
Completion criteria:
Contract implements full claim verification pipeline: verify proof → validate JWK → check Merkle root → check recipient → enforce unlock_time → check nullifier → transfer tokens
Unit tests pass for: successful claim, duplicate claim rejection (nullifier), premature claim rejection (unlock_time), invalid proof rejection, wrong recipient rejection
Contract state matches the specification: token address, owner, merkle_root, nullifiers map, verifier/registry references
Soroban smart contract storing trusted OAuth provider RSA public keys (18-limb format) with registration and validation.
Completion criteria:
register_key(limbs) stores a key indexed by keccak256(limbs) and test passes
is_valid_key_hash(hash) returns true for registered keys and false for unregistered keys and test passes
revoke_key(hash) removes a key and test passes
Owner-only access control enforced on register/revoke and test passes
Full system integration with working frontend and testnet deployment. End-to-end flow demonstrated.
Soroban contract performing atomic deploy + initialize + fund in a single transaction using deterministic addressing (deployer + salt).
Completion criteria:
create_and_fund_vesting(params, total_amount) deploys a ZarfVesting instance, initializes it, sets the Merkle root, and funds it with tokens (all atomically)
Deterministic addresses: same parameters produce the same address across invocations
End-to-end factory deployment test passes on Stellar testnet
Testnet contract address provided
SvelteKit distribution creation wizard integrated from EVM to Stellar: token selection, CSV upload, vesting configuration, PIN generation, and factory deployment via Freighter wallet.
Completion criteria:
5-step wizard functional: token selection → CSV upload → vesting config → backup key → deploy
Freighter wallet connection and transaction signing works
Merkle tree generation produces valid roots (verified against contract)
Successfully create a token distribution on Stellar testnet via the UI
Screenshot or screen recording of completed flow
SvelteKit claim interface integrated from EVM to Stellar: Google OAuth login, eligibility check, in-browser Groth16 proof generation, and on-chain claim via Freighter.
Completion criteria:
Google OAuth flow returns JWT and extracts email
Proof generation runs in Web Worker using Circom/snarkjs WASM backend
Claim transaction submits proof + public inputs to ZarfVesting contract via Freighter
Successfully claim tokens on Stellar testnet via the UI
Screenshot or screen recording of completed flow
Full protocol flow demonstrated on Stellar testnet: create a distribution, distribute PINs, and claim tokens.
Completion criteria:
Video walkthrough (5-10 minutes) showing the complete flow: distributor creates distribution → PINs exported → recipient claims tokens
All testnet contract addresses published (Factory, Vesting instance, JWK Registry, Verifier)
Testnet contracts verifiable on Stellar explorer
Comprehensive unit and integration tests for all Soroban contracts and the Circom circuit.
Completion criteria:
Circom circuit tests: valid/invalid JWT, valid/invalid Merkle proof, identity commitment edge cases
Soroban contract tests: ZarfVesting (claim flows, rejection cases, nullifier tracking), JWK Registry (register/revoke/validate), VestingFactory (atomic deploy+fund), Verifier (valid/invalid proofs)
Integration tests: end-to-end claim flow against testnet contracts
CI pipeline passing (GitHub Actions or equivalent)
Test coverage report generated
Deploy all Soroban contracts to Stellar mainnet.
Completion criteria:
Deployed contracts: ZarfVestingFactory, JWK Registry, Groth16 Verifier
All contract addresses verified on Stellar mainnet explorer (e.g., stellar.expert or stellarchain.io)
JWK Registry initialized with current Google JWKS RSA public keys
Smoke test: create a distribution and claim tokens on mainnet
Integration guide, API reference, and deployment instructions for developers building on or integrating with Zarf on Stellar.
Completion criteria:
Published documentation (docs site, GitHub README etc.) covering:
Protocol overview and architecture
Contract API reference (all public functions, parameters, events)
Deployment guide (how to deploy your own Zarf instance)
Integration guide (how to build on top of Zarf contracts)
Circuit documentation (input/output format, trusted setup instructions)
Documented code examples for programmatic interaction with Zarf contracts
Contract event indexing and error tracking for production operations.
Completion criteria:
Soroban contract events emitted for key operations: claim, distribution creation, key registration/revocation
Event indexing setup (Mercury, SubQuery, or custom indexer) capturing contract events
Dashboard or logging interface showing: active distributions, claims processed, failed transactions
Automated service that monitors Google JWKS endpoint and updates the on-chain JWK Registry when keys rotate (~every 2 weeks).
Completion criteria:
Service polls Google JWKS endpoint on a configurable interval
Detects new keys and submits register_key transactions to JWK Registry
Detects expired/removed keys and submits revoke_key transactions
Logging and alerting for rotation events and failures
Deployed and operational alongside mainnet contracts
We are a team of seasoned founders who have worked together for over three years building and shipping production-focused zero-knowledge and blockchain products.
Deniz (Co-Founder, Protocol & ZK Engineering)
Working in the zero-knowledge ecosystem for more than 3 years
Exploration engineer @ o1Labs (Mina Protocol)
Previously, penetration tester @ Etherscan
Maintaining `zk-kit` in collaboration with Ethereum Foundation (PSE)
Built projects using zkJWT, zkEmail, and zkPassport in Noir and Circom
Implemented cryptographic primitives in o1js (ChaCha20, HMAC-SHA256, Schnorr & ECDH over secp256k1)
Built a ZK light client bridge between Ethereum and Mina using SP1-Helios
LambdaClass Cryptography Bootcamp 2024 Fellow
Self Protocol ZK Residency 2025 Fellow
ETHGlobal Brussels 2024 Finalist (FHE-based Advertisement Protocol)
Github: https://github.com/0x471
Twitter/X: https://x.com/d0x471b
Yaman Can (Co-Founder, Product Engineering, Design, UI/UX & GTM):
Local Growth @ BabylonLabs
Specializes in UI/UX for ZK products.
Previously designed developer and ZK game onboarding flows for Mina Protocol
Managed $300K+ in budgets for high-profile TGE/GTM campaigns (Galxe, CyberConnect etc).
Awarded Sui Builder Hero (2023) for architecting an NFT campaign that onboarded 30,000 users to the Sui Network on Sui Testnet.
2x Starknet Hackathon Finalist
Starknet Dojo MUD Engine Hackathon Track Winner
Solana Hackathon Finalist (DojoDuel.fun game)
Portfolio: https://yamancan.notion.site/design
Github: https://github.com/yamancan
Twitter/X: https://x.com/yamancan

