Adapter

MakerDAO Treasury

Sub-Adapters 1

Preview and test each sub adapter.

MakerDAO (makerdao)

Metadata

ID
makerdao
icon
category

"app"

name

"MakerDAO"

website

"https://makerdao.com"

governanceSite

"https://vote.makerdao.com"

governanceForum

"https://forum.makerdao.com"

governanceModel

""

treasuries

[ "0xbe8e3e3618f7474f8cb1d074a26affef007e98fb" ]

Queries

Adapter Code

Check the entire code written for the Adapter.

Source code

Showing TS source.
1export const name = 'MakerDAO Treasury';
2export const version = '0.1.0';
3export const license = 'MIT';
4
5const VAT_ADDRESS = '0x35d1b3f3d7966a1dfe207aa4514c12a259a0492b'
6const PAUSE_ADDRESS = '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb'
7
8const vatABI = [
9  'function dai(address holder) external view returns (uint256)',
10  'function sin(address holder) external view returns (uint256)',
11]
12
13export async function setup(sdk: Context) {
14  let pausePortfolioPromise: Promise<any> | null
15  const getPausePortfolio = (): Promise<any> => {
16    if (!pausePortfolioPromise) {
17      pausePortfolioPromise = sdk.http.get(`https://zerion-api.vercel.app/api/portfolio/${PAUSE_ADDRESS}`)
18        .then(result => {
19          if (result.success) {
20            return result.value
21          }
22          throw new Error(result.error)
23        })
24    }
25    return pausePortfolioPromise
26  }
27
28  const getDaiSurplus = async () => {
29    const vat = sdk.ethers.getContract(VAT_ADDRESS, vatABI)
30    const [dai, sin] = await Promise.all([
31      vat.dai('0xA950524441892A31ebddF91d3cEEFa04Bf454466'),
32      vat.sin('0xA950524441892A31ebddF91d3cEEFa04Bf454466'),
33    ])
34
35    const daiSurplus = dai.sub(sin).toString() / 1e45
36    return daiSurplus
37  }
38
39  const getTreasuryInUSD = async () => {
40    const [daiSurplus, pauseValue] = await Promise.all([
41      getDaiSurplus(),
42      getPausePortfolio(),
43    ])
44
45    return daiSurplus + pauseValue.totalValue
46  }
47
48  const getPortfolio = async () => {
49    const [pausePortfolio, daiSurplus] = await Promise.all([
50      getPausePortfolio(),
51      getDaiSurplus(),
52    ])
53
54    return [
55      ...pausePortfolio.portfolio,
56      {
57        address: '0x6b175474e89094c44da98b954eedeac495271d0f',
58        amount: daiSurplus,
59        name: 'Dai Stablecoin',
60        symbol: 'DAI',
61        icon: 'https://s3.amazonaws.com/token-icons/0x6b175474e89094c44da98b954eedeac495271d0f.png',
62        price: 1,
63        value: daiSurplus
64      },
65    ]
66  }
67
68  sdk.register({
69    id: 'makerdao',
70    queries: {
71      currentTreasuryUSD: getTreasuryInUSD,
72      currentLiquidTreasuryUSD: getTreasuryInUSD,
73      currentTreasuryPortfolio: getPortfolio,
74      recentProposals: async () => [], // TODO: Fetch actual proposals
75    },
76    metadata: {
77      icon: sdk.ipfs.getDataURILoader('QmNuxELX7oWXJtJKveaCFDC7niZ4APtkWgPn1NZm2FLSJV', 'image/svg+xml'),
78      category: 'app',
79      name: 'MakerDAO',
80      website: 'https://makerdao.com',
81      governanceSite: 'https://vote.makerdao.com',
82      governanceForum: 'https://forum.makerdao.com',
83      governanceModel: '',
84      treasuries: [PAUSE_ADDRESS],
85    },
86  })
87}
88

It's something off?

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

Adapter Info

Version

0.1.0

License

MIT

IPFS CID

QmRVMJM3YKogUhd1XyVVJS43g9jDEFmpRmVkxtJpUykpA9

CID (source)

QmT567Vgfn6kyL7LWTbpyaXaL8YVbSUZJjZ3UTBrQmeAbH

Collections

treasuries

Author

mihal.eth