Fetching Token Balances And Supply From Serum Swap

I’ve been playing around with Serum Swap pools since they were launched a couple of days ago.

The idea is simple - like Uniswap on Ethereum, Swap maintains two pools of tokens and you can ‘buy’ some tokens from one pool by paying tokens to the other pool. The ratio of tokens in the two pools is fixed, which allows you to calculate how much of one token to ‘pay’ for the other token.

It’s hard finding much documentation on how to query the pools, but they’re on a blockchain with a public API so I figured I’d have a go. After a few false starts and some answers from the dev discussion forum, here’s a basic script that reports the pool balances and total supply of pool tokens for each swap.

#! /usr/bin/env node
/* eslint-disable no-empty, no-console, no-await-in-loop, no-magic-numbers, max-lines-per-function, max-statements */

"use strict";

const BN = require("bn.js");
const BufferLayout = require("buffer-layout");
const serum = require("@project-serum/serum");
const solana = require("@solana/web3.js");
const MAINNET_API = "https://api.mainnet-beta.solana.com"; const ROOT_POOL_ADDRESS = "9qvG1zUp8xF1Bi4m6UdRNby1BAAuaDrUxSpv4CmRRMjL"; const PUBLIC_KEY_LENGTH = 32; const INT_LENGTH = 8; const PADDING_LENGTH = 16;
const TokenSwapLayout = BufferLayout.struct([ BufferLayout.u8("isInitialized"), BufferLayout.u8("nonce"), BufferLayout.blob(PUBLIC_KEY_LENGTH, "tokenProgramId"), BufferLayout.blob(PUBLIC_KEY_LENGTH, "tokenAccountA"), BufferLayout.blob(PUBLIC_KEY_LENGTH, "tokenAccountB"), BufferLayout.blob(PUBLIC_KEY_LENGTH, "tokenPool"), BufferLayout.blob(PUBLIC_KEY_LENGTH, "mintA"), BufferLayout.blob(PUBLIC_KEY_LENGTH, "mintB"), BufferLayout.blob(PUBLIC_KEY_LENGTH, "feeAccount"), BufferLayout.u8("curveType"), BufferLayout.blob(INT_LENGTH, "tradeFeeNumerator"), BufferLayout.blob(INT_LENGTH, "tradeFeeDenominator"), BufferLayout.blob(INT_LENGTH, "ownerTradeFeeNumerator"), BufferLayout.blob(INT_LENGTH, "ownerTradeFeeDenominator"), BufferLayout.blob(INT_LENGTH, "ownerWithdrawFeeNumerator"), BufferLayout.blob(INT_LENGTH, "ownerWithdrawFeeDenominator"), BufferLayout.blob(PADDING_LENGTH, "padding") ]); function bnFromBuffer(buffer) { return new BN( [...buffer] .reverse() .map((value) => `00${value.toString(16)}`.slice(-2)) .join(""), 16 ); } function expandTokenSwapMetadata(initial) { const expanded = {}; expanded.isInitialized = initial.isInitialized; expanded.nonce = initial.nonce; expanded.curveType = initial.curveType; expanded.tokenProgramId = new solana.PublicKey(initial.tokenProgramId); expanded.tokenAccountA = new solana.PublicKey(initial.tokenAccountA); expanded.tokenAccountB = new solana.PublicKey(initial.tokenAccountB); expanded.tokenPool = new solana.PublicKey(initial.tokenPool); expanded.mintA = new solana.PublicKey(initial.mintA); expanded.mintB = new solana.PublicKey(initial.mintB); expanded.feeAccount = new solana.PublicKey(initial.feeAccount); expanded.tradeFeeNumerator = bnFromBuffer(initial.tradeFeeNumerator); expanded.tradeFeeDenominator = bnFromBuffer(initial.tradeFeeDenominator); expanded.ownerTradeFeeNumerator = bnFromBuffer(initial.ownerTradeFeeNumerator); expanded.ownerTradeFeeDenominator = bnFromBuffer(initial.ownerTradeFeeDenominator); expanded.ownerWithdrawFeeNumerator = bnFromBuffer(initial.ownerWithdrawFeeNumerator); expanded.ownerWithdrawFeeDenominator = bnFromBuffer(initial.ownerWithdrawFeeDenominator); return expanded; } async function fetchBalanceAndMetadata(connection, mint, source) { const tokenMetadata = serum.TOKEN_MINTS.find((tok) => tok.address.equals(mint)); const balance = await connection.getTokenAccountBalance(source); return { balance: balance.value.uiAmount, name: tokenMetadata?.name ?? "«Unknown»", mint, source }; } function decribePool(tokenPool, supply, tokenA, tokenB) { return ` ${tokenA.name}/${tokenB.name} «${tokenPool.toString().padEnd(44)}» Total Pool Token Supply: ${supply.value.uiAmount.toString().padStart(16)} «${tokenA.source.toString().padEnd(44)}» [${tokenA.name.padEnd(9)}] Balance: ${tokenA.balance.toString().padStart(20)} «${tokenB.source.toString().padEnd(44)}» [${tokenB.name.padEnd(9)}] Balance: ${tokenB.balance.toString().padStart(20)} `; } async function main() { const connection = new solana.Connection(MAINNET_API); const poolProgramId = new solana.PublicKey(ROOT_POOL_ADDRESS); const pools = await connection.getProgramAccounts(poolProgramId); for (const pool of pools) { const {data} = pool.account; if (data.length === TokenSwapLayout.span) { const decoded = TokenSwapLayout.decode(data); const tokenSwap = expandTokenSwapMetadata(decoded); const supply = await connection.getTokenSupply(tokenSwap.tokenPool); const tokenA = await fetchBalanceAndMetadata(connection, tokenSwap.mintA, tokenSwap.tokenAccountA); const tokenB = await fetchBalanceAndMetadata(connection, tokenSwap.mintB, tokenSwap.tokenAccountB); console.log(decribePool(tokenSwap.tokenPool, supply, tokenA, tokenB)); } else { console.log(`Unknown token swap layout for PublicKey: ${pool.pubkey}`); } } } main().catch((ex) => console.error(ex));

