@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.
- package/package.json +1 -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/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/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-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.map +1 -1
- package/packages/jam/transition/accumulate/accumulate.js +11 -20
- 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/package.json +1 -1
- package/packages/workers/block-authorship/protocol.d.ts +50 -50
- 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
|
-
}
|