dao-treasury 0.0.39__cp311-cp311-macosx_11_0_arm64.whl → 0.0.69__cp311-cp311-macosx_11_0_arm64.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.
Files changed (48) hide show
  1. dao_treasury/.grafana/provisioning/dashboards/breakdowns/Expenses.json +551 -0
  2. dao_treasury/.grafana/provisioning/dashboards/breakdowns/Revenue.json +551 -0
  3. dao_treasury/.grafana/provisioning/dashboards/dashboards.yaml +7 -57
  4. dao_treasury/.grafana/provisioning/dashboards/streams/LlamaPay.json +11 -16
  5. dao_treasury/.grafana/provisioning/dashboards/summary/Monthly.json +15 -15
  6. dao_treasury/.grafana/provisioning/dashboards/transactions/Treasury Transactions.json +38 -61
  7. dao_treasury/.grafana/provisioning/dashboards/treasury/Cashflow (Including Unsorted).json +122 -149
  8. dao_treasury/.grafana/provisioning/dashboards/treasury/Cashflow.json +87 -100
  9. dao_treasury/.grafana/provisioning/dashboards/treasury/Current Treasury Assets.json +1009 -0
  10. dao_treasury/.grafana/provisioning/dashboards/treasury/Historical Treasury Balances.json +2989 -0
  11. dao_treasury/.grafana/provisioning/dashboards/treasury/Operating Cashflow.json +64 -78
  12. dao_treasury/ENVIRONMENT_VARIABLES.py +12 -0
  13. dao_treasury/__init__.py +14 -0
  14. dao_treasury/_docker.cpython-311-darwin.so +0 -0
  15. dao_treasury/_docker.py +38 -21
  16. dao_treasury/_nicknames.cpython-311-darwin.so +0 -0
  17. dao_treasury/_nicknames.py +15 -0
  18. dao_treasury/_wallet.cpython-311-darwin.so +0 -0
  19. dao_treasury/constants.cpython-311-darwin.so +0 -0
  20. dao_treasury/constants.py +24 -0
  21. dao_treasury/db.py +72 -3
  22. dao_treasury/docker-compose.yaml +1 -1
  23. dao_treasury/main.py +6 -0
  24. dao_treasury/sorting/__init__.cpython-311-darwin.so +0 -0
  25. dao_treasury/sorting/_matchers.cpython-311-darwin.so +0 -0
  26. dao_treasury/sorting/_rules.cpython-311-darwin.so +0 -0
  27. dao_treasury/sorting/factory.cpython-311-darwin.so +0 -0
  28. dao_treasury/sorting/rule.cpython-311-darwin.so +0 -0
  29. dao_treasury/sorting/rule.py +8 -10
  30. dao_treasury/sorting/rules/__init__.cpython-311-darwin.so +0 -0
  31. dao_treasury/sorting/rules/ignore/__init__.cpython-311-darwin.so +0 -0
  32. dao_treasury/sorting/rules/ignore/__init__.py +0 -1
  33. dao_treasury/sorting/rules/ignore/llamapay.cpython-311-darwin.so +0 -0
  34. dao_treasury/streams/__init__.cpython-311-darwin.so +0 -0
  35. dao_treasury/streams/llamapay.cpython-311-darwin.so +0 -0
  36. dao_treasury/treasury.py +33 -14
  37. dao_treasury/types.cpython-311-darwin.so +0 -0
  38. {dao_treasury-0.0.39.dist-info → dao_treasury-0.0.69.dist-info}/METADATA +4 -3
  39. dao_treasury-0.0.69.dist-info/RECORD +54 -0
  40. dao_treasury-0.0.69.dist-info/top_level.txt +2 -0
  41. dao_treasury__mypyc.cpython-311-darwin.so +0 -0
  42. 8a0ad9a1a4146730a0f6__mypyc.cpython-311-darwin.so +0 -0
  43. dao_treasury/.grafana/provisioning/dashboards/treasury/Treasury.json +0 -2018
  44. dao_treasury/sorting/rules/ignore/shitcoins.cpython-311-darwin.so +0 -0
  45. dao_treasury/sorting/rules/ignore/shitcoins.py +0 -24
  46. dao_treasury-0.0.39.dist-info/RECORD +0 -53
  47. dao_treasury-0.0.39.dist-info/top_level.txt +0 -2
  48. {dao_treasury-0.0.39.dist-info → dao_treasury-0.0.69.dist-info}/WHEEL +0 -0
