dao-treasury 0.0.35__cp311-cp311-win_amd64.whl → 0.1.1__cp311-cp311-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of dao-treasury might be problematic. Click here for more details.

Files changed (49) hide show
  1. dao_treasury/.grafana/provisioning/dashboards/breakdowns/Expenses.json +567 -0
  2. dao_treasury/.grafana/provisioning/dashboards/breakdowns/Revenue.json +569 -0
  3. dao_treasury/.grafana/provisioning/dashboards/dashboards.yaml +7 -57
  4. dao_treasury/.grafana/provisioning/dashboards/streams/LlamaPay.json +15 -27
  5. dao_treasury/.grafana/provisioning/dashboards/summary/Monthly.json +286 -25
  6. dao_treasury/.grafana/provisioning/dashboards/transactions/Treasury Transactions.json +54 -71
  7. dao_treasury/.grafana/provisioning/dashboards/transactions/Unsorted Transactions.json +367 -0
  8. dao_treasury/.grafana/provisioning/dashboards/treasury/Cashflow (Including Unsorted).json +172 -209
  9. dao_treasury/.grafana/provisioning/dashboards/treasury/Cashflow.json +122 -142
  10. dao_treasury/.grafana/provisioning/dashboards/treasury/Current Treasury Assets.json +941 -0
  11. dao_treasury/.grafana/provisioning/dashboards/treasury/Historical Treasury Balances.json +3931 -0
  12. dao_treasury/.grafana/provisioning/dashboards/treasury/Operating Cashflow.json +89 -108
  13. dao_treasury/.grafana/provisioning/datasources/datasources.yaml +9 -4
  14. dao_treasury/ENVIRONMENT_VARIABLES.py +12 -0
  15. dao_treasury/__init__.py +14 -4
  16. dao_treasury/_docker.cp311-win_amd64.pyd +0 -0
  17. dao_treasury/_docker.py +44 -23
  18. dao_treasury/_nicknames.cp311-win_amd64.pyd +0 -0
  19. dao_treasury/_nicknames.py +18 -2
  20. dao_treasury/_wallet.cp311-win_amd64.pyd +0 -0
  21. dao_treasury/constants.cp311-win_amd64.pyd +0 -0
  22. dao_treasury/constants.py +24 -0
  23. dao_treasury/db.py +409 -119
  24. dao_treasury/docker-compose.yaml +19 -3
  25. dao_treasury/main.py +44 -3
  26. dao_treasury/sorting/__init__.cp311-win_amd64.pyd +0 -0
  27. dao_treasury/sorting/__init__.py +38 -21
  28. dao_treasury/sorting/_matchers.cp311-win_amd64.pyd +0 -0
  29. dao_treasury/sorting/_rules.cp311-win_amd64.pyd +0 -0
  30. dao_treasury/sorting/factory.cp311-win_amd64.pyd +0 -0
  31. dao_treasury/sorting/rule.cp311-win_amd64.pyd +0 -0
  32. dao_treasury/sorting/rule.py +8 -10
  33. dao_treasury/sorting/rules/__init__.cp311-win_amd64.pyd +0 -0
  34. dao_treasury/sorting/rules/ignore/__init__.cp311-win_amd64.pyd +0 -0
  35. dao_treasury/sorting/rules/ignore/llamapay.cp311-win_amd64.pyd +0 -0
  36. dao_treasury/streams/llamapay.py +14 -2
  37. dao_treasury/treasury.py +37 -16
  38. dao_treasury/types.cp311-win_amd64.pyd +0 -0
  39. {dao_treasury-0.0.35.dist-info → dao_treasury-0.1.1.dist-info}/METADATA +19 -3
  40. dao_treasury-0.1.1.dist-info/RECORD +53 -0
  41. dao_treasury-0.1.1.dist-info/top_level.txt +2 -0
  42. dao_treasury__mypyc.cp311-win_amd64.pyd +0 -0
  43. bf2b4fe1f86ad2ea158b__mypyc.cp311-win_amd64.pyd +0 -0
  44. dao_treasury/.grafana/provisioning/dashboards/treasury/Treasury.json +0 -2018
  45. dao_treasury/streams/__init__.cp311-win_amd64.pyd +0 -0
  46. dao_treasury/streams/llamapay.cp311-win_amd64.pyd +0 -0
  47. dao_treasury-0.0.35.dist-info/RECORD +0 -51
  48. dao_treasury-0.0.35.dist-info/top_level.txt +0 -2
  49. {dao_treasury-0.0.35.dist-info → dao_treasury-0.1.1.dist-info}/WHEEL +0 -0
@@ -15,11 +15,11 @@
15
15
  "editable": true,
16
16
  "fiscalYearStartMonth": 0,
17
17
  "graphTooltip": 0,
18
+ "id": 9,
18
19
  "links": [],
