@typeberry/lib 0.10.0 → 0.11.0-829b7ea

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 (146) hide show
  1. package/package.json +3 -5
  2. package/packages/configs/index.d.ts +9 -0
  3. package/packages/configs/index.d.ts.map +1 -1
  4. package/packages/configs/typeberry-default.json +4 -1
  5. package/packages/configs/typeberry-dev-full.json +3 -0
  6. package/packages/configs/typeberry-dev-tiny.json +3 -0
  7. package/packages/jam/config-node/index.d.ts +1 -0
  8. package/packages/jam/config-node/index.d.ts.map +1 -1
  9. package/packages/jam/config-node/index.js +1 -0
  10. package/packages/jam/config-node/node-config.d.ts +5 -11
  11. package/packages/jam/config-node/node-config.d.ts.map +1 -1
  12. package/packages/jam/config-node/node-config.js +9 -25
  13. package/packages/jam/config-node/node-config.test.js +11 -6
  14. package/packages/jam/config-node/rpc.d.ts +11 -0
  15. package/packages/jam/config-node/rpc.d.ts.map +1 -0
  16. package/packages/jam/config-node/rpc.js +16 -0
  17. package/packages/jam/database/states.d.ts +1 -8
  18. package/packages/jam/database/states.d.ts.map +1 -1
  19. package/packages/jam/database/value-refs.d.ts +4 -5
  20. package/packages/jam/database/value-refs.d.ts.map +1 -1
  21. package/packages/jam/node/export.d.ts.map +1 -1
  22. package/packages/jam/node/export.js +8 -17
  23. package/packages/jam/node/jam-config.d.ts +5 -1
  24. package/packages/jam/node/jam-config.d.ts.map +1 -1
  25. package/packages/jam/node/jam-config.js +6 -2
  26. package/packages/jam/node/main-fuzz.d.ts.map +1 -1
  27. package/packages/jam/node/main-fuzz.js +32 -19
  28. package/packages/jam/node/main-importer.d.ts +2 -6
  29. package/packages/jam/node/main-importer.d.ts.map +1 -1
  30. package/packages/jam/node/main-importer.js +13 -28
  31. package/packages/jam/node/main.d.ts.map +1 -1
  32. package/packages/jam/node/main.js +6 -16
  33. package/packages/jam/rpc/index.d.ts +3 -0
  34. package/packages/jam/rpc/index.d.ts.map +1 -0
  35. package/packages/jam/rpc/index.js +2 -0
  36. package/packages/jam/rpc/src/handlers/best-block.d.ts +6 -0
  37. package/packages/jam/rpc/src/handlers/best-block.d.ts.map +1 -0
  38. package/packages/jam/rpc/src/handlers/best-block.js +15 -0
  39. package/packages/jam/rpc/src/handlers/finalized-block.d.ts +6 -0
  40. package/packages/jam/rpc/src/handlers/finalized-block.d.ts.map +1 -0
  41. package/packages/jam/rpc/src/handlers/finalized-block.js +7 -0
  42. package/packages/jam/rpc/src/handlers/list-services.d.ts +6 -0
  43. package/packages/jam/rpc/src/handlers/list-services.d.ts.map +1 -0
  44. package/packages/jam/rpc/src/handlers/list-services.js +15 -0
  45. package/packages/jam/rpc/src/handlers/not-implemented.d.ts +4 -0
  46. package/packages/jam/rpc/src/handlers/not-implemented.d.ts.map +1 -0
  47. package/packages/jam/rpc/src/handlers/not-implemented.js +4 -0
  48. package/packages/jam/rpc/src/handlers/parameters.d.ts +7 -0
  49. package/packages/jam/rpc/src/handlers/parameters.d.ts.map +1 -0
  50. package/packages/jam/rpc/src/handlers/parameters.js +53 -0
  51. package/packages/jam/rpc/src/handlers/parent.d.ts +6 -0
  52. package/packages/jam/rpc/src/handlers/parent.d.ts.map +1 -0
  53. package/packages/jam/rpc/src/handlers/parent.js +25 -0
  54. package/packages/jam/rpc/src/handlers/service-data.d.ts +6 -0
  55. package/packages/jam/rpc/src/handlers/service-data.d.ts.map +1 -0
  56. package/packages/jam/rpc/src/handlers/service-data.js +21 -0
  57. package/packages/jam/rpc/src/handlers/service-preimage.d.ts +6 -0
  58. package/packages/jam/rpc/src/handlers/service-preimage.d.ts.map +1 -0
  59. package/packages/jam/rpc/src/handlers/service-preimage.js +23 -0
  60. package/packages/jam/rpc/src/handlers/service-request.d.ts +6 -0
  61. package/packages/jam/rpc/src/handlers/service-request.d.ts.map +1 -0
  62. package/packages/jam/rpc/src/handlers/service-request.js +23 -0
  63. package/packages/jam/rpc/src/handlers/service-value.d.ts +6 -0
  64. package/packages/jam/rpc/src/handlers/service-value.d.ts.map +1 -0
  65. package/packages/jam/rpc/src/handlers/service-value.js +23 -0
  66. package/packages/jam/rpc/src/handlers/state-root.d.ts +6 -0
  67. package/packages/jam/rpc/src/handlers/state-root.d.ts.map +1 -0
  68. package/packages/jam/rpc/src/handlers/state-root.js +14 -0
  69. package/packages/jam/rpc/src/handlers/statistics.d.ts +6 -0
  70. package/packages/jam/rpc/src/handlers/statistics.d.ts.map +1 -0
  71. package/packages/jam/rpc/src/handlers/statistics.js +16 -0
  72. package/packages/jam/rpc/src/handlers/subscribe-best-block.d.ts +6 -0
  73. package/packages/jam/rpc/src/handlers/subscribe-best-block.d.ts.map +1 -0
  74. package/packages/jam/rpc/src/handlers/subscribe-best-block.js +8 -0
  75. package/packages/jam/rpc/src/handlers/subscribe-finalized-block.d.ts +6 -0
  76. package/packages/jam/rpc/src/handlers/subscribe-finalized-block.d.ts.map +1 -0
  77. package/packages/jam/rpc/src/handlers/subscribe-finalized-block.js +8 -0
  78. package/packages/jam/rpc/src/handlers/subscribe-service-data.d.ts +6 -0
  79. package/packages/jam/rpc/src/handlers/subscribe-service-data.d.ts.map +1 -0
  80. package/packages/jam/rpc/src/handlers/subscribe-service-data.js +13 -0
  81. package/packages/jam/rpc/src/handlers/subscribe-service-preimage.d.ts +6 -0
  82. package/packages/jam/rpc/src/handlers/subscribe-service-preimage.d.ts.map +1 -0
  83. package/packages/jam/rpc/src/handlers/subscribe-service-preimage.js +13 -0
  84. package/packages/jam/rpc/src/handlers/subscribe-service-request.d.ts +6 -0
  85. package/packages/jam/rpc/src/handlers/subscribe-service-request.d.ts.map +1 -0
  86. package/packages/jam/rpc/src/handlers/subscribe-service-request.js +13 -0
  87. package/packages/jam/rpc/src/handlers/subscribe-service-value.d.ts +6 -0
  88. package/packages/jam/rpc/src/handlers/subscribe-service-value.d.ts.map +1 -0
  89. package/packages/jam/rpc/src/handlers/subscribe-service-value.js +13 -0
  90. package/packages/jam/rpc/src/handlers/subscribe-statistics.d.ts +6 -0
  91. package/packages/jam/rpc/src/handlers/subscribe-statistics.d.ts.map +1 -0
  92. package/packages/jam/rpc/src/handlers/subscribe-statistics.js +13 -0
  93. package/packages/jam/rpc/src/handlers/typeberry/refine-work-package.d.ts +8 -0
  94. package/packages/jam/rpc/src/handlers/typeberry/refine-work-package.d.ts.map +1 -0
  95. package/packages/jam/rpc/src/handlers/typeberry/refine-work-package.js +68 -0
  96. package/packages/jam/rpc/src/handlers/unsubscribe.d.ts +4 -0
  97. package/packages/jam/rpc/src/handlers/unsubscribe.d.ts.map +1 -0
  98. package/packages/jam/rpc/src/handlers/unsubscribe.js +3 -0
  99. package/packages/jam/rpc/src/handlers.d.ts +3 -0
  100. package/packages/jam/rpc/src/handlers.d.ts.map +1 -0
  101. package/packages/jam/rpc/src/handlers.js +60 -0
  102. package/packages/jam/rpc/src/server.d.ts +31 -0
  103. package/packages/jam/rpc/src/server.d.ts.map +1 -0
  104. package/packages/jam/rpc/src/server.js +179 -0
  105. package/packages/jam/rpc/src/subscription-manager.d.ts +20 -0
  106. package/packages/jam/rpc/src/subscription-manager.d.ts.map +1 -0
  107. package/packages/jam/rpc/src/subscription-manager.js +74 -0
  108. package/packages/jam/rpc/test/e2e-server.d.ts +3 -0
  109. package/packages/jam/rpc/test/e2e-server.d.ts.map +1 -0
  110. package/packages/jam/rpc/test/e2e-server.js +30 -0
  111. package/packages/jam/rpc/test/e2e-setup.d.ts +2 -0
  112. package/packages/jam/rpc/test/e2e-setup.d.ts.map +1 -0
  113. package/packages/jam/rpc/test/e2e-setup.js +126 -0
  114. package/packages/jam/rpc/test/e2e.d.ts +2 -0
  115. package/packages/jam/rpc/test/e2e.d.ts.map +1 -0
  116. package/packages/jam/rpc/test/e2e.js +326 -0
  117. package/packages/jam/state-merkleization/index.d.ts +1 -1
  118. package/packages/jam/state-merkleization/index.js +1 -1
  119. package/packages/workers/api-node/config.d.ts +6 -40
  120. package/packages/workers/api-node/config.d.ts.map +1 -1
  121. package/packages/workers/api-node/config.js +6 -82
  122. package/packages/workers/api-node/config.test.js +26 -63
  123. package/packages/workers/importer/main.d.ts +2 -0
  124. package/packages/workers/importer/main.d.ts.map +1 -1
  125. package/packages/workers/importer/main.js +1 -1
  126. package/packages/jam/database-lmdb/blocks.d.ts +0 -24
  127. package/packages/jam/database-lmdb/blocks.d.ts.map +0 -1
  128. package/packages/jam/database-lmdb/blocks.js +0 -82
  129. package/packages/jam/database-lmdb/hybrid-states.d.ts +0 -56
  130. package/packages/jam/database-lmdb/hybrid-states.d.ts.map +0 -1
  131. package/packages/jam/database-lmdb/hybrid-states.js +0 -149
  132. package/packages/jam/database-lmdb/hybrid-states.test.d.ts +0 -2
  133. package/packages/jam/database-lmdb/hybrid-states.test.d.ts.map +0 -1
  134. package/packages/jam/database-lmdb/hybrid-states.test.js +0 -180
  135. package/packages/jam/database-lmdb/index.d.ts +0 -5
  136. package/packages/jam/database-lmdb/index.d.ts.map +0 -1
  137. package/packages/jam/database-lmdb/index.js +0 -4
  138. package/packages/jam/database-lmdb/root.d.ts +0 -26
  139. package/packages/jam/database-lmdb/root.d.ts.map +0 -1
  140. package/packages/jam/database-lmdb/root.js +0 -53
  141. package/packages/jam/database-lmdb/states.d.ts +0 -76
  142. package/packages/jam/database-lmdb/states.d.ts.map +0 -1
  143. package/packages/jam/database-lmdb/states.js +0 -145
  144. package/packages/jam/database-lmdb/states.test.d.ts +0 -2
  145. package/packages/jam/database-lmdb/states.test.d.ts.map +0 -1
  146. package/packages/jam/database-lmdb/states.test.js +0 -202
