github.com/diadata-org/diadata@v1.4.593/cmd/interlay/cron.js (about)

     1  const { getInterlayValues } = require("./interlayhelper");
     2  
     3  const { getBiFrostValues } = require("./bifrosthelper");
     4  
     5  const { exchangeRate, getValues: getValuecbeth } = require("./cbETHhelper");
     6  
     7  const { getValues: getValuesteth } = require("./stETHhelper");
     8  
     9  const { getValues: getValuereth } = require("./rETHhelper");
    10  
    11  const { getValues: getValuestdot } = require("./stdothelper");
    12  
    13  const { getValues: getValueAstar } = require("./nastrhelper");
    14  
    15  const {
    16    tokenkey,
    17    redis,
    18    allowedTokens,
    19    getPrice,
    20    pricekey,
    21  } = require("./utils");
    22  
    23  let cache = redis();
    24  
    25  async function cronstart() {
    26    for (const value of allowedTokens) {
    27      switch (value.source) {
    28        case "interlay":
    29          {
    30            let saved
    31            try{
    32               saved = await getInterlayValues(value.vtoken);
    33                if (saved){
    34                cache.set("interlayraw"+ value.vtoken,JSON.stringify(saved))
    35               }else{
    36                continue
    37               }
    38            }catch(e){
    39               saved = 0
    40              return
    41            }
    42            let btcprice = await getPrice("BTC");
    43   
    44   
    45            cache.set(
    46              tokenkey("interlay", value.vtoken),
    47              JSON.stringify({
    48                collateral_ratio: {
    49                  issued_token: saved.total_issued / 1e8,
    50                  locked_token: saved.total_backable / 1e8,
    51                  // decimal: saved.decimal,
    52                  ratio: saved.total_backable / saved.total_issued,
    53                },
    54                timestamp: Date.now(),
    55                fair_price:
    56                  (saved.total_backable/1e8) / (saved.total_issued/1e8) > 1
    57                    ? btcprice
    58                    : (btcprice * saved.total_backable) / saved.total_issued,
    59              })
    60            );
    61          }
    62          break;
    63        case "bifrost":
    64          {
    65            let saved;
    66            try{
    67               saved = await getBiFrostValues(value.token);
    68           }catch(e){
    69            return
    70           }
    71            let btcprice = await getPrice(value.token);
    72  
    73   
    74            let ratio = saved.total_backable/saved.total_issued;
    75  
    76            let fairprice =  ratio  *btcprice
    77  
    78            let decimal = Math.pow(10, saved.decimal);
    79   
    80             if(value.token=="DOT"){
    81              decimal = 1e10
    82            }
    83  
    84  
    85           
    86  
    87            cache.set(
    88              tokenkey("bifrost", value.vtoken),
    89              JSON.stringify({
    90                collateral_ratio: {
    91                  issued_token: saved.total_issued / decimal,
    92                  locked_token: saved.total_backable / decimal,
    93                  ratio: saved.total_backable / saved.total_issued,
    94                  // decimal: saved.decimal,
    95                },
    96                fair_price:fairprice,
    97                timestamp: Date.now()
    98              })
    99            );
   100          }
   101          break;
   102        case "stDOT":
   103          {
   104            let stDOTcollateral = await getValuestdot();
   105            cache.set(
   106              tokenkey("stDOT", value.vtoken),
   107              JSON.stringify(stDOTcollateral)
   108            );
   109          }
   110          break;
   111        case "astar":
   112          {
   113            let astarcollateral = await getValueAstar();
   114            cache.set(
   115              tokenkey("astar", value.vtoken),
   116              JSON.stringify(astarcollateral)
   117            );
   118          }
   119          break;
   120        case "stETH":
   121          {
   122            let stETHcollateral = await getValuesteth();
   123            cache.set(
   124              tokenkey("stETH", value.vtoken),
   125              JSON.stringify(stETHcollateral)
   126            );
   127          }
   128          break;
   129        // case "cbETH": {
   130        //   let cbETHcollateral = await getValuecbeth();
   131        //   cache.set(
   132        //     tokenkey("cbETH", value.vtoken),
   133        //     JSON.stringify(cbETHcollateral)
   134        //   );
   135        // }
   136        //   break;
   137        case "rETH": {
   138          let rETHcollateral = await getValuereth();
   139          cache.set(
   140            tokenkey("rETH", value.vtoken),
   141            JSON.stringify(rETHcollateral)
   142          );
   143        }
   144      }
   145  
   146      let baseAssetPrice = await getPrice(value.token);
   147      await cache.set(pricekey(value.token), baseAssetPrice);
   148    }
   149  
   150     
   151  }
   152  
   153  module.exports = {
   154    cronstart: cronstart,
   155  };