@xyo-network/xl1-cli 1.19.3 → 1.19.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/dist/cli-min.mjs +523 -250
- package/package.json +4 -4
package/dist/cli-min.mjs
CHANGED
|
@@ -85431,14 +85431,16 @@ var SingleTimeConfigZod = union$1([
|
|
|
85431
85431
|
object$4({ months: timeUnitSchema }),
|
|
85432
85432
|
object$4({ years: timeUnitSchema })
|
|
85433
85433
|
]).describe("Time configuration with exactly one time unit");
|
|
85434
|
-
tuple([
|
|
85434
|
+
var HydratedBlockZod = tuple([
|
|
85435
85435
|
BlockBoundWitnessZod,
|
|
85436
85436
|
array$1(PayloadZodLoose)
|
|
85437
85437
|
]);
|
|
85438
|
-
|
|
85438
|
+
var isHydratedBlock = zodIsFactory(HydratedBlockZod);
|
|
85439
|
+
var HydratedBlockWithHashMetaZod = tuple([
|
|
85439
85440
|
WithHashMetaZod(BlockBoundWitnessZod),
|
|
85440
85441
|
array$1(WithHashMetaZod(PayloadZodLoose))
|
|
85441
85442
|
]);
|
|
85443
|
+
var isHydratedBlockWithHashMeta = zodIsFactory(HydratedBlockWithHashMetaZod);
|
|
85442
85444
|
tuple([
|
|
85443
85445
|
WithStorageMetaZod(BlockBoundWitnessZod),
|
|
85444
85446
|
array$1(WithStorageMetaZod(PayloadZodLoose))
|
|
@@ -86236,14 +86238,10 @@ var ProviderFactory = class _ProviderFactory {
|
|
|
86236
86238
|
static withParams(creatableProvider2, dependencies, params, labels = {}) {
|
|
86237
86239
|
return new _ProviderFactory(creatableProvider2, dependencies, params, labels);
|
|
86238
86240
|
}
|
|
86239
|
-
/** @deprecated use getInstance instead */
|
|
86240
|
-
async create(params, start = true) {
|
|
86241
|
-
return await this.getInstance(params, start);
|
|
86242
|
-
}
|
|
86243
86241
|
factory(dependencies, params, labels = {}) {
|
|
86244
86242
|
return new _ProviderFactory(this.creatableProvider, dependencies, params, labels);
|
|
86245
86243
|
}
|
|
86246
|
-
async getInstance(params, start = true) {
|
|
86244
|
+
async getInstance(params, { start = true }) {
|
|
86247
86245
|
let scopeObject = {};
|
|
86248
86246
|
switch (this.scope) {
|
|
86249
86247
|
case "global": {
|
|
@@ -86289,9 +86287,9 @@ var ProviderFactory = class _ProviderFactory {
|
|
|
86289
86287
|
}
|
|
86290
86288
|
return result;
|
|
86291
86289
|
}
|
|
86292
|
-
async tryGetInstance(params,
|
|
86290
|
+
async tryGetInstance(params, options) {
|
|
86293
86291
|
try {
|
|
86294
|
-
return await this.getInstance(params,
|
|
86292
|
+
return await this.getInstance(params, options);
|
|
86295
86293
|
} catch {
|
|
86296
86294
|
return;
|
|
86297
86295
|
}
|
|
@@ -86342,7 +86340,10 @@ var AbstractCreatableProvider = class extends AbstractCreatable {
|
|
|
86342
86340
|
}
|
|
86343
86341
|
}
|
|
86344
86342
|
async locateAndCreate(moniker) {
|
|
86345
|
-
return await this.locator
|
|
86343
|
+
return await this.locator.getInstance(moniker);
|
|
86344
|
+
}
|
|
86345
|
+
async tryLocateAndCreate(moniker) {
|
|
86346
|
+
return await this.locator.tryGetInstance(moniker);
|
|
86346
86347
|
}
|
|
86347
86348
|
};
|
|
86348
86349
|
|
|
@@ -86354,8 +86355,6 @@ function creatableProvider() {
|
|
|
86354
86355
|
var buildProviderFactory = (provider, labels) => {
|
|
86355
86356
|
const factory = {
|
|
86356
86357
|
monikers: provider.monikers,
|
|
86357
|
-
// Copy static methods
|
|
86358
|
-
create: provider.create.bind(provider),
|
|
86359
86358
|
// Merge module & supplied labels
|
|
86360
86359
|
labels: { ...provider.labels, ...labels },
|
|
86361
86360
|
creatableProvider: provider.creatableProvider,
|
|
@@ -86426,14 +86425,10 @@ var ProviderFactoryLocator = class _ProviderFactoryLocator {
|
|
|
86426
86425
|
static standard(context) {
|
|
86427
86426
|
return new _ProviderFactoryLocator(context, {});
|
|
86428
86427
|
}
|
|
86429
|
-
/** @deprecated use getInstance instead */
|
|
86430
|
-
async create(moniker, params, labels) {
|
|
86431
|
-
return await this.getInstance(moniker, params, labels);
|
|
86432
|
-
}
|
|
86433
86428
|
freeze() {
|
|
86434
86429
|
this._frozen = true;
|
|
86435
86430
|
}
|
|
86436
|
-
async getInstance(moniker, params, labels) {
|
|
86431
|
+
async getInstance(moniker, params, { start = true, labels } = {}) {
|
|
86437
86432
|
const resolvedParams = {
|
|
86438
86433
|
...params,
|
|
86439
86434
|
context: {
|
|
@@ -86442,7 +86437,7 @@ var ProviderFactoryLocator = class _ProviderFactoryLocator {
|
|
|
86442
86437
|
}
|
|
86443
86438
|
};
|
|
86444
86439
|
const factory = this.locate(moniker, labels);
|
|
86445
|
-
const result = await factory.getInstance(resolvedParams);
|
|
86440
|
+
const result = await factory.getInstance(resolvedParams, { start });
|
|
86446
86441
|
return result;
|
|
86447
86442
|
}
|
|
86448
86443
|
/**
|
|
@@ -86488,9 +86483,9 @@ var ProviderFactoryLocator = class _ProviderFactoryLocator {
|
|
|
86488
86483
|
}
|
|
86489
86484
|
return this;
|
|
86490
86485
|
}
|
|
86491
|
-
async tryGetInstance(moniker, params,
|
|
86486
|
+
async tryGetInstance(moniker, params, options) {
|
|
86492
86487
|
try {
|
|
86493
|
-
return await this.getInstance(moniker, params,
|
|
86488
|
+
return await this.getInstance(moniker, params, options);
|
|
86494
86489
|
} catch {
|
|
86495
86490
|
return;
|
|
86496
86491
|
}
|
|
@@ -88624,11 +88619,13 @@ var SimpleBlockValidationViewer = class extends AbstractCreatableProvider {
|
|
|
88624
88619
|
this._chainContractViewer = await this.locator.getInstance(ChainContractViewerMoniker);
|
|
88625
88620
|
}
|
|
88626
88621
|
async qualifiedValidateBlock(block, config) {
|
|
88627
|
-
|
|
88622
|
+
const result = await this.qualifiedValidateBlocks([block], config);
|
|
88623
|
+
return [result[0][0], result[1]];
|
|
88628
88624
|
}
|
|
88629
88625
|
async qualifiedValidateBlocks(blocks, config) {
|
|
88630
88626
|
const { value, state } = config ?? {
|
|
88631
88627
|
state: true};
|
|
88628
|
+
const blocksWithMeta = await Promise.all(blocks.map((b) => Promise.all([PayloadBuilder.addHashMeta(b[0]), PayloadBuilder.addHashMeta(b[1])])));
|
|
88632
88629
|
const head = isChainQualifiedHeadConfig(config) ? assertEx(
|
|
88633
88630
|
(await this.blockViewer.blockByHash(config.head))?.[0],
|
|
88634
88631
|
() => `Specified a head that is not in the chain [${config.head}]`
|
|
@@ -88637,25 +88634,44 @@ var SimpleBlockValidationViewer = class extends AbstractCreatableProvider {
|
|
|
88637
88634
|
const validateProtocol = value ? this.doValidateProtocol.bind(this) : void 0;
|
|
88638
88635
|
const validateState = state ? this.doValidateState.bind(this) : void 0;
|
|
88639
88636
|
const chainIdAtBlockNumber = (blockNumber) => this.chainContractViewer.chainIdAtBlockNumber(blockNumber);
|
|
88640
|
-
|
|
88641
|
-
|
|
88642
|
-
|
|
88643
|
-
|
|
88637
|
+
const qualification = { head: headBlock._hash, range: asXL1BlockRange([0, headBlock.block], true) };
|
|
88638
|
+
const [protocolResults, stateResults] = await Promise.all([
|
|
88639
|
+
validateProtocol?.(blocksWithMeta, chainIdAtBlockNumber),
|
|
88640
|
+
validateState?.(blocksWithMeta, chainIdAtBlockNumber)
|
|
88641
|
+
]);
|
|
88642
|
+
const blockResults = blocksWithMeta.map((r, i) => {
|
|
88643
|
+
const errors = [];
|
|
88644
|
+
if (protocolResults && !isHydratedBlock(protocolResults[i])) {
|
|
88645
|
+
errors.push(...protocolResults[i]);
|
|
88646
|
+
}
|
|
88647
|
+
if (stateResults && !isHydratedBlock(stateResults[i])) {
|
|
88648
|
+
errors.push(...stateResults[i]);
|
|
88649
|
+
}
|
|
88650
|
+
return errors.length === 0 ? r : errors;
|
|
88651
|
+
});
|
|
88652
|
+
return [blockResults, qualification];
|
|
88653
|
+
}
|
|
88654
|
+
qualifiedValidateUncle(_blocks, _config) {
|
|
88655
|
+
throw new Error("Method not implemented.");
|
|
88644
88656
|
}
|
|
88645
88657
|
async validateBlock(block, config) {
|
|
88646
|
-
return await this.validateBlocks([block], config);
|
|
88658
|
+
return (await this.validateBlocks([block], config))[0];
|
|
88647
88659
|
}
|
|
88648
88660
|
async validateBlocks(blocks, config) {
|
|
88649
88661
|
return (await this.qualifiedValidateBlocks(blocks, config))[0];
|
|
88650
88662
|
}
|
|
88663
|
+
async validateUncle(blocks, config) {
|
|
88664
|
+
return (await this.qualifiedValidateUncle(blocks, config))[0];
|
|
88665
|
+
}
|
|
88651
88666
|
async doValidateProtocol(blocks, chainIdAtBlockNumber) {
|
|
88652
|
-
return
|
|
88653
|
-
|
|
88667
|
+
return await Promise.all(blocks.map(async (block) => {
|
|
88668
|
+
const errors = await this.params.protocol(
|
|
88654
88669
|
this.context,
|
|
88655
88670
|
block,
|
|
88656
88671
|
chainIdAtBlockNumber
|
|
88657
88672
|
);
|
|
88658
|
-
|
|
88673
|
+
return errors.length === 0 ? block : errors;
|
|
88674
|
+
}));
|
|
88659
88675
|
}
|
|
88660
88676
|
async doValidateState(blocks, chainIdAtBlockNumber) {
|
|
88661
88677
|
const windowedUncleChain = await this.updateWindowedChainCache();
|
|
@@ -88665,14 +88681,15 @@ var SimpleBlockValidationViewer = class extends AbstractCreatableProvider {
|
|
|
88665
88681
|
this.logger?.warn(JSON.stringify(windowedUncleChain, null, 2));
|
|
88666
88682
|
throw new Error(`No uncles or greater than one uncle found in block validation, which is not supported [${uncles.length}, ${blocks.length}]`);
|
|
88667
88683
|
}
|
|
88668
|
-
return
|
|
88669
|
-
|
|
88684
|
+
return await Promise.all(uncles[0].map(async (block) => {
|
|
88685
|
+
const errors = await this.params.state(
|
|
88670
88686
|
this.context,
|
|
88671
88687
|
block,
|
|
88672
88688
|
chainIdAtBlockNumber,
|
|
88673
88689
|
{ accountBalance: this._accountBalanceViewer }
|
|
88674
88690
|
);
|
|
88675
|
-
|
|
88691
|
+
return errors.length === 0 ? block : errors;
|
|
88692
|
+
}));
|
|
88676
88693
|
}
|
|
88677
88694
|
async updateWindowedChainCache() {
|
|
88678
88695
|
this._uncleWindowedChainCache = await getWindowedChain(this.context, this.blockViewer, this.maxUncleWindowSize, this._uncleWindowedChainCache ?? []);
|
|
@@ -89104,6 +89121,18 @@ var SimpleXyoGatewayRunner = class _SimpleXyoGatewayRunner extends AbstractCreat
|
|
|
89104
89121
|
};
|
|
89105
89122
|
var SimpleMempoolRunner = class extends AbstractCreatableProvider {
|
|
89106
89123
|
moniker = SimpleMempoolRunner.defaultMoniker;
|
|
89124
|
+
_blockValidationViewer;
|
|
89125
|
+
_chainContractViewer;
|
|
89126
|
+
_finalizationViewer;
|
|
89127
|
+
get blockValidationViewer() {
|
|
89128
|
+
return this._blockValidationViewer;
|
|
89129
|
+
}
|
|
89130
|
+
get chainContractViewer() {
|
|
89131
|
+
return this._chainContractViewer;
|
|
89132
|
+
}
|
|
89133
|
+
get finalizationViewer() {
|
|
89134
|
+
return this._finalizationViewer;
|
|
89135
|
+
}
|
|
89107
89136
|
get pendingBlocksArchivist() {
|
|
89108
89137
|
return this.params.pendingBlocksArchivist;
|
|
89109
89138
|
}
|
|
@@ -89117,6 +89146,72 @@ var SimpleMempoolRunner = class extends AbstractCreatableProvider {
|
|
|
89117
89146
|
pendingTransactionsArchivist: assertEx(params?.pendingTransactionsArchivist, () => "pendingTransactionsArchivist is required")
|
|
89118
89147
|
};
|
|
89119
89148
|
}
|
|
89149
|
+
async createHandler() {
|
|
89150
|
+
await super.createHandler();
|
|
89151
|
+
this._blockValidationViewer = await this.locator.getInstance(BlockValidationViewerMoniker);
|
|
89152
|
+
this._chainContractViewer = await this.locator.getInstance(ChainContractViewerMoniker);
|
|
89153
|
+
this._finalizationViewer = await this.locator.getInstance(FinalizationViewerMoniker);
|
|
89154
|
+
}
|
|
89155
|
+
async prunePendingBlocks({
|
|
89156
|
+
batchSize = 10,
|
|
89157
|
+
maxPrune = 1e3,
|
|
89158
|
+
maxCheck = 1e3
|
|
89159
|
+
} = {}) {
|
|
89160
|
+
let total = 0;
|
|
89161
|
+
let pruned = 0;
|
|
89162
|
+
let cursor;
|
|
89163
|
+
let batch = await this.pendingBlocksArchivist.next({
|
|
89164
|
+
limit: batchSize,
|
|
89165
|
+
cursor,
|
|
89166
|
+
order: "desc"
|
|
89167
|
+
});
|
|
89168
|
+
this.logger?.info(`Starting prunePendingBlocks with batchSize=${batchSize}, maxPrune=${maxPrune}, maxCheck=${maxCheck}`);
|
|
89169
|
+
while (batch.length > 0 && pruned < maxPrune && total < maxCheck) {
|
|
89170
|
+
const blocksAndBundles = await this.simpleValidationCheck(batch);
|
|
89171
|
+
const blocks = blocksAndBundles.map(([b]) => b);
|
|
89172
|
+
const bundles = blocksAndBundles.map(([_, p]) => p);
|
|
89173
|
+
let valid = blocks.map((b) => !!b);
|
|
89174
|
+
let remainingBlockMap = [];
|
|
89175
|
+
let remainingBlocks = blocks.map((b, i) => {
|
|
89176
|
+
if (b) {
|
|
89177
|
+
remainingBlockMap.push(i);
|
|
89178
|
+
return b;
|
|
89179
|
+
}
|
|
89180
|
+
}).filter(exists$2);
|
|
89181
|
+
assertEx(
|
|
89182
|
+
remainingBlockMap.length === remainingBlocks.length,
|
|
89183
|
+
() => `remainingBlockMap length should match remainingBlocks length [${remainingBlockMap.length}/${remainingBlocks.length}]`
|
|
89184
|
+
);
|
|
89185
|
+
const validationResults = remainingBlocks.map((b) => b);
|
|
89186
|
+
for (const [i, r] of validationResults.entries()) {
|
|
89187
|
+
const validated = isHydratedBlockWithHashMeta(r);
|
|
89188
|
+
if (!validated) {
|
|
89189
|
+
this.logger?.info(`Pruning block ${bundles[remainingBlockMap[i]]._hash} during block validation`);
|
|
89190
|
+
this.logger?.info(` - validation result: ${JSON.stringify(r, null, 2)}`);
|
|
89191
|
+
}
|
|
89192
|
+
valid[remainingBlockMap[i]] = validated;
|
|
89193
|
+
}
|
|
89194
|
+
const pruneHashes = bundles.map((p, i) => {
|
|
89195
|
+
if (!valid[i]) {
|
|
89196
|
+
return p._hash;
|
|
89197
|
+
}
|
|
89198
|
+
}).filter(exists$2);
|
|
89199
|
+
pruned += pruneHashes.length;
|
|
89200
|
+
total += batch.length;
|
|
89201
|
+
await this.pendingBlocksArchivist.delete(pruneHashes);
|
|
89202
|
+
cursor = batch.at(-1)?._sequence;
|
|
89203
|
+
batch = cursor ? await this.pendingBlocksArchivist.next({
|
|
89204
|
+
limit: batchSize,
|
|
89205
|
+
cursor,
|
|
89206
|
+
order: "desc"
|
|
89207
|
+
}) : [];
|
|
89208
|
+
}
|
|
89209
|
+
this.logger?.info(`prunePendingBlocks completed: pruned=${pruned}, totalChecked=${total}`);
|
|
89210
|
+
return [pruned, total];
|
|
89211
|
+
}
|
|
89212
|
+
prunePendingTransactions(_options) {
|
|
89213
|
+
throw new Error("Method not implemented.");
|
|
89214
|
+
}
|
|
89120
89215
|
async submitBlocks(blocks) {
|
|
89121
89216
|
const bundles = await Promise.all(blocks.map(async ([bw, payloads]) => {
|
|
89122
89217
|
return hydratedBlockToPayloadBundle([
|
|
@@ -89137,9 +89232,27 @@ var SimpleMempoolRunner = class extends AbstractCreatableProvider {
|
|
|
89137
89232
|
const inserted = await this.pendingTransactionsArchivist.insert(bundles);
|
|
89138
89233
|
return inserted.map((p) => p._hash);
|
|
89139
89234
|
}
|
|
89235
|
+
async simpleValidationCheck(payloads) {
|
|
89236
|
+
const headNumber = await this.finalizationViewer.headNumber();
|
|
89237
|
+
const chainId = await this.chainContractViewer.chainId();
|
|
89238
|
+
const blockBundles = await Promise.all(payloads.map(async (p) => {
|
|
89239
|
+
return [isPayloadBundle(p) ? await bundledPayloadToHydratedBlock(p) : void 0, p];
|
|
89240
|
+
}));
|
|
89241
|
+
return blockBundles.map(([block, bundle3]) => {
|
|
89242
|
+
const result = [block ? block[0].chain === chainId && block[0].block > headNumber && isSignedHydratedBlockWithHashMeta(block) ? block : void 0 : void 0, bundle3];
|
|
89243
|
+
if (result[0] === void 0) {
|
|
89244
|
+
this.logger?.info(`Pruning block bundle ${bundle3._hash} during simpleValidationCheck`);
|
|
89245
|
+
this.logger?.info(` - chainId match: ${block ? block[0].chain === chainId : "n/a"}`);
|
|
89246
|
+
this.logger?.info(` - headNumber check: ${block ? block[0].block > headNumber : "n/a"}`);
|
|
89247
|
+
this.logger?.info(` - isSignedHydratedBlockWithHashMeta: ${block ? isSignedHydratedBlockWithHashMeta(block) : "n/a"}`);
|
|
89248
|
+
this.logger?.info(` - block value: ${block ? JSON.stringify(block, null, 2) : "n/a"}`);
|
|
89249
|
+
}
|
|
89250
|
+
return result;
|
|
89251
|
+
});
|
|
89252
|
+
}
|
|
89140
89253
|
};
|
|
89141
89254
|
__publicField$4(SimpleMempoolRunner, "defaultMoniker", MempoolRunnerMoniker);
|
|
89142
|
-
__publicField$4(SimpleMempoolRunner, "dependencies", [
|
|
89255
|
+
__publicField$4(SimpleMempoolRunner, "dependencies", [FinalizationViewerMoniker, BlockValidationViewerMoniker, ChainContractViewerMoniker]);
|
|
89143
89256
|
__publicField$4(SimpleMempoolRunner, "monikers", [MempoolRunnerMoniker]);
|
|
89144
89257
|
SimpleMempoolRunner = __decorateClass$4([
|
|
89145
89258
|
creatableProvider()
|
|
@@ -89192,14 +89305,12 @@ var SimpleMempoolViewer = class extends AbstractCreatableProvider {
|
|
|
89192
89305
|
});
|
|
89193
89306
|
this.logger?.info(`Fetched pending transactions: ${bundles.length} bundles`);
|
|
89194
89307
|
const filteredBundles = bundles.filter(isPayloadBundle).filter(isHashMeta);
|
|
89195
|
-
this.logger?.info(`Filtered pending transactions: ${JSON.stringify(filteredBundles, null, 2)} filteredBundles`);
|
|
89196
89308
|
const hydratedWithBundle = (await Promise.all(
|
|
89197
89309
|
filteredBundles.map(async (bundle3) => {
|
|
89198
89310
|
const tx = await bundledPayloadToHydratedTransaction$1(bundle3);
|
|
89199
89311
|
return isDefined(tx) ? { bundle: bundle3, tx } : void 0;
|
|
89200
89312
|
})
|
|
89201
89313
|
)).filter(exists$2);
|
|
89202
|
-
this.logger?.info(`Converted pending transactions: ${JSON.stringify(hydratedWithBundle.map((x) => x.tx), null, 2)} results`);
|
|
89203
89314
|
const currentBlock = await this.windowedBlockViewer.currentBlock();
|
|
89204
89315
|
const evaluated = await Promise.all(
|
|
89205
89316
|
hydratedWithBundle.map(async ({ bundle: bundle3, tx }) => ({
|
|
@@ -96663,6 +96774,12 @@ var JsonRpcMempoolRunnerMethods = class extends AbstractJsonRpcRunner {
|
|
|
96663
96774
|
|
|
96664
96775
|
// src/provider/runner/JsonRpcMempoolRunner/JsonRpcMempoolRunner.ts
|
|
96665
96776
|
var JsonRpcMempoolRunner = class extends JsonRpcMempoolRunnerMethods {
|
|
96777
|
+
prunePendingBlocks(_options) {
|
|
96778
|
+
throw new Error("Method not implemented.");
|
|
96779
|
+
}
|
|
96780
|
+
prunePendingTransactions(_options) {
|
|
96781
|
+
throw new Error("Method not implemented.");
|
|
96782
|
+
}
|
|
96666
96783
|
};
|
|
96667
96784
|
__publicField$3(JsonRpcMempoolRunner, "defaultMoniker", MempoolRunnerMoniker);
|
|
96668
96785
|
__publicField$3(JsonRpcMempoolRunner, "dependencies", []);
|
|
@@ -96679,12 +96796,16 @@ var JsonRpcXyoRunner = class extends AbstractJsonRpcRunner {
|
|
|
96679
96796
|
async broadcastTransaction(transaction) {
|
|
96680
96797
|
return await this.transport.sendRequest("xyoRunner_broadcastTransaction", [transaction]);
|
|
96681
96798
|
}
|
|
96799
|
+
async createHandler() {
|
|
96800
|
+
await super.createHandler();
|
|
96801
|
+
this._mempoolRunner = await this.locateAndCreate(MempoolRunnerMoniker);
|
|
96802
|
+
}
|
|
96682
96803
|
schemas() {
|
|
96683
96804
|
return XyoRunnerRpcSchemas;
|
|
96684
96805
|
}
|
|
96685
96806
|
};
|
|
96686
96807
|
__publicField$3(JsonRpcXyoRunner, "defaultMoniker", XyoRunnerMoniker);
|
|
96687
|
-
__publicField$3(JsonRpcXyoRunner, "dependencies", []);
|
|
96808
|
+
__publicField$3(JsonRpcXyoRunner, "dependencies", [MempoolRunnerMoniker]);
|
|
96688
96809
|
__publicField$3(JsonRpcXyoRunner, "monikers", [XyoRunnerMoniker]);
|
|
96689
96810
|
JsonRpcXyoRunner = __decorateClass$3([
|
|
96690
96811
|
creatableProvider()
|
|
@@ -201861,6 +201982,44 @@ async function createChain(signer, stakingTokenAddress, initialBlockProducer, re
|
|
|
201861
201982
|
];
|
|
201862
201983
|
}
|
|
201863
201984
|
__name$e(createChain, "createChain");
|
|
201985
|
+
var EthHashRegEx = HexRegExMinMaxMixedCaseWithPrefix(32, 32);
|
|
201986
|
+
var EthHashZod = string$2().regex(EthHashRegEx, {
|
|
201987
|
+
message: "Invalid address format"
|
|
201988
|
+
});
|
|
201989
|
+
var EvmStakeAddedEventNameZod = literal$2("StakeAdded");
|
|
201990
|
+
var EvmStakeRemovedEventNameZod = literal$2("StakeRemoved");
|
|
201991
|
+
var EvmStakeWithdrawnEventNameZod = literal$2("StakeWithdrawn");
|
|
201992
|
+
var EvmStakeEventNameZod = union$1([
|
|
201993
|
+
EvmStakeAddedEventNameZod,
|
|
201994
|
+
EvmStakeRemovedEventNameZod,
|
|
201995
|
+
EvmStakeWithdrawnEventNameZod
|
|
201996
|
+
]);
|
|
201997
|
+
var EvmStakeEventArgsZod = tuple([
|
|
201998
|
+
EthAddressZod,
|
|
201999
|
+
EthAddressZod,
|
|
202000
|
+
bigint$1(),
|
|
202001
|
+
bigint$1()
|
|
202002
|
+
]);
|
|
202003
|
+
var EvmStakeEventZod = object$4({
|
|
202004
|
+
address: EthAddressZod,
|
|
202005
|
+
args: EvmStakeEventArgsZod,
|
|
202006
|
+
blockHash: EthHashZod,
|
|
202007
|
+
blockNumber: number$3(),
|
|
202008
|
+
eventName: EvmStakeEventNameZod,
|
|
202009
|
+
transactionHash: EthHashZod,
|
|
202010
|
+
transactionIndex: number$3()
|
|
202011
|
+
});
|
|
202012
|
+
EvmStakeEventZod.extend({
|
|
202013
|
+
eventName: EvmStakeAddedEventNameZod
|
|
202014
|
+
});
|
|
202015
|
+
EvmStakeEventZod.extend({
|
|
202016
|
+
eventName: EvmStakeRemovedEventNameZod
|
|
202017
|
+
});
|
|
202018
|
+
EvmStakeEventZod.extend({
|
|
202019
|
+
eventName: EvmStakeWithdrawnEventNameZod
|
|
202020
|
+
});
|
|
202021
|
+
|
|
202022
|
+
// src/drivers/EvmStakeEventsViewer.ts
|
|
201864
202023
|
function _ts_decorate$5(decorators, target, key, desc) {
|
|
201865
202024
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
201866
202025
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -201868,6 +202027,170 @@ function _ts_decorate$5(decorators, target, key, desc) {
|
|
|
201868
202027
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
201869
202028
|
}
|
|
201870
202029
|
__name$e(_ts_decorate$5, "_ts_decorate");
|
|
202030
|
+
var EvmStakeEventsViewer = class _EvmStakeEventsViewer extends AbstractCreatableProvider {
|
|
202031
|
+
static {
|
|
202032
|
+
__name$e(this, "EvmStakeEventsViewer");
|
|
202033
|
+
}
|
|
202034
|
+
static defaultMoniker = StakeEventsViewerMoniker;
|
|
202035
|
+
static dependencies = [];
|
|
202036
|
+
static monikers = [
|
|
202037
|
+
StakeEventsViewerMoniker
|
|
202038
|
+
];
|
|
202039
|
+
moniker = _EvmStakeEventsViewer.defaultMoniker;
|
|
202040
|
+
eventCache = /* @__PURE__ */ new Map();
|
|
202041
|
+
get contract() {
|
|
202042
|
+
return assertEx(this.params.contract, () => new Error("Contract not defined"));
|
|
202043
|
+
}
|
|
202044
|
+
get deploymentBlock() {
|
|
202045
|
+
return this.params.deploymentBlock ?? 0;
|
|
202046
|
+
}
|
|
202047
|
+
async positionCount(range) {
|
|
202048
|
+
const events = await this.stakeEvents(range);
|
|
202049
|
+
const positionIds = events.map((e) => e.args.id);
|
|
202050
|
+
return Math.max(-1, ...positionIds) + 1;
|
|
202051
|
+
}
|
|
202052
|
+
stakeEvents(range = [
|
|
202053
|
+
0,
|
|
202054
|
+
"latest"
|
|
202055
|
+
], filter) {
|
|
202056
|
+
const allEvents = [
|
|
202057
|
+
...this.eventCache.values()
|
|
202058
|
+
];
|
|
202059
|
+
const result = allEvents.filter((e) => {
|
|
202060
|
+
if (range[1] !== "latest" && e.time > range[1]) {
|
|
202061
|
+
return false;
|
|
202062
|
+
}
|
|
202063
|
+
if (e.time < range[0]) {
|
|
202064
|
+
return false;
|
|
202065
|
+
}
|
|
202066
|
+
if (isDefined(filter?.name) && e.name !== filter.name) {
|
|
202067
|
+
return false;
|
|
202068
|
+
}
|
|
202069
|
+
if (isDefined(filter?.args?.id) && e.args.id !== filter.args.id) {
|
|
202070
|
+
return false;
|
|
202071
|
+
}
|
|
202072
|
+
if (isDefined(filter?.args?.staked) && e.args.staked !== filter.args.staked) {
|
|
202073
|
+
return false;
|
|
202074
|
+
}
|
|
202075
|
+
if (isDefined(filter?.args?.staker) && e.args.staker !== filter.args.staker) {
|
|
202076
|
+
return false;
|
|
202077
|
+
}
|
|
202078
|
+
return true;
|
|
202079
|
+
});
|
|
202080
|
+
return result;
|
|
202081
|
+
}
|
|
202082
|
+
onEventHandler(staked, staker, id, amount, event, throwOnInvalid = false) {
|
|
202083
|
+
const validatedEventResult = EvmStakeEventZod.safeParse(event);
|
|
202084
|
+
if (validatedEventResult.error) {
|
|
202085
|
+
this.logger?.warn(`Received invalid stake event [${event.eventName}/${event.blockNumber}], ignoring...`);
|
|
202086
|
+
this.logger?.warn(` - ${validatedEventResult.error.message}`);
|
|
202087
|
+
if (throwOnInvalid) {
|
|
202088
|
+
throw new Error(`Invalid stake event: ${validatedEventResult.error.message}`);
|
|
202089
|
+
}
|
|
202090
|
+
return;
|
|
202091
|
+
}
|
|
202092
|
+
const validatedEvent = validatedEventResult.data;
|
|
202093
|
+
const { eventName, blockNumber } = validatedEvent;
|
|
202094
|
+
this.logger?.log(`Processing ${eventName} event for stake ID ${id} at block ${blockNumber}`);
|
|
202095
|
+
const cacheKey = `${Number(id)}|${eventName}|${staker}`;
|
|
202096
|
+
const existingStakeEvent = this.eventCache.get(cacheKey);
|
|
202097
|
+
const stakeEvent = {
|
|
202098
|
+
name: eventName,
|
|
202099
|
+
args: {
|
|
202100
|
+
id: Number(id),
|
|
202101
|
+
staked: toAddress(staked),
|
|
202102
|
+
staker: toAddress(staker),
|
|
202103
|
+
amount: asAttoXL1(amount)
|
|
202104
|
+
},
|
|
202105
|
+
time: blockNumber
|
|
202106
|
+
};
|
|
202107
|
+
if (isDefined(existingStakeEvent)) {
|
|
202108
|
+
this.logger?.warn(`Received ${eventName} event for stake ID ${id} that is already cached, updating cache...`);
|
|
202109
|
+
this.logger?.warn("1");
|
|
202110
|
+
this.logger?.warn("Previous event", existingStakeEvent);
|
|
202111
|
+
this.logger?.warn("2");
|
|
202112
|
+
this.logger?.warn("New event", stakeEvent);
|
|
202113
|
+
this.logger?.warn("3");
|
|
202114
|
+
}
|
|
202115
|
+
this.eventCache.set(cacheKey, stakeEvent);
|
|
202116
|
+
return stakeEvent;
|
|
202117
|
+
}
|
|
202118
|
+
async startHandler() {
|
|
202119
|
+
try {
|
|
202120
|
+
const currentEthBlock = assertEx(await this.contract.runner?.provider?.getBlockNumber(), () => new Error("Failed to egt currentEthBlock"));
|
|
202121
|
+
await this.contract.on(this.contract.getEvent("StakeAdded"), (staked, staker, id, amount, event) => {
|
|
202122
|
+
this.onEventHandler(staked, staker, id, amount, event);
|
|
202123
|
+
});
|
|
202124
|
+
await this.contract.on(this.contract.getEvent("StakeRemoved"), (staked, staker, id, amount, event) => {
|
|
202125
|
+
this.onEventHandler(staked, staker, id, amount, event);
|
|
202126
|
+
});
|
|
202127
|
+
await this.contract.on(this.contract.getEvent("StakeWithdrawn"), (staked, staker, id, amount, event) => {
|
|
202128
|
+
this.onEventHandler(staked, staker, id, amount, event);
|
|
202129
|
+
});
|
|
202130
|
+
await this.loadHistoricalEvents(currentEthBlock);
|
|
202131
|
+
} catch (error) {
|
|
202132
|
+
this.logger?.error("EthereumChainStakeEvents failed to start:", error);
|
|
202133
|
+
throw error;
|
|
202134
|
+
}
|
|
202135
|
+
}
|
|
202136
|
+
async loadHistoricalEvents(currentEthBlock) {
|
|
202137
|
+
const allStakeEvents = (await Promise.all([
|
|
202138
|
+
this.stakeEventsNative([
|
|
202139
|
+
this.deploymentBlock,
|
|
202140
|
+
currentEthBlock
|
|
202141
|
+
], {
|
|
202142
|
+
name: "StakeAdded"
|
|
202143
|
+
}),
|
|
202144
|
+
this.stakeEventsNative([
|
|
202145
|
+
this.deploymentBlock,
|
|
202146
|
+
currentEthBlock
|
|
202147
|
+
], {
|
|
202148
|
+
name: "StakeRemoved"
|
|
202149
|
+
}),
|
|
202150
|
+
this.stakeEventsNative([
|
|
202151
|
+
this.deploymentBlock,
|
|
202152
|
+
currentEthBlock
|
|
202153
|
+
], {
|
|
202154
|
+
name: "StakeWithdrawn"
|
|
202155
|
+
})
|
|
202156
|
+
])).flat().toSorted((a, b) => a.time - b.time);
|
|
202157
|
+
console.warn(`Caching ${allStakeEvents.length} stake events from chain starting at block ${this.deploymentBlock}`);
|
|
202158
|
+
for (const event of allStakeEvents) {
|
|
202159
|
+
this.eventCache.set(`${Number(event.args.id)}|${event.name}|${event.args.staker}`, event);
|
|
202160
|
+
}
|
|
202161
|
+
}
|
|
202162
|
+
async stakeEventsNative(range = [
|
|
202163
|
+
0,
|
|
202164
|
+
"latest"
|
|
202165
|
+
], filter) {
|
|
202166
|
+
const name = filter?.name;
|
|
202167
|
+
if (isDefined(name)) {
|
|
202168
|
+
const stakedFilter = filter?.args?.staked;
|
|
202169
|
+
const stakerFilter = filter?.args?.staker;
|
|
202170
|
+
const stakedFilterEth = isDefined(stakedFilter) ? toEthAddress(stakedFilter) : void 0;
|
|
202171
|
+
const stakerFilterEth = isDefined(stakerFilter) ? toEthAddress(stakerFilter) : void 0;
|
|
202172
|
+
let ethEvents = [];
|
|
202173
|
+
const ethFilter = this.contract.filters[name](stakedFilterEth, stakerFilterEth);
|
|
202174
|
+
ethEvents = await this.contract.queryFilter(ethFilter, range[0], range[1]);
|
|
202175
|
+
return ethEvents.map((e) => {
|
|
202176
|
+
assertEx(e.eventName === name, () => `Event name mismatch expected '${name}' but got '${e.eventName}'`);
|
|
202177
|
+
return this.onEventHandler(e.args.staked, e.args.by, e.args.id, e.args.amount, e, true);
|
|
202178
|
+
}).filter(exists$2);
|
|
202179
|
+
} else {
|
|
202180
|
+
throw new Error("Only filtered stake events (by name) are supported");
|
|
202181
|
+
}
|
|
202182
|
+
}
|
|
202183
|
+
};
|
|
202184
|
+
EvmStakeEventsViewer = _ts_decorate$5([
|
|
202185
|
+
creatableProvider()
|
|
202186
|
+
], EvmStakeEventsViewer);
|
|
202187
|
+
function _ts_decorate2$3(decorators, target, key, desc) {
|
|
202188
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
202189
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
202190
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
202191
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
202192
|
+
}
|
|
202193
|
+
__name$e(_ts_decorate2$3, "_ts_decorate");
|
|
201871
202194
|
var ethStakeToStake = /* @__PURE__ */ __name$e((ethStake) => {
|
|
201872
202195
|
const stake = {
|
|
201873
202196
|
id: Number(ethStake.id),
|
|
@@ -201880,16 +202203,16 @@ var ethStakeToStake = /* @__PURE__ */ __name$e((ethStake) => {
|
|
|
201880
202203
|
};
|
|
201881
202204
|
return stake;
|
|
201882
202205
|
}, "ethStakeToStake");
|
|
201883
|
-
var
|
|
202206
|
+
var EvmStakeViewer = class _EvmStakeViewer extends AbstractCreatableProvider {
|
|
201884
202207
|
static {
|
|
201885
|
-
__name$e(this, "
|
|
202208
|
+
__name$e(this, "EvmStakeViewer");
|
|
201886
202209
|
}
|
|
201887
202210
|
static defaultMoniker = StakeViewerMoniker;
|
|
201888
202211
|
static dependencies = [];
|
|
201889
202212
|
static monikers = [
|
|
201890
202213
|
StakeViewerMoniker
|
|
201891
202214
|
];
|
|
201892
|
-
moniker =
|
|
202215
|
+
moniker = _EvmStakeViewer.defaultMoniker;
|
|
201893
202216
|
_callMutex = new Mutex$1();
|
|
201894
202217
|
_deploymentBlock = 0;
|
|
201895
202218
|
_stakeCache = /* @__PURE__ */ new Map();
|
|
@@ -202090,174 +202413,9 @@ var EthereumChainStakeViewer = class _EthereumChainStakeViewer extends AbstractC
|
|
|
202090
202413
|
}
|
|
202091
202414
|
}
|
|
202092
202415
|
};
|
|
202093
|
-
|
|
202094
|
-
creatableProvider()
|
|
202095
|
-
], EthereumChainStakeViewer);
|
|
202096
|
-
function _ts_decorate2$3(decorators, target, key, desc) {
|
|
202097
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
202098
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
202099
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
202100
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
202101
|
-
}
|
|
202102
|
-
__name$e(_ts_decorate2$3, "_ts_decorate");
|
|
202103
|
-
var isStakeLogEventName = /* @__PURE__ */ __name$e((name) => {
|
|
202104
|
-
return isString$1(name) && [
|
|
202105
|
-
"StakeAdded",
|
|
202106
|
-
"StakeRemoved",
|
|
202107
|
-
"StakeWithdrawn"
|
|
202108
|
-
].includes(name);
|
|
202109
|
-
}, "isStakeLogEventName");
|
|
202110
|
-
var EthereumChainStakeEventsViewer = class _EthereumChainStakeEventsViewer extends AbstractCreatableProvider {
|
|
202111
|
-
static {
|
|
202112
|
-
__name$e(this, "EthereumChainStakeEventsViewer");
|
|
202113
|
-
}
|
|
202114
|
-
static defaultMoniker = StakeEventsViewerMoniker;
|
|
202115
|
-
static dependencies = [];
|
|
202116
|
-
static monikers = [
|
|
202117
|
-
StakeEventsViewerMoniker
|
|
202118
|
-
];
|
|
202119
|
-
moniker = _EthereumChainStakeEventsViewer.defaultMoniker;
|
|
202120
|
-
eventCache = /* @__PURE__ */ new Map();
|
|
202121
|
-
get contract() {
|
|
202122
|
-
return assertEx(this.params.contract, () => new Error("Contract not defined"));
|
|
202123
|
-
}
|
|
202124
|
-
get deploymentBlock() {
|
|
202125
|
-
return this.params.deploymentBlock ?? 0;
|
|
202126
|
-
}
|
|
202127
|
-
async positionCount(range) {
|
|
202128
|
-
const events = await this.stakeEvents(range);
|
|
202129
|
-
const positionIds = events.map((e) => e.args.id);
|
|
202130
|
-
return Math.max(-1, ...positionIds) + 1;
|
|
202131
|
-
}
|
|
202132
|
-
stakeEvents(range = [
|
|
202133
|
-
0,
|
|
202134
|
-
"latest"
|
|
202135
|
-
], filter) {
|
|
202136
|
-
const allEvents = [
|
|
202137
|
-
...this.eventCache.values()
|
|
202138
|
-
];
|
|
202139
|
-
const result = allEvents.filter((e) => {
|
|
202140
|
-
if (range[1] !== "latest" && e.time > range[1]) {
|
|
202141
|
-
return false;
|
|
202142
|
-
}
|
|
202143
|
-
if (e.time < range[0]) {
|
|
202144
|
-
return false;
|
|
202145
|
-
}
|
|
202146
|
-
if (isDefined(filter?.name) && e.name !== filter.name) {
|
|
202147
|
-
return false;
|
|
202148
|
-
}
|
|
202149
|
-
if (isDefined(filter?.args?.id) && e.args.id !== filter.args.id) {
|
|
202150
|
-
return false;
|
|
202151
|
-
}
|
|
202152
|
-
if (isDefined(filter?.args?.staked) && e.args.staked !== filter.args.staked) {
|
|
202153
|
-
return false;
|
|
202154
|
-
}
|
|
202155
|
-
if (isDefined(filter?.args?.staker) && e.args.staker !== filter.args.staker) {
|
|
202156
|
-
return false;
|
|
202157
|
-
}
|
|
202158
|
-
return true;
|
|
202159
|
-
});
|
|
202160
|
-
return result;
|
|
202161
|
-
}
|
|
202162
|
-
onEventHandler(staked, staker, id, amount, { eventName, blockNumber }) {
|
|
202163
|
-
if (blockNumber === void 0) {
|
|
202164
|
-
this.logger?.warn(`Received ${eventName} event with ${blockNumber} blockNumber, ignoring...`);
|
|
202165
|
-
return;
|
|
202166
|
-
}
|
|
202167
|
-
if (!isStakeLogEventName(eventName)) {
|
|
202168
|
-
this.logger?.warn(`Received event with unsupported name '${eventName}'`);
|
|
202169
|
-
return;
|
|
202170
|
-
}
|
|
202171
|
-
this.logger?.log(`Processing ${eventName} event for stake ID ${id} at block ${blockNumber}`);
|
|
202172
|
-
const cacheKey = `${Number(id)}|${eventName}|${staker}`;
|
|
202173
|
-
const existingStakeEvent = this.eventCache.get(cacheKey);
|
|
202174
|
-
const stakeEvent = {
|
|
202175
|
-
name: eventName,
|
|
202176
|
-
args: {
|
|
202177
|
-
id: Number(id),
|
|
202178
|
-
staked: toAddress(staked),
|
|
202179
|
-
staker: toAddress(staker),
|
|
202180
|
-
amount: asAttoXL1(amount)
|
|
202181
|
-
},
|
|
202182
|
-
time: blockNumber
|
|
202183
|
-
};
|
|
202184
|
-
if (isDefined(existingStakeEvent)) {
|
|
202185
|
-
this.logger?.warn(`Received ${eventName} event for stake ID ${id} that is already cached, updating cache...`);
|
|
202186
|
-
this.logger?.warn("1");
|
|
202187
|
-
this.logger?.warn("Previous event", existingStakeEvent);
|
|
202188
|
-
this.logger?.warn("2");
|
|
202189
|
-
this.logger?.warn("New event", stakeEvent);
|
|
202190
|
-
this.logger?.warn("3");
|
|
202191
|
-
}
|
|
202192
|
-
this.eventCache.set(cacheKey, stakeEvent);
|
|
202193
|
-
return stakeEvent;
|
|
202194
|
-
}
|
|
202195
|
-
async startHandler() {
|
|
202196
|
-
try {
|
|
202197
|
-
const currentEthBlock = assertEx(await this.contract.runner?.provider?.getBlockNumber(), () => new Error("Failed to egt currentEthBlock"));
|
|
202198
|
-
await this.contract.on(this.contract.getEvent("StakeAdded"), (staked, staker, id, amount, event) => {
|
|
202199
|
-
this.onEventHandler(staked, staker, id, amount, event);
|
|
202200
|
-
});
|
|
202201
|
-
await this.contract.on(this.contract.getEvent("StakeRemoved"), (staked, staker, id, amount, event) => {
|
|
202202
|
-
this.onEventHandler(staked, staker, id, amount, event);
|
|
202203
|
-
});
|
|
202204
|
-
await this.contract.on(this.contract.getEvent("StakeWithdrawn"), (staked, staker, id, amount, event) => {
|
|
202205
|
-
this.onEventHandler(staked, staker, id, amount, event);
|
|
202206
|
-
});
|
|
202207
|
-
const allStakeEvents = (await Promise.all([
|
|
202208
|
-
this.stakeEventsNative([
|
|
202209
|
-
this.deploymentBlock,
|
|
202210
|
-
currentEthBlock
|
|
202211
|
-
], {
|
|
202212
|
-
name: "StakeAdded"
|
|
202213
|
-
}),
|
|
202214
|
-
this.stakeEventsNative([
|
|
202215
|
-
this.deploymentBlock,
|
|
202216
|
-
currentEthBlock
|
|
202217
|
-
], {
|
|
202218
|
-
name: "StakeRemoved"
|
|
202219
|
-
}),
|
|
202220
|
-
this.stakeEventsNative([
|
|
202221
|
-
this.deploymentBlock,
|
|
202222
|
-
currentEthBlock
|
|
202223
|
-
], {
|
|
202224
|
-
name: "StakeWithdrawn"
|
|
202225
|
-
})
|
|
202226
|
-
])).flat().toSorted((a, b) => a.time - b.time);
|
|
202227
|
-
console.warn(`Caching ${allStakeEvents.length} stake events from chain starting at block ${this.deploymentBlock}`);
|
|
202228
|
-
for (const event of allStakeEvents) {
|
|
202229
|
-
this.eventCache.set(`${Number(event.args.id)}|${event.name}|${event.args.staker}`, event);
|
|
202230
|
-
}
|
|
202231
|
-
} catch (error) {
|
|
202232
|
-
this.logger?.error("EthereumChainStakeEvents failed to start:", error);
|
|
202233
|
-
throw error;
|
|
202234
|
-
}
|
|
202235
|
-
}
|
|
202236
|
-
async stakeEventsNative(range = [
|
|
202237
|
-
0,
|
|
202238
|
-
"latest"
|
|
202239
|
-
], filter) {
|
|
202240
|
-
const name = filter?.name;
|
|
202241
|
-
if (isDefined(name)) {
|
|
202242
|
-
const stakedFilter = filter?.args?.staked;
|
|
202243
|
-
const stakerFilter = filter?.args?.staker;
|
|
202244
|
-
const stakedFilterEth = isDefined(stakedFilter) ? toEthAddress(stakedFilter) : void 0;
|
|
202245
|
-
const stakerFilterEth = isDefined(stakerFilter) ? toEthAddress(stakerFilter) : void 0;
|
|
202246
|
-
let ethEvents = [];
|
|
202247
|
-
const ethFilter = this.contract.filters[name](stakedFilterEth, stakerFilterEth);
|
|
202248
|
-
ethEvents = await this.contract.queryFilter(ethFilter, range[0], range[1]);
|
|
202249
|
-
return ethEvents.map((e) => {
|
|
202250
|
-
assertEx(e.eventName === name, () => `Event name mismatch expected '${name}' but got '${e.eventName}'`);
|
|
202251
|
-
return this.onEventHandler(e.args.staked, e.args.by, e.args.id, e.args.amount, e);
|
|
202252
|
-
}).filter(exists$2);
|
|
202253
|
-
} else {
|
|
202254
|
-
throw new Error("Only filtered stake events (by name) are supported");
|
|
202255
|
-
}
|
|
202256
|
-
}
|
|
202257
|
-
};
|
|
202258
|
-
EthereumChainStakeEventsViewer = _ts_decorate2$3([
|
|
202416
|
+
EvmStakeViewer = _ts_decorate2$3([
|
|
202259
202417
|
creatableProvider()
|
|
202260
|
-
],
|
|
202418
|
+
], EvmStakeViewer);
|
|
202261
202419
|
var AbstractEvmProvider = class extends AbstractCreatableProvider {
|
|
202262
202420
|
static {
|
|
202263
202421
|
__name$e(this, "AbstractEvmProvider");
|
|
@@ -202271,13 +202429,13 @@ var AbstractEvmProvider = class extends AbstractCreatableProvider {
|
|
|
202271
202429
|
this._contract = this.connectContract(toEthAddress(this.params.address));
|
|
202272
202430
|
}
|
|
202273
202431
|
};
|
|
202274
|
-
function _ts_decorate3$
|
|
202432
|
+
function _ts_decorate3$3(decorators, target, key, desc) {
|
|
202275
202433
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
202276
202434
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
202277
202435
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
202278
202436
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
202279
202437
|
}
|
|
202280
|
-
__name$e(_ts_decorate3$
|
|
202438
|
+
__name$e(_ts_decorate3$3, "_ts_decorate");
|
|
202281
202439
|
var EvmChainContractViewer = class _EvmChainContractViewer extends AbstractEvmProvider {
|
|
202282
202440
|
static {
|
|
202283
202441
|
__name$e(this, "EvmChainContractViewer");
|
|
@@ -202358,7 +202516,7 @@ var EvmChainContractViewer = class _EvmChainContractViewer extends AbstractEvmPr
|
|
|
202358
202516
|
return IStakedXyoChain__factory.connect(address, this.params.runner);
|
|
202359
202517
|
}
|
|
202360
202518
|
};
|
|
202361
|
-
EvmChainContractViewer = _ts_decorate3$
|
|
202519
|
+
EvmChainContractViewer = _ts_decorate3$3([
|
|
202362
202520
|
creatableProvider()
|
|
202363
202521
|
], EvmChainContractViewer);
|
|
202364
202522
|
function _ts_decorate4$1(decorators, target, key, desc) {
|
|
@@ -203365,13 +203523,13 @@ var BlockValidationDiviner = class extends AbstractDiviner {
|
|
|
203365
203523
|
BlockValidationDiviner = _ts_decorate2$2([
|
|
203366
203524
|
creatableModule()
|
|
203367
203525
|
], BlockValidationDiviner);
|
|
203368
|
-
function _ts_decorate3$
|
|
203526
|
+
function _ts_decorate3$2(decorators, target, key, desc) {
|
|
203369
203527
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
203370
203528
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
203371
203529
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
203372
203530
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
203373
203531
|
}
|
|
203374
|
-
__name$b(_ts_decorate3$
|
|
203532
|
+
__name$b(_ts_decorate3$2, "_ts_decorate");
|
|
203375
203533
|
var HeadValidationDivinerConfigSchema = asSchema("network.xyo.diviner.chain.head.validation.config", true);
|
|
203376
203534
|
var HeadValidationDiviner = class extends AbstractDiviner {
|
|
203377
203535
|
static {
|
|
@@ -203481,7 +203639,7 @@ var HeadValidationDiviner = class extends AbstractDiviner {
|
|
|
203481
203639
|
});
|
|
203482
203640
|
}
|
|
203483
203641
|
};
|
|
203484
|
-
HeadValidationDiviner = _ts_decorate3$
|
|
203642
|
+
HeadValidationDiviner = _ts_decorate3$2([
|
|
203485
203643
|
creatableModule()
|
|
203486
203644
|
], HeadValidationDiviner);
|
|
203487
203645
|
async function processPendingBlocks({ blockViewer, context, finalizedArchivist, logger, mempoolViewer }) {
|
|
@@ -204752,13 +204910,13 @@ var createBootstrapHead = /* @__PURE__ */ __name$9(async (account, chainId, gene
|
|
|
204752
204910
|
chain.push(producerDeclarationBlock);
|
|
204753
204911
|
return chain;
|
|
204754
204912
|
}, "createBootstrapHead");
|
|
204755
|
-
function _ts_decorate3(decorators, target, key, desc) {
|
|
204913
|
+
function _ts_decorate3$1(decorators, target, key, desc) {
|
|
204756
204914
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
204757
204915
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
204758
204916
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
204759
204917
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
204760
204918
|
}
|
|
204761
|
-
__name$9(_ts_decorate3, "_ts_decorate");
|
|
204919
|
+
__name$9(_ts_decorate3$1, "_ts_decorate");
|
|
204762
204920
|
var BaseNetworkStakeStepRewardService = class _BaseNetworkStakeStepRewardService extends AbstractCreatableProvider {
|
|
204763
204921
|
static {
|
|
204764
204922
|
__name$9(this, "BaseNetworkStakeStepRewardService");
|
|
@@ -204824,7 +204982,7 @@ var BaseNetworkStakeStepRewardService = class _BaseNetworkStakeStepRewardService
|
|
|
204824
204982
|
throw new Error("Method [networkStakeStepRewardsForStepLevel] not implemented.");
|
|
204825
204983
|
}
|
|
204826
204984
|
};
|
|
204827
|
-
BaseNetworkStakeStepRewardService = _ts_decorate3([
|
|
204985
|
+
BaseNetworkStakeStepRewardService = _ts_decorate3$1([
|
|
204828
204986
|
creatableProvider()
|
|
204829
204987
|
], BaseNetworkStakeStepRewardService);
|
|
204830
204988
|
var bundledPayloadToHydratedTransaction = /* @__PURE__ */ __name$9(async (payload) => {
|
|
@@ -205373,19 +205531,20 @@ var SimpleBlockRunner = class _SimpleBlockRunner extends AbstractCreatableProvid
|
|
|
205373
205531
|
this.logger?.info(`Built block ${block[0].block} in ${Date.now() - startBuild}ms with ${block[1].length} payloads`);
|
|
205374
205532
|
this.logger?.info(`Validating block ${block[0].block} with ${block[1].length} payloads`);
|
|
205375
205533
|
const startValidate = Date.now();
|
|
205376
|
-
const
|
|
205534
|
+
const validatedBlock = await this.blockValidationViewer.validateBlock(block, {
|
|
205377
205535
|
head: head._hash
|
|
205378
205536
|
});
|
|
205379
205537
|
this.logger?.info(`Validated block ${block[0].block} in ${Date.now() - startValidate}ms with ${block[1].length} payloads`);
|
|
205380
|
-
if (
|
|
205538
|
+
if (isSignedHydratedBlockWithHashMeta(validatedBlock)) {
|
|
205539
|
+
await this.mempoolRunner.submitBlocks([
|
|
205540
|
+
validatedBlock
|
|
205541
|
+
]);
|
|
205542
|
+
return validatedBlock;
|
|
205543
|
+
} else {
|
|
205544
|
+
const errors = validatedBlock;
|
|
205381
205545
|
this.logger?.warn(`Validation of produced block failed: ${errors.at(0)?.message}`);
|
|
205382
205546
|
const rejectedTransactions = block[1];
|
|
205383
205547
|
await this.rejectedTransactionsArchivist.insert(rejectedTransactions);
|
|
205384
|
-
} else {
|
|
205385
|
-
await this.mempoolRunner.submitBlocks([
|
|
205386
|
-
block
|
|
205387
|
-
]);
|
|
205388
|
-
return block;
|
|
205389
205548
|
}
|
|
205390
205549
|
} catch (error) {
|
|
205391
205550
|
this.logger?.error(`Error proposing next valid block: ${error.message}`);
|
|
@@ -297280,8 +297439,8 @@ var __name$6 = (target, value) => __defProp$6(target, "name", { value, configura
|
|
|
297280
297439
|
__name$6(this, "BalanceActor");
|
|
297281
297440
|
}
|
|
297282
297441
|
_updateMutex = new Mutex$1();
|
|
297283
|
-
get
|
|
297284
|
-
return assertEx(this.params.
|
|
297442
|
+
get accountBalanceViewer() {
|
|
297443
|
+
return assertEx(this.params.accountBalanceViewer, () => "balanceService not set");
|
|
297285
297444
|
}
|
|
297286
297445
|
get blockViewer() {
|
|
297287
297446
|
return assertEx(this.params.blockViewer, () => "blockViewer not set");
|
|
@@ -297302,7 +297461,7 @@ var __name$6 = (target, value) => __defProp$6(target, "name", { value, configura
|
|
|
297302
297461
|
if (this._updateMutex.isLocked()) return;
|
|
297303
297462
|
await this._updateMutex.runExclusive(async () => {
|
|
297304
297463
|
const head = await this.blockViewer.currentBlockHash();
|
|
297305
|
-
await this.
|
|
297464
|
+
await this.accountBalanceViewer.accountBalances([], {
|
|
297306
297465
|
head
|
|
297307
297466
|
});
|
|
297308
297467
|
});
|
|
@@ -297315,27 +297474,111 @@ function _ts_decorate$2(decorators, target, key, desc) {
|
|
|
297315
297474
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
297316
297475
|
}
|
|
297317
297476
|
__name$6(_ts_decorate$2, "_ts_decorate");
|
|
297477
|
+
var MempoolActor = class extends Actor {
|
|
297478
|
+
static {
|
|
297479
|
+
__name$6(this, "MempoolActor");
|
|
297480
|
+
}
|
|
297481
|
+
_blockTimerId = null;
|
|
297482
|
+
_blockTimerMutex = new Mutex$1();
|
|
297483
|
+
_transactionTimerId = null;
|
|
297484
|
+
_transactionTimerMutex = new Mutex$1();
|
|
297485
|
+
get mempoolRunner() {
|
|
297486
|
+
return this.params.mempoolRunner;
|
|
297487
|
+
}
|
|
297488
|
+
get pendingBlocksArchivist() {
|
|
297489
|
+
return this.params.pendingBlocksArchivist;
|
|
297490
|
+
}
|
|
297491
|
+
get pendingTransactionsArchivist() {
|
|
297492
|
+
return this.params.pendingTransactionsArchivist;
|
|
297493
|
+
}
|
|
297494
|
+
static async paramsHandler(params) {
|
|
297495
|
+
return {
|
|
297496
|
+
...await super.paramsHandler(params),
|
|
297497
|
+
mempoolRunner: assertEx(params?.mempoolRunner, () => "mempoolRunner is required for MempoolActor"),
|
|
297498
|
+
pendingBlocksArchivist: assertEx(params?.pendingBlocksArchivist, () => "pendingBlocksArchivist is required for MempoolActor"),
|
|
297499
|
+
pendingTransactionsArchivist: assertEx(params?.pendingTransactionsArchivist, () => "pendingTransactionsArchivist is required for MempoolActor")
|
|
297500
|
+
};
|
|
297501
|
+
}
|
|
297502
|
+
async startHandler() {
|
|
297503
|
+
await super.startHandler();
|
|
297504
|
+
this.restartBlockTimer();
|
|
297505
|
+
}
|
|
297506
|
+
async stopHandler() {
|
|
297507
|
+
await super.stopHandler();
|
|
297508
|
+
this.stopBlockTimer();
|
|
297509
|
+
}
|
|
297510
|
+
restartBlockTimer() {
|
|
297511
|
+
this.stopBlockTimer();
|
|
297512
|
+
this._blockTimerId = setInterval(() => {
|
|
297513
|
+
if (this._blockTimerMutex.isLocked()) {
|
|
297514
|
+
return;
|
|
297515
|
+
}
|
|
297516
|
+
void this._blockTimerMutex.runExclusive(async () => {
|
|
297517
|
+
await this.mempoolRunner.prunePendingBlocks({
|
|
297518
|
+
batchSize: 50
|
|
297519
|
+
});
|
|
297520
|
+
});
|
|
297521
|
+
}, 1e3);
|
|
297522
|
+
}
|
|
297523
|
+
restartTransactionTimer() {
|
|
297524
|
+
this.stopTransactionTimer();
|
|
297525
|
+
this._transactionTimerId = setInterval(() => {
|
|
297526
|
+
if (this._transactionTimerMutex.isLocked()) {
|
|
297527
|
+
return;
|
|
297528
|
+
}
|
|
297529
|
+
void this._transactionTimerMutex.runExclusive(async () => {
|
|
297530
|
+
await this.mempoolRunner.prunePendingTransactions({
|
|
297531
|
+
batchSize: 50
|
|
297532
|
+
});
|
|
297533
|
+
});
|
|
297534
|
+
}, 1e3);
|
|
297535
|
+
}
|
|
297536
|
+
stopBlockTimer() {
|
|
297537
|
+
if (this._blockTimerId !== null) {
|
|
297538
|
+
clearInterval(this._blockTimerId);
|
|
297539
|
+
}
|
|
297540
|
+
this._blockTimerId = null;
|
|
297541
|
+
}
|
|
297542
|
+
stopTransactionTimer() {
|
|
297543
|
+
if (this._transactionTimerId !== null) {
|
|
297544
|
+
clearInterval(this._transactionTimerId);
|
|
297545
|
+
}
|
|
297546
|
+
this._transactionTimerId = null;
|
|
297547
|
+
}
|
|
297548
|
+
};
|
|
297549
|
+
MempoolActor = _ts_decorate$2([
|
|
297550
|
+
creatable()
|
|
297551
|
+
], MempoolActor);
|
|
297552
|
+
function _ts_decorate2(decorators, target, key, desc) {
|
|
297553
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
297554
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
297555
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
297556
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
297557
|
+
}
|
|
297558
|
+
__name$6(_ts_decorate2, "_ts_decorate");
|
|
297318
297559
|
var ValidatorActor = class extends Actor {
|
|
297319
297560
|
static {
|
|
297320
297561
|
__name$6(this, "ValidatorActor");
|
|
297321
297562
|
}
|
|
297322
|
-
_blockViewer;
|
|
297323
297563
|
_lastValidatedBlock;
|
|
297324
297564
|
_lastValidatedBlockHash;
|
|
297325
|
-
_mempoolViewer;
|
|
297326
297565
|
get blockViewer() {
|
|
297327
|
-
return this.
|
|
297566
|
+
return this.params.blockViewer;
|
|
297328
297567
|
}
|
|
297329
297568
|
get finalizedArchivist() {
|
|
297330
297569
|
return assertEx(this.params.finalizedArchivist, () => "finalizedArchivist not set");
|
|
297331
297570
|
}
|
|
297332
297571
|
get mempoolViewer() {
|
|
297333
|
-
return this.
|
|
297572
|
+
return this.params.mempoolViewer;
|
|
297334
297573
|
}
|
|
297335
|
-
async
|
|
297336
|
-
|
|
297337
|
-
|
|
297338
|
-
|
|
297574
|
+
static async paramsHandler(params) {
|
|
297575
|
+
return {
|
|
297576
|
+
...await super.paramsHandler(params),
|
|
297577
|
+
mempoolViewer: assertEx(params?.mempoolViewer, () => "mempoolViewer is required for ValidatorActor"),
|
|
297578
|
+
blockViewer: assertEx(params?.blockViewer, () => "blockViewer is required for ValidatorActor"),
|
|
297579
|
+
finalizedArchivist: assertEx(params?.finalizedArchivist, () => "finalizedArchivist is required for ValidatorActor"),
|
|
297580
|
+
account: assertEx(params?.account, () => "account is required for ValidatorActor")
|
|
297581
|
+
};
|
|
297339
297582
|
}
|
|
297340
297583
|
async startHandler() {
|
|
297341
297584
|
await super.startHandler();
|
|
@@ -297372,7 +297615,7 @@ var ValidatorActor = class extends Actor {
|
|
|
297372
297615
|
return valid;
|
|
297373
297616
|
}
|
|
297374
297617
|
};
|
|
297375
|
-
ValidatorActor =
|
|
297618
|
+
ValidatorActor = _ts_decorate2([
|
|
297376
297619
|
creatable()
|
|
297377
297620
|
], ValidatorActor);
|
|
297378
297621
|
var DEFAULT_STORAGE_ROOT = path.join(process.cwd(), ".store");
|
|
@@ -297693,19 +297936,19 @@ async function initEvmChainStakeViewer(context, config, logger) {
|
|
|
297693
297936
|
});
|
|
297694
297937
|
const contractAddress = assertEx(config.chain.id, () => "Missing config.evm.chainId");
|
|
297695
297938
|
const contract = IStakedXyoChain__factory.connect(toEthAddress(contractAddress), provider2);
|
|
297696
|
-
const stakeEventsViewer = await
|
|
297939
|
+
const stakeEventsViewer = await EvmStakeEventsViewer.create({
|
|
297697
297940
|
contract,
|
|
297698
297941
|
logger,
|
|
297699
297942
|
context
|
|
297700
297943
|
});
|
|
297701
|
-
assertEx(await stakeEventsViewer.start(), () => "Failed to start
|
|
297702
|
-
const stakeChainViewer = await
|
|
297944
|
+
assertEx(await stakeEventsViewer.start(), () => "Failed to start EvmStakeEvents reader");
|
|
297945
|
+
const stakeChainViewer = await EvmStakeViewer.create({
|
|
297703
297946
|
contract,
|
|
297704
297947
|
stakeEventsViewer,
|
|
297705
297948
|
logger,
|
|
297706
297949
|
context
|
|
297707
297950
|
});
|
|
297708
|
-
assertEx(await stakeChainViewer.start(), () => "Failed to start
|
|
297951
|
+
assertEx(await stakeChainViewer.start(), () => "Failed to start EvmStake viewer");
|
|
297709
297952
|
return stakeChainViewer;
|
|
297710
297953
|
}
|
|
297711
297954
|
__name$6(initEvmChainStakeViewer, "initEvmChainStakeViewer");
|
|
@@ -298127,13 +298370,13 @@ async function initRewardsRedemptionApiWallet({ config, logger }) {
|
|
|
298127
298370
|
}, mnemonic);
|
|
298128
298371
|
}
|
|
298129
298372
|
__name$6(initRewardsRedemptionApiWallet, "initRewardsRedemptionApiWallet");
|
|
298130
|
-
function
|
|
298373
|
+
function _ts_decorate3(decorators, target, key, desc) {
|
|
298131
298374
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
298132
298375
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
298133
298376
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
298134
298377
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
298135
298378
|
}
|
|
298136
|
-
__name$6(
|
|
298379
|
+
__name$6(_ts_decorate3, "_ts_decorate");
|
|
298137
298380
|
var Orchestrator = class extends AbstractCreatable {
|
|
298138
298381
|
static {
|
|
298139
298382
|
__name$6(this, "Orchestrator");
|
|
@@ -298186,7 +298429,7 @@ var Orchestrator = class extends AbstractCreatable {
|
|
|
298186
298429
|
this.logger?.log("[Orchestrator] Stopped...");
|
|
298187
298430
|
}
|
|
298188
298431
|
};
|
|
298189
|
-
Orchestrator =
|
|
298432
|
+
Orchestrator = _ts_decorate3([
|
|
298190
298433
|
creatable()
|
|
298191
298434
|
], Orchestrator);
|
|
298192
298435
|
|
|
@@ -298551,6 +298794,10 @@ async function getServer$3(params) {
|
|
|
298551
298794
|
node,
|
|
298552
298795
|
chainId
|
|
298553
298796
|
});
|
|
298797
|
+
locator.register(SimpleBlockValidationViewer.factory(SimpleBlockValidationViewer.dependencies, {
|
|
298798
|
+
state: validateHydratedBlockState,
|
|
298799
|
+
protocol: validateHydratedBlock
|
|
298800
|
+
}));
|
|
298554
298801
|
if (canUseEvmProvider({
|
|
298555
298802
|
config
|
|
298556
298803
|
})) {
|
|
@@ -298560,12 +298807,12 @@ async function getServer$3(params) {
|
|
|
298560
298807
|
});
|
|
298561
298808
|
const contractAddress = assertEx(config.chain.id, () => "Missing config.chain.chainId");
|
|
298562
298809
|
const contract = IStakedXyoChain__factory.connect(toEthAddress(contractAddress), provider);
|
|
298563
|
-
locator.register(
|
|
298810
|
+
locator.register(EvmStakeEventsViewer.factory(EvmStakeEventsViewer.dependencies, {
|
|
298564
298811
|
contract
|
|
298565
298812
|
}));
|
|
298566
|
-
const stakeEventsViewer = await locator.getInstance(
|
|
298567
|
-
assertEx(await stakeEventsViewer.start(), () => "Failed to start
|
|
298568
|
-
locator.register(
|
|
298813
|
+
const stakeEventsViewer = await locator.getInstance(EvmStakeEventsViewer.defaultMoniker);
|
|
298814
|
+
assertEx(await stakeEventsViewer.start(), () => "Failed to start EvmStakeEventsViewer");
|
|
298815
|
+
locator.register(EvmStakeViewer.factory(EvmStakeViewer.dependencies, {
|
|
298569
298816
|
contract,
|
|
298570
298817
|
stakeEventsViewer
|
|
298571
298818
|
}));
|
|
@@ -298573,6 +298820,9 @@ async function getServer$3(params) {
|
|
|
298573
298820
|
address: asAddress(contractAddress, true),
|
|
298574
298821
|
runner: provider
|
|
298575
298822
|
}));
|
|
298823
|
+
locator.register(SimpleTimeSyncViewer.factory(SimpleTimeSyncViewer.dependencies, {
|
|
298824
|
+
ethProvider: provider
|
|
298825
|
+
}));
|
|
298576
298826
|
}
|
|
298577
298827
|
const apiContext = {
|
|
298578
298828
|
...initContext,
|
|
@@ -298590,14 +298840,29 @@ async function getServer$3(params) {
|
|
|
298590
298840
|
assertEx(await accountBalanceViewer.start(), () => "Failed to start AccountBalanceViewer");
|
|
298591
298841
|
const xyoViewer = await locator.getInstance(XyoViewerMoniker);
|
|
298592
298842
|
assertEx(await xyoViewer.start(), () => "Failed to start XyoViewer");
|
|
298843
|
+
const mempoolViewer = await locator.getInstance(MempoolViewerMoniker);
|
|
298844
|
+
assertEx(await mempoolViewer.start(), () => "Failed to start MempoolViewer");
|
|
298845
|
+
const mempoolRunner = await locator.getInstance(MempoolRunnerMoniker);
|
|
298846
|
+
assertEx(await mempoolRunner.start(), () => "Failed to start MempoolRunner");
|
|
298593
298847
|
console.info(`[API] Current block after initialization: #${blk[0].block} (${blk[0]._hash})`);
|
|
298594
|
-
const
|
|
298848
|
+
const validatorActor = config.mempool.enabled ? void 0 : await ValidatorActor.create({
|
|
298595
298849
|
id: "validator-mempool-server",
|
|
298596
298850
|
account: wallet,
|
|
298597
298851
|
context: locator.context,
|
|
298598
|
-
finalizedArchivist: writableChainArchivist
|
|
298852
|
+
finalizedArchivist: writableChainArchivist,
|
|
298853
|
+
mempoolViewer,
|
|
298854
|
+
blockViewer
|
|
298599
298855
|
});
|
|
298600
|
-
await
|
|
298856
|
+
await validatorActor?.start();
|
|
298857
|
+
const mempoolActor = config.mempool.enabled ? void 0 : await MempoolActor.create({
|
|
298858
|
+
id: "mempool-mempool-server",
|
|
298859
|
+
account: wallet,
|
|
298860
|
+
context: locator.context,
|
|
298861
|
+
mempoolRunner,
|
|
298862
|
+
pendingBlocksArchivist,
|
|
298863
|
+
pendingTransactionsArchivist
|
|
298864
|
+
});
|
|
298865
|
+
await mempoolActor?.start();
|
|
298601
298866
|
const app = await getApp$3(apiContext);
|
|
298602
298867
|
const server = app.listen(port, hostname$3, () => logger?.log(`[API] Server listening at http://${hostname$3}:${port}`));
|
|
298603
298868
|
server.setTimeout(2e4);
|
|
@@ -342442,6 +342707,10 @@ var getApp$1 = /* @__PURE__ */ __name$2((context) => {
|
|
|
342442
342707
|
var hostname$1 = "::";
|
|
342443
342708
|
var getProviderFactoryLocator = /* @__PURE__ */ __name$2((context, finalizedArchivist, pendingTransactionsArchivist, pendingBlocksArchivist) => {
|
|
342444
342709
|
const locator = new ProviderFactoryLocator(context);
|
|
342710
|
+
locator.register(SimpleBlockValidationViewer.factory(SimpleBlockValidationViewer.dependencies, {
|
|
342711
|
+
state: validateHydratedBlockState,
|
|
342712
|
+
protocol: validateHydratedBlock
|
|
342713
|
+
}));
|
|
342445
342714
|
locator.register(SimpleMempoolViewer.factory(SimpleMempoolViewer.dependencies, {
|
|
342446
342715
|
pendingTransactionsArchivist,
|
|
342447
342716
|
pendingBlocksArchivist
|
|
@@ -342513,12 +342782,16 @@ var getServer$1 = /* @__PURE__ */ __name$2(async (context) => {
|
|
|
342513
342782
|
assertEx(await blockViewer.start(), () => "Failed to start BlockViewer");
|
|
342514
342783
|
const blk = await blockViewer.currentBlock();
|
|
342515
342784
|
assertEx(blk, () => "No blocks found after initialization");
|
|
342785
|
+
const mempoolViewer = await locator.getInstance(MempoolViewerMoniker);
|
|
342786
|
+
assertEx(await mempoolViewer.start(), () => "Failed to start MempoolViewer");
|
|
342516
342787
|
console.info(`[Mempool] Current block after initialization: #${blk[0].block} (${blk[0]._hash})`);
|
|
342517
342788
|
const actor = await ValidatorActor.create({
|
|
342518
342789
|
id: "validator-mempool-server",
|
|
342519
342790
|
account: wallet,
|
|
342520
342791
|
context: locator.context,
|
|
342521
|
-
finalizedArchivist: writableChainArchivist
|
|
342792
|
+
finalizedArchivist: writableChainArchivist,
|
|
342793
|
+
blockViewer,
|
|
342794
|
+
mempoolViewer
|
|
342522
342795
|
});
|
|
342523
342796
|
await actor.start();
|
|
342524
342797
|
const app = getApp$1(mempoolContext);
|
|
@@ -350214,7 +350487,7 @@ var waitForHostPort = /* @__PURE__ */ __name((host, port) => {
|
|
|
350214
350487
|
|
|
350215
350488
|
// src/runCLI.ts
|
|
350216
350489
|
var configuration;
|
|
350217
|
-
var version = isDefined("1.19.
|
|
350490
|
+
var version = isDefined("1.19.4") ? "1.19.4" : "unknown";
|
|
350218
350491
|
var getContextFromConfig = /* @__PURE__ */ __name(async (configuration2) => {
|
|
350219
350492
|
const logger = initLogger(configuration2);
|
|
350220
350493
|
const orchestrator = await Orchestrator.create({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/xl1-cli",
|
|
3
|
-
"version": "1.19.
|
|
3
|
+
"version": "1.19.5",
|
|
4
4
|
"description": "XYO Layer One CLI",
|
|
5
5
|
"homepage": "https://xylabs.com",
|
|
6
6
|
"bugs": {
|
|
@@ -75,15 +75,15 @@
|
|
|
75
75
|
"@xyo-network/payload-model": "~5.3.2",
|
|
76
76
|
"@xyo-network/wallet": "~5.3.2",
|
|
77
77
|
"@xyo-network/wallet-model": "~5.3.2",
|
|
78
|
-
"@xyo-network/xl1-cli-lib": "~1.19.
|
|
79
|
-
"@xyo-network/xl1-sdk": "~1.
|
|
78
|
+
"@xyo-network/xl1-cli-lib": "~1.19.5",
|
|
79
|
+
"@xyo-network/xl1-sdk": "~1.21.10",
|
|
80
80
|
"async-mutex": "~0.5.0",
|
|
81
81
|
"dotenv": "~17.2.3",
|
|
82
82
|
"eslint": "^9.39.2",
|
|
83
83
|
"ethers": "^6.16.0",
|
|
84
84
|
"nodemon": "~3.1.11",
|
|
85
85
|
"rimraf": "~6.1.2",
|
|
86
|
-
"rollup": "~4.57.
|
|
86
|
+
"rollup": "~4.57.1",
|
|
87
87
|
"typescript": "~5.9.3",
|
|
88
88
|
"vitest": "~4.0.18",
|
|
89
89
|
"vitest-mock-extended": "~3.1.0",
|