@@ -0,0 +1,30 @@
1
+ import { PvmBackend } from "#@typeberry/config";
2
+ import { loadConfig, NODE_DEFAULTS } from "#@typeberry/config-node";
3
+ import { Blake2b } from "#@typeberry/hash";
4
+ import { getChainSpec, getDatabasePath } from "#@typeberry/node";
5
+ import { validation } from "#@typeberry/rpc-validation";
6
+ import { workspacePathFix } from "#@typeberry/utils";
7
+ import { FjallWorkerConfig } from "#@typeberry/workers-api-node";
8
+ import { handlers } from "../src/handlers.js";
9
+ import { RpcServer } from "../src/server.js";
10
+ const DEFAULT_PORT = 19800;
11
+ const withRelPath = workspacePathFix(`${import.meta.dirname}/../../../..`);
12
+ export async function startTestRpcServer(configPath, port = DEFAULT_PORT) {
13
+ const blake2b = await Blake2b.createHasher();
14
+ const nodeName = NODE_DEFAULTS.name;
15
+ const nodeConfig = loadConfig([configPath], withRelPath);
16
+ const spec = getChainSpec(nodeConfig.flavor);
17
+ if (nodeConfig.databaseBasePath === undefined) {
18
+ throw new Error("RPC server requires a persistent database path.");
19
+ }
20
+ const { dbPath } = getDatabasePath(blake2b, nodeName, nodeConfig.chainSpec.genesisHeader, withRelPath(nodeConfig.databaseBasePath));
21
+ const dbConfigParams = {
22
+ nodeName,
23
+ chainSpec: spec,
24
+ workerParams: undefined,
25
+ dbPath,
26
+ blake2b,
27
+ };
28
+ const rootDb = await FjallWorkerConfig.new(dbConfigParams).openDatabase({ readonly: true });
29
+ return RpcServer.new(port, rootDb, spec, blake2b, PvmBackend.Ananas, handlers, validation.schemas);
30
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=e2e-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"e2e-setup.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/rpc/test/e2e-setup.ts"],"names":[],"mappings":""}
@@ -0,0 +1,126 @@
1
+ // biome-ignore-all lint/suspicious/noConsole: bin file
2
+ import { loadConfig, NODE_DEFAULTS } from "#@typeberry/config-node";
3
+ import { Level, Logger } from "#@typeberry/logger";
4
+ import { importBlocks, JamConfig, main as node } from "#@typeberry/node";
5
+ import { workspacePathFix } from "#@typeberry/utils";
6
+ Logger.configureAll(process.env.JAM_LOG ?? "", Level.LOG);
7
+ const withRelPath = workspacePathFix(`${import.meta.dirname}/../../../..`);
8
+ async function main() {
9
+ const nodeConfig = loadConfig([`${import.meta.dirname}/e2e.config.json`], withRelPath);
10
+ const jamConfig = JamConfig.new({
11
+ nodeName: NODE_DEFAULTS.name,
12
+ nodeConfig,
13
+ pvmBackend: NODE_DEFAULTS.pvm,
14
+ });
15
+ try {
16
+ const api = await node(jamConfig, withRelPath, null);
17
+ await importBlocks(api, blocksToImport);
18
+ }
19
+ catch (e) {
20
+ console.error(`${e}`);
21
+ process.exit(-1);
22
+ }
23
+ }
24
+ const blocksToImport = [
25
+ "test-vectors/w3f-davxy_072/traces/storage/00000001.json",
26
+ "test-vectors/w3f-davxy_072/traces/storage/00000002.json",
27
+ "test-vectors/w3f-davxy_072/traces/storage/00000003.json",
28
+ "test-vectors/w3f-davxy_072/traces/storage/00000004.json",
29
+ "test-vectors/w3f-davxy_072/traces/storage/00000005.json",
30
+ "test-vectors/w3f-davxy_072/traces/storage/00000006.json",
31
+ "test-vectors/w3f-davxy_072/traces/storage/00000007.json",
32
+ "test-vectors/w3f-davxy_072/traces/storage/00000008.json",
33
+ "test-vectors/w3f-davxy_072/traces/storage/00000009.json",
34
+ "test-vectors/w3f-davxy_072/traces/storage/00000010.json",
35
+ "test-vectors/w3f-davxy_072/traces/storage/00000011.json",
36
+ "test-vectors/w3f-davxy_072/traces/storage/00000012.json",
37
+ "test-vectors/w3f-davxy_072/traces/storage/00000013.json",
38
+ "test-vectors/w3f-davxy_072/traces/storage/00000014.json",
39
+ "test-vectors/w3f-davxy_072/traces/storage/00000015.json",
40
+ "test-vectors/w3f-davxy_072/traces/storage/00000016.json",
41
+ "test-vectors/w3f-davxy_072/traces/storage/00000017.json",
42
+ "test-vectors/w3f-davxy_072/traces/storage/00000018.json",
43
+ "test-vectors/w3f-davxy_072/traces/storage/00000019.json",
44
+ "test-vectors/w3f-davxy_072/traces/storage/00000020.json",
45
+ "test-vectors/w3f-davxy_072/traces/storage/00000021.json",
46
+ "test-vectors/w3f-davxy_072/traces/storage/00000022.json",
47
+ "test-vectors/w3f-davxy_072/traces/storage/00000023.json",
48
+ "test-vectors/w3f-davxy_072/traces/storage/00000024.json",
49
+ "test-vectors/w3f-davxy_072/traces/storage/00000025.json",
50
+ "test-vectors/w3f-davxy_072/traces/storage/00000026.json",
51
+ "test-vectors/w3f-davxy_072/traces/storage/00000027.json",
52
+ "test-vectors/w3f-davxy_072/traces/storage/00000028.json",
53
+ "test-vectors/w3f-davxy_072/traces/storage/00000029.json",
54
+ "test-vectors/w3f-davxy_072/traces/storage/00000030.json",
55
+ "test-vectors/w3f-davxy_072/traces/storage/00000031.json",
56
+ "test-vectors/w3f-davxy_072/traces/storage/00000032.json",
57
+ "test-vectors/w3f-davxy_072/traces/storage/00000033.json",
58
+ "test-vectors/w3f-davxy_072/traces/storage/00000034.json",
59
+ "test-vectors/w3f-davxy_072/traces/storage/00000035.json",
60
+ "test-vectors/w3f-davxy_072/traces/storage/00000036.json",
61
+ "test-vectors/w3f-davxy_072/traces/storage/00000037.json",
62
+ "test-vectors/w3f-davxy_072/traces/storage/00000038.json",
63
+ "test-vectors/w3f-davxy_072/traces/storage/00000039.json",
64
+ "test-vectors/w3f-davxy_072/traces/storage/00000040.json",
65
+ "test-vectors/w3f-davxy_072/traces/storage/00000041.json",
66
+ "test-vectors/w3f-davxy_072/traces/storage/00000042.json",
67
+ "test-vectors/w3f-davxy_072/traces/storage/00000043.json",
68
+ "test-vectors/w3f-davxy_072/traces/storage/00000044.json",
69
+ "test-vectors/w3f-davxy_072/traces/storage/00000045.json",
70
+ "test-vectors/w3f-davxy_072/traces/storage/00000046.json",
71
+ "test-vectors/w3f-davxy_072/traces/storage/00000047.json",
72
+ "test-vectors/w3f-davxy_072/traces/storage/00000048.json",
73
+ "test-vectors/w3f-davxy_072/traces/storage/00000049.json",
74
+ "test-vectors/w3f-davxy_072/traces/storage/00000050.json",
75
+ "test-vectors/w3f-davxy_072/traces/storage/00000051.json",
76
+ "test-vectors/w3f-davxy_072/traces/storage/00000052.json",
77
+ "test-vectors/w3f-davxy_072/traces/storage/00000053.json",
78
+ "test-vectors/w3f-davxy_072/traces/storage/00000054.json",
79
+ "test-vectors/w3f-davxy_072/traces/storage/00000055.json",
80
+ "test-vectors/w3f-davxy_072/traces/storage/00000056.json",
81
+ "test-vectors/w3f-davxy_072/traces/storage/00000057.json",
82
+ "test-vectors/w3f-davxy_072/traces/storage/00000058.json",
83
+ "test-vectors/w3f-davxy_072/traces/storage/00000059.json",
84
+ "test-vectors/w3f-davxy_072/traces/storage/00000060.json",
85
+ "test-vectors/w3f-davxy_072/traces/storage/00000061.json",
86
+ "test-vectors/w3f-davxy_072/traces/storage/00000062.json",
87
+ "test-vectors/w3f-davxy_072/traces/storage/00000063.json",
88
+ "test-vectors/w3f-davxy_072/traces/storage/00000064.json",
89
+ "test-vectors/w3f-davxy_072/traces/storage/00000065.json",
90
+ "test-vectors/w3f-davxy_072/traces/storage/00000066.json",
91
+ "test-vectors/w3f-davxy_072/traces/storage/00000067.json",
92
+ "test-vectors/w3f-davxy_072/traces/storage/00000068.json",
93
+ "test-vectors/w3f-davxy_072/traces/storage/00000069.json",
94
+ "test-vectors/w3f-davxy_072/traces/storage/00000070.json",
95
+ "test-vectors/w3f-davxy_072/traces/storage/00000071.json",
96
+ "test-vectors/w3f-davxy_072/traces/storage/00000072.json",
97
+ "test-vectors/w3f-davxy_072/traces/storage/00000073.json",
98
+ "test-vectors/w3f-davxy_072/traces/storage/00000074.json",
99
+ "test-vectors/w3f-davxy_072/traces/storage/00000075.json",
100
+ "test-vectors/w3f-davxy_072/traces/storage/00000076.json",
101
+ "test-vectors/w3f-davxy_072/traces/storage/00000077.json",
102
+ "test-vectors/w3f-davxy_072/traces/storage/00000078.json",
103
+ "test-vectors/w3f-davxy_072/traces/storage/00000079.json",
104
+ "test-vectors/w3f-davxy_072/traces/storage/00000080.json",
105
+ "test-vectors/w3f-davxy_072/traces/storage/00000081.json",
106
+ "test-vectors/w3f-davxy_072/traces/storage/00000082.json",
107
+ "test-vectors/w3f-davxy_072/traces/storage/00000083.json",
108
+ "test-vectors/w3f-davxy_072/traces/storage/00000084.json",
109
+ "test-vectors/w3f-davxy_072/traces/storage/00000085.json",
110
+ "test-vectors/w3f-davxy_072/traces/storage/00000086.json",
111
+ "test-vectors/w3f-davxy_072/traces/storage/00000087.json",
112
+ "test-vectors/w3f-davxy_072/traces/storage/00000088.json",
113
+ "test-vectors/w3f-davxy_072/traces/storage/00000089.json",
114
+ "test-vectors/w3f-davxy_072/traces/storage/00000090.json",
115
+ "test-vectors/w3f-davxy_072/traces/storage/00000091.json",
116
+ "test-vectors/w3f-davxy_072/traces/storage/00000092.json",
117
+ "test-vectors/w3f-davxy_072/traces/storage/00000093.json",
118
+ "test-vectors/w3f-davxy_072/traces/storage/00000094.json",
119
+ "test-vectors/w3f-davxy_072/traces/storage/00000095.json",
120
+ "test-vectors/w3f-davxy_072/traces/storage/00000096.json",
121
+ "test-vectors/w3f-davxy_072/traces/storage/00000097.json",
122
+ "test-vectors/w3f-davxy_072/traces/storage/00000098.json",
123
+ "test-vectors/w3f-davxy_072/traces/storage/00000099.json",
124
+ "test-vectors/w3f-davxy_072/traces/storage/00000100.json",
125
+ ].map(withRelPath);
126
+ main();
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=e2e.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"e2e.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/rpc/test/e2e.ts"],"names":[],"mappings":""}
@@ -0,0 +1,326 @@
1
+ import assert from "node:assert";
2
+ import { after, before, describe, it } from "node:test";
3
+ import { RpcClient } from "#@typeberry/rpc-client";
4
+ import { JSON_RPC_VERSION, validation } from "#@typeberry/rpc-validation";
5
+ import { startTestRpcServer } from "./e2e-server.js";
6
+ function hexToUint8Array(hex) {
7
+ return new Uint8Array(Buffer.from(hex, "hex"));
8
+ }
9
+ describe("JSON RPC Client-Server E2E", { concurrency: false }, () => {
10
+ let client;
11
+ let server;
12
+ before(async () => {
13
+ server = await startTestRpcServer(`${import.meta.dirname}/e2e.config.json`);
14
+ client = RpcClient.new("ws://localhost:19800");
15
+ await client.waitForConnection();
16
+ });
17
+ after(async () => {
18
+ client.close();
19
+ await server.close();
20
+ });
21
+ it("gets best block", async () => {
22
+ const result = await client.call("bestBlock");
23
+ assert.deepStrictEqual(result, {
24
+ header_hash: hexToUint8Array("9eb96a960cb553d5b27a63e6df4bf422c2781d8a013d9dcfbe32a30ef25afd52"),
25
+ slot: 100,
26
+ });
27
+ });
28
+ it("gets finalized block", async () => {
29
+ // todo [seko] we're temporarily returning the best instead of finalized block
30
+ const result = await client.call("finalizedBlock");
31
+ assert.deepStrictEqual(result, {
32
+ header_hash: hexToUint8Array("9eb96a960cb553d5b27a63e6df4bf422c2781d8a013d9dcfbe32a30ef25afd52"),
33
+ slot: 100,
34
+ });
35
+ });
36
+ it("gets parent block", async () => {
37
+ const bestBlock = await client.call("bestBlock");
38
+ const result = await client.call("parent", [bestBlock.header_hash]);
39
+ assert.deepStrictEqual(result, {
40
+ header_hash: hexToUint8Array("958ff3540f9641de3b7e1d89272c5979c0d7071817d9f5cd691d4f7fdb97e4d2"),
41
+ slot: 99,
42
+ });
43
+ });
44
+ it("throws an error when a non-existing block hash is provided", async () => {
45
+ await assert.rejects(async () => {
46
+ await client.call("parent", [
47
+ hexToUint8Array("1111111111111111111111111111111111111111111111111111111111111111"),
48
+ ]);
49
+ }, {
50
+ code: 1,
51
+ message: "Block unavailable: 0x1111111111111111111111111111111111111111111111111111111111111111",
52
+ data: "ERERERERERERERERERERERERERERERERERERERERERE=",
53
+ });
54
+ });
55
+ it("gets state root", async () => {
56
+ const bestBlock = await client.call("bestBlock");
57
+ const result = await client.call("stateRoot", [bestBlock.header_hash]);
58
+ assert.deepStrictEqual(result, hexToUint8Array("a685a3a56825043f0de06709e023d8fd83a8a311f3fe20b47fdd0f93706d1323"));
59
+ });
60
+ it("gets statistics", async () => {
61
+ const bestBlock = await client.call("bestBlock");
62
+ const result = await client.call("statistics", [bestBlock.header_hash]);
63
+ assert.deepStrictEqual(result, hexToUint8Array("01000000000000000000000000000000020000000500000002000000000000000000000000000000020000000500000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000500000001000000000000000000000000000000000000000300000001000000000000000000000000000000020000000300000002000000000000000000000000000000040000000a00000002000000000000000000000000000000060000000b00000003000000000000000000000000000000060000000c00000003000000000000000000000000000000040000000c00000001000000000000000000000000000000040000000a00000001000000000000000000000000000000060000000a000000000300128519008be9c30c0500000000000000000100000000000004c30c0500128519000000"));
64
+ });
65
+ it("gets service data", async () => {
66
+ const bestBlock = await client.call("bestBlock");
67
+ const result = await client.call("serviceData", [bestBlock.header_hash, 0]);
68
+ assert.deepStrictEqual(result, hexToUint8Array("d1b097b4410b3a63446d7c57d093972a9744fcd2d74f4a5e2ec163610e6d6327ffffffffffffffff0a000000000000000a000000000000007c20020000000000ffffffffffffffff1a000000000000006200000000000000"));
69
+ });
70
+ it("gets service value", async () => {
71
+ const bestBlock = await client.call("bestBlock");
72
+ const result = await client.call("serviceValue", [
73
+ bestBlock.header_hash,
74
+ 1,
75
+ hexToUint8Array("0242a295a93ac7f3ba564f0be83089a647a9bd3861798cf9fbffae0daa2ce1ff"),
76
+ ]);
77
+ assert.deepStrictEqual(result, null);
78
+ });
79
+ // The preimage hash comes from the post state of block 100 (can be extracted using the state viewer tool)
80
+ const testPreimageHash = hexToUint8Array("d1b097b4410b3a63446d7c57d093972a9744fcd2d74f4a5e2ec163610e6d6327");
81
+ it("gets service preimage", async () => {
82
+ const bestBlock = await client.call("bestBlock");
83
+ const data = await client.call("servicePreimage", [bestBlock.header_hash, 0, testPreimageHash]);
84
+ assert.deepStrictEqual(data?.length, 137056);
85
+ });
86
+ it("gets service request", async () => {
87
+ const bestBlock = await client.call("bestBlock");
88
+ const result = await client.call("serviceRequest", [bestBlock.header_hash, 0, testPreimageHash, 137056]);
89
+ assert.deepStrictEqual(result, [0]);
90
+ });
91
+ it("lists services", async () => {
92
+ const bestBlock = await client.call("bestBlock");
93
+ const result = await client.call("listServices", [bestBlock.header_hash]);
94
+ // TODO [ToDr] We should probably do a little bit better in terms of
95
+ // tracking recently active services. Some options for the future:
96
+ // 1. Use InMemoryDb for RPC E2E tests.
97
+ // 2. Store additional service metadata in the database.
98
+ // 3. Cache the state object, so that accessed services would be returned here.
99
+ assert.deepStrictEqual(result, []);
100
+ });
101
+ it("subscribes and unsubscribes to/from service preimage", async () => {
102
+ const subscription = await client.subscribe("subscribeServicePreimage", [0, testPreimageHash, false]);
103
+ try {
104
+ const data = await new Promise((resolve) => subscription.once("data", (result) => resolve(result)));
105
+ assert.deepStrictEqual(data.length, 182744);
106
+ }
107
+ finally {
108
+ await subscription.unsubscribe();
109
+ }
110
+ });
111
+ it("client handles errors when subscription is being requested", async () => {
112
+ await assert.rejects(async () => client.subscribe("subscribeServicePreimage", [
113
+ 0,
114
+ hexToUint8Array("c16326432b5b3213dfd1609495e13c6b276cb474d679645337e5c2c09f19b53c3d"), // invalid preimage hash
115
+ false,
116
+ ]));
117
+ });
118
+ it("client handles errors produced by the subscription", async (test) => {
119
+ const handlers = server.getHandlers();
120
+ const originalHandler = handlers.subscribeBestBlock;
121
+ handlers.subscribeBestBlock = async (params, { subscription }) => {
122
+ return subscription.subscribe("subscribeBestBlock", () => {
123
+ throw new Error("Forced error for bestBlock");
124
+ }, validation.schemas.bestBlock.output, params);
125
+ };
126
+ test.after(() => {
127
+ handlers.subscribeBestBlock = originalHandler;
128
+ });
129
+ return new Promise((resolve, reject) => {
130
+ client.subscribe("subscribeBestBlock", []).then((subscription) => {
131
+ subscription.on("data", async () => {
132
+ await subscription.unsubscribe();
133
+ reject(new Error("Subscription callback should not be called."));
134
+ });
135
+ subscription.on("error", async (error) => {
136
+ assert.strictEqual(error, "Error: Forced error for bestBlock");
137
+ await subscription.unsubscribe();
138
+ resolve();
139
+ });
140
+ });
141
+ });
142
+ });
143
+ it("server raises an error for unknown method", async () => {
144
+ const socket = client.getSocket();
145
+ socket.send(JSON.stringify({
146
+ jsonrpc: JSON_RPC_VERSION,
147
+ method: "unknownMethod",
148
+ params: [],
149
+ id: 1,
150
+ }));
151
+ const message = await new Promise((resolve) => {
152
+ socket.on("message", (data) => {
153
+ resolve(data.toString());
154
+ });
155
+ });
156
+ assert.deepStrictEqual(JSON.parse(message), {
157
+ jsonrpc: "2.0",
158
+ error: { code: -32601, message: "Method not found: unknownMethod" },
159
+ id: 1,
160
+ });
161
+ });
162
+ it("server raises an error when more than necessary parameters are supplied", async () => {
163
+ const bestBlock = await client.call("bestBlock");
164
+ const socket = client.getSocket();
165
+ socket.send(JSON.stringify({
166
+ jsonrpc: JSON_RPC_VERSION,
167
+ method: "stateRoot",
168
+ params: [Buffer.from(bestBlock.header_hash).toString("base64"), 0],
169
+ id: 1,
170
+ }));
171
+ const message = await new Promise((resolve) => {
172
+ socket.on("message", (data) => {
173
+ resolve(data.toString());
174
+ });
175
+ });
176
+ assert.deepStrictEqual(JSON.parse(message), {
177
+ jsonrpc: "2.0",
178
+ error: { code: -32602, message: "Invalid params:\n[] Too big: expected array to have <1 items" },
179
+ id: 1,
180
+ });
181
+ });
182
+ it("server raises an error when a parameter of the wrong type is supplied", async () => {
183
+ const bestBlock = await client.call("bestBlock");
184
+ const socket = client.getSocket();
185
+ socket.send(JSON.stringify({
186
+ jsonrpc: JSON_RPC_VERSION,
187
+ method: "serviceData",
188
+ params: [Buffer.from(bestBlock.header_hash).toString("base64"), "wrong argument"],
189
+ id: 1,
190
+ }));
191
+ const message = await new Promise((resolve) => {
192
+ socket.on("message", (data) => {
193
+ resolve(data.toString());
194
+ });
195
+ });
196
+ assert.deepStrictEqual(JSON.parse(message), {
197
+ jsonrpc: "2.0",
198
+ error: { code: -32602, message: "Invalid params:\n[1] Invalid input: expected number, received string" },
199
+ id: 1,
200
+ });
201
+ });
202
+ it("server raises an error when no parameters are supplied (even though necessary)", async () => {
203
+ const socket = client.getSocket();
204
+ socket.send(JSON.stringify({
205
+ jsonrpc: JSON_RPC_VERSION,
206
+ method: "stateRoot",
207
+ id: 1,
208
+ }));
209
+ const message = await new Promise((resolve) => {
210
+ socket.on("message", (data) => {
211
+ resolve(data.toString());
212
+ });
213
+ });
214
+ assert.deepStrictEqual(JSON.parse(message), {
215
+ jsonrpc: "2.0",
216
+ error: { code: -32602, message: "Invalid params:\n[0] Invalid input: expected string, received undefined" },
217
+ id: 1,
218
+ });
219
+ });
220
+ it("server raises an error when some (not all) parameters are missing", async () => {
221
+ const bestBlock = await client.call("bestBlock");
222
+ const socket = client.getSocket();
223
+ socket.send(JSON.stringify({
224
+ jsonrpc: JSON_RPC_VERSION,
225
+ method: "serviceData",
226
+ params: [Buffer.from(bestBlock.header_hash).toString("base64")],
227
+ id: 1,
228
+ }));
229
+ const message = await new Promise((resolve) => {
230
+ socket.on("message", (data) => {
231
+ resolve(data.toString());
232
+ });
233
+ });
234
+ assert.deepStrictEqual(JSON.parse(message), {
235
+ jsonrpc: "2.0",
236
+ error: { code: -32602, message: "Invalid params:\n[1] Invalid input: expected number, received undefined" },
237
+ id: 1,
238
+ });
239
+ });
240
+ it("server raises an error when an unimplemented method is called", async () => {
241
+ const socket = client.getSocket();
242
+ socket.send(JSON.stringify({
243
+ jsonrpc: JSON_RPC_VERSION,
244
+ method: "submitPreimage",
245
+ params: [],
246
+ id: 1,
247
+ }));
248
+ const message = await new Promise((resolve) => {
249
+ socket.on("message", (data) => {
250
+ resolve(data.toString());
251
+ });
252
+ });
253
+ assert.deepStrictEqual(JSON.parse(message), {
254
+ jsonrpc: "2.0",
255
+ error: { code: 0, message: "Method not implemented" },
256
+ id: 1,
257
+ });
258
+ });
259
+ it("server raises an error when a non-base64 string is provided as hash", async () => {
260
+ const socket = client.getSocket();
261
+ socket.send(JSON.stringify({
262
+ jsonrpc: JSON_RPC_VERSION,
263
+ method: "parent",
264
+ params: ["ThisIsNotBase64!!"],
265
+ id: 1,
266
+ }));
267
+ const message = await new Promise((resolve) => {
268
+ socket.on("message", (data) => {
269
+ resolve(data.toString());
270
+ });
271
+ });
272
+ assert.deepStrictEqual(JSON.parse(message), {
273
+ jsonrpc: "2.0",
274
+ error: { code: -32602, message: "Invalid params:\n[0] Invalid base64-encoded string" },
275
+ id: 1,
276
+ });
277
+ });
278
+ it("server gracefully handles malformed requests", async () => {
279
+ const socket = client.getSocket();
280
+ socket.send(JSON.stringify({ foo: "bar" }));
281
+ const message = await new Promise((resolve) => {
282
+ socket.on("message", (data) => {
283
+ resolve(data.toString());
284
+ });
285
+ });
286
+ assert.deepStrictEqual(JSON.parse(message), {
287
+ jsonrpc: "2.0",
288
+ error: { code: -32600, message: 'Invalid request: {"foo":"bar"}' },
289
+ id: null,
290
+ });
291
+ });
292
+ it("server handles batch requests", async () => {
293
+ const socket = client.getSocket();
294
+ const bestBlock = await client.call("bestBlock");
295
+ socket.send(JSON.stringify([
296
+ { foo: "bar" }, // malformed request (error expected)
297
+ {
298
+ jsonrpc: JSON_RPC_VERSION,
299
+ method: "notificationTest",
300
+ params: [],
301
+ }, // notification (no response expected, even if causes error)
302
+ {
303
+ jsonrpc: JSON_RPC_VERSION,
304
+ method: "bestBlock",
305
+ params: [],
306
+ id: 1,
307
+ }, // correct request
308
+ ]));
309
+ const message = await new Promise((resolve) => {
310
+ socket.on("message", (data) => {
311
+ resolve(data.toString());
312
+ });
313
+ });
314
+ assert.deepStrictEqual(JSON.parse(message), [
315
+ { jsonrpc: "2.0", error: { code: -32600, message: 'Invalid request: {"foo":"bar"}' }, id: null },
316
+ {
317
+ jsonrpc: "2.0",
318
+ result: {
319
+ ...bestBlock,
320
+ header_hash: Buffer.from(bestBlock.header_hash).toString("base64"),
321
+ },
322
+ id: 1,
323
+ },
324
+ ]);
325
+ });
326
+ });
@@ -19,7 +19,7 @@
19
19
  * (incomplete in-memory view).
