@o1-labs/mina-archive-node-graphql 0.0.6 → 2.0.0
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.
- package/LICENSE +201 -0
- package/README.md +92 -268
- package/build/src/blockchain/utils.js.map +1 -1
- package/build/src/config.js +86 -0
- package/build/src/config.js.map +1 -0
- package/build/src/db/archive-node-adapter/archive-node-adapter.js +29 -2
- package/build/src/db/archive-node-adapter/archive-node-adapter.js.map +1 -1
- package/build/src/db/archive-node-adapter/postgres-options.js +35 -0
- package/build/src/db/archive-node-adapter/postgres-options.js.map +1 -0
- package/build/src/db/sql/best-chain.js +5 -0
- package/build/src/db/sql/best-chain.js.map +1 -0
- package/build/src/db/sql/events-actions/queries.js +102 -21
- package/build/src/db/sql/events-actions/queries.js.map +1 -1
- package/build/src/db/sql/verification-key-updates/queries.js +100 -0
- package/build/src/db/sql/verification-key-updates/queries.js.map +1 -0
- package/build/src/db/sql/zkapp-commands/queries.js +363 -0
- package/build/src/db/sql/zkapp-commands/queries.js.map +1 -0
- package/build/src/db/sql/zkapp-commands/types.js +2 -0
- package/build/src/db/sql/zkapp-commands/types.js.map +1 -0
- package/build/src/errors/error.js +4 -1
- package/build/src/errors/error.js.map +1 -1
- package/build/src/index.js +44 -7
- package/build/src/index.js.map +1 -1
- package/build/src/resolvers.js +42 -23
- package/build/src/resolvers.js.map +1 -1
- package/build/src/schema-version.js +2 -0
- package/build/src/schema-version.js.map +1 -0
- package/build/src/server/cors.js +41 -0
- package/build/src/server/cors.js.map +1 -0
- package/build/src/server/graceful-shutdown.js +42 -0
- package/build/src/server/graceful-shutdown.js.map +1 -0
- package/build/src/server/graphql-armor.js +39 -0
- package/build/src/server/graphql-armor.js.map +1 -0
- package/build/src/server/logger.js +45 -0
- package/build/src/server/logger.js.map +1 -0
- package/build/src/server/metrics.js +72 -0
- package/build/src/server/metrics.js.map +1 -0
- package/build/src/server/plugins.js +31 -15
- package/build/src/server/plugins.js.map +1 -1
- package/build/src/server/rate-limit.js +143 -0
- package/build/src/server/rate-limit.js.map +1 -0
- package/build/src/server/readiness.js +45 -0
- package/build/src/server/readiness.js.map +1 -0
- package/build/src/server/request-logging.js +58 -0
- package/build/src/server/request-logging.js.map +1 -0
- package/build/src/server/server.js +38 -13
- package/build/src/server/server.js.map +1 -1
- package/build/src/services/actions-service/actions-service.js +26 -15
- package/build/src/services/actions-service/actions-service.js.map +1 -1
- package/build/src/services/blocks-service/blocks-service.js +10 -9
- package/build/src/services/blocks-service/blocks-service.js.map +1 -1
- package/build/src/services/network-service/network-service.js +17 -9
- package/build/src/services/network-service/network-service.js.map +1 -1
- package/build/src/services/verification-key-updates-service/verification-key-updates-service.interface.js +2 -0
- package/build/src/services/verification-key-updates-service/verification-key-updates-service.interface.js.map +1 -0
- package/build/src/services/verification-key-updates-service/verification-key-updates-service.js +41 -0
- package/build/src/services/verification-key-updates-service/verification-key-updates-service.js.map +1 -0
- package/build/src/services/zkapp-commands-service/zkapp-commands-service.interface.js +2 -0
- package/build/src/services/zkapp-commands-service/zkapp-commands-service.interface.js.map +1 -0
- package/build/src/services/zkapp-commands-service/zkapp-commands-service.js +115 -0
- package/build/src/services/zkapp-commands-service/zkapp-commands-service.js.map +1 -0
- package/build/src/tracing/jaeger-tracing.js +2 -1
- package/build/src/tracing/jaeger-tracing.js.map +1 -1
- package/build/tests/devnet-dump/action-state-invariants.js +165 -0
- package/build/tests/devnet-dump/action-state-invariants.js.map +1 -0
- package/build/tests/devnet-dump/devnet-dump.test.js +24 -10
- package/build/tests/devnet-dump/devnet-dump.test.js.map +1 -1
- package/build/tests/devnet-dump/setup.js +63 -17
- package/build/tests/devnet-dump/setup.js.map +1 -1
- package/build/tests/integration/action-state-ordering.test.js +139 -0
- package/build/tests/integration/action-state-ordering.test.js.map +1 -0
- package/build/tests/integration/action-state-setup.js +48 -0
- package/build/tests/integration/action-state-setup.js.map +1 -0
- package/build/tests/integration/consensus-vs-chain.test.js +81 -0
- package/build/tests/integration/consensus-vs-chain.test.js.map +1 -0
- package/build/tests/integration/integration.test.js +166 -2
- package/build/tests/integration/integration.test.js.map +1 -1
- package/build/tests/integration/postgres-timeout.test.js +92 -0
- package/build/tests/integration/postgres-timeout.test.js.map +1 -0
- package/build/tests/integration/setup.js +58 -1
- package/build/tests/integration/setup.js.map +1 -1
- package/build/tests/integration/verification-key-setup.js +49 -0
- package/build/tests/integration/verification-key-setup.js.map +1 -0
- package/build/tests/integration/verification-key-updates.test.js +159 -0
- package/build/tests/integration/verification-key-updates.test.js.map +1 -0
- package/build/tests/live-api/events.test.js +11 -7
- package/build/tests/live-api/events.test.js.map +1 -1
- package/build/tests/live-api/networkState.test.js +1 -0
- package/build/tests/live-api/networkState.test.js.map +1 -1
- package/build/tests/live-network/live-network.test.js +1 -0
- package/build/tests/live-network/live-network.test.js.map +1 -1
- package/build/tests/resolvers.test.js +65 -37
- package/build/tests/resolvers.test.js.map +1 -1
- package/build/tests/services/verification-key-updates-service/verification-key-updates-service.test.js +35 -0
- package/build/tests/services/verification-key-updates-service/verification-key-updates-service.test.js.map +1 -0
- package/build/tests/services/zkapp-commands-service/zkapp-commands-service.test.js +159 -0
- package/build/tests/services/zkapp-commands-service/zkapp-commands-service.test.js.map +1 -0
- package/build/tests/test-helpers.js +15 -0
- package/build/tests/test-helpers.js.map +1 -1
- package/build/tests/unit/best-chain-anchor.test.js +70 -0
- package/build/tests/unit/best-chain-anchor.test.js.map +1 -0
- package/build/tests/unit/config.test.js +106 -0
- package/build/tests/unit/config.test.js.map +1 -0
- package/build/tests/unit/cors.test.js +95 -0
- package/build/tests/unit/cors.test.js.map +1 -0
- package/build/tests/unit/error-masking.test.js +119 -0
- package/build/tests/unit/error-masking.test.js.map +1 -0
- package/build/tests/unit/graceful-shutdown.test.js +99 -0
- package/build/tests/unit/graceful-shutdown.test.js.map +1 -0
- package/build/tests/unit/graphql-armor.test.js +121 -0
- package/build/tests/unit/graphql-armor.test.js.map +1 -0
- package/build/tests/unit/logging.test.js +120 -0
- package/build/tests/unit/logging.test.js.map +1 -0
- package/build/tests/unit/metrics.test.js +114 -0
- package/build/tests/unit/metrics.test.js.map +1 -0
- package/build/tests/unit/network-service.test.js +66 -0
- package/build/tests/unit/network-service.test.js.map +1 -0
- package/build/tests/unit/postgres-options.test.js +56 -0
- package/build/tests/unit/postgres-options.test.js.map +1 -0
- package/build/tests/unit/rate-limit.test.js +271 -0
- package/build/tests/unit/rate-limit.test.js.map +1 -0
- package/build/tests/unit/readiness.test.js +75 -0
- package/build/tests/unit/readiness.test.js.map +1 -0
- package/build/tests/unit/schema-nullability.test.js +40 -0
- package/build/tests/unit/schema-nullability.test.js.map +1 -0
- package/build/tests/unit/schema-version.test.js +48 -0
- package/build/tests/unit/schema-version.test.js.map +1 -0
- package/build/tests/unit/yoga-http-contract.test.js +30 -0
- package/build/tests/unit/yoga-http-contract.test.js.map +1 -0
- package/build/tests/unit/zkapp-commands-gating.test.js +38 -0
- package/build/tests/unit/zkapp-commands-gating.test.js.map +1 -0
- package/build/zkapp/utils.js +2 -0
- package/build/zkapp/utils.js.map +1 -1
- package/package.json +33 -14
- package/schema.graphql +126 -8
- package/src/blockchain/types.ts +65 -1
- package/src/blockchain/utils.ts +26 -2
- package/src/config.ts +133 -0
- package/src/db/archive-node-adapter/archive-node-adapter.interface.ts +26 -3
- package/src/db/archive-node-adapter/archive-node-adapter.ts +65 -2
- package/src/db/archive-node-adapter/postgres-options.ts +90 -0
- package/src/db/sql/best-chain.ts +34 -0
- package/src/db/sql/events-actions/queries.ts +168 -24
- package/src/db/sql/verification-key-updates/queries.ts +132 -0
- package/src/db/sql/zkapp-commands/queries.ts +406 -0
- package/src/db/sql/zkapp-commands/types.ts +43 -0
- package/src/envionment.d.ts +20 -0
- package/src/errors/error.ts +17 -1
- package/src/index.ts +64 -7
- package/src/resolvers-types.ts +311 -24
- package/src/resolvers.ts +70 -34
- package/src/schema-version.ts +24 -0
- package/src/server/cors.ts +97 -0
- package/src/server/graceful-shutdown.ts +76 -0
- package/src/server/graphql-armor.ts +78 -0
- package/src/server/logger.ts +72 -0
- package/src/server/metrics.ts +104 -0
- package/src/server/plugins.ts +53 -19
- package/src/server/rate-limit.ts +274 -0
- package/src/server/readiness.ts +78 -0
- package/src/server/request-logging.ts +83 -0
- package/src/server/server.ts +70 -15
- package/src/services/actions-service/actions-service.ts +87 -24
- package/src/services/blocks-service/blocks-service.ts +16 -14
- package/src/services/network-service/network-service.ts +30 -12
- package/src/services/verification-key-updates-service/verification-key-updates-service.interface.ts +9 -0
- package/src/services/verification-key-updates-service/verification-key-updates-service.ts +72 -0
- package/src/services/zkapp-commands-service/zkapp-commands-service.interface.ts +9 -0
- package/src/services/zkapp-commands-service/zkapp-commands-service.ts +181 -0
- package/src/tracing/jaeger-tracing.ts +2 -1
- package/build/tests/consensus/run-compare.js +0 -40
- package/build/tests/consensus/run-compare.js.map +0 -1
- package/build/tests/consensus/select-consensus-precomputed.js +0 -80
- package/build/tests/consensus/select-consensus-precomputed.js.map +0 -1
- package/build/tests/consensus/types.js +0 -15
- package/build/tests/consensus/types.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-state-invariants.js","sourceRoot":"","sources":["../../../tests/devnet-dump/action-state-invariants.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ import { EventsService } from '../../src/services/events-service/events-service.
|
|
|
6
6
|
import { ActionsService } from '../../src/services/actions-service/actions-service.js';
|
|
7
7
|
import { TracingState } from '../../src/tracing/tracer.js';
|
|
8
8
|
import { setupTestDatabase, teardownTestDatabase, createTestClient, } from './setup.js';
|
|
9
|
+
import { describeActionStateInvariants } from './action-state-invariants.js';
|
|
9
10
|
const nullOptions = { tracingState: new TracingState(undefined) };
|
|
10
11
|
let client;
|
|
11
12
|
let blocksService;
|
|
@@ -22,6 +23,7 @@ before(async () => {
|
|
|
22
23
|
eventsService = new EventsService(client);
|
|
23
24
|
actionsService = new ActionsService(client);
|
|
24
25
|
const state = await networkService.getNetworkState(nullOptions);
|
|
26
|
+
assert.ok(state.maxBlockHeight, 'devnet dump must have at least one indexed block');
|
|
25
27
|
maxCanonicalHeight = state.maxBlockHeight.canonicalMaxBlockHeight;
|
|
26
28
|
const minRow = await client `SELECT MIN(height) as min_height FROM blocks WHERE chain_status = 'canonical'`;
|
|
27
29
|
minHeight = Number(minRow[0].min_height);
|
|
@@ -32,6 +34,12 @@ after(async () => {
|
|
|
32
34
|
await client.end();
|
|
33
35
|
await teardownTestDatabase();
|
|
34
36
|
});
|
|
37
|
+
const MINA_EPOCH_START = Date.UTC(2020, 0, 1);
|
|
38
|
+
function assertPlausibleBlockTime(date, context) {
|
|
39
|
+
assert.ok(!Number.isNaN(date.getTime()), `${context}: dateTime should parse, got ${date}`);
|
|
40
|
+
assert.ok(date.getTime() >= MINA_EPOCH_START, `${context}: dateTime should be after 2020, got ${date.toISOString()}`);
|
|
41
|
+
assert.ok(date.getTime() <= Date.now() + 60 * 60 * 1000, `${context}: dateTime should not be in the future, got ${date.toISOString()}`);
|
|
42
|
+
}
|
|
35
43
|
describe('NetworkState (devnet dump)', () => {
|
|
36
44
|
test('returns valid max block heights', async () => {
|
|
37
45
|
const state = await networkService.getNetworkState(nullOptions);
|
|
@@ -57,7 +65,7 @@ describe('Oldest blocks (devnet dump)', () => {
|
|
|
57
65
|
const blocks = await blocksService.getBlocks({ blockHeight_gte: minHeight, blockHeight_lt: minHeight + 1, canonical: true }, 1, null, nullOptions);
|
|
58
66
|
assert.strictEqual(blocks.length, 1);
|
|
59
67
|
const date = new Date(blocks[0].dateTime);
|
|
60
|
-
|
|
68
|
+
assertPlausibleBlockTime(date, `genesis (height ${minHeight})`);
|
|
61
69
|
});
|
|
62
70
|
test('block details for very old block (height ~10)', async () => {
|
|
63
71
|
const targetHeight = minHeight + 10;
|
|
@@ -177,7 +185,7 @@ describe(`Quickcheck: ${RANDOM_BLOCK_COUNT} random individual blocks (devnet dum
|
|
|
177
185
|
assert.ok(block.creator?.startsWith('B62q'), `height ${height}: creator should be B62, got ${block.creator}`);
|
|
178
186
|
const date = new Date(block.dateTime);
|
|
179
187
|
assert.ok(!isNaN(date.getTime()), `height ${height}: invalid dateTime ${block.dateTime}`);
|
|
180
|
-
|
|
188
|
+
assertPlausibleBlockTime(date, `height ${height}`);
|
|
181
189
|
assert.ok(block.transactions, `height ${height}: transactions missing`);
|
|
182
190
|
}
|
|
183
191
|
});
|
|
@@ -220,10 +228,13 @@ describe(`Quickcheck: ${RANDOM_RANGE_COUNT} random block ranges (devnet dump)`,
|
|
|
220
228
|
describe('Quickcheck: random zkApp addresses (devnet dump)', () => {
|
|
221
229
|
test('events and actions queries succeed for random zkApp addresses', async () => {
|
|
222
230
|
const rows = await client `
|
|
223
|
-
SELECT
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
231
|
+
SELECT address FROM (
|
|
232
|
+
SELECT DISTINCT pk.value as address
|
|
233
|
+
FROM accounts_accessed aa
|
|
234
|
+
JOIN account_identifiers ai ON aa.account_identifier_id = ai.id
|
|
235
|
+
JOIN public_keys pk ON ai.public_key_id = pk.id
|
|
236
|
+
WHERE aa.zkapp_id IS NOT NULL
|
|
237
|
+
) AS zkapp_addresses
|
|
227
238
|
ORDER BY random()
|
|
228
239
|
LIMIT 10
|
|
229
240
|
`;
|
|
@@ -245,9 +256,10 @@ describe('Events and Actions (devnet dump)', () => {
|
|
|
245
256
|
test('events query works with real addresses from the chain', async () => {
|
|
246
257
|
const rows = await client `
|
|
247
258
|
SELECT pk.value as address
|
|
248
|
-
FROM
|
|
259
|
+
FROM accounts_accessed aa
|
|
260
|
+
JOIN account_identifiers ai ON aa.account_identifier_id = ai.id
|
|
249
261
|
JOIN public_keys pk ON ai.public_key_id = pk.id
|
|
250
|
-
|
|
262
|
+
WHERE aa.zkapp_id IS NOT NULL
|
|
251
263
|
LIMIT 1
|
|
252
264
|
`;
|
|
253
265
|
if (rows.length === 0) {
|
|
@@ -262,9 +274,10 @@ describe('Events and Actions (devnet dump)', () => {
|
|
|
262
274
|
test('actions query works with real addresses from the chain', async () => {
|
|
263
275
|
const rows = await client `
|
|
264
276
|
SELECT pk.value as address
|
|
265
|
-
FROM
|
|
277
|
+
FROM accounts_accessed aa
|
|
278
|
+
JOIN account_identifiers ai ON aa.account_identifier_id = ai.id
|
|
266
279
|
JOIN public_keys pk ON ai.public_key_id = pk.id
|
|
267
|
-
|
|
280
|
+
WHERE aa.zkapp_id IS NOT NULL
|
|
268
281
|
LIMIT 1
|
|
269
282
|
`;
|
|
270
283
|
if (rows.length === 0) {
|
|
@@ -308,4 +321,5 @@ describe('Schema validation (devnet dump)', () => {
|
|
|
308
321
|
console.log(` Total blocks in dump: ${count}`);
|
|
309
322
|
});
|
|
310
323
|
});
|
|
324
|
+
describeActionStateInvariants(() => ({ client, actionsService }));
|
|
311
325
|
//# sourceMappingURL=devnet-dump.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devnet-dump.test.js","sourceRoot":"","sources":["../../../tests/devnet-dump/devnet-dump.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"devnet-dump.test.js","sourceRoot":"","sources":["../../../tests/devnet-dump/devnet-dump.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,10 +10,42 @@ const PG_TEST_DB = process.env.PG_TEST_DB ?? 'devnet_dump_test';
|
|
|
10
10
|
const DATA_DIR = path.resolve(process.cwd(), 'data');
|
|
11
11
|
const DEFAULT_DUMP_PATH = path.join(DATA_DIR, 'devnet-archive.sql');
|
|
12
12
|
const DEVNET_DUMP_PATH = process.env.DEVNET_DUMP_PATH ?? DEFAULT_DUMP_PATH;
|
|
13
|
-
|
|
13
|
+
let targetDb = PG_TEST_DB;
|
|
14
|
+
export function getConnectionString() {
|
|
15
|
+
return `postgres://${PG_TEST_USER}:${PG_TEST_PASSWORD}@${PG_TEST_HOST}:${PG_TEST_PORT}/${targetDb}`;
|
|
16
|
+
}
|
|
14
17
|
function adminConnectionString(db = 'postgres') {
|
|
15
18
|
return `postgres://${PG_TEST_USER}:${PG_TEST_PASSWORD}@${PG_TEST_HOST}:${PG_TEST_PORT}/${db}`;
|
|
16
19
|
}
|
|
20
|
+
function databaseCreatedByDump(dumpPath) {
|
|
21
|
+
const fd = fs.openSync(dumpPath, 'r');
|
|
22
|
+
try {
|
|
23
|
+
const buffer = Buffer.alloc(64 * 1024);
|
|
24
|
+
const bytesRead = fs.readSync(fd, buffer, 0, buffer.length, 0);
|
|
25
|
+
const header = buffer.subarray(0, bytesRead).toString('utf8');
|
|
26
|
+
const connect = header.match(/^\\connect (\S+)/m);
|
|
27
|
+
if (!connect)
|
|
28
|
+
return undefined;
|
|
29
|
+
const name = connect[1].replace(/^"(.*)"$/, '$1');
|
|
30
|
+
if (!/^[A-Za-z_][A-Za-z0-9_$]*$/.test(name)) {
|
|
31
|
+
throw new Error(`Dump header names a database this harness will not interpolate: ${connect[1]}`);
|
|
32
|
+
}
|
|
33
|
+
return name;
|
|
34
|
+
}
|
|
35
|
+
finally {
|
|
36
|
+
fs.closeSync(fd);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async function dropDatabase(db) {
|
|
40
|
+
const admin = postgres(adminConnectionString(), { max: 1 });
|
|
41
|
+
try {
|
|
42
|
+
await admin.unsafe(`SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = '${db}' AND pid <> pg_backend_pid()`);
|
|
43
|
+
await admin.unsafe(`DROP DATABASE IF EXISTS ${db}`);
|
|
44
|
+
}
|
|
45
|
+
finally {
|
|
46
|
+
await admin.end();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
17
49
|
export async function downloadDump() {
|
|
18
50
|
if (fs.existsSync(DEVNET_DUMP_PATH)) {
|
|
19
51
|
console.log(`Using existing dump at ${DEVNET_DUMP_PATH}`);
|
|
@@ -29,30 +61,44 @@ export async function downloadDump() {
|
|
|
29
61
|
}
|
|
30
62
|
export async function setupTestDatabase() {
|
|
31
63
|
const dumpPath = await downloadDump();
|
|
32
|
-
const
|
|
64
|
+
const dumpDb = databaseCreatedByDump(dumpPath);
|
|
65
|
+
targetDb = dumpDb ?? PG_TEST_DB;
|
|
66
|
+
const loadDb = dumpDb ? 'postgres' : PG_TEST_DB;
|
|
67
|
+
await dropDatabase(targetDb);
|
|
68
|
+
if (!dumpDb) {
|
|
69
|
+
const admin = postgres(adminConnectionString(), { max: 1 });
|
|
70
|
+
try {
|
|
71
|
+
await admin.unsafe(`CREATE DATABASE ${PG_TEST_DB}`);
|
|
72
|
+
}
|
|
73
|
+
finally {
|
|
74
|
+
await admin.end();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const named = dumpDb ? ' (named by the dump)' : '';
|
|
78
|
+
console.log(`Loading devnet dump into ${targetDb}${named}... (a few minutes)`);
|
|
33
79
|
try {
|
|
34
|
-
|
|
35
|
-
await admin.unsafe(`DROP DATABASE IF EXISTS ${PG_TEST_DB}`);
|
|
36
|
-
await admin.unsafe(`CREATE DATABASE ${PG_TEST_DB}`);
|
|
80
|
+
execSync(`PGPASSWORD=${PG_TEST_PASSWORD} psql -v ON_ERROR_STOP=1 -h ${PG_TEST_HOST} -p ${PG_TEST_PORT} -U ${PG_TEST_USER} -d ${loadDb} -f ${dumpPath}`, { stdio: 'pipe', timeout: 600000 });
|
|
37
81
|
}
|
|
38
|
-
|
|
39
|
-
|
|
82
|
+
catch (error) {
|
|
83
|
+
const stderr = error.stderr?.toString() ?? '';
|
|
84
|
+
throw new Error(`Loading the devnet dump failed:\n${stderr.trim()}`);
|
|
40
85
|
}
|
|
41
|
-
|
|
42
|
-
execSync(`PGPASSWORD=${PG_TEST_PASSWORD} psql -h ${PG_TEST_HOST} -p ${PG_TEST_PORT} -U ${PG_TEST_USER} -d ${PG_TEST_DB} -f ${dumpPath}`, { stdio: 'pipe', timeout: 600000 });
|
|
43
|
-
console.log('Dump loaded successfully.');
|
|
44
|
-
}
|
|
45
|
-
export async function teardownTestDatabase() {
|
|
46
|
-
const admin = postgres(adminConnectionString(), { max: 1 });
|
|
86
|
+
const check = postgres(getConnectionString(), { max: 1 });
|
|
47
87
|
try {
|
|
48
|
-
await
|
|
49
|
-
|
|
88
|
+
const [row] = await check `SELECT count(*)::int AS blocks FROM blocks`;
|
|
89
|
+
if (!row || row.blocks === 0) {
|
|
90
|
+
throw new Error(`Dump loaded into ${targetDb} but it holds no blocks — the dump may be truncated.`);
|
|
91
|
+
}
|
|
92
|
+
console.log(`Dump loaded: ${row.blocks} blocks in ${targetDb}.`);
|
|
50
93
|
}
|
|
51
94
|
finally {
|
|
52
|
-
await
|
|
95
|
+
await check.end();
|
|
53
96
|
}
|
|
54
97
|
}
|
|
98
|
+
export async function teardownTestDatabase() {
|
|
99
|
+
await dropDatabase(targetDb);
|
|
100
|
+
}
|
|
55
101
|
export function createTestClient() {
|
|
56
|
-
return postgres(
|
|
102
|
+
return postgres(getConnectionString(), { max: 5 });
|
|
57
103
|
}
|
|
58
104
|
//# sourceMappingURL=setup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../tests/devnet-dump/setup.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,WAAW,CAAC;AAC7D,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,MAAM,CAAC;AACxD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,UAAU,CAAC;AAC5D,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,UAAU,CAAC;AACpE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,kBAAkB,CAAC;AAEhE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;AACrD,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;AACpE,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../tests/devnet-dump/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { describe, test, before, after } from 'node:test';
|
|
2
|
+
import assert from 'node:assert';
|
|
3
|
+
import { readFileSync } from 'node:fs';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { ActionsService } from '../../src/services/actions-service/actions-service.js';
|
|
6
|
+
import { TracingState } from '../../src/tracing/tracer.js';
|
|
7
|
+
import { assertActionChainIsLinked, heightsOf } from '../test-helpers.js';
|
|
8
|
+
import { setupTestDatabase, teardownTestDatabase, createTestClient, } from './action-state-setup.js';
|
|
9
|
+
const fixture = JSON.parse(readFileSync(path.resolve(process.cwd(), 'tests/integration/fixtures/action_state_order_inversion.json'), 'utf8'));
|
|
10
|
+
const nullOptions = { tracingState: new TracingState(undefined) };
|
|
11
|
+
let client;
|
|
12
|
+
let actionsService;
|
|
13
|
+
before(async () => {
|
|
14
|
+
await setupTestDatabase();
|
|
15
|
+
client = createTestClient();
|
|
16
|
+
actionsService = new ActionsService(client);
|
|
17
|
+
});
|
|
18
|
+
after(async () => {
|
|
19
|
+
await client?.end();
|
|
20
|
+
await teardownTestDatabase();
|
|
21
|
+
});
|
|
22
|
+
const ACCOUNT_KEYS = ['inverted', 'control', 'adjacent'];
|
|
23
|
+
describe('Actions: unfiltered baseline', () => {
|
|
24
|
+
for (const key of ACCOUNT_KEYS) {
|
|
25
|
+
test(`${key}: returns all four actions, correctly linked`, async () => {
|
|
26
|
+
const account = fixture.accounts[key];
|
|
27
|
+
const actions = await actionsService.getActions({ address: account.address }, nullOptions);
|
|
28
|
+
assert.deepStrictEqual(heightsOf(actions), fixture.actionBlockHeights, 'the unfiltered query must return every action block');
|
|
29
|
+
assertActionChainIsLinked(actions, `${key} unfiltered`);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
describe('Actions: fromActionState must return exactly the suffix from the checkpoint', () => {
|
|
34
|
+
for (const key of ACCOUNT_KEYS) {
|
|
35
|
+
const account = fixture.accounts[key];
|
|
36
|
+
for (const [index, state] of account.states.entries()) {
|
|
37
|
+
const expectedHeights = fixture.actionBlockHeights.slice(index);
|
|
38
|
+
test(`${key}: fromActionState = ${state.label} (block ${state.height}) returns blocks [${expectedHeights}]`, async () => {
|
|
39
|
+
const actions = await actionsService.getActions({ address: account.address, fromActionState: state.value }, nullOptions);
|
|
40
|
+
assert.deepStrictEqual(heightsOf(actions), expectedHeights, `interning ids for ${key} are [${account.interningIds}]; ` +
|
|
41
|
+
`an answer that differs here means the filter used the interning order, not the chain order`);
|
|
42
|
+
assert.strictEqual(actions[0].actionState.actionStateOne, state.value, 'the first entry must be the checkpoint itself, which clients strip');
|
|
43
|
+
assertActionChainIsLinked(actions, `${key} fromActionState=${state.label}`);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
describe('Actions: fromActionState must never return actions from before the checkpoint', () => {
|
|
49
|
+
for (const key of ACCOUNT_KEYS) {
|
|
50
|
+
const account = fixture.accounts[key];
|
|
51
|
+
for (const state of account.states) {
|
|
52
|
+
test(`${key}: fromActionState = ${state.label} returns nothing below height ${state.height}`, async () => {
|
|
53
|
+
const actions = await actionsService.getActions({ address: account.address, fromActionState: state.value }, nullOptions);
|
|
54
|
+
const tooEarly = heightsOf(actions).filter((h) => h < state.height);
|
|
55
|
+
assert.deepStrictEqual(tooEarly, [], `blocks ${tooEarly} are older than the checkpoint at height ${state.height}`);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
describe('Actions: the production symptom, pinned', () => {
|
|
61
|
+
test('adjacent: the action that follows the checkpoint is not dropped', async () => {
|
|
62
|
+
const account = fixture.accounts.adjacent;
|
|
63
|
+
const checkpoint = account.states[1];
|
|
64
|
+
const dropped = account.states[2];
|
|
65
|
+
assert.ok(account.interningIds[2] < account.interningIds[1], 'fixture precondition: the next action must have the LOWER interning id');
|
|
66
|
+
const actions = await actionsService.getActions({ address: account.address, fromActionState: checkpoint.value }, nullOptions);
|
|
67
|
+
assert.ok(heightsOf(actions).includes(dropped.height), `block ${dropped.height} is missing; returned [${heightsOf(actions)}]`);
|
|
68
|
+
assertActionChainIsLinked(actions, 'adjacent production symptom');
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
describe('Actions: endActionState', () => {
|
|
72
|
+
for (const key of ACCOUNT_KEYS) {
|
|
73
|
+
const account = fixture.accounts[key];
|
|
74
|
+
test(`${key}: endActionState = S3 stops at block ${account.states[2].height}`, async () => {
|
|
75
|
+
const actions = await actionsService.getActions({ address: account.address, endActionState: account.states[2].value }, nullOptions);
|
|
76
|
+
assert.deepStrictEqual(heightsOf(actions), fixture.actionBlockHeights.slice(0, 3), 'endActionState must cut the list at the checkpoint, using the chain order');
|
|
77
|
+
assertActionChainIsLinked(actions, `${key} endActionState=S3`);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
describe('Actions: the action state must belong to the requested account', () => {
|
|
82
|
+
test('an action state of a different account is rejected', async () => {
|
|
83
|
+
await assert.rejects(() => actionsService.getActions({
|
|
84
|
+
address: fixture.accounts.inverted.address,
|
|
85
|
+
fromActionState: fixture.accounts.control.states[1].value,
|
|
86
|
+
}, nullOptions), (err) => {
|
|
87
|
+
assert.strictEqual(err.extensions?.code, 'ACTION_STATE_NOT_FOUND');
|
|
88
|
+
return true;
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
test('a field value that is not an action state is rejected', async () => {
|
|
92
|
+
await assert.rejects(() => actionsService.getActions({
|
|
93
|
+
address: fixture.accounts.inverted.address,
|
|
94
|
+
fromActionState: fixture.accounts.inverted.states[0].actionData,
|
|
95
|
+
}, nullOptions), (err) => {
|
|
96
|
+
assert.strictEqual(err.extensions?.code, 'ACTION_STATE_NOT_FOUND');
|
|
97
|
+
return true;
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
describe('Actions: a checkpoint below the queried block range', () => {
|
|
102
|
+
test('is rejected when actions were emitted in between', async () => {
|
|
103
|
+
const account = fixture.accounts.control;
|
|
104
|
+
await assert.rejects(() => actionsService.getActions({
|
|
105
|
+
address: account.address,
|
|
106
|
+
fromActionState: account.states[0].value,
|
|
107
|
+
from: 29,
|
|
108
|
+
to: 31,
|
|
109
|
+
}, nullOptions), (err) => {
|
|
110
|
+
assert.strictEqual(err.extensions?.code, 'ACTION_STATE_OUT_OF_RANGE');
|
|
111
|
+
assert.match(String(err.message), /from: 27/, 'the error must name the `from` value that makes the query answerable');
|
|
112
|
+
return true;
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
test('is answered normally when nothing was emitted in between', async () => {
|
|
116
|
+
const account = fixture.accounts.control;
|
|
117
|
+
const actions = await actionsService.getActions({
|
|
118
|
+
address: account.address,
|
|
119
|
+
fromActionState: account.states[0].value,
|
|
120
|
+
from: 28,
|
|
121
|
+
to: 31,
|
|
122
|
+
}, nullOptions);
|
|
123
|
+
assert.deepStrictEqual(heightsOf(actions), [28, 29, 30]);
|
|
124
|
+
assertActionChainIsLinked(actions, 'checkpoint below window, nothing missed');
|
|
125
|
+
});
|
|
126
|
+
test('endActionState below the range is rejected, with no such exception', async () => {
|
|
127
|
+
const account = fixture.accounts.control;
|
|
128
|
+
await assert.rejects(() => actionsService.getActions({
|
|
129
|
+
address: account.address,
|
|
130
|
+
endActionState: account.states[0].value,
|
|
131
|
+
from: 29,
|
|
132
|
+
to: 31,
|
|
133
|
+
}, nullOptions), (err) => {
|
|
134
|
+
assert.strictEqual(err.extensions?.code, 'ACTION_STATE_OUT_OF_RANGE');
|
|
135
|
+
return true;
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
//# sourceMappingURL=action-state-ordering.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-state-ordering.test.js","sourceRoot":"","sources":["../../../tests/integration/action-state-ordering.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { execSync } from 'child_process';
|
|
2
|
+
import postgres from 'postgres';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
const PG_TEST_HOST = process.env.PG_TEST_HOST ?? 'localhost';
|
|
5
|
+
const PG_TEST_PORT = process.env.PG_TEST_PORT ?? '5432';
|
|
6
|
+
const PG_TEST_USER = process.env.PG_TEST_USER ?? 'postgres';
|
|
7
|
+
const PG_TEST_PASSWORD = process.env.PG_TEST_PASSWORD ?? 'postgres';
|
|
8
|
+
const PG_TEST_DB = process.env.PG_ACTION_STATE_TEST_DB ?? 'archive_node_api_action_state_test';
|
|
9
|
+
const FIXTURE_DIR = path.resolve(process.cwd(), 'tests/integration/fixtures');
|
|
10
|
+
const BASE_DUMP = process.env.ARCHIVE_DUMP_PATH ?? path.join(FIXTURE_DIR, 'archive_db.sql');
|
|
11
|
+
const INVERSION_FIXTURE = path.join(FIXTURE_DIR, 'action_state_order_inversion.sql');
|
|
12
|
+
export const connectionString = `postgres://${PG_TEST_USER}:${PG_TEST_PASSWORD}@${PG_TEST_HOST}:${PG_TEST_PORT}/${PG_TEST_DB}`;
|
|
13
|
+
function adminConnectionString(db = 'postgres') {
|
|
14
|
+
return `postgres://${PG_TEST_USER}:${PG_TEST_PASSWORD}@${PG_TEST_HOST}:${PG_TEST_PORT}/${db}`;
|
|
15
|
+
}
|
|
16
|
+
function applySqlFile(file, { stopOnError }) {
|
|
17
|
+
execSync(`PGPASSWORD=${PG_TEST_PASSWORD} psql ${stopOnError ? '-v ON_ERROR_STOP=1' : ''} ` +
|
|
18
|
+
`-h ${PG_TEST_HOST} -p ${PG_TEST_PORT} -U ${PG_TEST_USER} -d ${PG_TEST_DB} -f ${file}`, { stdio: 'pipe' });
|
|
19
|
+
}
|
|
20
|
+
export async function setupTestDatabase() {
|
|
21
|
+
const admin = postgres(adminConnectionString(), { max: 1 });
|
|
22
|
+
try {
|
|
23
|
+
await admin.unsafe(`SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = '${PG_TEST_DB}' AND pid <> pg_backend_pid()`);
|
|
24
|
+
await admin.unsafe(`DROP DATABASE IF EXISTS ${PG_TEST_DB}`);
|
|
25
|
+
await admin.unsafe(`CREATE DATABASE ${PG_TEST_DB}`);
|
|
26
|
+
}
|
|
27
|
+
finally {
|
|
28
|
+
await admin.end();
|
|
29
|
+
}
|
|
30
|
+
applySqlFile(BASE_DUMP, {
|
|
31
|
+
stopOnError: process.env.ARCHIVE_DUMP_PATH === undefined,
|
|
32
|
+
});
|
|
33
|
+
applySqlFile(INVERSION_FIXTURE, { stopOnError: true });
|
|
34
|
+
}
|
|
35
|
+
export async function teardownTestDatabase() {
|
|
36
|
+
const admin = postgres(adminConnectionString(), { max: 1 });
|
|
37
|
+
try {
|
|
38
|
+
await admin.unsafe(`SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = '${PG_TEST_DB}' AND pid <> pg_backend_pid()`);
|
|
39
|
+
await admin.unsafe(`DROP DATABASE IF EXISTS ${PG_TEST_DB}`);
|
|
40
|
+
}
|
|
41
|
+
finally {
|
|
42
|
+
await admin.end();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export function createTestClient() {
|
|
46
|
+
return postgres(connectionString, { max: 5 });
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=action-state-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-state-setup.js","sourceRoot":"","sources":["../../../tests/integration/action-state-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { describe, test, before, after } from 'node:test';
|
|
2
|
+
import assert from 'node:assert';
|
|
3
|
+
import { select } from '../../src/consensus/mina-consensus.js';
|
|
4
|
+
import { setupTestDatabase, teardownTestDatabase, createTestClient, } from './setup.js';
|
|
5
|
+
function rowToBlockInfo(row) {
|
|
6
|
+
return {
|
|
7
|
+
height: Number(row.height),
|
|
8
|
+
stateHash: row.state_hash,
|
|
9
|
+
parentHash: row.parent_hash,
|
|
10
|
+
ledgerHash: row.ledger_hash,
|
|
11
|
+
chainStatus: row.chain_status,
|
|
12
|
+
timestamp: row.timestamp,
|
|
13
|
+
globalSlotSinceHardfork: Number(row.global_slot_since_hard_fork),
|
|
14
|
+
globalSlotSinceGenesis: Number(row.global_slot_since_genesis),
|
|
15
|
+
distanceFromMaxBlockHeight: 0,
|
|
16
|
+
lastVrfOutput: row.last_vrf_output,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
let client;
|
|
20
|
+
before(async () => {
|
|
21
|
+
await setupTestDatabase();
|
|
22
|
+
client = createTestClient();
|
|
23
|
+
}, { timeout: 60000 });
|
|
24
|
+
after(async () => {
|
|
25
|
+
if (client)
|
|
26
|
+
await client.end();
|
|
27
|
+
await teardownTestDatabase();
|
|
28
|
+
});
|
|
29
|
+
describe('Consensus select agrees with chain canonicality', () => {
|
|
30
|
+
test('canonical sibling wins against every orphaned sibling sharing the same parent', async () => {
|
|
31
|
+
const rows = await client `
|
|
32
|
+
SELECT
|
|
33
|
+
b.height,
|
|
34
|
+
b.state_hash,
|
|
35
|
+
b.parent_hash,
|
|
36
|
+
b.ledger_hash,
|
|
37
|
+
b.chain_status,
|
|
38
|
+
b.timestamp,
|
|
39
|
+
b.global_slot_since_hard_fork,
|
|
40
|
+
b.global_slot_since_genesis,
|
|
41
|
+
b.last_vrf_output
|
|
42
|
+
FROM blocks b
|
|
43
|
+
WHERE b.chain_status IN ('canonical', 'orphaned')
|
|
44
|
+
AND b.height > 2
|
|
45
|
+
AND EXISTS (
|
|
46
|
+
SELECT 1 FROM blocks sib
|
|
47
|
+
WHERE sib.height = b.height
|
|
48
|
+
AND sib.parent_hash = b.parent_hash
|
|
49
|
+
AND sib.chain_status <> b.chain_status
|
|
50
|
+
AND sib.chain_status IN ('canonical', 'orphaned')
|
|
51
|
+
)
|
|
52
|
+
ORDER BY b.height, b.parent_hash, b.chain_status
|
|
53
|
+
`;
|
|
54
|
+
const groups = new Map();
|
|
55
|
+
for (const row of rows) {
|
|
56
|
+
const key = `${row.height}:${row.parent_hash}`;
|
|
57
|
+
const bucket = groups.get(key) ?? [];
|
|
58
|
+
bucket.push(row);
|
|
59
|
+
groups.set(key, bucket);
|
|
60
|
+
}
|
|
61
|
+
assert.ok(groups.size >= 3, `fixture should expose at least 3 sibling-fork groups for meaningful coverage; found ${groups.size}`);
|
|
62
|
+
let pairs = 0;
|
|
63
|
+
for (const [key, blocks] of groups) {
|
|
64
|
+
const canonical = blocks.find((b) => b.chain_status === 'canonical');
|
|
65
|
+
const orphans = blocks.filter((b) => b.chain_status === 'orphaned');
|
|
66
|
+
assert.ok(canonical, `${key}: missing canonical sibling`);
|
|
67
|
+
assert.ok(orphans.length >= 1, `${key}: missing orphan sibling`);
|
|
68
|
+
const canonicalEntry = { blockInfo: rowToBlockInfo(canonical) };
|
|
69
|
+
for (const orphan of orphans) {
|
|
70
|
+
const orphanEntry = { blockInfo: rowToBlockInfo(orphan) };
|
|
71
|
+
const a = select(canonicalEntry, orphanEntry);
|
|
72
|
+
assert.equal(a.blockInfo.stateHash, canonical.state_hash, `${key}: select(canonical, orphan) must pick canonical (got ${a.blockInfo.stateHash}, want ${canonical.state_hash})`);
|
|
73
|
+
const b = select(orphanEntry, canonicalEntry);
|
|
74
|
+
assert.equal(b.blockInfo.stateHash, canonical.state_hash, `${key}: select(orphan, canonical) must pick canonical (got ${b.blockInfo.stateHash}, want ${canonical.state_hash})`);
|
|
75
|
+
pairs++;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
console.log(`Validated ${pairs} canonical-vs-orphan sibling pair(s) across ${groups.size} fork point(s)`);
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
//# sourceMappingURL=consensus-vs-chain.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consensus-vs-chain.test.js","sourceRoot":"","sources":["../../../tests/integration/consensus-vs-chain.test.ts"],"names":[],"mappings":"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"}
|