Adapter

Optimism Fees

Optimism is a Layer 2 Optimistic Rollup network designed to utilize the strong security guarantees of Ethereum while reducing its cost and latency.

Sub-Adapters 1

Preview and test each sub adapter.

Optimism (optimism)

Metadata

ID
optimism
category

"l2"

name

"Optimism"

description

"Optimism is a Layer 2 Optimistic Rollup network designed to utilize the strong security guarantees of Ethereum while reducing its cost and latency."

feeDescription

"Every Optimism transaction has two costs: An L2 (execution) fee and an L1 (security) fee."

source

"The Graph Protocol"

website

"https://www.optimism.io"

blockchain

"Optimism"

icon
protocolLaunch

"2021-11-16"

tokenLaunch

"2022-06-01"

tokenCoingecko

"optimism"

Queries

Adapter Code

Check the entire code written for the Adapter.

Source code

Showing TS source.
1export const name = 'Optimism Fees';
2export const version = '0.1.5';
3export const license = 'MIT';
4
5export function setup(sdk: Context) {
6  const oneDayTotalFees = async (date: string): Promise<number> => {
7    const nextDay = new Date(date);
8    nextDay.setDate(nextDay.getDate() + 1);
9    const subgraph = 'ap0calyp/optimism-fee-withdrawn';
10    const provider = sdk.ethers.getProvider('optimism');
11
12    const feeWallet = '0x4200000000000000000000000000000000000011';
13
14    const graphQuery = `query feesWithdrawn($startBlock: Int!, $endBlock: Int!) {
15      start: withdrawn(id: 1, block: { number: $startBlock }) {
16        amount
17      }
18      end: withdrawn(id: 1, block: {number: $endBlock}) {
19        amount
20      }
21    }`;
22
23    const [startBlock, endBlock,ethPrice] = await Promise.all([
24      sdk.chainData.getBlockNumber(date, 'optimism'),
25      sdk.chainData.getBlockNumber(nextDay, 'optimism'),
26      sdk.coinGecko.getHistoricalPrice('ethereum', date)
27    ]);
28
29    const [startBalance,endBalance, { start: startWithdrawn, end: endWithdrawn }] = await Promise.all([
30      provider.getBalance(feeWallet, startBlock),
31      provider.getBalance(feeWallet, endBlock),
32      sdk.graph.query(subgraph,graphQuery,{ variables: { startBlock, endBlock } })
33    ])
34
35    if (endWithdrawn === null) {
36      throw new Error(`No Optimism data found on ${date}`);
37    }
38    
39    const ethBalanceChange = endBalance - startBalance;
40    const withdrawn = endWithdrawn.amount - (startWithdrawn?.amount || 0)
41    const fees = (withdrawn + ethBalanceChange) / 1e18
42    return fees * ethPrice
43  }
44
45  sdk.register({
46    id: `optimism`,
47    queries: {
48      oneDayTotalFees
49    },
50    metadata: {
51      category: 'l2',
52      name: 'Optimism',
53      description: 'Optimism is a Layer 2 Optimistic Rollup network designed to utilize the strong security guarantees of Ethereum while reducing its cost and latency.',
54      feeDescription: 'Every Optimism transaction has two costs: An L2 (execution) fee and an L1 (security) fee.',
55      source: 'The Graph Protocol',
56      website: 'https://www.optimism.io',
57      blockchain: 'Optimism',
58      icon: sdk.ipfs.getDataURILoader('QmegSBGwcyoYU9yrgGS2U13DAexE9VYdetTn9rqa88yjZK', 'image/svg+xml'),
59      protocolLaunch: '2021-11-16',
60      tokenLaunch: '2022-06-01',
61      tokenCoingecko: 'optimism',
62    }
63  })
64}

It's something off?

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

Adapter Info

Version

0.1.5

License

MIT

IPFS CID

QmRDRc6KhG97xLgLhSXkxsLpTrbrH9x3SGVfHN6J8VFMBd

CID (source)

QmQvWzGjp4cUBbbh1osyhwfoqBc8ypqQFMzmH7FTNSatLE

Collections

Author

mihal.eth