@o1-labs/mina-archive-node-graphql 0.0.6

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 (138) hide show
  1. package/README.md +321 -0
  2. package/build/benchmark/setup.js +32 -0
  3. package/build/benchmark/setup.js.map +1 -0
  4. package/build/src/blockchain/constants.js +2 -0
  5. package/build/src/blockchain/constants.js.map +1 -0
  6. package/build/src/blockchain/types.js +7 -0
  7. package/build/src/blockchain/types.js.map +1 -0
  8. package/build/src/blockchain/utils.js +39 -0
  9. package/build/src/blockchain/utils.js.map +1 -0
  10. package/build/src/consensus/mina-consensus.js +59 -0
  11. package/build/src/consensus/mina-consensus.js.map +1 -0
  12. package/build/src/context.js +10 -0
  13. package/build/src/context.js.map +1 -0
  14. package/build/src/db/archive-node-adapter/archive-node-adapter.interface.js +2 -0
  15. package/build/src/db/archive-node-adapter/archive-node-adapter.interface.js.map +1 -0
  16. package/build/src/db/archive-node-adapter/archive-node-adapter.js +47 -0
  17. package/build/src/db/archive-node-adapter/archive-node-adapter.js.map +1 -0
  18. package/build/src/db/sql/events-actions/queries.js +438 -0
  19. package/build/src/db/sql/events-actions/queries.js.map +1 -0
  20. package/build/src/db/sql/events-actions/types.js +2 -0
  21. package/build/src/db/sql/events-actions/types.js.map +1 -0
  22. package/build/src/errors/error.js +17 -0
  23. package/build/src/errors/error.js.map +1 -0
  24. package/build/src/index.js +27 -0
  25. package/build/src/index.js.map +1 -0
  26. package/build/src/resolvers-types.js +8 -0
  27. package/build/src/resolvers-types.js.map +1 -0
  28. package/build/src/resolvers.js +67 -0
  29. package/build/src/resolvers.js.map +1 -0
  30. package/build/src/server/plugins.js +39 -0
  31. package/build/src/server/plugins.js.map +1 -0
  32. package/build/src/server/server.js +25 -0
  33. package/build/src/server/server.js.map +1 -0
  34. package/build/src/services/actions-service/actions-service.interface.js +2 -0
  35. package/build/src/services/actions-service/actions-service.interface.js.map +1 -0
  36. package/build/src/services/actions-service/actions-service.js +94 -0
  37. package/build/src/services/actions-service/actions-service.js.map +1 -0
  38. package/build/src/services/blocks-service/blocks-service.interface.js +2 -0
  39. package/build/src/services/blocks-service/blocks-service.interface.js.map +1 -0
  40. package/build/src/services/blocks-service/blocks-service.js +263 -0
  41. package/build/src/services/blocks-service/blocks-service.js.map +1 -0
  42. package/build/src/services/data-adapters/database-row-adapters.js +116 -0
  43. package/build/src/services/data-adapters/database-row-adapters.js.map +1 -0
  44. package/build/src/services/events-service/events-service.interface.js +2 -0
  45. package/build/src/services/events-service/events-service.interface.js.map +1 -0
  46. package/build/src/services/events-service/events-service.js +64 -0
  47. package/build/src/services/events-service/events-service.js.map +1 -0
  48. package/build/src/services/network-service/network-service.interface.js +2 -0
  49. package/build/src/services/network-service/network-service.interface.js.map +1 -0
  50. package/build/src/services/network-service/network-service.js +31 -0
  51. package/build/src/services/network-service/network-service.js.map +1 -0
  52. package/build/src/tracing/jaeger-setup.js +39 -0
  53. package/build/src/tracing/jaeger-setup.js.map +1 -0
  54. package/build/src/tracing/jaeger-tracing.js +29 -0
  55. package/build/src/tracing/jaeger-tracing.js.map +1 -0
  56. package/build/src/tracing/tracer.js +31 -0
  57. package/build/src/tracing/tracer.js.map +1 -0
  58. package/build/tests/__mocks__/generate_mock_data.js +13 -0
  59. package/build/tests/__mocks__/generate_mock_data.js.map +1 -0
  60. package/build/tests/consensus/run-compare.js +40 -0
  61. package/build/tests/consensus/run-compare.js.map +1 -0
  62. package/build/tests/consensus/select-consensus-precomputed.js +80 -0
  63. package/build/tests/consensus/select-consensus-precomputed.js.map +1 -0
  64. package/build/tests/consensus/types.js +15 -0
  65. package/build/tests/consensus/types.js.map +1 -0
  66. package/build/tests/devnet-dump/devnet-dump.test.js +311 -0
  67. package/build/tests/devnet-dump/devnet-dump.test.js.map +1 -0
  68. package/build/tests/devnet-dump/setup.js +58 -0
  69. package/build/tests/devnet-dump/setup.js.map +1 -0
  70. package/build/tests/integration/integration.test.js +226 -0
  71. package/build/tests/integration/integration.test.js.map +1 -0
  72. package/build/tests/integration/setup.js +82 -0
  73. package/build/tests/integration/setup.js.map +1 -0
  74. package/build/tests/live-api/actions.test.js +4 -0
  75. package/build/tests/live-api/actions.test.js.map +1 -0
  76. package/build/tests/live-api/blocks.test.js +116 -0
  77. package/build/tests/live-api/blocks.test.js.map +1 -0
  78. package/build/tests/live-api/events.test.js +97 -0
  79. package/build/tests/live-api/events.test.js.map +1 -0
  80. package/build/tests/live-api/networkState.test.js +27 -0
  81. package/build/tests/live-api/networkState.test.js.map +1 -0
  82. package/build/tests/live-network/live-network.test.js +144 -0
  83. package/build/tests/live-network/live-network.test.js.map +1 -0
  84. package/build/tests/live-network/setup.js +206 -0
  85. package/build/tests/live-network/setup.js.map +1 -0
  86. package/build/tests/resolvers.test.js +475 -0
  87. package/build/tests/resolvers.test.js.map +1 -0
  88. package/build/tests/services/actions-service/actions-service.test.js +124 -0
  89. package/build/tests/services/actions-service/actions-service.test.js.map +1 -0
  90. package/build/tests/services/blocks-service/blocks-service.test.js +348 -0
  91. package/build/tests/services/blocks-service/blocks-service.test.js.map +1 -0
  92. package/build/tests/services/events-service/events-service.test.js +185 -0
  93. package/build/tests/services/events-service/events-service.test.js.map +1 -0
  94. package/build/tests/test-helpers.js +11 -0
  95. package/build/tests/test-helpers.js.map +1 -0
  96. package/build/tests/unit/blockchain-utils.test.js +106 -0
  97. package/build/tests/unit/blockchain-utils.test.js.map +1 -0
  98. package/build/tests/unit/consensus.test.js +154 -0
  99. package/build/tests/unit/consensus.test.js.map +1 -0
  100. package/build/tests/unit/error-handling.test.js +52 -0
  101. package/build/tests/unit/error-handling.test.js.map +1 -0
  102. package/build/tests/utils.test.js +313 -0
  103. package/build/tests/utils.test.js.map +1 -0
  104. package/build/zkapp/contract.js +144 -0
  105. package/build/zkapp/contract.js.map +1 -0
  106. package/build/zkapp/utils.js +174 -0
  107. package/build/zkapp/utils.js.map +1 -0
  108. package/package.json +85 -0
  109. package/schema.graphql +221 -0
  110. package/src/blockchain/constants.ts +2 -0
  111. package/src/blockchain/types.ts +121 -0
  112. package/src/blockchain/utils.ts +54 -0
  113. package/src/consensus/mina-consensus.ts +137 -0
  114. package/src/context.ts +18 -0
  115. package/src/db/archive-node-adapter/archive-node-adapter.interface.ts +23 -0
  116. package/src/db/archive-node-adapter/archive-node-adapter.ts +101 -0
  117. package/src/db/sql/events-actions/queries.ts +490 -0
  118. package/src/db/sql/events-actions/types.ts +208 -0
  119. package/src/envionment.d.ts +18 -0
  120. package/src/errors/error.ts +20 -0
  121. package/src/index.ts +31 -0
  122. package/src/resolvers-types.ts +754 -0
  123. package/src/resolvers.ts +102 -0
  124. package/src/server/plugins.ts +56 -0
  125. package/src/server/server.ts +30 -0
  126. package/src/services/actions-service/actions-service.interface.ts +9 -0
  127. package/src/services/actions-service/actions-service.ts +195 -0
  128. package/src/services/blocks-service/blocks-service.interface.ts +11 -0
  129. package/src/services/blocks-service/blocks-service.ts +407 -0
  130. package/src/services/data-adapters/database-row-adapters.ts +261 -0
  131. package/src/services/events-service/events-service.interface.ts +6 -0
  132. package/src/services/events-service/events-service.ts +118 -0
  133. package/src/services/network-service/network-service.interface.ts +5 -0
  134. package/src/services/network-service/network-service.ts +53 -0
  135. package/src/tracing/jaeger-setup.ts +65 -0
  136. package/src/tracing/jaeger-tracing.ts +44 -0
  137. package/src/tracing/tracer.ts +52 -0
  138. package/tsconfig.json +104 -0
