@typeberry/lib 0.5.7 → 0.5.8

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.
Files changed (86) hide show
  1. package/package.json +3 -1
  2. package/packages/jam/block/block.d.ts +3 -3
  3. package/packages/jam/block/header.d.ts +6 -6
  4. package/packages/jam/block/test-helpers.d.ts +2 -2
  5. package/packages/jam/block/tickets.d.ts +5 -4
  6. package/packages/jam/block/tickets.d.ts.map +1 -1
  7. package/packages/jam/block/tickets.js +13 -6
  8. package/packages/jam/block-json/block.d.ts +2 -2
  9. package/packages/jam/block-json/block.js +1 -1
  10. package/packages/jam/block-json/common.d.ts +2 -1
  11. package/packages/jam/block-json/common.d.ts.map +1 -1
  12. package/packages/jam/block-json/common.js +2 -5
  13. package/packages/jam/block-json/extrinsic.js +1 -1
  14. package/packages/jam/block-json/header.d.ts +2 -1
  15. package/packages/jam/block-json/header.d.ts.map +1 -1
  16. package/packages/jam/block-json/header.js +34 -32
  17. package/packages/jam/block-json/tickets-extrinsic.d.ts +2 -1
  18. package/packages/jam/block-json/tickets-extrinsic.d.ts.map +1 -1
  19. package/packages/jam/block-json/tickets-extrinsic.js +7 -5
  20. package/packages/jam/fuzz-proto/v1/types.d.ts +1 -1
  21. package/packages/jam/jamnp-s/network.d.ts +2 -0
  22. package/packages/jam/jamnp-s/network.d.ts.map +1 -1
  23. package/packages/jam/jamnp-s/network.js +4 -0
  24. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts +10 -3
  25. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts.map +1 -1
  26. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.js +12 -4
  27. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.test.js +4 -3
  28. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts +1 -1
  29. package/packages/jam/jamnp-s/tasks/ticket-distribution.d.ts +34 -0
  30. package/packages/jam/jamnp-s/tasks/ticket-distribution.d.ts.map +1 -0
  31. package/packages/jam/jamnp-s/tasks/ticket-distribution.js +115 -0
  32. package/packages/jam/jamnp-s/tasks/ticket-distribution.test.d.ts +2 -0
  33. package/packages/jam/jamnp-s/tasks/ticket-distribution.test.d.ts.map +1 -0
  34. package/packages/jam/jamnp-s/tasks/ticket-distribution.test.js +220 -0
  35. package/packages/jam/node/main.d.ts.map +1 -1
  36. package/packages/jam/node/main.js +56 -26
  37. package/packages/jam/node/reader.d.ts +2 -2
  38. package/packages/jam/node/workers.d.ts +32 -25
  39. package/packages/jam/node/workers.d.ts.map +1 -1
  40. package/packages/jam/node/workers.js +16 -7
  41. package/packages/jam/safrole/bandersnatch-vrf.d.ts +3 -2
  42. package/packages/jam/safrole/bandersnatch-vrf.d.ts.map +1 -1
  43. package/packages/jam/safrole/bandersnatch-vrf.js +2 -2
  44. package/packages/jam/safrole/bandersnatch-vrf.test.js +3 -2
  45. package/packages/jam/safrole/safrole.test.js +80 -72
  46. package/packages/jam/state/safrole-data.d.ts +1 -1
  47. package/packages/jam/state/test.utils.js +1 -1
  48. package/packages/jam/state-json/dump.js +2 -2
  49. package/packages/jam/state-json/safrole.d.ts +2 -2
  50. package/packages/jam/state-json/safrole.d.ts.map +1 -1
  51. package/packages/jam/state-json/safrole.js +8 -6
  52. package/packages/jam/state-merkleization/in-memory-state-codec.d.ts +1 -1
  53. package/packages/jam/state-vectors/index.d.ts +8 -7
  54. package/packages/jam/state-vectors/index.d.ts.map +1 -1
  55. package/packages/jam/state-vectors/index.js +6 -4
  56. package/packages/jam/transition/hasher.test.js +1 -1
  57. package/packages/workers/api-node/config.d.ts +5 -1
  58. package/packages/workers/api-node/config.d.ts.map +1 -1
  59. package/packages/workers/api-node/config.js +9 -3
  60. package/packages/workers/api-node/port.d.ts +8 -0
  61. package/packages/workers/api-node/port.d.ts.map +1 -1
  62. package/packages/workers/api-node/port.js +10 -0
  63. package/packages/workers/block-authorship/bootstrap-main.js +10 -3
  64. package/packages/workers/block-authorship/main.d.ts +2 -1
  65. package/packages/workers/block-authorship/main.d.ts.map +1 -1
  66. package/packages/workers/block-authorship/main.js +5 -4
  67. package/packages/workers/block-authorship/protocol.d.ts +4 -4
  68. package/packages/workers/block-authorship/ticket-generator.d.ts +3 -2
  69. package/packages/workers/block-authorship/ticket-generator.d.ts.map +1 -1
  70. package/packages/workers/block-authorship/ticket-generator.js +2 -3
  71. package/packages/workers/block-authorship/ticket-generator.test.js +11 -10
  72. package/packages/workers/comms-authorship-network/index.d.ts +3 -0
  73. package/packages/workers/comms-authorship-network/index.d.ts.map +1 -0
  74. package/packages/workers/comms-authorship-network/index.js +2 -0
  75. package/packages/workers/comms-authorship-network/protocol.d.ts +27 -0
  76. package/packages/workers/comms-authorship-network/protocol.d.ts.map +1 -0
  77. package/packages/workers/comms-authorship-network/protocol.js +24 -0
  78. package/packages/workers/comms-authorship-network/tickets-message.d.ts +18 -0
  79. package/packages/workers/comms-authorship-network/tickets-message.d.ts.map +1 -0
  80. package/packages/workers/comms-authorship-network/tickets-message.js +19 -0
  81. package/packages/workers/importer/protocol.d.ts +8 -8
  82. package/packages/workers/jam-network/bootstrap-main.js +10 -3
  83. package/packages/workers/jam-network/main.d.ts +2 -1
  84. package/packages/workers/jam-network/main.d.ts.map +1 -1
  85. package/packages/workers/jam-network/main.js +8 -1
  86. package/packages/workers/jam-network/protocol.d.ts +10 -10