You’re on your own if you try to run this basic node script, but it should be obvious what packages you need.

It shows how to decode the layout of the returned data, and converts some of it to more appropriate types. It then queries the supply and balances.

Here’s the output as of 16:15 on 2020-10-29:

LINK/USDC
«7Dpa38bfdsGPmoWYkxCwRv48DczK35Go7KAdC9J7gzy3» Total Pool Token Supply: 10.00018873
«6myJHLHQPJrdrZaABXAouGGnyWMbGVYa8RE4ttgfKwtr» [LINK ] Balance: 8444.936758
«DQHyB8iMJbk2Ac3qCV1v22MoU7kiQCQ396xSqBrjLt7N» [USDC ] Balance: 97737.557302

SRM/UNI
«Ap9qKcpUN4a4gArf8i7XC9Qnvduujj7cqJRV4oVEhzZK» Total Pool Token Supply: 0
«3gLPoXA2SE8anTf9xL5LiofpYsFGFrPCmGJkJN9xQSVv» [SRM ] Balance: 0
«AJXmcezaT8CfY7S6twaGY5nPD7KPpEy7ep2C8MXuViWG» [UNI ] Balance: 0

SOL/BTC
«9R3t7ZXPCEe7z9U3kgKgxiD7uSV1KzKHpMB78SmnZezu» Total Pool Token Supply: 10.00000489
«D5HfT6yELuMt9Ljx9XfLkkVzheyQ6GLgGyoZjcU6YNaY» [SOL ] Balance: 0.0501
«t3vB7bLSJ9sbvpFsuS7Uh46pFXDWUhVyV1217ukPtxx » [BTC ] Balance: 0.000007

SRM/«Unknown»
«8g9JvkTs4xdVWY54uG8pVeZ8wf1UMQK13FxATxR1jTYo» Total Pool Token Supply: 0
«5NeFGFkbM2ePpMbeQQgvRA7xkMchXCAi4MqnymX4y964» [SRM ] Balance: 0
«A6AapjxXigbJH1tN4Wzadj8tTJmS83uPqV1STgiFZyzQ» [«Unknown»] Balance: 0

