Skip to main content
All Mezo assets (BTC, MEZO, and mainnet contract tokens) have been whitelisted in the PoolsVoter contract. Anyone can now create voting gauges for pools whose both assets are on the whitelist.
For a full list of whitelisted token addresses that can be added as incentives on the gauges, see the Contracts Reference.

Creating a Pool Gauge

1

Navigate to PoolsVoter contract

Go to the PoolsVoter contract on the Mezo Explorer and connect your wallet.
2

Access contract write functions

Click the Contract tab, then select Write proxy and choose createPoolGauge.
3

Configure pool factory address

For the _poolFactory parameter, use one of the following addresses:
  • Basic pools: 0x83FE469C636C4081b87bA5b3Ae9991c6Ed104248
  • CL pools: 0xBB24AF5c6fB88F1d191FA76055e30BF881BeEb79
4

Enter pool address

Enter the pool address under _pool.
5

Execute transaction

Execute the transaction. If the pool is listed in the pools overview, it should start appearing in the vote UI as well.

Pool Factory Addresses

0x83FE469C636C4081b87bA5b3Ae9991c6Ed104248

PoolsVoter Contract

_poolFactory
address
required
The address of the pool factory contract. Use the Basic pools address for standard AMM pools or the CL pools address for concentrated liquidity pools.
_pool
address
required
The address of the pool for which you want to create a voting gauge. Both tokens in the pool must be whitelisted.

Requirements

Whitelisted Assets: Both tokens in the pool must be whitelisted in the PoolsVoter contract. All Mezo assets (BTC, MEZO, and mainnet contract tokens) are pre-whitelisted.
Pool Existence: The pool must already exist and be deployed through one of the supported pool factories.

Programmatic Integration

You can also create pool gauges programmatically using ethers.js or similar libraries:
import { ethers } from 'ethers';

const POOLS_VOTER_ADDRESS = '0x48233cCC97B87Ba93bCA212cbEe48e3210211f03';
const BASIC_POOL_FACTORY = '0x83FE469C636C4081b87bA5b3Ae9991c6Ed104248';
const CL_POOL_FACTORY = '0xBB24AF5c6fB88F1d191FA76055e30BF881BeEb79';

async function createPoolGauge(
  signer: ethers.Signer,
  poolAddress: string,
  isConcentratedLiquidity: boolean = false
) {
  // Connect to PoolsVoter contract
  const poolsVoter = new ethers.Contract(
    POOLS_VOTER_ADDRESS,
    POOLS_VOTER_ABI,
    signer
  );
  
  // Select appropriate pool factory
  const poolFactory = isConcentratedLiquidity 
    ? CL_POOL_FACTORY 
    : BASIC_POOL_FACTORY;
  
  // Create pool gauge
  const tx = await poolsVoter.createPoolGauge(
    poolFactory,
    poolAddress
  );
  
  // Wait for confirmation
  const receipt = await tx.wait();
  
  console.log(`Pool gauge created: ${receipt.transactionHash}`);
  
  return receipt;
}

Example Usage

// Example: Create a gauge for MUSD/BTC pool
const MUSD_BTC_POOL = '0x52e604c44417233b6CcEDDDc0d640A405Caacefb';

await createPoolGauge(
  signer,
  MUSD_BTC_POOL,
  false // Basic pool, not CL
);

Verification

After creating a pool gauge:
  1. Check the transaction on Mezo Explorer
  2. Verify the gauge appears in the pools overview
  3. Confirm the gauge is visible in the vote UI

Troubleshooting

Transaction Fails: Ensure both tokens in the pool are whitelisted. Check that you’re using the correct pool factory address for your pool type.
Gauge Not Appearing: It may take a few minutes for the gauge to appear in the UI after creation. Try refreshing the page or clearing your cache.

Additional Resources

Build docs developers (and LLMs) love