@@ -0,0 +1,438 @@
1
+ import { BlockStatusFilter } from '../../../blockchain/types.js';
2
+ import { BLOCK_RANGE_SIZE } from '../../../server/server.js';
3
+ function fullChainCTE(db_client, from, to) {
4
+ let toAsNum = to ? Number(to) : undefined;
5
+ let fromAsNum = from ? Number(from) : undefined;
6
+ if (fromAsNum) {
7
+ const maxRange = fromAsNum + BLOCK_RANGE_SIZE;
8
+ toAsNum = toAsNum ? Math.min(toAsNum, maxRange) : maxRange;
9
+ }
10
+ else if (toAsNum) {
11
+ fromAsNum = toAsNum - BLOCK_RANGE_SIZE;
12
+ }
13
+ return db_client `
14
+ RECURSIVE pending_chain AS (
15
+ (
16
+ SELECT
17
+ id, state_hash, parent_hash, parent_id, height, global_slot_since_genesis, global_slot_since_hard_fork, timestamp, chain_status, ledger_hash, last_vrf_output
18
+ FROM
19
+ blocks b
20
+ WHERE
21
+ height = (SELECT max(height) FROM blocks)
22
+ )
23
+ UNION ALL
24
+ SELECT
25
+ b.id, b.state_hash, b.parent_hash, b.parent_id, b.height, b.global_slot_since_genesis, b.global_slot_since_hard_fork, b.timestamp, b.chain_status, b.ledger_hash, b.last_vrf_output
26
+ FROM
27
+ blocks b
28
+ INNER JOIN pending_chain ON b.id = pending_chain.parent_id
29
+ AND pending_chain.id <> pending_chain.parent_id
30
+ AND pending_chain.chain_status <> 'canonical'
31
+ ),
32
+ full_chain AS (
33
+ SELECT
34
+ DISTINCT id, state_hash, parent_id, parent_hash, height, global_slot_since_genesis, global_slot_since_hard_fork, timestamp, chain_status, ledger_hash, (SELECT max(height) FROM blocks) - height AS distance_from_max_block_height, last_vrf_output
35
+ FROM
36
+ (
37
+ SELECT
38
+ id, state_hash, parent_id, parent_hash, height, global_slot_since_genesis, global_slot_since_hard_fork, timestamp, chain_status, ledger_hash, last_vrf_output
39
+ FROM
40
+ pending_chain
41
+ WHERE 1=1
42
+ ${fromAsNum
43
+ ? db_client `AND height >= ${fromAsNum} AND height < ${toAsNum}`
44
+ : db_client `AND height >= (
45
+ SELECT MAX(height)
46
+ FROM pending_chain
47
+ ) - ${BLOCK_RANGE_SIZE}`}
48
+ UNION ALL
49
+ SELECT
50
+ id, state_hash, parent_id, parent_hash, height, global_slot_since_genesis, global_slot_since_hard_fork, timestamp, chain_status, ledger_hash, last_vrf_output
51
+ FROM
52
+ blocks b
53
+ WHERE
54
+ chain_status = 'canonical'
55
+ ${fromAsNum
56
+ ? db_client `AND b.height >= ${fromAsNum} AND b.height < ${toAsNum}`
57
+ : db_client `AND b.height >= (
58
+ SELECT MAX(b2.height)
59
+ FROM blocks b2
60
+ ) - ${BLOCK_RANGE_SIZE}`}
61
+ ) AS full_chain
62
+ )
63
+ `;
64
+ }
65
+ function accountIdentifierCTE(db_client, address, tokenId) {
66
+ return db_client `
67
+ account_identifier AS (
68
+ SELECT
69
+ id AS requesting_zkapp_account_identifier_id
70
+ FROM
71
+ account_identifiers ai
72
+ WHERE
73
+ ai.public_key_id = (SELECT id FROM public_keys WHERE value = ${address})
74
+ AND
75
+ ai.token_id = (SELECT id FROM tokens WHERE value = ${tokenId})
76
+ )`;
77
+ }
78
+ function blocksAccessedCTE(db_client, status) {
79
+ return db_client `
80
+ blocks_accessed AS
81
+ (
82
+ SELECT
83
+ requesting_zkapp_account_identifier_id,
84
+ block_id,
85
+ account_identifier_id,
86
+ zkapp_id,
87
+ id AS account_access_id,
88
+ state_hash,
89
+ parent_hash,
90
+ height,
91
+ global_slot_since_genesis,
92
+ global_slot_since_hard_fork,
93
+ timestamp,
94
+ chain_status,
95
+ ledger_hash,
96
+ distance_from_max_block_height,
97
+ last_vrf_output
98
+ FROM
99
+ account_identifier ai
100
+ INNER JOIN accounts_accessed aa ON ai.requesting_zkapp_account_identifier_id = aa.account_identifier_id
101
+ INNER JOIN full_chain b ON aa.block_id = b.id
102
+ WHERE
103
+ 1 = 1
104
+ ${status === BlockStatusFilter.all
105
+ ? db_client ``
106
+ : db_client `AND chain_status = ${status.toLowerCase()}`}
107
+ )`;
108
+ }
109
+ function emittedZkAppCommandsCTE(db_client) {
110
+ return db_client `
111
+ emitted_zkapp_commands AS (
112
+ SELECT
113
+ blocks_accessed.requesting_zkapp_account_identifier_id,
114
+ blocks_accessed.block_id,
115
+ blocks_accessed.account_identifier_id,
116
+ blocks_accessed.zkapp_id,
117
+ blocks_accessed.account_access_id,
118
+ blocks_accessed.state_hash,
119
+ blocks_accessed.parent_hash,
120
+ blocks_accessed.height,
121
+ blocks_accessed.global_slot_since_genesis,
122
+ blocks_accessed.global_slot_since_hard_fork,
123
+ blocks_accessed.timestamp,
124
+ blocks_accessed.chain_status,
125
+ blocks_accessed.ledger_hash,
126
+ blocks_accessed.distance_from_max_block_height,
127
+ blocks_accessed.last_vrf_output,
128
+ zkcu.id AS zkapp_account_update_id,
129
+ bzkc.sequence_no AS sequence_number,
130
+ zkapp_fee_payer_body_id,
131
+ zkapp_account_updates_ids,
132
+ authorization_kind,
133
+ status,
134
+ memo,
135
+ hash,
136
+ body_id,
137
+ events_id,
138
+ actions_id
139
+ FROM
140
+ blocks_accessed
141
+ INNER JOIN blocks_zkapp_commands bzkc ON blocks_accessed.block_id = bzkc.block_id
142
+ INNER JOIN zkapp_commands zkc ON bzkc.zkapp_command_id = zkc.id
143
+ INNER JOIN zkapp_account_update zkcu ON zkcu.id = ANY(zkc.zkapp_account_updates_ids)
144
+ INNER JOIN zkapp_account_update_body zkcu_body ON zkcu_body.id = zkcu.body_id
145
+ AND zkcu_body.account_identifier_id = requesting_zkapp_account_identifier_id
146
+ WHERE
147
+ bzkc.status <> 'failed'
148
+ )`;
149
+ }
150
+ function emittedEventsCTE(db_client) {
151
+ return db_client `
152
+ emitted_events AS (
153
+ SELECT
154
+ emitted_zkapp_commands.requesting_zkapp_account_identifier_id,
155
+ emitted_zkapp_commands.block_id,
156
+ emitted_zkapp_commands.account_identifier_id,
157
+ emitted_zkapp_commands.zkapp_id,
158
+ emitted_zkapp_commands.account_access_id,
159
+ emitted_zkapp_commands.state_hash,
160
+ emitted_zkapp_commands.parent_hash,
161
+ emitted_zkapp_commands.height,
162
+ emitted_zkapp_commands.global_slot_since_genesis,
163
+ emitted_zkapp_commands.global_slot_since_hard_fork,
164
+ emitted_zkapp_commands.timestamp,
165
+ emitted_zkapp_commands.chain_status,
166
+ emitted_zkapp_commands.ledger_hash,
167
+ emitted_zkapp_commands.distance_from_max_block_height,
168
+ emitted_zkapp_commands.last_vrf_output,
169
+ emitted_zkapp_commands.zkapp_account_update_id,
170
+ emitted_zkapp_commands.sequence_number,
171
+ emitted_zkapp_commands.zkapp_fee_payer_body_id,
172
+ emitted_zkapp_commands.zkapp_account_updates_ids,
173
+ emitted_zkapp_commands.authorization_kind,
174
+ emitted_zkapp_commands.status,
175
+ emitted_zkapp_commands.memo,
176
+ emitted_zkapp_commands.hash,
177
+ emitted_zkapp_commands.body_id,
178
+ emitted_zkapp_commands.events_id,
179
+ emitted_zkapp_commands.actions_id,
180
+ zke.id AS account_update_event_id,
181
+ zke.element_ids AS event_element_ids,
182
+ zkfa.element_ids AS event_field_element_ids,
183
+ zkfa.id AS event_field_elements_id,
184
+ zkf.id AS field_id,
185
+ zkf.field AS field_value
186
+ FROM
187
+ emitted_zkapp_commands
188
+ INNER JOIN zkapp_events zke ON zke.id = emitted_zkapp_commands.events_id
189
+ INNER JOIN zkapp_field_array zkfa ON zkfa.id = ANY(zke.element_ids)
190
+ INNER JOIN zkapp_field zkf ON zkf.id = ANY(zkfa.element_ids)
191
+ )
192
+ `;
193
+ }
194
+ function emittedActionsCTE(db_client) {
195
+ return db_client `
196
+ emitted_actions AS (
197
+ SELECT
198
+ emitted_zkapp_commands.block_id,
199
+ emitted_zkapp_commands.zkapp_id,
200
+ emitted_zkapp_commands.state_hash,
201
+ emitted_zkapp_commands.parent_hash,
202
+ emitted_zkapp_commands.height,
203
+ emitted_zkapp_commands.global_slot_since_genesis,
204
+ emitted_zkapp_commands.global_slot_since_hard_fork,
205
+ emitted_zkapp_commands.timestamp,
206
+ emitted_zkapp_commands.chain_status,
207
+ emitted_zkapp_commands.ledger_hash,
208
+ emitted_zkapp_commands.distance_from_max_block_height,
209
+ emitted_zkapp_commands.last_vrf_output,
210
+ emitted_zkapp_commands.zkapp_account_update_id,
211
+ emitted_zkapp_commands.sequence_number,
212
+ emitted_zkapp_commands.zkapp_fee_payer_body_id,
213
+ emitted_zkapp_commands.zkapp_account_updates_ids,
214
+ emitted_zkapp_commands.authorization_kind,
215
+ emitted_zkapp_commands.status,
216
+ emitted_zkapp_commands.memo,
217
+ emitted_zkapp_commands.hash,
218
+ emitted_zkapp_commands.body_id,
219
+ emitted_zkapp_commands.events_id,
220
+ emitted_zkapp_commands.actions_id,
221
+ zke.id AS account_update_event_id,
222
+ zke.element_ids AS event_element_ids,
223
+ zkfa.element_ids AS event_field_element_ids,
224
+ zkfa.id AS event_field_elements_id,
225
+ zkf.id AS field_id,
226
+ zkf.field AS field_value
227
+ FROM
228
+ emitted_zkapp_commands
229
+ INNER JOIN zkapp_events zke ON zke.id = emitted_zkapp_commands.actions_id
230
+ INNER JOIN zkapp_field_array zkfa ON zkfa.id = ANY(zke.element_ids)
231
+ INNER JOIN zkapp_field zkf ON zkf.id = ANY(zkfa.element_ids)
232
+ )
233
+ `;
234
+ }
235
+ function emittedActionStateCTE(db_client, fromActionState, endActionState) {
236
+ return db_client `
237
+ emitted_action_state AS (
238
+ SELECT
239
+ zkf0.field AS action_state_value1,
240
+ zkf1.field AS action_state_value2,
241
+ zkf2.field AS action_state_value3,
242
+ zkf3.field AS action_state_value4,
243
+ zkf4.field AS action_state_value5,
244
+ emitted_actions.last_vrf_output,
245
+ emitted_actions.block_id,
246
+ emitted_actions.zkapp_id,
247
+ emitted_actions.state_hash,
248
+ emitted_actions.parent_hash,
249
+ emitted_actions.height,
250
+ emitted_actions.global_slot_since_genesis,
251
+ emitted_actions.global_slot_since_hard_fork,
252
+ emitted_actions.timestamp,
253
+ emitted_actions.chain_status,
254
+ emitted_actions.ledger_hash,
255
+ emitted_actions.distance_from_max_block_height,
256
+ emitted_actions.last_vrf_output,
257
+ emitted_actions.zkapp_account_update_id,
258
+ emitted_actions.sequence_number,
259
+ emitted_actions.zkapp_fee_payer_body_id,
260
+ emitted_actions.zkapp_account_updates_ids,
261
+ emitted_actions.authorization_kind,
262
+ emitted_actions.status,
263
+ emitted_actions.memo,
264
+ emitted_actions.hash,
265
+ emitted_actions.body_id,
266
+ emitted_actions.events_id,
267
+ emitted_actions.actions_id,
268
+ emitted_actions.account_update_event_id,
269
+ emitted_actions.event_element_ids,
270
+ emitted_actions.event_field_element_ids,
271
+ emitted_actions.event_field_elements_id,
272
+ emitted_actions.field_id,
273
+ emitted_actions.field_value
274
+ FROM
275
+ emitted_actions
276
+ INNER JOIN zkapp_accounts zkacc ON zkacc.id = emitted_actions.zkapp_id
277
+ INNER JOIN zkapp_action_states zks ON zks.id = zkacc.action_state_id
278
+ INNER JOIN zkapp_field zkf0 ON zkf0.id = zks.element0
279
+ INNER JOIN zkapp_field zkf1 ON zkf1.id = zks.element1
280
+ INNER JOIN zkapp_field zkf2 ON zkf2.id = zks.element2
281
+ INNER JOIN zkapp_field zkf3 ON zkf3.id = zks.element3
282
+ INNER JOIN zkapp_field zkf4 ON zkf4.id = zks.element4
283
+ WHERE
284
+ 1 = 1
285
+ ${fromActionState
286
+ ? db_client `AND zkf0.id >= (SELECT id FROM zkapp_field WHERE field = ${fromActionState})`
287
+ : db_client ``}
288
+ ${endActionState
289
+ ? db_client `AND zkf0.id <= (SELECT id FROM zkapp_field WHERE field = ${endActionState})`
290
+ : db_client ``}
291
+ )`;
292
+ }
293
+ export function getEventsQuery(db_client, address, tokenId, status, to, from) {
294
+ return db_client `
295
+ WITH
296
+ ${fullChainCTE(db_client, from, to)},
297
+ ${accountIdentifierCTE(db_client, address, tokenId)},
298
+ ${blocksAccessedCTE(db_client, status)},
299
+ ${emittedZkAppCommandsCTE(db_client)},
300
+ ${emittedEventsCTE(db_client)}
301
+ SELECT
302
+ last_vrf_output,
303
+ block_id,
304
+ zkapp_id,
305
+ state_hash,
306
+ parent_hash,
307
+ height,
308
+ global_slot_since_genesis,
309
+ global_slot_since_hard_fork,
310
+ timestamp,
311
+ chain_status,
312
+ ledger_hash,
313
+ distance_from_max_block_height,
314
+ last_vrf_output,
315
+ zkapp_account_update_id,
316
+ sequence_number,
317
+ zkapp_fee_payer_body_id,
318
+ zkapp_account_updates_ids,
319
+ authorization_kind,
320
+ status,
321
+ memo,
322
+ hash,
323
+ body_id,
324
+ events_id,
325
+ actions_id,
326
+ account_update_event_id,
327
+ event_element_ids,
328
+ event_field_element_ids,
329
+ event_field_elements_id,
330
+ field_id,
331
+ field_value
332
+ FROM emitted_events
333
+ `;
334
+ }
335
+ export function getActionsQuery(db_client, address, tokenId, status, to, from, fromActionState, endActionState) {
336
+ return db_client `
337
+ WITH
338
+ ${fullChainCTE(db_client, from, to)},
339
+ ${accountIdentifierCTE(db_client, address, tokenId)},
340
+ ${blocksAccessedCTE(db_client, status)},
341
+ ${emittedZkAppCommandsCTE(db_client)},
342
+ ${emittedActionsCTE(db_client)},
343
+ ${emittedActionStateCTE(db_client, fromActionState, endActionState)}
344
+ SELECT *
345
+ FROM emitted_action_state
346
+ `;
347
+ }
348
+ export function getNetworkStateQuery(db_client) {
349
+ return db_client `
350
+ WITH max_heights AS (
351
+ SELECT
352
+ chain_status,
353
+ MAX(height) AS max_height
354
+ FROM blocks
355
+ WHERE chain_status IN ('canonical', 'pending')
356
+ GROUP BY chain_status
357
+ )
358
+ SELECT b.*
359
+ FROM blocks b
360
+ JOIN max_heights mh
361
+ ON b.chain_status = mh.chain_status
362
+ AND b.height = mh.max_height;
363
+ `;
364
+ }
365
+ export function checkActionState(db_client, actionState) {
366
+ return db_client `
367
+ SELECT field FROM zkapp_field WHERE field = ${actionState}
368
+ `;
369
+ }
370
+ export function getTables(db_client) {
371
+ return db_client `
372
+ SELECT tablename FROM pg_catalog.pg_tables where schemaname='public';
373
+ `;
374
+ }
375
+ export const USED_TABLES = [
376
+ 'blocks',
377
+ 'account_identifiers',
378
+ 'accounts_accessed',
379
+ 'blocks_zkapp_commands',
380
+ 'zkapp_commands',
381
+ 'zkapp_account_update',
382
+ 'zkapp_account_update_body',
383
+ 'zkapp_events',
384
+ 'zkapp_field_array',
385
+ 'zkapp_field',
386
+ 'zkapp_verification_key_hashes',
387
+ 'zkapp_verification_keys',
388
+ 'zkapp_accounts',
389
+ 'zkapp_action_states',
390
+ ];
391
+ export function getZkappsWithPendingEventsQuery(db_client) {
392
+ return db_client `
393
+ WITH RECURSIVE pending_chain(id, parent_id, chain_status) AS (
394
+ -- start at the tip
395
+ SELECT id, parent_id, chain_status
396
+ FROM blocks
397
+ WHERE height = (SELECT MAX(height) FROM blocks)
398
+
399
+ UNION ALL
400
+
401
+ -- walk back until we re-join the canonical branch
402
+ SELECT b.id, b.parent_id, b.chain_status
403
+ FROM blocks b
404
+ JOIN pending_chain pc
405
+ ON b.id = pc.parent_id
406
+ WHERE pc.id <> pc.parent_id
407
+ AND pc.chain_status <> 'canonical'
408
+ )
409
+ SELECT DISTINCT
410
+ pk.value AS public_key
411
+ FROM
412
+ pending_chain pc
413
+
414
+ -- only commands in this block that didn’t fail
415
+ JOIN blocks_zkapp_commands bzc
416
+ ON bzc.block_id = pc.id
417
+ AND bzc.status <> 'failed'
418
+
419
+ -- get the command, then unwind its array of account-update IDs
420
+ JOIN zkapp_commands zkc
421
+ ON zkc.id = bzc.zkapp_command_id
422
+ JOIN LATERAL UNNEST(zkc.zkapp_account_updates_ids) AS upd(id) ON TRUE
423
+
424
+ -- pick up the body, but only if it actually emitted events
425
+ JOIN zkapp_account_update au
426
+ ON au.id = upd.id
427
+ JOIN zkapp_account_update_body aub
428
+ ON aub.id = au.body_id
429
+ AND aub.events_id IS NOT NULL
430
+
431
+ -- map back to the account’s public key
432
+ JOIN account_identifiers ai
433
+ ON ai.id = aub.account_identifier_id
434
+ JOIN public_keys pk
435
+ ON pk.id = ai.public_key_id;
436
+ `;
437
+ }
438
+ //# sourceMappingURL=queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../../../src/db/sql/events-actions/queries.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/db/sql/events-actions/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ import { GraphQLError } from 'graphql';
2
+ export { throwGraphQLError, throwActionStateError, throwBlockRangeError };
3
+ function throwGraphQLError(message, code, status) {
4
+ throw new GraphQLError(message, {
5
+ extensions: {
6
+ code,
7
+ status,
8
+ },
9
+ });
10
+ }
11
+ function throwActionStateError(message) {
12
+ throwGraphQLError(message, 'ACTION_STATE_NOT_FOUND', 400);
13
+ }
14
+ function throwBlockRangeError(message) {
15
+ throwGraphQLError(message, 'BLOCK_RANGE_ERROR', 400);
16
+ }
17
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../../../src/errors/error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,CAAC;AAE1E,SAAS,iBAAiB,CAAC,OAAe,EAAE,IAAa,EAAE,MAAe;IACxE,MAAM,IAAI,YAAY,CAAC,OAAO,EAAE;QAC9B,UAAU,EAAE;YACV,IAAI;YACJ,MAAM;SACP;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAe;IAC5C,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,EAAE,GAAG,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAe;IAC3C,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,EAAE,GAAG,CAAC,CAAC;AACvD,CAAC"}
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env node
2
+ import { buildContext } from './context.js';
3
+ import { buildServer } from './server/server.js';
4
+ import { buildPlugins } from './server/plugins.js';
5
+ const PORT = process.env.PORT || 8080;
6
+ (async function main() {
7
+ try {
8
+ const context = await buildContext(process.env.PG_CONN);
9
+ const plugins = await buildPlugins();
10
+ const server = buildServer(context, plugins);
11
+ server.listen(PORT, () => {
12
+ console.info(`Server is running on port: ${PORT}`);
13
+ });
14
+ ['SIGINT', 'SIGTERM', 'SIGQUIT'].forEach((signal) => {
15
+ process.on(signal, () => server.close());
16
+ });
17
+ server.on('close', async () => {
18
+ await context.db_client.close();
19
+ process.exit(0);
20
+ });
21
+ }
22
+ catch (error) {
23
+ console.error('An error occurred:', error);
24
+ process.exit(1);
25
+ }
26
+ })();
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;AAEtC,CAAC,KAAK,UAAU,IAAI;IAClB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,MAAM,YAAY,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE7C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;YACvB,OAAO,CAAC,IAAI,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAClD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YAC5B,MAAM,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { BlockStatusFilter } from './blockchain/types.js';
2
+ export var BlockSortByInput;
3
+ (function (BlockSortByInput) {
4
+ BlockSortByInput["BlockheightAsc"] = "BLOCKHEIGHT_ASC";
5
+ BlockSortByInput["BlockheightDesc"] = "BLOCKHEIGHT_DESC";
6
+ })(BlockSortByInput || (BlockSortByInput = {}));
7
+ export { BlockStatusFilter };
8
+ //# sourceMappingURL=resolvers-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolvers-types.js","sourceRoot":"","sources":["../../src/resolvers-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AA8H1D,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,sDAAkC,CAAA;IAClC,wDAAoC,CAAA;AACtC,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,67 @@
1
+ import { makeExecutableSchema } from '@graphql-tools/schema';
2
+ import { visit, print, parse } from 'graphql';
3
+ import fs from 'fs';
4
+ import path from 'path';
5
+ import { fileURLToPath } from 'url';
6
+ import { TracingState, setSpanNameFromGraphQLContext, } from './tracing/tracer.js';
7
+ const __filename = fileURLToPath(import.meta.url);
8
+ const __dirname = path.dirname(__filename);
9
+ const schemaPath = path.resolve(__dirname, '../../schema.graphql');
10
+ const fullResolvers = {
11
+ Query: {
12
+ events: async (_, { input }, context) => {
13
+ const graphQLSpan = setSpanNameFromGraphQLContext(context, 'events.graphql');
14
+ return context.db_client.getEvents(input, {
15
+ tracingState: new TracingState(graphQLSpan),
16
+ });
17
+ },
18
+ actions: async (_, { input }, context) => {
19
+ const graphQLSpan = setSpanNameFromGraphQLContext(context, 'actions.graphql');
20
+ return context.db_client.getActions(input, {
21
+ tracingState: new TracingState(graphQLSpan),
22
+ });
23
+ },
24
+ networkState: async (_, __, context) => {
25
+ const graphQLSpan = setSpanNameFromGraphQLContext(context, 'networkState.graphql');
26
+ return context.db_client.getNetworkState({
27
+ tracingState: new TracingState(graphQLSpan),
28
+ });
29
+ },
30
+ blocks: async (_, { query, limit, sortBy }, context) => {
31
+ const graphQLSpan = setSpanNameFromGraphQLContext(context, 'blocks.graphql');
32
+ return context.db_client.getBlocks(query, limit, sortBy, {
33
+ tracingState: new TracingState(graphQLSpan),
34
+ });
35
+ },
36
+ },
37
+ };
38
+ let resolvers = fullResolvers;
39
+ let typeDefs = undefined;
40
+ if (process.env.ENABLED_QUERIES !== undefined) {
41
+ const enabledQueries = process.env.ENABLED_QUERIES.split(',').map((q) => q.trim());
42
+ if (enabledQueries.length > 0) {
43
+ resolvers = {
44
+ Query: Object.fromEntries(Object.entries(fullResolvers.Query || {}).filter(([queryName]) => enabledQueries.includes(queryName))),
45
+ };
46
+ const typeDefsString = fs.readFileSync(schemaPath, 'utf-8');
47
+ const typeDefsAst = parse(typeDefsString);
48
+ const modifiedAst = visit(typeDefsAst, {
49
+ ObjectTypeDefinition(node) {
50
+ if (node.name.value === 'Query') {
51
+ return {
52
+ ...node,
53
+ fields: node.fields?.filter((field) => enabledQueries.includes(field.name.value)),
54
+ };
55
+ }
56
+ return node;
57
+ },
58
+ });
59
+ typeDefs = print(modifiedAst);
60
+ }
61
+ }
62
+ const schema = makeExecutableSchema({
63
+ resolvers: [resolvers],
64
+ typeDefs: typeDefs || fs.readFileSync(schemaPath, 'utf-8'),
65
+ });
66
+ export { resolvers, schema };
67
+ //# sourceMappingURL=resolvers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolvers.js","sourceRoot":"","sources":["../../src/resolvers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { useLogger } from '@envelop/core';
2
+ import { useGraphQlJit } from '@envelop/graphql-jit';
3
+ import { useDisableIntrospection } from '@envelop/disable-introspection';
4
+ import { useOpenTelemetry } from '@envelop/opentelemetry';
5
+ import { inspect } from 'node:util';
6
+ import { initJaegerProvider } from '../tracing/jaeger-tracing.js';
7
+ export { buildPlugins };
8
+ async function buildPlugins() {
9
+ const plugins = [];
10
+ plugins.push(useGraphQlJit());
11
+ if (process.env.ENABLE_LOGGING) {
12
+ const provider = await initJaegerProvider();
13
+ plugins.push(useOpenTelemetry({
14
+ resolvers: true,
15
+ variables: true,
16
+ result: true,
17
+ }, provider));
18
+ }
19
+ if (!process.env.ENABLE_INTROSPECTION) {
20
+ plugins.push(useDisableIntrospection());
21
+ }
22
+ plugins.push(useLogger({
23
+ logFn: (eventName, args) => {
24
+ if (args?.result?.errors) {
25
+ console.debug(eventName, inspect(args.args.contextValue.params, {
26
+ showHidden: false,
27
+ depth: null,
28
+ colors: true,
29
+ }), inspect(args.result.errors, {
30
+ showHidden: false,
31
+ depth: null,
32
+ colors: true,
33
+ }));
34
+ }
35
+ },
36
+ }));
37
+ return plugins;
38
+ }
39
+ //# sourceMappingURL=plugins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../../src/server/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,CAAC;AAExB,KAAK,UAAU,YAAY;IAEzB,MAAM,OAAO,GAAU,EAAE,CAAC;IAC1B,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IAE9B,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,MAAM,kBAAkB,EAAE,CAAC;QAC5C,OAAO,CAAC,IAAI,CACV,gBAAgB,CACd;YACE,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,IAAI;SACb,EACD,QAAQ,CACT,CACF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,CAAC,IAAI,CACV,SAAS,CAAC;QACR,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE;YACzB,IAAI,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;gBACzB,OAAO,CAAC,KAAK,CACX,SAAS,EACT,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;oBACrC,UAAU,EAAE,KAAK;oBACjB,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,IAAI;iBACb,CAAC,EACF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;oBAC1B,UAAU,EAAE,KAAK;oBACjB,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,IAAI;iBACb,CAAC,CACH,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CACH,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { createYoga } from 'graphql-yoga';
2
+ import { createServer } from 'http';
3
+ import { schema } from '../resolvers.js';
4
+ export { BLOCK_RANGE_SIZE, ENABLE_BLOCK_TRANSACTION_DETAILS, buildServer };
5
+ const LOG_LEVEL = process.env.LOG_LEVEL || 'info';
6
+ const BLOCK_RANGE_SIZE = Number(process.env.BLOCK_RANGE_SIZE) || 10000;
7
+ const ENABLE_BLOCK_TRANSACTION_DETAILS = process.env.ENABLE_BLOCK_TRANSACTION_DETAILS === 'true';
8
+ function buildServer(context, plugins) {
9
+ const yoga = createYoga({
10
+ schema,
11
+ logging: LOG_LEVEL,
12
+ graphqlEndpoint: '/',
13
+ landingPage: false,
14
+ healthCheckEndpoint: '/healthcheck',
15
+ graphiql: process.env.ENABLE_GRAPHIQL === 'true' ? true : false,
16
+ plugins,
17
+ cors: {
18
+ origin: process.env.CORS_ORIGIN ?? '*',
19
+ methods: ['GET', 'POST'],
20
+ },
21
+ context,
22
+ });
23
+ return createServer(yoga);
24
+ }
25
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/server/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAY,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzC,OAAO,EAAE,gBAAgB,EAAE,gCAAgC,EAAE,WAAW,EAAE,CAAC;AAE3E,MAAM,SAAS,GAAI,OAAO,CAAC,GAAG,CAAC,SAAsB,IAAI,MAAM,CAAC;AAChE,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC;AACvE,MAAM,gCAAgC,GACpC,OAAO,CAAC,GAAG,CAAC,gCAAgC,KAAK,MAAM,CAAC;AAE1D,SAAS,WAAW,CAAC,OAAuB,EAAE,OAAiB;IAC7D,MAAM,IAAI,GAAG,UAAU,CAAiB;QACtC,MAAM;QACN,OAAO,EAAE,SAAS;QAClB,eAAe,EAAE,GAAG;QACpB,WAAW,EAAE,KAAK;QAClB,mBAAmB,EAAE,cAAc;QACnC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;QAC/D,OAAO;QACP,IAAI,EAAE;YACJ,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG;YACtC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;SACzB;QACD,OAAO;KACR,CAAC,CAAC;IACH,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=actions-service.interface.js.map