From 86c0e21e9c9c2d4c08252ab3af986d5faeeebdfd Mon Sep 17 00:00:00 2001 From: DefiLlama Date: Sun, 15 Nov 2020 12:29:43 +0000 Subject: [PATCH] rari serum and thorchain --- projects/config/rari/abis.js | 8 ++++++++ projects/rari.js | 33 +++++++++++++++++++++++++++++++++ projects/serum.js | 27 +++++++++++++++++++++++++++ projects/thorchain.js | 19 +++++++++++++++++++ 4 files changed, 87 insertions(+) create mode 100644 projects/config/rari/abis.js create mode 100644 projects/rari.js create mode 100644 projects/serum.js create mode 100644 projects/thorchain.js diff --git a/projects/config/rari/abis.js b/projects/config/rari/abis.js new file mode 100644 index 000000000..e769a3fe6 --- /dev/null +++ b/projects/config/rari/abis.js @@ -0,0 +1,8 @@ + +let abis = {}; +abis.rari = [{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"currencyCode","type":"string"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountUsd","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rftMinted","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newContract","type":"address"}],"name":"FundControllerSet","type":"event"},{"anonymous":false,"inputs":[],"name":"FundDisabled","type":"event"},{"anonymous":false,"inputs":[],"name":"FundEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newContract","type":"address"}],"name":"FundManagerUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newContract","type":"address"}],"name":"FundPriceConsumerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newContract","type":"address"}],"name":"FundProxySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAddress","type":"address"}],"name":"FundRebalancerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newContract","type":"address"}],"name":"FundTokenSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountUsd","type":"uint256"}],"name":"InterestFeeDeposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"currencyCode","type":"string"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountUsd","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rftBurned","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"withdrawalFeeRate","type":"uint256"}],"name":"Withdrawal","type":"event"},{"constant":true,"inputs":[],"name":"fundDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rariFundController","outputs":[{"internalType":"contract RariFundController","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rariFundPriceConsumer","outputs":[{"internalType":"contract RariFundPriceConsumer","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rariFundToken","outputs":[{"internalType":"contract RariFundToken","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newContract","type":"address"}],"name":"upgradeFundManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"authorizedFundManagerDataSource","type":"address"}],"name":"authorizeFundManagerDataSource","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"components":[{"internalType":"int256","name":"netDeposits","type":"int256"},{"internalType":"int256","name":"rawInterestAccruedAtLastFeeRateChange","type":"int256"},{"internalType":"int256","name":"interestFeesGeneratedAtLastFeeRateChange","type":"int256"},{"internalType":"uint256","name":"interestFeesClaimed","type":"uint256"}],"internalType":"struct RariFundManager.FundManagerData","name":"data","type":"tuple"}],"name":"setFundManagerData","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"newContract","type":"address"}],"name":"setFundController","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"erc20Contract","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"forwardLostFunds","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newContract","type":"address"}],"name":"setFundToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newContract","type":"address"}],"name":"setFundProxy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setFundRebalancer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newContract","type":"address"}],"name":"setFundPriceConsumer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"disabled","type":"bool"}],"name":"setFundDisabled","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"getRawFundBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"currencyCode","type":"string"}],"name":"getRawFundBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256[]","name":"pricesInUsd","type":"uint256[]"}],"name":"getRawFundBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"getFundBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"string","name":"currencyCode","type":"string"}],"name":"isCurrencyAccepted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getAcceptedCurrencies","outputs":[{"internalType":"string[]","name":"","type":"string[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"string[]","name":"currencyCodes","type":"string[]"},{"internalType":"bool[]","name":"accepted","type":"bool[]"}],"name":"setAcceptedCurrencies","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"string","name":"currencyCode","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"currencyCode","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"currencyCode","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"string[]","name":"currencyCodes","type":"string[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdrawFrom","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"getRawInterestAccrued","outputs":[{"internalType":"int256","name":"","type":"int256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"getInterestAccrued","outputs":[{"internalType":"int256","name":"","type":"int256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getInterestFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setInterestFeeRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"getInterestFeesGenerated","outputs":[{"internalType":"int256","name":"","type":"int256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"getInterestFeesUnclaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"beneficiary","type":"address"}],"name":"setInterestFeeMasterBeneficiary","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"depositFees","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getWithdrawalFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setWithdrawalFeeRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"beneficiary","type":"address"}],"name":"setWithdrawalFeeMasterBeneficiary","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]; + + +module.exports = { + abis +} diff --git a/projects/rari.js b/projects/rari.js new file mode 100644 index 000000000..91aa3c9fe --- /dev/null +++ b/projects/rari.js @@ -0,0 +1,33 @@ +const utils = require('./helper/utils'); +var Web3 = require('web3'); +const BigNumber = require("bignumber.js"); +const env = require('dotenv').config() +const web3 = new Web3(new Web3.providers.HttpProvider(`https://mainnet.infura.io/v3/${env.parsed.INFURA_KEY}`)); +const abis = require('./config/rari/abis.js') + +async function fetch() { + var contracts = ['0xD6e194aF3d9674b62D1b30Ec676030C23961275e', '0x59FA438cD0731EBF5F4cDCaf72D4960EFd13FCe6', '0xC6BF8C8A55f77686720E0a88e2Fd1fEEF58ddf4a'] + + let price_feed = await utils.getPricesfromString('ethereum'); + + var tvl = 0; + await Promise.all( + contracts.map(async (contract) => { + var dacontract = new web3.eth.Contract(abis.abis.rari, contract) + var balances = await dacontract.methods.getFundBalance().call(); + var rariBalance = new BigNumber(balances).div(10 ** 18).toFixed(2); + if (contract === '0xD6e194aF3d9674b62D1b30Ec676030C23961275e') { + tvl += (parseFloat(rariBalance) * price_feed.data.ethereum.usd) + } else { + tvl += parseFloat(rariBalance) + } + }) + ) + + return tvl; +} + + +module.exports = { + fetch +} diff --git a/projects/serum.js b/projects/serum.js new file mode 100644 index 000000000..e13d77aee --- /dev/null +++ b/projects/serum.js @@ -0,0 +1,27 @@ +const retry = require('async-retry') +const axios = require("axios"); + +async function fetch() { + + var seen = []; + var tvl = 0; + var response = await retry(async bail => await axios.get('https://serum-api.bonfida.com/pools')) + await Promise.all( + response.data.data.map(async pool => { + + var poolL = pool.liquidityAinUsd + pool.liquidityBinUsd; + if (!seen.includes(pool.pool_identifier)) { + seen.push(pool.pool_identifier) + tvl += pool.liquidityAinUsd; + tvl += pool.liquidityBinUsd; + } + }) + ) + + return tvl; + +} + +module.exports = { + fetch +} diff --git a/projects/thorchain.js b/projects/thorchain.js new file mode 100644 index 000000000..fddd0c7a6 --- /dev/null +++ b/projects/thorchain.js @@ -0,0 +1,19 @@ +const retry = require('async-retry') +const axios = require("axios"); +const BigNumber = require("bignumber.js"); + + +async function fetch() { + var price_feed = await retry(async bail => await axios.get('https://api.coingecko.com/api/v3/simple/price?ids=thorchain&vs_currencies=usd&include_market_cap=true&include_24hr_vol=true&include_24hr_change=true')) + + var res = await retry(async bail => await axios.get('https://chaosnet-midgard.bepswap.com/v1/network')) + var tvl = await new BigNumber((parseFloat(res.data.totalStaked) * 2) + parseFloat(res.data.bondMetrics.totalActiveBond) + parseFloat(res.data.bondMetrics.totalStandbyBond)).div(10 ** 8).toFixed(2); + tvl = tvl * price_feed.data.thorchain.usd; + return tvl; + +} + + +module.exports = { + fetch +}