20
20
  * - `SerializedState<LeafDb>`: Disk-backed trie storage-leaf nodes live on
21
21
  * disk and load on demand; cheap to update (no data duplication) and re-compute
22
- * the `stateRoot`. Used in LMDB.
22
+ * the `stateRoot`.
23
23
  * - `SerializedState<StateEntries>`: serialized state represented as a simple in-memory
24
24
  * hashmap of `key -> value` entries.
25
25
  */
@@ -19,7 +19,7 @@
19
19
  * (incomplete in-memory view).
20
20
  * - `SerializedState<LeafDb>`: Disk-backed trie storage-leaf nodes live on
21
21
  * disk and load on demand; cheap to update (no data duplication) and re-compute
22
- * the `stateRoot`. Used in LMDB.
22
+ * the `stateRoot`.
23
23
  * - `SerializedState<StateEntries>`: serialized state represented as a simple in-memory
24
24
  * hashmap of `key -> value` entries.
25
25
  */
@@ -8,40 +8,9 @@ import type { WorkerConfig } from "#@typeberry/workers-api";
8
8
  import { ThreadPort, type TransferablePort } from "./port.js";
9
9
  export { FjallValuesSession };
10
10
  /** Persistent regular-node backend. */
11
- export type PersistentBackend = "lmdb" | "fjall";
11
+ export type PersistentBackend = "fjall";
12
12
  /** Transferable worker config for persistent regular-node workers. */
