@typeberry/lib 0.5.8 → 0.5.9-115148
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/package.json +1 -1
- package/packages/core/pvm-host-calls/host-calls-executor.js +3 -3
- package/packages/core/utils/debug.d.ts.map +1 -1
- package/packages/core/utils/debug.js +14 -3
- package/packages/jam/block/work-item-segment.d.ts +23 -6
- package/packages/jam/block/work-item-segment.d.ts.map +1 -1
- package/packages/jam/block/work-item-segment.js +24 -7
- package/packages/jam/block/work-item.d.ts +3 -3
- package/packages/jam/block/work-item.d.ts.map +1 -1
- package/packages/jam/block/work-item.js +7 -3
- package/packages/jam/block/work-package.d.ts +1 -1
- package/packages/jam/database/blocks.d.ts +3 -0
- package/packages/jam/database/blocks.d.ts.map +1 -1
- package/packages/jam/database/blocks.js +5 -0
- package/packages/jam/database/serialized-states-db.d.ts +1 -0
- package/packages/jam/database/serialized-states-db.d.ts.map +1 -1
- package/packages/jam/database/serialized-states-db.js +3 -0
- package/packages/jam/database/states.d.ts +3 -0
- package/packages/jam/database/states.d.ts.map +1 -1
- package/packages/jam/database/states.js +3 -0
- package/packages/jam/database-lmdb/blocks.d.ts +1 -0
- package/packages/jam/database-lmdb/blocks.d.ts.map +1 -1
- package/packages/jam/database-lmdb/blocks.js +5 -0
- package/packages/jam/database-lmdb/states.d.ts +1 -0
- package/packages/jam/database-lmdb/states.d.ts.map +1 -1
- package/packages/jam/database-lmdb/states.js +3 -0
- package/packages/jam/in-core/externalities/refine.d.ts +27 -6
- package/packages/jam/in-core/externalities/refine.d.ts.map +1 -1
- package/packages/jam/in-core/externalities/refine.js +40 -7
- package/packages/jam/in-core/externalities/refine.test.d.ts +2 -0
- package/packages/jam/in-core/externalities/refine.test.d.ts.map +1 -0
- package/packages/jam/in-core/externalities/refine.test.js +163 -0
- package/packages/jam/in-core/in-core.d.ts +1 -1
- package/packages/jam/in-core/in-core.d.ts.map +1 -1
- package/packages/jam/in-core/in-core.js +14 -5
- package/packages/jam/jam-host-calls/externalities/refine-externalities.d.ts +2 -0
- package/packages/jam/jam-host-calls/externalities/refine-externalities.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/externalities/refine-externalities.test.d.ts +2 -0
- package/packages/jam/jam-host-calls/externalities/refine-externalities.test.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/externalities/refine-externalities.test.js +5 -0
- package/packages/jam/jam-host-calls/refine/export.d.ts +1 -1
- package/packages/jam/jam-host-calls/refine/export.js +1 -1
- package/packages/jam/jam-host-calls/refine/export.test.js +3 -0
- package/packages/jam/jam-host-calls/refine/historical-lookup.d.ts +1 -1
- package/packages/jam/jam-host-calls/refine/historical-lookup.js +1 -1
- package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts +1 -1
- package/packages/jam/node/main-fuzz.d.ts.map +1 -1
- package/packages/jam/node/main-fuzz.js +5 -1
- package/packages/jam/node/main-importer.d.ts +2 -0
- package/packages/jam/node/main-importer.d.ts.map +1 -1
- package/packages/jam/node/main-importer.js +9 -7
- package/packages/jam/node/main.d.ts.map +1 -1
- package/packages/jam/node/main.js +2 -0
- package/packages/workers/block-authorship/main.d.ts.map +1 -1
- package/packages/workers/block-authorship/main.js +26 -0
- package/packages/workers/importer/finality.d.ts +32 -0
- package/packages/workers/importer/finality.d.ts.map +1 -0
- package/packages/workers/importer/finality.js +105 -0
- package/packages/workers/importer/finality.test.d.ts +2 -0
- package/packages/workers/importer/finality.test.d.ts.map +1 -0
- package/packages/workers/importer/finality.test.js +369 -0
- package/packages/workers/importer/importer.d.ts +3 -0
- package/packages/workers/importer/importer.d.ts.map +1 -1
- package/packages/workers/importer/importer.js +13 -0
- package/packages/workers/importer/main.d.ts.map +1 -1
- package/packages/workers/importer/main.js +9 -1
- package/packages/workers/importer/protocol.d.ts +10 -3
- package/packages/workers/importer/protocol.d.ts.map +1 -1
- package/packages/workers/importer/protocol.js +14 -4
package/package.json
CHANGED
|
@@ -52,7 +52,7 @@ export class HostCallsExecutor {
|
|
|
52
52
|
this.ioTracer?.logPanic(pvmInstance.getExitParam() ?? 0, pc, gas, registers);
|
|
53
53
|
return { consumedGas, status: ReturnStatus.PANIC };
|
|
54
54
|
}
|
|
55
|
-
async execute(pvmInstance) {
|
|
55
|
+
async execute(pvmInstance, initialPc) {
|
|
56
56
|
const ioTracker = this.ioTracer?.tracker() ?? null;
|
|
57
57
|
const registers = new HostCallRegisters(pvmInstance.registers.getAllEncoded());
|
|
58
58
|
registers.ioTracker = ioTracker;
|
|
@@ -60,7 +60,7 @@ export class HostCallsExecutor {
|
|
|
60
60
|
memory.ioTracker = ioTracker;
|
|
61
61
|
const gas = pvmInstance.gas;
|
|
62
62
|
// log start of execution (note the PVM initialisation should be logged already)
|
|
63
|
-
this.ioTracer?.logStart(
|
|
63
|
+
this.ioTracer?.logStart(initialPc, pvmInstance.gas.get(), registers);
|
|
64
64
|
for (;;) {
|
|
65
65
|
// execute program as much as we can
|
|
66
66
|
pvmInstance.runProgram();
|
|
@@ -120,7 +120,7 @@ export class HostCallsExecutor {
|
|
|
120
120
|
pvmInstance.resetJam(program, args, initialPc, initialGas);
|
|
121
121
|
try {
|
|
122
122
|
this.ioTracer?.logProgram(program, args);
|
|
123
|
-
return await this.execute(pvmInstance);
|
|
123
|
+
return await this.execute(pvmInstance, initialPc);
|
|
124
124
|
}
|
|
125
125
|
finally {
|
|
126
126
|
this.pvmInstanceManager.releaseInstance(pvmInstance);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../../../../packages/core/utils/debug.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,YAExB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG,cAA6F,CAAC;AAE9G;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CACnB,OAAO,EAAE,oBAAoB,EAC7B,SAAS,EAAE,OAAO,EAClB,GAAG,IAAI,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,SAAS,IAAI,IAAI,CAO3B;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAE/C;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,QAKpE;AAED,6BAA6B;AAC7B,wBAAgB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../../../../packages/core/utils/debug.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,YAExB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG,cAA6F,CAAC;AAE9G;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CACnB,OAAO,EAAE,oBAAoB,EAC7B,SAAS,EAAE,OAAO,EAClB,GAAG,IAAI,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,SAAS,IAAI,IAAI,CAO3B;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAE/C;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,QAKpE;AAED,6BAA6B;AAC7B,wBAAgB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,CAEzC;AAkED,sEAAsE;AACtE,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,gBAGjC;AAED,mFAAmF;AACnF,8BAAsB,SAAS;IAC7B,QAAQ;CAGT;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;;EAMpC"}
|
|
@@ -55,6 +55,12 @@ export function assertEmpty(value) {
|
|
|
55
55
|
}
|
|
56
56
|
/** Debug print an object. */
|
|
57
57
|
export function inspect(val) {
|
|
58
|
+
return inspectInternal(val, new WeakSet());
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Internal implementation of inspect with circular reference detection.
|
|
62
|
+
*/
|
|
63
|
+
function inspectInternal(val, seen) {
|
|
58
64
|
const nest = (v) => v
|
|
59
65
|
.split("\n")
|
|
60
66
|
.map((x) => ` ${x}`)
|
|
@@ -67,10 +73,10 @@ export function inspect(val) {
|
|
|
67
73
|
return "<undefined>";
|
|
68
74
|
}
|
|
69
75
|
if (Array.isArray(val)) {
|
|
70
|
-
return `[${val.map((x) =>
|
|
76
|
+
return `[${val.map((x) => inspectInternal(x, seen))}]`;
|
|
71
77
|
}
|
|
72
78
|
if (val instanceof Map) {
|
|
73
|
-
return
|
|
79
|
+
return inspectInternal(Array.from(val.entries()), seen);
|
|
74
80
|
}
|
|
75
81
|
if (typeof val === "number") {
|
|
76
82
|
return `${val} (0x${val.toString(16)})`;
|
|
@@ -78,6 +84,11 @@ export function inspect(val) {
|
|
|
78
84
|
if (typeof val !== "object") {
|
|
79
85
|
return `${val}`;
|
|
80
86
|
}
|
|
87
|
+
// Check for circular references
|
|
88
|
+
if (seen.has(val)) {
|
|
89
|
+
return "<circular>";
|
|
90
|
+
}
|
|
91
|
+
seen.add(val);
|
|
81
92
|
if ("toString" in val &&
|
|
82
93
|
Object.prototype.toString !== val.toString &&
|
|
83
94
|
WithDebug.prototype.toString !== val.toString) {
|
|
@@ -90,7 +101,7 @@ export function inspect(val) {
|
|
|
90
101
|
for (const k of keys) {
|
|
91
102
|
if (typeof k === "string") {
|
|
92
103
|
v += oneLine ? "" : "\n ";
|
|
93
|
-
v += `${k}: ${nest(
|
|
104
|
+
v += `${k}: ${nest(inspectInternal(val[k], seen))}`;
|
|
94
105
|
v += oneLine ? "," : "";
|
|
95
106
|
}
|
|
96
107
|
}
|
|
@@ -1,13 +1,30 @@
|
|
|
1
1
|
import type { Bytes } from "#@typeberry/bytes";
|
|
2
2
|
import { type U16 } from "#@typeberry/numbers";
|
|
3
3
|
import { type Opaque } from "#@typeberry/utils";
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* `W_E`: The basic size of erasure-coded pieces in octets. See equation H.6.
|
|
6
|
+
* https://graypaper.fluffylabs.dev/#/ab2cdbd/449600449700?v=0.7.2
|
|
7
|
+
*/
|
|
5
8
|
export declare const W_E = 684;
|
|
6
|
-
/**
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
/**
|
|
10
|
+
* `W_P`: The size of an exported segment in erasure-coded pieces in octets.
|
|
11
|
+
* https://graypaper.fluffylabs.dev/#/ab2cdbd/44b10044b200?v=0.7.2
|
|
12
|
+
*/
|
|
13
|
+
export declare const W_P = 6;
|
|
14
|
+
/**
|
|
15
|
+
* `W_M`: The maximum number of imports in a work-package manifest.
|
|
16
|
+
* https://graypaper.fluffylabs.dev/#/ab2cdbd/44ad0044ae00?v=0.7.2
|
|
17
|
+
*/
|
|
18
|
+
export declare const MAX_NUMBER_OF_IMPORTS_WP = 3072;
|
|
19
|
+
/**
|
|
20
|
+
* `W_X`: The maximum number of exports in a work-package manifest.
|
|
21
|
+
* https://graypaper.fluffylabs.dev/#/ab2cdbd/44be0044bf00?v=0.7.2
|
|
22
|
+
*/
|
|
23
|
+
export declare const MAX_NUMBER_OF_EXPORTS_WP = 3072;
|
|
24
|
+
/**
|
|
25
|
+
* `W_G = W_E * W_P`: Exported segment size in bytes.
|
|
26
|
+
* https://graypaper.fluffylabs.dev/#/ab2cdbd/449a00449b00?v=0.7.2
|
|
27
|
+
*/
|
|
11
28
|
export declare const SEGMENT_BYTES: number;
|
|
12
29
|
export type SEGMENT_BYTES = typeof SEGMENT_BYTES;
|
|
13
30
|
/** Exported segment data. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"work-item-segment.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/block/work-item-segment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAY,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE7D
|
|
1
|
+
{"version":3,"file":"work-item-segment.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/block/work-item-segment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAY,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE7D;;;GAGG;AACH,eAAO,MAAM,GAAG,MAAM,CAAC;AAEvB;;;GAGG;AACH,eAAO,MAAM,GAAG,IAAI,CAAC;AAErB;;;GAGG;AACH,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,aAAa,QAAY,CAAC;AACvC,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC;AAEjD,6BAA6B;AAC7B,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;AAE3C,2BAA2B;AAC3B,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;AAC9D,uDAAuD;AACvD,eAAO,MAAM,iBAAiB,GAAI,GAAG,MAAM,KAAG,YAAyC,CAAC"}
|
|
@@ -1,12 +1,29 @@
|
|
|
1
1
|
import { tryAsU16 } from "#@typeberry/numbers";
|
|
2
2
|
import { asOpaqueType } from "#@typeberry/utils";
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* `W_E`: The basic size of erasure-coded pieces in octets. See equation H.6.
|
|
5
|
+
* https://graypaper.fluffylabs.dev/#/ab2cdbd/449600449700?v=0.7.2
|
|
6
|
+
*/
|
|
4
7
|
export const W_E = 684;
|
|
5
|
-
/**
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
/**
|
|
9
|
+
* `W_P`: The size of an exported segment in erasure-coded pieces in octets.
|
|
10
|
+
* https://graypaper.fluffylabs.dev/#/ab2cdbd/44b10044b200?v=0.7.2
|
|
11
|
+
*/
|
|
12
|
+
export const W_P = 6;
|
|
13
|
+
/**
|
|
14
|
+
* `W_M`: The maximum number of imports in a work-package manifest.
|
|
15
|
+
* https://graypaper.fluffylabs.dev/#/ab2cdbd/44ad0044ae00?v=0.7.2
|
|
16
|
+
*/
|
|
17
|
+
export const MAX_NUMBER_OF_IMPORTS_WP = 3072;
|
|
18
|
+
/**
|
|
19
|
+
* `W_X`: The maximum number of exports in a work-package manifest.
|
|
20
|
+
* https://graypaper.fluffylabs.dev/#/ab2cdbd/44be0044bf00?v=0.7.2
|
|
21
|
+
*/
|
|
22
|
+
export const MAX_NUMBER_OF_EXPORTS_WP = 3072;
|
|
23
|
+
/**
|
|
24
|
+
* `W_G = W_E * W_P`: Exported segment size in bytes.
|
|
25
|
+
* https://graypaper.fluffylabs.dev/#/ab2cdbd/449a00449b00?v=0.7.2
|
|
26
|
+
*/
|
|
27
|
+
export const SEGMENT_BYTES = W_E * W_P;
|
|
11
28
|
/** Attempt to convert a number into `SegmentIndex`. */
|
|
12
29
|
export const tryAsSegmentIndex = (v) => asOpaqueType(tryAsU16(v));
|
|
@@ -6,7 +6,7 @@ import { type U16, type U32 } from "#@typeberry/numbers";
|
|
|
6
6
|
import { type Opaque, WithDebug } from "#@typeberry/utils";
|
|
7
7
|
import type { ServiceGas, ServiceId } from "./common.js";
|
|
8
8
|
import type { CodeHash } from "./hash.js";
|
|
9
|
-
import {
|
|
9
|
+
import { MAX_NUMBER_OF_IMPORTS_WP, type SegmentIndex } from "./work-item-segment.js";
|
|
10
10
|
type WorkItemExtrinsicHash = Opaque<OpaqueHash, "ExtrinsicHash">;
|
|
11
11
|
/**
|
|
12
12
|
* An opaque piece of data that the work item brings in.
|
|
@@ -80,7 +80,7 @@ export declare class WorkItem extends WithDebug {
|
|
|
80
80
|
/** `a`: accumulate execution gas limit */
|
|
81
81
|
readonly accumulateGasLimit: ServiceGas;
|
|
82
82
|
/** `i`: sequence of imported data segments, which identify a prior exported segment. */
|
|
83
|
-
readonly importSegments: KnownSizeArray<ImportSpec, `Less than ${typeof
|
|
83
|
+
readonly importSegments: KnownSizeArray<ImportSpec, `Less than ${typeof MAX_NUMBER_OF_IMPORTS_WP}`>;
|
|
84
84
|
/** `x`: sequence of blob hashes and lengths to be introduced in this block */
|
|
85
85
|
readonly extrinsic: WorkItemExtrinsicSpec[];
|
|
86
86
|
/** `e`: number of data segments exported by this work item. */
|
|
@@ -92,7 +92,7 @@ export declare class WorkItem extends WithDebug {
|
|
|
92
92
|
accumulateGasLimit: import("@typeberry/codec").Descriptor<bigint & import("@typeberry/numbers").WithBytesRepresentation<8> & import("@typeberry/utils").WithOpaque<"ServiceGas[u64]">, Bytes<8>>;
|
|
93
93
|
exportCount: import("@typeberry/codec").Descriptor<U16, Bytes<2>>;
|
|
94
94
|
payload: import("@typeberry/codec").Descriptor<BytesBlob, BytesBlob>;
|
|
95
|
-
importSegments: import("@typeberry/codec").Descriptor<readonly ImportSpec[] & import("@typeberry/utils").WithOpaque<"Less than
|
|
95
|
+
importSegments: import("@typeberry/codec").Descriptor<readonly ImportSpec[] & import("@typeberry/utils").WithOpaque<"Less than 3072">, import("@typeberry/codec").SequenceView<ImportSpec, import("@typeberry/codec").ViewOf<ImportSpec, {
|
|
96
96
|
treeRoot: import("@typeberry/codec").Descriptor<Bytes<32>, Bytes<32>>;
|
|
97
97
|
index: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<2> & import("@typeberry/utils").WithOpaque<"Segment Index [U16]">, Bytes<2>>;
|
|
98
98
|
}>>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"work-item.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/block/work-item.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,KAAK,WAAW,EAAS,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAe,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAU,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,KAAK,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"work-item.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/block/work-item.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,KAAK,WAAW,EAAS,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAe,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAU,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,KAAK,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,wBAAwB,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAErF,KAAK,qBAAqB,GAAG,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;AAEjE;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAAG,cAAc,CAChD,KAAK,CAAC,GAAG,CAAC,EACV,6DAA6D,CAC9D,CAAC;AAEF;;;GAGG;AACH,qBAAa,UAAW,SAAQ,SAAS;IAWrC;;;OAGG;aACa,QAAQ,EAAE,UAAU;IACpC,2CAA2C;aAC3B,KAAK,EAAE,YAAY;IAhBrC,MAAM,CAAC,KAAK;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,WAAW,CAAC,UAAU,CAAC;IAI1D,OAAO;CAWR;AAED,gDAAgD;AAChD,qBAAa,qBAAsB,SAAQ,SAAS;IAWhD,+FAA+F;aAC/E,IAAI,EAAE,qBAAqB;IAC3C,2DAA2D;aAC3C,GAAG,EAAE,GAAG;IAb1B,MAAM,CAAC,KAAK;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,WAAW,CAAC,qBAAqB,CAAC;IAI/D,OAAO;CAQR;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,QAAQ,EAAE,qSAgC5D;AAED;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,SAAS;IA2CnC,2BAA2B;aACX,OAAO,EAAE,SAAS;IAClC;;;;;OAKG;aACa,QAAQ,EAAE,QAAQ;IAClC,wBAAwB;aACR,OAAO,EAAE,SAAS;IAClC,sCAAsC;aACtB,cAAc,EAAE,UAAU;IAC1C,0CAA0C;aAC1B,kBAAkB,EAAE,UAAU;IAC9C,wFAAwF;aACxE,cAAc,EAAE,cAAc,CAAC,UAAU,EAAE,aAAa,OAAO,wBAAwB,EAAE,CAAC;IAC1G,8EAA8E;aAC9D,SAAS,EAAE,qBAAqB,EAAE;IAClD,+DAA+D;aAC/C,WAAW,EAAE,GAAG;IA9DlC,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;QAiBT;IAEH,MAAM,CAAC,MAAM,CAAC,EACZ,OAAO,EACP,QAAQ,EACR,OAAO,EACP,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,SAAS,EACT,WAAW,GACZ,EAAE,WAAW,CAAC,QAAQ,CAAC;IAaxB,OAAO;CAyBR"}
|
|
@@ -4,7 +4,7 @@ import { HASH_SIZE } from "#@typeberry/hash";
|
|
|
4
4
|
import { sumU32 } from "#@typeberry/numbers";
|
|
5
5
|
import { WithDebug } from "#@typeberry/utils";
|
|
6
6
|
import { codecKnownSizeArray } from "./codec-utils.js";
|
|
7
|
-
import {
|
|
7
|
+
import { MAX_NUMBER_OF_IMPORTS_WP } from "./work-item-segment.js";
|
|
8
8
|
/**
|
|
9
9
|
* Definition of data segment that was exported by some work package earlier
|
|
10
10
|
* and now is being imported by another work-item.
|
|
@@ -103,13 +103,17 @@ export class WorkItem extends WithDebug {
|
|
|
103
103
|
codeHash: codec.bytes(HASH_SIZE).asOpaque(),
|
|
104
104
|
refineGasLimit: codec.u64.asOpaque(),
|
|
105
105
|
accumulateGasLimit: codec.u64.asOpaque(),
|
|
106
|
+
// TODO: [MaSo] It should be validated to not exceed W_X
|
|
107
|
+
// https://graypaper.fluffylabs.dev/#/ab2cdbd/1a0b011a1c01?v=0.7.2
|
|
106
108
|
exportCount: codec.u16,
|
|
107
109
|
payload: codec.blob,
|
|
108
110
|
importSegments: codecKnownSizeArray(ImportSpec.Codec, {
|
|
109
111
|
minLength: 0,
|
|
110
|
-
maxLength:
|
|
111
|
-
typicalLength:
|
|
112
|
+
maxLength: MAX_NUMBER_OF_IMPORTS_WP,
|
|
113
|
+
typicalLength: MAX_NUMBER_OF_IMPORTS_WP,
|
|
112
114
|
}),
|
|
115
|
+
// TODO: [MaSo] It should be validated to not exceed T = 128
|
|
116
|
+
// https://graypaper.fluffylabs.dev/#/ab2cdbd/1a0b011a1c01?v=0.7.2
|
|
113
117
|
extrinsic: codec.sequenceVarLen(WorkItemExtrinsicSpec.Codec),
|
|
114
118
|
});
|
|
115
119
|
static create({ service, codeHash, payload, refineGasLimit, accumulateGasLimit, importSegments, extrinsic, exportCount, }) {
|
|
@@ -63,7 +63,7 @@ export declare class WorkPackage extends WithDebug {
|
|
|
63
63
|
accumulateGasLimit: import("@typeberry/codec").Descriptor<bigint & import("@typeberry/numbers").WithBytesRepresentation<8> & import("@typeberry/utils").WithOpaque<"ServiceGas[u64]">, import("@typeberry/bytes").Bytes<8>>;
|
|
64
64
|
exportCount: import("@typeberry/codec").Descriptor<import("@typeberry/numbers").U16, import("@typeberry/bytes").Bytes<2>>;
|
|
65
65
|
payload: import("@typeberry/codec").Descriptor<BytesBlob, BytesBlob>;
|
|
66
|
-
importSegments: import("@typeberry/codec").Descriptor<readonly import("./work-item.js").ImportSpec[] & import("@typeberry/utils").WithOpaque<"Less than
|
|
66
|
+
importSegments: import("@typeberry/codec").Descriptor<readonly import("./work-item.js").ImportSpec[] & import("@typeberry/utils").WithOpaque<"Less than 3072">, import("@typeberry/codec").SequenceView<import("./work-item.js").ImportSpec, import("@typeberry/codec").ViewOf<import("./work-item.js").ImportSpec, {
|
|
67
67
|
treeRoot: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32>, import("@typeberry/bytes").Bytes<32>>;
|
|
68
68
|
index: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<2> & import("@typeberry/utils").WithOpaque<"Segment Index [U16]">, import("@typeberry/bytes").Bytes<2>>;
|
|
69
69
|
}>>>;
|
|
@@ -22,6 +22,8 @@ export interface BlocksDb {
|
|
|
22
22
|
* NOTE: this is not extrinsic hash!
|
|
23
23
|
*/
|
|
24
24
|
getExtrinsic(hash: HeaderHash): ExtrinsicView | null;
|
|
25
|
+
/** Mark a block as no longer needed. Backend may remove its data. */
|
|
26
|
+
markUnused(hash: HeaderHash): void;
|
|
25
27
|
/** Close the database and free resources. */
|
|
26
28
|
close(): Promise<void>;
|
|
27
29
|
}
|
|
@@ -43,6 +45,7 @@ export declare class InMemoryBlocks implements BlocksDb {
|
|
|
43
45
|
insertBlock(block: WithHash<HeaderHash, BlockView>): Promise<void>;
|
|
44
46
|
getHeader(hash: HeaderHash): HeaderView | null;
|
|
45
47
|
getExtrinsic(hash: HeaderHash): ExtrinsicView | null;
|
|
48
|
+
markUnused(hash: HeaderHash): void;
|
|
46
49
|
close(): Promise<void>;
|
|
47
50
|
}
|
|
48
51
|
//# sourceMappingURL=blocks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/database/blocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGxG,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,gDAAgD;IAChD,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,yCAAyC;IACzC,iBAAiB,IAAI,UAAU,CAAC;IAChC,wDAAwD;IACxD,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChF,oDAAoD;IACpD,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI,CAAC;IACzD,sDAAsD;IACtD,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,+BAA+B;IAC/B,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC;IAC/C;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI,CAAC;IACrD,6CAA6C;IAC7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,kDAAkD;AAClD,qBAAa,cAAe,YAAW,QAAQ;IAC7C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgE;IAC9F,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAmE;IAC1G,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAmE;IAC7G,OAAO,CAAC,cAAc,CAAgD;IAEtE,8BAA8B;IAC9B,MAAM,CAAC,GAAG;IAIV,+DAA+D;IAC/D,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE;IAQnE,OAAO;IAEP,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlD,iBAAiB,IAAI,UAAU;IAI/B,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/E,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI;IAIxD,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlE,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI;IAI9C,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/database/blocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGxG,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,gDAAgD;IAChD,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,yCAAyC;IACzC,iBAAiB,IAAI,UAAU,CAAC;IAChC,wDAAwD;IACxD,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChF,oDAAoD;IACpD,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI,CAAC;IACzD,sDAAsD;IACtD,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,+BAA+B;IAC/B,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC;IAC/C;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI,CAAC;IACrD,qEAAqE;IACrE,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACnC,6CAA6C;IAC7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,kDAAkD;AAClD,qBAAa,cAAe,YAAW,QAAQ;IAC7C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgE;IAC9F,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAmE;IAC1G,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAmE;IAC7G,OAAO,CAAC,cAAc,CAAgD;IAEtE,8BAA8B;IAC9B,MAAM,CAAC,GAAG;IAIV,+DAA+D;IAC/D,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE;IAQnE,OAAO;IAEP,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlD,iBAAiB,IAAI,UAAU;IAI/B,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/E,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI;IAIxD,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlE,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI;IAI9C,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI;IAIpD,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAM5B,KAAK;CACZ"}
|
|
@@ -45,5 +45,10 @@ export class InMemoryBlocks {
|
|
|
45
45
|
getExtrinsic(hash) {
|
|
46
46
|
return this.extrinsicsByHeaderHash.get(hash) ?? null;
|
|
47
47
|
}
|
|
48
|
+
markUnused(hash) {
|
|
49
|
+
this.headersByHash.delete(hash);
|
|
50
|
+
this.extrinsicsByHeaderHash.delete(hash);
|
|
51
|
+
this.postStateRootByHeaderHash.delete(hash);
|
|
52
|
+
}
|
|
48
53
|
async close() { }
|
|
49
54
|
}
|
|
@@ -27,6 +27,7 @@ export declare class InMemorySerializedStates implements StatesDb<SerializedStat
|
|
|
27
27
|
getStateRoot(state: SerializedState<LeafDb>): Promise<StateRootHash>;
|
|
28
28
|
updateAndSetState(header: HeaderHash, state: SerializedState<LeafDb>, update: Partial<State & ServicesUpdate>): Promise<Result<OK, StateUpdateError>>;
|
|
29
29
|
getState(header: HeaderHash): SerializedState<LeafDb> | null;
|
|
30
|
+
markUnused(header: HeaderHash): void;
|
|
30
31
|
close(): Promise<void>;
|
|
31
32
|
}
|
|
32
33
|
//# sourceMappingURL=serialized-states-db.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialized-states-db.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/database/serialized-states-db.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGlE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EACL,eAAe,EACf,KAAK,YAAY,EAGlB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE5E,qCAAqC;AACrC,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;AAEhG,sCAAsC;AACtC,qBAAa,wBAAyB,YAAW,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,YAAY,CAAC;IAc1G,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAd1B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAyE;IAC5F,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8D;WAE1E,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE;QAAE,SAAS,EAAE,SAAS,CAAA;KAAE;IAKxD,MAAM,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;QAAE,SAAS,EAAE,SAAS,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE;IAIpF,OAAO;IAKD,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAiBxG,YAAY,CAAC,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;IAIpE,iBAAiB,CACrB,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,EAC9B,MAAM,EAAE,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,GACtC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAsBxC,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"serialized-states-db.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/database/serialized-states-db.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGlE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EACL,eAAe,EACf,KAAK,YAAY,EAGlB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE5E,qCAAqC;AACrC,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;AAEhG,sCAAsC;AACtC,qBAAa,wBAAyB,YAAW,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,YAAY,CAAC;IAc1G,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAd1B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAyE;IAC5F,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8D;WAE1E,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE;QAAE,SAAS,EAAE,SAAS,CAAA;KAAE;IAKxD,MAAM,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;QAAE,SAAS,EAAE,SAAS,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE;IAIpF,OAAO;IAKD,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAiBxG,YAAY,CAAC,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;IAIpE,iBAAiB,CACrB,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,EAC9B,MAAM,EAAE,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,GACtC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAsBxC,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,IAAI;IAkB5D,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAI9B,KAAK;CACZ"}
|
|
@@ -33,6 +33,8 @@ export interface StatesDb<T extends State = State> {
|
|
|
33
33
|
updateAndSetState(header: HeaderHash, state: T, update: Partial<State & ServicesUpdate>): Promise<Result<OK, StateUpdateError>>;
|
|
34
34
|
/** Retrieve posterior state of given header. */
|
|
35
35
|
getState(header: HeaderHash): T | null;
|
|
36
|
+
/** Mark state as no longer needed. Backend may remove it asynchronously. */
|
|
37
|
+
markUnused(header: HeaderHash): void;
|
|
36
38
|
/** Close the database and free resources. */
|
|
37
39
|
close(): Promise<void>;
|
|
38
40
|
}
|
|
@@ -46,6 +48,7 @@ export declare class InMemoryStates implements StatesDb<InMemoryState> {
|
|
|
46
48
|
/** Insert a full state into the database. */
|
|
47
49
|
insertInitialState(headerHash: HeaderHash, state: InMemoryState): Promise<Result<OK, StateUpdateError>>;
|
|
48
50
|
getState(headerHash: HeaderHash): InMemoryState | null;
|
|
51
|
+
markUnused(header: HeaderHash): void;
|
|
49
52
|
close(): Promise<void>;
|
|
50
53
|
}
|
|
51
54
|
//# sourceMappingURL=states.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"states.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/database/states.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAElE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,KAAK,cAAc,EAAE,KAAK,KAAK,EAAe,MAAM,kBAAkB,CAAC;AAE/F,OAAO,EAAe,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE3D,0DAA0D;AAC1D,oBAAY,gBAAgB;IAC1B,oDAAoD;IACpD,QAAQ,IAAI;IACZ,iDAAiD;IACjD,MAAM,IAAI;CACX;AAED,wFAAwF;AACxF,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,KAAK;IACrC,qEAAqE;IACrE,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;CACpG;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK;IAC/C,4CAA4C;IAC5C,YAAY,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAE/C;;;;OAIG;IACH,iBAAiB,CACf,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,CAAC,EACR,MAAM,EAAE,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,GACtC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEzC,gDAAgD;IAChD,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC;IAEvC,6CAA6C;IAC7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,qBAAa,cAAe,YAAW,QAAQ,CAAC,aAAa,CAAC;IAIhD,OAAO,CAAC,QAAQ,CAAC,IAAI;IAHjC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAmE;IACtF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;gBAEd,IAAI,EAAE,SAAS;IAItC,iBAAiB,CACrB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,GACtC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAgBlC,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAKhE,6CAA6C;IACvC,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAM7G,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"states.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/database/states.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAElE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,KAAK,cAAc,EAAE,KAAK,KAAK,EAAe,MAAM,kBAAkB,CAAC;AAE/F,OAAO,EAAe,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE3D,0DAA0D;AAC1D,oBAAY,gBAAgB;IAC1B,oDAAoD;IACpD,QAAQ,IAAI;IACZ,iDAAiD;IACjD,MAAM,IAAI;CACX;AAED,wFAAwF;AACxF,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,KAAK;IACrC,qEAAqE;IACrE,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;CACpG;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK;IAC/C,4CAA4C;IAC5C,YAAY,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAE/C;;;;OAIG;IACH,iBAAiB,CACf,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,CAAC,EACR,MAAM,EAAE,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,GACtC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEzC,gDAAgD;IAChD,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC;IAEvC,4EAA4E;IAC5E,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAErC,6CAA6C;IAC7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,qBAAa,cAAe,YAAW,QAAQ,CAAC,aAAa,CAAC;IAIhD,OAAO,CAAC,QAAQ,CAAC,IAAI;IAHjC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAmE;IACtF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;gBAEd,IAAI,EAAE,SAAS;IAItC,iBAAiB,CACrB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,GACtC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAgBlC,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAKhE,6CAA6C;IACvC,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAM7G,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI;IAStD,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAI9B,KAAK;CACZ"}
|
|
@@ -17,6 +17,7 @@ export declare class LmdbBlocks implements BlocksDb {
|
|
|
17
17
|
getBestHeaderHash(): HeaderHash;
|
|
18
18
|
getHeader(hash: HeaderHash): HeaderView | null;
|
|
19
19
|
getExtrinsic(hash: HeaderHash): ExtrinsicView | null;
|
|
20
|
+
markUnused(hash: HeaderHash): void;
|
|
20
21
|
close(): Promise<void>;
|
|
21
22
|
}
|
|
22
23
|
//# sourceMappingURL=blocks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/database-lmdb/blocks.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EAEd,KAAK,aAAa,EAElB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAS,MAAM,WAAW,CAAC;AAQjD,qBAAa,UAAW,YAAW,QAAQ;IAMvC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI;IANvB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;gBAGpB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,QAAQ;IAa3B,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrF,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI;IAQlD,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IASlE,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,iBAAiB,IAAI,UAAU;IAS/B,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI;IAS9C,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/database-lmdb/blocks.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EAEd,KAAK,aAAa,EAElB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAS,MAAM,WAAW,CAAC;AAQjD,qBAAa,UAAW,YAAW,QAAQ;IAMvC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI;IANvB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;gBAGpB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,QAAQ;IAa3B,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrF,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI;IAQlD,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IASlE,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,iBAAiB,IAAI,UAAU;IAS/B,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI;IAS9C,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI;IAQpD,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAM5B,KAAK;CAGZ"}
|
|
@@ -68,6 +68,11 @@ export class LmdbBlocks {
|
|
|
68
68
|
}
|
|
69
69
|
return Decoder.decodeObject(Extrinsic.Codec.View, data, this.chainSpec);
|
|
70
70
|
}
|
|
71
|
+
markUnused(hash) {
|
|
72
|
+
this.headers.removeSync(hash.raw);
|
|
73
|
+
this.extrinsics.removeSync(hash.raw);
|
|
74
|
+
this.postStateRoots.removeSync(hash.raw);
|
|
75
|
+
}
|
|
71
76
|
async close() {
|
|
72
77
|
await Promise.all([this.headers.close(), this.extrinsics.close(), this.postStateRoots.close()]);
|
|
73
78
|
}
|
|
@@ -67,6 +67,7 @@ export declare class LmdbStates implements StatesDb<SerializedState<LeafDb>>, In
|
|
|
67
67
|
updateAndSetState(headerHash: HeaderHash, state: SerializedState<LeafDb>, update: Partial<State & ServicesUpdate>): Promise<Result<OK, StateUpdateError>>;
|
|
68
68
|
getStateRoot(state: SerializedState<LeafDb>): Promise<StateRootHash>;
|
|
69
69
|
getState(root: HeaderHash): SerializedState<LeafDb> | null;
|
|
70
|
+
markUnused(header: HeaderHash): void;
|
|
70
71
|
close(): Promise<void>;
|
|
71
72
|
}
|
|
72
73
|
//# sourceMappingURL=states.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"states.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/database-lmdb/states.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGlE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,EAAE,KAAK,QAAQ,EAAE,gBAAgB,EAAe,MAAM,qBAAqB,CAAC;AAC9G,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,iBAAiB,CAAC;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAY,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAgD,MAAM,gCAAgC,CAAC;AAG/G,OAAO,EAAE,EAAE,EAAE,MAAM,EAAkB,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAS,MAAM,WAAW,CAAC;AAGjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEH,qBAAa,UAAW,YAAW,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,YAAY,CAAC;IAK5F,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI;IANvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;gBAGZ,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,QAAQ;IAM3B,kBAAkB,CACtB,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,YAAY,GAC5B,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;YAQ1B,eAAe;IA0BvB,iBAAiB,CACrB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,EAC9B,MAAM,EAAE,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,GACtC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAWlC,YAAY,CAAC,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;IAI1E,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"states.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/database-lmdb/states.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGlE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,EAAE,KAAK,QAAQ,EAAE,gBAAgB,EAAe,MAAM,qBAAqB,CAAC;AAC9G,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,iBAAiB,CAAC;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAY,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAgD,MAAM,gCAAgC,CAAC;AAG/G,OAAO,EAAE,EAAE,EAAE,MAAM,EAAkB,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAS,MAAM,WAAW,CAAC;AAGjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEH,qBAAa,UAAW,YAAW,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,YAAY,CAAC;IAK5F,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI;IANvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;gBAGZ,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,QAAQ;IAM3B,kBAAkB,CACtB,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,YAAY,GAC5B,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;YAQ1B,eAAe;IA0BvB,iBAAiB,CACrB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,EAC9B,MAAM,EAAE,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,GACtC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAWlC,YAAY,CAAC,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;IAI1E,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,IAAI;IAsB1D,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAI9B,KAAK;CAGZ"}
|
|
@@ -125,6 +125,9 @@ export class LmdbStates {
|
|
|
125
125
|
}
|
|
126
126
|
return SerializedState.new(this.spec, this.blake2b, leafDbResult.ok);
|
|
127
127
|
}
|
|
128
|
+
markUnused(header) {
|
|
129
|
+
this.states.removeSync(header.raw);
|
|
130
|
+
}
|
|
128
131
|
async close() {
|
|
129
132
|
await Promise.all([this.states.close(), this.values.close()]);
|
|
130
133
|
}
|
|
@@ -1,15 +1,36 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type Segment, type SegmentIndex, type ServiceId } from "#@typeberry/block";
|
|
2
2
|
import type { BytesBlob } from "#@typeberry/bytes";
|
|
3
3
|
import type { Blake2bHash } from "#@typeberry/hash";
|
|
4
|
-
import type
|
|
4
|
+
import { type MachineId, type MachineResult, type MemoryOperation, type NoMachineError, type PagesError, type PeekPokeError, type ProgramCounter, type RefineExternalities, SegmentExportError, type ZeroVoidError } from "#@typeberry/jam-host-calls";
|
|
5
5
|
import type { U64 } from "#@typeberry/numbers";
|
|
6
6
|
import type { HostCallMemory, HostCallRegisters } from "#@typeberry/pvm-host-calls";
|
|
7
7
|
import type { BigGas } from "#@typeberry/pvm-interface";
|
|
8
8
|
import type { ProgramDecoderError } from "#@typeberry/pvm-interpreter";
|
|
9
|
-
import type {
|
|
9
|
+
import type { State } from "#@typeberry/state";
|
|
10
|
+
import { type OK, Result } from "#@typeberry/utils";
|
|
11
|
+
/**
|
|
12
|
+
* Parameters required to create a RefineExternalitiesImpl.
|
|
13
|
+
*/
|
|
14
|
+
export type RefineExternalitiesParams = {
|
|
15
|
+
/** The service currently being refined. */
|
|
16
|
+
currentServiceId: ServiceId;
|
|
17
|
+
/** State at the lookup anchor block, used for historical preimage lookups. */
|
|
18
|
+
lookupState: State;
|
|
19
|
+
/** Export offset -- sum of exports from prior work items in this package. */
|
|
20
|
+
exportOffset: number;
|
|
21
|
+
};
|
|
10
22
|
export declare class RefineExternalitiesImpl implements RefineExternalities {
|
|
11
|
-
|
|
23
|
+
/** Service being refined (used as default for historicalLookup). */
|
|
24
|
+
private readonly currentServiceId;
|
|
25
|
+
/** State at the lookup anchor for preimage lookups. */
|
|
26
|
+
private readonly lookupState;
|
|
27
|
+
/** Segments exported by this work item during refinement. */
|
|
28
|
+
private readonly exportedSegments;
|
|
29
|
+
/** Offset for segment indexing (sum of exports from prior items). */
|
|
30
|
+
private readonly exportOffset;
|
|
31
|
+
static create(params: RefineExternalitiesParams): RefineExternalitiesImpl;
|
|
12
32
|
private constructor();
|
|
33
|
+
getExportedSegments(): readonly Segment[];
|
|
13
34
|
machineExpunge(_machineIndex: MachineId): Promise<Result<ProgramCounter, NoMachineError>>;
|
|
14
35
|
machinePages(_machineIndex: MachineId, _pageStart: U64, _pageCount: U64, _requestType: MemoryOperation | null): Promise<Result<OK, PagesError>>;
|
|
15
36
|
machineVoidPages(_machineIndex: MachineId, _pageStart: U64, _pageCount: U64): Promise<Result<OK, ZeroVoidError>>;
|
|
@@ -18,7 +39,7 @@ export declare class RefineExternalitiesImpl implements RefineExternalities {
|
|
|
18
39
|
machinePokeInto(_machineIndex: MachineId, _sourceStart: U64, _destinationStart: U64, _length: U64, _source: HostCallMemory): Promise<Result<OK, PeekPokeError>>;
|
|
19
40
|
machineInit(_code: BytesBlob, _programCounter: ProgramCounter): Promise<Result<MachineId, ProgramDecoderError>>;
|
|
20
41
|
machineInvoke(_machineIndex: MachineId, _gas: BigGas, _registers: HostCallRegisters): Promise<Result<MachineResult, NoMachineError>>;
|
|
21
|
-
exportSegment(
|
|
22
|
-
historicalLookup(
|
|
42
|
+
exportSegment(segment: Segment): Result<SegmentIndex, SegmentExportError>;
|
|
43
|
+
historicalLookup(serviceId: ServiceId | null, hash: Blake2bHash): Promise<BytesBlob | null>;
|
|
23
44
|
}
|
|
24
45
|
//# sourceMappingURL=refine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refine.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/in-core/externalities/refine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"refine.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/in-core/externalities/refine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,26 @@
|
|
|
1
|
+
import { MAX_NUMBER_OF_EXPORTS_WP, tryAsSegmentIndex, } from "#@typeberry/block";
|
|
2
|
+
import { SegmentExportError, } from "#@typeberry/jam-host-calls";
|
|
3
|
+
import { Result } from "#@typeberry/utils";
|
|
1
4
|
export class RefineExternalitiesImpl {
|
|
2
|
-
|
|
3
|
-
|
|
5
|
+
/** Service being refined (used as default for historicalLookup). */
|
|
6
|
+
currentServiceId;
|
|
7
|
+
/** State at the lookup anchor for preimage lookups. */
|
|
8
|
+
lookupState;
|
|
9
|
+
/** Segments exported by this work item during refinement. */
|
|
10
|
+
exportedSegments = [];
|
|
11
|
+
/** Offset for segment indexing (sum of exports from prior items). */
|
|
12
|
+
exportOffset;
|
|
13
|
+
static create(params) {
|
|
14
|
+
return new RefineExternalitiesImpl(params);
|
|
15
|
+
}
|
|
16
|
+
constructor(params) {
|
|
17
|
+
this.currentServiceId = params.currentServiceId;
|
|
18
|
+
this.lookupState = params.lookupState;
|
|
19
|
+
this.exportOffset = params.exportOffset;
|
|
20
|
+
}
|
|
21
|
+
getExportedSegments() {
|
|
22
|
+
return this.exportedSegments;
|
|
4
23
|
}
|
|
5
|
-
constructor() { }
|
|
6
24
|
machineExpunge(_machineIndex) {
|
|
7
25
|
throw new Error("Method not implemented.");
|
|
8
26
|
}
|
|
@@ -27,10 +45,25 @@ export class RefineExternalitiesImpl {
|
|
|
27
45
|
machineInvoke(_machineIndex, _gas, _registers) {
|
|
28
46
|
throw new Error("Method not implemented.");
|
|
29
47
|
}
|
|
30
|
-
exportSegment(
|
|
31
|
-
|
|
48
|
+
exportSegment(segment) {
|
|
49
|
+
// https://graypaper.fluffylabs.dev/#/ab2cdbd/335d03335d03?v=0.7.2
|
|
50
|
+
const currentIndex = this.exportOffset + this.exportedSegments.length;
|
|
51
|
+
if (currentIndex >= MAX_NUMBER_OF_EXPORTS_WP) {
|
|
52
|
+
return Result.error(SegmentExportError, () => `Maximum number of exported segments exceeded (offset: ${this.exportOffset}, exported: ${this.exportedSegments.length})`);
|
|
53
|
+
}
|
|
54
|
+
// https://graypaper.fluffylabs.dev/#/ab2cdbd/337303337303?v=0.7.2
|
|
55
|
+
this.exportedSegments.push(segment);
|
|
56
|
+
return Result.ok(tryAsSegmentIndex(currentIndex));
|
|
32
57
|
}
|
|
33
|
-
historicalLookup(
|
|
34
|
-
|
|
58
|
+
historicalLookup(serviceId, hash) {
|
|
59
|
+
// https://graypaper.fluffylabs.dev/#/ab2cdbd/33d70133f901?v=0.7.2
|
|
60
|
+
const sid = serviceId ?? this.currentServiceId;
|
|
61
|
+
const service = this.lookupState.getService(sid);
|
|
62
|
+
// https://graypaper.fluffylabs.dev/#/ab2cdbd/334802334802?v=0.7.2
|
|
63
|
+
if (service === null) {
|
|
64
|
+
return Promise.resolve(null);
|
|
65
|
+
}
|
|
66
|
+
// https://graypaper.fluffylabs.dev/#/ab2cdbd/334f02334f02?v=0.7.2
|
|
67
|
+
return Promise.resolve(service.getPreimage(hash.asOpaque()));
|
|
35
68
|
}
|
|
36
69
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refine.test.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/in-core/externalities/refine.test.ts"],"names":[],"mappings":""}
|