JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 270
  • Score
    100M100P100Q79933F
  • License MIT

ILAL Protocol CLI — compliant swaps and credential management for Uniswap v4

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@ilalv3/cli) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    @ilalv3/cli

    ILAL Protocol CLI — compliant swaps and credential management for Uniswap v4.

    ILAL gates swaps and liquidity operations behind on-chain compliance credentials (CNF tokens). The CLI wraps the full flow: ZK proof generation, credential minting, session signing, and execution through ILALRouter on any EVM chain.

    Install

    npm install -g @ilalv3/cli

    Or run without installing:

    npx @ilalv3/cli <command>

    Quick start (Base Sepolia demo)

    ilal init points at the current seeded Base Sepolia demo stack. The demo issuer uses MockEAS, so reviewers can verify the full path without waiting for a real Coinbase attestation. The seeded reviewer wallet already has CNF + TOKA/TOKB; for your own wallet, deploy a mock stack with ilal deploy --mock.

    # 1. Point CLI at the live demo deployment
    ilal init
    
    # 2. Check credential + pool status for the seeded reviewer wallet
    ilal status --wallet 0xc0807D4778a9E5FE15ad68A8500e64d65BA78D58
    
    # 3. Full readiness verdict
    ilal demo check --wallet 0xc0807D4778a9E5FE15ad68A8500e64d65BA78D58
    
    # 4. Execute a compliant swap with the seeded reviewer key
    PRIVATE_KEY=0x... ilal swap --amount-in 1 --token-in 0x3d5b92a8Cea5BBe1c6f63b73D69DA6457e6436E2 --min-amount-out 0

    For a fully seeded local/testnet demo, deploy mock EAS + demo pool pieces:

    PRIVATE_KEY=0x... ilal deploy \
      --chain 84532 \
      --mock \
      --wallet-to-seed 0xYourWallet \
      --broadcast
    
    # Then mint the seeded CNF from the printed AttestationUID:
    PRIVATE_KEY=0x... ilal credential mint \
      --issuer <CNFIssuer> \
      --attestation <AttestationUID> \
      --chain 84532
    
    # Or, with the MockEAS owner key, create a fresh test attestation:
    PRIVATE_KEY=0x... ilal demo attest --wallet 0xYourWallet
    PRIVATE_KEY=0xYourWalletKey ilal credential mint --attestation <uid>
    
    # If the wallet needs more demo tokens:
    PRIVATE_KEY=0x... ilal demo faucet --wallet 0xYourWallet

    Getting a CNF credential

    Path A — Coinbase Verifications (EAS)

    1. Complete KYC at https://coinbase.com/onchain-verify
    2. Find your attestation UID on the EAS Explorer:
    3. Mint your CNF:
      PRIVATE_KEY=0x... ilal credential mint --attestation <uid>

    Path B — ZK proof (privacy-preserving)

    Operator prepares the active Merkle root. For a fresh demo deployment this root can be passed into the CNFIssuer constructor as INITIAL_MERKLE_ROOT, avoiding a 48-hour wait while still keeping future root updates timelocked.

    ilal credential zk-root \
      --wallet 0xYourWallet \
      --expires-at 1800000000

    Trader proves against the same expiry:

    PRIVATE_KEY=0x... ilal credential prove \
      --wallet 0xYourWallet \
      --expires-at 1800000000

    Generates a Groth16 proof locally (~5s), verifies it on-chain, and mints/renews your CNF without revealing identity. If the Merkle root does not match, the issuer/operator must queue the updated root with ilal oracle propose-root --root <newRoot> and activate it after the timelock.

    Command reference

    Command Description
    ilal init Create .ilal.json with contract addresses
    ilal status Dashboard: credential · issuer config · pool policy
    ilal credential zk-root Operator helper: compute the ZK Merkle root for a demo wallet/expiry
    ilal credential prove Trader flow: local ZK proof → mint or renew CNF
    ilal credential mint Mint CNF via Coinbase EAS attestation
    ilal credential renew Renew CNF via EAS attestation
    ilal swap Compliant swap via ILALRouter with optional --min-amount-out
    ilal pool add-liquidity Add liquidity to a compliant pool
    ilal pool remove-liquidity Remove liquidity from a compliant pool
    ilal pool policy set Register compliance policy for a pool
    ilal pool policy get Read pool compliance policy
    ilal oracle propose-root Operator flow: queue a new Merkle root behind the 48h timelock
    ilal oracle activate-root Operator flow: activate the pending Merkle root after timelock
    ilal oracle propose-verifier Operator flow: queue a new ZK verifier behind the 72h timelock
    ilal oracle activate-verifier Operator flow: activate the pending ZK verifier after timelock
    ilal session sign Sign a standalone SessionToken
    ilal proof mint Mint CNF from existing proof.json + public.json
    ilal deploy --mock Deploy a seeded testnet demo stack with MockEAS, tokens, router, hook, and policy
    ilal demo attest Create a MockEAS test attestation so a wallet can mint CNF
    ilal demo faucet Mint mock demo TOKA/TOKB to a wallet
    ilal deploy Deploy full ILAL contract stack

    Session note: ILAL hookData is a one-time EIP-712 authorization with a deadline and nonce. The expensive compliance step is the CNF issuance or renewal; swaps do not verify a fresh ZK proof. Use ilal session sign to export hookData, and ilal swap --hook-data <hex> to execute with an externally signed authorization.

    Configuration

    The CLI reads .ilal.json in the current directory. Run ilal init to create it, or pass flags directly:

    ilal swap \
      --router    0x88125331f169aF4Dc81ADa6E8A189110566E457a \
      --hook      0x5f1de4376C7a59b5BBC5E5cd766D40995E9e4A80 \
      --issuer    0x33541301e35d33eDf554c4DFba1e04d04FCc52F4 \
      --pool-id   0x8b6d21e53673584f192bdad8b65e2002e9e8eea730c62adad5ac1f4a084164a4 \
      --amount-in 0.001

    Base Sepolia demo deployment

    Contract Address
    CNFIssuer 0x33541301e35d33eDf554c4DFba1e04d04FCc52F4
    MockEAS 0x6A98096DF6F54DBF40498dC5525d84AEA840663A
    ZKVerifierAdapter 0x9467ED8d962221e3C1865a387481B862B1b5bE95
    ComplianceHook 0x5f1de4376C7a59b5BBC5E5cd766D40995E9e4A80
    ILALRouter 0x88125331f169aF4Dc81ADa6E8A189110566E457a
    PolicyRegistry 0x83d8111B415E97bA91eaAe717c2D9Ae6f0DD19d4
    Currency0 / TOKA 0x3d5b92a8Cea5BBe1c6f63b73D69DA6457e6436E2
    Currency1 / TOKB 0x6145F81e3691d991a4D2033FE25BeB140487B7Ee
    Pool ID 0x8b6d21e53673584f192bdad8b65e2002e9e8eea730c62adad5ac1f4a084164a4

    Live proof:

    • CNF ZK mint tx: 0xb9aa16c9604a575c8b2281cbfe9ba24fedbf205283a7b05638fbc413ed78de41
    • Add liquidity tx: 0xc3dba6d488933e1568541ece17ce43307fb173eb747dff303f3631456eccb16a
    • Swap tx: 0x360461d2a3c19acdc3ba125e55689679fcf809946d8a5092e833eb9e94b0f52f
    • Router bypass fix verified: ComplianceHook.authorizedRouter() returns 0x88125331f169aF4Dc81ADa6E8A189110566E457a

    License

    MIT