@typeberry/jam 0.3.1 → 0.4.0-203a18d
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 +2 -2
- package/bootstrap-network.mjs.map +1 -1
- package/index.js +41 -37
- package/index.js.map +1 -1
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -31185,7 +31185,7 @@ function jip_chain_spec_parseBootnode(v) {
|
|
|
31185
31185
|
if (name === "" || ip === "" || port === "") {
|
|
31186
31186
|
throw new Error(`Invalid bootnode format, expected: <name>@<ip>:<port>, got: "${v}"`);
|
|
31187
31187
|
}
|
|
31188
|
-
const portNumber = Number.parseInt(port);
|
|
31188
|
+
const portNumber = Number.parseInt(port, 10);
|
|
31189
31189
|
if (!isU16(portNumber)) {
|
|
31190
31190
|
throw new Error(`Invalid port number: "${port}"`);
|
|
31191
31191
|
}
|
|
@@ -31617,7 +31617,7 @@ const DEFAULT_CONFIG = "default";
|
|
|
31617
31617
|
const NODE_DEFAULTS = {
|
|
31618
31618
|
name: isBrowser() ? "browser" : external_node_os_default().hostname(),
|
|
31619
31619
|
config: [DEFAULT_CONFIG],
|
|
31620
|
-
pvm: PvmBackend.
|
|
31620
|
+
pvm: PvmBackend.Ananas,
|
|
31621
31621
|
};
|
|
31622
31622
|
/** Chain spec chooser. */
|
|
31623
31623
|
var KnownChainSpec;
|
|
@@ -37588,11 +37588,9 @@ class JamConfig {
|
|
|
37588
37588
|
|
|
37589
37589
|
/** Helper function to create most used hashes in the block */
|
|
37590
37590
|
class hasher_TransitionHasher {
|
|
37591
|
-
context;
|
|
37592
37591
|
keccakHasher;
|
|
37593
37592
|
blake2b;
|
|
37594
|
-
constructor(
|
|
37595
|
-
this.context = context;
|
|
37593
|
+
constructor(keccakHasher, blake2b) {
|
|
37596
37594
|
this.keccakHasher = keccakHasher;
|
|
37597
37595
|
this.blake2b = blake2b;
|
|
37598
37596
|
}
|
|
@@ -45578,13 +45576,11 @@ class AccumulateDataItem {
|
|
|
45578
45576
|
* - gas cost and reports length for each service (statistics)
|
|
45579
45577
|
*/
|
|
45580
45578
|
class AccumulateData {
|
|
45581
|
-
autoAccumulateServicesByServiceId;
|
|
45582
45579
|
reportsDataByServiceId;
|
|
45583
45580
|
transfersByServiceId;
|
|
45584
45581
|
serviceIds;
|
|
45585
45582
|
gasLimitByServiceId;
|
|
45586
45583
|
constructor(reports, transfers, autoAccumulateServicesByServiceId) {
|
|
45587
|
-
this.autoAccumulateServicesByServiceId = autoAccumulateServicesByServiceId;
|
|
45588
45584
|
const serviceIdsFromAutoAccumulate = new Set(autoAccumulateServicesByServiceId.keys());
|
|
45589
45585
|
const { reportsDataByServiceId, serviceIds: serviceIdsFromReports, gasLimitByServiceId: reportsGasLimitByServiceId, } = this.transformReports(reports);
|
|
45590
45586
|
this.reportsDataByServiceId = reportsDataByServiceId;
|
|
@@ -45904,12 +45900,12 @@ function createMergeContext(chainSpec, state, inputState, results) {
|
|
|
45904
45900
|
}
|
|
45905
45901
|
function updatePrivilegedService(currentServiceId, serviceIdUpdatedByManager, selfUpdatedServiceId) {
|
|
45906
45902
|
if (currentServiceId === serviceIdUpdatedByManager) {
|
|
45907
|
-
return
|
|
45903
|
+
return selfUpdatedServiceId;
|
|
45908
45904
|
}
|
|
45909
|
-
return
|
|
45905
|
+
return serviceIdUpdatedByManager;
|
|
45910
45906
|
}
|
|
45911
45907
|
function mergePrivilegedServices(mergeContext, [serviceId, { stateUpdate }]) {
|
|
45912
|
-
const { outputState, currentPrivilegedServices, chainSpec } = mergeContext;
|
|
45908
|
+
const { outputState, currentPrivilegedServices, chainSpec, privilegedServicesUpdatedByManager } = mergeContext;
|
|
45913
45909
|
const currentManager = currentPrivilegedServices.manager;
|
|
45914
45910
|
const currentRegistrar = currentPrivilegedServices.registrar;
|
|
45915
45911
|
const currentDelegator = currentPrivilegedServices.delegator;
|
|
@@ -45927,28 +45923,35 @@ function mergePrivilegedServices(mergeContext, [serviceId, { stateUpdate }]) {
|
|
|
45927
45923
|
});
|
|
45928
45924
|
}
|
|
45929
45925
|
if (serviceId === currentRegistrar) {
|
|
45930
|
-
const newRegistrar = updatePrivilegedService(currentPrivilegedServices.registrar,
|
|
45926
|
+
const newRegistrar = updatePrivilegedService(currentPrivilegedServices.registrar, privilegedServicesUpdatedByManager.registrar, privilegedServices.registrar);
|
|
45931
45927
|
outputState.privilegedServices = PrivilegedServices.create({
|
|
45932
45928
|
...outputState.privilegedServices,
|
|
45933
45929
|
registrar: newRegistrar,
|
|
45934
45930
|
});
|
|
45935
45931
|
}
|
|
45936
45932
|
if (serviceId === currentDelegator) {
|
|
45937
|
-
const newDelegator = updatePrivilegedService(currentPrivilegedServices.delegator,
|
|
45933
|
+
const newDelegator = updatePrivilegedService(currentPrivilegedServices.delegator, privilegedServicesUpdatedByManager.delegator, privilegedServices.delegator);
|
|
45938
45934
|
outputState.privilegedServices = PrivilegedServices.create({
|
|
45939
45935
|
...outputState.privilegedServices,
|
|
45940
45936
|
delegator: newDelegator,
|
|
45941
45937
|
});
|
|
45942
45938
|
}
|
|
45943
|
-
|
|
45944
|
-
const newAssigners = currentAssigners.map((currentAssigner, coreIndex) =>
|
|
45945
|
-
|
|
45946
|
-
|
|
45947
|
-
|
|
45948
|
-
|
|
45949
|
-
|
|
45950
|
-
|
|
45939
|
+
let shouldUpdateAssigners = false;
|
|
45940
|
+
const newAssigners = currentAssigners.map((currentAssigner, coreIndex) => {
|
|
45941
|
+
if (serviceId === currentAssigner) {
|
|
45942
|
+
const newAssigner = updatePrivilegedService(currentPrivilegedServices.assigners[coreIndex], privilegedServicesUpdatedByManager.assigners[coreIndex], privilegedServices.assigners[coreIndex]);
|
|
45943
|
+
shouldUpdateAssigners = shouldUpdateAssigners || newAssigner !== currentAssigner;
|
|
45944
|
+
return newAssigner;
|
|
45945
|
+
}
|
|
45946
|
+
return currentAssigner;
|
|
45951
45947
|
});
|
|
45948
|
+
if (shouldUpdateAssigners) {
|
|
45949
|
+
const newAssignersPerCore = tryAsPerCore(newAssigners, chainSpec);
|
|
45950
|
+
outputState.privilegedServices = PrivilegedServices.create({
|
|
45951
|
+
...outputState.privilegedServices,
|
|
45952
|
+
assigners: newAssignersPerCore,
|
|
45953
|
+
});
|
|
45954
|
+
}
|
|
45952
45955
|
}
|
|
45953
45956
|
}
|
|
45954
45957
|
function mergeValidatorsData(mergeContext, [serviceId, { stateUpdate }]) {
|
|
@@ -47730,19 +47733,19 @@ class Accumulate {
|
|
|
47730
47733
|
for (let serviceIndex = 0; serviceIndex < serviceIdsLength; serviceIndex += 1) {
|
|
47731
47734
|
const serviceId = serviceIds[serviceIndex];
|
|
47732
47735
|
const checkpoint = AccumulationStateUpdate.copyFrom(inputStateUpdate);
|
|
47733
|
-
const promise = this.accumulateSingleService(serviceId, accumulateData.getTransfers(serviceId), accumulateData.getOperands(serviceId), accumulateData.getGasLimit(serviceId), slot, entropy, AccumulationStateUpdate.copyFrom(inputStateUpdate)).then(({ consumedGas, stateUpdate }) =>
|
|
47734
|
-
|
|
47735
|
-
|
|
47736
|
-
|
|
47736
|
+
const promise = this.accumulateSingleService(serviceId, accumulateData.getTransfers(serviceId), accumulateData.getOperands(serviceId), accumulateData.getGasLimit(serviceId), slot, entropy, AccumulationStateUpdate.copyFrom(inputStateUpdate)).then(({ consumedGas, stateUpdate }) => {
|
|
47737
|
+
const resultEntry = [
|
|
47738
|
+
serviceId,
|
|
47739
|
+
{
|
|
47740
|
+
consumedGas,
|
|
47741
|
+
stateUpdate: stateUpdate === null ? checkpoint : stateUpdate,
|
|
47742
|
+
},
|
|
47743
|
+
];
|
|
47744
|
+
return resultEntry;
|
|
47745
|
+
});
|
|
47737
47746
|
resultPromises[serviceIndex] = promise;
|
|
47738
47747
|
}
|
|
47739
|
-
return Promise.all(resultPromises).then((results) =>
|
|
47740
|
-
const map = new Map();
|
|
47741
|
-
for (let serviceIndex = 0; serviceIndex < serviceIdsLength; serviceIndex += 1) {
|
|
47742
|
-
map.set(serviceIds[serviceIndex], results[serviceIndex]);
|
|
47743
|
-
}
|
|
47744
|
-
return map;
|
|
47745
|
-
});
|
|
47748
|
+
return Promise.all(resultPromises).then((results) => new Map(results));
|
|
47746
47749
|
}
|
|
47747
47750
|
/**
|
|
47748
47751
|
* A method that updates `recentlyAccumulated`, `accumulationQueue` and `timeslot` in state
|
|
@@ -47831,9 +47834,10 @@ class Accumulate {
|
|
|
47831
47834
|
const _gasCost = gasCost;
|
|
47832
47835
|
assertEmpty(rest);
|
|
47833
47836
|
const accumulated = accumulatableReports.subview(0, accumulatedReports);
|
|
47834
|
-
const { yieldedRoot, services, transfers
|
|
47837
|
+
const { yieldedRoot, services, transfers, validatorsData, privilegedServices, authorizationQueues, ...stateUpdateRest } = state;
|
|
47835
47838
|
assertEmpty(stateUpdateRest);
|
|
47836
|
-
// yielded root
|
|
47839
|
+
// transfers and yielded root are retrieved after each pvm invocation so we can ignore it here
|
|
47840
|
+
const _transfers = transfers;
|
|
47837
47841
|
const _yieldedRoot = yieldedRoot;
|
|
47838
47842
|
if (this.hasDuplicatedServiceIdCreated(services.created)) {
|
|
47839
47843
|
accumulate_logger.trace `Duplicated Service creation detected. Block is invalid.`;
|
|
@@ -49764,7 +49768,7 @@ async function createImporter(config) {
|
|
|
49764
49768
|
const interpreter = config.workerParams.pvm;
|
|
49765
49769
|
const blocks = db.getBlocksDb();
|
|
49766
49770
|
const states = db.getStatesDb();
|
|
49767
|
-
const hasher = new hasher_TransitionHasher(
|
|
49771
|
+
const hasher = new hasher_TransitionHasher(await keccakHasher, await blake2b);
|
|
49768
49772
|
const importer = new Importer(chainSpec, interpreter, hasher, main_logger, blocks, states);
|
|
49769
49773
|
return {
|
|
49770
49774
|
importer,
|
|
@@ -52421,7 +52425,7 @@ function initializeExtensions(api) {
|
|
|
52421
52425
|
}
|
|
52422
52426
|
|
|
52423
52427
|
;// CONCATENATED MODULE: ./packages/jam/node/package.json
|
|
52424
|
-
const package_namespaceObject = {"rE":"0.
|
|
52428
|
+
const package_namespaceObject = {"rE":"0.4.0"};
|
|
52425
52429
|
;// CONCATENATED MODULE: ./packages/workers/block-generator/generator.ts
|
|
52426
52430
|
|
|
52427
52431
|
|
|
@@ -52488,7 +52492,7 @@ class generator_Generator {
|
|
|
52488
52492
|
// select validator for block
|
|
52489
52493
|
const validatorId = tryAsValidatorIndex(newTimeSlot % 6);
|
|
52490
52494
|
// retriev data from previous block
|
|
52491
|
-
const hasher = new TransitionHasher(this.
|
|
52495
|
+
const hasher = new TransitionHasher(this.keccakHasher, this.blake2b);
|
|
52492
52496
|
const parentHeaderHash = this.lastHeaderHash;
|
|
52493
52497
|
const stateRoot = this.states.getStateRoot(this.lastState);
|
|
52494
52498
|
// create extrinsic
|
|
@@ -53055,7 +53059,7 @@ function readJsonBlock(file, chainSpec) {
|
|
|
53055
53059
|
var minimist = __nccwpck_require__(8595);
|
|
53056
53060
|
var minimist_default = /*#__PURE__*/__nccwpck_require__.n(minimist);
|
|
53057
53061
|
;// CONCATENATED MODULE: ./bin/jam/package.json
|
|
53058
|
-
const jam_package_namespaceObject = {"rE":"0.
|
|
53062
|
+
const jam_package_namespaceObject = {"rE":"0.4.0"};
|
|
53059
53063
|
;// CONCATENATED MODULE: ./bin/jam/args.ts
|
|
53060
53064
|
|
|
53061
53065
|
|