ALEPH/SOL
«3XSibQKankpsa4AdxAKmM2WbZCES91wDZDz3YfjrgqWP» Total Pool Token Supply: 0
«Dj6wSHiCDewWRvcuTdB6b4fUx29Qwb3WsHzPuGKCq9Rk» [ALEPH ] Balance: 0
«GnvfEjtzvLphYr5XRqGUQBTUcKpgPYs6ybRsoumcyqBy» [SOL ] Balance: 0

SOL/USDC
«Htr2t746VeshhkTxd1Kyv1ictR9hPZ9811Wg8rAXhinK» Total Pool Token Supply: 441854.49203689
«3sRavwSu5dmCjXnu66Y1Phe93MXwUC1Q8Kqi2eh9dWnL» [SOL ] Balance: 47646.542348491
«5t9sxN488df2SbCJen3YBV3koLfPJSkdhbGBEK8MSZXo» [USDC ] Balance: 73793.88432

SRM/LINK
«Gjp8DQoZSCnAbUGRpLUwe1Tgg4iKG6Hjan2EW4ZPoddo» Total Pool Token Supply: 20.06073856
«E3QcD6KX5FmFNiWn4D4pQdw97F9MBLVzMh2VdpfZDKpm» [SRM ] Balance: 202468.453948
«9be2S66Xw4HrJfjsWaZNiKztA4AXPZfuWfS93x4HcbS7» [LINK ] Balance: 17647.548355

SRM/«Unknown»
«6b44fKL4RSSr194kBwhKt6DC5cjHBi2q744o6SjBy4bf» Total Pool Token Supply: 10
«7aJCVuEQSbtAhzkcq376KDXCSqMaVZvd67PgsUqyAjdq» [SRM ] Balance: 0.01
«FL9kB2NdjxfkAk27gDSvfFGB6yScvN8TiFv219JKWbct» [«Unknown»] Balance: 0.0001

SRM/USDC
«GfnWGHHfVqvGAF9ovNfqTn9PgV1XL33YSFXjTCZbJS97» Total Pool Token Supply: 23.83954159
«i3D9kpwMznhtiN4TMzLv3rvzsNHEcuZAjkURjq5L44G » [SRM ] Balance: 236454.306723
«2fQLHivdMZ8FxhFjFVMTMjGikXkz6tqu4KskDvY2kr8k» [USDC ] Balance: 238658.199691

SRM/«Unknown»
«5iHZX7VJQEXLiLZDGb1NgpVJoPiNhbG49UcZxSRd4cZt» Total Pool Token Supply: 10
«AGezWEZyRbnc5kXVkYXaQ2Mw9p96zKfB2QTKjNuhGWK8» [SRM ] Balance: 0.01
«GG2ZFbbUMPWBGsu6gDyMMs79CmHQ3RJsd3ysasfHKpzY» [«Unknown»] Balance: 0.0001

SRM/«Unknown»
«71BUm3dJgoC2T7xc8H5Ks3H28zs6SYDZFNVacYZYG7ak» Total Pool Token Supply: 10
«FWfK4zytK4w1mohyJwwSaHuMjXjP8CJupY5g2z5TCzDs» [SRM ] Balance: 0.01
«GP21Jtqagbt1qRc8FCXkVu9zG94ekTb5vdyQjcix6Dx3» [«Unknown»] Balance: 0.0001

SRM/«Unknown»
«F6eM7Ev75s4CLye7WGkAB36BS57yuobsr7pvf4a5MXWJ» Total Pool Token Supply: 0.00250013
«2hGA15ayh9KV1fzf9MtzaK4wQpTEetuonXfoSnePPVDW» [SRM ] Balance: 0.000013
«5DgXmSjdtdrocpUzy5KuuNqRptiKgVGxnZWdxc5J6zJM» [«Unknown»] Balance: 1e-8

YFI/USDC
«CHvaneMkSXZfaaaGZMM3ruZQq3inGoRsnixou9Q9syQA» Total Pool Token Supply: 97.50310531
«B9MEr7KGwk3CTJY4GXceNhAuFBWNM7H8sB3CehyA4xuN» [YFI ] Balance: 6.402354
«6GbReMURbDeMLxgszxZHGpCbuqo2rGi5aA7kPcJo8Gi4» [USDC ] Balance: 74865.921496

