Work

Bullet

Web3 Payments · Jul 2026 · Co-founder & Engineer

Bullet hero: send money, leave no trace

Anyone can send payments on Stellar without broadcasting the amount and recipient to the entire world.

The problem

Every transaction on a public blockchain is visible to anyone, forever. Salaries, invoices, and personal transfers become open books.

The goal was a payment rail on Stellar where transfers stay private but remain verifiable.

What I built

  • A send/receive flow that feels like a normal payments app
  • Fixed-amount private notes in USDC, USDT, or XLM, sent to an X handle or email
  • Zero-knowledge proofs generated entirely in the browser
  • On-chain verification, so a claim can't be linked back to its deposit

How it works

Groth16 proofs are built with Circom and snarkjs in the browser, then verified on-chain using Soroban's native BLS12-381 host functions. Deposits go into a Poseidon Merkle tree, and claims reveal only a nullifier, which prevents double-spends without linking the claim to its deposit.

Payments are fixed-amount notes rather than arbitrary values, which keeps the anonymity set meaningful: every note of a given denomination looks identical on-chain.

Stack

  • Next.js
  • TypeScript
  • Rust
  • Stellar
  • Soroban
  • Circom
  • snarkjs
  • Supabase

Images

Inbox with claimable USDC and XLM notesSend flow with fixed-amount denominations

Need something like this?

Get in touch

For work, collabs, and inquiries, reach me here:

clarencekyl3@gmail.com
Open mail app