Market maker bot

With ZigZag's V3 contracts it is again possible to run market maker bots on the exchange. For those familiar with the zkSync Lite MM bot, the Arbitrum MM-v3 is very similar. Currently, an orderbook UI is not available yet. There is a swap page available: https://swap.zigzag.exchange/.

The setup of the MM-v3 can be found in GitHub including a detailed technical explanation: https://github.com/ZigZagExchange/market-maker-v3.

Requirements

  • Ethereum private key of the account

  • Funds in that account corresponding to the pairs you want to market make

  • Cryptowatch API public key (free for limited time)

  • Node.js

    • Node.js 16 works on macOS, Windows and Linux (17 seems not)

  • Optional: VPS when you don't want to run a home PC 24/7

Guide

  1. Duplicate the config.json.EXAMPLE file from the market maker folder and rename it to config.json

An example config to run ZZ/USDC:

{
    "ethPrivKey": "private key",
    "zigzagChainId": 42161,
    "zigzagHttps": "https://api.arbitrum.zigzag.exchange",
    "pairs": {
        "0xADA42bb73b42e0472A994218fb3799dFCDA21237-0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8": {
            "nickname": "ZZ-USDC",
            "side": "b",                 
            "priceFeedPrimary": "",      
            "priceFeedSecondary": null,
            "slippageRate": 1e-6,
            "maxSize": 300,
            "minSize": 1,
            "minSpread": 0.0005,
            "invert": false,
            "active": true
        }
    }
}

Note

  • Replace "private key" with your private key (keep it secure, don't share it with anyone else!)

  • On "pairs" input the token contract addresses you want to market make

  • On "nickname" input the token tickers you want to market make

  • On "side" input "s" (sell only), "b" (buy only) or "d" (sell+buy)

  • On "priceFeedPrimary" you can use:

    • constant:0.38 to manually set a fixed (constant) price in the quote asset (on ZZ/USDC in USDC for example)

    • uniswapv3:paircontract to use pricefeeds from Uniswap

      • For ZZ/USDC: uniswapv3:0x3067c3054b4a605f9e327bad82d9ba6049fe76a0 (pricefeed from Uniswap for zz-usdc)

        • Change "invert" to true

  • On "invert" change to 'true' only for Uniswap ZZ-USDC pricefeed

Last updated