Skip to content

Veil 0.16.0

Choose a tag to compare

@iamalwaysuncomfortable iamalwaysuncomfortable released this 30 Oct 18:49
· 9 commits to main since this release
f397703

Veil 0.16.0

Minor release for all ten Veil, Shield Swap, and Bridge packages, published
under npm's latest tag. The functional change is in
@provablehq/aleo-bridge-sdk; the other packages move in lockstep.

npm install @provablehq/veil-core@latest @provablehq/aleo-bridge-sdk@latest

Changes

  • Refuse to bridge over a paused route. Every active route in the bridge
    registry now declares the on-chain pause flags it depends on: the pause,
    paused, or pause__ mapping of each Aleo program in the route, the
    OpenZeppelin paused() view of the xReserve contract and CCTP
    MessageTransmitter, and the pausable hook and ISM the Ethereum Hyperlane
    Mailbox runs on dispatch to and delivery from Aleo. Mapping names were
    verified against deployed bytecode on mainnet and testnet.
  • Add getRouteStatus, also bound as client.getRouteStatus and exposed as
    the bridge_get_route_status agent and MCP tool. It reads every declared
    flag in parallel through the configured public clients and reports each as
    active, paused, unknown (the read failed), or skipped (no client is
    configured for that chain).
  • Report pause state with every quote. quote results carry paused and
    routeStatus, so an application can still show the price while disabling
    submission.
  • Refuse paused routes before any wallet interaction. execute, resume,
    and complete throw BridgeRoutePausedError, which extends BridgeError,
    names the paused program or contract in its message, and carries the full
    route status. A flag that cannot be read never blocks, since the chain
    enforces the pause either way; pass skipRouteStatus: true to skip the
    reads.

Compatibility

All additions are optional. The new route field stays out of the registry
compatibility fingerprint, so plans and checkpoints saved on 0.15.0 remain
valid. Existing call sites compile and behave as before, except that a route
whose flag reads as paused is now refused up front instead of failing on
chain after proving. Peer ranges for veil-aleo-devnode, veil-aleo-sdk,
and veil-aleo-wallet-adapter move to >=0.16.0 <1.0.0.

shield and unshield are asset-keyed privacy actions with no route to look
up and are not guarded; their token programs still enforce pause__ on chain.

Validation

The root suite passed 2,746 tests with 316 gated tests skipped across 232
test files. All ten packages build, and the reference dApp typechecks. Packed
peer ranges for veil-aleo-devnode, veil-aleo-sdk, and
veil-aleo-wallet-adapter resolve to >=0.16.0 <1.0.0. A read-only live
test read every declared mainnet flag with no unknown outcome and confirmed
execute refuses a paused Aleo-to-Ethereum route before asking for a wallet.

Source: feature PR #210.