@@ -18,16 +18,15 @@
18
18
  "editable": true,
19
19
  "fiscalYearStartMonth": 0,
20
20
  "graphTooltip": 0,
21
- "id": 7,
21
+ "id": 11,
22
22
  "links": [],
23
- "liveNow": false,
24
23
  "panels": [
25
24
  {
26
25
  "datasource": {
27
26
  "type": "frser-sqlite-datasource",
28
27
  "uid": "P2D2EEF3E092AF52B"
29
28
  },
30
- "description": "",
29
+ "description": "Displays all LlamaPay payment streams managed by the DAO, including stream ID, factory, start/end block, token, sender, recipient, reason, budget request, amount per second, status, and transaction group.\n\nData Links: Click on addresses or blocks to view them on Etherscan. Click on a budget request to view the related Github issue.",
31
30
  "fieldConfig": {
32
31
  "defaults": {
33
32
  "color": {
@@ -46,7 +45,7 @@
46
45
  "steps": [
47
46
  {
48
47
  "color": "green",
49
- "value": null
48
+ "value": 0
50
49
  },
51
50
  {
52
51
  "color": "red",
@@ -178,14 +177,12 @@
178
177
  "footer": {
179
178
  "countRows": false,
180
179
  "fields": "",
181
- "reducer": [
182
- "sum"
183
- ],
180
+ "reducer": ["sum"],
184
181
  "show": false
185
182
  },
186
183
  "showHeader": true
187
184
  },
188
- "pluginVersion": "10.2.0",
185
+ "pluginVersion": "12.1.1",
189
186
  "targets": [
190
187
  {
191
188
  "datasource": {
@@ -196,19 +193,17 @@
196
193
  "queryType": "table",
197
194
  "rawQueryText": "SELECT\n stream_id as \"Stream ID\",\n b.address as \"Factory\",\n start_block as \"Start Block\",\n end_block as \"End Block\",\n c.symbol as \"Token\",\n d.address as \"From\",\n e.address as \"To\",\n reason as \"Reason\",\n CASE\n WHEN reason LIKE 'gh-%' AND\n -- ensures all after \"gh-\" is digits\n REPLACE(SUBSTR(reason, 4), '0', '') >= '' AND\n CAST(SUBSTR(reason, 4) AS INTEGER) || '' = SUBSTR(reason, 4)\n THEN CAST(SUBSTR(reason, 4) AS INTEGER)\n ELSE NULL\n END AS \"Budget Request\",\n amount_per_second as \"Amount Per Second\",\n status as \"Status\",\n txgroup as \"TxGroup\"\n\nFROM streams a\nLEFT JOIN addresses b ON a.contract = b.address_id\nLEFT JOIN tokens c ON a.token = c.token_id\nLEFT JOIN addresses d ON a.from_address = d.address_id\nLEFT JOIN addresses e ON a.to_address = e.address_id",
198
195
  "refId": "A",
199
- "timeColumns": [
200
- "time",
201
- "ts"
202
- ]
196
+ "timeColumns": ["time", "ts"]
203
197
  }
204
198
  ],
205
199
  "title": "LlamaPay Streams",
206
200
  "type": "table"
207
201
  }
208
202
  ],
203
+ "preload": false,
209
204
  "refresh": "",
210
- "schemaVersion": 38,
211
- "tags": [],
205
+ "schemaVersion": 41,
206
+ "tags": ["streams", "llamapay", "payments"],
212
207
  "templating": {
213
208
  "list": []
214
209
  },
@@ -219,7 +214,7 @@
219
214
  "timepicker": {},
220
215
  "timezone": "",
221
216
  "title": "LlamaPay",
217
+ "description": "A simple dashboard with a comprehensive view of all LlamaPay payment streams managed by the DAO, including stream status, participants, configuration, and transaction group.",
222
218
  "uid": "aa4d62a2-9e52-4acc-8f38-a96c77810aca",
223
- "version": 2,
224
- "weekStart": ""
219
+ "version": 3
225
220
  }
@@ -17,7 +17,6 @@
17
17
  "graphTooltip": 0,
18
18
  "id": 2,
19
19
  "links": [],
20
- "liveNow": false,
21
20
  "panels": [
22
21
  {
23
22
  "datasource": "SQLite",
@@ -39,7 +38,7 @@
39
38
  "steps": [
40
39
  {
41
40
  "color": "green",
42
- "value": null
41
+ "value": 0
43
42
  },
44
43
  {
45
44
  "color": "red",
@@ -51,7 +50,7 @@
51
50
  "overrides": []
52
51
  },
53
52
  "gridPos": {
54
- "h": 9,
53
+ "h": 20,
55
54
  "w": 24,
56
55
  "x": 0,
57
56
  "y": 0
@@ -62,9 +61,7 @@
62
61
  "footer": {
63
62
  "countRows": false,
64
63
  "fields": "",
65
- "reducer": [
66
- "sum"
67
- ],
64
+ "reducer": ["sum"],
68
65
  "show": false
69
66
  },
70
67
  "showHeader": true,
@@ -75,33 +72,36 @@
75
72
  }
76
73
  ]
77
74
  },
78
- "pluginVersion": "10.2.0",
75
+ "pluginVersion": "12.1.1",
79
76
  "targets": [
80
77
  {
81
78
  "datasource": "SQLite",
82
- "queryText": "SELECT\n month AS \"Month\",\n SUM(CASE WHEN s.top_category = 'Revenue' THEN value_usd ELSE 0 END) AS \"Revenue\",\n SUM(CASE WHEN s.top_category = 'Cost of Revenue' THEN value_usd ELSE 0 END) AS \"Cost of Revenue\",\n SUM(CASE WHEN s.top_category = 'Expenses' THEN value_usd ELSE 0 END) AS \"Expenses\",\n SUM(CASE WHEN s.top_category = 'Other Income' THEN value_usd ELSE 0 END) AS \"Other Income\",\n SUM(CASE WHEN s.top_category = 'Other Expenses' THEN value_usd ELSE 0 END) AS \"Other Expense\",\n (\n SUM(CASE WHEN s.top_category = 'Revenue' THEN value_usd ELSE 0 END)\n - SUM(CASE WHEN s.top_category = 'Cost of Revenue' THEN value_usd ELSE 0 END)\n - SUM(CASE WHEN s.top_category = 'Expenses' THEN value_usd ELSE 0 END)\n + SUM(CASE WHEN s.top_category = 'Other Income' THEN value_usd ELSE 0 END)\n - SUM(CASE WHEN s.top_category = 'Other Expenses' THEN value_usd ELSE 0 END)\n ) AS \"Sorted Net\",\n SUM(CASE WHEN s.top_category = 'Sort Me (Inbound)' THEN value_usd ELSE 0 END) AS \"Unsorted Income\",\n SUM(CASE WHEN s.top_category = 'Sort Me (Outbound)' THEN value_usd ELSE 0 END) AS \"Unsorted Expense\",\n (\n SUM(CASE WHEN s.top_category = 'Revenue' THEN value_usd ELSE 0 END)\n - SUM(CASE WHEN s.top_category = 'Cost of Revenue' THEN value_usd ELSE 0 END)\n - SUM(CASE WHEN s.top_category = 'Expenses' THEN value_usd ELSE 0 END)\n + SUM(CASE WHEN s.top_category = 'Other Income' THEN value_usd ELSE 0 END)\n - SUM(CASE WHEN s.top_category = 'Other Expenses' THEN value_usd ELSE 0 END)\n + SUM(CASE WHEN s.top_category = 'Sort Me (Inbound)' THEN value_usd ELSE 0 END)\n - SUM(CASE WHEN s.top_category = 'Sort Me (Outbound)' THEN value_usd ELSE 0 END)\n ) AS \"Net\"\nFROM (\n SELECT\n strftime('%Y-%m', datetime(t.timestamp, 'unixepoch')) AS month,\n gh.top_category,\n COALESCE(t.value_usd, 0) AS value_usd\n FROM treasury_txs AS t\n JOIN txgroups AS tg ON t.txgroup_id = tg.txgroup_id\n JOIN txgroup_hierarchy AS gh ON tg.txgroup_id = gh.txgroup_id\n WHERE t.timestamp >= strftime('%s', '2025-01-01') AND tg.name <> 'Ignore'\n) AS s\nGROUP BY month;",
79
+ "queryText": "SELECT\n month AS \"Month\",\n SUM(CASE WHEN s.top_category = 'Revenue' THEN value_usd ELSE 0 END) AS \"Revenue\",\n SUM(CASE WHEN s.top_category = 'Cost of Revenue' THEN value_usd ELSE 0 END) AS \"Cost of Revenue\",\n SUM(CASE WHEN s.top_category = 'Expenses' THEN value_usd ELSE 0 END) AS \"Expenses\",\n SUM(CASE WHEN s.top_category = 'Other Income' THEN value_usd ELSE 0 END) AS \"Other Income\",\n SUM(CASE WHEN s.top_category = 'Other Expenses' THEN value_usd ELSE 0 END) AS \"Other Expense\",\n (\n SUM(CASE WHEN s.top_category = 'Revenue' THEN value_usd ELSE 0 END)\n - SUM(CASE WHEN s.top_category = 'Cost of Revenue' THEN value_usd ELSE 0 END)\n - SUM(CASE WHEN s.top_category = 'Expenses' THEN value_usd ELSE 0 END)\n + SUM(CASE WHEN s.top_category = 'Other Income' THEN value_usd ELSE 0 END)\n - SUM(CASE WHEN s.top_category = 'Other Expenses' THEN value_usd ELSE 0 END)\n ) AS \"Sorted Net\",\n SUM(CASE WHEN s.top_category = 'Sort Me (Inbound)' THEN value_usd ELSE 0 END) AS \"Unsorted Income\",\n SUM(CASE WHEN s.top_category = 'Sort Me (Outbound)' THEN value_usd ELSE 0 END) AS \"Unsorted Expense\",\n (\n SUM(CASE WHEN s.top_category = 'Revenue' THEN value_usd ELSE 0 END)\n - SUM(CASE WHEN s.top_category = 'Cost of Revenue' THEN value_usd ELSE 0 END)\n - SUM(CASE WHEN s.top_category = 'Expenses' THEN value_usd ELSE 0 END)\n + SUM(CASE WHEN s.top_category = 'Other Income' THEN value_usd ELSE 0 END)\n - SUM(CASE WHEN s.top_category = 'Other Expenses' THEN value_usd ELSE 0 END)\n + SUM(CASE WHEN s.top_category = 'Sort Me (Inbound)' THEN value_usd ELSE 0 END)\n - SUM(CASE WHEN s.top_category = 'Sort Me (Outbound)' THEN value_usd ELSE 0 END)\n ) AS \"Net\"\nFROM (\n SELECT\n strftime('%Y-%m', datetime(t.timestamp, 'unixepoch')) AS month,\n gh.top_category,\n COALESCE(t.value_usd, 0) AS value_usd\n FROM treasury_txs AS t\n JOIN txgroups AS tg ON t.txgroup_id = tg.txgroup_id\n JOIN txgroup_hierarchy AS gh ON tg.txgroup_id = gh.txgroup_id\n WHERE t.timestamp >= $__from / 1000 AND tg.name <> 'Ignore'\n) AS s\nGROUP BY month;",
83
80
  "queryType": "table",
84
- "rawQueryText": "SELECT\n month AS \"Month\",\n SUM(CASE WHEN s.top_category = 'Revenue' THEN value_usd ELSE 0 END) AS \"Revenue\",\n SUM(CASE WHEN s.top_category = 'Cost of Revenue' THEN value_usd ELSE 0 END) AS \"Cost of Revenue\",\n SUM(CASE WHEN s.top_category = 'Expenses' THEN value_usd ELSE 0 END) AS \"Expenses\",\n SUM(CASE WHEN s.top_category = 'Other Income' THEN value_usd ELSE 0 END) AS \"Other Income\",\n SUM(CASE WHEN s.top_category = 'Other Expenses' THEN value_usd ELSE 0 END) AS \"Other Expense\",\n (\n SUM(CASE WHEN s.top_category = 'Revenue' THEN value_usd ELSE 0 END)\n - SUM(CASE WHEN s.top_category = 'Cost of Revenue' THEN value_usd ELSE 0 END)\n - SUM(CASE WHEN s.top_category = 'Expenses' THEN value_usd ELSE 0 END)\n + SUM(CASE WHEN s.top_category = 'Other Income' THEN value_usd ELSE 0 END)\n - SUM(CASE WHEN s.top_category = 'Other Expenses' THEN value_usd ELSE 0 END)\n ) AS \"Sorted Net\",\n SUM(CASE WHEN s.top_category = 'Sort Me (Inbound)' THEN value_usd ELSE 0 END) AS \"Unsorted Income\",\n SUM(CASE WHEN s.top_category = 'Sort Me (Outbound)' THEN value_usd ELSE 0 END) AS \"Unsorted Expense\",\n (\n SUM(CASE WHEN s.top_category = 'Revenue' THEN value_usd ELSE 0 END)\n - SUM(CASE WHEN s.top_category = 'Cost of Revenue' THEN value_usd ELSE 0 END)\n - SUM(CASE WHEN s.top_category = 'Expenses' THEN value_usd ELSE 0 END)\n + SUM(CASE WHEN s.top_category = 'Other Income' THEN value_usd ELSE 0 END)\n - SUM(CASE WHEN s.top_category = 'Other Expenses' THEN value_usd ELSE 0 END)\n + SUM(CASE WHEN s.top_category = 'Sort Me (Inbound)' THEN value_usd ELSE 0 END)\n - SUM(CASE WHEN s.top_category = 'Sort Me (Outbound)' THEN value_usd ELSE 0 END)\n ) AS \"Net\"\nFROM (\n SELECT\n strftime('%Y-%m', datetime(t.timestamp, 'unixepoch')) AS month,\n gh.top_category,\n COALESCE(t.value_usd, 0) AS value_usd\n FROM treasury_txs AS t\n JOIN txgroups AS tg ON t.txgroup_id = tg.txgroup_id\n JOIN txgroup_hierarchy AS gh ON tg.txgroup_id = gh.txgroup_id\n WHERE t.timestamp >= strftime('%s', '2025-01-01') AND tg.name <> 'Ignore'\n) AS s\nGROUP BY month;"
81
+ "rawQueryText": "SELECT\n month AS \"Month\",\n SUM(CASE WHEN s.top_category = 'Revenue' THEN value_usd ELSE 0 END) AS \"Revenue\",\n SUM(CASE WHEN s.top_category = 'Cost of Revenue' THEN value_usd ELSE 0 END) AS \"Cost of Revenue\",\n SUM(CASE WHEN s.top_category = 'Expenses' THEN value_usd ELSE 0 END) AS \"Expenses\",\n SUM(CASE WHEN s.top_category = 'Other Income' THEN value_usd ELSE 0 END) AS \"Other Income\",\n SUM(CASE WHEN s.top_category = 'Other Expenses' THEN value_usd ELSE 0 END) AS \"Other Expense\",\n (\n SUM(CASE WHEN s.top_category = 'Revenue' THEN value_usd ELSE 0 END)\n - SUM(CASE WHEN s.top_category = 'Cost of Revenue' THEN value_usd ELSE 0 END)\n - SUM(CASE WHEN s.top_category = 'Expenses' THEN value_usd ELSE 0 END)\n + SUM(CASE WHEN s.top_category = 'Other Income' THEN value_usd ELSE 0 END)\n - SUM(CASE WHEN s.top_category = 'Other Expenses' THEN value_usd ELSE 0 END)\n ) AS \"Sorted Net\",\n SUM(CASE WHEN s.top_category = 'Sort Me (Inbound)' THEN value_usd ELSE 0 END) AS \"Unsorted Income\",\n SUM(CASE WHEN s.top_category = 'Sort Me (Outbound)' THEN value_usd ELSE 0 END) AS \"Unsorted Expense\",\n (\n SUM(CASE WHEN s.top_category = 'Revenue' THEN value_usd ELSE 0 END)\n - SUM(CASE WHEN s.top_category = 'Cost of Revenue' THEN value_usd ELSE 0 END)\n - SUM(CASE WHEN s.top_category = 'Expenses' THEN value_usd ELSE 0 END)\n + SUM(CASE WHEN s.top_category = 'Other Income' THEN value_usd ELSE 0 END)\n - SUM(CASE WHEN s.top_category = 'Other Expenses' THEN value_usd ELSE 0 END)\n + SUM(CASE WHEN s.top_category = 'Sort Me (Inbound)' THEN value_usd ELSE 0 END)\n - SUM(CASE WHEN s.top_category = 'Sort Me (Outbound)' THEN value_usd ELSE 0 END)\n ) AS \"Net\"\nFROM (\n SELECT\n strftime('%Y-%m', datetime(t.timestamp, 'unixepoch')) AS month,\n gh.top_category,\n COALESCE(t.value_usd, 0) AS value_usd\n FROM treasury_txs AS t\n JOIN txgroups AS tg ON t.txgroup_id = tg.txgroup_id\n JOIN txgroup_hierarchy AS gh ON tg.txgroup_id = gh.txgroup_id\n WHERE t.timestamp >= strftime('%s', '2025-01-01') AND tg.name <> 'Ignore'\n) AS s\nGROUP BY month;",
82
+ "refId": "A"
85
83
  }
86
84
  ],
87
85
  "title": "Monthly Profit & Loss",
88
- "type": "table"
86
+ "type": "table",
87
+ "description": "Displays a table of monthly profit and loss for the DAO, including Revenue, Cost of Revenue, Expenses, Other Income, Other Expense, Sorted Net, Unsorted Income, Unsorted Expense.\n\nUseful for high-level financial reporting and tracking the progress of transaction categorization."
89
88
  }
90
89
  ],
90
+ "preload": false,
91
91
  "refresh": "",
92
- "schemaVersion": 38,
93
- "tags": [],
92
+ "schemaVersion": 41,
93
+ "tags": ["pnl", "monthly"],
94
94
  "templating": {
95
95
  "list": []
96
96
  },
97
97
  "time": {
98
- "from": "now-6h",
98
+ "from": "now/y",
99
99
  "to": "now"
100
100
  },
101
101
  "timepicker": {},
102
102
  "timezone": "",
103
103
  "title": "Monthly P&L",
104
+ "description": "Summarizes the DAO's monthly profit and loss, providing a breakdown of sorted and unsorted financial activity for each month. Supports financial reporting and tracking the progress of transaction categorization.",
104
105
  "uid": "a63fa9a7-d4f3-4092-9bde-194add8bcbeb",
105
- "version": 1,
106
- "weekStart": ""
106
+ "version": 5
107
107
  }
@@ -15,8 +15,8 @@
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
22
  "datasource": "SQLite",
@@ -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,151 @@
203
201
  }
204
202
  ]
