Skip to content

Veil 0.15.0

Choose a tag to compare

@iamalwaysuncomfortable iamalwaysuncomfortable released this 29 Oct 23:34
· 11 commits to main since this release
086c5b3

Veil 0.15.0

Minor release for all ten Veil, Shield Swap, and Bridge packages, published
under npm's latest tag.

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

Changes

  • Support Shield-compatible xReserve private USDCx mints for local Aleo
    accounts in @provablehq/aleo-bridge-sdk. The SDK reserves a persistent
    counter, derives the secret scalar and BHP256 address commitment from the
    account's view key, checkpoints only the public commitment, and reads the
    scalar back from its identity store when it submits private_mint. A quoted
    plan carries its reserved commitment under plan.circle, so executing the
    quoted plan deposits against the quoted identity instead of reserving a
    second one.
  • Support wallet-prepared private mints. Quote, execute, and resume accept
    walletPreparedDeposit; completion accepts the matching
    privateMintNonceInput request while the wallet retains the scalar. The SDK
    validates the reviewed wrapper, canonical hook, attested commitment,
    recipient, and nonce-source exclusivity before submission.
  • Group every Circle-specific option under a circle key on the bridge
    client config and on quote, execute, resume, complete, and recover: the
    identity store, reserved commitment, wallet preparation, nonce input, and
    legacy secret nonce for xReserve, and the manual-mint and
    approval-replacement overrides for CCTP. The flat privateMintSecretNonce
    and cctp call options are deprecated and still accepted; the same field
    supplied in both forms with different values is rejected.
  • Ship fileXReservePrivateMintIdentityStore from
    @provablehq/aleo-bridge-sdk/node. It replaces files atomically with 0600
    permissions, backs up the identity file with its .counter companion, and
    locks reservations across processes that share a path. Stale-lock recovery
    reclaims only a confirmed dead owner's file; foreign or unrecognized owners
    fail closed.
  • Validate store-managed identities before funds move: a quoted identity
    that is absent from the store, or that names a different recipient, is
    rejected before source approval or deposit submission. Standalone actions
    require an explicit shared identity store rather than deriving into a
    temporary one.
  • Move @provablehq/veil-aleo-sdk and @provablehq/veil-aleo-devnode to the
    snarkVM 4.12.0 toolchain: @provablehq/sdk 0.13.0 and
    @provablehq/aleo-devnode 0.4.0. The default devnode consensus-heights list
    now matches snarkVM's built-in TEST_CONSENSUS_VERSION_HEIGHTS, and a
    ready node runs the latest consensus version before the first caller
    transaction. A caller who sets CONSENSUS_VERSION_HEIGHTS explicitly MUST
    pass twenty-two heights with the first at 0 and the rest strictly
    increasing.
  • Move @provablehq/veil-aleo-react-hooks and
    @provablehq/veil-aleo-wallet-adapter to the current aleo-dev-toolkit
    adapter releases: @provablehq/aleo-wallet-adapter-core 1.2.0, -react
    1.4.0, -shield 1.4.0, and -leo, -puzzle, -fox 1.1.3.

Private USDCx mints

A private xReserve mint commits the deposit to a secret scalar that is needed
again at completion. The bridge client takes an identity store as
circle.privateMintIdentities and supplies it to quote, execute, and
complete. A client built without one derives into an in-memory store, which
does not survive a restart; a durable deployment MUST pass
fileXReservePrivateMintIdentityStore or an implementation of
XReservePrivateMintIdentityStore backed by its own storage.

New derivations follow shield-core's mainnet/testnet domain separation.
Identities stored by earlier builds continue to complete with their
originally stored scalars. Transfers quoted on 0.14.0 with the implicit
0scalar nonce still complete; pass circle: { privateMintSecretNonce } to
keep producing that commitment.

Guide: private USDCx mints
· wallet-prepared mint example.

Validation

The root suite passed 2,724 tests with 314 gated tests skipped across 230
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.15.0 <1.0.0.

Source: feature PR #166,
toolchain PR #197,
fix PR #208.