@typeberry/lib 0.5.3-c402c56 → 0.5.3-edc7483
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 +8 -4
- package/packages/core/hash/hash.d.ts.map +1 -1
- package/packages/core/hash/hash.js +1 -0
- package/packages/core/numbers/index.d.ts +4 -0
- package/packages/core/numbers/index.d.ts.map +1 -1
- package/packages/core/numbers/index.js +4 -4
- package/packages/core/pvm-host-calls/host-calls-executor.d.ts +23 -17
- package/packages/core/pvm-host-calls/host-calls-executor.d.ts.map +1 -1
- package/packages/core/pvm-host-calls/host-calls-executor.js +23 -31
- package/packages/core/pvm-interpreter/ops/math-consts.d.ts +2 -3
- package/packages/core/pvm-interpreter/ops/math-consts.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/math-consts.js +2 -3
- package/packages/core/pvm-interpreter/ops/math-ops.js +3 -3
- package/packages/core/pvm-interpreter/ops/math-utils.js +13 -13
- package/packages/core/pvm-interpreter/ops/math-utils.test.js +17 -16
- package/packages/jam/block/work-item.d.ts +13 -4
- package/packages/jam/block/work-item.d.ts.map +1 -1
- package/packages/jam/block/work-result.d.ts +3 -5
- package/packages/jam/block/work-result.d.ts.map +1 -1
- package/packages/jam/block/work-result.js +6 -0
- package/packages/jam/block-json/work-result.d.ts.map +1 -1
- package/packages/jam/block-json/work-result.js +6 -6
- package/packages/jam/database-lmdb/states.test.js +4 -3
- package/packages/jam/executor/index.d.ts +4 -0
- package/packages/jam/executor/index.d.ts.map +1 -0
- package/packages/jam/executor/index.js +2 -0
- package/packages/jam/{transition/accumulate → executor}/pvm-executor.d.ts +19 -16
- package/packages/jam/executor/pvm-executor.d.ts.map +1 -0
- package/packages/jam/{transition/accumulate → executor}/pvm-executor.js +46 -3
- package/packages/jam/in-core/externalities/refine.d.ts +24 -0
- package/packages/jam/in-core/externalities/refine.d.ts.map +1 -0
- package/packages/jam/in-core/externalities/refine.js +36 -0
- package/packages/jam/in-core/in-core.d.ts +60 -0
- package/packages/jam/in-core/in-core.d.ts.map +1 -0
- package/packages/jam/in-core/in-core.js +294 -0
- package/packages/jam/in-core/in-core.test.d.ts +2 -0
- package/packages/jam/in-core/in-core.test.d.ts.map +1 -0
- package/packages/jam/in-core/in-core.test.js +81 -0
- package/packages/jam/in-core/index.d.ts +2 -0
- package/packages/jam/in-core/index.d.ts.map +1 -0
- package/packages/jam/in-core/index.js +1 -0
- package/packages/jam/jam-host-calls/accumulate/bless.test.js +4 -5
- package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts +3 -3
- package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.test.js +2 -2
- package/packages/jam/node/jam-config.d.ts +4 -1
- package/packages/jam/node/jam-config.d.ts.map +1 -1
- package/packages/jam/node/jam-config.js +6 -2
- package/packages/jam/node/main.d.ts.map +1 -1
- package/packages/jam/node/main.js +5 -4
- package/packages/jam/rpc-validation/types.d.ts +7 -3
- package/packages/jam/rpc-validation/types.d.ts.map +1 -1
- package/packages/jam/rpc-validation/validation.d.ts +254 -36
- package/packages/jam/rpc-validation/validation.d.ts.map +1 -1
- package/packages/jam/rpc-validation/validation.js +20 -2
- package/packages/jam/state/in-memory-state.d.ts.map +1 -1
- package/packages/jam/state/in-memory-state.js +2 -3
- package/packages/jam/state/test.utils.d.ts.map +1 -1
- package/packages/jam/state/test.utils.js +2 -3
- package/packages/jam/transition/accumulate/accumulate-data.d.ts.map +1 -1
- package/packages/jam/transition/accumulate/accumulate-data.js +1 -2
- package/packages/jam/transition/accumulate/accumulate-queue.test.js +2 -2
- package/packages/jam/transition/accumulate/accumulate-utils.test.js +2 -2
- package/packages/jam/transition/accumulate/accumulate.d.ts.map +1 -1
- package/packages/jam/transition/accumulate/accumulate.js +8 -13
- package/packages/jam/transition/accumulate/accumulate.test.js +2 -2
- package/packages/jam/transition/accumulate/accumulation-result-merge-utils.d.ts.map +1 -1
- package/packages/jam/transition/accumulate/accumulation-result-merge-utils.js +1 -2
- package/packages/jam/transition/accumulate/accumulation-result-merge-utils.test.js +1 -2
- package/packages/jam/transition/accumulate/deferred-transfers.d.ts +1 -1
- package/packages/jam/transition/accumulate/deferred-transfers.d.ts.map +1 -1
- package/packages/jam/transition/accumulate/deferred-transfers.js +6 -7
- package/packages/jam/transition/disputes/disputes.test.data2.js +2 -2
- package/packages/jam/transition/externalities/fetch-externalities.d.ts +7 -1
- package/packages/jam/transition/externalities/fetch-externalities.d.ts.map +1 -1
- package/packages/jam/transition/externalities/fetch-externalities.js +4 -0
- package/packages/jam/transition/externalities/fetch-externalities.test.js +2 -2
- package/packages/jam/transition/hasher.test.js +2 -2
- package/packages/jam/transition/reports/test.utils.d.ts.map +1 -1
- package/packages/jam/transition/reports/test.utils.js +2 -2
- package/packages/workers/block-authorship/main.d.ts.map +1 -1
- package/packages/workers/block-authorship/main.js +23 -4
- package/packages/workers/block-authorship/protocol.d.ts +3 -1
- package/packages/workers/block-authorship/protocol.d.ts.map +1 -1
- package/packages/workers/block-authorship/protocol.js +6 -3
- package/packages/jam/transition/accumulate/pvm-executor.d.ts.map +0 -1
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import assert from "node:assert";
|
|
2
|
+
import { before, describe, it } from "node:test";
|
|
3
|
+
import { tryAsCoreIndex, tryAsServiceGas, tryAsServiceId, tryAsTimeSlot } from "#@typeberry/block";
|
|
4
|
+
import { RefineContext } from "#@typeberry/block/refine-context.js";
|
|
5
|
+
import { WorkItem } from "#@typeberry/block/work-item.js";
|
|
6
|
+
import { tryAsWorkItemsCount, WorkPackage } from "#@typeberry/block/work-package.js";
|
|
7
|
+
import { Bytes, BytesBlob } from "#@typeberry/bytes";
|
|
8
|
+
import { Encoder } from "#@typeberry/codec";
|
|
9
|
+
import { asKnownSize, FixedSizeArray } from "#@typeberry/collections";
|
|
10
|
+
import { PvmBackend, tinyChainSpec } from "#@typeberry/config";
|
|
11
|
+
import { InMemoryStates } from "#@typeberry/database";
|
|
12
|
+
import { Blake2b, HASH_SIZE, WithHash } from "#@typeberry/hash";
|
|
13
|
+
import { tryAsU16 } from "#@typeberry/numbers";
|
|
14
|
+
import { testState } from "#@typeberry/state/test.utils.js";
|
|
15
|
+
import { InCore, RefineError } from "./in-core.js";
|
|
16
|
+
let blake2b;
|
|
17
|
+
before(async () => {
|
|
18
|
+
blake2b = await Blake2b.createHasher();
|
|
19
|
+
});
|
|
20
|
+
function createWorkItem(serviceId = 1) {
|
|
21
|
+
return WorkItem.create({
|
|
22
|
+
service: tryAsServiceId(serviceId),
|
|
23
|
+
codeHash: Bytes.zero(HASH_SIZE).asOpaque(),
|
|
24
|
+
payload: BytesBlob.empty(),
|
|
25
|
+
refineGasLimit: tryAsServiceGas(1_000_000),
|
|
26
|
+
accumulateGasLimit: tryAsServiceGas(1_000_000),
|
|
27
|
+
importSegments: asKnownSize([]),
|
|
28
|
+
extrinsic: [],
|
|
29
|
+
exportCount: tryAsU16(0),
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
function createWorkPackage(anchorHash, stateRoot, lookupAnchorSlot = 0) {
|
|
33
|
+
return WorkPackage.create({
|
|
34
|
+
authorization: BytesBlob.empty(),
|
|
35
|
+
authCodeHost: tryAsServiceId(1),
|
|
36
|
+
authCodeHash: Bytes.zero(HASH_SIZE).asOpaque(),
|
|
37
|
+
parametrization: BytesBlob.empty(),
|
|
38
|
+
context: RefineContext.create({
|
|
39
|
+
anchor: anchorHash,
|
|
40
|
+
stateRoot,
|
|
41
|
+
beefyRoot: Bytes.zero(HASH_SIZE).asOpaque(),
|
|
42
|
+
lookupAnchor: anchorHash,
|
|
43
|
+
lookupAnchorSlot: tryAsTimeSlot(lookupAnchorSlot),
|
|
44
|
+
prerequisites: [],
|
|
45
|
+
}),
|
|
46
|
+
items: FixedSizeArray.new([createWorkItem()], tryAsWorkItemsCount(1)),
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
function hashWorkPackage(spec, workPackage) {
|
|
50
|
+
const workPackageHash = blake2b
|
|
51
|
+
.hashBytes(Encoder.encodeObject(WorkPackage.Codec, workPackage, spec))
|
|
52
|
+
.asOpaque();
|
|
53
|
+
return new WithHash(workPackageHash, workPackage);
|
|
54
|
+
}
|
|
55
|
+
describe("InCore", () => {
|
|
56
|
+
it("should return StateMissing error when anchor block state is not in DB", async () => {
|
|
57
|
+
const spec = tinyChainSpec;
|
|
58
|
+
const states = new InMemoryStates(spec);
|
|
59
|
+
const inCore = new InCore(spec, states, PvmBackend.BuiltIn, blake2b);
|
|
60
|
+
const anchorHash = Bytes.fill(HASH_SIZE, 1).asOpaque();
|
|
61
|
+
const stateRoot = Bytes.zero(HASH_SIZE).asOpaque();
|
|
62
|
+
const workPackage = createWorkPackage(anchorHash, stateRoot);
|
|
63
|
+
const result = await inCore.refine(hashWorkPackage(spec, workPackage), tryAsCoreIndex(0), asKnownSize([[]]), asKnownSize([[]]));
|
|
64
|
+
assert.strictEqual(result.isError, true);
|
|
65
|
+
assert.strictEqual(result.error, RefineError.StateMissing);
|
|
66
|
+
});
|
|
67
|
+
it("should refine work package and produce a report when state is set up", async () => {
|
|
68
|
+
const spec = tinyChainSpec;
|
|
69
|
+
const states = new InMemoryStates(spec);
|
|
70
|
+
const inCore = new InCore(spec, states, PvmBackend.BuiltIn, blake2b);
|
|
71
|
+
const anchorHash = Bytes.fill(HASH_SIZE, 1).asOpaque();
|
|
72
|
+
const state = testState();
|
|
73
|
+
await states.insertInitialState(anchorHash, state);
|
|
74
|
+
const correctStateRoot = await states.getStateRoot(state);
|
|
75
|
+
const workPackage = createWorkPackage(anchorHash, correctStateRoot, state.timeslot);
|
|
76
|
+
const result = await inCore.refine(hashWorkPackage(spec, workPackage), tryAsCoreIndex(0), asKnownSize([[]]), asKnownSize([[]]));
|
|
77
|
+
assert.strictEqual(result.isOk, true);
|
|
78
|
+
assert.strictEqual(result.ok.report.coreIndex, 0);
|
|
79
|
+
assert.strictEqual(result.ok.report.results.length, 1);
|
|
80
|
+
});
|
|
81
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/in-core/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./in-core.js";
|
|
@@ -3,14 +3,13 @@ import { describe, it } from "node:test";
|
|
|
3
3
|
import { tryAsServiceGas, tryAsServiceId } from "#@typeberry/block";
|
|
4
4
|
import { codec, Encoder } from "#@typeberry/codec";
|
|
5
5
|
import { tinyChainSpec } from "#@typeberry/config";
|
|
6
|
-
import { tryAsU64 } from "#@typeberry/numbers";
|
|
6
|
+
import { MAX_VALUE_U32, MAX_VALUE_U64, tryAsU64 } from "#@typeberry/numbers";
|
|
7
7
|
import { HostCallMemory, HostCallRegisters, PvmExecution } from "#@typeberry/pvm-host-calls";
|
|
8
8
|
import { tryAsGas } from "#@typeberry/pvm-interface";
|
|
9
9
|
import { gasCounter } from "#@typeberry/pvm-interpreter/gas.js";
|
|
10
10
|
import { MemoryBuilder, tryAsMemoryIndex } from "#@typeberry/pvm-interpreter/memory/index.js";
|
|
11
11
|
import { PAGE_SIZE } from "#@typeberry/pvm-interpreter/memory/memory-consts.js";
|
|
12
12
|
import { tryAsSbrkIndex } from "#@typeberry/pvm-interpreter/memory/memory-index.js";
|
|
13
|
-
import { MAX_VALUE, MAX_VALUE_U64 } from "#@typeberry/pvm-interpreter/ops/math-consts.js";
|
|
14
13
|
import { codecPerCore, tryAsPerCore } from "#@typeberry/state";
|
|
15
14
|
import { Compatibility, deepEqual, GpVersion, Result } from "#@typeberry/utils";
|
|
16
15
|
import { UpdatePrivilegesError } from "../externalities/partial-state.js";
|
|
@@ -99,7 +98,7 @@ describe("HostCalls: Bless", () => {
|
|
|
99
98
|
tryAsServiceId(5),
|
|
100
99
|
tryAsPerCore([tryAsServiceId(10), tryAsServiceId(15)], tinyChainSpec),
|
|
101
100
|
tryAsServiceId(20),
|
|
102
|
-
tryAsServiceId(
|
|
101
|
+
tryAsServiceId(MAX_VALUE_U32),
|
|
103
102
|
new Map(entries),
|
|
104
103
|
],
|
|
105
104
|
]);
|
|
@@ -161,7 +160,7 @@ describe("HostCalls: Bless", () => {
|
|
|
161
160
|
tryAsServiceId(5),
|
|
162
161
|
tryAsPerCore([tryAsServiceId(10), tryAsServiceId(15)], tinyChainSpec),
|
|
163
162
|
tryAsServiceId(20),
|
|
164
|
-
tryAsServiceId(
|
|
163
|
+
tryAsServiceId(MAX_VALUE_U32),
|
|
165
164
|
new Map(entries),
|
|
166
165
|
],
|
|
167
166
|
]);
|
|
@@ -197,7 +196,7 @@ describe("HostCalls: Bless", () => {
|
|
|
197
196
|
tryAsServiceId(5),
|
|
198
197
|
tryAsPerCore([tryAsServiceId(10), tryAsServiceId(15)], tinyChainSpec),
|
|
199
198
|
tryAsServiceId(20),
|
|
200
|
-
tryAsServiceId(
|
|
199
|
+
tryAsServiceId(MAX_VALUE_U32),
|
|
201
200
|
new Map(entries),
|
|
202
201
|
],
|
|
203
202
|
]);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CoreIndex } from "#@typeberry/block";
|
|
2
|
-
import { type
|
|
2
|
+
import { type WorkPackageExtrinsics } from "#@typeberry/block/work-item.js";
|
|
3
3
|
import { WorkPackage } from "#@typeberry/block/work-package.js";
|
|
4
4
|
import type { BytesBlob } from "#@typeberry/bytes";
|
|
5
5
|
import { type CodecRecord } from "#@typeberry/codec";
|
|
@@ -55,7 +55,7 @@ export declare class CoreWorkPackage extends WithDebug {
|
|
|
55
55
|
export declare class ServerHandler implements StreamHandler<typeof STREAM_KIND> {
|
|
56
56
|
private readonly onWorkPackage;
|
|
57
57
|
kind: 133 & import("@typeberry/numbers").WithBytesRepresentation<1>;
|
|
58
|
-
constructor(onWorkPackage: (i: CoreIndex, w: WorkPackage, e:
|
|
58
|
+
constructor(onWorkPackage: (i: CoreIndex, w: WorkPackage, e: WorkPackageExtrinsics) => void);
|
|
59
59
|
readonly workPackages: Map<import("@typeberry/numbers").U32, CoreWorkPackage>;
|
|
60
60
|
onStreamMessage(sender: StreamMessageSender, message: BytesBlob): void;
|
|
61
61
|
onClose(streamId: StreamId): void;
|
|
@@ -64,6 +64,6 @@ export declare class ClientHandler implements StreamHandler<typeof STREAM_KIND>
|
|
|
64
64
|
kind: 133 & import("@typeberry/numbers").WithBytesRepresentation<1>;
|
|
65
65
|
onStreamMessage(sender: StreamMessageSender): void;
|
|
66
66
|
onClose(): void;
|
|
67
|
-
sendWorkPackage(sender: StreamMessageSender, coreIndex: CoreIndex, workPackage: WorkPackage, extrinsic:
|
|
67
|
+
sendWorkPackage(sender: StreamMessageSender, coreIndex: CoreIndex, workPackage: WorkPackage, extrinsic: WorkPackageExtrinsics): void;
|
|
68
68
|
}
|
|
69
69
|
//# sourceMappingURL=ce-133-work-package-submission.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ce-133-work-package-submission.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/ce-133-work-package-submission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"ce-133-work-package-submission.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/ce-133-work-package-submission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,qBAAqB,EAA2B,MAAM,+BAA+B,CAAC;AACpG,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAE7E,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;AAE3G;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,+DAAuB,CAAC;AAEhD,qBAAa,eAAgB,SAAQ,SAAS;aAW1B,SAAS,EAAE,SAAS;aACpB,WAAW,EAAE,WAAW;IAX1C,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,WAAW,CAAC,eAAe,CAAC;IAItE,OAAO;CAMR;AAID,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IAGzD,OAAO,CAAC,QAAQ,CAAC,aAAa;IAF1C,IAAI,gEAAe;gBAEU,aAAa,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,qBAAqB,KAAK,IAAI;IAE5G,SAAgB,YAAY,yDAAwC;IAEpE,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;IAiBtE,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;CAGlC;AAED,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IACrE,IAAI,gEAAe;IAEnB,eAAe,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAKlD,OAAO,IAAI,IAAI;IAEf,eAAe,CACb,MAAM,EAAE,mBAAmB,EAC3B,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,qBAAqB;CAUnC"}
|
|
@@ -5,7 +5,7 @@ import { Credential } from "#@typeberry/block/guarantees.js";
|
|
|
5
5
|
import { RefineContext } from "#@typeberry/block/refine-context.js";
|
|
6
6
|
import { tryAsWorkItemsCount } from "#@typeberry/block/work-package.js";
|
|
7
7
|
import { WorkPackageSpec, WorkReport } from "#@typeberry/block/work-report.js";
|
|
8
|
-
import { WorkExecResult,
|
|
8
|
+
import { WorkExecResult, WorkRefineLoad, WorkResult } from "#@typeberry/block/work-result.js";
|
|
9
9
|
import { Bytes, BytesBlob } from "#@typeberry/bytes";
|
|
10
10
|
import { asKnownSize, FixedSizeArray } from "#@typeberry/collections";
|
|
11
11
|
import { tinyChainSpec } from "#@typeberry/config";
|
|
@@ -36,7 +36,7 @@ const MOCK_WORK_RESULT = WorkResult.create({
|
|
|
36
36
|
codeHash: Bytes.zero(HASH_SIZE).asOpaque(),
|
|
37
37
|
payloadHash: Bytes.zero(HASH_SIZE),
|
|
38
38
|
gas: tryAsServiceGas(1000n),
|
|
39
|
-
result:
|
|
39
|
+
result: WorkExecResult.ok(BytesBlob.empty()),
|
|
40
40
|
load: WorkRefineLoad.create({
|
|
41
41
|
gasUsed: tryAsServiceGas(10000n),
|
|
42
42
|
importedSegments: tryAsU32(1),
|
|
@@ -14,6 +14,8 @@ export declare const DEFAULT_DEV_CONFIG: {
|
|
|
14
14
|
export declare class JamConfig {
|
|
15
15
|
/** Whether we should be authoring blocks. */
|
|
16
16
|
readonly isAuthoring: boolean;
|
|
17
|
+
/** Fast forward mode - generate blocks as fast as possible without waiting for real time. */
|
|
18
|
+
readonly isFastForward: boolean;
|
|
17
19
|
/** Node name. */
|
|
18
20
|
readonly nodeName: string;
|
|
19
21
|
/** Node starting configuration. */
|
|
@@ -28,8 +30,9 @@ export declare class JamConfig {
|
|
|
28
30
|
readonly ancestry: [HeaderHash, TimeSlot][];
|
|
29
31
|
/** Validator index for dev mode authorship. Use "all" to author as all validators. */
|
|
30
32
|
readonly devValidatorIndex: U16 | "all" | null;
|
|
31
|
-
static new({ isAuthoring, nodeName, nodeConfig, pvmBackend, devConfig, networkConfig, ancestry, devValidatorIndex, }: {
|
|
33
|
+
static new({ isAuthoring, isFastForward, nodeName, nodeConfig, pvmBackend, devConfig, networkConfig, ancestry, devValidatorIndex, }: {
|
|
32
34
|
isAuthoring?: boolean;
|
|
35
|
+
isFastForward?: boolean;
|
|
33
36
|
nodeName: string;
|
|
34
37
|
nodeConfig: NodeConfiguration;
|
|
35
38
|
pvmBackend: PvmBackend;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jam-config.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/node/jam-config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,QAAQ,EAGb,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AACtF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAE9C,eAAO,MAAM,kBAAkB;;;;CAI9B,CAAC;AAEF;;GAEG;AACH,qBAAa,SAAS;
|
|
1
|
+
{"version":3,"file":"jam-config.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/node/jam-config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,QAAQ,EAGb,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AACtF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAE9C,eAAO,MAAM,kBAAkB;;;;CAI9B,CAAC;AAEF;;GAEG;AACH,qBAAa,SAAS;IAqClB,6CAA6C;aAC7B,WAAW,EAAE,OAAO;IACpC,6FAA6F;aAC7E,aAAa,EAAE,OAAO;IACtC,iBAAiB;aACD,QAAQ,EAAE,MAAM;IAChC,mCAAmC;aACnB,IAAI,EAAE,iBAAiB;IACvC,4BAA4B;aACZ,UAAU,EAAE,UAAU;IACtC,wCAAwC;aACxB,GAAG,EAAE,SAAS,GAAG,IAAI;IACrC,0BAA0B;aACV,OAAO,EAAE,aAAa,GAAG,IAAI;IAC7C,iDAAiD;aACjC,QAAQ,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE;IAClD,sFAAsF;aACtE,iBAAiB,EAAE,GAAG,GAAG,KAAK,GAAG,IAAI;IArDvD,MAAM,CAAC,GAAG,CAAC,EACT,WAAW,EACX,aAAa,EACb,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAgB,EAChB,aAAoB,EACpB,QAAa,EACb,iBAAwB,GACzB,EAAE;QACD,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,iBAAiB,CAAC;QAC9B,UAAU,EAAE,UAAU,CAAC;QACvB,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;QAC7B,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;QACrC,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;QACpC,sFAAsF;QACtF,iBAAiB,CAAC,EAAE,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC;KACxC;IAcD,OAAO;CAoBR;AAED,6CAA6C;AAC7C,MAAM,MAAM,aAAa,GAAG;IAC1B,uCAAuC;IACvC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,8BAA8B;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,kCAAkC;IAClC,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,oCAAoC;AACpC,MAAM,MAAM,SAAS,GAAG;IAGtB,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,QAAQ,EAAE,QAAQ,CAAC;IACnB,wCAAwC;IACxC,cAAc,EAAE,cAAc,CAAC;IAC/B,2CAA2C;IAC3C,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB,CAAC;AAEF,gCAAgC;AAChC,MAAM,MAAM,aAAa,GAAG;IAC1B,2BAA2B;IAC3B,GAAG,EAAE,iBAAiB,CAAC;IACvB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB,CAAC"}
|
|
@@ -9,6 +9,7 @@ export const DEFAULT_DEV_CONFIG = {
|
|
|
9
9
|
*/
|
|
10
10
|
export class JamConfig {
|
|
11
11
|
isAuthoring;
|
|
12
|
+
isFastForward;
|
|
12
13
|
nodeName;
|
|
13
14
|
node;
|
|
14
15
|
pvmBackend;
|
|
@@ -16,12 +17,14 @@ export class JamConfig {
|
|
|
16
17
|
network;
|
|
17
18
|
ancestry;
|
|
18
19
|
devValidatorIndex;
|
|
19
|
-
static new({ isAuthoring, nodeName, nodeConfig, pvmBackend, devConfig = null, networkConfig = null, ancestry = [], devValidatorIndex = null, }) {
|
|
20
|
-
return new JamConfig(isAuthoring ?? false, nodeName, nodeConfig, pvmBackend, devConfig, networkConfig, ancestry, devValidatorIndex);
|
|
20
|
+
static new({ isAuthoring, isFastForward, nodeName, nodeConfig, pvmBackend, devConfig = null, networkConfig = null, ancestry = [], devValidatorIndex = null, }) {
|
|
21
|
+
return new JamConfig(isAuthoring ?? false, isFastForward ?? false, nodeName, nodeConfig, pvmBackend, devConfig, networkConfig, ancestry, devValidatorIndex);
|
|
21
22
|
}
|
|
22
23
|
constructor(
|
|
23
24
|
/** Whether we should be authoring blocks. */
|
|
24
25
|
isAuthoring,
|
|
26
|
+
/** Fast forward mode - generate blocks as fast as possible without waiting for real time. */
|
|
27
|
+
isFastForward,
|
|
25
28
|
/** Node name. */
|
|
26
29
|
nodeName,
|
|
27
30
|
/** Node starting configuration. */
|
|
@@ -37,6 +40,7 @@ export class JamConfig {
|
|
|
37
40
|
/** Validator index for dev mode authorship. Use "all" to author as all validators. */
|
|
38
41
|
devValidatorIndex) {
|
|
39
42
|
this.isAuthoring = isAuthoring;
|
|
43
|
+
this.isFastForward = isFastForward;
|
|
40
44
|
this.nodeName = nodeName;
|
|
41
45
|
this.node = node;
|
|
42
46
|
this.pvmBackend = pvmBackend;
|
|
@@ -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;AACzF,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,EAAE,MAAM,kBAAkB,CAAC;AAK1E,OAAO,KAAK,EAAE,SAAS,EAAiB,MAAM,iBAAiB,CAAC;AAYhE,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;AACzF,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,EAAE,MAAM,kBAAkB,CAAC;AAK1E,OAAO,KAAK,EAAE,SAAS,EAAiB,MAAM,iBAAiB,CAAC;AAYhE,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,CAuJlB"}
|
|
@@ -92,7 +92,7 @@ export async function main(config, withRelPath, telemetry) {
|
|
|
92
92
|
},
|
|
93
93
|
],
|
|
94
94
|
};
|
|
95
|
-
const closeAuthorship = await initAuthorship(importer, config.isAuthoring, rootDb, baseConfig, authorshipKeys, isInMemory);
|
|
95
|
+
const closeAuthorship = await initAuthorship(importer, config.isAuthoring, config.isFastForward, rootDb, baseConfig, authorshipKeys, isInMemory);
|
|
96
96
|
// Networking initialization
|
|
97
97
|
const closeNetwork = await initNetwork(importer, rootDb, baseConfig, genesisHeaderHash, config.network, bestHeader, isInMemory);
|
|
98
98
|
const api = {
|
|
@@ -128,22 +128,23 @@ export async function main(config, withRelPath, telemetry) {
|
|
|
128
128
|
};
|
|
129
129
|
return api;
|
|
130
130
|
}
|
|
131
|
-
const initAuthorship = async (importer, isAuthoring, rootDb, baseConfig, authorshipKeys, isInMemory) => {
|
|
131
|
+
const initAuthorship = async (importer, isAuthoring, isFastForward, rootDb, baseConfig, authorshipKeys, isInMemory) => {
|
|
132
132
|
if (!isAuthoring) {
|
|
133
133
|
logger.log `✍️ Authorship off: disabled`;
|
|
134
134
|
return () => Promise.resolve();
|
|
135
135
|
}
|
|
136
136
|
logger.info `✍️ Starting block generator.`;
|
|
137
|
+
const workerParams = { ...authorshipKeys, isFastForward };
|
|
137
138
|
const { generator, finish } = isInMemory
|
|
138
139
|
? await startBlockGenerator(DirectWorkerConfig.new({
|
|
139
140
|
...baseConfig,
|
|
140
141
|
blocksDb: rootDb.getBlocksDb(),
|
|
141
142
|
statesDb: rootDb.getStatesDb(),
|
|
142
|
-
workerParams
|
|
143
|
+
workerParams,
|
|
143
144
|
}))
|
|
144
145
|
: await spawnBlockGeneratorWorker(LmdbWorkerConfig.new({
|
|
145
146
|
...baseConfig,
|
|
146
|
-
workerParams
|
|
147
|
+
workerParams,
|
|
147
148
|
}));
|
|
148
149
|
// relay blocks from generator to importer
|
|
149
150
|
generator.setOnBlock(async (block) => {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type { ChainSpec } from "#@typeberry/config";
|
|
1
|
+
import type { ChainSpec, PvmBackend } from "#@typeberry/config";
|
|
2
2
|
import type { BlocksDb, StatesDb } from "#@typeberry/database";
|
|
3
|
+
import type { Blake2b } from "#@typeberry/hash";
|
|
3
4
|
import type { EnumerableState, State } from "#@typeberry/state";
|
|
4
5
|
import type WebSocket from "ws";
|
|
5
6
|
import type { z } from "zod";
|
|
@@ -62,11 +63,14 @@ export type SchemaMapUnknown = Record<MethodName, {
|
|
|
62
63
|
}>;
|
|
63
64
|
export type InputOf<M extends MethodName> = z.infer<SchemaMap[M]["input"]>;
|
|
64
65
|
export type OutputOf<M extends MethodName> = z.infer<SchemaMap[M]["output"]>;
|
|
65
|
-
export
|
|
66
|
+
export interface HandlerContext {
|
|
66
67
|
db: DatabaseContext;
|
|
67
68
|
chainSpec: ChainSpec;
|
|
69
|
+
pvmBackend: PvmBackend;
|
|
70
|
+
blake2b: Blake2b;
|
|
68
71
|
subscription: SubscriptionHandlerApi;
|
|
69
|
-
}
|
|
72
|
+
}
|
|
73
|
+
export type GenericHandler<I, O> = (input: I, context: HandlerContext) => Promise<O>;
|
|
70
74
|
export type Handler<M extends MethodName> = GenericHandler<InputOf<M>, OutputOf<M>>;
|
|
71
75
|
export type HandlerMap = {
|
|
72
76
|
[N in MethodName]: Handler<N>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/rpc-validation/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/rpc-validation/types.ts"],"names":[],"mappings":"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"}
|