Buying Gauge Votes

If you're a project that wants stable liquidity in your token, Vota can be a cheaper way of acquiring it than doing liquidity mining or buying SBR and locking it for veSBR.

Currently, the only way to buy gauge votes is programmatically. Here's a sample vote buy in TypeScript:

import GAUGE_IDL from "./idls/gauge.json";
import VOTE_MARKET_IDL from "./idls/vote_market.json";

import {Gauge} from "./types/gauge";
import {VoteMarket} from "./types/vote_market";

const GAUGE_PROGRAM_ID = new PublicKey("GaugesLJrnVjNNWLReiw3Q7xQhycSBRgeHGTMDUaX231");
const LOCKED_VOTER_PROGRAM_ID = new PublicKey("LocktDzaV1W2Bm9DeZeiyz4J9zs4fRqNiYqQyracRXw");
const VOTE_MARKET_PROGRAM_ID = new PublicKey("VotetDzaV1W2Bm9DeZeiyz4J9zs4fRqNiYqQyracRXw");

const gaugemeister = new PublicKey("28ZDtf6d2wsYhBvabTxUHTRT6MDxqjmqR7RMCp348tyU");

const voteMarketProgram = new Program(VOTE_MARKET_IDL as any, GAUGE_PROGRAM_ID) as Program<Gauge>;
const gaugeProgram = new Program(GAUGE_IDL as any, GAUGE_PROGRAM_ID) as Program<Gauge>;

const mint = new PublicKey( ... );
const config = new PublicKey( ... );
const gauge = new PublicKey( ... );

const [allowedMints, _] = PublicKey.findProgramAddressSync(
    [Buffer.from("allow-list"), config.publicKey.toBuffer()], 
    voteMarketProgram.programId
);

const gaugeMeisterData = await gaugeProgram.account.gaugemeister.fetch(gaugemeister);
const epochBuffer = Buffer.alloc(4);
epochBuffer.writeUInt32LE(gaugeMeisterData.currentRewardsEpoch + 1);
const [voteBuy, bump] = PublicKey.findProgramAddressSync(
    [Buffer.from("vote-buy"), epochBuffer, config.publicKey.toBuffer(), GAUGE.toBuffer()],
    program.programId
);
const tokenVault = getAssociatedTokenAddressSync(mint, voteBuy, true);

await program.methods.increaseVoteBuy(gaugeMeisterData.currentRewardsEpoch + 1, new BN(1_000_000))
     .accounts({
         buyer: program.provider.publicKey,
         buyerTokenAccount: getAssociatedTokenAddressSync(mint, program.provider.publicKey),
         tokenVault,
         mint,
         config,
         gaugemeister,
         voteBuy,
         gauge,
         allowedMints,
     }).rpc();

You are encouraged to reach out in MetaDAO's Discord if you plan to buy votes so that we can assist you!

Last updated