13
- export type PersistentWorkerConfig<T> = LmdbWorkerConfig<T> | FjallWorkerConfig<T>;
14
- /**
15
- * Worker config for node.js, backed by the LMDB database.
16
- *
17
- * @deprecated lmdb is retained as an explicit fallback. Use `FjallWorkerConfig` for regular nodes.
18
- */
19
- export declare class LmdbWorkerConfig<T = void> implements WorkerConfig<T, BlocksDb, SerializedStatesDb> {
20
- readonly nodeName: string;
21
- readonly chainSpec: ChainSpec;
22
- readonly workerParams: T;
23
- readonly dbPath: string;
24
- readonly blake2b: Blake2b;
25
- readonly ports: Map<string, ThreadPort>;
26
- readonly ephemeral: boolean;
27
- static new<T>({ nodeName, chainSpec, workerParams, dbPath, blake2b, ports, ephemeral, }: {
28
- nodeName: string;
29
- chainSpec: ChainSpec;
30
- workerParams: T;
31
- dbPath: string;
32
- blake2b: Blake2b;
33
- ports?: Map<string, ThreadPort>;
34
- ephemeral?: boolean;
35
- }): LmdbWorkerConfig<T>;
36
- /** Restore node config from a transferable config object. */
37
- static fromTransferable<T>(decodeParams: Decode<T>, config: TransferableConfig): Promise<LmdbWorkerConfig<T>>;
38
- private constructor();
39
- openDatabase(options?: {
40
- readonly: boolean;
41
- }): Promise<RootDb<BlocksDb, SerializedStatesDb>>;
42
- /** Convert this config into a thread-transferable object. */
43
- intoTransferable(paramsCodec: Encode<T>): TransferableConfig;
44
- }
13
+ export type PersistentWorkerConfig<T> = FjallWorkerConfig<T>;
45
14
  /** Worker config for node.js, backed by a shared fjall engine. */