19
- "liveNow": false,
20
20
  "panels": [
21
21
  {
22
- "datasource": "SQLite",
22
+ "datasource": "PostgreSQL",
23
23
  "fieldConfig": {
24
24
  "defaults": {
25
25
  "custom": {
@@ -36,7 +36,7 @@
36
36
  "steps": [
37
37
  {
38
38
  "color": "green",
39
- "value": null
39
+ "value": 0
40
40
  },
41
41
  {
42
42
  "color": "red",
@@ -190,9 +190,7 @@
190
190
  "footer": {
191
191
  "countRows": false,
192
192
  "fields": "",
193
- "reducer": [
194
- "sum"
195
- ],
193
+ "reducer": ["sum"],
196
194
  "show": false
197
195
  },
198
196
  "showHeader": true,
@@ -203,172 +201,157 @@
203
201
  }
204
202
  ]
205
203
  },
206
- "pluginVersion": "10.2.0",
204
+ "pluginVersion": "12.1.1",
207
205
  "targets": [
208
206
  {
209
- "datasource": "SQLite",
210
- "queryText": "select timestamp as \"Timestamp\", block as \"Block\", hash as \"Hash\", token as \"Token\", \"from\" as \"From\", from_nickname as \"From Nickname\", \"to\" as \"To\", to_nickname as \"To Nickname\", amount as \"Amount\", price as \"Price\", value_usd as \"Value USD\", txgroup as \"TxGroup\", a.parent_txgroup as \"Parent TxGroup\", log_index as \"Log Index\" from ( SELECT datetime(a.timestamp, 'unixepoch') AS timestamp, a.block, a.hash, c.symbol AS token, d.address AS \"from\", d.nickname as from_nickname, e.address AS \"to\", e.nickname as to_nickname, a.amount, a.price, a.value_usd, f.name AS txgroup, g.name AS parent_txgroup, f.txgroup_id, a.log_index FROM treasury_txs a LEFT JOIN chains b ON a.chain = b.chain_dbid LEFT JOIN tokens c ON a.token_id = c.token_id LEFT JOIN addresses d ON a.\"from\" = d.address_id LEFT JOIN addresses e ON a.\"to\" = e.address_id LEFT JOIN txgroups f ON a.txgroup_id = f.txgroup_id LEFT JOIN txgroups g ON f.parent_txgroup = g.txgroup_id WHERE a.timestamp >= $__from / 1000 and a.timestamp < $__to / 1000 and ('$Chain' like '{%' or b.chain_name = '$Chain') and ('$Token' like '{%' or c.symbol = '$Token') and ('$From' like '{%' or d.address = '$From') and ('$To' like '{%' or e.address = '$To') and ('$FromNickname' like '{%' or d.nickname = '$FromNickname') and ('$ToNickname' like '{%' or e.nickname = '$ToNickname') ) a left join txgroup_hierarchy b on a.txgroup_id = b.txgroup_id WHERE ('$Top' LIKE '{%' OR b.top_category = '$Top') ORDER BY timestamp",
211
- "queryType": "table",
212
- "rawQueryText": "select timestamp as \"Timestamp\", block as \"Block\", hash as \"Hash\", token as \"Token\", \"from\" as \"From\", from_nickname as \"From Nickname\", \"to\" as \"To\", to_nickname as \"To Nickname\", amount as \"Amount\", price as \"Price\", value_usd as \"Value USD\", txgroup as \"TxGroup\", a.parent_txgroup as \"Parent TxGroup\", log_index as \"Log Index\" from ( SELECT datetime(a.timestamp, 'unixepoch') AS timestamp, a.block, a.hash, c.symbol AS token, d.address AS \"from\", d.nickname as from_nickname, e.address AS \"to\", e.nickname as to_nickname, a.amount, a.price, a.value_usd, f.name AS txgroup, g.name AS parent_txgroup, f.txgroup_id, a.log_index FROM treasury_txs a LEFT JOIN chains b ON a.chain = b.chain_dbid LEFT JOIN tokens c ON a.token_id = c.token_id LEFT JOIN addresses d ON a.\"from\" = d.address_id LEFT JOIN addresses e ON a.\"to\" = e.address_id LEFT JOIN txgroups f ON a.txgroup_id = f.txgroup_id LEFT JOIN txgroups g ON f.parent_txgroup = g.txgroup_id WHERE a.timestamp >= $__from / 1000 and a.timestamp < $__to / 1000 and ('$Chain' like '{%' or b.chain_name = '$Chain') and ('$Token' like '{%' or c.symbol = '$Token') and ('$From' like '{%' or d.address = '$From') and ('$To' like '{%' or e.address = '$To') and ('$FromNickname' like '{%' or d.nickname = '$FromNickname') and ('$ToNickname' like '{%' or e.nickname = '$ToNickname') ) a left join txgroup_hierarchy b on a.txgroup_id = b.txgroup_id WHERE ('$Top' LIKE '{%' OR b.top_category = '$Top') ORDER BY timestamp",
207
+ "datasource": "PostgreSQL",
208
+ "format": "table",
209
+ "rawSql": "select timestamp as \"Timestamp\", block as \"Block\", hash as \"Hash\", token as \"Token\", \"from\" as \"From\", from_nickname as \"From Nickname\", \"to\" as \"To\", to_nickname as \"To Nickname\", amount as \"Amount\", price as \"Price\", value_usd as \"Value USD\", txgroup as \"TxGroup\", a.parent_txgroup as \"Parent TxGroup\", log_index as \"Log Index\" from ( SELECT datetime(a.timestamp, 'unixepoch') AS timestamp, a.block, a.hash, c.symbol AS token, d.address AS \"from\", d.nickname as from_nickname, e.address AS \"to\", e.nickname as to_nickname, a.amount, a.price, a.value_usd, f.name AS txgroup, g.name AS parent_txgroup, f.txgroup_id, a.log_index FROM treasury_txs a LEFT JOIN chains b ON a.chain = b.chain_dbid LEFT JOIN tokens c ON a.token_id = c.token_id LEFT JOIN addresses d ON a.\"from\" = d.address_id LEFT JOIN addresses e ON a.\"to\" = e.address_id LEFT JOIN txgroups f ON a.txgroup_id = f.txgroup_id LEFT JOIN txgroups g ON f.parent_txgroup = g.txgroup_id WHERE a.timestamp >= $__from / 1000 and a.timestamp < $__to / 1000 and b.chain_name IN (${Chain:sqlstring}) and c.symbol IN (${Token:sqlstring}) and d.address IN (${From:sqlstring}) and e.address IN (${To:sqlstring}) and d.nickname IN (${FromNickname:sqlstring}) and e.nickname IN (${ToNickname:sqlstring}) ) a left join txgroup_hierarchy b on a.txgroup_id = b.txgroup_id WHERE b.top_category IN (${Top:sqlstring}) ORDER BY timestamp",
213
210
  "refId": "A",
214
- "timeColumns": [
215
- "time",
216
- "ts"
217
- ]
211
+ "timeColumns": ["time", "ts"]
218
212
  }
219
213
  ],
220
214
  "title": "Transactions",
221
- "type": "table"
215
+ "type": "table",
216
+ "description": "Displays all of the DAO's treasury transactions with full details, including timestamp, block, hash, token, sender/recipient address and nickname, amount, price, value in USD, and transaction group.\n\nIncludes direct links to Etherscan for transaction, block, and address fields."
222
217
  }
223
218
  ],
219
+ "preload": false,
224
220
  "refresh": "",
225
- "schemaVersion": 38,
226
- "tags": [],
221
+ "schemaVersion": 41,
222
+ "tags": ["transactions", "detailed"],
227
223
  "templating": {
228
224
  "list": [
229
225
  {
230
226
  "current": {
231
- "selected": false,
232
227
  "text": "All",
233
228
  "value": "$__all"
234
229
  },
235
- "datasource": "SQLite",
236
- "definition": "SELECT DISTINCT gh.top_category FROM treasury_txs a INNER JOIN txgroup_hierarchy gh ON a.txgroup_id = gh.txgroup_id;",
237
- "hide": 0,
230
+ "datasource": "PostgreSQL",
231
+ "definition": "SELECT DISTINCT gh.top_category FROM treasury_txs a INNER JOIN txgroup_hierarchy gh ON a.txgroup_id = gh.txgroup_id WHERE a.timestamp >= $__from/1000 AND a.timestamp <= $__to/1000;",
238
232
  "includeAll": true,
239
233
  "label": "Top Level",
240
- "multi": false,
234
+ "multi": true,
241
235
  "name": "Top",
242
236
  "options": [],
243
- "query": "SELECT DISTINCT gh.top_category FROM treasury_txs a INNER JOIN txgroup_hierarchy gh ON a.txgroup_id = gh.txgroup_id;",
237
+ "query": "SELECT DISTINCT gh.top_category FROM treasury_txs a INNER JOIN txgroup_hierarchy gh ON a.txgroup_id = gh.txgroup_id WHERE a.timestamp >= $__from/1000 AND a.timestamp <= $__to/1000;",
244
238
  "refresh": 2,
245
239
  "regex": "",
246
- "skipUrlSync": false,
247
240
  "sort": 5,
248
- "type": "query"
241
+ "type": "query",
242
+ "description": "Filter transactions by top-level category (e.g., Revenue, Cost of Revenue, Expenses, Other Income, Other Expenses, Unsorted Income, Unsorted Expense).\n\nSelecting 'All' includes all categories."
249
243
  },
250
244
  {
251
245
  "current": {
252
- "selected": false,
253
246
  "text": "All",
254
247
  "value": "$__all"
255
248
  },
256
- "datasource": "SQLite",
257
- "definition": "select distinct chain_name from treasury_txs a left join chains b on a.chain = b.chain_dbid",
258
- "description": "",
259
- "hide": 0,
249
+ "datasource": "PostgreSQL",
250
+ "definition": "select distinct chain_name from treasury_txs a left join chains b on a.chain = b.chain_dbid WHERE a.timestamp >= $__from/1000 AND a.timestamp <= $__to/1000",
251
+ "description": "Filter transactions by blockchain network.\n\nSelecting 'All' includes all supported chains.",
260
252
  "includeAll": true,
261
- "multi": false,
253
+ "label": "Chain",
254
+ "multi": true,
262
255
  "name": "Chain",
263
256
  "options": [],
264
- "query": "select distinct chain_name from treasury_txs a left join chains b on a.chain = b.chain_dbid",
257
+ "query": "select distinct chain_name from treasury_txs a left join chains b on a.chain = b.chain_dbid WHERE a.timestamp >= $__from/1000 AND a.timestamp <= $__to/1000",
265
258
  "refresh": 2,
266
259
  "regex": "",
267
- "skipUrlSync": false,
268
260
  "sort": 5,
269
261
  "type": "query"
270
262
  },
271
263
  {
272
264
  "current": {
273
- "selected": false,
274
265
  "text": "All",
275
266
  "value": "$__all"
276
267
  },
277
- "datasource": "SQLite",
278
- "definition": "select distinct symbol from treasury_txs a left join tokens b on a.token_id = b.token_id",
279
- "hide": 0,
268
+ "datasource": "PostgreSQL",
269
+ "definition": "select distinct symbol from treasury_txs a left join tokens b on a.token_id = b.token_id WHERE a.timestamp >= $__from/1000 AND a.timestamp <= $__to/1000",
270
+ "description": "Filter transactions by token symbol.\n\nSelecting 'All' includes all tokens.",
280
271
  "includeAll": true,
281
- "multi": false,
272
+ "label": "Token",
273
+ "multi": true,
282
274
  "name": "Token",
283
275
  "options": [],
284
- "query": "select distinct symbol from treasury_txs a left join tokens b on a.token_id = b.token_id",
276
+ "query": "select distinct symbol from treasury_txs a left join tokens b on a.token_id = b.token_id WHERE a.timestamp >= $__from/1000 AND a.timestamp <= $__to/1000",
285
277
  "refresh": 2,
286
278
  "regex": "",
287
- "skipUrlSync": false,
288
279
  "sort": 5,
289
280
  "type": "query"
290
281
  },
291
282
  {
292
283
  "current": {
293
- "selected": false,
294
284
  "text": "All",
295
285
  "value": "$__all"
296
286
  },
297
- "datasource": "SQLite",
298
- "definition": "select distinct address from treasury_txs a left join addresses b on a.\"from\" = b.address_id",
299
- "hide": 0,
287
+ "datasource": "PostgreSQL",
288
+ "definition": "select distinct address from treasury_txs a left join addresses b on a.\"from\" = b.address_id WHERE a.timestamp >= $__from/1000 AND a.timestamp <= $__to/1000",
289
+ "description": "Filter transactions by sender address.\n\nSelecting 'All' includes all sender addresses.",
300
290
  "includeAll": true,
301
291
  "label": "From Address",
302
- "multi": false,
292
+ "multi": true,
303
293
  "name": "From",
304
294
  "options": [],
305
- "query": "select distinct address from treasury_txs a left join addresses b on a.\"from\" = b.address_id",
295
+ "query": "select distinct address from treasury_txs a left join addresses b on a.\"from\" = b.address_id WHERE a.timestamp >= $__from/1000 AND a.timestamp <= $__to/1000",
306
296
  "refresh": 2,
307
297
  "regex": "",
308
- "skipUrlSync": false,
309
298
  "sort": 5,
310
299
  "type": "query"
311
300
  },
312
301
  {
313
302
  "current": {
314
- "selected": false,
315
303
  "text": "All",
316
304
  "value": "$__all"
317
305
  },
318
- "datasource": "SQLite",
319
- "definition": "select distinct nickname from treasury_txs a inner join addresses b on a.\"from\" = b.address_id",
320
- "hide": 0,
306
+ "datasource": "PostgreSQL",
307
+ "definition": "select distinct nickname from treasury_txs a inner join addresses b on a.\"from\" = b.address_id WHERE a.timestamp >= $__from/1000 AND a.timestamp <= $__to/1000",
308
+ "description": "Filter transactions by sender nickname.\n\nSelecting 'All' includes all senders.",
321
309
  "includeAll": true,
322
310
  "label": "From Nickname",
323
- "multi": false,
311
+ "multi": true,
324
312
  "name": "FromNickname",
325
313
  "options": [],
326
- "query": "select distinct nickname from treasury_txs a inner join addresses b on a.\"from\" = b.address_id",
314
+ "query": "select distinct nickname from treasury_txs a inner join addresses b on a.\"from\" = b.address_id WHERE a.timestamp >= $__from/1000 AND a.timestamp <= $__to/1000",
327
315
  "refresh": 2,
328
316
  "regex": "",
329
- "skipUrlSync": false,
330
317
  "sort": 5,
331
318
  "type": "query"
332
319
  },
333
320
  {
334
321
  "current": {
335
- "selected": false,
336
322
  "text": "All",
337
323
  "value": "$__all"
338
324
  },
339
- "datasource": "SQLite",
340
- "definition": "select distinct address from treasury_txs a left join addresses b on a.\"to\" = b.address_id",
341
- "hide": 0,
325
+ "datasource": "PostgreSQL",
326
+ "definition": "select distinct address from treasury_txs a left join addresses b on a.\"to\" = b.address_id WHERE a.timestamp >= $__from/1000 AND a.timestamp <= $__to/1000",
327
+ "description": "Filter transactions by recipient address.\n\nSelecting 'All' includes all recipient addresses.",
342
328
  "includeAll": true,
343
329
  "label": "To Address",
344
- "multi": false,
330
+ "multi": true,
345
331
  "name": "To",
346
332
  "options": [],
347
- "query": "select distinct address from treasury_txs a left join addresses b on a.\"to\" = b.address_id",
333
+ "query": "select distinct address from treasury_txs a left join addresses b on a.\"to\" = b.address_id WHERE a.timestamp >= $__from/1000 AND a.timestamp <= $__to/1000",
348
334
  "refresh": 2,
349
335
  "regex": "",
350
- "skipUrlSync": false,
351
336
  "sort": 5,
352
337
  "type": "query"
353
338
  },
354
339
  {
355
340
  "current": {
356
- "selected": false,
357
341
  "text": "All",
358
342
  "value": "$__all"
359
343
  },
360
- "datasource": "SQLite",
361
- "definition": "select distinct nickname from treasury_txs a inner join addresses b on a.\"to\" = b.address_id",
362
- "hide": 0,
344
+ "datasource": "PostgreSQL",
345
+ "definition": "select distinct nickname from treasury_txs a inner join addresses b on a.\"to\" = b.address_id WHERE a.timestamp >= $__from/1000 AND a.timestamp <= $__to/1000",
346
+ "description": "Filter transactions by recipient nickname.\n\nSelecting 'All' includes all recipients.",
363
347
  "includeAll": true,
364
348
  "label": "To Nickname",
365
- "multi": false,
349
+ "multi": true,
366
350
  "name": "ToNickname",
367
351
  "options": [],
368
- "query": "select distinct nickname from treasury_txs a inner join addresses b on a.\"to\" = b.address_id",
352
+ "query": "select distinct nickname from treasury_txs a inner join addresses b on a.\"to\" = b.address_id WHERE a.timestamp >= $__from/1000 AND a.timestamp <= $__to/1000",
369
353
  "refresh": 2,
370
354
  "regex": "",
371
- "skipUrlSync": false,
372
355
  "sort": 5,
373
356
  "type": "query"
374
357
  }
@@ -381,7 +364,7 @@
381
364
  "timepicker": {},
382
365
  "timezone": "",
383
366
  "title": "Treasury Transactions",
367
+ "description": "Provides a real-time, filterable table of all transactions in the DAO treasury database, including timestamp, block, hash, token, addresses, nicknames, amount, price, and value in USD. Enables detailed analysis and monitoring of all value transfers.",
384
368
  "uid": "b21f1092-66a4-4fb0-90ef-ed77d2becaa4",
385
- "version": 1,
386
- "weekStart": ""
369
+ "version": 8
387
370
  }
@@ -0,0 +1,367 @@
1
+ {
2
+ "annotations": {
3
+ "list": [
4
+ {
5
+ "builtIn": 1,
6
+ "datasource": "-- Grafana --",
7
+ "enable": true,
8
+ "hide": true,
9
+ "iconColor": "rgba(0, 211, 255, 1)",
10
+ "name": "Annotations & Alerts",
11
+ "type": "dashboard"
12
+ }
13
+ ]
14
+ },
15
+ "description": "Primarily for administrators, provides a real-time, filterable table of unsorted transactions in the DAO treasury database, including timestamp, block, hash, token, addresses, nicknames, amount, price, and value in USD. Helps the maintainers of your DAO Treasury deployment keep everything up-to-date.",
16
+ "editable": true,
17
+ "fiscalYearStartMonth": 0,
18
+ "graphTooltip": 0,
19
+ "id": 0,
20
+ "links": [],
21
+ "panels": [
22
+ {
23
+ "datasource": "PostgreSQL",
24
+ "description": "Primarily for administrators, displays all of the DAO's unsorted treasury transactions with full details, including timestamp, block, hash, token, sender/recipient address and nickname, amount, price, value in USD, and transaction group.\n\nIncludes direct links to Etherscan for transaction, block, and address fields.",
25
+ "fieldConfig": {
26
+ "defaults": {
27
+ "custom": {
28
+ "align": "auto",
29
+ "cellOptions": {
30
+ "type": "auto"
31
+ },
32
+ "footer": {
33
+ "reducers": []
34
+ },
35
+ "inspect": false
36
+ },
37
+ "decimals": 8,
38
+ "mappings": [],
39
+ "thresholds": {
40
+ "mode": "absolute",
41
+ "steps": [
42
+ {
43
+ "color": "green",
44
+ "value": 0
45
+ },
46
+ {
47
+ "color": "red",
48
+ "value": 80
49
+ }
50
+ ]
51
+ }
52
+ },
53
+ "overrides": [
54
+ {
55
+ "matcher": {
56
+ "id": "byName",
57
+ "options": "Hash"
58
+ },
59
+ "properties": [
60
+ {
61
+ "id": "links",
62
+ "value": [
63
+ {
64
+ "targetBlank": true,
65
+ "title": "View on Etherscan",
66
+ "url": "https://etherscan.io/tx/${__value.raw}"
67
+ }
68
+ ]
69
+ }
70
+ ]
71
+ },
72
+ {
73
+ "matcher": {
74
+ "id": "byName",
75
+ "options": "Block"
76
+ },
77
+ "properties": [
78
+ {
79
+ "id": "links",
80
+ "value": [
81
+ {
82
+ "targetBlank": true,
83
+ "title": "View on Etherscan",
84
+ "url": "https://etherscan.io/block/${__value.raw}"
85
+ }
86
+ ]
87
+ }
88
+ ]
89
+ },
90
+ {
91
+ "matcher": {
92
+ "id": "byName",
93
+ "options": "To"
94
+ },
95
+ "properties": [
96
+ {
97
+ "id": "links",
98
+ "value": [
99
+ {
100
+ "targetBlank": true,
101
+ "title": "View on Etherscan",
102
+ "url": "https://etherscan.io/address/${__value.raw}"
103
+ }
104
+ ]
105
+ }
106
+ ]
107
+ },
108
+ {
109
+ "matcher": {
110
+ "id": "byName",
111
+ "options": "From"
112
+ },
113
+ "properties": [
114
+ {
115
+ "id": "links",
116
+ "value": [
117
+ {
118
+ "targetBlank": true,
119
+ "title": "View on Etherscan",
120
+ "url": "https://etherscan.io/address/${__value.raw}"
121
+ }
122
+ ]
123
+ }
124
+ ]
125
+ },
126
+ {
127
+ "matcher": {
128
+ "id": "byName",
129
+ "options": "From Nickname"
130
+ },
131
+ "properties": [
132
+ {
133
+ "id": "links",
134
+ "value": [
135
+ {
136
+ "targetBlank": true,
137
+ "title": "View on Etherscan",
138
+ "url": "https://etherscan.io/address/${__data.fields.From}"
139
+ }
140
+ ]
141
+ }
142
+ ]
143
+ },
144
+ {
145
+ "matcher": {
146
+ "id": "byName",
147
+ "options": "To Nickname"
148
+ },
149
+ "properties": [
150
+ {
151
+ "id": "links",
152
+ "value": [
153
+ {
154
+ "targetBlank": true,
155
+ "title": "View on Etherscan",
156
+ "url": "https://etherscan.io/address/${__data.fields.To}"
157
+ }
158
+ ]
159
+ }
160
+ ]
161
+ },
162
+ {
163
+ "matcher": {
164
+ "id": "byName",
165
+ "options": "Block"
166
+ },
167
+ "properties": [
168
+ {
169
+ "id": "decimals"
170
+ }
171
+ ]
172
+ },
173
+ {
174
+ "matcher": {
175
+ "id": "byName",
176
+ "options": "Log Index"
177
+ },
178
+ "properties": [
179
+ {
180
+ "id": "decimals"
181
+ }
182
+ ]
183
+ }
184
+ ]
185
+ },
186
+ "gridPos": {
187
+ "h": 18,
188
+ "w": 24,
189
+ "x": 0,
190
+ "y": 0
191
+ },
192
+ "id": 1,
193
+ "options": {
194
+ "cellHeight": "sm",
195
+ "showHeader": true,
196
+ "sortBy": [
197
+ {
198
+ "desc": true,
199
+ "displayName": "Timestamp"
200
+ }
201
+ ]
202
+ },
203
+ "pluginVersion": "12.2.1",
204
+ "targets": [
205
+ {
206
+ "datasource": "PostgreSQL",
207
+ "format": "table",
208
+ "rawSql": "select timestamp as \"Timestamp\", block as \"Block\", hash as \"Hash\", token as \"Token\", \"from\" as \"From\", from_nickname as \"From Nickname\", \"to\" as \"To\", to_nickname as \"To Nickname\", amount as \"Amount\", price as \"Price\", value_usd as \"Value USD\", txgroup as \"TxGroup\", a.parent_txgroup as \"Parent TxGroup\", log_index as \"Log Index\" from ( SELECT datetime(a.timestamp, 'unixepoch') AS timestamp, a.block, a.hash, c.symbol AS token, d.address AS \"from\", d.nickname as from_nickname, e.address AS \"to\", e.nickname as to_nickname, a.amount, a.price, a.value_usd, f.name AS txgroup, g.name AS parent_txgroup, f.txgroup_id, a.log_index FROM treasury_txs a LEFT JOIN chains b ON a.chain = b.chain_dbid LEFT JOIN tokens c ON a.token_id = c.token_id LEFT JOIN addresses d ON a.\"from\" = d.address_id LEFT JOIN addresses e ON a.\"to\" = e.address_id LEFT JOIN txgroups f ON a.txgroup_id = f.txgroup_id LEFT JOIN txgroups g ON f.parent_txgroup = g.txgroup_id WHERE a.timestamp >= 1756684800000 / 1000 and a.timestamp < 1759276799999 / 1000 and b.chain_name IN ('Mainnet') and c.symbol IN ('crvUSD','DAI','lp-yCRVv2','sUSDS','USDC','USDS','USDT','YFI','yvcrvUSD-2','yvCurve-3Crypto-f','yvCurve-3CryptoUSDC-f','yvCurve-3CryptoUSDT-f','yvCurve-3EUR-f','yvCurve-alETH-frxETH-f','yvCurve-alETH-pxETH-f','yvCurve-alUSD-FRAXBP-f','yvCurve-alUSD-sDOLA-f','yvCurve-CLEV-ETH-f','yvCurve-Compound','yvCurve-CVX-ETH-f','yvCurve-CVXETH','yvCurve-deUSD-USDC-f','yvCurve-deUSDUSDT-f','yvCurve-dgnETH-ETH+-f','yvCurve-DOLA-scrvUSD-f','yvCurve-DOLA-sUSDe-f','yvCurve-DOLA-sUSDS-f','yvCurve-DOLA-USR-f','yvCurve-ETH+-f','yvCurve-eUSD-USDC-f','yvCurve-frxUSDUSDf-f','yvCurve-GEAR-ETH-f','yvCurve-LUSD','yvCurve-lvlUSD-USDC-f','yvCurve-MIM','yvCurve-MIM-f','yvCurve-msETH-f','yvCurve-msUSD-FRAXBP-f','yvCurve-OHM-FRAXBP-f','yvCurve-pxETH-stETH-f','yvCurve-reUSD-scrvUSD-f','yvCurve-reUSD-sDOLA-f','yvCurve-reUSD-sfrxUSD-f','yvCurve-RSUP-WETH-f','yvCurve-sdCRVv2-f','yvCurve-sDOLA-scrvUSD-f','yvCurve-stETH-f','yvCurve-TOKE-ETH-f','yvCurve-TriCRV-f','yvCurve-TriCryptoGHO-f','yvCurve-TriCryptoLLAMA-f','yvCurve-USD3-sUSDe-f','yvCurve-USD3sUSDS-f','yvCurve-USDaf-scrvUSD-f','yvCurve-USDC-crvUSD-f','yvCurve-USDC-USDT-f','yvCurve-USDf-USDC-f','yvCurve-USDT-crvUSD-f','yvCurve-xETH-f','yvCurve-yETH-f','yvCurve-YFIETH','yvCurve-ynETHx-f','yvDAI','yvLUSD','yvUSDC','yvUSDC-1','yvUSDC-2','yvUSDT','yvWBTC','yvWETH','yvyCRV') and d.address IN ('0x0000000000000000000000000000000000000000','0x00000F91109c4d0007e90000D9facAD5298A0CAc','0x04c8bfe2eb09a1e2e9fA97A2fd970E06d87B43de','0x05F471262d15EECA4059DadE070e5BEd509a4e73','0x05Fc8174050f0A41dEB7e562187911d45cd5e401','0x0a35322c5C9Dd22fF592bfC5b134c5CE78154d10','0x0Bd7B7d511d9f60D5Fa5846A9B911168C5a82094','0x150F76e1339A918BaA38338ED9bd695Bd0924Bcf','0x1635b506a88fBF428465Ad65d00e8d6B6E5846C3','0x19D3364A399d251E894aC732651be8B0E4e85001','0x22A956C4755d8C4294b358dC346E74250E175622','0x241AdD131B9aaa7527132b752252b99420937ADc','0x278374fFb10B7D16E7633444c13e6E565EA57c28','0x2c8a33C66c00264316Ea4E4433e86A386Eb6ECBf','0x2DfB14E32e2F8156ec15a2c21c3A6c053af52Be8','0x37305B1cD40574E4C5Ce33f8e8306Be057fD7341','0x378cb52b00F9D0921cb46dFc099CFf73b42419dC','0x3a51269E0707A3416044bad5066858A12198fCf5','0x3a7FBB727d11d3543c5b90a04cB1bA231F105eE1','0x3B27F92C0e212C671EA351827EDF93DB27cc0c65','0x3f34A7eF4f17528CbFFb7817060941BCdaC924fa','0x507c6dE33f50c0505F77F598c0B3CA7b5fEB3D68','0x50f02612EA1F79a84ef72d6912A5452F40a88eDd','0x58900d761Ae3765B75DDFc235c1536B527F25d8F','0x5895D114A4992F4ce71D61293F7d4fDe93FCd695','0x5f18C75AbDAe578b483E5F43f12a39cF75b973a9','0x5fA5B62c8AF877CB37031e0a3B2f34A78e3C56A6','0x6F9A3ab8Aea89892b4157643A6e75d8E6ff2291d','0x75A291F0232ADD37d72Dd1Dcff55B715755ECDEe','0x7788A5492bc948e1d8c2caa53b2e0a60ed5403b0','0x7845Ebf66c9575Fc5f5A0dBb9a34a706Ad997a3f','0x790a60024bC3aea28385b60480f15a0771f26D09','0x7c439Df9ADE8831180EA4D546c1E910D4Ba71a86','0x7cA00559B978CFde81297849be6151d3ccB408A9','0x7Da96a3891Add058AdA2E826306D812C638D87a7','0x8017B5d498f75d12dA6A857e867699fB07De41a4','0x8078198Fc424986ae89Ce4a910Fc109587b6aBF3','0x82c83ddA32DB09F63F9A59A129278f3fdC3EeE67','0x849dC56ceCa7Cf55AbF5ec87910DA21c5C7dA581','0x8770d076dC2db46f368BDc8EaAE3b7164e59267b','0x8Bb5491c0872445EC15d9b67CC6117811e0D8498','0x8fb66F38cF86A3d5e8768f8F1754A24A6c661Fb8','0x9008D19f58AAbD9eD0D60971565AA8510560ab41','0x9289D26fD70867af2f4523EBada69A0d0deEC6c3','0x93A62dA5a14C80f265DAbC077fCEE437B1a0Efde','0x961Ad224fedDFa468c81acB3A9Cc2cC4731809f4','0xa258C4606Ca8206D8aA700cE2143D7db854D168c','0xa354F35829Ae975e850e23e9615b11Da1B3dC4DE','0xa540744DEDBDA9eF64cf753F0E851EfE4a419EA9','0xa669d6C2Df33F41940c2646A9BF3031e2524d515','0xA696a63cc78DfFa1a63E9E50587C197387FF6C7E','0xA6AeBf9680FC87F7641c40Edd95cf52512f228B0','0xa9fE4601811213c340e850ea305481afF02f5b28','0xaA379c2aA72529d5ec0da8A41e2F41ED7Fe4b48C','0xAD2f9A55518Dba12E8AB069502820923351667C5','0xB3445D5413abf63Df1112A4a517de2602F249785','0xb7b1C394b3F82091988A1e400C6499178eE64b99','0xBe53A109B494E5c9f97b9Cd39Fe969BE68BF6204','0xBf2BD27F8C4B38aBdcaD6d3E37445343Cb0630eF','0xBF319dDC2Edc1Eb6FDf9910E39b37Be221C8805F','0xBfBC4acAE2ceC91A5bC80eCA1C9290F92959f7c3','0xBfDC8a852532aaf90e93968f1D1Ab48B80E15571','0xC001d00d425Fa92C4F840baA8f1e0c27c4297a0B','0xc139A6FD6Db661694b11F0B24Bab30F00b3539B8','0xc9e146B126f4ca0Aa8edA3BDBCd76a960B4dcba7','0xce2f57252644Db26c76011aD490553d88C3B9030','0xd0002c648CCa8DeE2f2b8D70D542Ccde8ad6EC03','0xd02b103f7f5dba89Ad316E2b3Fe247F280CcE5b2','0xD2433Ec6De2a932Ab7bc1A0080676333AeF8B546','0xD6Ea40597Be05c201845c0bFd2e96A60bACde267','0xdA816459F1AB5631232FE5e97a05BBBb94970c95','0xDb26d8815EdA864Dfa43306766f2F8CA50C03F9E','0xE08D97e151473A848C3d9CA3f323Cb720472D015','0xE2CaD35CFD1A9B5acD557558f44B096ef8340C1B','0xe3Bf2D04cd3B6e74613D36368c7D21B2d6C26d72','0xe7c25cb1eac7D870F3cD103cBB060A6DFbc5eaF2','0xF0D539955974b248d763D60C3663eF272dfC6971','0xf165a634296800812B8B0607a75DeDdcD4D3cC88','0xfA0253943c3FF0e43898cba5A7a0dA9D17C27995','0xfBd4d8bf19c67582168059332c46567563d0d75f','0xFEB4acf3df3cDEA7399794D0869ef76A6EfAff52') and e.nickname IN ('','Contract: Conversion factory','Contract: DssLitePsm','Contract: GnosisSafe','Contract: GnosisSafeProxy','Contract: GPv2Settlement','Contract: SafeProxy','Contract: Simple Vesting Escrow','Contract: Vyper_contract','Token Dumper Multisig','Token: USDC-1 yVault','Yearn Treasury','Yearn yChad Multisig','yRoboTreasury Stables Reserve','yRoboTreasury Treasury Contract','Zero Address') ) a left join txgroup_hierarchy b on a.txgroup_id = b.txgroup_id WHERE b.top_category IN ('Revenue') ORDER BY timestamp",
209
+ "refId": "A",
210
+ "timeColumns": ["time", "ts"]
211
+ }
212
+ ],
213
+ "title": "Transactions",
214
+ "type": "table"
215
+ }
216
+ ],
217
+ "preload": false,
218
+ "refresh": "",
219
+ "schemaVersion": 42,
220
+ "tags": [],
221
+ "templating": {
222
+ "list": [
223
+ {
224
+ "current": {
225
+ "text": "All",
226
+ "value": "$__all"
227
+ },
228
+ "datasource": "PostgreSQL",
229
+ "definition": "SELECT DISTINCT gh.top_category FROM treasury_txs a INNER JOIN txgroup_hierarchy gh ON a.txgroup_id = gh.txgroup_id WHERE gh.top_category IN ('Sort Me (Inbound)', 'Sort Me (Outbound)') AND a.timestamp >= $__from/1000 AND a.timestamp <= $__to/1000;",
230
+ "description": "Filter transactions by top-level category (e.g., Revenue, Cost of Revenue, Expenses, Other Income, Other Expenses, Unsorted Income, Unsorted Expense).\n\nSelecting 'All' includes all categories.",
231
+ "includeAll": true,
232
+ "label": "Top Level",
233
+ "multi": true,
234
+ "name": "Top",
235
+ "options": [],
236
+ "query": "SELECT DISTINCT gh.top_category FROM treasury_txs a INNER JOIN txgroup_hierarchy gh ON a.txgroup_id = gh.txgroup_id WHERE gh.top_category IN ('Sort Me (Inbound)', 'Sort Me (Outbound)') AND a.timestamp >= $__from/1000 AND a.timestamp <= $__to/1000;",
237
+ "refresh": 2,
238
+ "regex": "",
239
+ "sort": 5,
240
+ "type": "query"
241
+ },
242
+ {
243
+ "current": {
244
+ "text": "All",
245
+ "value": "$__all"
246
+ },
247
+ "datasource": "PostgreSQL",
248
+ "definition": "select distinct chain_name from treasury_txs a left join chains b on a.chain = b.chain_dbid WHERE a.timestamp >= $__from/1000 AND a.timestamp <= $__to/1000",
249
+ "description": "Filter transactions by blockchain network.\n\nSelecting 'All' includes all supported chains.",
250
+ "includeAll": true,
251
+ "label": "Chain",
252
+ "multi": true,
253
+ "name": "Chain",
254
+ "options": [],
255
+ "query": "select distinct chain_name from treasury_txs a left join chains b on a.chain = b.chain_dbid WHERE a.timestamp >= $__from/1000 AND a.timestamp <= $__to/1000",
256
+ "refresh": 2,
257
+ "regex": "",
258
+ "sort": 5,
259
+ "type": "query"
260
+ },
261
+ {
262
+ "current": {
263
+ "text": "All",
264
+ "value": "$__all"
265
+ },
266
+ "datasource": "PostgreSQL",
267
+ "definition": "select distinct symbol from treasury_txs a left join tokens b on a.token_id = b.token_id WHERE a.timestamp >= $__from/1000 AND a.timestamp <= $__to/1000",
268
+ "description": "Filter transactions by token symbol.\n\nSelecting 'All' includes all tokens.",
269
+ "includeAll": true,
270
+ "label": "Token",
271
+ "multi": true,
272
+ "name": "Token",
273
+ "options": [],
274
+ "query": "select distinct symbol from treasury_txs a left join tokens b on a.token_id = b.token_id WHERE a.timestamp >= $__from/1000 AND a.timestamp <= $__to/1000",
275
+ "refresh": 2,
276
+ "regex": "",
277
+ "sort": 5,
278
+ "type": "query"
279
+ },
280
+ {
281
+ "current": {
282
+ "text": "All",
283
+ "value": "$__all"
284
+ },
285
+ "datasource": "PostgreSQL",
286
+ "definition": "select distinct address from treasury_txs a left join addresses b on a.\"from\" = b.address_id WHERE a.timestamp >= $__from/1000 AND a.timestamp <= $__to/1000",
287
+ "description": "Filter transactions by sender address.\n\nSelecting 'All' includes all sender addresses.",
288
+ "includeAll": true,
289
+ "label": "From Address",
290
+ "multi": true,
291
+ "name": "From",
292
+ "options": [],
293
+ "query": "select distinct address from treasury_txs a left join addresses b on a.\"from\" = b.address_id WHERE a.timestamp >= $__from/1000 AND a.timestamp <= $__to/1000",
294
+ "refresh": 2,
295
+ "regex": "",
296
+ "sort": 5,
297
+ "type": "query"
298
+ },
299
+ {
300
+ "current": {
301
+ "text": "All",
302
+ "value": "$__all"
303
+ },
304
+ "datasource": "PostgreSQL",
305
+ "definition": "select distinct nickname from treasury_txs a inner join addresses b on a.\"from\" = b.address_id WHERE a.timestamp >= $__from/1000 AND a.timestamp <= $__to/1000",
306
+ "description": "Filter transactions by sender nickname.\n\nSelecting 'All' includes all senders.",
307
+ "includeAll": true,
308
+ "label": "From Nickname",
309
+ "multi": true,
310
+ "name": "FromNickname",
311
+ "options": [],
312
+ "query": "select distinct nickname from treasury_txs a inner join addresses b on a.\"from\" = b.address_id WHERE a.timestamp >= $__from/1000 AND a.timestamp <= $__to/1000",
313
+ "refresh": 2,
314
+ "regex": "",
315
+ "sort": 5,
316
+ "type": "query"
317
+ },
318
+ {
319
+ "current": {
320
+ "text": "All",
321
+ "value": "$__all"
322
+ },
323
+ "datasource": "PostgreSQL",
324
+ "definition": "select distinct address from treasury_txs a left join addresses b on a.\"to\" = b.address_id WHERE a.timestamp >= $__from/1000 AND a.timestamp <= $__to/1000",
325
+ "description": "Filter transactions by recipient address.\n\nSelecting 'All' includes all recipient addresses.",
326
+ "includeAll": true,
327
+ "label": "To Address",
328
+ "multi": true,
329
+ "name": "To",
330
+ "options": [],
331
+ "query": "select distinct address from treasury_txs a left join addresses b on a.\"to\" = b.address_id WHERE a.timestamp >= $__from/1000 AND a.timestamp <= $__to/1000",
332
+ "refresh": 2,
333
+ "regex": "",
334
+ "sort": 5,
335
+ "type": "query"
336
+ },
337
+ {
338
+ "current": {
339
+ "text": "All",
340
+ "value": "$__all"
341
+ },
342
+ "datasource": "PostgreSQL",
343
+ "definition": "select distinct nickname from treasury_txs a inner join addresses b on a.\"to\" = b.address_id WHERE a.timestamp >= $__from/1000 AND a.timestamp <= $__to/1000",
344
+ "description": "Filter transactions by recipient nickname.\n\nSelecting 'All' includes all recipients.",
345
+ "includeAll": true,
346
+ "label": "To Nickname",
347
+ "multi": true,
348
+ "name": "ToNickname",
349
+ "options": [],
350
+ "query": "select distinct nickname from treasury_txs a inner join addresses b on a.\"to\" = b.address_id WHERE a.timestamp >= $__from/1000 AND a.timestamp <= $__to/1000",
351
+ "refresh": 2,
352
+ "regex": "",
353
+ "sort": 5,
354
+ "type": "query"
355
+ }
356
+ ]
357
+ },
358
+ "time": {
359
+ "from": "now-5y",
360
+ "to": "now"
361
+ },
362
+ "timepicker": {},
363
+ "timezone": "",
364
+ "title": "Unsorted Transactions",
365
+ "uid": "adw45kc",
366
+ "version": 4
367
+ }