sb logs
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
This commit is contained in:
parent
025f594fb2
commit
b42a35cdb9
|
@ -0,0 +1,72 @@
|
|||
import { PublicKey } from '@solana/web3.js';
|
||||
import { Group } from '../src/accounts/group';
|
||||
import { isSwitchboardOracle } from '../src/accounts/oracle';
|
||||
import { MangoClient } from '../src/client';
|
||||
import { buildFetch } from '../src/utils';
|
||||
|
||||
function getNameForBank(group: Group, oracle: PublicKey): string {
|
||||
let match: any[] = Array.from(group.banksMapByName.values())
|
||||
.flat()
|
||||
.filter((b) => b.oracle.equals(oracle));
|
||||
if (match.length > 0) {
|
||||
return match[0].name;
|
||||
}
|
||||
|
||||
match = Array.from(group.perpMarketsMapByName.values()).filter((p) =>
|
||||
p.oracle.equals(oracle),
|
||||
);
|
||||
if (match.length > 0) {
|
||||
return match[0].name;
|
||||
}
|
||||
|
||||
throw new Error(`No token or perp market found for ${oracle}`);
|
||||
}
|
||||
|
||||
async function main(): Promise<void> {
|
||||
const client = await MangoClient.connectDefault(process.env.MB_CLUSTER_URL!);
|
||||
const group = await client.getGroup(
|
||||
new PublicKey('78b8f4cGCwmZ9ysPFMWLaLTkkaYnUjwMJYStWe5RTSSX'),
|
||||
);
|
||||
|
||||
const oracles1 = Array.from(group.banksMapByName.values()).map(
|
||||
(b) => b[0].oracle,
|
||||
);
|
||||
const oracles2 = Array.from(group.perpMarketsMapByName.values()).map(
|
||||
(p) => p.oracle,
|
||||
);
|
||||
const oracles = oracles1.concat(oracles2);
|
||||
|
||||
const ais = await client.program.provider.connection.getMultipleAccountsInfo(
|
||||
oracles,
|
||||
);
|
||||
|
||||
const switcboardOracles: PublicKey[] = ais
|
||||
.map((ai, i) => [isSwitchboardOracle(ai!), oracles[i]])
|
||||
.filter((r) => r[0])
|
||||
.map((r) => r[1]) as PublicKey[];
|
||||
|
||||
for (const o of switcboardOracles) {
|
||||
const r = await (
|
||||
await buildFetch()
|
||||
)('https://stats.switchboard.xyz/logs', {
|
||||
headers: {
|
||||
accept: '*/*',
|
||||
'content-type': 'application/json',
|
||||
},
|
||||
body: `{"cluster":"solana-mainnet","query":"${o.toString()}","number":100,"severity":"INFO"}`,
|
||||
method: 'POST',
|
||||
});
|
||||
|
||||
console.log(`${getNameForBank(group, o)} ${o}`);
|
||||
|
||||
(await r.json()).forEach((e: { message: string; timestamp: string }) => {
|
||||
if (e.message.toLowerCase().includes('error')) {
|
||||
console.log(`${e.timestamp}: ${e.message}`);
|
||||
}
|
||||
});
|
||||
|
||||
console.log(``);
|
||||
}
|
||||
}
|
||||
|
||||
main();
|
Loading…
Reference in New Issue