Adapter

Osmosis Fees & Issuance

Fee data is pulled from the Osmosis indexer server, while issuance is calculated using the hardcoded issuance rate

Sub-Adapters 1

Preview and test each sub adapter.

Osmosis (osmosis)

Metadata

ID
osmosis
name

"Osmosis"

category

"dex"

icon
description

"Osmosis is an advanced AMM protocol built using the Cosmos SDK"

feeDescription

"Trading fees are paid to liquidity providers"

source

"Osmosis API"

tokenTicker

"OSMO"

tokenCoingecko

"osmosis"

website

"https://osmosis.zone"

protocolLaunch

"2021-06-24"

Queries

Adapter Code

Check the entire code written for the Adapter.

Source code

Showing TS source.
1export const name = 'Osmosis Fees & Issuance';
2export const version = '0.2.4';
3export const license = 'MIT';
4export const description = 'Fee data is pulled from the Osmosis indexer server, while issuance is calculated using the hardcoded issuance rate';
5
6const GENESIS_SUPPLY = 100_000_000;
7const GENESIS_TIME = '2021-06-18 18:00:00';
8const ISSUED_IN_FIRST_YEAR = 300_000_000;
9const MS_IN_YEAR = 365 * 24 * 60 * 60 * 1000;
10
11export function setup(sdk: Context) {
12  // Cache the API result, so we only need to request it once
13  let feeDataPromise: Promise<any> | null = null;
14  const getFeeData = () => {
15    if (!feeDataPromise) {
16      feeDataPromise = sdk.http.get('https://api-osmosis.imperator.co/fees/v1/total/historical');
17    }
18    return feeDataPromise;
19  }
20
21  const getOsmosisFee = async (date: string): Promise<number> => {
22    const data = await getFeeData();
23
24    for (const day of data) {
25      if (day.time === date) {
26        return day.fees_spent;
27      }
28    }
29    return 0;
30  }
31
32  // In the first year, there will be a total of 300 million tokens released.
33  // After 365 days, this will be cut by ⅓, and thus there will be a total of
34  // 200 million tokens released in Year 2. In Year 3, there will be a total
35  // of 133 million tokens released. And so on.
36  // https://medium.com/osmosis/osmo-token-distribution-ae27ea2bb4db
37  const getIssuance = async () => {
38    const price = await sdk.coinGecko.getCurrentPrice('osmosis');
39    return ISSUED_IN_FIRST_YEAR / 365 * price;
40  }
41
42  const getIssuanceRate = async () => {
43    const msSinceGenesis = (new Date()).getTime() - (new Date(GENESIS_TIME)).getTime();
44    const yearsSinceGenesis = msSinceGenesis / MS_IN_YEAR;
45    const supply = (yearsSinceGenesis * ISSUED_IN_FIRST_YEAR) + GENESIS_SUPPLY;
46    const issuanceRate = ISSUED_IN_FIRST_YEAR / supply;
47    return issuanceRate;
48  }
49
50  sdk.register({
51    id: 'osmosis',
52    queries: {
53      oneDayTotalFees: getOsmosisFee,
54      oneDayIssuanceUSD: getIssuance,
55      issuance7DayAvgUSD: getIssuance,
56      issuanceRateCurrent: getIssuanceRate,
57    },
58    metadata: {
59      name: 'Osmosis',
60      category: 'dex',
61      icon: sdk.ipfs.getDataURILoader('QmaPe4CFwjoN3orMzYUhrXYfYdsbpJn497i2bHJJjzEgPL', 'image/svg+xml'),
62      description: 'Osmosis is an advanced AMM protocol built using the Cosmos SDK',
63      feeDescription: 'Trading fees are paid to liquidity providers',
64      source: 'Osmosis API',
65      tokenTicker: 'OSMO',
66      tokenCoingecko: 'osmosis',
67      website: 'https://osmosis.zone',
68      protocolLaunch: '2021-06-24',
69    },
70  })
71}
72

It's something off?

Report it to the discussion board on Discord, we will take care of it.

Adapter Info

Version

0.2.4

License

MIT

IPFS CID

QmdNdecdEw569Dfrdx8G47u9adEHBgYdoPyyegKBoCoibK

CID (source)

QmNz3BFdGok9fkxBBvgyUtZbNX4B44EEeutnBez65Yg8Ek

Collections

Author

mihal.eth