privacy hooks
Attach the veil hook to a Uniswap v4 pool and swap output can settle directly into an encrypted balance, inside the swap transaction. Permissionless to attach, fail-open by design, proven on mainnet.
live addresses
| what | address |
|---|---|
| VeilShieldHook | 0x1b4c7CfD41A9F36DFae391eFfED38532E9cA8044 |
| VeilVaultV3 (settlement) | 0x2a5d81B4dCDD080fD217DeA4cd59793e0b2266EF |
| Registrar (keys) | 0xfE564C639652f8d9CCf94664Ff95B85e0238446b |
| Uniswap v4 PoolManager | 0x8366a39cc670b4001a1121b8f6a443a643e40951 |
| Universal Router | 0x204FAca1764B154221e35c0d20aBb3c525710498 |
| PositionManager | 0x58daec3116aae6d93017baaea7749052e8a04fa7 |
Proof on mainnet: tx 0x22c6394b…f0c0 settled 712.039 VEIL as an encrypted balance inside the swap itself.
pool creators: attach the hook
Creating a hooked pool is permissionless, one field at initialization:
PoolKey {
currency0, currency1,
fee, tickSpacing,
hooks: 0x1b4c7CfD41A9F36DFae391eFfED38532E9cA8044
}
Hooks are fixed at pool creation forever, so this is a day-one decision.
frontends: offer private settlement
A vanish swap is a normal Universal Router V4_SWAP with two changes:
- hookData = abi.encode(address recipient, uint128 minOut). The recipient must hold a registered veil key, and minOut is enforced by the hook, so slippage protection survives.
- The router-level take minimum must be 0: the hook claims the entire output, so the swapper's router credit is zero by design.
Integration facts for this chain, learned the hard way:
- The Universal Router here uses the six-field ExactInputSingleParams (sqrtPriceLimitX96 included). Five-field encodings die in calldata decode.
- Exact-input only, the hook passes through on exact-output swaps.
- Remainder below the token's vault step pays the recipient publicly as dust.
The veil source bundle (/veil-source.zip) carries a calldata builder for the full flow.
token teams: activation
The vault whitelist is curated, deliberately: supply probes, transfer-behavior checks, scale and cap judgment, the protections that keep deposits safe. Listing takes about an hour once a token passes the gates: immutable or honestly-disclosed contract, free transfers, no fee-on-transfer or rebasing, real liquidity. Reach us through the site or the official account. Attach the hook before or after listing, order does not matter.
the honest boundary
Pool math is public by necessity, the trade print stays visible. What the hook kills is the position's public afterlife: the output never appears as a wallet balance, and everything after settlement is encrypted. Hidden-size trading is a different construction and lives on the roadmap, not in this hook. Every encrypted settlement carries the protocol audit-key copy: confidential to the market, readable by oversight. Stated plainly, always.