@typeberry/lib 0.9.0-3f2c45b → 0.9.0-4a9f363

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 (110) hide show
  1. package/package.json +1 -1
  2. package/packages/core/collections/sorted-array.d.ts +1 -1
  3. package/packages/core/collections/sorted-array.d.ts.map +1 -1
  4. package/packages/core/collections/sorted-array.js +4 -2
  5. package/packages/core/collections/sorted-array.test.js +10 -0
  6. package/packages/core/collections/sorted-set.d.ts +1 -1
  7. package/packages/core/collections/sorted-set.d.ts.map +1 -1
  8. package/packages/core/collections/sorted-set.js +6 -2
  9. package/packages/core/collections/sorted-set.test.js +24 -0
  10. package/packages/core/utils/index.d.ts +1 -0
  11. package/packages/core/utils/index.d.ts.map +1 -1
  12. package/packages/core/utils/index.js +1 -0
  13. package/packages/core/utils/shutdown.d.ts +18 -0
  14. package/packages/core/utils/shutdown.d.ts.map +1 -0
  15. package/packages/core/utils/shutdown.js +3 -0
  16. package/packages/core/utils/shutdown.node.d.ts +5 -0
  17. package/packages/core/utils/shutdown.node.d.ts.map +1 -0
  18. package/packages/core/utils/shutdown.node.js +76 -0
  19. package/packages/core/utils/shutdown.test.d.ts +2 -0
  20. package/packages/core/utils/shutdown.test.d.ts.map +1 -0
  21. package/packages/core/utils/shutdown.test.js +164 -0
  22. package/packages/extensions/ipc/server.d.ts.map +1 -1
  23. package/packages/extensions/ipc/server.js +7 -0
  24. package/packages/jam/config-node/node-config.d.ts +20 -2
  25. package/packages/jam/config-node/node-config.d.ts.map +1 -1
  26. package/packages/jam/config-node/node-config.js +25 -3
  27. package/packages/jam/config-node/node-config.test.js +8 -1
  28. package/packages/jam/database/index.d.ts +1 -0
  29. package/packages/jam/database/index.d.ts.map +1 -1
  30. package/packages/jam/database/index.js +1 -0
  31. package/packages/jam/database/leaf-db-update.d.ts +1 -0
  32. package/packages/jam/database/leaf-db-update.d.ts.map +1 -1
  33. package/packages/jam/database/leaf-db-update.js +22 -5
  34. package/packages/jam/database/leaf-db-update.test.d.ts +2 -0
  35. package/packages/jam/database/leaf-db-update.test.d.ts.map +1 -0
  36. package/packages/jam/database/leaf-db-update.test.js +81 -0
  37. package/packages/jam/database/serialized-states-db.d.ts +1 -0
  38. package/packages/jam/database/serialized-states-db.d.ts.map +1 -1
  39. package/packages/jam/database/serialized-states-db.js +4 -0
  40. package/packages/jam/database/states.d.ts +11 -0
  41. package/packages/jam/database/states.d.ts.map +1 -1
  42. package/packages/jam/database/states.js +3 -0
  43. package/packages/jam/database/value-refs.d.ts +117 -0
  44. package/packages/jam/database/value-refs.d.ts.map +1 -0
  45. package/packages/jam/database/value-refs.js +206 -0
  46. package/packages/jam/database/value-refs.test.d.ts +2 -0
  47. package/packages/jam/database/value-refs.test.d.ts.map +1 -0
  48. package/packages/jam/database/value-refs.test.js +165 -0
  49. package/packages/jam/database-fjall/blocks.d.ts +25 -0
  50. package/packages/jam/database-fjall/blocks.d.ts.map +1 -0
  51. package/packages/jam/database-fjall/blocks.js +86 -0
  52. package/packages/jam/database-fjall/blocks.test.d.ts +2 -0
  53. package/packages/jam/database-fjall/blocks.test.d.ts.map +1 -0
  54. package/packages/jam/database-fjall/blocks.test.js +62 -0
  55. package/packages/jam/database-fjall/hybrid-states.d.ts +14 -0
  56. package/packages/jam/database-fjall/hybrid-states.d.ts.map +1 -1
  57. package/packages/jam/database-fjall/hybrid-states.js +55 -6
  58. package/packages/jam/database-fjall/index.d.ts +2 -0
  59. package/packages/jam/database-fjall/index.d.ts.map +1 -1
  60. package/packages/jam/database-fjall/index.js +2 -0
  61. package/packages/jam/database-fjall/root.d.ts +14 -8
  62. package/packages/jam/database-fjall/root.d.ts.map +1 -1
  63. package/packages/jam/database-fjall/root.js +25 -9
  64. package/packages/jam/database-fjall/states.d.ts +31 -0
  65. package/packages/jam/database-fjall/states.d.ts.map +1 -0
  66. package/packages/jam/database-fjall/states.js +99 -0
  67. package/packages/jam/database-fjall/states.test.d.ts +2 -0
  68. package/packages/jam/database-fjall/states.test.d.ts.map +1 -0
  69. package/packages/jam/database-fjall/states.test.js +150 -0
  70. package/packages/jam/database-lmdb/hybrid-states.d.ts +12 -0
  71. package/packages/jam/database-lmdb/hybrid-states.d.ts.map +1 -1
  72. package/packages/jam/database-lmdb/hybrid-states.js +45 -4
  73. package/packages/jam/database-lmdb/states.d.ts +1 -0
  74. package/packages/jam/database-lmdb/states.d.ts.map +1 -1
  75. package/packages/jam/database-lmdb/states.js +5 -0
  76. package/packages/jam/node/export.d.ts.map +1 -1
  77. package/packages/jam/node/export.js +18 -9
  78. package/packages/jam/node/main-fuzz.d.ts +4 -1
  79. package/packages/jam/node/main-fuzz.d.ts.map +1 -1
  80. package/packages/jam/node/main-fuzz.js +111 -82
  81. package/packages/jam/node/main-importer.d.ts +4 -2
  82. package/packages/jam/node/main-importer.d.ts.map +1 -1
  83. package/packages/jam/node/main-importer.js +26 -12
  84. package/packages/jam/node/main.d.ts.map +1 -1
  85. package/packages/jam/node/main.js +42 -15
  86. package/packages/jam/node/workers.d.ts +4 -4
  87. package/packages/jam/node/workers.d.ts.map +1 -1
  88. package/packages/workers/api/config.d.ts +2 -2
  89. package/packages/workers/api/config.d.ts.map +1 -1
  90. package/packages/workers/api/config.js +1 -1
  91. package/packages/workers/api/port.d.ts +5 -1
  92. package/packages/workers/api/port.d.ts.map +1 -1
  93. package/packages/workers/api/port.js +56 -13
  94. package/packages/workers/api/port.test.js +35 -0
  95. package/packages/workers/api-node/config.d.ts +45 -4
  96. package/packages/workers/api-node/config.d.ts.map +1 -1
  97. package/packages/workers/api-node/config.js +127 -9
  98. package/packages/workers/api-node/config.test.js +52 -3
  99. package/packages/workers/api-node/port.d.ts +3 -0
  100. package/packages/workers/api-node/port.d.ts.map +1 -1
  101. package/packages/workers/api-node/port.js +31 -2
  102. package/packages/workers/api-node/port.test.js +17 -0
  103. package/packages/workers/api-node/protocol.d.ts +3 -3
  104. package/packages/workers/api-node/protocol.d.ts.map +1 -1
  105. package/packages/workers/api-node/protocol.js +18 -12
  106. package/packages/workers/block-authorship/main.js +1 -1
  107. package/packages/workers/importer/main.d.ts +1 -1
  108. package/packages/workers/importer/main.d.ts.map +1 -1
  109. package/packages/workers/importer/main.js +1 -1
  110. package/packages/workers/jam-network/main.js +1 -1