SRM/«Unknown»
«8taioaE2is8CP3mrYKBYdVUEphBJwHMejSFN5qEPEAEU» Total Pool Token Supply: 10
«3LpVGfWrdo5euNoYcvWSpkwaJeA6UvQ3kED8b8DRKiok» [SRM ] Balance: 0.01
«EJWMn2kPwviM27h9xj5ec7mC7z3q5nXmK9hUzeoMhKdL» [«Unknown»] Balance: 0.0001

SRM/«Unknown»
«12WxCZn2auqmNBjqJEJ7bNXNa3bo5Euo8MWnwGmThKgp» Total Pool Token Supply: 10
«37DcVXLY3kA8DhbCXqd45i454Sdk2xNt7NvPgdbDh6NF» [SRM ] Balance: 0.01
«9iGomE1dmTtc3McUTTjjA33Zv7rg2fa7pAVHSxyi5j6C» [«Unknown»] Balance: 0.0001

YFI/USDT
«39r7YcuxpZqqnFHcCiZJXvawwpKtpgmNpMiGrVGRyXfM» Total Pool Token Supply: 10.00044485
«9h4pFa6DRY739aFQTFx6nWAeuA2mU5vD2yfFPDaXSiLG» [YFI ] Balance: 7.664951
«9w5gUTSLhoxbDurc6NwwvacVr7tJoDUTZw1BSSY8MJTt» [USDT ] Balance: 89420.303842

SOL/«Unknown»
«D2pLz3BByUxYf2DswnCmHEfzMCLztKbhZxPJBkdzroZd» Total Pool Token Supply: 10
«6FS8X2n3mbha17Dmu24S2ub9nFxeuDeG8RAzkyaguDHr» [SOL ] Balance: 15
«Dbide56YVmmRdMJSzfjA1VCoFjgmiXh6BcjDUcQipCPL» [«Unknown»] Balance: 0.00025

FRONT/USDT
«EcbxwA89NXmvV3Po5t4radmtTAA8yvpcvXWMBMZ1uXhX» Total Pool Token Supply: 10.00029778
«8vzxKpYS82RQNc96gr8Pew9tSymnVWGbNV6KoBW1FnVF» [FRONT ] Balance: 328451.296768
«G3mdL6wmx26GXzpf8rYTdowk6faemqRW6eYLWBvWZfWr» [USDT ] Balance: 97614.116654

SRM/USDT
«2gJPRt8a9PNfjU4vFGtq4aH3ud1XY44tk9HvQVyF4eio» Total Pool Token Supply: 36.44822367
«8yrvkCJJTkLP4qhJXoeLysFxkTwPubNjCsEsXdaNGP9a» [SRM ] Balance: 359238.947811
«9wbVUfPPctfZCFwewVFmnzqVWtsk4abUSKeo99xzjL2b» [USDT ] Balance: 364985.889448

SRM/«Unknown»
«qvnuvx5h5oesykDksRB6Mee6cADTQfRYSJBGJhXgu2F » Total Pool Token Supply: 10
«BPnK3bvmWvwy2yCjQLVHhXbepvjgTatf22YUQNno4hA7» [SRM ] Balance: 0.01
«BU22istVhyB9R2HqNjGoazpLbLmLaVZa2wcZoY9shuB4» [«Unknown»] Balance: 0.0001

SRM/FTT
«AVqsLVPtzNDZyDi2aV5n6tXitQM1wYZu5NDfAHJ9gDwW» Total Pool Token Supply: 27.19360162
«5jYpJTdpLcHAnVti58bFsMiVEPAoboroAs5MwWJRnn3r» [SRM ] Balance: 278067.775197
«C5C2jDTKNywQ46mjU1WoSVy3CnPfh116ENe1x1YfoYG4» [FTT ] Balance: 70715.411586

SRM/«Unknown»
«FT15wBUtCngpfA1T4s7ApTigzRJ9SN33yA2VcrKhP2bY» Total Pool Token Supply: 10
«CHYyUmtfH9UCmvfLTU6TJeahwLmvn5UFFRe4upsPAAgi» [SRM ] Balance: 0.01
«5tjbs15ND4DqSCALrsV8uW34AswnBVtrWgMYragzJi2K» [«Unknown»] Balance: 0.0001

