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.