Repository navigation
Veil 0.13.0
Veil 0.13.0 adds automatic compliance proofs for the Shield Swap and Bridge SDKs. Local accounts generate and cache proofs against the current freezelist root; supported wallets derive them through algorithm requests. Existing supplied proofs and custom providers remain supported.
The Bridge SDK reads compliance state through its public client. Shield Swap fee-tier discovery now works without API authentication.
All ten packages are published on npm under latest.
Compliance
Proof generation is enabled by default in the Shield Swap and Bridge SDKs. With a local SDK client or a compatible wallet connected with the required algorithm grants, callers need no manual proof generation, provider, or cache. Omit proofs (Shield Swap) or merkleProof (Bridge) to use the default.
Swaps and liquidity actions on Shield swap are done compliantly in zero knowledge via Merkle Exclusion proofs that prove in zero knowledge that private addresses are not on a known freezelist. Callers construct these Merkle exclusion proofs locally and send them as private inputs into Aleo's zkSnarks. These proofs are verified locally showing that frozen addresses are absent from the freezelist without publicly revealing those addresses or the Merkle paths. These compliance checks preserve the privacy of the addresses making swaps or managing liquidity.
| SDK | Public function | When Merkle exclusion proofs are required |
|---|---|---|
| Shield Swap | swap(), swapMultiHop() |
Wrapped input-token sender; intermediate hops add no proof inputs |
| Shield Swap | claimSwapOutput() |
Shield Swap signer, plus wrapped output and refund receivers when applicable |
| Shield Swap | mint() |
Shield Swap signer, position recipient, withdrawal address, and any wrapped token senders |
| Shield Swap | increaseLiquidity() |
Wrapped token senders |
| Shield Swap | collect() |
Shield Swap position owner, withdrawal address, and any wrapped token receivers |
| Shield Swap | rebalancePosition() |
Shield Swap position owner and withdrawal address, funded wrapped token senders, and wrapped token receivers |
| Bridge | bridge.unshield() / exported unshield() |
ARC-22 private-to-public transfer; one signer bundle |
| Bridge | bridge.execute() |
Outbound Aleo USDCx xReserve burn in private mode (the default); one signer bundle |
| Bridge | xreserve.aleoToEvm.execute() |
Standalone execution of the same private burn; one signer bundle |
Proof configuration guides: Shield Swap · Bridge.