BTC/USDT
«2yCRA4Jfm88GAL19VAjb27V8mwhBgCr4D2aaNGHYcWnL» Total Pool Token Supply: 56212.18089591
«EwU3AQe2GVFARcbAnYQ9s87UprbEJ8FhigQiRNFysymB» [BTC ] Balance: 5.560369
«7EbKnBXxoWe7hAtz8gkx6dHtUbwDqUj4GFJDP58eXuYn» [USDT ] Balance: 74059.554235

FTT/USDT
«DYuUeHBYHY6F362m62whYzTg1SjMTEaNcugJydLt71kH» Total Pool Token Supply: 10.00065326
«4yrqm3TxE83CRtLXyovZzy2rgaQYgM2mmDer8ZM3AGtK» [FTT ] Balance: 25164.292183
«6qmdkXg6wi57zncThsHoUvWndgCBbL1zW7xMHMijSKe5» [USDT ] Balance: 98854.841821

BTC/USDC
«8SXu9YmNeoME4LW2USj6NQ47ZPYDrdz7Ki9JCVLc2D3g» Total Pool Token Supply: 56071.11492827
«4HyFLkX6SX4331VR6tNbzqphZiNBYwdPeJcVeKet6E3E» [BTC ] Balance: 5.536755
«7TgGoeagnBsswQo5wytvkEFW2nnUXzTKSj2q1LDJaNWQ» [USDC ] Balance: 73926.855013

FTT/USDC
«7UB1EcGcKaZDvrxTaU95nQ3yErVtyUMfX75V4FfxaSiJ» Total Pool Token Supply: 10.00046077
«D2DSex6FmzyvjFxZePLt7wSfwUXas8dhatJnPCNLdPZy» [FTT ] Balance: 25086.078061
«GniTz6gAQ9KX7E6YJ4gY9RZsWKGZzgRPY7yMHZokvMst» [USDC ] Balance: 98962.320674

UNI/SRM
«JAWWSHKSvypkPP9oSBJ4XpqNhCFJshjyiZTVEn94Yj2B» Total Pool Token Supply: 125.16297104
«2X7HkDNGasJchQup4omsvXj2JWii9txD74oJnRCEaLRA» [UNI ] Balance: 80.49194
«GJjqAxpbohfGJ6ww6baTW6Z75rPxpC1oJv7PvQMugiMt» [SRM ] Balance: 222.028524

SRM/«Unknown»
«GMqrWo9ixSCNhW7CzyRbbuaehRhCbpoULeGg8cmLXFKo» Total Pool Token Supply: 0
«3ASSeHgbQhSaKE2cukSJzmxSgesRyKCXCvZY5dmfEhvi» [SRM ] Balance: 0
«7zJQRWP8NzxNsg3RPWx9pvdkXqPojxWhN3b7f7meMY3X» [«Unknown»] Balance: 0

SRM/«Unknown»
«eJHLj4cphT3jgZbkwr8iBzwSNctLjfYt7w74Zs7sC1e » Total Pool Token Supply: 10
«DWH1jkBfMeCERYB7eEN4jovwYT6FBFF8j8AXUg9eBZUu» [SRM ] Balance: 0.01
«FvAQcUqg3R6nEEErEH2JpYcLYrgV7shbFJgYVtbnHwwz» [«Unknown»] Balance: 0.0001

ETH/USDT
«DefGE7phGrB4MvKYAp6LPZrSN7YHRDEJFE67UE6Wt1jG» Total Pool Token Supply: 10.00145228
«FHPvn9agBx3jKwjM7v8y6X3SzvwiSEJCVRJAEwfoH6X7» [ETH ] Balance: 249.873256
«HxpqChZS1Lbj7Tz9a9i4Z2X2zuT74etq61XtW7NBotbd» [USDT ] Balance: 97439.19187

SRM/«Unknown»
«7cyF31BLFYFr46guLTrkFpbcW21fpmrdzYBRLHYycECi» Total Pool Token Supply: 30.38017541
«HfNNRDi6sqDmxTe473C6v5GMfP5rGjdy8jXVEztR8afC» [SRM ] Balance: 89.778522
«D4LpktWyH3yZLw4Qmdo6qBW4ZrVCiCxcmMZSiZwb5CEs» [«Unknown»] Balance: 0.000944

