@typeberry/lib 0.5.3-aa4626d → 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 +1 -1
- 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/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/package.json
CHANGED
|
@@ -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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../../../packages/workers/block-authorship/main.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAI9E,KAAK,MAAM,GAAG,YAAY,CAAC,qBAAqB,CAAC,CAAC;AAkBlD,wBAAsB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../../../packages/workers/block-authorship/main.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAI9E,KAAK,MAAM,GAAG,YAAY,CAAC,qBAAqB,CAAC,CAAC;AAkBlD,wBAAsB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,iBAgKlE"}
|
|
@@ -86,6 +86,8 @@ export async function main(config, comms) {
|
|
|
86
86
|
}
|
|
87
87
|
return Result.ok(state.sealingKeySeries);
|
|
88
88
|
}
|
|
89
|
+
const isFastForward = config.workerParams.isFastForward;
|
|
90
|
+
let lastGeneratedSlot = startTimeSlot;
|
|
89
91
|
while (!isFinished) {
|
|
90
92
|
const hash = blocks.getBestHeaderHash();
|
|
91
93
|
const state = states.getState(hash);
|
|
@@ -93,10 +95,20 @@ export async function main(config, comms) {
|
|
|
93
95
|
if (state === null) {
|
|
94
96
|
continue;
|
|
95
97
|
}
|
|
96
|
-
const time = getTime();
|
|
97
|
-
/** Assuming `slotDuration` is 6 sec it is safe till year 2786. If `slotDuration` is 1 sec then it is safe till 2106 */
|
|
98
|
-
const timeSlot = tryAsTimeSlot(Number(time / 1000n / BigInt(chainSpec.slotDuration)));
|
|
99
98
|
const lastTimeSlot = state.timeslot;
|
|
99
|
+
/**
|
|
100
|
+
* In fastForward mode, use simulated time (next slot after current state).
|
|
101
|
+
* In normal mode, use wall clock time.
|
|
102
|
+
* Assuming `slotDuration` is 6 sec it is safe till year 2786.
|
|
103
|
+
* If `slotDuration` is 1 sec then it is safe till 2106.
|
|
104
|
+
*/
|
|
105
|
+
const timeSlot = isFastForward === true
|
|
106
|
+
? tryAsTimeSlot(lastTimeSlot + 1)
|
|
107
|
+
: tryAsTimeSlot(Number(getTime() / 1000n / BigInt(chainSpec.slotDuration)));
|
|
108
|
+
// In fastForward mode, skip if we already generated for this slot (waiting for import)
|
|
109
|
+
if (isFastForward === true && timeSlot <= lastGeneratedSlot) {
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
100
112
|
const isNewEpoch = isEpochChanged(lastTimeSlot, timeSlot);
|
|
101
113
|
const selingKeySeriesResult = await getSealingKeySeries(isNewEpoch, timeSlot, state);
|
|
102
114
|
if (selingKeySeriesResult.isError) {
|
|
@@ -113,10 +125,17 @@ export async function main(config, comms) {
|
|
|
113
125
|
const sealPayload = getSealPayload(selingKeySeriesResult.ok, entropy);
|
|
114
126
|
const newBlock = await generator.nextBlockView(validatorIndex, key.bandersnatchSecret, sealPayload, timeSlot);
|
|
115
127
|
counter += 1;
|
|
128
|
+
lastGeneratedSlot = timeSlot;
|
|
116
129
|
logger.trace `Sending block ${counter}`;
|
|
117
130
|
await comms.sendBlock(newBlock);
|
|
118
131
|
}
|
|
119
|
-
|
|
132
|
+
else if (isFastForward === true) {
|
|
133
|
+
// In fast-forward mode, if this slot is not ours, wait briefly for other validators to produce blocks
|
|
134
|
+
await setTimeout(10);
|
|
135
|
+
}
|
|
136
|
+
if (isFastForward === false) {
|
|
137
|
+
await setTimeout(chainSpec.slotDuration * 1000);
|
|
138
|
+
}
|
|
120
139
|
}
|
|
121
140
|
logger.info `🎁 Block Authorship finished. Closing channel.`;
|
|
122
141
|
await db.close();
|
|
@@ -275,13 +275,15 @@ export declare class ValidatorSecrets {
|
|
|
275
275
|
}
|
|
276
276
|
export declare class BlockAuthorshipConfig {
|
|
277
277
|
readonly keys: ValidatorSecrets[];
|
|
278
|
+
readonly isFastForward: boolean;
|
|
278
279
|
static Codec: import("@typeberry/codec").Descriptor<BlockAuthorshipConfig, import("@typeberry/codec").ViewOf<BlockAuthorshipConfig, {
|
|
279
280
|
keys: import("@typeberry/codec").Descriptor<ValidatorSecrets[], import("@typeberry/codec").SequenceView<ValidatorSecrets, import("@typeberry/codec").ViewOf<ValidatorSecrets, {
|
|
280
281
|
bandersnatch: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32> & import("@typeberry/utils").WithOpaque<"BandersnatchSecretSeed">, import("@typeberry/bytes").Bytes<32>>;
|
|
281
282
|
ed25519: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32> & import("@typeberry/utils").WithOpaque<"Ed25519SecretSeed">, import("@typeberry/bytes").Bytes<32>>;
|
|
282
283
|
}>>>;
|
|
284
|
+
isFastForward: import("@typeberry/codec").Descriptor<boolean, boolean>;
|
|
283
285
|
}>>;
|
|
284
|
-
static create({ keys }: CodecRecord<BlockAuthorshipConfig>): BlockAuthorshipConfig;
|
|
286
|
+
static create({ keys, isFastForward }: CodecRecord<BlockAuthorshipConfig>): BlockAuthorshipConfig;
|
|
285
287
|
private constructor();
|
|
286
288
|
}
|
|
287
289
|
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../../../packages/workers/block-authorship/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,KAAK,WAAW,EAAS,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAEL,KAAK,sBAAsB,EAE3B,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,GAAG,EAAkB,KAAK,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEjF,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC1D,MAAM,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAanB,CAAC;AAEH,qBAAa,gBAAgB;aAWT,YAAY,EAAE,sBAAsB;aACpC,OAAO,EAAE,iBAAiB;IAX5C,MAAM,CAAC,KAAK;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,gBAAgB,CAAC;IAItE,OAAO;CAIR;AAED,qBAAa,qBAAqB;
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../../../packages/workers/block-authorship/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,KAAK,WAAW,EAAS,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAEL,KAAK,sBAAsB,EAE3B,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,GAAG,EAAkB,KAAK,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEjF,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC1D,MAAM,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAanB,CAAC;AAEH,qBAAa,gBAAgB;aAWT,YAAY,EAAE,sBAAsB;aACpC,OAAO,EAAE,iBAAiB;IAX5C,MAAM,CAAC,KAAK;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,gBAAgB,CAAC;IAItE,OAAO;CAIR;AAED,qBAAa,qBAAqB;aAWd,IAAI,EAAE,gBAAgB,EAAE;aACxB,aAAa,EAAE,OAAO;IAXxC,MAAM,CAAC,KAAK;;;;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,WAAW,CAAC,qBAAqB,CAAC;IAIzE,OAAO;CAIR"}
|
|
@@ -33,13 +33,16 @@ export class ValidatorSecrets {
|
|
|
33
33
|
}
|
|
34
34
|
export class BlockAuthorshipConfig {
|
|
35
35
|
keys;
|
|
36
|
+
isFastForward;
|
|
36
37
|
static Codec = codec.Class(BlockAuthorshipConfig, {
|
|
37
38
|
keys: codec.sequenceVarLen(ValidatorSecrets.Codec),
|
|
39
|
+
isFastForward: codec.bool,
|
|
38
40
|
});
|
|
39
|
-
static create({ keys }) {
|
|
40
|
-
return new BlockAuthorshipConfig(keys);
|
|
41
|
+
static create({ keys, isFastForward }) {
|
|
42
|
+
return new BlockAuthorshipConfig(keys, isFastForward);
|
|
41
43
|
}
|
|
42
|
-
constructor(keys) {
|
|
44
|
+
constructor(keys, isFastForward) {
|
|
43
45
|
this.keys = keys;
|
|
46
|
+
this.isFastForward = isFastForward;
|
|
44
47
|
}
|
|
45
48
|
}
|