@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.
- package/bin/lib/scripts/build-lib.js +1 -0
- package/package.json +5 -1
- package/packages/core/json-parser/descriptors.d.ts.map +1 -1
- package/packages/core/json-parser/descriptors.js +3 -0
- package/packages/core/json-parser/index.test.js +30 -0
- package/packages/core/networking/package.json +1 -1
- package/packages/core/pvm-host-calls/ecalli-trace-logger.js +1 -1
- package/packages/core/pvm-host-calls/ecalli-trace-logger.test.js +7 -7
- package/packages/core/pvm-host-calls/host-call-registers.js +1 -1
- package/packages/core/telemetry/package.json +1 -1
- package/packages/core/utils/compatibility.d.ts +0 -1
- package/packages/core/utils/compatibility.d.ts.map +1 -1
- package/packages/core/utils/compatibility.js +1 -2
- package/packages/core/utils/compatibility.test.js +6 -10
- package/packages/jam/block/index.d.ts +11 -11
- package/packages/jam/block/index.d.ts.map +1 -1
- package/packages/jam/block/index.js +11 -11
- package/packages/jam/block-json/block.d.ts +25 -25
- package/packages/jam/database-lmdb/states.test.js +3 -5
- package/packages/jam/fuzz-proto/v1/types.d.ts +1 -1
- package/packages/jam/jam-host-calls/accumulate/bless.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/bless.js +6 -10
- package/packages/jam/jam-host-calls/accumulate/bless.test.js +32 -72
- package/packages/jam/jam-host-calls/accumulate/new.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/new.js +2 -4
- package/packages/jam/jam-host-calls/accumulate/new.test.js +4 -5
- package/packages/jam/jam-host-calls/general/fetch.d.ts +1 -57
- package/packages/jam/jam-host-calls/general/fetch.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/general/fetch.js +6 -29
- package/packages/jam/jam-host-calls/general/fetch.test.js +2 -58
- package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts +4 -4
- package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts +13 -13
- package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts +1 -1
- package/packages/jam/node/package.json +1 -1
- package/packages/jam/node/reader.d.ts +25 -25
- package/packages/jam/node/workers.d.ts +183 -183
- package/packages/jam/safrole/bandersnatch-vrf.d.ts +7 -2
- package/packages/jam/safrole/bandersnatch-vrf.d.ts.map +1 -1
- package/packages/jam/safrole/bandersnatch-vrf.js +34 -1
- package/packages/jam/safrole/bandersnatch-vrf.test.js +15 -0
- package/packages/jam/safrole/bandersnatch-wasm.d.ts +1 -0
- package/packages/jam/safrole/bandersnatch-wasm.d.ts.map +1 -1
- package/packages/jam/safrole/bandersnatch-wasm.js +3 -0
- package/packages/jam/state/accumulation-queue.d.ts +26 -26
- package/packages/jam/state/assurances.d.ts +26 -26
- package/packages/jam/state/privileged-services.d.ts +1 -1
- package/packages/jam/state/privileged-services.d.ts.map +1 -1
- package/packages/jam/state/privileged-services.js +1 -6
- package/packages/jam/state/service.d.ts +1 -1
- package/packages/jam/state/service.d.ts.map +1 -1
- package/packages/jam/state/statistics.d.ts +0 -8
- package/packages/jam/state/statistics.d.ts.map +1 -1
- package/packages/jam/state/statistics.js +14 -44
- package/packages/jam/state/statistics.test.js +1 -8
- package/packages/jam/state/test.utils.d.ts +1 -1
- package/packages/jam/state/test.utils.d.ts.map +1 -1
- package/packages/jam/state/test.utils.js +4 -22
- package/packages/jam/state-json/accounts.d.ts +10 -0
- package/packages/jam/state-json/accounts.d.ts.map +1 -1
- package/packages/jam/state-json/accounts.js +47 -19
- package/packages/jam/state-json/dump.d.ts.map +1 -1
- package/packages/jam/state-json/dump.js +5 -9
- package/packages/jam/state-json/dump.test.js +2 -10
- package/packages/jam/state-json/statistics.d.ts +1 -1
- package/packages/jam/state-json/statistics.d.ts.map +1 -1
- package/packages/jam/state-json/statistics.js +1 -13
- package/packages/jam/state-merkleization/in-memory-state-codec.d.ts +29 -31
- package/packages/jam/state-merkleization/in-memory-state-codec.d.ts.map +1 -1
- package/packages/jam/state-merkleization/serialize.d.ts +4 -4
- package/packages/jam/state-merkleization/serialize.d.ts.map +1 -1
- package/packages/jam/state-merkleization/serialize.js +5 -8
- package/packages/jam/state-merkleization/serialized-state-view.d.ts.map +1 -1
- package/packages/jam/state-merkleization/state-entries.test.js +1 -7
- package/packages/jam/state-vectors/index.d.ts +75 -75
- package/packages/jam/transition/accumulate/accumulate-data.d.ts.map +1 -1
- package/packages/jam/transition/accumulate/accumulate-data.js +6 -1
- package/packages/jam/transition/accumulate/accumulate-state.d.ts +1 -2
- package/packages/jam/transition/accumulate/accumulate-state.d.ts.map +1 -1
- package/packages/jam/transition/accumulate/accumulate-utils.d.ts.map +1 -1
- package/packages/jam/transition/accumulate/accumulate-utils.js +2 -6
- package/packages/jam/transition/accumulate/accumulate-utils.test.js +2 -4
- package/packages/jam/transition/accumulate/accumulate.d.ts +0 -9
- package/packages/jam/transition/accumulate/accumulate.d.ts.map +1 -1
- package/packages/jam/transition/accumulate/accumulate.js +15 -57
- package/packages/jam/transition/accumulate/index.d.ts +0 -1
- package/packages/jam/transition/accumulate/index.d.ts.map +1 -1
- package/packages/jam/transition/accumulate/index.js +0 -1
- package/packages/jam/transition/accumulate/operand.d.ts +7 -7
- package/packages/jam/transition/chain-stf.d.ts +3 -5
- package/packages/jam/transition/chain-stf.d.ts.map +1 -1
- package/packages/jam/transition/chain-stf.js +5 -29
- package/packages/jam/transition/disputes/disputes.test.data2.d.ts +3 -3
- package/packages/jam/transition/disputes/disputes.test.data2.d.ts.map +1 -1
- package/packages/jam/transition/externalities/accumulate-externalities.d.ts.map +1 -1
- package/packages/jam/transition/externalities/accumulate-externalities.js +22 -49
- package/packages/jam/transition/externalities/accumulate-externalities.test.js +8 -72
- package/packages/jam/transition/externalities/fetch-externalities.d.ts +3 -22
- package/packages/jam/transition/externalities/fetch-externalities.d.ts.map +1 -1
- package/packages/jam/transition/externalities/fetch-externalities.js +3 -55
- package/packages/jam/transition/externalities/fetch-externalities.test.js +199 -112
- package/packages/jam/transition/statistics.d.ts +0 -7
- package/packages/jam/transition/statistics.d.ts.map +1 -1
- package/packages/jam/transition/statistics.js +2 -11
- package/packages/jam/transition/statistics.test.js +0 -40
- package/packages/workers/block-authorship/generator.test.d.ts +2 -0
- package/packages/workers/block-authorship/generator.test.d.ts.map +1 -0
- package/packages/workers/block-authorship/generator.test.js +200 -0
- package/packages/workers/block-authorship/main.d.ts.map +1 -1
- package/packages/workers/block-authorship/main.js +31 -1
- package/packages/workers/block-authorship/package.json +1 -1
- package/packages/workers/block-authorship/protocol.d.ts +50 -50
- package/packages/workers/block-authorship/ticket-generator.d.ts +21 -0
- package/packages/workers/block-authorship/ticket-generator.d.ts.map +1 -0
- package/packages/workers/block-authorship/ticket-generator.js +37 -0
- package/packages/workers/block-authorship/ticket-generator.test.d.ts +2 -0
- package/packages/workers/block-authorship/ticket-generator.test.d.ts.map +1 -0
- package/packages/workers/block-authorship/ticket-generator.test.js +100 -0
- package/packages/workers/importer/package.json +1 -1
- package/packages/workers/importer/protocol.d.ts +54 -54
- package/packages/workers/jam-network/protocol.d.ts +79 -79
- package/packages/jam/transition/accumulate/deferred-transfers.d.ts +0 -36
- package/packages/jam/transition/accumulate/deferred-transfers.d.ts.map +0 -1
- 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
|
-
}
|