Skip to main content

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; see Launch limitations.
Android exposes the supported portal lifecycle as methods on your PrivacyBoost instance. createPortal derives the portal EOA from the account seed and keeps the key inside core.

Lifecycle at a glance

  1. Check supportsdk.portalDelegateAddress().
  2. Createsdk.createPortal(null) derives E, gaslessly delegates and registers it, then publishes discovery.
  3. Share — senders fund the returned portal.address with ordinary ERC-20.
  4. Sweep / credit — the operator runs this at launch, or you can call sdk.sweepPortal(...) as a backstop.
  5. Recover — use sdk.reclaimPortalDeposit(...) for uncredited swept deposits, then sdk.withdrawPortal(...) if raw funds are resting at E.

Check support

Create a portal

createPortal is resumable. If the same seed-derived portal is already created, the method returns it as a no-op. Passing an explicit index recreates that deterministic portal; passing null picks the next free index.

List portals and deposits

status.delegated is launch-limited: the server may report false even for a portal just created by createPortal. Do not gate readiness on that field.

Sweep and reclaim

At launch, sweeping is normally operator-run. If you need to trigger it yourself:
If a swept deposit remains uncredited past the cancel delay:
reclaimPortalDeposit returns funds to the portal address E, not to the caller. To move raw funds from E, build a signed transaction and broadcast it yourself:
E must hold native gas for the withdrawal transaction.

Low-level escape hatches

The package still exports two low-level helpers for custodial integrations that manage their own portal EOA key:
The seed-derived createPortal flow does not use or expose eoa.privateKey.

Types