@typeberry/lib 0.5.4 → 0.5.5-befa219

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 (123) hide show
  1. package/bin/lib/scripts/build-lib.js +1 -0
  2. package/package.json +5 -1
  3. package/packages/core/json-parser/descriptors.d.ts.map +1 -1
  4. package/packages/core/json-parser/descriptors.js +3 -0
  5. package/packages/core/json-parser/index.test.js +30 -0
  6. package/packages/core/networking/package.json +1 -1
  7. package/packages/core/pvm-host-calls/ecalli-trace-logger.js +1 -1
  8. package/packages/core/pvm-host-calls/ecalli-trace-logger.test.js +7 -7
  9. package/packages/core/pvm-host-calls/host-call-registers.js +1 -1
  10. package/packages/core/telemetry/package.json +1 -1
  11. package/packages/core/utils/compatibility.d.ts +0 -1
  12. package/packages/core/utils/compatibility.d.ts.map +1 -1
  13. package/packages/core/utils/compatibility.js +1 -2
  14. package/packages/core/utils/compatibility.test.js +6 -10
  15. package/packages/jam/block/index.d.ts +11 -11
  16. package/packages/jam/block/index.d.ts.map +1 -1
  17. package/packages/jam/block/index.js +11 -11
  18. package/packages/jam/block-json/block.d.ts +25 -25
  19. package/packages/jam/database-lmdb/states.test.js +3 -5
  20. package/packages/jam/fuzz-proto/v1/types.d.ts +1 -1
  21. package/packages/jam/jam-host-calls/accumulate/bless.d.ts.map +1 -1
  22. package/packages/jam/jam-host-calls/accumulate/bless.js +6 -10
  23. package/packages/jam/jam-host-calls/accumulate/bless.test.js +32 -72
  24. package/packages/jam/jam-host-calls/accumulate/new.d.ts.map +1 -1
  25. package/packages/jam/jam-host-calls/accumulate/new.js +2 -4
  26. package/packages/jam/jam-host-calls/accumulate/new.test.js +4 -5
  27. package/packages/jam/jam-host-calls/general/fetch.d.ts +1 -57
  28. package/packages/jam/jam-host-calls/general/fetch.d.ts.map +1 -1
  29. package/packages/jam/jam-host-calls/general/fetch.js +6 -29
  30. package/packages/jam/jam-host-calls/general/fetch.test.js +2 -58
  31. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts +4 -4
  32. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts +13 -13
  33. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts +1 -1
  34. package/packages/jam/node/package.json +1 -1
  35. package/packages/jam/node/reader.d.ts +25 -25
  36. package/packages/jam/node/workers.d.ts +183 -183
  37. package/packages/jam/safrole/bandersnatch-vrf.d.ts +7 -2
  38. package/packages/jam/safrole/bandersnatch-vrf.d.ts.map +1 -1
  39. package/packages/jam/safrole/bandersnatch-vrf.js +34 -1
  40. package/packages/jam/safrole/bandersnatch-vrf.test.js +15 -0
  41. package/packages/jam/safrole/bandersnatch-wasm.d.ts +1 -0
  42. package/packages/jam/safrole/bandersnatch-wasm.d.ts.map +1 -1
  43. package/packages/jam/safrole/bandersnatch-wasm.js +3 -0
  44. package/packages/jam/state/accumulation-queue.d.ts +26 -26
  45. package/packages/jam/state/assurances.d.ts +26 -26
  46. package/packages/jam/state/privileged-services.d.ts +1 -1
  47. package/packages/jam/state/privileged-services.d.ts.map +1 -1
  48. package/packages/jam/state/privileged-services.js +1 -6
  49. package/packages/jam/state/service.d.ts +1 -1
  50. package/packages/jam/state/service.d.ts.map +1 -1
  51. package/packages/jam/state/statistics.d.ts +0 -8
  52. package/packages/jam/state/statistics.d.ts.map +1 -1
  53. package/packages/jam/state/statistics.js +14 -44
  54. package/packages/jam/state/statistics.test.js +1 -8
  55. package/packages/jam/state/test.utils.d.ts +1 -1
  56. package/packages/jam/state/test.utils.d.ts.map +1 -1
  57. package/packages/jam/state/test.utils.js +4 -22
  58. package/packages/jam/state-json/accounts.d.ts +10 -0
  59. package/packages/jam/state-json/accounts.d.ts.map +1 -1
  60. package/packages/jam/state-json/accounts.js +47 -19
  61. package/packages/jam/state-json/dump.d.ts.map +1 -1
  62. package/packages/jam/state-json/dump.js +5 -9
  63. package/packages/jam/state-json/dump.test.js +2 -10
  64. package/packages/jam/state-json/statistics.d.ts +1 -1
  65. package/packages/jam/state-json/statistics.d.ts.map +1 -1
  66. package/packages/jam/state-json/statistics.js +1 -13
  67. package/packages/jam/state-merkleization/in-memory-state-codec.d.ts +29 -31
  68. package/packages/jam/state-merkleization/in-memory-state-codec.d.ts.map +1 -1
  69. package/packages/jam/state-merkleization/serialize.d.ts +4 -4
  70. package/packages/jam/state-merkleization/serialize.d.ts.map +1 -1
  71. package/packages/jam/state-merkleization/serialize.js +5 -8
  72. package/packages/jam/state-merkleization/serialized-state-view.d.ts.map +1 -1
  73. package/packages/jam/state-merkleization/state-entries.test.js +1 -7
  74. package/packages/jam/state-vectors/index.d.ts +75 -75
  75. package/packages/jam/transition/accumulate/accumulate-data.d.ts.map +1 -1
  76. package/packages/jam/transition/accumulate/accumulate-data.js +6 -1
  77. package/packages/jam/transition/accumulate/accumulate-state.d.ts +1 -2
  78. package/packages/jam/transition/accumulate/accumulate-state.d.ts.map +1 -1
  79. package/packages/jam/transition/accumulate/accumulate-utils.d.ts.map +1 -1
  80. package/packages/jam/transition/accumulate/accumulate-utils.js +2 -6
  81. package/packages/jam/transition/accumulate/accumulate-utils.test.js +2 -4
  82. package/packages/jam/transition/accumulate/accumulate.d.ts +0 -9
  83. package/packages/jam/transition/accumulate/accumulate.d.ts.map +1 -1
  84. package/packages/jam/transition/accumulate/accumulate.js +15 -57
  85. package/packages/jam/transition/accumulate/index.d.ts +0 -1
  86. package/packages/jam/transition/accumulate/index.d.ts.map +1 -1
  87. package/packages/jam/transition/accumulate/index.js +0 -1
  88. package/packages/jam/transition/accumulate/operand.d.ts +7 -7
  89. package/packages/jam/transition/chain-stf.d.ts +3 -5
  90. package/packages/jam/transition/chain-stf.d.ts.map +1 -1
  91. package/packages/jam/transition/chain-stf.js +5 -29
  92. package/packages/jam/transition/disputes/disputes.test.data2.d.ts +3 -3
  93. package/packages/jam/transition/disputes/disputes.test.data2.d.ts.map +1 -1
  94. package/packages/jam/transition/externalities/accumulate-externalities.d.ts.map +1 -1
  95. package/packages/jam/transition/externalities/accumulate-externalities.js +22 -49
  96. package/packages/jam/transition/externalities/accumulate-externalities.test.js +8 -72
  97. package/packages/jam/transition/externalities/fetch-externalities.d.ts +3 -22
  98. package/packages/jam/transition/externalities/fetch-externalities.d.ts.map +1 -1
  99. package/packages/jam/transition/externalities/fetch-externalities.js +3 -55
  100. package/packages/jam/transition/externalities/fetch-externalities.test.js +199 -112
  101. package/packages/jam/transition/statistics.d.ts +0 -7
  102. package/packages/jam/transition/statistics.d.ts.map +1 -1
  103. package/packages/jam/transition/statistics.js +2 -11
  104. package/packages/jam/transition/statistics.test.js +0 -40
  105. package/packages/workers/block-authorship/generator.test.d.ts +2 -0
  106. package/packages/workers/block-authorship/generator.test.d.ts.map +1 -0
  107. package/packages/workers/block-authorship/generator.test.js +200 -0
  108. package/packages/workers/block-authorship/main.d.ts.map +1 -1
  109. package/packages/workers/block-authorship/main.js +31 -1
  110. package/packages/workers/block-authorship/package.json +1 -1
  111. package/packages/workers/block-authorship/protocol.d.ts +50 -50
  112. package/packages/workers/block-authorship/ticket-generator.d.ts +21 -0
  113. package/packages/workers/block-authorship/ticket-generator.d.ts.map +1 -0
  114. package/packages/workers/block-authorship/ticket-generator.js +37 -0
  115. package/packages/workers/block-authorship/ticket-generator.test.d.ts +2 -0
  116. package/packages/workers/block-authorship/ticket-generator.test.d.ts.map +1 -0
  117. package/packages/workers/block-authorship/ticket-generator.test.js +100 -0
  118. package/packages/workers/importer/package.json +1 -1
  119. package/packages/workers/importer/protocol.d.ts +54 -54
  120. package/packages/workers/jam-network/protocol.d.ts +79 -79
  121. package/packages/jam/transition/accumulate/deferred-transfers.d.ts +0 -36
  122. package/packages/jam/transition/accumulate/deferred-transfers.d.ts.map +0 -1
  123. 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
- }