@@ -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
- const extrinsic = asKnownSize([
129
- {
130
- attempt: tryAsTicketAttempt(tinyChainSpec.ticketsPerValidator + 2),
131
- signature: Bytes.zero(BANDERSNATCH_PROOF_BYTES).asOpaque(),
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").U8>;
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,EAAE,QAAQ,CAAC,MAAM,CAM3C,CAAC;AAEF,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,CAGtC;IAEF,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"}
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
- keys: json.optional(json.array(fromJson.bytes32())),
13
- tickets: json.optional(json.array(ticketFromJson)),
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").U8>;
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").U8>;
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").U8>;
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").U8>;
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").U8>;
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").U8>;
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").U8>;
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;AAGlD,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,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAG/C;IAEF,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"}
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
- header: headerFromJson,
33
- state: TestState.fromJson,
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
  }
@@ -3,6 +3,7 @@ import { ChainSpec } from "#@typeberry/config";
3
3
  import { type BlocksDb, type RootDb, type SerializedStatesDb } from "#@typeberry/database";
4
4
  import { Blake2b } from "#@typeberry/hash";
5
5
  import type { WorkerConfig } from "#@typeberry/workers-api";
6
+ import { ThreadPort, type TransferablePort } from "./port.js";
6
7
  /** A worker config that's usable in node.js and uses LMDB database backend. */
7
8
  export declare class LmdbWorkerConfig<T = void> implements WorkerConfig<T, BlocksDb, SerializedStatesDb> {
8
9
  readonly nodeName: string;
@@ -10,12 +11,14 @@ export declare class LmdbWorkerConfig<T = void> implements WorkerConfig<T, Block
10
11
  readonly workerParams: T;
11
12
  readonly dbPath: string;
12
13
  readonly blake2b: Blake2b;
13
- static new<T>({ nodeName, chainSpec, workerParams, dbPath, blake2b, }: {
14
+ readonly ports: Map<string, ThreadPort>;
15
+ static new<T>({ nodeName, chainSpec, workerParams, dbPath, blake2b, ports, }: {
14
16
  nodeName: string;
15
17
  chainSpec: ChainSpec;
16
18
  workerParams: T;
17
19
  dbPath: string;
18
20
  blake2b: Blake2b;
21
+ ports?: Map<string, ThreadPort>;
19
22
  }): LmdbWorkerConfig<T>;
20
23
  /** Restore node config from a transferable config object. */
21
24
  static fromTransferable<T>(decodeParams: Decode<T>, config: TransferableConfig): Promise<LmdbWorkerConfig<T>>;
@@ -32,6 +35,7 @@ export type TransferableConfig = {
32
35
  chainSpec: ChainSpec;
33
36
  workerParams: Uint8Array;
34
37
  dbPath: string;
38
+ workerPorts: [string, TransferablePort][];
35
39
  };
36
40
  /**
37
41
  * In-memory (direct) worker using serialized state database.