LINK/USDT
«CeGr4m2pSDmWnp3V5xiqpGJ53b1q975tjmXHLejEsAhH» Total Pool Token Supply: 10.00034163
«9yu9j53H8kkyJvKbXhqFTWb8CyRY6zSKGFadRNF8ty7s» [LINK ] Balance: 8415.380063
«CzqrJHFEuumipSQHznLrgPVGqivWr2vF9rEkznsjXbXL» [USDT ] Balance: 98134.552709

SRM/FRONT
«ALNzhDhhB1VRuCk5ieofHqdk2wtLGjMfDjaP5t3LGCpv» Total Pool Token Supply: 10.88690287
«HkqYNBKup7EXXRmxNBQCaqdLJMxN5HQRXKyurRoQwyWa» [SRM ] Balance: 112440.128193
«EnK36DUFKpt6wBNemC7c6PpZb8MXvgKBNhrxy1tRD5af» [FRONT ] Balance: 378169.404141

SRM/SUSHI
«BrMQFZkL1ffHBsiURjmBTd4JDz4ddbTSVi7qfYCkYkNi» Total Pool Token Supply: 15.67603579
«6GkXtNTL8vn6drSysiyVg7RMptHvLjePfV9n6Xcisw4R» [SRM ] Balance: 159664.147627
«CS1bwaym3TT1KKAyMPRyMA8Gr7UfTBKVtm4vjmoEtbyy» [SUSHI ] Balance: 247123.848731

SRM/SOL
«tSiGXxfdHisArSPCf3zDRaQGGixYbeUojeNAVQmP1gg » Total Pool Token Supply: 26.70599252
«91G2AmdvD7ffpgq6FYj4qoSMYg9MF7t9FpqVUYv2aSCL» [SRM ] Balance: 259273.806586
«9MkmSbuZpxh2pvGWa3FjSaA7Kv2b99wrCJY4AdphpQ7o» [SOL ] Balance: 172166.224036944

SUSHI/USDT
«Av7UTnwMMHuzmANGykar4aYfbajRDcYs4rYV6HmQeEog» Total Pool Token Supply: 10.00121691
«3Y4iHxd7k3mmNSuFM1RKssZ4z4z8JYiYSp2nysrTkrHu» [SUSHI ] Balance: 144803.894776
«HKqPaH9XMouYf2NnmSSSLtU1Kx1GmJ1AMLWHDekuXdV4» [USDT ] Balance: 94198.988734

YFI/USDT
«3aFGuSFQcYbi4iVQJgR2W4C2Wfhwr7gBq5cYdCuAx9cQ» Total Pool Token Supply: 10.00009018
«9n5oY7QFF6PCq76p4u7thk2Lb9M2huYeQQZMRyRD57oZ» [YFI ] Balance: 7.27207
«96sZNoGRU2f2RrpjUPRkuRzpTxbCKvmiP9QCGMTDvnGq» [USDT ] Balance: 94209.82055

SRM/«Unknown»
«DMEbPnHYenmZJ9bGkQwsBXctbT6416xBdHQ1ZCgQS6ZL» Total Pool Token Supply: 10
«H3tJdnK6Jub3e96eo5xxrZd2VNFTX4iMWaEsScU2Ktip» [SRM ] Balance: 0.01
«A2XdccnDzkuHUdTiz44Zaa77vXU1QNHp3g6npHbqQv78» [«Unknown»] Balance: 0.0001

ETH/SOL
«4UXz9Wnhny7pEHnLyiSEtzK2qDxBM4Hkn4cMZUpbxzJu» Total Pool Token Supply: 10
«2giPtzzESTmVzjeNJsYMjJGDWsMsh5vwChVzCutdUY66» [ETH ] Balance: 0.000041
«5R41hyVu9yCa7Ce3Pq5GKFNjQQU1iazaGHtmHifki9My» [SOL ] Balance: 0.003

USDC/USDT
«8geAdxAKuSWJzAnUAUofuo5LBdqrCbBo7jzS1yb53qHL» Total Pool Token Supply: 10.00199756
«FVN4QvcPyxYtEcnGQ46fqNdGCbis4opzjkpNE1N7UBsp» [USDC ] Balance: 29959.804439
«8LkNu3gWQ4HdTg9qyMw4WsXZbHABQR22Xgn46QHx6wJ8» [USDT ] Balance: 30106.506702

