Files
2025-06-25 15:41:37 +02:00

39 lines
1.3 KiB
JavaScript

/**
* Oswap is a decentralized token swap protocol on the Obyte ledger.
*
* @see https://oswap.io/
* @see https://v2-stats.oswap.io/
*
* @see https://v1.oswap.io/
* @see https://v1-stats.oswap.io/
*/
const { fetchBaseAABalances, fetchOswapExchangeRates, fetchOswapAssets, summingBaseAABalancesToTvl } = require('../helper/chain/obyte')
// TODO support time travel for the exchange rate, currently it always returns the latest rates
async function tvl(api) {
const timestamp = api.timestamp
const [exchangeRates, assetMetadata] = await Promise.all([
fetchOswapExchangeRates(),
fetchOswapAssets()
])
const usdValue = await Promise.all([
fetchBaseAABalances(timestamp, "GS23D3GQNNMNJ5TL4Z5PINZ5626WASMA"), // Oswap v1
fetchBaseAABalances(timestamp, "2JYYNOSRFGLI3TBI4FVSE6GFBUAZTTI3"), // Oswap v2
fetchBaseAABalances(timestamp, "DYZOJKX4MJOQRAUPX7K6WCEV5STMKOHI") // Oswap v2.1
]).then(baseAABalances => {
return baseAABalances.reduce(summingBaseAABalancesToTvl(assetMetadata, exchangeRates), 0)
})
api.addUSDValue(usdValue)
}
module.exports = {
timetravel: false,
misrepresentedTokens: true,
methodology:
"The TVL is the USD value of the all non-self issued assets locked into the autonomous agents extending the Oswap protocol.",
obyte: {
tvl
},
}