Session-based verification with zero-knowledge proofs and Uniswap v4 Hooks. Production-tested, 99% code coverage.
System configuration center
User verification state caching
Uniswap v4 access control layer
On-chain ZK proof verification
// Integrate ILAL into your pool
import {IHooks} from "v4-core/interfaces/IHooks.sol";
contract MyPool {
address constant COMPLIANCE_HOOK =
0x00000000DA15E8FCA4dFf7aF93aBa7030000002c;
function initialize() external {
PoolKey memory key = PoolKey({
currency0: USDC,
currency1: USDY,
fee: 3000,
tickSpacing: 60,
hooks: IHooks(COMPLIANCE_HOOK)
});
poolManager.initialize(key, SQRT_RATIO_1_1, "");
}
}// Activate user session
import { generateZKProof } from '@ilal/sdk';
// 1. Generate proof (one-time, ~4.58s)
const proof = await generateZKProof({
attestationUID,
userAddress
});
// 2. Start session (24h validity)
await sessionManager.startSession(
userAddress,
proof.data,
proof.publicInputs
);
// 3. User can now trade freely
// Session check: ~8k gas per swap| Operation | First Transaction | Subsequent | Target | Status |
|---|---|---|---|---|
| Swap | 54,000 gas | 8,000 gas | <60,000 gas | ✓ |
| Add Liquidity | 52,000 gas | 10,000 gas | <60,000 gas | ✓ |
| Remove Liquidity | 48,000 gas | 9,000 gas | <50,000 gas | ✓ |
| Session Check | 5,000 gas | 5,000 gas | <8,000 gas | ✓ |
| ZK Verification | 350,000 gas | N/A gas | <400,000 gas | ✓ |
Ready to integrate ILAL into your protocol?