@typeberry/lib 0.5.4 → 0.5.5

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 (101) hide show
  1. package/package.json +1 -1
  2. package/packages/core/json-parser/descriptors.d.ts.map +1 -1
  3. package/packages/core/json-parser/descriptors.js +3 -0
  4. package/packages/core/json-parser/index.test.js +30 -0
  5. package/packages/core/networking/package.json +1 -1
  6. package/packages/core/telemetry/package.json +1 -1
  7. package/packages/core/utils/compatibility.d.ts +0 -1
  8. package/packages/core/utils/compatibility.d.ts.map +1 -1
  9. package/packages/core/utils/compatibility.js +1 -2
  10. package/packages/core/utils/compatibility.test.js +6 -10
  11. package/packages/jam/block/index.d.ts +11 -11
  12. package/packages/jam/block/index.d.ts.map +1 -1
  13. package/packages/jam/block/index.js +11 -11
  14. package/packages/jam/block-json/block.d.ts +25 -25
  15. package/packages/jam/database-lmdb/states.test.js +3 -5
  16. package/packages/jam/fuzz-proto/v1/types.d.ts +1 -1
  17. package/packages/jam/jam-host-calls/accumulate/bless.d.ts.map +1 -1
  18. package/packages/jam/jam-host-calls/accumulate/bless.js +6 -10
  19. package/packages/jam/jam-host-calls/accumulate/bless.test.js +32 -72
  20. package/packages/jam/jam-host-calls/accumulate/new.d.ts.map +1 -1
  21. package/packages/jam/jam-host-calls/accumulate/new.js +2 -4
  22. package/packages/jam/jam-host-calls/accumulate/new.test.js +4 -5
  23. package/packages/jam/jam-host-calls/general/fetch.d.ts +1 -57
  24. package/packages/jam/jam-host-calls/general/fetch.d.ts.map +1 -1
  25. package/packages/jam/jam-host-calls/general/fetch.js +6 -29
  26. package/packages/jam/jam-host-calls/general/fetch.test.js +2 -58
  27. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts +4 -4
  28. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts +13 -13
  29. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts +1 -1
  30. package/packages/jam/node/package.json +1 -1
  31. package/packages/jam/node/reader.d.ts +25 -25
  32. package/packages/jam/node/workers.d.ts +183 -183
  33. package/packages/jam/state/accumulation-queue.d.ts +26 -26
  34. package/packages/jam/state/assurances.d.ts +26 -26
  35. package/packages/jam/state/privileged-services.d.ts +1 -1
  36. package/packages/jam/state/privileged-services.d.ts.map +1 -1
  37. package/packages/jam/state/privileged-services.js +1 -6
  38. package/packages/jam/state/service.d.ts +1 -1
  39. package/packages/jam/state/service.d.ts.map +1 -1
  40. package/packages/jam/state/statistics.d.ts +0 -8
  41. package/packages/jam/state/statistics.d.ts.map +1 -1
  42. package/packages/jam/state/statistics.js +14 -44
  43. package/packages/jam/state/statistics.test.js +1 -8
  44. package/packages/jam/state/test.utils.d.ts +1 -1
  45. package/packages/jam/state/test.utils.d.ts.map +1 -1
  46. package/packages/jam/state/test.utils.js +4 -22
  47. package/packages/jam/state-json/accounts.d.ts +10 -0
  48. package/packages/jam/state-json/accounts.d.ts.map +1 -1
  49. package/packages/jam/state-json/accounts.js +47 -19
  50. package/packages/jam/state-json/dump.d.ts.map +1 -1
  51. package/packages/jam/state-json/dump.js +5 -9
  52. package/packages/jam/state-json/dump.test.js +2 -10
  53. package/packages/jam/state-json/statistics.d.ts +1 -1
  54. package/packages/jam/state-json/statistics.d.ts.map +1 -1
  55. package/packages/jam/state-json/statistics.js +1 -13
  56. package/packages/jam/state-merkleization/in-memory-state-codec.d.ts +29 -31
  57. package/packages/jam/state-merkleization/in-memory-state-codec.d.ts.map +1 -1
  58. package/packages/jam/state-merkleization/serialize.d.ts +4 -4
  59. package/packages/jam/state-merkleization/serialize.d.ts.map +1 -1
  60. package/packages/jam/state-merkleization/serialize.js +5 -8
  61. package/packages/jam/state-merkleization/serialized-state-view.d.ts.map +1 -1
  62. package/packages/jam/state-merkleization/state-entries.test.js +1 -7
  63. package/packages/jam/state-vectors/index.d.ts +75 -75
  64. package/packages/jam/transition/accumulate/accumulate-state.d.ts +1 -2
  65. package/packages/jam/transition/accumulate/accumulate-state.d.ts.map +1 -1
  66. package/packages/jam/transition/accumulate/accumulate-utils.d.ts.map +1 -1
  67. package/packages/jam/transition/accumulate/accumulate-utils.js +2 -6
  68. package/packages/jam/transition/accumulate/accumulate-utils.test.js +2 -4
  69. package/packages/jam/transition/accumulate/accumulate.d.ts.map +1 -1
  70. package/packages/jam/transition/accumulate/accumulate.js +11 -20
  71. package/packages/jam/transition/accumulate/index.d.ts +0 -1
  72. package/packages/jam/transition/accumulate/index.d.ts.map +1 -1
  73. package/packages/jam/transition/accumulate/index.js +0 -1
  74. package/packages/jam/transition/accumulate/operand.d.ts +7 -7
  75. package/packages/jam/transition/chain-stf.d.ts +3 -5
  76. package/packages/jam/transition/chain-stf.d.ts.map +1 -1
  77. package/packages/jam/transition/chain-stf.js +5 -29
  78. package/packages/jam/transition/disputes/disputes.test.data2.d.ts +3 -3
  79. package/packages/jam/transition/disputes/disputes.test.data2.d.ts.map +1 -1
  80. package/packages/jam/transition/externalities/accumulate-externalities.d.ts.map +1 -1
  81. package/packages/jam/transition/externalities/accumulate-externalities.js +22 -49
  82. package/packages/jam/transition/externalities/accumulate-externalities.test.js +8 -72
  83. package/packages/jam/transition/externalities/fetch-externalities.d.ts +3 -22
  84. package/packages/jam/transition/externalities/fetch-externalities.d.ts.map +1 -1
  85. package/packages/jam/transition/externalities/fetch-externalities.js +3 -55
  86. package/packages/jam/transition/externalities/fetch-externalities.test.js +199 -112
  87. package/packages/jam/transition/statistics.d.ts +0 -7
  88. package/packages/jam/transition/statistics.d.ts.map +1 -1
  89. package/packages/jam/transition/statistics.js +2 -11
  90. package/packages/jam/transition/statistics.test.js +0 -40
  91. package/packages/workers/block-authorship/generator.test.d.ts +2 -0
  92. package/packages/workers/block-authorship/generator.test.d.ts.map +1 -0
  93. package/packages/workers/block-authorship/generator.test.js +200 -0
  94. package/packages/workers/block-authorship/package.json +1 -1
  95. package/packages/workers/block-authorship/protocol.d.ts +50 -50
  96. package/packages/workers/importer/package.json +1 -1
  97. package/packages/workers/importer/protocol.d.ts +54 -54
  98. package/packages/workers/jam-network/protocol.d.ts +79 -79
  99. package/packages/jam/transition/accumulate/deferred-transfers.d.ts +0 -36
  100. package/packages/jam/transition/accumulate/deferred-transfers.d.ts.map +0 -1
  101. package/packages/jam/transition/accumulate/deferred-transfers.js +0 -94
