@typeberry/lib 0.5.9 → 0.5.10-47fe638
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/jam/block/block.d.ts +3 -3
- package/packages/jam/block/header.d.ts +6 -6
- package/packages/jam/block/test-helpers.d.ts +2 -2
- package/packages/jam/block/tickets.d.ts +5 -6
- package/packages/jam/block/tickets.d.ts.map +1 -1
- package/packages/jam/block/tickets.js +2 -10
- 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 +2 -2
- package/packages/jam/block/work-package.d.ts.map +1 -1
- package/packages/jam/block/work-package.js +2 -6
- package/packages/jam/block-json/block.d.ts +2 -2
- package/packages/jam/block-json/block.js +1 -1
- package/packages/jam/block-json/common.d.ts +1 -2
- package/packages/jam/block-json/common.d.ts.map +1 -1
- package/packages/jam/block-json/common.js +2 -2
- package/packages/jam/block-json/extrinsic.js +1 -1
- package/packages/jam/block-json/header.d.ts +1 -2
- package/packages/jam/block-json/header.d.ts.map +1 -1
- package/packages/jam/block-json/header.js +32 -34
- package/packages/jam/block-json/tickets-extrinsic.d.ts +1 -2
- package/packages/jam/block-json/tickets-extrinsic.d.ts.map +1 -1
- package/packages/jam/block-json/tickets-extrinsic.js +5 -7
- package/packages/jam/block-json/work-result.js +2 -2
- 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-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.js +1 -1
- package/packages/jam/executor/pvm-executor.d.ts +2 -2
- package/packages/jam/executor/pvm-executor.d.ts.map +1 -1
- package/packages/jam/fuzz-proto/v1/types.d.ts +1 -1
- 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 +16 -10
- 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/general/fetch.d.ts +159 -98
- package/packages/jam/jam-host-calls/general/fetch.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/general/fetch.js +110 -16
- package/packages/jam/jam-host-calls/general/fetch.test.js +87 -56
- 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-131-ce-132-safrole-ticket-distribution.d.ts +1 -1
- package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.test.js +1 -1
- package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts +1 -1
- package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts +1 -1
- package/packages/jam/jamnp-s/tasks/ticket-distribution.test.js +1 -1
- package/packages/jam/node/main-fuzz.d.ts.map +1 -1
- package/packages/jam/node/main-fuzz.js +1 -0
- package/packages/jam/node/main-importer.d.ts +1 -0
- package/packages/jam/node/main-importer.d.ts.map +1 -1
- package/packages/jam/node/main-importer.js +1 -0
- package/packages/jam/node/main.d.ts.map +1 -1
- package/packages/jam/node/main.js +1 -0
- package/packages/jam/node/reader.d.ts +2 -2
- package/packages/jam/node/workers.d.ts +22 -22
- package/packages/jam/safrole/bandersnatch-vrf.d.ts +1 -2
- package/packages/jam/safrole/bandersnatch-vrf.d.ts.map +1 -1
- package/packages/jam/safrole/bandersnatch-vrf.js +2 -2
- package/packages/jam/safrole/bandersnatch-vrf.test.js +2 -3
- package/packages/jam/safrole/safrole.test.js +72 -80
- package/packages/jam/state/safrole-data.d.ts +1 -1
- package/packages/jam/state/test.utils.js +1 -1
- package/packages/jam/state-json/dump.js +2 -2
- package/packages/jam/state-json/safrole.d.ts +2 -2
- package/packages/jam/state-json/safrole.d.ts.map +1 -1
- package/packages/jam/state-json/safrole.js +4 -4
- package/packages/jam/state-merkleization/in-memory-state-codec.d.ts +1 -1
- package/packages/jam/state-vectors/index.d.ts +7 -8
- package/packages/jam/state-vectors/index.d.ts.map +1 -1
- package/packages/jam/state-vectors/index.js +4 -6
- package/packages/jam/transition/accumulate/accumulate.js +2 -2
- package/packages/jam/transition/externalities/accumulate-fetch-externalities.d.ts +19 -0
- package/packages/jam/transition/externalities/accumulate-fetch-externalities.d.ts.map +1 -0
- package/packages/jam/transition/externalities/accumulate-fetch-externalities.js +45 -0
- package/packages/jam/transition/externalities/accumulate-fetch-externalities.test.d.ts +2 -0
- package/packages/jam/transition/externalities/accumulate-fetch-externalities.test.d.ts.map +1 -0
- package/packages/jam/transition/externalities/accumulate-fetch-externalities.test.js +192 -0
- package/packages/jam/transition/externalities/fetch-externalities.d.ts +3 -39
- package/packages/jam/transition/externalities/fetch-externalities.d.ts.map +1 -1
- package/packages/jam/transition/externalities/fetch-externalities.js +2 -88
- package/packages/jam/transition/externalities/index.d.ts +2 -0
- package/packages/jam/transition/externalities/index.d.ts.map +1 -1
- package/packages/jam/transition/externalities/index.js +2 -0
- package/packages/jam/transition/externalities/refine-fetch-externalities.d.ts +23 -0
- package/packages/jam/transition/externalities/refine-fetch-externalities.d.ts.map +1 -0
- package/packages/jam/transition/externalities/refine-fetch-externalities.js +48 -0
- package/packages/jam/transition/externalities/refine-fetch-externalities.test.d.ts +2 -0
- package/packages/jam/transition/externalities/refine-fetch-externalities.test.d.ts.map +1 -0
- package/packages/jam/transition/externalities/refine-fetch-externalities.test.js +32 -0
- package/packages/jam/transition/hasher.test.js +1 -1
- package/packages/workers/block-authorship/main.d.ts.map +1 -1
- package/packages/workers/block-authorship/main.js +1 -1
- package/packages/workers/block-authorship/protocol.d.ts +4 -4
- package/packages/workers/block-authorship/ticket-generator.d.ts +1 -2
- package/packages/workers/block-authorship/ticket-generator.d.ts.map +1 -1
- package/packages/workers/block-authorship/ticket-generator.js +2 -2
- package/packages/workers/block-authorship/ticket-generator.test.js +10 -11
- package/packages/workers/comms-authorship-network/protocol.d.ts +1 -1
- package/packages/workers/comms-authorship-network/tickets-message.d.ts +1 -1
- package/packages/workers/importer/importer.d.ts +1 -0
- package/packages/workers/importer/importer.d.ts.map +1 -1
- package/packages/workers/importer/importer.js +7 -2
- package/packages/workers/importer/main.d.ts.map +1 -1
- package/packages/workers/importer/main.js +2 -0
- package/packages/workers/importer/protocol.d.ts +12 -9
- package/packages/workers/importer/protocol.d.ts.map +1 -1
- package/packages/workers/importer/protocol.js +8 -3
- package/packages/workers/jam-network/protocol.d.ts +10 -10
- package/packages/jam/transition/externalities/fetch-externalities.test.d.ts +0 -2
- package/packages/jam/transition/externalities/fetch-externalities.test.d.ts.map +0 -1
- package/packages/jam/transition/externalities/fetch-externalities.test.js +0 -254
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import assert from "node:assert";
|
|
2
2
|
import { describe, it } from "node:test";
|
|
3
3
|
import { tryAsServiceId } from "#@typeberry/block";
|
|
4
|
-
import { BytesBlob } from "#@typeberry/bytes";
|
|
4
|
+
import { Bytes, BytesBlob } from "#@typeberry/bytes";
|
|
5
|
+
import { HASH_SIZE } from "#@typeberry/hash";
|
|
5
6
|
import { tryAsU64 } from "#@typeberry/numbers";
|
|
6
7
|
import { HostCallMemory, HostCallRegisters, PvmExecution } from "#@typeberry/pvm-host-calls";
|
|
7
8
|
import { tryAsGas } from "#@typeberry/pvm-interface";
|
|
8
9
|
import { gasCounter, MemoryBuilder, tryAsMemoryIndex, tryAsSbrkIndex } from "#@typeberry/pvm-interpreter";
|
|
9
10
|
import { PAGE_SIZE } from "#@typeberry/pvm-interpreter/memory/memory-consts.js";
|
|
10
11
|
import { emptyRegistersBuffer } from "../utils.js";
|
|
11
|
-
import { Fetch, FetchKind } from "./fetch.js";
|
|
12
|
+
import { Fetch, FetchContext, FetchKind } from "./fetch.js";
|
|
12
13
|
import { HostCallResult } from "./results.js";
|
|
13
14
|
describe("Fetch", () => {
|
|
14
15
|
const IN_OUT_REG = 7;
|
|
@@ -16,7 +17,7 @@ describe("Fetch", () => {
|
|
|
16
17
|
it("should return PvmExecution.Panic if memory write fails", async () => {
|
|
17
18
|
const currentServiceId = tryAsServiceId(10_000);
|
|
18
19
|
const blob = BytesBlob.blobFromNumbers([1, 2, 3]);
|
|
19
|
-
const fetchMock = new
|
|
20
|
+
const fetchMock = new RefineFetchMock();
|
|
20
21
|
fetchMock.constantsResponse = blob;
|
|
21
22
|
const badOffset = tryAsU64(0xfffff);
|
|
22
23
|
const registers = new HostCallRegisters(emptyRegistersBuffer());
|
|
@@ -33,10 +34,10 @@ describe("Fetch", () => {
|
|
|
33
34
|
});
|
|
34
35
|
it("should write empty result and set IN_OUT_REG to NONE if fetch returns null", async () => {
|
|
35
36
|
const currentServiceId = tryAsServiceId(10_000);
|
|
36
|
-
const fetchMock = new
|
|
37
|
-
|
|
37
|
+
const fetchMock = new RefineFetchMock();
|
|
38
|
+
// authorizerTraceResponse is null by default — Kind 2 legitimately returns null
|
|
38
39
|
const blob = BytesBlob.blobFromNumbers([]);
|
|
39
|
-
const { registers, memory, readBack } = prepareRegsAndMemory(blob, FetchKind.
|
|
40
|
+
const { registers, memory, readBack } = prepareRegsAndMemory(blob, FetchKind.AuthorizerTrace);
|
|
40
41
|
const fetch = new Fetch(currentServiceId, fetchMock);
|
|
41
42
|
const result = await fetch.execute(gas, registers, memory);
|
|
42
43
|
assert.strictEqual(result, undefined);
|
|
@@ -47,7 +48,7 @@ describe("Fetch", () => {
|
|
|
47
48
|
it("should write nothing if offset >= blob length", async () => {
|
|
48
49
|
const currentServiceId = tryAsServiceId(10_000);
|
|
49
50
|
const blob = BytesBlob.blobFromNumbers([1, 2, 3]);
|
|
50
|
-
const fetchMock = new
|
|
51
|
+
const fetchMock = new RefineFetchMock();
|
|
51
52
|
fetchMock.constantsResponse = blob;
|
|
52
53
|
const { registers, memory, readBack } = prepareRegsAndMemory(blob, FetchKind.Constants, 5, 2);
|
|
53
54
|
const fetch = new Fetch(currentServiceId, fetchMock);
|
|
@@ -59,7 +60,7 @@ describe("Fetch", () => {
|
|
|
59
60
|
it("should clamp offset + length to blob end", async () => {
|
|
60
61
|
const currentServiceId = tryAsServiceId(10_000);
|
|
61
62
|
const blob = BytesBlob.blobFromNumbers([9, 8, 7, 6, 5]);
|
|
62
|
-
const fetchMock = new
|
|
63
|
+
const fetchMock = new RefineFetchMock();
|
|
63
64
|
fetchMock.constantsResponse = blob;
|
|
64
65
|
const { registers, memory, readBack } = prepareRegsAndMemory(blob, FetchKind.Constants, 3, 10);
|
|
65
66
|
const fetch = new Fetch(currentServiceId, fetchMock);
|
|
@@ -71,7 +72,7 @@ describe("Fetch", () => {
|
|
|
71
72
|
it("should return NONE and write nothing if fetch kind is unknown", async () => {
|
|
72
73
|
const currentServiceId = tryAsServiceId(10_000);
|
|
73
74
|
const blob = BytesBlob.empty();
|
|
74
|
-
const fetchMock = new
|
|
75
|
+
const fetchMock = new RefineFetchMock();
|
|
75
76
|
fetchMock.constantsResponse = blob;
|
|
76
77
|
const { registers, memory, readBack } = prepareRegsAndMemory(blob, FetchKind.Constants);
|
|
77
78
|
registers.set(10, tryAsU64(999));
|
|
@@ -84,7 +85,7 @@ describe("Fetch", () => {
|
|
|
84
85
|
it("should fetch constants and write result to memory", async () => {
|
|
85
86
|
const currentServiceId = tryAsServiceId(10_000);
|
|
86
87
|
const blob = BytesBlob.blobFromNumbers([1, 2, 3, 4, 5]);
|
|
87
|
-
const fetchMock = new
|
|
88
|
+
const fetchMock = new RefineFetchMock();
|
|
88
89
|
fetchMock.constantsResponse = blob;
|
|
89
90
|
const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.Constants);
|
|
90
91
|
const fetch = new Fetch(currentServiceId, fetchMock);
|
|
@@ -95,8 +96,8 @@ describe("Fetch", () => {
|
|
|
95
96
|
});
|
|
96
97
|
it("should fetch entropy and write result to memory", async () => {
|
|
97
98
|
const currentServiceId = tryAsServiceId(10_000);
|
|
98
|
-
const blob =
|
|
99
|
-
const fetchMock = new
|
|
99
|
+
const blob = Bytes.fill(HASH_SIZE, 10).asOpaque();
|
|
100
|
+
const fetchMock = new RefineFetchMock();
|
|
100
101
|
fetchMock.entropyResponse = blob;
|
|
101
102
|
const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.Entropy);
|
|
102
103
|
const fetch = new Fetch(currentServiceId, fetchMock);
|
|
@@ -108,7 +109,7 @@ describe("Fetch", () => {
|
|
|
108
109
|
it("should fetch authorizer trace and write result to memory", async () => {
|
|
109
110
|
const currentServiceId = tryAsServiceId(10_000);
|
|
110
111
|
const blob = BytesBlob.blobFromNumbers([9, 9, 9]);
|
|
111
|
-
const fetchMock = new
|
|
112
|
+
const fetchMock = new RefineFetchMock();
|
|
112
113
|
fetchMock.authorizerTraceResponse = blob;
|
|
113
114
|
const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.AuthorizerTrace);
|
|
114
115
|
const fetch = new Fetch(currentServiceId, fetchMock);
|
|
@@ -120,7 +121,7 @@ describe("Fetch", () => {
|
|
|
120
121
|
it("should fetch other work item extrinsics and write result to memory", async () => {
|
|
121
122
|
const currentServiceId = tryAsServiceId(10_000);
|
|
122
123
|
const blob = BytesBlob.blobFromNumbers([42, 43, 44]);
|
|
123
|
-
const fetchMock = new
|
|
124
|
+
const fetchMock = new RefineFetchMock();
|
|
124
125
|
const workItem = tryAsU64(123);
|
|
125
126
|
const index = tryAsU64(7);
|
|
126
127
|
const key = `${workItem}:${index}`;
|
|
@@ -138,7 +139,7 @@ describe("Fetch", () => {
|
|
|
138
139
|
it("should fetch my extrinsics and write result to memory", async () => {
|
|
139
140
|
const currentServiceId = tryAsServiceId(10_000);
|
|
140
141
|
const blob = BytesBlob.blobFromNumbers([11, 12, 13]);
|
|
141
|
-
const fetchMock = new
|
|
142
|
+
const fetchMock = new RefineFetchMock();
|
|
142
143
|
const index = tryAsU64(5);
|
|
143
144
|
const key = `null:${index}`;
|
|
144
145
|
fetchMock.workItemExtrinsicResponses.set(key, blob);
|
|
@@ -154,7 +155,7 @@ describe("Fetch", () => {
|
|
|
154
155
|
it("should fetch other work item imports and write result to memory", async () => {
|
|
155
156
|
const currentServiceId = tryAsServiceId(10_000);
|
|
156
157
|
const blob = BytesBlob.blobFromNumbers([21, 22, 23]);
|
|
157
|
-
const fetchMock = new
|
|
158
|
+
const fetchMock = new RefineFetchMock();
|
|
158
159
|
const workItem = tryAsU64(42);
|
|
159
160
|
const index = tryAsU64(3);
|
|
160
161
|
const key = `${workItem}:${index}`;
|
|
@@ -172,7 +173,7 @@ describe("Fetch", () => {
|
|
|
172
173
|
it("should fetch my imports and write result to memory", async () => {
|
|
173
174
|
const currentServiceId = tryAsServiceId(10_000);
|
|
174
175
|
const blob = BytesBlob.blobFromNumbers([31, 32, 33]);
|
|
175
|
-
const fetchMock = new
|
|
176
|
+
const fetchMock = new RefineFetchMock();
|
|
176
177
|
const index = tryAsU64(8);
|
|
177
178
|
const key = `null:${index}`;
|
|
178
179
|
fetchMock.workItemImportResponses.set(key, blob);
|
|
@@ -188,7 +189,7 @@ describe("Fetch", () => {
|
|
|
188
189
|
it("should fetch work package and write result to memory", async () => {
|
|
189
190
|
const currentServiceId = tryAsServiceId(10_000);
|
|
190
191
|
const blob = BytesBlob.blobFromNumbers([100, 101, 102]);
|
|
191
|
-
const fetchMock = new
|
|
192
|
+
const fetchMock = new RefineFetchMock();
|
|
192
193
|
fetchMock.workPackageResponse = blob;
|
|
193
194
|
const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.WorkPackage);
|
|
194
195
|
const fetch = new Fetch(currentServiceId, fetchMock);
|
|
@@ -200,7 +201,7 @@ describe("Fetch", () => {
|
|
|
200
201
|
it("should fetch authorizer and write result to memory", async () => {
|
|
201
202
|
const currentServiceId = tryAsServiceId(10_000);
|
|
202
203
|
const blob = BytesBlob.blobFromNumbers([201, 202, 203]);
|
|
203
|
-
const fetchMock = new
|
|
204
|
+
const fetchMock = new RefineFetchMock();
|
|
204
205
|
fetchMock.authorizerResponse = blob;
|
|
205
206
|
const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.Authorizer);
|
|
206
207
|
const fetch = new Fetch(currentServiceId, fetchMock);
|
|
@@ -212,7 +213,7 @@ describe("Fetch", () => {
|
|
|
212
213
|
it("should fetch authorization token and write result to memory", async () => {
|
|
213
214
|
const currentServiceId = tryAsServiceId(10_000);
|
|
214
215
|
const blob = BytesBlob.blobFromNumbers([210, 211, 212]);
|
|
215
|
-
const fetchMock = new
|
|
216
|
+
const fetchMock = new RefineFetchMock();
|
|
216
217
|
fetchMock.authorizationTokenResponse = blob;
|
|
217
218
|
const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.AuthorizationToken);
|
|
218
219
|
const fetch = new Fetch(currentServiceId, fetchMock);
|
|
@@ -224,7 +225,7 @@ describe("Fetch", () => {
|
|
|
224
225
|
it("should fetch refine context and write result to memory", async () => {
|
|
225
226
|
const currentServiceId = tryAsServiceId(10_000);
|
|
226
227
|
const blob = BytesBlob.blobFromNumbers([88, 89, 90]);
|
|
227
|
-
const fetchMock = new
|
|
228
|
+
const fetchMock = new RefineFetchMock();
|
|
228
229
|
fetchMock.refineContextResponse = blob;
|
|
229
230
|
const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.RefineContext);
|
|
230
231
|
const fetch = new Fetch(currentServiceId, fetchMock);
|
|
@@ -236,7 +237,7 @@ describe("Fetch", () => {
|
|
|
236
237
|
it("should fetch all work items and write result to memory", async () => {
|
|
237
238
|
const currentServiceId = tryAsServiceId(10_000);
|
|
238
239
|
const blob = BytesBlob.blobFromNumbers([70, 71, 72]);
|
|
239
|
-
const fetchMock = new
|
|
240
|
+
const fetchMock = new RefineFetchMock();
|
|
240
241
|
fetchMock.allWorkItemsResponse = blob;
|
|
241
242
|
const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.AllWorkItems);
|
|
242
243
|
const fetch = new Fetch(currentServiceId, fetchMock);
|
|
@@ -248,7 +249,7 @@ describe("Fetch", () => {
|
|
|
248
249
|
it("should fetch one work item and write result to memory", async () => {
|
|
249
250
|
const currentServiceId = tryAsServiceId(10_000);
|
|
250
251
|
const blob = BytesBlob.blobFromNumbers([33, 34, 35]);
|
|
251
|
-
const fetchMock = new
|
|
252
|
+
const fetchMock = new RefineFetchMock();
|
|
252
253
|
const workItem = tryAsU64(55);
|
|
253
254
|
fetchMock.oneWorkItemResponses.set(workItem.toString(), blob);
|
|
254
255
|
const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.OneWorkItem);
|
|
@@ -263,7 +264,7 @@ describe("Fetch", () => {
|
|
|
263
264
|
it("should fetch work item payload and write result to memory", async () => {
|
|
264
265
|
const currentServiceId = tryAsServiceId(10_000);
|
|
265
266
|
const blob = BytesBlob.blobFromNumbers([60, 61, 62]);
|
|
266
|
-
const fetchMock = new
|
|
267
|
+
const fetchMock = new RefineFetchMock();
|
|
267
268
|
const workItem = tryAsU64(77);
|
|
268
269
|
fetchMock.workItemPayloadResponses.set(workItem.toString(), blob);
|
|
269
270
|
const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.WorkItemPayload);
|
|
@@ -278,8 +279,8 @@ describe("Fetch", () => {
|
|
|
278
279
|
it("should fetch all transfers and operands and write result to memory", async () => {
|
|
279
280
|
const currentServiceId = tryAsServiceId(10_000);
|
|
280
281
|
const blob = BytesBlob.blobFromNumbers([101, 102, 103]);
|
|
281
|
-
const fetchMock = new
|
|
282
|
-
fetchMock.
|
|
282
|
+
const fetchMock = new AccumulateFetchMock();
|
|
283
|
+
fetchMock.allTransfersAndOperandsResponse = blob;
|
|
283
284
|
const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.AllTransfersAndOperands);
|
|
284
285
|
const fetch = new Fetch(currentServiceId, fetchMock);
|
|
285
286
|
const result = await fetch.execute(gas, registers, memory);
|
|
@@ -290,7 +291,7 @@ describe("Fetch", () => {
|
|
|
290
291
|
it("should fetch one operand or transfer and write result to memory", async () => {
|
|
291
292
|
const currentServiceId = tryAsServiceId(10_000);
|
|
292
293
|
const blob = BytesBlob.blobFromNumbers([115, 116, 117]);
|
|
293
|
-
const fetchMock = new
|
|
294
|
+
const fetchMock = new AccumulateFetchMock();
|
|
294
295
|
const index = tryAsU64(9);
|
|
295
296
|
fetchMock.oneTransferOrOperandResponses.set(index.toString(), blob);
|
|
296
297
|
const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.OneTransferOrOperand);
|
|
@@ -302,6 +303,43 @@ describe("Fetch", () => {
|
|
|
302
303
|
assert.deepStrictEqual(readBack(), blob.raw);
|
|
303
304
|
assert.deepStrictEqual(fetchMock.oneTransferOrOperandData, [[index]]);
|
|
304
305
|
});
|
|
306
|
+
it("should return NONE for refine-only kinds in accumulate context", async () => {
|
|
307
|
+
const currentServiceId = tryAsServiceId(10_000);
|
|
308
|
+
const fetchMock = new AccumulateFetchMock();
|
|
309
|
+
const blob = BytesBlob.empty();
|
|
310
|
+
for (const kind of [
|
|
311
|
+
FetchKind.AuthorizerTrace,
|
|
312
|
+
FetchKind.OtherWorkItemExtrinsics,
|
|
313
|
+
FetchKind.MyExtrinsics,
|
|
314
|
+
FetchKind.OtherWorkItemImports,
|
|
315
|
+
FetchKind.MyImports,
|
|
316
|
+
FetchKind.WorkPackage,
|
|
317
|
+
FetchKind.Authorizer,
|
|
318
|
+
FetchKind.AuthorizationToken,
|
|
319
|
+
FetchKind.RefineContext,
|
|
320
|
+
FetchKind.AllWorkItems,
|
|
321
|
+
FetchKind.OneWorkItem,
|
|
322
|
+
FetchKind.WorkItemPayload,
|
|
323
|
+
]) {
|
|
324
|
+
const { registers, memory } = prepareRegsAndMemory(blob, kind);
|
|
325
|
+
const fetch = new Fetch(currentServiceId, fetchMock);
|
|
326
|
+
const result = await fetch.execute(gas, registers, memory);
|
|
327
|
+
assert.strictEqual(result, undefined, `Expected undefined for kind ${kind}`);
|
|
328
|
+
assert.strictEqual(registers.get(IN_OUT_REG), HostCallResult.NONE, `Expected NONE for kind ${kind}`);
|
|
329
|
+
}
|
|
330
|
+
});
|
|
331
|
+
it("should return NONE for accumulate-only kinds in refine context", async () => {
|
|
332
|
+
const currentServiceId = tryAsServiceId(10_000);
|
|
333
|
+
const fetchMock = new RefineFetchMock();
|
|
334
|
+
const blob = BytesBlob.empty();
|
|
335
|
+
for (const kind of [FetchKind.AllTransfersAndOperands, FetchKind.OneTransferOrOperand]) {
|
|
336
|
+
const { registers, memory } = prepareRegsAndMemory(blob, kind);
|
|
337
|
+
const fetch = new Fetch(currentServiceId, fetchMock);
|
|
338
|
+
const result = await fetch.execute(gas, registers, memory);
|
|
339
|
+
assert.strictEqual(result, undefined, `Expected undefined for kind ${kind}`);
|
|
340
|
+
assert.strictEqual(registers.get(IN_OUT_REG), HostCallResult.NONE, `Expected NONE for kind ${kind}`);
|
|
341
|
+
}
|
|
342
|
+
});
|
|
305
343
|
function prepareRegsAndMemory(blob, fetchKind, offset = 0, length = blob.length) {
|
|
306
344
|
const pageStart = 2 ** 16;
|
|
307
345
|
const memOffset = tryAsU64(pageStart + 1234);
|
|
@@ -327,14 +365,12 @@ describe("Fetch", () => {
|
|
|
327
365
|
};
|
|
328
366
|
}
|
|
329
367
|
});
|
|
330
|
-
class
|
|
368
|
+
class RefineFetchMock {
|
|
369
|
+
context = FetchContext.Refine;
|
|
331
370
|
workItemExtrinsicData = [];
|
|
332
371
|
workItemImportData = [];
|
|
333
372
|
oneWorkItemData = [];
|
|
334
373
|
workItemPayloadData = [];
|
|
335
|
-
oneOperandData = [];
|
|
336
|
-
oneTransferData = [];
|
|
337
|
-
oneTransferOrOperandData = [];
|
|
338
374
|
constantsResponse = null;
|
|
339
375
|
entropyResponse = null;
|
|
340
376
|
authorizerTraceResponse = null;
|
|
@@ -347,12 +383,6 @@ class FetchMock {
|
|
|
347
383
|
allWorkItemsResponse = null;
|
|
348
384
|
oneWorkItemResponses = new Map();
|
|
349
385
|
workItemPayloadResponses = new Map();
|
|
350
|
-
allOperandsResponse = null;
|
|
351
|
-
oneOperandResponses = new Map();
|
|
352
|
-
allTransfersResponse = null;
|
|
353
|
-
oneTransferResponses = new Map();
|
|
354
|
-
allTransfersAndOperandsResponses = null;
|
|
355
|
-
oneTransferOrOperandResponses = new Map();
|
|
356
386
|
constants() {
|
|
357
387
|
if (this.constantsResponse === null) {
|
|
358
388
|
throw new Error("Unexpected call to constants.");
|
|
@@ -360,6 +390,9 @@ class FetchMock {
|
|
|
360
390
|
return this.constantsResponse;
|
|
361
391
|
}
|
|
362
392
|
entropy() {
|
|
393
|
+
if (this.entropyResponse === null) {
|
|
394
|
+
throw new Error("Unexpected call to entropy.");
|
|
395
|
+
}
|
|
363
396
|
return this.entropyResponse;
|
|
364
397
|
}
|
|
365
398
|
authorizerTrace() {
|
|
@@ -412,30 +445,28 @@ class FetchMock {
|
|
|
412
445
|
}
|
|
413
446
|
return this.workItemPayloadResponses.get(key) ?? null;
|
|
414
447
|
}
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
448
|
+
}
|
|
449
|
+
class AccumulateFetchMock {
|
|
450
|
+
context = FetchContext.Accumulate;
|
|
451
|
+
oneTransferOrOperandData = [];
|
|
452
|
+
constantsResponse = null;
|
|
453
|
+
entropyResponse = null;
|
|
454
|
+
allTransfersAndOperandsResponse = null;
|
|
455
|
+
oneTransferOrOperandResponses = new Map();
|
|
456
|
+
constants() {
|
|
457
|
+
if (this.constantsResponse === null) {
|
|
458
|
+
throw new Error("Unexpected call to constants.");
|
|
423
459
|
}
|
|
424
|
-
return this.
|
|
425
|
-
}
|
|
426
|
-
allTransfers() {
|
|
427
|
-
return this.allTransfersResponse;
|
|
460
|
+
return this.constantsResponse;
|
|
428
461
|
}
|
|
429
|
-
|
|
430
|
-
this.
|
|
431
|
-
|
|
432
|
-
if (!this.oneTransferResponses.has(key)) {
|
|
433
|
-
throw new Error(`Missing mock response for oneTransfer(${key})`);
|
|
462
|
+
entropy() {
|
|
463
|
+
if (this.entropyResponse === null) {
|
|
464
|
+
throw new Error("Unexpected call to entropy.");
|
|
434
465
|
}
|
|
435
|
-
return this.
|
|
466
|
+
return this.entropyResponse;
|
|
436
467
|
}
|
|
437
468
|
allTransfersAndOperands() {
|
|
438
|
-
return this.
|
|
469
|
+
return this.allTransfersAndOperandsResponse;
|
|
439
470
|
}
|
|
440
471
|
oneTransferOrOperand(index) {
|
|
441
472
|
this.oneTransferOrOperandData.push([index]);
|
|
@@ -4,7 +4,7 @@ import type { RefineExternalities } from "../externalities/refine-externalities.
|
|
|
4
4
|
/**
|
|
5
5
|
* Export a segment to be imported by some future `refine` invokation.
|
|
6
6
|
*
|
|
7
|
-
* https://graypaper.fluffylabs.dev/#/
|
|
7
|
+
* https://graypaper.fluffylabs.dev/#/ab2cdbd/33db0233db02?v=0.7.2
|
|
8
8
|
*/
|
|
9
9
|
export declare class Export implements HostCallHandler {
|
|
10
10
|
private readonly refine;
|
|
@@ -11,7 +11,7 @@ const IN_OUT_REG = 7;
|
|
|
11
11
|
/**
|
|
12
12
|
* Export a segment to be imported by some future `refine` invokation.
|
|
13
13
|
*
|
|
14
|
-
* https://graypaper.fluffylabs.dev/#/
|
|
14
|
+
* https://graypaper.fluffylabs.dev/#/ab2cdbd/33db0233db02?v=0.7.2
|
|
15
15
|
*/
|
|
16
16
|
export class Export {
|
|
17
17
|
refine;
|
|
@@ -47,6 +47,7 @@ describe("HostCalls: Export", () => {
|
|
|
47
47
|
// then
|
|
48
48
|
assert.deepStrictEqual(result, undefined);
|
|
49
49
|
assert.deepStrictEqual(registers.get(RESULT_REG), 15n);
|
|
50
|
+
assert.strictEqual(refine.getExportedSegments().length, 1);
|
|
50
51
|
});
|
|
51
52
|
it("should zero-pad when exported value is small", async () => {
|
|
52
53
|
const refine = new TestRefineExt();
|
|
@@ -63,6 +64,7 @@ describe("HostCalls: Export", () => {
|
|
|
63
64
|
// then
|
|
64
65
|
assert.deepStrictEqual(result, undefined);
|
|
65
66
|
assert.deepStrictEqual(registers.get(RESULT_REG), 5n);
|
|
67
|
+
assert.strictEqual(refine.getExportedSegments().length, 1);
|
|
66
68
|
});
|
|
67
69
|
it("should panic if memory is not readable", async () => {
|
|
68
70
|
const refine = new TestRefineExt();
|
|
@@ -74,6 +76,7 @@ describe("HostCalls: Export", () => {
|
|
|
74
76
|
const result = await exp.execute(gas, registers, memory);
|
|
75
77
|
// then
|
|
76
78
|
assert.deepStrictEqual(result, PvmExecution.Panic);
|
|
79
|
+
assert.strictEqual(refine.getExportedSegments().length, 0);
|
|
77
80
|
});
|
|
78
81
|
it("should fail with FULL if export limit is reached", async () => {
|
|
79
82
|
const refine = new TestRefineExt();
|
|
@@ -4,7 +4,7 @@ import type { RefineExternalities } from "../externalities/refine-externalities.
|
|
|
4
4
|
/**
|
|
5
5
|
* Lookup a historical preimage.
|
|
6
6
|
*
|
|
7
|
-
* https://graypaper.fluffylabs.dev/#/
|
|
7
|
+
* https://graypaper.fluffylabs.dev/#/ab2cdbd/33c90133c901?v=0.7.2
|
|
8
8
|
*/
|
|
9
9
|
export declare class HistoricalLookup implements HostCallHandler {
|
|
10
10
|
private readonly refine;
|
|
@@ -25,7 +25,7 @@ export declare class TicketDistributionRequest extends WithDebug {
|
|
|
25
25
|
static Codec: import("@typeberry/codec").Descriptor<TicketDistributionRequest, import("@typeberry/codec").ViewOf<TicketDistributionRequest, {
|
|
26
26
|
epochIndex: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"Epoch">, import("@typeberry/bytes").Bytes<4>>;
|
|
27
27
|
ticket: import("@typeberry/codec").Descriptor<SignedTicket, import("@typeberry/codec").ViewOf<SignedTicket, {
|
|
28
|
-
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[
|
|
28
|
+
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[u8]">, import("@typeberry/numbers").U32>;
|
|
29
29
|
signature: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<784> & import("@typeberry/utils").WithOpaque<"BandersnatchRingSignature">, import("@typeberry/bytes").Bytes<784>>;
|
|
30
30
|
}>>;
|
|
31
31
|
}>>;
|
|
@@ -10,7 +10,7 @@ import { ClientHandler, ServerHandler, STREAM_KIND_GENERATOR_TO_PROXY, } from ".
|
|
|
10
10
|
import { testClientServer } from "./test-utils.js";
|
|
11
11
|
const TEST_EPOCH = tryAsEpoch(1);
|
|
12
12
|
const TEST_TICKET = SignedTicket.create({
|
|
13
|
-
attempt: tryAsTicketAttempt(0
|
|
13
|
+
attempt: tryAsTicketAttempt(0),
|
|
14
14
|
signature: Bytes.zero(BANDERSNATCH_PROOF_BYTES).asOpaque(),
|
|
15
15
|
});
|
|
16
16
|
describe("CE 131 and CE 132: Safrole Ticket Distribution", () => {
|
|
@@ -38,7 +38,7 @@ export declare class CoreWorkPackage extends WithDebug {
|
|
|
38
38
|
accumulateGasLimit: import("@typeberry/codec").Descriptor<bigint & import("@typeberry/numbers").WithBytesRepresentation<8> & import("@typeberry/utils").WithOpaque<"ServiceGas[u64]">, import("@typeberry/bytes").Bytes<8>>;
|
|
39
39
|
exportCount: import("@typeberry/codec").Descriptor<import("@typeberry/numbers").U16, import("@typeberry/bytes").Bytes<2>>;
|
|
40
40
|
payload: import("@typeberry/codec").Descriptor<BytesBlob, BytesBlob>;
|
|
41
|
-
importSegments: import("@typeberry/codec").Descriptor<readonly import("@typeberry/block").ImportSpec[] & import("@typeberry/utils").WithOpaque<"Less than
|
|
41
|
+
importSegments: import("@typeberry/codec").Descriptor<readonly import("@typeberry/block").ImportSpec[] & import("@typeberry/utils").WithOpaque<"Less than 3072">, import("@typeberry/codec").SequenceView<import("@typeberry/block").ImportSpec, import("@typeberry/codec").ViewOf<import("@typeberry/block").ImportSpec, {
|
|
42
42
|
treeRoot: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32>, import("@typeberry/bytes").Bytes<32>>;
|
|
43
43
|
index: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<2> & import("@typeberry/utils").WithOpaque<"Segment Index [U16]">, import("@typeberry/bytes").Bytes<2>>;
|
|
44
44
|
}>>>;
|
|
@@ -69,7 +69,7 @@ export declare class Announcement extends WithDebug {
|
|
|
69
69
|
ticketsMarker: import("@typeberry/codec").Descriptor<import("@typeberry/block").TicketsMarker | null, import("@typeberry/codec").ViewOf<import("@typeberry/block").TicketsMarker, {
|
|
70
70
|
tickets: import("@typeberry/codec").Descriptor<readonly import("@typeberry/block").Ticket[] & import("@typeberry/utils").WithOpaque<"EpochLength">, import("@typeberry/codec").SequenceView<import("@typeberry/block").Ticket, import("@typeberry/codec").ViewOf<import("@typeberry/block").Ticket, {
|
|
71
71
|
id: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32>, import("@typeberry/bytes").Bytes<32>>;
|
|
72
|
-
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[
|
|
72
|
+
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[u8]">, import("@typeberry/numbers").U32>;
|
|
73
73
|
}>>>;
|
|
74
74
|
}> | null>;
|
|
75
75
|
bandersnatchBlockAuthorIndex: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<2> & import("@typeberry/utils").WithOpaque<"ValidatorIndex[u16]">, import("@typeberry/bytes").Bytes<2>>;
|
|
@@ -21,7 +21,7 @@ function createTestTicket(attempt, signatureByte = 0) {
|
|
|
21
21
|
signatureBytes.raw[0] = attempt;
|
|
22
22
|
signatureBytes.raw[1] = signatureByte;
|
|
23
23
|
return SignedTicket.create({
|
|
24
|
-
attempt: tryAsTicketAttempt(attempt
|
|
24
|
+
attempt: tryAsTicketAttempt(attempt),
|
|
25
25
|
signature: signatureBytes.asOpaque(),
|
|
26
26
|
});
|
|
27
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main-fuzz.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/node/main-fuzz.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAMrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIjD,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,WAAW,CAAC;IACrB,aAAa,EAAE,SAAS,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,uBAAuB,EAAE,OAAO,CAAC;CAClC,CAAC;AAIF,wBAAgB,cAAc;;;;EAM7B;AAED,wBAAsB,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,
|
|
1
|
+
{"version":3,"file":"main-fuzz.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/node/main-fuzz.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAMrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIjD,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,WAAW,CAAC;IACrB,aAAa,EAAE,SAAS,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,uBAAuB,EAAE,OAAO,CAAC;CAClC,CAAC;AAIF,wBAAgB,cAAc;;;;EAM7B;AAED,wBAAsB,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,uBAwExF"}
|
|
@@ -69,6 +69,7 @@ export async function mainFuzz(fuzzConfig, withRelPath) {
|
|
|
69
69
|
}, withRelPath, {
|
|
70
70
|
initGenesisFromAncestry: fuzzConfig.initGenesisFromAncestry,
|
|
71
71
|
dummyFinalityDepth: 10_000,
|
|
72
|
+
pruneBlocks: true,
|
|
72
73
|
});
|
|
73
74
|
runningNode = newNode;
|
|
74
75
|
return await newNode.getBestStateRootHash();
|
|
@@ -3,6 +3,7 @@ import type { NodeApi } from "./main.js";
|
|
|
3
3
|
export type ImporterOptions = {
|
|
4
4
|
initGenesisFromAncestry?: boolean;
|
|
5
5
|
dummyFinalityDepth?: number;
|
|
6
|
+
pruneBlocks?: boolean;
|
|
6
7
|
};
|
|
7
8
|
export declare function mainImporter(config: JamConfig, withRelPath: (v: string) => string, options?: ImporterOptions): Promise<NodeApi>;
|
|
8
9
|
//# sourceMappingURL=main-importer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main-importer.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/node/main-importer.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,MAAM,MAAM,eAAe,GAAG;IAC5B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"main-importer.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/node/main-importer.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,MAAM,MAAM,eAAe,GAAG;IAC5B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,wBAAsB,YAAY,CAChC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAClC,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,OAAO,CAAC,CAgFlB"}
|
|
@@ -22,6 +22,7 @@ export async function mainImporter(config, withRelPath, options = {}) {
|
|
|
22
22
|
const workerParams = ImporterConfig.create({
|
|
23
23
|
pvm: config.pvmBackend,
|
|
24
24
|
dummyFinalityDepth: tryAsU16(options.dummyFinalityDepth ?? 0),
|
|
25
|
+
pruneBlocks: options.pruneBlocks ?? false,
|
|
25
26
|
});
|
|
26
27
|
const workerConfig = config.node.databaseBasePath === undefined
|
|
27
28
|
? InMemWorkerConfig.new({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/node/main.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAc,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEzF,OAAO,EAAE,KAAK,SAAS,EAAc,MAAM,mBAAmB,CAAC;AAe/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAkC,MAAM,EAAW,MAAM,kBAAkB,CAAC;AAKnF,OAAO,KAAK,EAAE,SAAS,EAAiB,MAAM,iBAAiB,CAAC;AAWhE,MAAM,MAAM,OAAO,GAAG;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAChE,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;IACtE,oBAAoB,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAC/C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AAEF,wBAAsB,IAAI,CACxB,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAClC,SAAS,EAAE,SAAS,GAAG,IAAI,GAC1B,OAAO,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/node/main.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAc,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEzF,OAAO,EAAE,KAAK,SAAS,EAAc,MAAM,mBAAmB,CAAC;AAe/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAkC,MAAM,EAAW,MAAM,kBAAkB,CAAC;AAKnF,OAAO,KAAK,EAAE,SAAS,EAAiB,MAAM,iBAAiB,CAAC;AAWhE,MAAM,MAAM,OAAO,GAAG;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAChE,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;IACtE,oBAAoB,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAC/C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AAEF,wBAAsB,IAAI,CACxB,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAClC,SAAS,EAAE,SAAS,GAAG,IAAI,GAC1B,OAAO,CAAC,OAAO,CAAC,CAyKlB"}
|
|
@@ -35,6 +35,7 @@ export async function main(config, withRelPath, telemetry) {
|
|
|
35
35
|
workerParams: ImporterConfig.create({
|
|
36
36
|
pvm: config.pvmBackend,
|
|
37
37
|
dummyFinalityDepth: tryAsU16(config.devValidatorIndex !== null ? 100 : 0),
|
|
38
|
+
pruneBlocks: false,
|
|
38
39
|
}),
|
|
39
40
|
};
|
|
40
41
|
const importerConfig = isInMemory
|
|
@@ -30,7 +30,7 @@ export declare function startBlocksReader(options: BlocksImporterConfig, logger:
|
|
|
30
30
|
ticketsMarker: import("@typeberry/codec").Descriptor<import("@typeberry/block").TicketsMarker | null, import("@typeberry/codec").ViewOf<import("@typeberry/block").TicketsMarker, {
|
|
31
31
|
tickets: import("@typeberry/codec").Descriptor<readonly import("@typeberry/block").Ticket[] & import("@typeberry/utils").WithOpaque<"EpochLength">, import("@typeberry/codec").SequenceView<import("@typeberry/block").Ticket, import("@typeberry/codec").ViewOf<import("@typeberry/block").Ticket, {
|
|
32
32
|
id: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32>, import("@typeberry/bytes").Bytes<32>>;
|
|
33
|
-
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[
|
|
33
|
+
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[u8]">, import("@typeberry/numbers").U32>;
|
|
34
34
|
}>>>;
|
|
35
35
|
}> | null>;
|
|
36
36
|
bandersnatchBlockAuthorIndex: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<2> & import("@typeberry/utils").WithOpaque<"ValidatorIndex[u16]">, import("@typeberry/bytes").Bytes<2>>;
|
|
@@ -40,7 +40,7 @@ export declare function startBlocksReader(options: BlocksImporterConfig, logger:
|
|
|
40
40
|
}>>;
|
|
41
41
|
extrinsic: import("@typeberry/codec").Descriptor<import("@typeberry/block").Extrinsic, import("@typeberry/codec").ViewOf<import("@typeberry/block").Extrinsic, {
|
|
42
42
|
tickets: import("@typeberry/codec").Descriptor<readonly import("@typeberry/block").SignedTicket[] & import("@typeberry/utils").WithOpaque<"Size: [0..chainSpec.maxTicketsPerExtrinsic)">, import("@typeberry/codec").SequenceView<import("@typeberry/block").SignedTicket, import("@typeberry/codec").ViewOf<import("@typeberry/block").SignedTicket, {
|
|
43
|
-
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[
|
|
43
|
+
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[u8]">, import("@typeberry/numbers").U32>;
|
|
44
44
|
signature: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<784> & import("@typeberry/utils").WithOpaque<"BandersnatchRingSignature">, import("@typeberry/bytes").Bytes<784>>;
|
|
45
45
|
}>>>;
|
|
46
46
|
preimages: import("@typeberry/codec").Descriptor<import("@typeberry/block").Preimage[], import("@typeberry/codec").SequenceView<import("@typeberry/block").Preimage, import("@typeberry/codec").ViewOf<import("@typeberry/block").Preimage, {
|