add FUSD price from mexc

This commit is contained in:
jejolare 2025-08-29 22:55:37 +07:00
parent 12d19e6608
commit 418bfdfbe2
2 changed files with 51 additions and 24 deletions

View file

@ -7,7 +7,7 @@ import exceptionHandler from "./exceptionHandler";
import path from "path";
import initDB from "./database/initdb";
import sequelize from "./database/sequelize";
import { log, config, ZANO_ASSET_ID, parseComment, parseTrackingKey, decodeString } from "./utils/utils";
import { log, config, ZANO_ASSET_ID, parseComment, parseTrackingKey, decodeString, FUSD_ASSET_ID } from "./utils/utils";
import { blockInfo, lastBlock, setLastBlock, state, setState, setBlockInfo, PriceData } from "./utils/states";
import { emitSocketInfo, getBlocksDetails, getMainBlockDetails, getTxPoolDetails, getVisibilityInfo } from "./utils/methods";
import AltBlock from "./schemes/AltBlock";
@ -282,7 +282,7 @@ async function waitForDb() {
order: [[Sequelize.literal('ABS(timestamp - $targetTs)'), 'ASC']],
bind: { targetTs: target_timestamp },
raw: true,
});
});
if (!closestPrice) {
return res.json({
@ -1211,6 +1211,23 @@ async function waitForDb() {
});
}
if (req.query.asset_id === FUSD_ASSET_ID) {
if (!state.priceData?.fusd?.price) {
return res.send({ success: false, data: 'Price not found' });
}
return res.send({
success: true,
data: {
name: 'FUSD',
usd: state.priceData?.fusd?.price,
zano_price: (state.priceData?.fusd?.price / (state.priceData?.zano?.price || 1)),
usd_24h_change: state.priceData?.fusd?.usd_24h_change,
fiat_prices: calcFiatPrice(state.priceData?.fusd?.price, state?.fiat_rates),
}
});
}
const assetData = await Asset.findOne({
where: { asset_id: req.query.asset_id }
});
@ -2139,6 +2156,10 @@ cron.schedule("0 */4 * * *", async () => {
return fetchPriceFromMexc('ETH');
}
async function fetchFUSDPrice() {
return fetchPriceFromMexc('FUSD');
}
// Fetch fiat rates from CoinGecko
async function fetchFiatRates() {
try {
@ -2202,31 +2223,36 @@ cron.schedule("0 */4 * * *", async () => {
const zanoPrice = await fetchZanoPrice();
if (zanoPrice) {
setState({
...state,
priceData: {
...state.priceData,
zano: zanoPrice,
},
});
}
// Fetch Ethereum price every 10 seconds
const ethPrice = await fetchEthereumPrice();
const fusdPrice = await fetchFUSDPrice();
if (ethPrice) {
setState({
...state,
priceData: {
...state.priceData,
ethereum: ethPrice,
},
});
}
const pricesToIncert = {
zano: zanoPrice || null,
ethereum: ethPrice || null,
fusd: fusdPrice || null,
};
const validPrices = Object.entries(pricesToIncert)
.map(e => {
if (!e[1]) {
return null;
}
return {
[e[0]]: e[1]
};
})
.filter(e => e !== null);
const validPricesObject = Object.assign({}, ...validPrices);
setState({
...state,
priceData: {
...state.priceData,
...validPricesObject
},
});
console.log(state.priceData);
// Fetch fiat rates every 1h (3600 seconds)

View file

@ -1,6 +1,7 @@
import "dotenv/config";
export const ZANO_ASSET_ID = 'd6329b5b1f7c0805b5c345f4957554002a2f557845f64d7645dae0e051a6498a';
export const FUSD_ASSET_ID = '86143388bd056a8f0bab669f78f14873fac8e2dd8d57898cdb725a2d5e2e4f8f';
export const config = {
"api": process.env.API + '/json_rpc',