- If you want to list your protocol in different dashboards you can return in the same adapters dimensions of different dashboards. See the following example:
const adapter = {
adapter: {
...,
fetch: async ({ endTimestamp }) => {
const { dailyVolume } = await querySubgraph(volumeQuery, endTimestamp)
const { dailyFees } = await querySubgraph(feesQuery, endTimestamp)
return {
dailyVolume, // dimension for dexs dashboard
dailyFees, // dimension for fees dashboard
}
}
...,
}
}
- For fees and revenue adapters please don't forget to include how have you calculated the values in the methodology attribute.
const adapter = {
adapter: {
...
fetch: async () => ({
dailyFees: "32498",
dailyRevenue: "0",
dailySupplySideRevenue: "32498"
}),
meta: {
methodology: {
Fees: "User pays 2% of each swap",
Revenue: "Protocol takes no revenue",
SupplySideRevenue: "LPs revenue is 2% of user fees",
}
}
}
}
- If the adapter is not able to provide data for all dimensions, let's say for example you can only provide data for
dailyVolume
but not fortotalVolume
, please keep the dimension asundefined
, don't assign an arbitrary value or set to it"0"
.
// wrong
{
dailyFees: "2144",
totalFees: "0" // <- wrong!!
}
// correct
{
dailyFees: "2144"
}
- If the adapter can't be used to backfill data and only allows to get data for today's timestamp, please set the flag
runAtCurrTime
totrue
. See more about this flag in the previous sections.
const adapter = {
adapter: {
fetch: fetchFunction,
runAtCurrTime: true
}
}
Please, consider using the BigNumber library when doing mathematical operations that might result or include a value with a magnitude outside the range of safe values to use in JavaScript.
const feesInGas = new BigNumber(graphRes["fees"])
const ethGasPrice = await getGasPrice(timestamp)
return {
dailyRevenue = feesInGas.multiplyBy(ethGasPrice)
}