Skip to content

Commit

Permalink
add get cumulative stats script
Browse files Browse the repository at this point in the history
  • Loading branch information
zielvna committed Dec 5, 2024
1 parent f9c9f95 commit fe430ef
Show file tree
Hide file tree
Showing 5 changed files with 111 additions and 1 deletion.
13 changes: 13 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,19 @@ Below is an example of a query:
https://stats.invariant.app/svm/pool_daily_data/mainnet/aggregated/BRt1iVYDNoohkL1upEb8UfHE8yji6gEDAmuN9Y4yekyc?limit=10
```

# Scripts

## Cumulative Stats

Usage:

```bash
npm run get-cumulative-stats -- <chain> <network> <startTimestamp> <endTimestamp>
```

Possible chains: `solana`, `eclipse`, `aleph-zero`, `alephium`, `vara`
Possible networks: `mainnet`, `testnet`, `devnet`

# Most popular pool addresses

| Token X | Token Y | Fee | Address |
Expand Down
1 change: 1 addition & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
"version": "1.0.0",
"description": "",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
"test": "echo \"Error: no test specified\" && exit 1",
"get-cumulative-stats": "export NODE_OPTIONS='--max-old-space-size=8192' && npx ts-node scripts/get-cumulative-stats.ts"
},
"author": "",
"license": "ISC",
Expand Down Expand Up @@ -31,6 +32,7 @@
}
},
"devDependencies": {
"@types/node": "^22.10.1",
"typescript": "^4.5.5"
}
}
70 changes: 70 additions & 0 deletions scripts/get-cumulative-stats.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
import { getCumulativeStats } from "../utils/utils";
import SOLANA_MAINNET_DATA from "../data/mainnet.json";
import SOLANA_DEVNET_DATA from "../data/devnet.json";
import ECLIPSE_MAINNET_DATA from "../data/eclipse/mainnet.json";
import ECLIPSE_TESTNET_DATA from "../data/eclipse/testnet.json";
import ECLIPSE_DEVNET_DATA from "../data/eclipse/devnet.json";
import ALEPH_ZERO_MAINNET_DATA from "../data/a0/mainnet.json";
import ALEPH_ZERO_TESTNET_DATA from "../data/a0/testnet.json";
import ALEPHIUM_MAINNET_DATA from "../data/alph/mainnet.json";
import ALEPHIUM_TESTNET_DATA from "../data/alph/testnet.json";
import VARA_TESTNET_DATA from "../data/vara/testnet.json";
import { PoolStatsData } from "../api/utils";

const main = async () => {
const chain = process.argv[2];
const network = process.argv[3];
const startTimestamp = +process.argv[4];
const endTimestamp = +process.argv[5];
let snaps: Record<string, PoolStatsData> = {};

switch (`${chain}-${network}`) {
case "solana-mainnet":
snaps = SOLANA_MAINNET_DATA as Record<string, PoolStatsData>;
break;
case "solana-devnet":
snaps = SOLANA_DEVNET_DATA as Record<string, PoolStatsData>;
break;
case "eclipse-mainnet":
snaps = ECLIPSE_MAINNET_DATA as Record<string, PoolStatsData>;
break;
case "eclipse-testnet":
snaps = ECLIPSE_TESTNET_DATA as Record<string, PoolStatsData>;
break;
case "eclipse-devnet":
snaps = ECLIPSE_DEVNET_DATA as Record<string, PoolStatsData>;
break;
case "aleph-zero-mainnet":
snaps = ALEPH_ZERO_MAINNET_DATA as Record<string, PoolStatsData>;
break;
case "aleph-zero-testnet":
snaps = ALEPH_ZERO_TESTNET_DATA as Record<string, PoolStatsData>;
break;
case "alephium-mainnet":
snaps = ALEPHIUM_MAINNET_DATA as Record<string, PoolStatsData>;
break;
case "alephium-testnet":
snaps = ALEPHIUM_TESTNET_DATA as Record<string, PoolStatsData>;
break;
case "vara-testnet":
snaps = VARA_TESTNET_DATA as Record<string, PoolStatsData>;
break;
default:
throw new Error("Invalid chain or network");
}

const { volume, fee } = getCumulativeStats(
startTimestamp,
endTimestamp,
snaps
);
console.log(
`Chain: ${chain.toUpperCase()}, Network: ${network.toUpperCase()}, Volume: $${volume
.toFixed(2)
.replace(/\B(?=(\d{3})+(?!\d))/g, ",")}, Fee: $${fee
.toFixed(2)
.replace(/\B(?=(\d{3})+(?!\d))/g, ",")}`
);
};

main();
24 changes: 24 additions & 0 deletions utils/utils.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import { PoolStatsData } from "../api/utils";

export const getCumulativeStats = (
startTimestamp: number,
endTimestamp: number,
data: Record<string, PoolStatsData>
): { volume: number; fee: number } => {
let volume = 0;
let fee = 0;

Object.entries(data).forEach(([_, value]) => {
for (const snapshot of value.snapshots) {
if (
snapshot.timestamp >= startTimestamp &&
snapshot.timestamp <= endTimestamp
) {
volume += snapshot.volumeX.usdValue24 + snapshot.volumeY.usdValue24;
fee += snapshot.feeX.usdValue24 + snapshot.feeY.usdValue24;
}
}
});

return { volume, fee };
};

0 comments on commit fe430ef

Please sign in to comment.