OpaqueApp

Docs/Concepts

Shares and raw units

Why a shielded position keeps accruing.

xStocks handle dividends and splits differently from most tokens, and Opaque is built around that difference.

The multiplier

An xStock does not pay dividends in cash and does not mint you new tokens on a split. Dividends are reinvested into more shares and splits are applied, both by changing a multiplier on the mint (Token-2022's scaled UI amount extension):

shares = raw × multiplier

Your raw token balance never changes on a corporate action. The multiplier does, and every wallet and app shows you shares by applying it.

Notes hold raw units

Opaque notes are denominated in raw units. That single decision means:

  • A dividend or split that happens while your position is shielded reaches it in full. Nothing inside the pool needs to know it happened.
  • The pool never reads the multiplier and never has to be updated for a corporate action.
  • What you unshield is exactly what an open holder of the same raw amount would have.

What the app shows

The app shows shares, because that is what you think in. It reads the current multiplier from the mint and converts your notes to shares for display, and converts the shares you type to raw units for the proof. The multiplier it used is printed under your holdings.

Because the conversion rounds, the app treats dust of a few raw units as the full amount when you choose all, and rounds the displayed balance rather than cutting it. The raw amount in the note is always exact.

Cross prices

Cross works per raw unit: its batch price is what the open market pays for one raw unit, quoted in raw units too, so nothing has to be converted on the chain. The app shows that price per share and takes limits per share, converting both with the multiplier.