Skip to content

Commit

Permalink
TW-1537 Add TKEY stats endpoint (#173) (#175)
Browse files Browse the repository at this point in the history
* TW-1537 Add TKEY stats endpoint

* TW-1537 Fix linter errors

* TW-1537 Fetch incentives, developer rewards and investment fund dynamically
  • Loading branch information
lourenc authored Sep 17, 2024
1 parent dd06c1a commit e95969e
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 1 deletion.
5 changes: 5 additions & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import { getPlatforms } from './notifications/utils/get-platforms.util';
import { redisClient } from './redis';
import { evmRouter } from './routers/evm';
import { adRulesRouter } from './routers/slise-ad-rules';
import { getTkeyStats } from './tkey-stats';
import { getABData } from './utils/ab-test';
import { cancelAliceBobOrder } from './utils/alice-bob/cancel-alice-bob-order';
import { createAliceBobOrder } from './utils/alice-bob/create-alice-bob-order';
Expand Down Expand Up @@ -105,6 +106,10 @@ app.get('/api/top-coins', (_req, res) => {
res.status(200).send(coinGeckoTokens);
});

app.get('/api/tkey', async (_req, res) => {
res.send(await getTkeyStats());
});

app.get('/api/notifications', async (_req, res) => {
try {
const { platform, startFromTime } = _req.query;
Expand Down
52 changes: 52 additions & 0 deletions src/tkey-stats.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import axios from 'axios';
import memoizee from 'memoizee';

const BURN_ADDRESS = 'tz1burnburnburnburnburnburnburjAYjjX';
const INCENTIVES_ADDRESS = 'tz1Ntpk55Q6AVJHVrCs1uN4HyTTxBbVMFZcb';
const INVESTMENT_ADDRESS = 'tz1imUX3aTc4HX6KygaQUe8e1sQqYvGs6eCF';
const DEVELOPER_REWARDS_ADDRESS = 'tz1bxHEHAtKubVy44vBDFVEZ1iqYPYdJVS9U';
const CONTRACT = 'KT1VaEsVNiBoA56eToEK6n6BcPgh1tdx9eXi';
const DECIMALS = 18n;
const TOTAL_SUPPLY = 14_000_000_000_000_000_000_000_000n;
const TOTAL_SUPPLY_WITH_DECIMALS = TOTAL_SUPPLY / 10n ** DECIMALS;

const getTkeyBalance = memoizee(
async (holder: string) => {
const response = await axios.get(
`https://api.tzkt.io/v1/tokens/balances?account=${holder}&token.contract=${CONTRACT}`
);

return BigInt(response.data[0].balance) / 10n ** DECIMALS;
},
{
maxAge: 1000 * 60 * 60 // 1 hour
}
);

const getBurnedTokens = () => getTkeyBalance(BURN_ADDRESS);
const getInvestmentFund = () => getTkeyBalance(INVESTMENT_ADDRESS);
const getIncentivesFund = () => getTkeyBalance(INCENTIVES_ADDRESS);
const getDeveloperRewardsFund = () => getTkeyBalance(DEVELOPER_REWARDS_ADDRESS);

export const getTkeyStats = memoizee(
async () => {
const burned = await getBurnedTokens();
const incentives = await getIncentivesFund();
const investment = await getInvestmentFund();
const developerRewards = await getDeveloperRewardsFund();

const circulating = TOTAL_SUPPLY_WITH_DECIMALS - incentives - developerRewards - investment - burned;

return {
incentivesFund: incentives.toString(),
investmentFund: investment.toString(),
developerRewardsFund: developerRewards.toString(),
totalSupply: TOTAL_SUPPLY_WITH_DECIMALS.toString(),
circulating: circulating.toString(),
burned: burned.toString()
};
},
{
maxAge: 1000 * 60 * 60 // 1 hour
}
);
2 changes: 1 addition & 1 deletion tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"compilerOptions": {
/* Basic Options */
"target": "ES2019",
"target": "ES2020",
"module": "commonjs",
"lib": ["esnext"],
"allowJs": true,
Expand Down

0 comments on commit e95969e

Please sign in to comment.