205
203
  },
206
- "pluginVersion": "10.2.0",
204
+ "pluginVersion": "12.1.1",
207
205
  "targets": [
208
206
  {
209
207
  "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",
208
+ "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 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",
211
209
  "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",
210
+ "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 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
211
  "refId": "A",
214
- "timeColumns": [
215
- "time",
216
- "ts"
217
- ]
212
+ "timeColumns": ["time", "ts"]
218
213
  }
219
214
  ],
220
215
  "title": "Transactions",
221
- "type": "table"
216
+ "type": "table",
217
+ "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
218
  }
223
219
  ],
220
+ "preload": false,
224
221
  "refresh": "",
225
- "schemaVersion": 38,
226
- "tags": [],
222
+ "schemaVersion": 41,
223
+ "tags": ["transactions", "detailed"],
227
224
  "templating": {
228
225
  "list": [
229
226
  {
230
227
  "current": {
231
- "selected": false,
232
228
  "text": "All",
233
229
  "value": "$__all"
234
230
  },
235
231
  "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,
232
+ "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
233
  "includeAll": true,
239
234
  "label": "Top Level",
240
- "multi": false,
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
249
  "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,
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",
262
254
  "name": "Chain",
263
255
  "options": [],
264
- "query": "select distinct chain_name from treasury_txs a left join chains b on a.chain = b.chain_dbid",
256
+ "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
257
  "refresh": 2,
266
258
  "regex": "",
267
- "skipUrlSync": false,
268
259
  "sort": 5,
269
260
  "type": "query"
270
261
  },
271
262
  {
272
263
  "current": {
273
- "selected": false,
274
264
  "text": "All",
275
265
  "value": "$__all"
276
266
  },
277
267
  "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
+ "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",
269
+ "description": "Filter transactions by token symbol.\n\nSelecting 'All' includes all tokens.",
280
270
  "includeAll": true,
281
- "multi": false,
271
+ "label": "Token",
282
272
  "name": "Token",
283
273
  "options": [],
284
- "query": "select distinct symbol from treasury_txs a left join tokens b on a.token_id = b.token_id",
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",
285
275
  "refresh": 2,
286
276
  "regex": "",
287
- "skipUrlSync": false,
288
277
  "sort": 5,
289
278
  "type": "query"
290
279
  },
291
280
  {
292
281
  "current": {
293
- "selected": false,
294
282
  "text": "All",
295
283
  "value": "$__all"
296
284
  },
297
285
  "datasource": "SQLite",
298
- "definition": "select distinct address from treasury_txs a left join addresses b on a.\"from\" = b.address_id",
299
- "hide": 0,
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.",
300
288
  "includeAll": true,
301
289
  "label": "From Address",
302
- "multi": false,
303
290
  "name": "From",
304
291
  "options": [],
305
- "query": "select distinct address from treasury_txs a left join addresses b on a.\"from\" = b.address_id",
292
+ "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
293
  "refresh": 2,
307
294
  "regex": "",
308
- "skipUrlSync": false,
309
295
  "sort": 5,
310
296
  "type": "query"
311
297
  },
312
298
  {
313
299
  "current": {
314
- "selected": false,
315
300
  "text": "All",
316
301
  "value": "$__all"
317
302
  },
318
303
  "datasource": "SQLite",
319
- "definition": "select distinct nickname from treasury_txs a inner join addresses b on a.\"from\" = b.address_id",
320
- "hide": 0,
304
+ "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",
305
+ "description": "Filter transactions by sender nickname.\n\nSelecting 'All' includes all senders.",
321
306
  "includeAll": true,
322
307
  "label": "From Nickname",
323
- "multi": false,
324
308
  "name": "FromNickname",
325
309
  "options": [],
326
- "query": "select distinct nickname from treasury_txs a inner join addresses b on a.\"from\" = b.address_id",
310
+ "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
311
  "refresh": 2,
328
312
  "regex": "",
329
- "skipUrlSync": false,
330
313
  "sort": 5,
331
314
  "type": "query"
332
315
  },
333
316
  {
334
317
  "current": {
335
- "selected": false,
336
318
  "text": "All",
337
319
  "value": "$__all"
338
320
  },
339
321
  "datasource": "SQLite",
340
- "definition": "select distinct address from treasury_txs a left join addresses b on a.\"to\" = b.address_id",
341
- "hide": 0,
322
+ "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",
323
+ "description": "Filter transactions by recipient address.\n\nSelecting 'All' includes all recipient addresses.",
342
324
  "includeAll": true,
343
325
  "label": "To Address",
344
- "multi": false,
345
326
  "name": "To",
346
327
  "options": [],
347
- "query": "select distinct address from treasury_txs a left join addresses b on a.\"to\" = b.address_id",
328
+ "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
329
  "refresh": 2,
349
330
  "regex": "",
350
- "skipUrlSync": false,
351
331
  "sort": 5,
352
332
  "type": "query"
353
333
  },
354
334
  {
355
335
  "current": {
356
- "selected": false,
357
336
  "text": "All",
358
337
  "value": "$__all"
359
338
  },
360
339
  "datasource": "SQLite",
361
- "definition": "select distinct nickname from treasury_txs a inner join addresses b on a.\"to\" = b.address_id",
362
- "hide": 0,
340
+ "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",
341
+ "description": "Filter transactions by recipient nickname.\n\nSelecting 'All' includes all recipients.",
363
342
  "includeAll": true,
364
343
  "label": "To Nickname",
365
- "multi": false,
366
344
  "name": "ToNickname",
367
345
  "options": [],
368
- "query": "select distinct nickname from treasury_txs a inner join addresses b on a.\"to\" = b.address_id",
346
+ "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
347
  "refresh": 2,
370
348
  "regex": "",
371
- "skipUrlSync": false,
372
349
  "sort": 5,
373
350
  "type": "query"
374
351
  }
@@ -381,7 +358,7 @@
381
358
  "timepicker": {},
382
359
  "timezone": "",
383
360
  "title": "Treasury Transactions",
361
+ "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
362
  "uid": "b21f1092-66a4-4fb0-90ef-ed77d2becaa4",
385
- "version": 1,
386
- "weekStart": ""
363
+ "version": 6
387
364
  }