SRM/«Unknown»
«9q1DLmrGKzSyNrbpdrg2GhT7vhAocggpsoFD7ZkbP92T» Total Pool Token Supply: 10
«8dYnXVHTnBqmfViND456FCQqdQoAqGoNsBZb3HKnkUTg» [SRM ] Balance: 0.01
«G1XQzcN8rtvkiat36QDFQ55PcsApYQHUZDjxNAxFRUTu» [«Unknown»] Balance: 0.0001

SRM/YFI
«6P5wDE2KjzTPu9RE2jZKWLxviqfMkVcnMBv6tQFaf4oB» Total Pool Token Supply: 18.59523468
«5xKLdnpCFxbDVN1K6FyUY74k2DeFDRP9i6Ko11wRbSPK» [SRM ] Balance: 176599.397807
«8hzpnXj2nVVvNo9zSNqDB3oRAYXodHxftMuQfJPjcbFU» [YFI ] Balance: 15.289859

LINK/ETH
«9eFYDob2bBP7ACBR2PHwawdYjG25MwtVPaL5QjstbMSt» Total Pool Token Supply: 10
«2tgrjLv3oLyUrHf9mUVfEgcvS87obLVyrvpYreu6FgPw» [LINK ] Balance: 0.1
«WicUeUmWwkBd7QzPTdSYv7aPT2EPSq3iJEi2qNAsP3w » [ETH ] Balance: 0.1

SRM/«Unknown»
«DaX8iTrkeFokeKVEDrQSbASCkzrbct1zfxzC5RWD5kD5» Total Pool Token Supply: 10
«FY8uoCQV1nzgaeGYYdY2XsZKe5tU3xDC7ntbb5zgU14Q» [SRM ] Balance: 0.01
«4mKiJNQeSaKCKHpf3j1DsZoAuXH3vRVkEUnygkBJ1C62» [«Unknown»] Balance: 0.0001

SRM/ETH
«CibFicoaEmw6CLocb1iDA9Vo6uMDwt75P1rAvUky2dq6» Total Pool Token Supply: 30.56930162
«6qFBMpkkUmvWnTezwTL3ni2UJHi9xaVbtr97kb8LkMx9» [SRM ] Balance: 308054.529929
«s6PZygqBbiqmRxJgg4DyDBg1pb5owiDPLCXtV3c3Sgc » [ETH ] Balance: 794.994354

«Unknown»/USDT
«DRsPiTSLRvRRv3KYyttrC413idYkRN9ygiouVDkCQsWp» Total Pool Token Supply: 33.12749447
«8UBQ6e5Q11LkgtM3VtMb7eRSo5WLuEqgcrtequMCFia1» [«Unknown»] Balance: 0.003797
«2BCUn6nwej6Hc8rfdox6EqKgVqA3psEzin5SBtdgTsSz» [USDT ] Balance: 117.869921

FRONT/USDC
«HqbAFQLKGpFNVPYzUCQvfytqVBoDmsK9UJNW28eZ6bvb» Total Pool Token Supply: 10.00012258
«8sgDkgKvoAMYef1TtyWRdTJWovbvNX6mXPFqvT7s5Yoj» [FRONT ] Balance: 336592.9478
«57jkMQGDbBWsjUR7ZRAYfqiW9wMc1HGrZ2vFDiQ1e6UB» [USDC ] Balance: 95164.882076

SRM/BTC
«CWuypwJdDi8pxNZ1k4HMUVzk8rtkrBnzqfnmc6y1pci3» Total Pool Token Supply: 27.99751075
«52sRWB9WF4TguC5brbJPPnmwL5tr3HwfcMw6BL7hPScr» [SRM ] Balance: 288718.534976
«HgWgW4aiN5AVMJeQ3EivdUk1FR2DYbd6GSxnMni1ECFQ» [BTC ] Balance: 21.733127

