FlexAnon is a portfolio-sharing application built on Solana and powered by Zerion. It lets someone publish selected portfolio information through a share link, with an on-chain commitment connecting the disclosed data to a snapshot.
The interface brings balances, performance charts, allocation, and top assets together, then turns that view into something another person can inspect without requiring the owner to put a wallet address on the public page.
The problem
Sharing a wallet address exposes more than a single portfolio claim: it gives a viewer a starting point for exploring public holdings and transaction history. A screenshot reveals less context, but it can be edited and gives the recipient little to verify.
FlexAnon explores the space between those choices. The user should be able to disclose useful portfolio information while withholding fields they do not want on the shared page. The recipient should receive a checkable connection to a committed snapshot rather than rely only on an image.
From a portfolio to a share link
Connecting a Solana wallet starts the portfolio view. The backend obtains balances, historical charts, and positions through Zerion; the frontend presents them as a portfolio card with allocation and performance views. The sharing model supports disclosure preferences for totals, P&L, assets, and the wallet address.
A snapshot is associated with a Solana commitment, and the application generates a short share token. The public route resolves that token into the disclosed fields, proof data, and commitment metadata. The demo shows the resulting verified view and the generated link, as well as image export for sharing the portfolio visually.
What the commitment proves
Portfolio fields are represented as hashed leaves in a Merkle tree. Its root is a compact commitment to that snapshot. A proof for a revealed leaf can be checked against the root without including every other field in the shared payload.
An Anchor program stores the root and commitment metadata on Solana. A relayer submits the transaction and pays its rent, so the user does not have to fund the commitment transaction directly. The share service stores the token, disclosed leaves, proofs, and chart data in PostgreSQL, and checks the commitment when resolving a link.
The important boundary is integrity: a Merkle proof connects a disclosed value to a committed snapshot. It does not independently establish that the original portfolio data was correct, or that the snapshot still matches the wallet’s current balance. Those are separate questions from whether the committed data has changed.
Privacy and the data boundary
The public display can omit the wallet address, but the application backend still needs the address to fetch and manage the portfolio, and the sharing service stores an owner association. This is controlled disclosure to recipients, not a claim of anonymity from every infrastructure participant.
Commitment versions and revocation state let the service detect an updated or revoked share. That prevents an old link from being presented as the current snapshot indefinitely, while keeping the link lifecycle distinct from the underlying live portfolio feed.
Implementation and outcome
The project connects a Next.js interface, an Express and TypeScript API, Zerion portfolio data, a relayer, PostgreSQL/Supabase storage, and the Anchor commitment program. The central implementation challenge is carrying the same snapshot through fetching, disclosure, commitment, and public presentation without confusing a live balance with a saved share.
FlexAnon won first place in the Consumer App on Solana using Zerion API sidetrack at Colosseum Cypherpunk. The supplied demo shows the portfolio and sharing workflow; the commitment setup is documented for Solana devnet.
Details
1st place, Consumer App on Solana using Zerion API sidetrack.
Anchor, Next.js, Express, TypeScript, Solana Web3.js, Zerion API, PostgreSQL