Sub-Adapters 43
Preview and test each sub adapter.
1inch (1inch)
Aavegotchi (aavegotchi)
Abracadabra (abracadabra)
Alchemix (alchemix)
API3 (api3)
Aragon (aragon)
Babylon Finance (babylon)
Badger (badger)
Balancer (balancer)
Bankless DAO (bankless)
BarnBridge (barnbridge)
BitDAO (bitdao)
Compound (compound)
Decentraland (decentraland)
Gitcoin (gitcoin)
Fei (fei)
Idle DAO (idle)
Index Coop (index-coop)
KeeperDAO (keeper)
The LAO (lao)
Lido (lido)
Linkswap (linkswap)
MetaCartel Ventures (metacartel-ventures)
mStable (mstable)
Nexus Mutual (nexus)
NFTX (nftx)
Nouns DAO (nouns)
Olympus DAO (olympus)
Paraswap (paraswap)
PieDAO (piedao)
Perpetual Protocol (perpetual)
PleaserDAO (pleaserdao)
PrimeDAO (primedao)
Radicle (radicle)
Rarible (rarible)
ShapeShift (shapeshift)
SushiSwap (sushi)
Synthetix (synthetix)
Tornado Cash (tornado)
Uniswap (uniswap)
Unslashed Finance (unslashed)
Yam Finance (yam)
Yearn (yearn)
Adapter Code
Check the entire code written for the Adapter.
Source code
Showing TS source.
1export const name = 'Simple Treasuries';
2export const version = '0.1.19';
3export const license = 'MIT';
4export const description = 'Fetches treasuries that can be loaded from Zerion without special operations.';
5export const changeLog = 'Update OlympusDAO Treasury';
6
7interface Org {
8 id: string
9 icon?: string
10 addresses: string[]
11 vestingAddresses?: string[]
12 nativeTokens?: string[]
13 iconType?: string
14 snapshotId?: string
15 governanceSite?: string
16 metadata: any
17 getProposals?: (sdk: Context) => Promise<any>
18}
19
20export async function setup(sdk: Context) {
21 const orgs: Org[] = [
22 {
23 id: '1inch',
24 addresses: ['0x7951c7ef839e26F63DA87a42C9a87986507f1c07'],
25 icon: 'QmebJTDWem5sHs9ZTv7DHtpoTQFQchdN7tXJjwYXabwgTP',
26 snapshotId: '1inch.eth',
27 metadata: {
28 name: '1inch',
29 website: 'https://1inch.io',
30 governanceForum: 'https://gov.1inch.io',
31 },
32 },
33 {
34 id: 'aavegotchi',
35 addresses: [ '0xffe6280ae4e864d9af836b562359fd828ece8020' ],
36 icon: 'QmPe79ZtTxhpLXrRGBCjkhoMaTMrBmb7YDkycEFgcmBNVc',
37 iconType: 'image/png',
38 snapshotId: 'aavegotchi.eth',
39 metadata: {
40 name: 'Aavegotchi',
41 website: 'https://aavegotchi.com/',
42 governanceForum: 'https://dao.aavegotchi.com/',
43 },
44 },
45 {
46 id: 'abracadabra',
47 addresses: ['0x5a7c5505f3cfb9a0d9a8493ec41bf27ee48c406d'],
48 icon: 'QmR8XgrW7cGncTjPQJ2LBnoQHBFBRve7mN1PT6yLjrKX6s',
49 iconType: 'image/png',
50 snapshotId: 'abracadabrabymerlinthemagician.eth',
51 metadata: {
52 name: 'Abracadabra',
53 website: 'https://abracadabra.money/',
54 governanceSite: 'https://snapshot.page/#/abracadabrabymerlinthemagician.eth',
55 governanceForum: 'https://forum.abracadabra.money/',
56 governanceModel: '',
57 },
58 },
59 {
60 id: 'alchemix',
61 addresses: ['0x8392f6669292fa56123f71949b52d883ae57e225'],
62 icon: 'QmSuSUcAvGkxkJ7n5RxnDyqXUchAjXMwTmNioz2xzXVfxo',
63 iconType: 'image/jpeg',
64 snapshotId: 'alchemixstakers.eth',
65 metadata: {
66 name: 'Alchemix',
67 website: 'https://alchemix.fi/',
68 governanceSite: 'https://snapshot.page/#/alchemixstakers.eth',
69 governanceForum: 'https://forum.alchemix.fi',
70 governanceModel: '',
71 },
72 },
73 {
74 id: 'api3',
75 addresses: [
76 '0xe7aF7c5982e073aC6525a34821fe1B3e8E432099', // v1
77 '0xD9F80Bdb37E6Bad114D747E60cE6d2aaF26704Ae', // v2_primary
78 '0x556ECbb0311D350491Ba0EC7E019c354D7723CE0' // v2_secondary
79 ],
80 icon: 'QmVp2hVgfD8sQRFosydPsNAVmttno5tRhun44YiXagNeGX',
81 iconType: 'image/jpeg',
82 metadata: {
83 name: 'API3',
84 website: 'https://api3.org',
85 governanceSite: 'https://api3.eth.link/#/governance',
86 governanceModel: '',
87 },
88 },
89 {
90 id: 'aragon',
91 addresses: ['0xfb633f47a84a1450ee0413f2c32dc1772ccaea3e'],
92 icon: 'QmVCYznBiU8ibk1YuuuhgRu6pWx1PQTYptvvjiVbGGTdyn',
93 iconType: 'image/png',
94 metadata: {
95 name: 'Aragon',
96 website: 'https://aragon.org/',
97 governanceSite: 'https://client.aragon.org/#/budget/0x6c871f1fc69c23809413a96fb359cb428245aa60/',
98 },
99 },
100 {
101 id: 'babylon',
102 addresses: [
103 '0xD7AAf4676F0F52993cb33aD36784BF970f0E1259',
104 ],
105 icon: 'QmVQFJ6mC1wyeQcfQcVDZGC83a2rVPrc92ncVfeAR5VExE',
106 iconType: 'image/jpeg',
107 metadata: {
108 name: 'Babylon Finance',
109 website: 'https://www.babylon.finance/',
110 governanceSite: 'https://www.withtally.com/governance/eip155:1:0xBEC3de5b14902C660Bd2C7EfD2F259998424cc24',
111 },
112 },
113 {
114 id: 'badger',
115 addresses: [
116 '0x4441776e6a5d61fa024a5117bfc26b953ad1f425',
117 '0x5a54ca44e8f5a1a695f8621f15bfa159a140bb61',
118 '0x8de82c4c968663a0284b01069dde6ef231d0ef9b',
119 '0xb65cef03b9b89f99517643226d76e286ee999e77',
120 ],
121 icon: 'QmSraKiNmctuShFEqgGmLVamKuwZC6TFs26R27959ugExn',
122 iconType: 'image/png',
123 snapshotId: 'badgerdao.eth',
124 metadata: {
125 name: 'Badger',
126 description: 'Badger DAO is dedicated to building products and infrastructure to bring Bitcoin to DeFi.',
127 website: 'https://badger.finance',
128 governanceForum: 'https://forum.badger.finance',
129 governanceModel: '',
130 },
131 },
132 {
133 id: 'balancer',
134 addresses: [
135 '0x10A19e7eE7d7F8a52822f6817de8ea18204F2e4f', // ecosystem fund
136 '0xce88686553686DA562CE7Cea497CE749DA109f9F', // protocol fee collector
137 ],
138 icon: 'Qma9agewDVEhZjnLrY2aWy3ZHvYmUtZ5uXM3tCHZu5eDM2',
139 metadata: {
140 name: 'Balancer',
141 website: 'https://balancer.finance',
142 governanceSite: 'https://vote.balancer.finance',
143 governanceForum: 'https://forum.balancer.fi/',
144 governanceModel: '',
145 },
146 },
147 {
148 id: 'bankless',
149 addresses: [ '0xf26d1bb347a59f6c283c53156519cc1b1abaca51' ],
150 icon: 'QmfXpfiEavuqHB9wHxeup9QHttaeindCzwtnFvN756vnQW',
151 iconType: 'image/png',
152 snapshotId: 'banklessvault.eth',
153 metadata: {
154 name: 'Bankless DAO',
155 website: 'https://www.bankless.community/',
156 governanceForum: 'https://forum.bankless.community/',
157 },
158 },
159 {
160 id: 'barnbridge',
161 addresses: ['0x4cAE362D7F227e3d306f70ce4878E245563F3069'],
162 icon: 'QmWD4Eg6AdYmyAb9aSfELP7L4cU2uTFYoejHVsWjerYWZo',
163 metadata: {
164 name: 'BarnBridge',
165 website: 'https://barnbridge.com/',
166 governanceSite: 'https://app.barnbridge.com/governance',
167 governanceForum: 'https://forum.barnbridge.com/',
168 governanceModel: '',
169 },
170 },
171 {
172 id: 'bitdao',
173 addresses: ['0x78605Df79524164911C144801f41e9811B7DB73D'],
174 icon: 'QmVG1ziAPLtJkX7xogmLVxwnBiT5qEEy1P9aHWPM9J9Y17',
175 metadata: {
176 name: 'BitDAO',
177 website: 'https://bitdao.io',
178 governanceSite: 'https://snapshot.org/#/bitdao.eth',
179 governanceForum: 'https://discourse.bitdao.io/',
180 governanceModel: '',
181 },
182 },
183 {
184 id: 'compound',
185 addresses: ['0x3d9819210a31b4961b30ef54be2aed79b9c9cd3b'],
186 vestingAddresses: ['0x2775b1c75658Be0F640272CCb8c72ac986009e38'],
187 icon: 'QmZpZsg829EnBxE2MPZykZpAfsxyRsu6EuGbtfTkf2EFNj',
188 metadata: {
189 name: 'Compound',
190 website: 'https://compound.finance',
191 governanceSite: 'https://compound.finance/governance',
192 governanceForum: 'https://www.comp.xyz',
193 governanceModel: '',
194 },
195 },
196 {
197 id: 'decentraland',
198 addresses: ['0x9a6ebe7e2a7722f8200d0ffb63a1f6406a0d7dce'],
199 icon: 'QmQGRHYnYF6gGSrAvou945hcVi2nygTar6U6hwPuC2vyfi',
200 iconType: 'image/png',
201 metadata: {
202 name: 'Decentraland',
203 website: 'https://decentraland.org/',
204 governanceSite: 'https://client.aragon.org/#/0xf47917b108ca4b820ccea2587546fbb9f7564b56/0x41e83d829459f99bf4ee2e26d0d79748fb16b94f/',
205 governanceForum: 'https://forum.decentraland.org/c/governance/13',
206 },
207 },
208 {
209 id: 'gitcoin',
210 addresses: [
211 '0x57a8865cfB1eCEf7253c27da6B4BC3dAEE5Be518', // Treasury
212 '0xde21F729137C5Af1b01d73aF1dC21eFfa2B8a0d6', // Grants
213 ],
214 vestingAddresses: ['0x44aa9c5a034c1499ec27906e2d427b704b567ffe'],
215 icon: 'QmR8nFrnSu7Mby5tdPPdUrTZttaK7L3TVsZheuwZ1KPUCT',
216 snapshotId: 'gitcoindao.eth',
217 metadata: {
218 name: 'Gitcoin',
219 website: 'https://gitcoin.co',
220 governanceForum: 'https://gov.gitcoin.co',
221 },
222 },
223 {
224 id: 'fei',
225 addresses: [
226 '0x8d5ed43dca8c2f7dfb20cf7b53cc7e593635d7b9', // Core
227 '0xd51dba7a94e1adea403553a8235c302cebf41a3c', // Timelock
228 ],
229 icon: 'QmaeWtW4HDNCKRMTrtE3kabu2xQDtb5iaZduEEm68F7rqR',
230 snapshotId: 'fei.eth',
231 metadata: {
232 name: 'Fei',
233 website: 'https://fei.money',
234 governanceForum: 'https://tribe.fei.money',
235 },
236 },
237
238 {
239 id: 'idle',
240 addresses:[
241 '0x69a62C24F16d4914a48919613e8eE330641Bcb94', // Fee Treasury
242 '0xbecc659bfc6edca552fa1a67451cc6b38a0108e4', // Fee Collector
243 '0x076ff8e6402b02855ff82119b53e59bbdd67f0ee', // SUSHI Collector
244 '0x107A369bc066c77FF061c7d2420618a6ce31B925', // LongTerm Fund
245 '0xb0aA1f98523Ec15932dd5fAAC5d86e57115571C7', // Ecosystem Fund
246 '0x031f71B5369c251a6544c41CE059e6b3d61e42C6', // Reservoir
247 '0xFb3bD022D5DAcF95eE28a6B07825D4Ff9C5b3814', // Treasury League Multisig
248 '0xe8eA8bAE250028a8709A3841E0Ae1a44820d677b', // Dev League Multisig Wallet
249 ],
250 icon: 'QmQZypfk7tLvAo68dtzEwqte2AAsn5SbzxSj48wwva2FdZ',
251 iconType: 'image/png',
252 snapshotId: 'idlefinance.eth' ,
253
254 metadata: {
255 name: 'Idle DAO',
256 description:'Idle is a decentralized protocol dedicated to bringing automatic asset allocation and yield aggregation to the interest-bearing tokens economy.',
257 website: 'https://idle.finance',
258 governanceForum: 'https://gov.idle.finance',
259 },
260 },
261
262 {
263 id: 'index-coop',
264 addresses: ['0x9467cfADC9DE245010dF95Ec6a585A506A8ad5FC'],
265 icon: 'QmcatsG9WgkB6m9vSF3mbgwXFJyG8qSDNsZyi2mEGRk4oa',
266 snapshotId: 'index-coop.eth',
267 metadata: {
268 name: 'Index Coop',
269 website: 'https://indexcoop.com',
270 governanceForum: 'https://gov.indexcoop.com',
271 governanceModel: '',
272 },
273 },
274 {
275 id: 'keeper',
276 addresses: ['0x9a67f1940164d0318612b497e8e6038f902a00a4'],
277 nativeTokens: ['0xfa5047c9c78b8877af97bdcb85db743fd7313d4a'],
278 icon: 'QmQ8Fxi73dFhyYb5LncV7133q4XBwXNvR1hK9aW6aHaQWQ',
279 snapshotId: 'rook.eth',
280 metadata: {
281 name: 'KeeperDAO',
282 website: 'https://keeperdao.com',
283 governanceForum: 'https://forum.keeperdao.com',
284 },
285 },
286 {
287 id: 'lao',
288 addresses: ['0x8f56682a50becb1df2fb8136954f2062871bc7fc'],
289 icon: 'QmcBBSvXC4nUQHSRy5BcGvX7RGWyhzeUifyHNR3e4q26T2',
290 iconType: 'image/jpeg',
291 metadata: {
292 name: 'The LAO',
293 website: 'https://linkswap.app',
294 governanceSite: 'https://app.daohaus.club/dao/0x1/0x8f56682a50becb1df2fb8136954f2062871bc7fc',
295 },
296 },
297 {
298 id: 'lido',
299 addresses: ['0x3e40d73eb977dc6a537af587d48316fee66e9c8c'],
300 icon: 'QmcsGcopqrVyzTLXETtecJuhqxqxbzUvuFMqBd27yFKCMt',
301 metadata: {
302 name: 'Lido',
303 website: 'https://lido.fi',
304 governanceForum: 'https://research.lido.fi',
305 governanceSite: 'https://mainnet.lido.fi/#/lido-dao.aragonid.eth',
306 },
307 },
308 {
309 id: 'linkswap',
310 addresses: ['0xE69A81b96FBF5Cb6CAe95d2cE5323Eff2bA0EAE4'],
311 icon: 'QmdAhG1qWuW6wEcuW29ZjAvqPz8grSYHsR7HZJLSkqkGQ5',
312 snapshotId: 'yflink.eth',
313 metadata: {
314 name: 'Linkswap',
315 website: 'https://linkswap.app',
316 governanceModel: '',
317 },
318 },
319 {
320 id: 'metacartel-ventures',
321 addresses: ['0x4570b4faf71e23942b8b9f934b47ccedf7540162'],
322 icon: 'QmRfpPMV471hsVE4Zz6dTxoAyoNmc2UZPjDr6X8o34QAZz',
323 iconType: 'image/jpeg',
324 metadata: {
325 name: 'MetaCartel Ventures',
326 website: 'https://metacartel.xyz',
327 governanceSite: 'https://app.daohaus.club/dao/0x1/0x4570b4faf71e23942b8b9f934b47ccedf7540162',
328 },
329 },
330 {
331 id: 'mstable',
332 addresses: [
333 '0x3dd46846eed8D147841AE162C8425c08BD8E1b41',
334 '0xfcf455d6eb48b3289a712c0b3bc3c7ee0b0ee4c6', // Funding subDAO
335 '0x67905d3e4fec0c85dce68195f66dc8eb32f59179', // Asset Management subDAO
336 ],
337 icon: 'QmTkxsvMnSPb7A2bPUxA4uJRwJefkyzFgGar5NVxV5UJjr',
338 metadata: {
339 name: 'mStable',
340 website: 'https://mstable.org',
341 governanceSite: 'https://snapshot.page/#/mstable',
342 governanceForum: 'https://forum.mstable.org',
343 governanceModel: '',
344 },
345 },
346 {
347 id: 'nexus',
348 addresses: ['0x586b9b2F8010b284A0197f392156f1A7Eb5e86e9'],
349 icon: 'QmWA5VaHWMH96mLmoaLKaxKVf86GLUJQVBp6BfaUoLH81g',
350 metadata: {
351 name: 'Nexus Mutual',
352 website: 'https://nexusmutual.io/',
353 governanceSite: 'https://app.nexusmutual.io/governance',
354 governanceForum: 'https://forum.nexusmutual.io/',
355 governanceModel: '',
356 },
357 },
358 {
359 id: 'nftx',
360 addresses: ['0x40d73df4f99bae688ce3c23a01022224fe16c7b2'],
361 icon: 'QmU4gtLcxZ4q3Vq27AU1hPdUSxi1o87UESwjNC8DXmCnpH',
362 iconType: 'image/png',
363 metadata: {
364 name: 'NFTX',
365 website: 'https://nftx.io/',
366 governanceForum: 'https://forum.nftx.org/',
367 governanceSite: 'https://client.aragon.org/#/nftx/0xf20e3d05813ce460d42994d26eb4b7d85381d117/',
368 },
369 },
370 {
371 id: 'nouns',
372 addresses: ['0x0BC3807Ec262cB779b38D65b38158acC3bfedE10'],
373 icon: 'QmXCYbSzPAWTUiNuHaFt6AxRkwhq9ho1cDfJ2Vc1Yeb4Js',
374 metadata: {
375 name: 'Nouns DAO',
376 website: 'https://nouns.wtf',
377 governanceSite: 'https://nouns.wtf/vote',
378 governanceForum: 'https://discourse.nouns.wtf',
379 },
380 },
381 {
382 id: 'olympus',
383 addresses: [
384 '0x9A315BdF513367C0377FB36545857d12e85813Ef', // Olympus Treasury v2
385 '0x31F8Cc382c9898b273eff4e0b7626a6987C846E8', // Olympus Treasury v1
386 '0xde7b85f52577b113181921a7aa8fc0c22e309475', // Frax Allocator
387 '0xdbf0683fc4fc8ac11e64a6817d3285ec4f2fc42d', // Convex Allocator - Updated
388 '0x3df5a355457db3a4b5c744b8623a7721bf56df78', // Convex Allocator - Old
389 '0xdFC95aaf0a107DaAe2b350458DED4b7906E7f728', // Convex Holder
390 '0x0316508a1b5abf1CAe42912Dc2C8B9774b682fFC', // Onsen Allocator
391 '0x0e1177e47151Be72e5992E0975000E73Ab5fd9D4', // Aave Allocator
392 ],
393 icon: 'QmbtqUKno2FATf4RFPXAvWCamYrRT6UAKurKiNCuMCJw1J',
394 snapshotId: 'olympusdao.eth',
395 metadata: {
396 name: 'Olympus DAO',
397 website: 'https://olympusdao.finance',
398 },
399 },
400 {
401 id: 'paraswap',
402 addresses: [
403 '0x5a61d9214adefd7669428a03a4e8734a00e9f464', // Main Paraswap MultiSig
404 '0x6DF5e7b236a4F14e08C27E09202B4d1865905e9b', // Operational MultiSig
405 ],
406 vestingAddresses: [
407 '0x6a3CCa09b1C2B83834124c8646a68b9Bad2a07b9', // PSP Reserve Vesting Contract Y1
408 '0x348aa814a72970e76d5756a2cda16e7e8f245aab', // PSP Reserve Vesting Contract Y2
409 '0xb074094d2e858b25d129989644248f9f6946e081', // PSP Reserve Vesting Contract Y3
410 '0x51d2f2c65d043118eb4329fcbc738943f494609f', // PSP Reserve Vesting Contract Y4
411 ],
412 icon: 'QmaxpaLjvz27n3t4piqqR8upEAxmUbX8mixo2cPmR56mbw',
413 iconType: 'image/jpeg',
414 snapshotId: 'paraswap-dao.eth',
415 metadata: {
416 name: 'Paraswap',
417 website: 'https://paraswap.io/',
418 governanceForum: 'https://gov.paraswap.network/',
419 },
420 },
421 {
422 id: 'piedao',
423 addresses: ['0x3bcf3db69897125aa61496fc8a8b55a5e3f245d5'],
424 icon: 'QmahuQPfbqJEE9tXZKfubWPviy5wxesdfBbdUXhf8JRcN4',
425 snapshotId: 'piedao.eth',
426 metadata: {
427 name: 'PieDAO',
428 website: 'https://piedao.org',
429 governanceForum: 'https://forum.piedao.org/',
430 },
431 },
432 {
433 id: 'perpetual',
434 addresses: ['0xd374225abb84dca94e121f0b8a06b93e39ad7a99'],
435 icon: 'QmQf19AsfwAAozFtvhtQmzX4aowJeLDyEB9KV52z5ZKycZ',
436 iconType: 'image/png',
437 snapshotId: 'vote-perp.eth',
438 metadata: {
439 name: 'Perpetual Protocol',
440 website: 'https://www.perp.com/',
441 governanceForum: 'https://gov.perp.fi/',
442 },
443 },
444 {
445 id: 'pleaserdao',
446 addresses: ['0xf5c27c6fe782cbb5c85989ea3e75754748153459'],
447 icon: 'QmQDpmGaDJey2nDzziNUdoVqy76FCqg5XsP1y8ciTpwq7N',
448 iconType: 'image/jpg',
449 metadata: {
450 name: 'PleaserDAO',
451 website: 'https://pleasr.org/',
452 },
453 },
454 {
455 id: 'primedao',
456 addresses: ['0x567d220B0169836cBF351DF70A9c517096ec9De7'],
457 icon: 'QmeYo2DNFPDqYQdDJNwbcHn4zr1eQUTh6zQQapeiRj4HyK',
458 iconType: 'image/png',
459 snapshotId: 'primexyz.eth',
460 metadata: {
461 name: 'PrimeDAO',
462 website: 'https://www.prime.xyz/',
463 governanceForum: 'https://forum.prime.xyz/',
464 },
465 },
466 {
467 id: 'radicle',
468 addresses: ['0x8da8f82d2bbdd896822de723f55d6edf416130ba'],
469 icon: 'QmWQrRGqXBoyMixvVXDfAFEashjX6dj1JZq27qEcAXDoCC',
470 iconType: 'image/jpg',
471 snapshotId: 'gov.radicle.eth',
472 metadata: {
473 name: 'Radicle',
474 website: 'https://radicle.xyz/',
475 governanceForum: 'https://radicle.community/',
476 },
477 },
478 {
479 id: 'rarible',
480 addresses: [
481 '0xfdff6b56cce39482032b27140252ff4f16432785', // RARI treasury
482 '0x1cf0df2a5a20cd61d68d4489eebbf85b8d39e18a' // other treasury
483 ],
484 icon: 'QmcpJWurowq4eQqCU9mbsxmd7yYfvpgdmv14yz9nDXiRya',
485 iconType: 'image/jpeg',
486 snapshotId: 'rarible.eth',
487 metadata: {
488 name: 'Rarible',
489 website: 'https://rarible.com/',
490 governanceForum: 'https://gov.rarible.org/',
491 },
492 },
493 {
494 id: 'shapeshift',
495 addresses: ['0x90A48D5CF7343B08dA12E067680B4C6dbfE551Be'],
496 nativeTokens: ['0xc770EEfAd204B5180dF6a14Ee197D99d808ee52d'],
497 icon: 'QmWTua7CSYcgb1YZCZZFQ2CvHxJxFyTK3SC1V86czCBTjL',
498 snapshotId: 'shapeshiftdao.eth',
499 metadata: {
500 name: 'ShapeShift',
501 website: 'https://shapeshift.com',
502 governanceForum: 'https://forum.shapeshift.com',
503 },
504 },
505 {
506 id: 'sushi',
507 addresses: ['0xe94b5eec1fa96ceecbd33ef5baa8d00e4493f4f3'],
508 icon: 'QmVAko4auvE2NDr8kfnovVqTqujrJ69YrUZQFPZeREMWk5',
509 snapshotId: 'sushigov.eth',
510 metadata: {
511 name: 'SushiSwap',
512 website: 'https://sushi.com',
513 governanceForum: 'https://forum.sushi.com/',
514 governanceModel: '',
515 },
516 },
517 {
518 id: 'synthetix',
519 addresses: [
520 '0xEb3107117FEAd7de89Cd14D463D340A2E6917769', // synthetix DAO
521 '0x86626E1BbBd0ce95ED52e0C5E19f371a6640B591', // grants DAO
522 '0x99f4176ee457afedffcb1839c7ab7a030a5e4a92', // treasury council
523 ],
524 icon: 'QmYPqFXTqYcynD5hT9sZbsoPZXbvjSfL7WWQPL7EwYAyE5',
525 metadata: {
526 name: 'Synthetix',
527 website: 'https://synthetix.io',
528 governanceSite: 'https://staking.synthetix.io/gov',
529 governanceForum: 'https://research.synthetix.io',
530 governanceModel: '',
531 },
532 },
533 {
534 id: 'tornado',
535 addresses: ['0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce'],
536 vestingAddresses: ['0x179f48C78f57A3A78f0608cC9197B8972921d1D2'],
537 icon: 'QmeUzPPCdpqEYArWyMdUVZJk4GUmuR4TAkK6U4eb9vZDPa',
538 metadata: {
539 name: 'Tornado Cash',
540 website: 'https://tornado.cash',
541 governanceSite: 'https://app.tornado.cash/governance',
542 governanceForum: 'https://torn.community',
543 governanceModel: '',
544 },
545 },
546 {
547 id: 'uniswap',
548 addresses: [
549 '0x1a9c8182c09f50c8318d769245bea52c32be35bc', // treasury
550 ],
551 vestingAddresses: [
552 '0x4750c43867ef5f89869132eccf19b9b6c4286e1a',
553 '0xe3953d9d317b834592ab58ab2c7a6ad22b54075d',
554 '0x4b4e140d1f131fdad6fb59c13af796fd194e4135',
555 '0x3d30b1ab88d487b0f3061f40de76845bec3f1e94',
556 ],
557 icon: 'QmPXoiG66a9gCDX1NX51crWV7UAijoFd5wycHrfRKM6Y1n',
558 metadata: {
559 name: 'Uniswap',
560 website: 'https://uniswap.org',
561 governanceSite: 'https://app.uniswap.org/#/vote',
562 governanceForum: 'https://gov.uniswap.org',
563 governanceModel: '',
564 },
565 getProposals: async (sdk: Context) => {
566 const query = `{
567 proposals(
568 first: 5,
569 orderBy: creationTime,
570 orderDirection: desc
571 ) {
572 id
573 description
574 creationTime
575 status
576 }
577 }`
578 const { proposals } = await sdk.graph.query('arr00/uniswap-governance-v3', query);
579 return proposals.map((proposal: any) => ({
580 title: proposal.description.split(/\n| /)[0],
581 start: proposal.creationTime,
582 state: proposal.status,
583 link: `https://app.uniswap.org/#/vote/${proposal.id.replace('.', '/')}`,
584 }))
585 }
586 },
587 {
588 id: 'unslashed',
589 addresses: ['0xf5be8b4c82b8a681bacf357cfb712ab9e9296cb2'],
590 icon: 'QmUjoauefQRJZCoEbDL7wRQYGkr4FbpYfHu4HC7LLJ4Qmc',
591 iconType: 'image/jpg',
592 snapshotId: 'unslashed.eth',
593 metadata: {
594 name: 'Unslashed Finance',
595 website: 'https://unslashed.finance/',
596 governanceForum: 'https://forum.unslashed.finance/',
597 },
598 },
599 {
600 id: 'yam',
601 addresses: [
602 '0x97990B693835da58A281636296D2Bf02787DEa17', // treasury
603 '0xd67c05523d8ec1c60760fd017ef006b9f6e496d0', // sushiTreasury
604 '0x205cc7463267861002b27021c7108bc230603d0f', // stakedDPI
605 '0xd67c05523d8ec1c60760fd017ef006b9f6e496d0', // randomHoldings
606 ],
607 icon: 'QmcPjtA1Q9QhnAeruXkrsYU3HZ5b8sm3eU78VUjHDXhior',
608 iconType: 'image/png',
609 snapshotId: 'yam',
610 metadata: {
611 name: 'Yam Finance',
612 website: 'https://yam.finance',
613 governanceForum: 'https://forum.yam.finance',
614 governanceModel: '',
615 },
616 },
617 {
618 id: 'yearn',
619 addresses: [
620 '0xfeb4acf3df3cdea7399794d0869ef76a6efaff52', // ychad.eth
621 '0x93A62dA5a14C80f265DAbC077fCEE437B1a0Efde', // treasury.ychad.eth
622 '0xd42e1cb8b98382df7db43e0f09dfe57365659d16', // DSProxy
623 ],
624 icon: 'QmYGdvDA6jM5AV1yBvQKUAz74wqGeBUwVohBWEgbwqXpjk',
625 snapshotId: 'yearn',
626 metadata: {
627 name: 'Yearn',
628 website: 'https://yearn.finance',
629 governanceForum: 'https://gov.yearn.finance',
630 governanceModel: '',
631 },
632 },
633 ];
634
635 async function getSnapshotProposals(id: string) {
636 const response = await sdk.http.post('https://hub.snapshot.org/graphql', {
637 query: `query Proposals($space: String!) {
638 proposals (
639 first: 5,
640 skip: 0,
641 where: { space_in: [$space] },
642 orderBy: "created",
643 orderDirection: desc
644 ) {
645 id
646 title
647 start
648 end
649 state
650 link
651 }
652 }`,
653 variables: { space: id },
654 });
655
656 return response.data.proposals;
657 }
658
659 const portfolioCache: { [addresses: string]: Promise<any> } = {}
660 const getPortfolio = (addresses: string[]): Promise<any> => {
661 const key = addresses.join(',')
662 if (!portfolioCache[key]) {
663 portfolioCache[key] = sdk.http.get(`https://zerion-api.vercel.app/api/portfolio/${key}`)
664 .then(result => {
665 if (result.success) {
666 return result.value
667 }
668 throw new Error(`Request to 'https://zerion-api.vercel.app/api/portfolio/${key}' failed: ${result.message}`)
669 });
670 }
671 return portfolioCache[key];
672 }
673
674 const createTreasuryLoader = (addresses: string[]) => async () => {
675 const portfolio = await getPortfolio(addresses)
676 return portfolio.totalValue
677 }
678
679 const createPortfolioLoader = (addresses: string[], vestingAddresses?: string[]) => async () => {
680 const [{ portfolio }, { portfolio: vestingPortfolio }] = await Promise.all([
681 getPortfolio(addresses),
682 vestingAddresses ? getPortfolio(vestingAddresses) : { portfolio: [] },
683 ]);
684
685 return [
686 ...portfolio,
687 ...vestingPortfolio.map((portfolioItem: any) => ({ ...portfolioItem, vesting: true }))
688 ];
689 };
690
691 for (const org of orgs) {
692 let recentProposals = async () => []
693 if (org.getProposals) {
694 recentProposals = () => org.getProposals!(sdk)
695 } else if (org.snapshotId) {
696 recentProposals = () => getSnapshotProposals(org.snapshotId!)
697 }
698
699 sdk.register({
700 id: org.id,
701 queries: {
702 currentTreasuryUSD: createTreasuryLoader([...org.addresses, ...(org.vestingAddresses || [])]),
703 currentLiquidTreasuryUSD: createTreasuryLoader(org.addresses),
704 currentTreasuryPortfolio: createPortfolioLoader(org.addresses, org.vestingAddresses),
705 recentProposals,
706 },
707 metadata: {
708 ...org.metadata,
709 governanceSite: org.snapshotId
710 ? `https://snapshot.org/#/${org.snapshotId}`
711 : org.governanceSite || null,
712 icon: org.icon ? sdk.ipfs.getDataURILoader(org.icon, org.iconType || 'image/svg+xml') : 0,
713 category: 'app',
714 treasuries: [...org.addresses, ...(org.vestingAddresses || [])],
715 },
716 });
717 }
718}
719
It's something off?
Report it to the discussion board on Discord, we will take care of it.