PoolKey System

3.1 What is a PoolKey?

A PoolKey represents your project’s “identity” and permissions within ZKGate. It tells the protocol:

  • which pool belongs to you

  • what modules you are allowed to use (Wallet, DEX, Launchpad, etc.)

  • what limits and parameters are applied to your pool

Think of PoolKey as:

“An API + permission bundle that binds your project to its ZK Pool.”


3.2 Lifecycle of a PoolKey

  1. Request

    • You apply to ZKGate with project details, supported chains, and expected usage.

  2. Issuance

    • ZKGate creates a pool for your project and issues a PoolKey containing:

      • projectId

      • poolId

      • enabled modules

      • rate limits / quotas

  3. Configuration

    • You define which assets, fees, and modules are active in your pool.

  4. Rotation / Revocation

    • If needed (compromise, upgrades), PoolKeys can be rotated or revoked while keeping pool state intact.


3.3 Usage in Code

You typically do not pass the raw PoolKey around in front-end code. Instead, you configure it on the backend or during SDK initialization.

const zkClient = new ZKGateClient({
  projectId: "my-project-001",
  poolId: "pool-DEX-001",
  env: "testnet",
});

Advanced setups:

  • Multi-pool projects can maintain multiple client instances, one per pool.

  • Backend services can use PoolKey secrets to perform privileged actions (e.g. automated market making, treasury operations).

Last updated