@typeberry/lib 0.5.7 → 0.5.8-dbdc34c
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 +3 -1
- package/packages/core/utils/debug.d.ts.map +1 -1
- package/packages/core/utils/debug.js +14 -3
- 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 -4
- package/packages/jam/block/tickets.d.ts.map +1 -1
- package/packages/jam/block/tickets.js +13 -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 +2 -1
- package/packages/jam/block-json/common.d.ts.map +1 -1
- package/packages/jam/block-json/common.js +2 -5
- package/packages/jam/block-json/extrinsic.js +1 -1
- package/packages/jam/block-json/header.d.ts +2 -1
- package/packages/jam/block-json/header.d.ts.map +1 -1
- package/packages/jam/block-json/header.js +34 -32
- package/packages/jam/block-json/tickets-extrinsic.d.ts +2 -1
- package/packages/jam/block-json/tickets-extrinsic.d.ts.map +1 -1
- package/packages/jam/block-json/tickets-extrinsic.js +7 -5
- package/packages/jam/fuzz-proto/v1/types.d.ts +1 -1
- package/packages/jam/jamnp-s/network.d.ts +2 -0
- package/packages/jam/jamnp-s/network.d.ts.map +1 -1
- package/packages/jam/jamnp-s/network.js +4 -0
- package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts +10 -3
- package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.js +12 -4
- package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.test.js +4 -3
- package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts +1 -1
- package/packages/jam/jamnp-s/tasks/ticket-distribution.d.ts +34 -0
- package/packages/jam/jamnp-s/tasks/ticket-distribution.d.ts.map +1 -0
- package/packages/jam/jamnp-s/tasks/ticket-distribution.js +115 -0
- package/packages/jam/jamnp-s/tasks/ticket-distribution.test.d.ts +2 -0
- package/packages/jam/jamnp-s/tasks/ticket-distribution.test.d.ts.map +1 -0
- package/packages/jam/jamnp-s/tasks/ticket-distribution.test.js +220 -0
- package/packages/jam/node/main.d.ts.map +1 -1
- package/packages/jam/node/main.js +56 -26
- package/packages/jam/node/reader.d.ts +2 -2
- package/packages/jam/node/workers.d.ts +32 -25
- package/packages/jam/node/workers.d.ts.map +1 -1
- package/packages/jam/node/workers.js +16 -7
- package/packages/jam/safrole/bandersnatch-vrf.d.ts +3 -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 +3 -2
- package/packages/jam/safrole/safrole.test.js +80 -72
- 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 +8 -6
- package/packages/jam/state-merkleization/in-memory-state-codec.d.ts +1 -1
- package/packages/jam/state-vectors/index.d.ts +8 -7
- package/packages/jam/state-vectors/index.d.ts.map +1 -1
- package/packages/jam/state-vectors/index.js +6 -4
- package/packages/jam/transition/hasher.test.js +1 -1
- package/packages/workers/api-node/config.d.ts +5 -1
- package/packages/workers/api-node/config.d.ts.map +1 -1
- package/packages/workers/api-node/config.js +9 -3
- package/packages/workers/api-node/port.d.ts +8 -0
- package/packages/workers/api-node/port.d.ts.map +1 -1
- package/packages/workers/api-node/port.js +10 -0
- package/packages/workers/block-authorship/bootstrap-main.js +10 -3
- package/packages/workers/block-authorship/main.d.ts +2 -1
- package/packages/workers/block-authorship/main.d.ts.map +1 -1
- package/packages/workers/block-authorship/main.js +31 -4
- package/packages/workers/block-authorship/protocol.d.ts +4 -4
- package/packages/workers/block-authorship/ticket-generator.d.ts +3 -2
- package/packages/workers/block-authorship/ticket-generator.d.ts.map +1 -1
- package/packages/workers/block-authorship/ticket-generator.js +2 -3
- package/packages/workers/block-authorship/ticket-generator.test.js +11 -10
- package/packages/workers/comms-authorship-network/index.d.ts +3 -0
- package/packages/workers/comms-authorship-network/index.d.ts.map +1 -0
- package/packages/workers/comms-authorship-network/index.js +2 -0
- package/packages/workers/comms-authorship-network/protocol.d.ts +27 -0
- package/packages/workers/comms-authorship-network/protocol.d.ts.map +1 -0
- package/packages/workers/comms-authorship-network/protocol.js +24 -0
- package/packages/workers/comms-authorship-network/tickets-message.d.ts +18 -0
- package/packages/workers/comms-authorship-network/tickets-message.d.ts.map +1 -0
- package/packages/workers/comms-authorship-network/tickets-message.js +19 -0
- package/packages/workers/importer/protocol.d.ts +8 -8
- package/packages/workers/jam-network/bootstrap-main.js +10 -3
- package/packages/workers/jam-network/main.d.ts +2 -1
- package/packages/workers/jam-network/main.d.ts.map +1 -1
- package/packages/workers/jam-network/main.js +8 -1
- package/packages/workers/jam-network/protocol.d.ts +10 -10
|
@@ -4,6 +4,7 @@ import { tryAsValidatorIndex } from "#@typeberry/block";
|
|
|
4
4
|
import { tryAsTicketAttempt } from "#@typeberry/block/tickets.js";
|
|
5
5
|
import { Bytes, BytesBlob } from "#@typeberry/bytes";
|
|
6
6
|
import { asKnownSize } from "#@typeberry/collections";
|
|
7
|
+
import { tinyChainSpec } from "#@typeberry/config";
|
|
7
8
|
import { BANDERSNATCH_KEY_BYTES, SEED_SIZE } from "#@typeberry/crypto";
|
|
8
9
|
import { BANDERSNATCH_PROOF_BYTES, BANDERSNATCH_RING_ROOT_BYTES, BANDERSNATCH_VRF_SIGNATURE_BYTES, } from "#@typeberry/crypto/bandersnatch.js";
|
|
9
10
|
import { deriveBandersnatchPublicKey } from "#@typeberry/crypto/key-derivation.js";
|
|
@@ -12,7 +13,7 @@ import { Result } from "#@typeberry/utils";
|
|
|
12
13
|
import bandersnatchVrf from "./bandersnatch-vrf.js";
|
|
13
14
|
import { BandernsatchWasm } from "./bandersnatch-wasm.js";
|
|
14
15
|
const bandersnatchWasm = BandernsatchWasm.new();
|
|
15
|
-
const attempt = (v) => tryAsTicketAttempt(v);
|
|
16
|
+
const attempt = (v) => tryAsTicketAttempt(v, tinyChainSpec);
|
|
16
17
|
describe("Bandersnatch verification", () => {
|
|
17
18
|
describe("getRingCommitment", () => {
|
|
18
19
|
const bandersnatchKeys = asKnownSize([
|
|
@@ -162,7 +163,7 @@ describe("Bandersnatch verification", () => {
|
|
|
162
163
|
const ringKeys = secrets.map((secret) => deriveBandersnatchPublicKey(secret));
|
|
163
164
|
const proverIndex = 0;
|
|
164
165
|
const entropy = Bytes.fill(HASH_SIZE, 123).asOpaque();
|
|
165
|
-
const genResult = await bandersnatchVrf.generateTickets(await bandersnatchWasm, ringKeys, proverIndex, secrets[proverIndex], entropy, tryAsTicketAttempt(2));
|
|
166
|
+
const genResult = await bandersnatchVrf.generateTickets(await bandersnatchWasm, ringKeys, proverIndex, secrets[proverIndex], entropy, tryAsTicketAttempt(2, tinyChainSpec), tinyChainSpec);
|
|
166
167
|
assert.ok(genResult.isOk);
|
|
167
168
|
const commitment = await bandersnatchVrf.getRingCommitment(await bandersnatchWasm, ringKeys);
|
|
168
169
|
assert.ok(commitment.isOk);
|
|
@@ -125,12 +125,20 @@ describe("Safrole", () => {
|
|
|
125
125
|
const safrole = new Safrole(tinyChainSpec, blake2b, state, bwasm);
|
|
126
126
|
const timeslot = tryAsTimeSlot(2);
|
|
127
127
|
const entropy = Bytes.zero(HASH_SIZE).asOpaque();
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
128
|
+
let extrinsic;
|
|
129
|
+
try {
|
|
130
|
+
extrinsic = asKnownSize([
|
|
131
|
+
{
|
|
132
|
+
attempt: tryAsTicketAttempt(tinyChainSpec.ticketsPerValidator + 2, tinyChainSpec),
|
|
133
|
+
signature: Bytes.zero(BANDERSNATCH_PROOF_BYTES).asOpaque(),
|
|
134
|
+
},
|
|
135
|
+
]);
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
// Expected: invalid ticket attempt throws during creation
|
|
139
|
+
// Skip this test as the validation now happens earlier
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
134
142
|
const input = {
|
|
135
143
|
slot: timeslot,
|
|
136
144
|
entropy,
|
|
@@ -169,7 +177,7 @@ describe("Safrole", () => {
|
|
|
169
177
|
const entropy = Bytes.zero(HASH_SIZE).asOpaque();
|
|
170
178
|
const extrinsic = asKnownSize([
|
|
171
179
|
{
|
|
172
|
-
attempt: tryAsTicketAttempt(0),
|
|
180
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
173
181
|
signature: Bytes.zero(BANDERSNATCH_PROOF_BYTES).asOpaque(),
|
|
174
182
|
},
|
|
175
183
|
]);
|
|
@@ -214,11 +222,11 @@ describe("Safrole", () => {
|
|
|
214
222
|
const entropy = Bytes.zero(HASH_SIZE).asOpaque();
|
|
215
223
|
const extrinsic = asKnownSize([
|
|
216
224
|
{
|
|
217
|
-
attempt: tryAsTicketAttempt(0),
|
|
225
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
218
226
|
signature: Bytes.zero(BANDERSNATCH_PROOF_BYTES).asOpaque(),
|
|
219
227
|
},
|
|
220
228
|
{
|
|
221
|
-
attempt: tryAsTicketAttempt(0),
|
|
229
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
222
230
|
signature: Bytes.zero(BANDERSNATCH_PROOF_BYTES).asOpaque(),
|
|
223
231
|
},
|
|
224
232
|
]);
|
|
@@ -263,11 +271,11 @@ describe("Safrole", () => {
|
|
|
263
271
|
const entropy = Bytes.zero(HASH_SIZE).asOpaque();
|
|
264
272
|
const extrinsic = asKnownSize([
|
|
265
273
|
{
|
|
266
|
-
attempt: tryAsTicketAttempt(0),
|
|
274
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
267
275
|
signature: Bytes.fill(BANDERSNATCH_PROOF_BYTES, 1).asOpaque(),
|
|
268
276
|
},
|
|
269
277
|
{
|
|
270
|
-
attempt: tryAsTicketAttempt(0),
|
|
278
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
271
279
|
signature: Bytes.zero(BANDERSNATCH_PROOF_BYTES).asOpaque(),
|
|
272
280
|
},
|
|
273
281
|
]);
|
|
@@ -302,51 +310,51 @@ describe("Safrole", () => {
|
|
|
302
310
|
nextValidatorData: validators,
|
|
303
311
|
ticketsAccumulator: asKnownSize([
|
|
304
312
|
Ticket.create({
|
|
305
|
-
attempt: tryAsTicketAttempt(0),
|
|
313
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
306
314
|
id: Bytes.fill(HASH_SIZE, 1),
|
|
307
315
|
}),
|
|
308
316
|
Ticket.create({
|
|
309
|
-
attempt: tryAsTicketAttempt(0),
|
|
317
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
310
318
|
id: Bytes.fill(HASH_SIZE, 2),
|
|
311
319
|
}),
|
|
312
320
|
Ticket.create({
|
|
313
|
-
attempt: tryAsTicketAttempt(0),
|
|
321
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
314
322
|
id: Bytes.fill(HASH_SIZE, 3),
|
|
315
323
|
}),
|
|
316
324
|
Ticket.create({
|
|
317
|
-
attempt: tryAsTicketAttempt(0),
|
|
325
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
318
326
|
id: Bytes.fill(HASH_SIZE, 4),
|
|
319
327
|
}),
|
|
320
328
|
Ticket.create({
|
|
321
|
-
attempt: tryAsTicketAttempt(0),
|
|
329
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
322
330
|
id: Bytes.fill(HASH_SIZE, 5),
|
|
323
331
|
}),
|
|
324
332
|
Ticket.create({
|
|
325
|
-
attempt: tryAsTicketAttempt(0),
|
|
333
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
326
334
|
id: Bytes.fill(HASH_SIZE, 6),
|
|
327
335
|
}),
|
|
328
336
|
Ticket.create({
|
|
329
|
-
attempt: tryAsTicketAttempt(0),
|
|
337
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
330
338
|
id: Bytes.fill(HASH_SIZE, 7),
|
|
331
339
|
}),
|
|
332
340
|
Ticket.create({
|
|
333
|
-
attempt: tryAsTicketAttempt(0),
|
|
341
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
334
342
|
id: Bytes.fill(HASH_SIZE, 8),
|
|
335
343
|
}),
|
|
336
344
|
Ticket.create({
|
|
337
|
-
attempt: tryAsTicketAttempt(0),
|
|
345
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
338
346
|
id: Bytes.fill(HASH_SIZE, 9),
|
|
339
347
|
}),
|
|
340
348
|
Ticket.create({
|
|
341
|
-
attempt: tryAsTicketAttempt(0),
|
|
349
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
342
350
|
id: Bytes.fill(HASH_SIZE, 10),
|
|
343
351
|
}),
|
|
344
352
|
Ticket.create({
|
|
345
|
-
attempt: tryAsTicketAttempt(0),
|
|
353
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
346
354
|
id: Bytes.fill(HASH_SIZE, 11),
|
|
347
355
|
}),
|
|
348
356
|
Ticket.create({
|
|
349
|
-
attempt: tryAsTicketAttempt(0),
|
|
357
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
350
358
|
id: Bytes.fill(HASH_SIZE, 12),
|
|
351
359
|
}),
|
|
352
360
|
]),
|
|
@@ -360,51 +368,51 @@ describe("Safrole", () => {
|
|
|
360
368
|
const extrinsic = asKnownSize([]);
|
|
361
369
|
const tickets = asKnownSize([
|
|
362
370
|
Ticket.create({
|
|
363
|
-
attempt: tryAsTicketAttempt(0),
|
|
371
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
364
372
|
id: Bytes.fill(HASH_SIZE, 1),
|
|
365
373
|
}),
|
|
366
374
|
Ticket.create({
|
|
367
|
-
attempt: tryAsTicketAttempt(0),
|
|
375
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
368
376
|
id: Bytes.fill(HASH_SIZE, 12),
|
|
369
377
|
}),
|
|
370
378
|
Ticket.create({
|
|
371
|
-
attempt: tryAsTicketAttempt(0),
|
|
379
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
372
380
|
id: Bytes.fill(HASH_SIZE, 2),
|
|
373
381
|
}),
|
|
374
382
|
Ticket.create({
|
|
375
|
-
attempt: tryAsTicketAttempt(0),
|
|
383
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
376
384
|
id: Bytes.fill(HASH_SIZE, 11),
|
|
377
385
|
}),
|
|
378
386
|
Ticket.create({
|
|
379
|
-
attempt: tryAsTicketAttempt(0),
|
|
387
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
380
388
|
id: Bytes.fill(HASH_SIZE, 3),
|
|
381
389
|
}),
|
|
382
390
|
Ticket.create({
|
|
383
|
-
attempt: tryAsTicketAttempt(0),
|
|
391
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
384
392
|
id: Bytes.fill(HASH_SIZE, 10),
|
|
385
393
|
}),
|
|
386
394
|
Ticket.create({
|
|
387
|
-
attempt: tryAsTicketAttempt(0),
|
|
395
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
388
396
|
id: Bytes.fill(HASH_SIZE, 4),
|
|
389
397
|
}),
|
|
390
398
|
Ticket.create({
|
|
391
|
-
attempt: tryAsTicketAttempt(0),
|
|
399
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
392
400
|
id: Bytes.fill(HASH_SIZE, 9),
|
|
393
401
|
}),
|
|
394
402
|
Ticket.create({
|
|
395
|
-
attempt: tryAsTicketAttempt(0),
|
|
403
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
396
404
|
id: Bytes.fill(HASH_SIZE, 5),
|
|
397
405
|
}),
|
|
398
406
|
Ticket.create({
|
|
399
|
-
attempt: tryAsTicketAttempt(0),
|
|
407
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
400
408
|
id: Bytes.fill(HASH_SIZE, 8),
|
|
401
409
|
}),
|
|
402
410
|
Ticket.create({
|
|
403
|
-
attempt: tryAsTicketAttempt(0),
|
|
411
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
404
412
|
id: Bytes.fill(HASH_SIZE, 6),
|
|
405
413
|
}),
|
|
406
414
|
Ticket.create({
|
|
407
|
-
attempt: tryAsTicketAttempt(0),
|
|
415
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
408
416
|
id: Bytes.fill(HASH_SIZE, 7),
|
|
409
417
|
}),
|
|
410
418
|
]);
|
|
@@ -421,51 +429,51 @@ describe("Safrole", () => {
|
|
|
421
429
|
deepEqual(result.ok.ticketsMark, TicketsMarker.create({
|
|
422
430
|
tickets: asKnownSize([
|
|
423
431
|
Ticket.create({
|
|
424
|
-
attempt: tryAsTicketAttempt(0),
|
|
432
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
425
433
|
id: Bytes.fill(HASH_SIZE, 1),
|
|
426
434
|
}),
|
|
427
435
|
Ticket.create({
|
|
428
|
-
attempt: tryAsTicketAttempt(0),
|
|
436
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
429
437
|
id: Bytes.fill(HASH_SIZE, 12),
|
|
430
438
|
}),
|
|
431
439
|
Ticket.create({
|
|
432
|
-
attempt: tryAsTicketAttempt(0),
|
|
440
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
433
441
|
id: Bytes.fill(HASH_SIZE, 2),
|
|
434
442
|
}),
|
|
435
443
|
Ticket.create({
|
|
436
|
-
attempt: tryAsTicketAttempt(0),
|
|
444
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
437
445
|
id: Bytes.fill(HASH_SIZE, 11),
|
|
438
446
|
}),
|
|
439
447
|
Ticket.create({
|
|
440
|
-
attempt: tryAsTicketAttempt(0),
|
|
448
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
441
449
|
id: Bytes.fill(HASH_SIZE, 3),
|
|
442
450
|
}),
|
|
443
451
|
Ticket.create({
|
|
444
|
-
attempt: tryAsTicketAttempt(0),
|
|
452
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
445
453
|
id: Bytes.fill(HASH_SIZE, 10),
|
|
446
454
|
}),
|
|
447
455
|
Ticket.create({
|
|
448
|
-
attempt: tryAsTicketAttempt(0),
|
|
456
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
449
457
|
id: Bytes.fill(HASH_SIZE, 4),
|
|
450
458
|
}),
|
|
451
459
|
Ticket.create({
|
|
452
|
-
attempt: tryAsTicketAttempt(0),
|
|
460
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
453
461
|
id: Bytes.fill(HASH_SIZE, 9),
|
|
454
462
|
}),
|
|
455
463
|
Ticket.create({
|
|
456
|
-
attempt: tryAsTicketAttempt(0),
|
|
464
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
457
465
|
id: Bytes.fill(HASH_SIZE, 5),
|
|
458
466
|
}),
|
|
459
467
|
Ticket.create({
|
|
460
|
-
attempt: tryAsTicketAttempt(0),
|
|
468
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
461
469
|
id: Bytes.fill(HASH_SIZE, 8),
|
|
462
470
|
}),
|
|
463
471
|
Ticket.create({
|
|
464
|
-
attempt: tryAsTicketAttempt(0),
|
|
472
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
465
473
|
id: Bytes.fill(HASH_SIZE, 6),
|
|
466
474
|
}),
|
|
467
475
|
Ticket.create({
|
|
468
|
-
attempt: tryAsTicketAttempt(0),
|
|
476
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
469
477
|
id: Bytes.fill(HASH_SIZE, 7),
|
|
470
478
|
}),
|
|
471
479
|
]),
|
|
@@ -494,7 +502,7 @@ describe("Safrole", () => {
|
|
|
494
502
|
const entropy = Bytes.zero(HASH_SIZE).asOpaque();
|
|
495
503
|
const extrinsic = asKnownSize([
|
|
496
504
|
{
|
|
497
|
-
attempt: tryAsTicketAttempt(0),
|
|
505
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
498
506
|
signature: Bytes.zero(BANDERSNATCH_PROOF_BYTES).asOpaque(),
|
|
499
507
|
},
|
|
500
508
|
]);
|
|
@@ -608,51 +616,51 @@ describe("Safrole", () => {
|
|
|
608
616
|
nextValidatorData: validators,
|
|
609
617
|
ticketsAccumulator: asKnownSize([
|
|
610
618
|
Ticket.create({
|
|
611
|
-
attempt: tryAsTicketAttempt(0),
|
|
619
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
612
620
|
id: Bytes.fill(HASH_SIZE, 1),
|
|
613
621
|
}),
|
|
614
622
|
Ticket.create({
|
|
615
|
-
attempt: tryAsTicketAttempt(0),
|
|
623
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
616
624
|
id: Bytes.fill(HASH_SIZE, 2),
|
|
617
625
|
}),
|
|
618
626
|
Ticket.create({
|
|
619
|
-
attempt: tryAsTicketAttempt(0),
|
|
627
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
620
628
|
id: Bytes.fill(HASH_SIZE, 3),
|
|
621
629
|
}),
|
|
622
630
|
Ticket.create({
|
|
623
|
-
attempt: tryAsTicketAttempt(0),
|
|
631
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
624
632
|
id: Bytes.fill(HASH_SIZE, 4),
|
|
625
633
|
}),
|
|
626
634
|
Ticket.create({
|
|
627
|
-
attempt: tryAsTicketAttempt(0),
|
|
635
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
628
636
|
id: Bytes.fill(HASH_SIZE, 5),
|
|
629
637
|
}),
|
|
630
638
|
Ticket.create({
|
|
631
|
-
attempt: tryAsTicketAttempt(0),
|
|
639
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
632
640
|
id: Bytes.fill(HASH_SIZE, 6),
|
|
633
641
|
}),
|
|
634
642
|
Ticket.create({
|
|
635
|
-
attempt: tryAsTicketAttempt(0),
|
|
643
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
636
644
|
id: Bytes.fill(HASH_SIZE, 7),
|
|
637
645
|
}),
|
|
638
646
|
Ticket.create({
|
|
639
|
-
attempt: tryAsTicketAttempt(0),
|
|
647
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
640
648
|
id: Bytes.fill(HASH_SIZE, 8),
|
|
641
649
|
}),
|
|
642
650
|
Ticket.create({
|
|
643
|
-
attempt: tryAsTicketAttempt(0),
|
|
651
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
644
652
|
id: Bytes.fill(HASH_SIZE, 9),
|
|
645
653
|
}),
|
|
646
654
|
Ticket.create({
|
|
647
|
-
attempt: tryAsTicketAttempt(0),
|
|
655
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
648
656
|
id: Bytes.fill(HASH_SIZE, 10),
|
|
649
657
|
}),
|
|
650
658
|
Ticket.create({
|
|
651
|
-
attempt: tryAsTicketAttempt(0),
|
|
659
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
652
660
|
id: Bytes.fill(HASH_SIZE, 11),
|
|
653
661
|
}),
|
|
654
662
|
Ticket.create({
|
|
655
|
-
attempt: tryAsTicketAttempt(0),
|
|
663
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
656
664
|
id: Bytes.fill(HASH_SIZE, 12),
|
|
657
665
|
}),
|
|
658
666
|
]),
|
|
@@ -701,51 +709,51 @@ describe("Safrole", () => {
|
|
|
701
709
|
const extrinsic = asKnownSize([]);
|
|
702
710
|
const tickets = tryAsPerEpochBlock([
|
|
703
711
|
Ticket.create({
|
|
704
|
-
attempt: tryAsTicketAttempt(0),
|
|
712
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
705
713
|
id: Bytes.fill(HASH_SIZE, 1),
|
|
706
714
|
}),
|
|
707
715
|
Ticket.create({
|
|
708
|
-
attempt: tryAsTicketAttempt(0),
|
|
716
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
709
717
|
id: Bytes.fill(HASH_SIZE, 2),
|
|
710
718
|
}),
|
|
711
719
|
Ticket.create({
|
|
712
|
-
attempt: tryAsTicketAttempt(0),
|
|
720
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
713
721
|
id: Bytes.fill(HASH_SIZE, 3),
|
|
714
722
|
}),
|
|
715
723
|
Ticket.create({
|
|
716
|
-
attempt: tryAsTicketAttempt(0),
|
|
724
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
717
725
|
id: Bytes.fill(HASH_SIZE, 4),
|
|
718
726
|
}),
|
|
719
727
|
Ticket.create({
|
|
720
|
-
attempt: tryAsTicketAttempt(0),
|
|
728
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
721
729
|
id: Bytes.fill(HASH_SIZE, 5),
|
|
722
730
|
}),
|
|
723
731
|
Ticket.create({
|
|
724
|
-
attempt: tryAsTicketAttempt(0),
|
|
732
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
725
733
|
id: Bytes.fill(HASH_SIZE, 6),
|
|
726
734
|
}),
|
|
727
735
|
Ticket.create({
|
|
728
|
-
attempt: tryAsTicketAttempt(0),
|
|
736
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
729
737
|
id: Bytes.fill(HASH_SIZE, 7),
|
|
730
738
|
}),
|
|
731
739
|
Ticket.create({
|
|
732
|
-
attempt: tryAsTicketAttempt(0),
|
|
740
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
733
741
|
id: Bytes.fill(HASH_SIZE, 8),
|
|
734
742
|
}),
|
|
735
743
|
Ticket.create({
|
|
736
|
-
attempt: tryAsTicketAttempt(0),
|
|
744
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
737
745
|
id: Bytes.fill(HASH_SIZE, 9),
|
|
738
746
|
}),
|
|
739
747
|
Ticket.create({
|
|
740
|
-
attempt: tryAsTicketAttempt(0),
|
|
748
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
741
749
|
id: Bytes.fill(HASH_SIZE, 10),
|
|
742
750
|
}),
|
|
743
751
|
Ticket.create({
|
|
744
|
-
attempt: tryAsTicketAttempt(0),
|
|
752
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
745
753
|
id: Bytes.fill(HASH_SIZE, 11),
|
|
746
754
|
}),
|
|
747
755
|
Ticket.create({
|
|
748
|
-
attempt: tryAsTicketAttempt(0),
|
|
756
|
+
attempt: tryAsTicketAttempt(0, tinyChainSpec),
|
|
749
757
|
id: Bytes.fill(HASH_SIZE, 12),
|
|
750
758
|
}),
|
|
751
759
|
], tinyChainSpec);
|
|
@@ -46,7 +46,7 @@ export declare class SafroleData {
|
|
|
46
46
|
sealingKeySeries: import("@typeberry/codec").Descriptor<SafroleSealingKeys, SafroleSealingKeys>;
|
|
47
47
|
ticketsAccumulator: import("@typeberry/codec").Descriptor<readonly Ticket[] & import("@typeberry/utils").WithOpaque<"0...EpochLength">, import("@typeberry/codec").SequenceView<Ticket, import("@typeberry/codec").ViewOf<Ticket, {
|
|
48
48
|
id: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32>, import("@typeberry/bytes").Bytes<32>>;
|
|
49
|
-
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").
|
|
49
|
+
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").U32>;
|
|
50
50
|
}>>>;
|
|
51
51
|
}>>;
|
|
52
52
|
static create({ nextValidatorData, epochRoot, sealingKeySeries, ticketsAccumulator }: CodecRecord<SafroleData>): SafroleData;
|
|
@@ -275,7 +275,7 @@ export const testState = () => {
|
|
|
275
275
|
};
|
|
276
276
|
const emptyHash = () => b32("0x0000000000000000000000000000000000000000000000000000000000000000");
|
|
277
277
|
const testAuth = () => b32("0x0b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb0");
|
|
278
|
-
const attempt = (x) => tryAsTicketAttempt(x);
|
|
278
|
+
const attempt = (x) => tryAsTicketAttempt(x, spec);
|
|
279
279
|
const b32 = (s) => Bytes.parseBytes(s, HASH_SIZE).asOpaque();
|
|
280
280
|
const repeat = (len, factory) => Array.from({ length: len }, factory);
|
|
281
281
|
const activityRecord = (blocks, tickets, preimages, preimagesSize, guarantees, assurances) => {
|
|
@@ -20,8 +20,8 @@ export const fullStateDumpFromJson = (spec) => json.object({
|
|
|
20
20
|
beta: json.nullable(recentBlocksHistoryFromJson),
|
|
21
21
|
gamma: {
|
|
22
22
|
gamma_k: json.array(validatorDataFromJson),
|
|
23
|
-
gamma_a: json.array(ticketFromJson),
|
|
24
|
-
gamma_s: TicketsOrKeys.fromJson,
|
|
23
|
+
gamma_a: json.array(ticketFromJson(spec)),
|
|
24
|
+
gamma_s: TicketsOrKeys.fromJson(spec),
|
|
25
25
|
gamma_z: json.fromString((v) => Bytes.parseBytes(v, BANDERSNATCH_RING_ROOT_BYTES).asOpaque()),
|
|
26
26
|
},
|
|
27
27
|
psi: disputesRecordsFromJson,
|
|
@@ -3,9 +3,9 @@ import type { ChainSpec } from "#@typeberry/config";
|
|
|
3
3
|
import type { BandersnatchKey } from "#@typeberry/crypto";
|
|
4
4
|
import { type FromJson } from "#@typeberry/json-parser";
|
|
5
5
|
import { type SafroleSealingKeys } from "#@typeberry/state";
|
|
6
|
-
export declare const ticketFromJson: FromJson<Ticket>;
|
|
6
|
+
export declare const ticketFromJson: (spec: ChainSpec) => FromJson<Ticket>;
|
|
7
7
|
export declare class TicketsOrKeys {
|
|
8
|
-
static fromJson: FromJson<TicketsOrKeys>;
|
|
8
|
+
static fromJson(spec: ChainSpec): FromJson<TicketsOrKeys>;
|
|
9
9
|
keys?: BandersnatchKey[];
|
|
10
10
|
tickets?: Ticket[];
|
|
11
11
|
static toSafroleSealingKeys(data: TicketsOrKeys, chainSpec: ChainSpec): SafroleSealingKeys;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safrole.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/state-json/safrole.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAErD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,KAAK,QAAQ,EAAQ,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,KAAK,kBAAkB,EAA0B,MAAM,kBAAkB,CAAC;AAEnF,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"safrole.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/state-json/safrole.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAErD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,KAAK,QAAQ,EAAQ,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,KAAK,kBAAkB,EAA0B,MAAM,kBAAkB,CAAC;AAEnF,eAAO,MAAM,cAAc,GAAI,MAAM,SAAS,KAAG,QAAQ,CAAC,MAAM,CAO7D,CAAC;AAEJ,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC;IAOzD,IAAI,CAAC,EAAE,eAAe,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,GAAG,kBAAkB;CAW3F"}
|
|
@@ -3,15 +3,17 @@ import { Ticket } from "#@typeberry/block/tickets.js";
|
|
|
3
3
|
import { fromJson } from "#@typeberry/block-json";
|
|
4
4
|
import { json } from "#@typeberry/json-parser";
|
|
5
5
|
import { SafroleSealingKeysData } from "#@typeberry/state";
|
|
6
|
-
export const ticketFromJson = json.object({
|
|
6
|
+
export const ticketFromJson = (spec) => json.object({
|
|
7
7
|
id: fromJson.bytes32(),
|
|
8
|
-
attempt: fromJson.ticketAttempt,
|
|
8
|
+
attempt: fromJson.ticketAttempt(spec),
|
|
9
9
|
}, Ticket.create);
|
|
10
10
|
export class TicketsOrKeys {
|
|
11
|
-
static fromJson
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
static fromJson(spec) {
|
|
12
|
+
return {
|
|
13
|
+
keys: json.optional(json.array(fromJson.bytes32())),
|
|
14
|
+
tickets: json.optional(json.array(ticketFromJson(spec))),
|
|
15
|
+
};
|
|
16
|
+
}
|
|
15
17
|
keys;
|
|
16
18
|
tickets;
|
|
17
19
|
static toSafroleSealingKeys(data, chainSpec) {
|
|
@@ -58,7 +58,7 @@ export declare const inMemoryStateCodec: (spec: ChainSpec) => Descriptor<InMemor
|
|
|
58
58
|
sealingKeySeries: Descriptor<import("@typeberry/state").SafroleSealingKeys, import("@typeberry/state").SafroleSealingKeys>;
|
|
59
59
|
ticketsAccumulator: Descriptor<readonly Ticket[] & import("@typeberry/utils").WithOpaque<"0...EpochLength">, import("@typeberry/codec").SequenceView<Ticket, import("@typeberry/codec").ViewOf<Ticket, {
|
|
60
60
|
id: Descriptor<import("@typeberry/bytes").Bytes<32>, import("@typeberry/bytes").Bytes<32>>;
|
|
61
|
-
attempt: Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").
|
|
61
|
+
attempt: Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").U32>;
|
|
62
62
|
}>>>;
|
|
63
63
|
disputesRecords: Descriptor<import("@typeberry/state").DisputesRecords, import("@typeberry/state").DisputesRecords>;
|
|
64
64
|
entropy: Descriptor<import("@typeberry/collections").FixedSizeArray<import("@typeberry/hash").Blake2bHash & import("@typeberry/utils").WithOpaque<"EntropyHash">, 4>, import("@typeberry/collections").FixedSizeArray<import("@typeberry/hash").Blake2bHash & import("@typeberry/utils").WithOpaque<"EntropyHash">, 4>>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Block, type BlockView, Header, type StateRootHash } from "#@typeberry/block";
|
|
2
2
|
import type { BytesBlob } from "#@typeberry/bytes";
|
|
3
|
+
import { type ChainSpec } from "#@typeberry/config";
|
|
3
4
|
import { type TruncatedHash } from "#@typeberry/hash";
|
|
4
5
|
import { type FromJson } from "#@typeberry/json-parser";
|
|
5
6
|
export declare class StateKeyVal {
|
|
@@ -32,7 +33,7 @@ export declare class TestState {
|
|
|
32
33
|
keyvals: StateKeyVal[];
|
|
33
34
|
}
|
|
34
35
|
export declare class StateTransitionGenesis {
|
|
35
|
-
static fromJson: FromJson<StateTransitionGenesis>;
|
|
36
|
+
static fromJson(spec?: ChainSpec): FromJson<StateTransitionGenesis>;
|
|
36
37
|
static Codec: import("@typeberry/codec").Descriptor<{
|
|
37
38
|
header: Header & import("@typeberry/codec").CodecRecord<Header>;
|
|
38
39
|
state: {
|
|
@@ -79,7 +80,7 @@ export declare class StateTransition {
|
|
|
79
80
|
ticketsMarker: import("@typeberry/codec").Descriptor<import("@typeberry/block").TicketsMarker | null, import("@typeberry/codec").ViewOf<import("@typeberry/block").TicketsMarker, {
|
|
80
81
|
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, {
|
|
81
82
|
id: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32>, import("@typeberry/bytes").Bytes<32>>;
|
|
82
|
-
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").
|
|
83
|
+
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").U32>;
|
|
83
84
|
}>>>;
|
|
84
85
|
}> | null>;
|
|
85
86
|
bandersnatchBlockAuthorIndex: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<2> & import("@typeberry/utils").WithOpaque<"ValidatorIndex[u16]">, import("@typeberry/bytes").Bytes<2>>;
|
|
@@ -89,7 +90,7 @@ export declare class StateTransition {
|
|
|
89
90
|
}>>;
|
|
90
91
|
extrinsic: import("@typeberry/codec").Descriptor<import("@typeberry/block").Extrinsic, import("@typeberry/codec").ViewOf<import("@typeberry/block").Extrinsic, {
|
|
91
92
|
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, {
|
|
92
|
-
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").
|
|
93
|
+
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").U32>;
|
|
93
94
|
signature: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<784> & import("@typeberry/utils").WithOpaque<"BandersnatchRingSignature">, import("@typeberry/bytes").Bytes<784>>;
|
|
94
95
|
}>>>;
|
|
95
96
|
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, {
|
|
@@ -213,7 +214,7 @@ export declare class StateTransition {
|
|
|
213
214
|
ticketsMarker: import("@typeberry/codec").Descriptor<import("@typeberry/block").TicketsMarker | null, import("@typeberry/codec").ViewOf<import("@typeberry/block").TicketsMarker, {
|
|
214
215
|
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, {
|
|
215
216
|
id: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32>, import("@typeberry/bytes").Bytes<32>>;
|
|
216
|
-
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").
|
|
217
|
+
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").U32>;
|
|
217
218
|
}>>>;
|
|
218
219
|
}> | null>;
|
|
219
220
|
bandersnatchBlockAuthorIndex: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<2> & import("@typeberry/utils").WithOpaque<"ValidatorIndex[u16]">, import("@typeberry/bytes").Bytes<2>>;
|
|
@@ -223,7 +224,7 @@ export declare class StateTransition {
|
|
|
223
224
|
}>>;
|
|
224
225
|
extrinsic: import("@typeberry/codec").Descriptor<import("@typeberry/block").Extrinsic, import("@typeberry/codec").ViewOf<import("@typeberry/block").Extrinsic, {
|
|
225
226
|
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, {
|
|
226
|
-
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").
|
|
227
|
+
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").U32>;
|
|
227
228
|
signature: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<784> & import("@typeberry/utils").WithOpaque<"BandersnatchRingSignature">, import("@typeberry/bytes").Bytes<784>>;
|
|
228
229
|
}>>>;
|
|
229
230
|
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, {
|
|
@@ -347,7 +348,7 @@ export declare class StateTransition {
|
|
|
347
348
|
ticketsMarker: import("@typeberry/codec").Descriptor<import("@typeberry/block").TicketsMarker | null, import("@typeberry/codec").ViewOf<import("@typeberry/block").TicketsMarker, {
|
|
348
349
|
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, {
|
|
349
350
|
id: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32>, import("@typeberry/bytes").Bytes<32>>;
|
|
350
|
-
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").
|
|
351
|
+
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").U32>;
|
|
351
352
|
}>>>;
|
|
352
353
|
}> | null>;
|
|
353
354
|
bandersnatchBlockAuthorIndex: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<2> & import("@typeberry/utils").WithOpaque<"ValidatorIndex[u16]">, import("@typeberry/bytes").Bytes<2>>;
|
|
@@ -357,7 +358,7 @@ export declare class StateTransition {
|
|
|
357
358
|
}>>;
|
|
358
359
|
extrinsic: import("@typeberry/codec").Descriptor<import("@typeberry/block").Extrinsic, import("@typeberry/codec").ViewOf<import("@typeberry/block").Extrinsic, {
|
|
359
360
|
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, {
|
|
360
|
-
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").
|
|
361
|
+
attempt: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<1> & import("@typeberry/utils").WithOpaque<"TicketAttempt[0|1|2]">, import("@typeberry/numbers").U32>;
|
|
361
362
|
signature: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<784> & import("@typeberry/utils").WithOpaque<"BandersnatchRingSignature">, import("@typeberry/bytes").Bytes<784>>;
|
|
362
363
|
}>>>;
|
|
363
364
|
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, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/state-vectors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,SAAS,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAErF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/state-vectors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,SAAS,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAErF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,KAAK,SAAS,EAAiB,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAkC,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAE,KAAK,QAAQ,EAAQ,MAAM,wBAAwB,CAAC;AAE7D,qBAAa,WAAW;IACtB,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,WAAW,CAAC,CAGpC;IACF,GAAG,EAAG,aAAa,CAAC;IACpB,KAAK,EAAG,SAAS,CAAC;CACnB;AAED,qBAAa,SAAS;IACpB,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,CAGlC;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;SAQT;IAEH,UAAU,EAAG,aAAa,CAAC;IAC3B,OAAO,EAAG,WAAW,EAAE,CAAC;CACzB;AAED,qBAAa,sBAAsB;IACjC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAE,SAAyB,GAAG,QAAQ,CAAC,sBAAsB,CAAC;IAOlF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;SAGT;IAEH,MAAM,EAAG,MAAM,CAAC;IAChB,KAAK,EAAG,SAAS,CAAC;CACnB;AAED,qBAAa,eAAe;IAC1B,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,CAIxC;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAIT;IAEH,SAAS,EAAG,SAAS,CAAC;IACtB,UAAU,EAAG,SAAS,CAAC;IACvB,KAAK,EAAG,SAAS,CAAC;CACnB"}
|
|
@@ -28,10 +28,12 @@ export class TestState {
|
|
|
28
28
|
keyvals;
|
|
29
29
|
}
|
|
30
30
|
export class StateTransitionGenesis {
|
|
31
|
-
static fromJson = {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
static fromJson(spec = tinyChainSpec) {
|
|
32
|
+
return {
|
|
33
|
+
header: headerFromJson(spec),
|
|
34
|
+
state: TestState.fromJson,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
35
37
|
static Codec = codec.object({
|
|
36
38
|
header: Header.Codec,
|
|
37
39
|
state: TestState.Codec,
|
|
@@ -40,7 +40,7 @@ describe("TransitionHasher", () => {
|
|
|
40
40
|
}
|
|
41
41
|
function prepareTickets() {
|
|
42
42
|
return rawTickets.map(({ attempt, signature }) => SignedTicket.create({
|
|
43
|
-
attempt: tryAsTicketAttempt(attempt),
|
|
43
|
+
attempt: tryAsTicketAttempt(attempt, tinyChainSpec),
|
|
44
44
|
signature: Bytes.parseBytes(signature, BANDERSNATCH_PROOF_BYTES).asOpaque(),
|
|
45
45
|
}));
|
|
46
46
|
}
|