Recent build · GIWA GASOK

05 / 12

Mulle

A testnet investment MVP that lets a verified GIWA account request an external-chain position, track settlement, and claim shares without holding native gas.

Role
Frontend Lead · Product Engineer · Jul 2026
Problem
A signed request, destination-chain execution, vault fulfillment, and the final claim are separate events, but the user still needs one trustworthy investment journey.
Strategy
The frontend treats request, execution, fulfillment, and claim as explicit states backed by current chain data. It separates wallet intent from sponsored submission, restores progress from contract snapshots, and stops transaction UI from starting when runtime configuration is unsafe.
Outcome
Delivered a live testnet MVP spanning GIWA Sepolia and Robinhood Chain Testnet with request, external execution, fulfillment, and claim flows for test assets.

Live testnet MVP · Jul 2026

01

Problem definition

Why this problem had to be solved

Mulle connects a verified GIWA testnet account to an external test market. The user requests an investment, follows each settlement step, and claims the result. A backend sponsor pays the network fee and a trusted solver handles the external execution.

What users and the system were facing

  • Accessing an external-chain product normally requires bridging assets, switching networks, obtaining destination-chain gas, and repeating approvals.

  • Submitting a transaction does not mean an externally executed investment has settled or become claimable.

  • A refresh, concurrent request, relayer timeout, or solver delay could otherwise leave the interface showing a misleading completion state.

Frontend ownership

I led the frontend and product UX, turning the initial proof of concept into a public landing page, market and product routes, deposit and redeem workspaces, settlement tracking, and a portfolio. Teammates owned the contracts and backend solver.

  • Product structure, responsive interface, and EN/KO experience

  • Privy embedded wallet and EIP-7702 / EIP-712 signing UX

  • ERC-7540 deposit, redeem, fulfill, and claim state

  • Runtime configuration, security boundaries, testing, and release checks

02

Solution strategy

A system strategy carried into production

The frontend treats request, execution, fulfillment, and claim as explicit states backed by current chain data. It separates wallet intent from sponsored submission, restores progress from contract snapshots, and stops transaction UI from starting when runtime configuration is unsafe.

System model

A verified GIWA account signs a sponsored request, a trusted solver executes on an external testnet, the vault fulfills the asynchronous request, and the user claims settled shares.

Implementation decisions

  • Modeled ready, signing, submitted, pending, claimable, claimed, and failed states from contract snapshots instead of temporary component state.

  • Restored pending and claimable work after refresh and kept simultaneous deposit and redeem requests distinct.

  • Kept sponsor keys on the backend while the browser produced only signatures and optional authorization, then tested the production bundle for secret exposure.

  • Failed closed on unsafe relayer URLs, invalid chain or contract configuration, decimal mismatches, and incomplete deployment data before enabling wallet actions.

03

Outcome

What changed—and what I learned

  • Delivered a live testnet MVP spanning GIWA Sepolia and Robinhood Chain Testnet with request, external execution, fulfillment, and claim flows for test assets.

  • Passed 29 logic and configuration tests, four Chromium smoke tests, TypeScript, production build, and bundle-security checks at the Jul 2026 release review.

  • Kept the public landing route separate from the wallet-heavy runtime and reduced polling when settlement was inactive or the tab was in the background.

Learning

Web3 frontend completion must follow the business settlement state, not the success of a single transaction submission.

Today

The MVP still relies on a trusted solver and testnet assets. I would add verifiable cross-chain messaging, request-to-destination transaction correlation, and a smaller wallet runtime before moving beyond a controlled testnet environment.

Built with

  • TypeScript
  • React
  • Vite
  • TanStack Query
  • Privy
  • viem
  • EIP-7702
  • EIP-712
  • ERC-7540
  • Playwright

Work together

Need this level of frontend ownership?

Contact me