@@ -2,7 +2,7 @@ import { type MessagePort, Worker } from "node:worker_threads";
2
2
  import type { Decode, Encode } from "#@typeberry/codec";
3
3
  import { Listener } from "#@typeberry/listener";
4
4
  import type { Api, Internal, LousyProtocol } from "#@typeberry/workers-api/types.js";
5
- import { LmdbWorkerConfig, type TransferableConfig } from "./config.js";
5
+ import { type PersistentWorkerConfig, type TransferableConfig } from "./config.js";
6
6
  /** Type of the control plane message. */
7
7
  export declare enum WorkerControlPlaneMsg {
8
8
  /** Transfers a communication port to some other thread. */
@@ -31,7 +31,7 @@ export type WorkerControlPlane = ({
31
31
  /**
32
32
  * Invoked by the main thread, to spawn a worker thread and initiate communication channel.
33
33
  */
34
- export declare function spawnWorker<To, From, Params>(protocol: LousyProtocol<To, From>, bootstrapPath: URL, config: LmdbWorkerConfig<Params>, paramsEncoder: Encode<Params>): {
34
+ export declare function spawnWorker<To, From, Params>(protocol: LousyProtocol<To, From>, bootstrapPath: URL, config: PersistentWorkerConfig<Params>, paramsEncoder: Encode<Params>): {
35
35
  api: Api<typeof protocol>;
36
36
  worker: Worker;
37
37
  workerFinished: Promise<void>;
@@ -40,7 +40,7 @@ export declare function spawnWorker<To, From, Params>(protocol: LousyProtocol<To
40
40
  * Initialize worker thread by awaiting the config message.
41
41
  */
42
42
  export declare function initWorker<To, From, Params>(protocol: LousyProtocol<To, From>, paramsDecoder: Decode<Params>): Promise<{
43
- config: LmdbWorkerConfig<Params>;
43
+ config: PersistentWorkerConfig<Params>;
44
44
  comms: Internal<typeof protocol>;
45
45
  threadComms: Listener<ThreadComms>;
46
46
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../../../packages/workers/api-node/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,WAAW,EAAc,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAI/C,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,EAAsB,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAM5F,yCAAyC;AACzC,oBAAY,qBAAqB;IAC/B,2DAA2D;IAC3D,iBAAiB,IAAI;IACrB,sCAAsC;IACtC,MAAM,IAAI;CACX;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,IAAI,EAAE,WAAW,CAAC;CACnB,CAAC;AACF,yFAAyF;AACzF,MAAM,MAAM,kBAAkB,GAC1B,CAAC;IACC,wDAAwD;IACxD,IAAI,EAAE,qBAAqB,CAAC,iBAAiB,CAAC;CAC/C,GAAG,WAAW,CAAC,GAChB;IACE,8EAA8E;IAC9E,IAAI,EAAE,qBAAqB,CAAC,MAAM,CAAC;IACnC,sCAAsC;IACtC,UAAU,EAAE,WAAW,CAAC;IACxB,4BAA4B;IAC5B,MAAM,EAAE,kBAAkB,CAAC;CAC5B,CAAC;AAeN;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAC1C,QAAQ,EAAE,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,EACjC,aAAa,EAAE,GAAG,EAClB,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAChC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,GAC5B;IACD,GAAG,EAAE,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B,CAoCA;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAC/C,QAAQ,EAAE,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,EACjC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,GAC5B,OAAO,CAAC;IACT,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACjC,KAAK,EAAE,QAAQ,CAAC,OAAO,QAAQ,CAAC,CAAC;IACjC,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;CACpC,CAAC,CAmDD"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../../../packages/workers/api-node/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,WAAW,EAAc,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAI/C,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,EAEL,KAAK,sBAAsB,EAE3B,KAAK,kBAAkB,EACxB,MAAM,aAAa,CAAC;AAMrB,yCAAyC;AACzC,oBAAY,qBAAqB;IAC/B,2DAA2D;IAC3D,iBAAiB,IAAI;IACrB,sCAAsC;IACtC,MAAM,IAAI;CACX;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,IAAI,EAAE,WAAW,CAAC;CACnB,CAAC;AACF,yFAAyF;AACzF,MAAM,MAAM,kBAAkB,GAC1B,CAAC;IACC,wDAAwD;IACxD,IAAI,EAAE,qBAAqB,CAAC,iBAAiB,CAAC;CAC/C,GAAG,WAAW,CAAC,GAChB;IACE,8EAA8E;IAC9E,IAAI,EAAE,qBAAqB,CAAC,MAAM,CAAC;IACnC,sCAAsC;IACtC,UAAU,EAAE,WAAW,CAAC;IACxB,4BAA4B;IAC5B,MAAM,EAAE,kBAAkB,CAAC;CAC5B,CAAC;AAeN;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAC1C,QAAQ,EAAE,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,EACjC,aAAa,EAAE,GAAG,EAClB,MAAM,EAAE,sBAAsB,CAAC,MAAM,CAAC,EACtC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,GAC5B;IACD,GAAG,EAAE,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B,CAoCA;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAC/C,QAAQ,EAAE,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,EACjC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,GAC5B,OAAO,CAAC;IACT,MAAM,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACvC,KAAK,EAAE,QAAQ,CAAC,OAAO,QAAQ,CAAC,CAAC;IACjC,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;CACpC,CAAC,CAwDD"}
@@ -3,7 +3,7 @@ import { Listener } from "#@typeberry/listener";
3
3
  import { Level, Logger } from "#@typeberry/logger";
4
4
  import { assertNever } from "#@typeberry/utils";
5
5
  import { Channel } from "#@typeberry/workers-api";
6
- import { configTransferList, LmdbWorkerConfig } from "./config.js";
6
+ import { configTransferList, persistentConfigFromTransferable, } from "./config.js";
7
7
  import { logHeapLimit, workerResourceLimits } from "./host-environment.js";
8
8
  import { ThreadPort } from "./port.js";
9
9
  const logger = Logger.new(import.meta.filename, "workers");
@@ -70,13 +70,14 @@ export async function initWorker(protocol, paramsDecoder) {
70
70
  logger.trace `Worker ${protocol.name} starting.`;
71
71
  logHeapLimit(logger, protocol.name);
72
72
  return new Promise((resolve, reject) => {
73
- if (parentPort === null) {
73
+ const workerParentPort = parentPort;
74
+ if (workerParentPort === null) {
74
75
  throw new Error(`Unable to start ${protocol.name} worker. Not running in a worker thread!`);
75
76
  }
76
- parentPort.once("close", () => reject(new Error(`(${protocol.name}) parent port closed too early`)));
77
+ workerParentPort.once("close", () => reject(new Error(`(${protocol.name}) parent port closed too early`)));
77
78
  let isResolved = false;
78
79
  const threadComms = new Listener();
79
- parentPort.on("message", async (msg) => {
80
+ workerParentPort.on("message", async (msg) => {
80
81
  if (!isControlPlane(msg)) {
81
82
  logger.error `--> (${protocol.name}) received unexpected message: ${msg}`;
82
83
  return;
@@ -93,14 +94,19 @@ export async function initWorker(protocol, paramsDecoder) {
93
94
  }
94
95
  logger.trace `--> (${protocol.name}) received configuration.`;
95
96
  isResolved = true;
96
- const config = await LmdbWorkerConfig.fromTransferable(paramsDecoder, msg.config);
97
- const rxPort = ThreadPort.new(config.chainSpec, msg.parentPort);
98
- const comms = Channel.rx(protocol, rxPort);
99
- resolve({
100
- config,
101
- comms,
102
- threadComms,
103
- });
97
+ try {
98
+ const config = await persistentConfigFromTransferable(paramsDecoder, msg.config);
99
+ const rxPort = ThreadPort.new(config.chainSpec, msg.parentPort);
100
+ const comms = Channel.rx(protocol, rxPort);
101
+ resolve({
102
+ config,
103
+ comms,
104
+ threadComms,
105
+ });
106
+ }
107
+ catch (e) {
108
+ reject(e);
109
+ }
104
110
  return;
105
111
  }
106
112
  assertNever(msg.kind);
@@ -18,7 +18,7 @@ export async function main(config, comms, networkingComms) {
18
18
  await initWasm();
19
19
  logger.info `🎁 Block Authorship running`;
20
20
  const chainSpec = config.chainSpec;
21
- const db = config.openDatabase();
21
+ const db = await config.openDatabase();
22
22
  const blocks = db.getBlocksDb();
23
23
  const states = db.getStatesDb();
24
24
  const getBestState = () => {
@@ -9,7 +9,7 @@ export type CreateImporterOptions = {
9
9
  };
10
10
  export declare function createImporter(config: Config, options?: CreateImporterOptions): Promise<{
11
11
  importer: Importer;
12
- db: ReturnType<Config["openDatabase"]>;
12
+ db: Awaited<ReturnType<Config["openDatabase"]>>;
13
13
  }>;
14
14
  /**
15
15
  * The `BlockImporter` listens to `block` signals, where it expects
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../../../packages/workers/importer/main.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAGtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAGtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAMtE,MAAM,MAAM,MAAM,GAAG,YAAY,CAAC,cAAc,EAAE,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAE/F,MAAM,MAAM,qBAAqB,GAAG;IAClC,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC,CAAC;AAEF,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC;IACT,QAAQ,EAAE,QAAQ,CAAC;IACnB,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;CACxC,CAAC,CA8BD;AAED;;;;;GAKG;AACH,wBAAsB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,iBAwCjE"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../../../packages/workers/importer/main.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAGtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAGtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAMtE,MAAM,MAAM,MAAM,GAAG,YAAY,CAAC,cAAc,EAAE,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAE/F,MAAM,MAAM,qBAAqB,GAAG;IAClC,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC,CAAC;AAEF,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC;IACT,QAAQ,EAAE,QAAQ,CAAC;IACnB,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;CACjD,CAAC,CA8BD;AAED;;;;;GAKG;AACH,wBAAsB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,iBAwCjE"}
@@ -10,7 +10,7 @@ const keccakHasher = keccak.KeccakHasher.create();
10
10
  const blake2b = Blake2b.createHasher();
11
11
  export async function createImporter(config, options = {}) {
12
12
  const chainSpec = config.chainSpec;
13
- const db = config.openDatabase({ readonly: false });
13
+ const db = await config.openDatabase({ readonly: false });
14
14
  const pvm = config.workerParams.pvm;
15
15
  const blocks = db.getBlocksDb();
16
16
  const states = db.getStatesDb();
@@ -19,7 +19,7 @@ export async function main(config, comms, authorshipComms) {
19
19
  logger.trace `🛜 Network starting`;
20
20
  // Await the configuration object
21
21
  const chainSpec = config.chainSpec;
22
- const db = config.openDatabase();
22
+ const db = await config.openDatabase();
23
23
  const blocks = db.getBlocksDb();
24
24
  const params = config.workerParams;
25
25
  const key = await ed25519.privateKey(params.key);