46
15
  export declare class FjallWorkerConfig<T = void> implements WorkerConfig<T, BlocksDb, SerializedStatesDb> {
47
16
  readonly nodeName: string;
@@ -115,11 +84,10 @@ export declare class InMemWorkerConfig<T = undefined> implements WorkerConfig<T,
115
84
  }): Promise<RootDb<BlocksDb, SerializedStatesDb>>;
116
85
  }
117
86
  /** Persistent values store backing the hybrid config. */
118
- export type HybridBackend = "lmdb" | "fjall";
87
+ export type HybridBackend = "fjall";
119
88
  /**
120
89
  * Hybrid worker config for the fuzz target: in-memory blocks and leaf sets,
121
- * but large values persisted to disk. The `backend` picks where the values go
122
- * (lmdb or fjall).
90
+ * but large values persisted to disk via fjall.
123
91
  *
124
92
  * fjall opens its keyspace asynchronously, that is why `new` here is async.
125
93
  *
@@ -141,7 +109,7 @@ export declare class HybridWorkerConfig<T = undefined> implements WorkerConfig<T
141
109
  readonly ephemeral: boolean;
142
110
  readonly compression: boolean;
143
111
  private readonly states;
144
- static new<T>({ nodeName, chainSpec, workerParams, blake2b, dbPath, ephemeral, compression, backend, sharedFjallSession, }: {
112
+ static new<T>({ nodeName, chainSpec, workerParams, blake2b, dbPath, ephemeral, compression, sharedFjallSession, }: {
145
113
  nodeName: string;
146
114
  chainSpec: ChainSpec;
147
115
  workerParams: T;
@@ -149,12 +117,10 @@ export declare class HybridWorkerConfig<T = undefined> implements WorkerConfig<T
149
117
  dbPath: string;
150
118
  ephemeral?: boolean;
151
119
  compression?: boolean;
152
- backend?: HybridBackend;
153
120
  /**
154
121
  * Reuse an already-open fjall values session instead of opening a fresh
155
122
  * keyspace. The fuzz target opens one per run and passes it on every reset,
156
- * so only the in-memory blocks/leaf sets are rebuilt per vector. Ignored
157
- * unless `backend === "fjall"`.
123
+ * so only the in-memory blocks/leaf sets are rebuilt per vector.
158
124
  */
159
125
  sharedFjallSession?: FjallValuesSession;
160
126
  }): Promise<HybridWorkerConfig<T>>;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../packages/workers/api-node/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../packages/workers/api-node/config.ts"],"names":[],"mappings":"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"}