SOL/ETH
«HNrsjrtw4xGGb5KcXPBTzZYjuB1WKAhDDGUg8kRMQZA1» Total Pool Token Supply: 0
«H2Y7uY4WWYx1L43ULvHBG5H1fQa3mcLqWxsycvXSsjZ5» [SOL ] Balance: 0
«Hhrtg7uMhXECDRSWjHMjee6mtGb97aTG9c51cHkqbhDE» [ETH ] Balance: 0

ETH/USDC
«52qB7roEPu9JFd2S9YG38iYwKKLZCRAZUHrDkkTzehiN» Total Pool Token Supply: 10.00041963
«BFhG6mNYQY4zRPXQYJGLjiD61wtbgMxLgFBBS5sXtvKE» [ETH ] Balance: 253.186418
«4MiqtYeZauGjTVwZy8F7qtFU5x4emV6kT9PA8SJzXrDL» [USDC ] Balance: 98001.017065

SUSHI/USDC
«BXHZf5RXGMEkP5EcbRbkg6LMikbSbRocjtGag97SjZo5» Total Pool Token Supply: 10.00037634
«8iQg2QkhjPQ1qSWsFZzHkBRA61VbjZ68DdW3nXRATXke» [SUSHI ] Balance: 149350.009187
«7Ne4Unp2CWyJBLjsGai5XJsDX61A5RpHAbPfrzffSkiS» [USDC ] Balance: 98520.66279

«Unknown»/«Unknown»
«7WseRxa7UVLUQei9fmmtC4xdC3vT7zNg4ezcz6AfFvHK» Total Pool Token Supply: 10
«21uus8X79UjKRYMi9mDDVyyQHzPs21dV6EFTA3MNUgrb» [«Unknown»] Balance: 0.00001
«GwTr3TJwogWdJkqimC6opP1beUQxrzC41XNQM8YTq7Gs» [«Unknown»] Balance: 0.0001

SRM/«Unknown»
«FWms6LNabrYp7XYCzCw4ZDXxtoPBwDQCaStikH9nTPdq» Total Pool Token Supply: 10
«FKZCvc7YfE36yVygypHbyF6VxARinmz2hHo8UU9C39eY» [SRM ] Balance: 0.01
«EN5RKFFJR38jau74bjCgpPSotkSAqLzsq95DGbWdRPhL» [«Unknown»] Balance: 0.0001

«Unknown»/LINK
«GWYuvizfKPt7Wu9yUQ674ghPKEBYoSbHxjcSHqQyZ7s5» Total Pool Token Supply: 10.0018619
«6yHYMXNTE4asUq9Pcs13WT5AMFRZ6cs45TkVftw4Bezt» [«Unknown»] Balance: 0.000162
«7qcve8b3Fbo9vkL8tf28ZXRZsy9GgKjpfPpHHT6UiURR» [LINK ] Balance: 4.172998

SRM/«Unknown»
«Dm6P1jkqvk7TQ1jZQC9jE2DFHVEWZ4HwQKFxe26jNjdL» Total Pool Token Supply: 10
«CteTbnBEHsaR82Px1ftewEMWVfPHjTbB2ucoTrdbST6c» [SRM ] Balance: 0.01
«7TC7xATjxn3N614Fjcsjwe7gBVgAg6yjHs14uDgUhuse» [«Unknown»] Balance: 0.0001

SOL/USDT
«H2mJpdQTBcsfGUJvVJjRpPd95RKf2stDadJnR3Mf2qq7» Total Pool Token Supply: 10.01901305
«BonNXQQvno7FeKkhzZnb9QJAJVNgve51yktA17Auww8f» [SOL ] Balance: 62713.766705187
«4b4GFnMRmjR961me733WnHCvD18DiB9vifzdNf9CXekq» [USDT ] Balance: 94600.502589

SOL/WUSDC
«HepGD6DPahG4vJnLwwYFpp8KajfJBknQyg95bJbjnoft» Total Pool Token Supply: 0.93873765
«5J5CuFt9btpK1MRZoSVYyTyx5EYQL5nM4y1SV9X7FLrD» [SOL ] Balance: 7.049442725
«7jn4cVt8vyfTuuy6q7GU4ubDPjteArPqh4bXzRQugh9r» [WUSDC ] Balance: 3.797033

I hope this saves someone some time.

Tags: Crypto
Created by on Logo15659OpinionatedGeek Ltd.Logo15659