Prism
live on Stellar testnet

The on-chain batch aggregator + compliance oracle for Stellar Private Payments

Prism extends Nethermind's SPP (Nethermind's privacy pools for Stellar): it settles many real private transfers in a single verification with constant verification cost in K, and adds what the base pool lacks: hard in-circuit compliance caps plus auditor selective disclosure, for compliant RWA settlement at scale.

Extends Nethermind Stellar Private Payments · Groth16 over BN254 · K real SPP transfers settled in one verify on testnet

The problem

Regulated assets on Stellar are transparent, or permissioned. Not private and compliant.

A real-world-asset issuer today must choose: a transparent ledger anyone can read, or a permissioned pool with no proof of compliance. They can be compliant OR private, never both.

Transparent ledgers

Balances, counterparties and amounts are public. Unacceptable for institutional positions that are legally required to stay confidential.

Permissioned pools

Privacy without programmatic compliance: no proof that a batch stayed within limits, no auditor-verifiable totals. Regulators can't trust it.

RWA settlement needs both: confidential positions and provable, auditor-checkable compliance, at a cost that scales.

The solution

Prism extends Nethermind's Stellar Private Payments.

SPP is a privacy pool for Stellar: real private transfers on Soroban with Groth16/BN254 proofs. Prism builds directly on it (same curve, real SPP transactions) and adds the two things the base pool doesn't have.

Nethermind SPP: the base pool
  • Private transfers (amounts & relationships hidden)
  • ASP membership / non-membership controls
  • · One transfer per verification
  • · No in-circuit compliance proof
  • · No auditor-verifiable totals
Prism: adds on top
  • Batch aggregation: many real SPP transfers in one verification, constant cost in K
  • Hard compliance caps: total & per-transfer limits enforced as proof constraints
  • Auditor selective disclosure: amounts encrypted on-chain, totals verifiable by the auditor

Crediting and building on SPP; its circuits are vendored (Apache-2.0), not reinvented.

How it works

Many private transfers in, one compliant verification out.

1

K private SPP transfers

Real policy_tx_2_2 witnesses, amounts hidden

2

Prism aggregation circuit

K transfers + cap predicates + auditor ECDH, one proof

3

One BN254 verify on-chain

Constant 4 public signals → flat verify cost

4

Compliance proof + auditor notes

Caps attested; (R, ciphertext) stored, no amounts

Aggregation-by-batching (re-proving real SPP transfers together), not recursive proof verification. The proof is generated offline; the settlement runs live on testnet.

Three pillars

What Prism adds to private payments.

The compliance oracle (in-circuit caps + auditor selective disclosure) is the piece base SPP does not have. Aggregation makes it scale.

Batch aggregation

Settle many private transfers in a single verification; verification cost stays constant as the batch grows.

verify flat · 28.8M
not in base SPP

In-circuit compliance caps

Total and per-transfer limits are hard proof constraints, so a non-compliant batch simply cannot produce a proof.

no valid witness if over cap
not in base SPP

Auditor selective disclosure

Each amount is encrypted to the auditor's key on-chain; the auditor verifies the total without anyone de-shielding.

amounts never on-chain
The benchmark

One flat verify vs. linear naive verification.

Prism's verification cost is constant in K (one BN254 verify); verifying each transfer separately grows linearly and crosses Stellar's real testnet limit. K=2/4/8 are measured on testnet; K=13 is projected.

100M200M300MK=1K=2K=4K=8K=13batch size K (transfers per settlement)measured on testnet (K=2/4/8)projected (K=13)Stellar testnet limit400M / txnaive crosses 400M · K=13naive K×verifyprojected57.6M77.7M118M168MPrism total settlePrism verify · flat28.8M
Prism verify (flat)
28.8M · any K

measured at K=2/4/8, constant in K

Prism total settle
57.6M → 118M

K=2/4/8 measured; sublinear, far under the limit

Naive K×verify
crosses 400M at K=13

31.4M per separate verify · projected, linear in K

The structural win is ceiling-independent: one flat verify can attest a batch of any size, while naive verification is strictly linear. Constraints 101,842/201,096/399,604 at K=2/4/8 (ptau 2^17/2^18/2^19).

Real-world use cases

Compliant, confidential settlement at institutional scale.

Tokenized fund shares

Settle investor allocations privately while proving caps and totals to the fund administrator.

Confidential payroll & treasury

Batch salary or treasury transfers with amounts hidden, yet compliance provable to finance and audit.

Private stablecoin settlement

Institutions settle large volumes with counterparties hidden and totals auditable by regulators.

RWA settlement with auditor oversight

Regulated real-world-asset transfers stay private on-chain, verifiable on demand by a mandated auditor.

Receipts & trust

Real SPP transfers, settled on testnet.

Per-K fresh stacks. Every aggregated settlement is a real on-chain transaction; open them on the explorer.

Honest scope
  • · Real: on-chain verify, all-or-nothing nullifier spend, compliance caps, auditor decryption, with real SPP policy_tx_2_2 witnesses.
  • · Aggregation-by-batching, not recursion: one proof re-proves K real transfers; it does not recursively verify K proofs.
  • · In the live demo the proof is pre-generated (proving K transfers takes minutes) while the settlement transaction is live.
  • · The relayer / EVM-omnichain lane is secondary and runs in attestation mode; BLS12-381 dual-curve is roadmap.
Roadmap

From testnet to a mainnet issuer pilot.

01Shrink the H-fold bookkeeping (recursion / folding)
02BLS12-381 dual-curve behind the same verifier
03Trust-minimized omnichain (proof of EVM state)
04Full SEP-57 confidential-token wire format
05Security audit
06Mainnet + regulated-asset issuer pilot

See it settle live on Stellar testnet.

A 2-3 minute guided flow: a real aggregated settlement, the compliance caps, and the auditor decrypting on-chain ciphertexts, with a live transaction you can open on the explorer.