@@ -1,94 +0,0 @@
1
- import { tryAsServiceGas } from "#@typeberry/block";
2
- import { W_C } from "#@typeberry/block/gp-constants.js";
3
- import { codec, Encoder } from "#@typeberry/codec";
4
- import { PvmExecutor } from "#@typeberry/executor";
5
- import { AccumulationStateUpdate, PartiallyUpdatedState } from "#@typeberry/jam-host-calls";
6
- import { Logger } from "#@typeberry/logger";
7
- import { sumU64, tryAsU32 } from "#@typeberry/numbers";
8
- import { ServiceAccountInfo } from "#@typeberry/state";
9
- import { Result } from "#@typeberry/utils";
10
- import { AccumulateExternalities } from "../externalities/accumulate-externalities.js";
11
- import { FetchExternalities } from "../externalities/fetch-externalities.js";
12
- import { uniquePreserveOrder } from "./accumulate-utils.js";
13
- const ARGS_CODEC = codec.object({
14
- timeslot: codec.varU32.asOpaque(),
15
- serviceId: codec.varU32.asOpaque(),
16
- transfersLength: codec.varU32,
17
- });
18
- export var DeferredTransfersErrorCode;
19
- (function (DeferredTransfersErrorCode) {
20
- DeferredTransfersErrorCode[DeferredTransfersErrorCode["ServiceBalanceOverflow"] = 1] = "ServiceBalanceOverflow";
21
- DeferredTransfersErrorCode[DeferredTransfersErrorCode["ServiceInfoNotExist"] = 2] = "ServiceInfoNotExist";
22
- })(DeferredTransfersErrorCode || (DeferredTransfersErrorCode = {}));
23
- const logger = Logger.new(import.meta.filename, "deferred-transfers");
24
- /**
25
- * https://graypaper.fluffylabs.dev/#/7e6ff6a/18df0118df01?v=0.6.7
26
- */
27
- export class DeferredTransfers {
28
- chainSpec;
29
- blake2b;
30
- state;
31
- pvm;
32
- constructor(chainSpec, blake2b, state, pvm) {
33
- this.chainSpec = chainSpec;
34
- this.blake2b = blake2b;
35
- this.state = state;
36
- this.pvm = pvm;
37
- }
38
- async transition({ pendingTransfers, timeslot, servicesUpdate: inputServicesUpdate, entropy, }) {
39
- // https://graypaper.fluffylabs.dev/#/7e6ff6a/187a03187a03?v=0.6.7
40
- const transferStatistics = new Map();
41
- const services = uniquePreserveOrder(pendingTransfers.map((x) => x.destination));
42
- let currentStateUpdate = AccumulationStateUpdate.new(inputServicesUpdate);
43
- for (const serviceId of services) {
44
- const partiallyUpdatedState = new PartiallyUpdatedState(this.state, currentStateUpdate);
45
- // https://graypaper.fluffylabs.dev/#/38c4e62/18750318ae03?v=0.7.0
46
- const transfers = pendingTransfers
47
- .filter((pendingTransfer) => pendingTransfer.destination === serviceId)
48
- .toSorted((a, b) => a.source - b.source);
49
- const info = partiallyUpdatedState.getServiceInfo(serviceId);
50
- if (info === null) {
51
- return Result.error(DeferredTransfersErrorCode.ServiceInfoNotExist, () => `Deferred transfers: service info not found for ${serviceId}`);
52
- }
53
- const codeHash = info.codeHash;
54
- const code = partiallyUpdatedState.getPreimage(serviceId, codeHash.asOpaque());
55
- const newBalance = sumU64(info.balance, ...transfers.map((item) => item.amount));
56
- if (newBalance.overflow) {
57
- return Result.error(DeferredTransfersErrorCode.ServiceBalanceOverflow, () => `Deferred transfers: balance overflow for service ${serviceId}`);
58
- }
59
- const newInfo = ServiceAccountInfo.create({ ...info, balance: newBalance.value });
60
- partiallyUpdatedState.updateServiceInfo(serviceId, newInfo);
61
- const partialState = new AccumulateExternalities(this.chainSpec, this.blake2b, partiallyUpdatedState, serviceId, serviceId, timeslot);
62
- const fetchExternalities = FetchExternalities.createForOnTransfer({ entropy, transfers }, this.chainSpec);
63
- let consumedGas = tryAsServiceGas(0);
64
- const hasTransfers = transfers.length > 0;
65
- const isCodeCorrect = code !== null && code.length <= W_C;
66
- if (!hasTransfers || !isCodeCorrect) {
67
- if (code === null) {
68
- logger.trace `Skipping ON_TRANSFER execution for service ${serviceId} because code is null`;
69
- }
70
- else if (!hasTransfers) {
71
- logger.trace `Skipping ON_TRANSFER execution for service ${serviceId} because there are no transfers`;
72
- }
73
- else {
74
- logger.trace `Skipping ON_TRANSFER execution for service ${serviceId} because code is too long`;
75
- }
76
- }
77
- else {
78
- const executor = await PvmExecutor.createOnTransferExecutor(serviceId, code, { partialState, fetchExternalities }, this.pvm);
79
- const args = Encoder.encodeObject(ARGS_CODEC, { timeslot, serviceId, transfersLength: tryAsU32(transfers.length) }, this.chainSpec);
80
- const gas = tryAsServiceGas(transfers.reduce((acc, item) => acc + item.gas, 0n));
81
- consumedGas = (await executor.run(args, gas)).consumedGas;
82
- }
83
- transferStatistics.set(serviceId, { count: tryAsU32(transfers.length), gasUsed: consumedGas });
84
- const [updatedState] = partialState.getStateUpdates();
85
- currentStateUpdate = updatedState;
86
- }
87
- return Result.ok({
88
- // NOTE: we return only services, since it's impossible to update
89
- // anything else during `on_transfer` call.
90
- servicesUpdate: currentStateUpdate.services,
91
- transferStatistics,
92
- });
93
- }
94
- }