@typeberry/jam 0.4.0-5a35a0a → 0.4.0-d185014
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/bootstrap-generator.mjs +2 -4
- package/bootstrap-generator.mjs.map +1 -1
- package/bootstrap-importer.mjs +36 -32
- package/bootstrap-importer.mjs.map +1 -1
- package/bootstrap-network.mjs +1 -1
- package/bootstrap-network.mjs.map +1 -1
- package/index.js +38 -34
- package/index.js.map +1 -1
- package/package.json +1 -1
package/bootstrap-importer.mjs
CHANGED
|
@@ -7100,11 +7100,9 @@ function sequenceViewFixLen(type, { fixedLength }) {
|
|
|
7100
7100
|
|
|
7101
7101
|
/** Helper function to create most used hashes in the block */
|
|
7102
7102
|
class TransitionHasher {
|
|
7103
|
-
context;
|
|
7104
7103
|
keccakHasher;
|
|
7105
7104
|
blake2b;
|
|
7106
|
-
constructor(
|
|
7107
|
-
this.context = context;
|
|
7105
|
+
constructor(keccakHasher, blake2b) {
|
|
7108
7106
|
this.keccakHasher = keccakHasher;
|
|
7109
7107
|
this.blake2b = blake2b;
|
|
7110
7108
|
}
|
|
@@ -20816,13 +20814,11 @@ class AccumulateDataItem {
|
|
|
20816
20814
|
* - gas cost and reports length for each service (statistics)
|
|
20817
20815
|
*/
|
|
20818
20816
|
class AccumulateData {
|
|
20819
|
-
autoAccumulateServicesByServiceId;
|
|
20820
20817
|
reportsDataByServiceId;
|
|
20821
20818
|
transfersByServiceId;
|
|
20822
20819
|
serviceIds;
|
|
20823
20820
|
gasLimitByServiceId;
|
|
20824
20821
|
constructor(reports, transfers, autoAccumulateServicesByServiceId) {
|
|
20825
|
-
this.autoAccumulateServicesByServiceId = autoAccumulateServicesByServiceId;
|
|
20826
20822
|
const serviceIdsFromAutoAccumulate = new Set(autoAccumulateServicesByServiceId.keys());
|
|
20827
20823
|
const { reportsDataByServiceId, serviceIds: serviceIdsFromReports, gasLimitByServiceId: reportsGasLimitByServiceId, } = this.transformReports(reports);
|
|
20828
20824
|
this.reportsDataByServiceId = reportsDataByServiceId;
|
|
@@ -21142,12 +21138,12 @@ function createMergeContext(chainSpec, state, inputState, results) {
|
|
|
21142
21138
|
}
|
|
21143
21139
|
function updatePrivilegedService(currentServiceId, serviceIdUpdatedByManager, selfUpdatedServiceId) {
|
|
21144
21140
|
if (currentServiceId === serviceIdUpdatedByManager) {
|
|
21145
|
-
return
|
|
21141
|
+
return selfUpdatedServiceId;
|
|
21146
21142
|
}
|
|
21147
|
-
return
|
|
21143
|
+
return serviceIdUpdatedByManager;
|
|
21148
21144
|
}
|
|
21149
21145
|
function mergePrivilegedServices(mergeContext, [serviceId, { stateUpdate }]) {
|
|
21150
|
-
const { outputState, currentPrivilegedServices, chainSpec } = mergeContext;
|
|
21146
|
+
const { outputState, currentPrivilegedServices, chainSpec, privilegedServicesUpdatedByManager } = mergeContext;
|
|
21151
21147
|
const currentManager = currentPrivilegedServices.manager;
|
|
21152
21148
|
const currentRegistrar = currentPrivilegedServices.registrar;
|
|
21153
21149
|
const currentDelegator = currentPrivilegedServices.delegator;
|
|
@@ -21165,28 +21161,35 @@ function mergePrivilegedServices(mergeContext, [serviceId, { stateUpdate }]) {
|
|
|
21165
21161
|
});
|
|
21166
21162
|
}
|
|
21167
21163
|
if (serviceId === currentRegistrar) {
|
|
21168
|
-
const newRegistrar = updatePrivilegedService(currentPrivilegedServices.registrar,
|
|
21164
|
+
const newRegistrar = updatePrivilegedService(currentPrivilegedServices.registrar, privilegedServicesUpdatedByManager.registrar, privilegedServices.registrar);
|
|
21169
21165
|
outputState.privilegedServices = PrivilegedServices.create({
|
|
21170
21166
|
...outputState.privilegedServices,
|
|
21171
21167
|
registrar: newRegistrar,
|
|
21172
21168
|
});
|
|
21173
21169
|
}
|
|
21174
21170
|
if (serviceId === currentDelegator) {
|
|
21175
|
-
const newDelegator = updatePrivilegedService(currentPrivilegedServices.delegator,
|
|
21171
|
+
const newDelegator = updatePrivilegedService(currentPrivilegedServices.delegator, privilegedServicesUpdatedByManager.delegator, privilegedServices.delegator);
|
|
21176
21172
|
outputState.privilegedServices = PrivilegedServices.create({
|
|
21177
21173
|
...outputState.privilegedServices,
|
|
21178
21174
|
delegator: newDelegator,
|
|
21179
21175
|
});
|
|
21180
21176
|
}
|
|
21181
|
-
|
|
21182
|
-
const newAssigners = currentAssigners.map((currentAssigner, coreIndex) =>
|
|
21183
|
-
|
|
21184
|
-
|
|
21185
|
-
|
|
21186
|
-
|
|
21187
|
-
|
|
21188
|
-
|
|
21177
|
+
let shouldUpdateAssigners = false;
|
|
21178
|
+
const newAssigners = currentAssigners.map((currentAssigner, coreIndex) => {
|
|
21179
|
+
if (serviceId === currentAssigner) {
|
|
21180
|
+
const newAssigner = updatePrivilegedService(currentPrivilegedServices.assigners[coreIndex], privilegedServicesUpdatedByManager.assigners[coreIndex], privilegedServices.assigners[coreIndex]);
|
|
21181
|
+
shouldUpdateAssigners = shouldUpdateAssigners || newAssigner !== currentAssigner;
|
|
21182
|
+
return newAssigner;
|
|
21183
|
+
}
|
|
21184
|
+
return currentAssigner;
|
|
21189
21185
|
});
|
|
21186
|
+
if (shouldUpdateAssigners) {
|
|
21187
|
+
const newAssignersPerCore = tryAsPerCore(newAssigners, chainSpec);
|
|
21188
|
+
outputState.privilegedServices = PrivilegedServices.create({
|
|
21189
|
+
...outputState.privilegedServices,
|
|
21190
|
+
assigners: newAssignersPerCore,
|
|
21191
|
+
});
|
|
21192
|
+
}
|
|
21190
21193
|
}
|
|
21191
21194
|
}
|
|
21192
21195
|
function mergeValidatorsData(mergeContext, [serviceId, { stateUpdate }]) {
|
|
@@ -22968,19 +22971,19 @@ class Accumulate {
|
|
|
22968
22971
|
for (let serviceIndex = 0; serviceIndex < serviceIdsLength; serviceIndex += 1) {
|
|
22969
22972
|
const serviceId = serviceIds[serviceIndex];
|
|
22970
22973
|
const checkpoint = AccumulationStateUpdate.copyFrom(inputStateUpdate);
|
|
22971
|
-
const promise = this.accumulateSingleService(serviceId, accumulateData.getTransfers(serviceId), accumulateData.getOperands(serviceId), accumulateData.getGasLimit(serviceId), slot, entropy, AccumulationStateUpdate.copyFrom(inputStateUpdate)).then(({ consumedGas, stateUpdate }) =>
|
|
22972
|
-
|
|
22973
|
-
|
|
22974
|
-
|
|
22974
|
+
const promise = this.accumulateSingleService(serviceId, accumulateData.getTransfers(serviceId), accumulateData.getOperands(serviceId), accumulateData.getGasLimit(serviceId), slot, entropy, AccumulationStateUpdate.copyFrom(inputStateUpdate)).then(({ consumedGas, stateUpdate }) => {
|
|
22975
|
+
const resultEntry = [
|
|
22976
|
+
serviceId,
|
|
22977
|
+
{
|
|
22978
|
+
consumedGas,
|
|
22979
|
+
stateUpdate: stateUpdate === null ? checkpoint : stateUpdate,
|
|
22980
|
+
},
|
|
22981
|
+
];
|
|
22982
|
+
return resultEntry;
|
|
22983
|
+
});
|
|
22975
22984
|
resultPromises[serviceIndex] = promise;
|
|
22976
22985
|
}
|
|
22977
|
-
return Promise.all(resultPromises).then((results) =>
|
|
22978
|
-
const map = new Map();
|
|
22979
|
-
for (let serviceIndex = 0; serviceIndex < serviceIdsLength; serviceIndex += 1) {
|
|
22980
|
-
map.set(serviceIds[serviceIndex], results[serviceIndex]);
|
|
22981
|
-
}
|
|
22982
|
-
return map;
|
|
22983
|
-
});
|
|
22986
|
+
return Promise.all(resultPromises).then((results) => new Map(results));
|
|
22984
22987
|
}
|
|
22985
22988
|
/**
|
|
22986
22989
|
* A method that updates `recentlyAccumulated`, `accumulationQueue` and `timeslot` in state
|
|
@@ -23069,9 +23072,10 @@ class Accumulate {
|
|
|
23069
23072
|
const _gasCost = gasCost;
|
|
23070
23073
|
assertEmpty(rest);
|
|
23071
23074
|
const accumulated = accumulatableReports.subview(0, accumulatedReports);
|
|
23072
|
-
const { yieldedRoot, services, transfers
|
|
23075
|
+
const { yieldedRoot, services, transfers, validatorsData, privilegedServices, authorizationQueues, ...stateUpdateRest } = state;
|
|
23073
23076
|
assertEmpty(stateUpdateRest);
|
|
23074
|
-
// yielded root
|
|
23077
|
+
// transfers and yielded root are retrieved after each pvm invocation so we can ignore it here
|
|
23078
|
+
const _transfers = transfers;
|
|
23075
23079
|
const _yieldedRoot = yieldedRoot;
|
|
23076
23080
|
if (this.hasDuplicatedServiceIdCreated(services.created)) {
|
|
23077
23081
|
accumulate_logger.trace `Duplicated Service creation detected. Block is invalid.`;
|
|
@@ -25002,7 +25006,7 @@ async function createImporter(config) {
|
|
|
25002
25006
|
const interpreter = config.workerParams.pvm;
|
|
25003
25007
|
const blocks = db.getBlocksDb();
|
|
25004
25008
|
const states = db.getStatesDb();
|
|
25005
|
-
const hasher = new TransitionHasher(
|
|
25009
|
+
const hasher = new TransitionHasher(await keccakHasher, await blake2b);
|
|
25006
25010
|
const importer = new Importer(chainSpec, interpreter, hasher, main_logger, blocks, states);
|
|
25007
25011
|
return {
|
|
25008
25012
|
importer,
|