Files
2024-06-17 17:39:17 +02:00

40 lines
1.3 KiB
JavaScript

const sdk = require("@defillama/sdk");
const { cachedGraphQuery } = require('../helper/cache')
const graphs = {
ethereum: sdk.graph.modifyEndpoint('2ZoJCp4S7YP7gbYN2ndsYNjPeZBV1PMti7BBoPRRscNq'),
optimism: sdk.graph.modifyEndpoint('3QfEXbPfP23o3AUzcmjTfRtUUd4bfrFj3cJ4jET57CTX'),
polygon: sdk.graph.modifyEndpoint('7camBLZckE5TLKha372tqawpDs8Lkez6yYiri7PykRak'),
}
function tvlPaged(chain) {
return async (api) => {
const size = 1000
let graphQueryPaged = `
query brokerbotQuery($lastId: String, $block: Int) {
brokerbots(block: { number: $block } first:${size} where: {id_gt: $lastId totalValueLockedUSD_gt: 100}) {
id
token { id }
base { id }
}
}
`
const data = await cachedGraphQuery('aktionariat-brokerbot/' + chain, graphs[chain], graphQueryPaged, { useBlock: true, api, fetchById: true, })
const ownerTokens = data.map(i => [[i.token.id, i.base.id], i.id])
return api.sumTokens({ ownerTokens })
}
}
module.exports = {
methodology: `Counts the tokens locked on brokerbots, pulling the brokerbot addresses from the 'aktionariat/brokerbot' subgraph`,
timetravel: false,
hallmarks: []
}
const chains = ['ethereum', 'optimism', 'polygon']
chains.forEach(chain => {
module.exports[chain] = {
tvl: tvlPaged(chain)
}
})