Skip to main content
Glama
monostate

100ms Raydium Sniper MCP

by monostate
market-decoder.ts2.21 kB
import { Connection, PublicKey } from '@solana/web3.js'; interface MarketAccounts { bids: string; asks: string; eventQueue: string; baseVault: string; quoteVault: string; vaultSigner: string; } const MARKET_STATE_LAYOUT = { BIDS_OFFSET: 72, ASKS_OFFSET: 104, EVENT_QUEUE_OFFSET: 136, BASE_VAULT_OFFSET: 168, QUOTE_VAULT_OFFSET: 200, VAULT_SIGNER_NONCE_OFFSET: 232 }; async function getMarketAccounts( connection: Connection, marketId: string, programId: string ): Promise<MarketAccounts | null> { try { // Get market account data const marketPubkey = new PublicKey(marketId); const marketAccount = await connection.getAccountInfo(marketPubkey); if (!marketAccount) return null; const data = marketAccount.data; if (!data || data.length < 240) return null; // Read market account fields const bids = new PublicKey(data.slice(MARKET_STATE_LAYOUT.BIDS_OFFSET, MARKET_STATE_LAYOUT.BIDS_OFFSET + 32)); const asks = new PublicKey(data.slice(MARKET_STATE_LAYOUT.ASKS_OFFSET, MARKET_STATE_LAYOUT.ASKS_OFFSET + 32)); const eventQueue = new PublicKey(data.slice(MARKET_STATE_LAYOUT.EVENT_QUEUE_OFFSET, MARKET_STATE_LAYOUT.EVENT_QUEUE_OFFSET + 32)); const baseVault = new PublicKey(data.slice(MARKET_STATE_LAYOUT.BASE_VAULT_OFFSET, MARKET_STATE_LAYOUT.BASE_VAULT_OFFSET + 32)); const quoteVault = new PublicKey(data.slice(MARKET_STATE_LAYOUT.QUOTE_VAULT_OFFSET, MARKET_STATE_LAYOUT.QUOTE_VAULT_OFFSET + 32)); // Get vault signer nonce const vaultSignerNonce = data.readUInt8(MARKET_STATE_LAYOUT.VAULT_SIGNER_NONCE_OFFSET); // Derive vault signer const seeds = [marketPubkey.toBuffer(), Buffer.from([vaultSignerNonce])]; const [vaultSigner] = await PublicKey.findProgramAddress(seeds, new PublicKey(programId)); return { bids: bids.toBase58(), asks: asks.toBase58(), eventQueue: eventQueue.toBase58(), baseVault: baseVault.toBase58(), quoteVault: quoteVault.toBase58(), vaultSigner: vaultSigner.toBase58() }; } catch (error) { console.error('Failed to get market accounts:', error); return null; } } export { getMarketAccounts }; export type { MarketAccounts };

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/monostate/100ms-SPL-Token-Sniper-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server