Portal Deposit Addresses
Give a user a reusable, public, exchange-style deposit address. Anyone can fund
it with standard ERC-20 transfers, and the funds are credited into the owner’s
shielded balance without revealing which account was credited. See
Portal Deposit Addresses for the concept and
trust model.
Preview feature — pending external audit, and enabled per deployment. Several
fields are launch-limited; the limitations are called out inline below.
The TypeScript SDK exposes the full portal lifecycle through the sdk.portal
resource.
Checking support
delegateAddress() returns the portal delegate address advertised by the
server’s /info, or undefined when the server does not support portals:
Creating a portal
create does everything in one call: it derives a fresh portal address E from
your seed, delegates it to the portal implementation, registers the on-chain
owner binding, and publishes the discovery registry entry.
Pin a derivation index to re-derive a specific portal deterministically:
Listing your portals
Checking a portal’s status
Launch limitation: status.delegated always reports false — the
discovery server does not yet compute on-chain delegation status. A portal you
created with create() is delegated regardless. Do not gate a “ready”
check on this field; use registered and published.
Receiving deposits
A sender funds a portal with an ordinary ERC-20 transfer to E — they need
nothing from Privacy Boost. List the deposits observed at a portal:
A deposit moves through these states:
Launch limitations: cancellableAtBlock is always 0 (treat as
unknown, not “reclaimable now”), and at launch the sweep fee is 0, so
grossAmount equals netAmount.
Sweeping
Sweeping moves a portal’s balance into the pool. At launch this is operator-run,
so you normally do not call it — but sweep is available as a self-service
backstop. It returns the sweep transaction hash:
Reclaiming an un-credited deposit
If a swept deposit is never credited, reclaim it after the cancel delay. The
funds return to the portal address E, never to the caller:
Withdrawing raw funds from E (escape hatch)
For funds resting at E that can never be swept (for example a token that is not
registered with the protocol), withdraw builds a signed raw EIP-1559
transaction you broadcast yourself. Read the nonce and gas/fee values from your
own RPC:
Types