Skip to content

Veil 0.13.0

Choose a tag to compare

@iamalwaysuncomfortable iamalwaysuncomfortable released this 22 Oct 06:56
· 42 commits to main since this release
ee09da8

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.

Details and known limitations · Full changelog