@xyo-network/chain-sdk 5.2.2 → 5.2.4
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/browser/modules/ethereum/indexing/index.d.ts +1 -2
- package/dist/browser/modules/ethereum/indexing/index.d.ts.map +1 -1
- package/dist/browser/modules/services/simple/block/runner/SimpleBlockRunner.d.ts +5 -0
- package/dist/browser/modules/services/simple/block/runner/SimpleBlockRunner.d.ts.map +1 -1
- package/dist/browser/modules/services/simple/block/runner/SimpleBlockRunnerInstrumentation.d.ts +13 -0
- package/dist/browser/modules/services/simple/block/runner/SimpleBlockRunnerInstrumentation.d.ts.map +1 -0
- package/dist/browser/modules/services/simple/block/runner/index.d.ts +1 -0
- package/dist/browser/modules/services/simple/block/runner/index.d.ts.map +1 -1
- package/dist/neutral/ethereum.mjs +11 -365
- package/dist/neutral/ethereum.mjs.map +4 -4
- package/dist/neutral/modules/ethereum/indexing/index.d.ts +1 -2
- package/dist/neutral/modules/ethereum/indexing/index.d.ts.map +1 -1
- package/dist/neutral/modules/services/simple/block/runner/SimpleBlockRunner.d.ts +5 -0
- package/dist/neutral/modules/services/simple/block/runner/SimpleBlockRunner.d.ts.map +1 -1
- package/dist/neutral/modules/services/simple/block/runner/SimpleBlockRunnerInstrumentation.d.ts +13 -0
- package/dist/neutral/modules/services/simple/block/runner/SimpleBlockRunnerInstrumentation.d.ts.map +1 -0
- package/dist/neutral/modules/services/simple/block/runner/index.d.ts +1 -0
- package/dist/neutral/modules/services/simple/block/runner/index.d.ts.map +1 -1
- package/dist/neutral/services.mjs +45 -3
- package/dist/neutral/services.mjs.map +3 -3
- package/dist/node/modules/ethereum/indexing/index.d.ts +1 -2
- package/dist/node/modules/ethereum/indexing/index.d.ts.map +1 -1
- package/dist/node/modules/services/simple/block/runner/SimpleBlockRunner.d.ts +5 -0
- package/dist/node/modules/services/simple/block/runner/SimpleBlockRunner.d.ts.map +1 -1
- package/dist/node/modules/services/simple/block/runner/SimpleBlockRunnerInstrumentation.d.ts +13 -0
- package/dist/node/modules/services/simple/block/runner/SimpleBlockRunnerInstrumentation.d.ts.map +1 -0
- package/dist/node/modules/services/simple/block/runner/index.d.ts +1 -0
- package/dist/node/modules/services/simple/block/runner/index.d.ts.map +1 -1
- package/package.json +11 -10
- package/dist/browser/modules/ethereum/indexing/RestStakeEventsViewer.d.ts +0 -52
- package/dist/browser/modules/ethereum/indexing/RestStakeEventsViewer.d.ts.map +0 -1
- package/dist/browser/modules/ethereum/indexing/RestStakeViewer.d.ts +0 -60
- package/dist/browser/modules/ethereum/indexing/RestStakeViewer.d.ts.map +0 -1
- package/dist/neutral/modules/ethereum/indexing/RestStakeEventsViewer.d.ts +0 -52
- package/dist/neutral/modules/ethereum/indexing/RestStakeEventsViewer.d.ts.map +0 -1
- package/dist/neutral/modules/ethereum/indexing/RestStakeViewer.d.ts +0 -60
- package/dist/neutral/modules/ethereum/indexing/RestStakeViewer.d.ts.map +0 -1
- package/dist/node/modules/ethereum/indexing/RestStakeEventsViewer.d.ts +0 -52
- package/dist/node/modules/ethereum/indexing/RestStakeEventsViewer.d.ts.map +0 -1
- package/dist/node/modules/ethereum/indexing/RestStakeViewer.d.ts +0 -60
- package/dist/node/modules/ethereum/indexing/RestStakeViewer.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/modules/ethereum/indexing/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/modules/ethereum/indexing/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,+BAA+B,EAC/B,eAAe,EACf,yBAAyB,GAC1B,MAAM,sBAAsB,CAAA"}
|
|
@@ -4,6 +4,7 @@ import type { AccountBalanceViewer, BlockBoundWitness, BlockRewardViewer, BlockR
|
|
|
4
4
|
import { AbstractCreatableProvider } from '@xyo-network/xl1-sdk';
|
|
5
5
|
import type { BlockRewardDiviner } from '../../../../modules/index.js';
|
|
6
6
|
import type { OffendingTxReason } from './identifyOffendingTransactions.js';
|
|
7
|
+
import type { SimpleBlockRunnerInstrumentation } from './SimpleBlockRunnerInstrumentation.js';
|
|
7
8
|
/** Why and at which build height a transaction was excluded from future candidates. */
|
|
8
9
|
interface ExcludedTransactionEntry {
|
|
9
10
|
excludedAtBlock: number;
|
|
@@ -34,6 +35,8 @@ export interface SimpleBlockRunnerParams extends CreatableProviderParams {
|
|
|
34
35
|
account?: AccountInstance;
|
|
35
36
|
disableIntentRedeclaration?: boolean;
|
|
36
37
|
heartbeatInterval?: number;
|
|
38
|
+
/** Optional process-local timing observer; defaults to the observer registered on context. */
|
|
39
|
+
instrumentation?: SimpleBlockRunnerInstrumentation;
|
|
37
40
|
rejectedTransactionsArchivist?: ArchivistInstance;
|
|
38
41
|
/** Defaults to `config.rewardAddress` (producer config), then the signing account's address. */
|
|
39
42
|
rewardAddress?: Address;
|
|
@@ -103,6 +106,7 @@ export declare class SimpleBlockRunner extends AbstractCreatableProvider<SimpleB
|
|
|
103
106
|
protected get blockValidationViewer(): BlockValidationViewer;
|
|
104
107
|
protected get finalizationViewer(): FinalizationViewer;
|
|
105
108
|
protected get heartbeatInterval(): number;
|
|
109
|
+
protected get instrumentation(): SimpleBlockRunnerInstrumentation | undefined;
|
|
106
110
|
protected get mempoolViewer(): MempoolViewer;
|
|
107
111
|
protected get producerTuning(): {
|
|
108
112
|
disableIntentRedeclaration?: boolean | undefined;
|
|
@@ -183,6 +187,7 @@ export declare class SimpleBlockRunner extends AbstractCreatableProvider<SimpleB
|
|
|
183
187
|
* @returns True if a heartbeat is required, false otherwise
|
|
184
188
|
*/
|
|
185
189
|
private heartbeatRequired;
|
|
190
|
+
private instrument;
|
|
186
191
|
private isWithinRejectedBuildBackoff;
|
|
187
192
|
/**
|
|
188
193
|
* The hash of this producer's own earlier candidate at the same height and parent, if any.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SimpleBlockRunner.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/services/simple/block/runner/SimpleBlockRunner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAAQ,UAAU,EAC1B,MAAM,iBAAiB,CAAA;AAKxB,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EAAE,YAAY,EAChC,MAAM,kBAAkB,CAAA;AAKzB,OAAO,KAAK,EACV,oBAAoB,EAAuB,iBAAiB,EACxC,iBAAiB,EAAE,WAAW,EAAE,qBAAqB,EACzE,gBAAgB,EAAE,uBAAuB,EACzC,qBAAqB,EACrB,kBAAkB,EAClB,oCAAoC,EAAgC,aAAa,EACjF,mCAAmC,EACnC,+BAA+B,EAClB,cAAc,EAAE,QAAQ,EACtC,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,yBAAyB,EAQ1B,MAAM,sBAAsB,CAAA;AAE7B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAKlD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;
|
|
1
|
+
{"version":3,"file":"SimpleBlockRunner.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/services/simple/block/runner/SimpleBlockRunner.ts"],"names":[],"mappings":"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"}
|
package/dist/browser/modules/services/simple/block/runner/SimpleBlockRunnerInstrumentation.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const SIMPLE_BLOCK_RUNNER_INSTRUMENTATION_SINGLETON = "simpleBlockRunnerInstrumentation";
|
|
2
|
+
export declare const SimpleBlockRunnerTimingNames: readonly ["mempoolPendingBlocksFetch", "mempoolPendingTransactionsFetch"];
|
|
3
|
+
export type SimpleBlockRunnerTimingName = typeof SimpleBlockRunnerTimingNames[number];
|
|
4
|
+
/** Optional process-local observer for timings owned by SimpleBlockRunner. */
|
|
5
|
+
export interface SimpleBlockRunnerInstrumentation {
|
|
6
|
+
recordTiming(name: SimpleBlockRunnerTimingName, durationMs: number): void;
|
|
7
|
+
}
|
|
8
|
+
export interface SimpleBlockRunnerInstrumentationContext {
|
|
9
|
+
readonly singletons: Record<string, unknown>;
|
|
10
|
+
}
|
|
11
|
+
export declare function registerSimpleBlockRunnerInstrumentation(context: SimpleBlockRunnerInstrumentationContext, instrumentation: SimpleBlockRunnerInstrumentation): void;
|
|
12
|
+
export declare function tryGetSimpleBlockRunnerInstrumentation(context: SimpleBlockRunnerInstrumentationContext): SimpleBlockRunnerInstrumentation | undefined;
|
|
13
|
+
//# sourceMappingURL=SimpleBlockRunnerInstrumentation.d.ts.map
|
package/dist/browser/modules/services/simple/block/runner/SimpleBlockRunnerInstrumentation.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SimpleBlockRunnerInstrumentation.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/services/simple/block/runner/SimpleBlockRunnerInstrumentation.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,6CAA6C,qCAAqC,CAAA;AAE/F,eAAO,MAAM,4BAA4B,2EAG/B,CAAA;AAEV,MAAM,MAAM,2BAA2B,GAAG,OAAO,4BAA4B,CAAC,MAAM,CAAC,CAAA;AAErF,8EAA8E;AAC9E,MAAM,WAAW,gCAAgC;IAC/C,YAAY,CAAC,IAAI,EAAE,2BAA2B,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1E;AAED,MAAM,WAAW,uCAAuC;IACtD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC7C;AAED,wBAAgB,wCAAwC,CACtD,OAAO,EAAE,uCAAuC,EAChD,eAAe,EAAE,gCAAgC,GAChD,IAAI,CAEN;AAED,wBAAgB,sCAAsC,CACpD,OAAO,EAAE,uCAAuC,GAC/C,gCAAgC,GAAG,SAAS,CAI9C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/services/simple/block/runner/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAA;AAC9C,cAAc,wBAAwB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/services/simple/block/runner/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAA;AAC9C,cAAc,wBAAwB,CAAA;AACtC,cAAc,uCAAuC,CAAA"}
|
|
@@ -441,370 +441,16 @@ var getDefaultGasConfig = () => {
|
|
|
441
441
|
};
|
|
442
442
|
};
|
|
443
443
|
|
|
444
|
-
// src/modules/ethereum/indexing/
|
|
444
|
+
// src/modules/ethereum/indexing/index.ts
|
|
445
445
|
import {
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
} from "@ariestools/sdk";
|
|
451
|
-
import { IAddressStakingEvents__factory } from "@xyo-network/typechain";
|
|
452
|
-
import {
|
|
453
|
-
AbstractCreatableProvider,
|
|
454
|
-
asAttoXL1,
|
|
455
|
-
asEvmEventIndexFrame,
|
|
456
|
-
asEvmEventIndexHead,
|
|
457
|
-
asEvmEventIndexManifest,
|
|
458
|
-
creatableProvider,
|
|
459
|
-
evmEventIndexFramePath,
|
|
460
|
-
evmEventIndexHeadPath,
|
|
461
|
-
evmEventIndexManifestPath,
|
|
462
|
-
evmEventIndexTailPath,
|
|
463
|
-
StakeEventsViewerMoniker
|
|
464
|
-
} from "@xyo-network/xl1-sdk";
|
|
465
|
-
import { Interface } from "ethers";
|
|
466
|
-
import { z } from "zod";
|
|
467
|
-
var STAKE_EVENT_NAMES = /* @__PURE__ */ new Set(["StakeAdded", "StakeRemoved", "StakeWithdrawn"]);
|
|
468
|
-
var DEFAULT_HEAD_POLL_INTERVAL_MS = 5e3;
|
|
469
|
-
var MIN_HEAD_POLL_INTERVAL_MS = 5e3;
|
|
470
|
-
var RestStakeEventsViewerOptionsZod = z.object({ headPollIntervalMs: z.coerce.number().optional() });
|
|
471
|
-
var RestStakeEventsViewer = class extends AbstractCreatableProvider {
|
|
472
|
-
moniker = RestStakeEventsViewer.defaultMoniker;
|
|
473
|
-
completeFrames = /* @__PURE__ */ new Map();
|
|
474
|
-
contractInterface = new Interface(IAddressStakingEvents__factory.abi);
|
|
475
|
-
currentHead;
|
|
476
|
-
headPollIntervalMs = DEFAULT_HEAD_POLL_INTERVAL_MS;
|
|
477
|
-
lastSuccessfulSyncAt;
|
|
478
|
-
manifestPromise;
|
|
479
|
-
positionCountCheckpoints = [];
|
|
480
|
-
stakeEventCache = [];
|
|
481
|
-
stakeEventsByPosition = /* @__PURE__ */ new Map();
|
|
482
|
-
syncPromise;
|
|
483
|
-
tailFrame;
|
|
484
|
-
get address() {
|
|
485
|
-
return toEthAddress4(assertEx5(this.config.chain.id, () => "RestStakeEventsViewer requires config.chain.id (the staking contract address)"));
|
|
486
|
-
}
|
|
487
|
-
get eventIndexBaseUrl() {
|
|
488
|
-
const connection = RestStakeEventsViewer.requireBoundConnection(this.config);
|
|
489
|
-
const baseUrl = assertEx5(
|
|
490
|
-
connection.config.type === "rest" ? connection.config.baseUrl : void 0,
|
|
491
|
-
() => `Connection "${connection.name}" bound to RestStakeEventsViewer requires a rest baseUrl`
|
|
492
|
-
);
|
|
493
|
-
return baseUrl.replace(/\/+$/, "");
|
|
494
|
-
}
|
|
495
|
-
get fetchFn() {
|
|
496
|
-
return this.context.fetchFn ?? fetch.bind(globalThis);
|
|
497
|
-
}
|
|
498
|
-
/** Creates the provider instance after its configuration has resolved. */
|
|
499
|
-
async createHandler() {
|
|
500
|
-
await super.createHandler();
|
|
501
|
-
RestStakeEventsViewer.requireBoundConnection(this.config);
|
|
502
|
-
const { headPollIntervalMs } = RestStakeEventsViewerOptionsZod.parse(this.config.options);
|
|
503
|
-
if (headPollIntervalMs !== void 0) {
|
|
504
|
-
assertEx5(headPollIntervalMs >= MIN_HEAD_POLL_INTERVAL_MS, () => `headPollIntervalMs must be at least ${MIN_HEAD_POLL_INTERVAL_MS}ms`);
|
|
505
|
-
}
|
|
506
|
-
this.headPollIntervalMs = headPollIntervalMs ?? DEFAULT_HEAD_POLL_INTERVAL_MS;
|
|
507
|
-
}
|
|
508
|
-
async positionCount(range) {
|
|
509
|
-
await this.sync();
|
|
510
|
-
this.assertRangeAvailable(range);
|
|
511
|
-
if (range[0] === 0) return this.positionCountThrough(range[1]);
|
|
512
|
-
const events = this.matchingStakeEvents(range);
|
|
513
|
-
return events.reduce((max, event) => Math.max(max, event.args.id), -1) + 1;
|
|
514
|
-
}
|
|
515
|
-
async stakeEvents(range = [0, "latest"], filter) {
|
|
516
|
-
await this.sync();
|
|
517
|
-
this.assertRangeAvailable(range);
|
|
518
|
-
return this.matchingStakeEvents(range, filter);
|
|
519
|
-
}
|
|
520
|
-
assertRangeAvailable(range) {
|
|
521
|
-
const head = assertEx5(this.currentHead, () => "EVM event index head is unavailable");
|
|
522
|
-
assertEx5(
|
|
523
|
-
range[1] === "latest" || range[1] <= head.block,
|
|
524
|
-
() => `Stake-event range ends at ${range[1]}, beyond EVM event index head ${head.block}`
|
|
525
|
-
);
|
|
526
|
-
}
|
|
527
|
-
decodeIndexedStakeEvents() {
|
|
528
|
-
const frames = [...this.completeFrames.entries()].sort(([a], [b]) => a - b).map(([, frame]) => frame);
|
|
529
|
-
const logs = [...frames, ...this.tailFrame === void 0 ? [] : [this.tailFrame]].flatMap((frame) => frame.logs).sort((a, b) => a.blockNumber - b.blockNumber || a.transactionIndex - b.transactionIndex || a.index - b.index);
|
|
530
|
-
return logs.flatMap((log) => {
|
|
531
|
-
const event = this.stakeEventFromLog(log);
|
|
532
|
-
return event === void 0 ? [] : [event];
|
|
533
|
-
});
|
|
534
|
-
}
|
|
535
|
-
async fetchJson(path) {
|
|
536
|
-
const response = await this.fetchFn(`${this.eventIndexBaseUrl}/${path}`);
|
|
537
|
-
assertEx5(response.ok, () => `EVM event index request failed [${response.status}] for ${path}`);
|
|
538
|
-
return await response.json();
|
|
539
|
-
}
|
|
540
|
-
async getManifest() {
|
|
541
|
-
this.manifestPromise ??= (async () => {
|
|
542
|
-
const manifest = asEvmEventIndexManifest(await this.fetchJson(evmEventIndexManifestPath(this.address)), true);
|
|
543
|
-
assertEx5(manifest.address.toLowerCase() === this.address.toLowerCase(), () => "EVM event index manifest address mismatch");
|
|
544
|
-
return manifest;
|
|
545
|
-
})();
|
|
546
|
-
return await this.manifestPromise;
|
|
547
|
-
}
|
|
548
|
-
indexStakeEvents(events) {
|
|
549
|
-
this.stakeEventCache = events;
|
|
550
|
-
this.positionCountCheckpoints = [];
|
|
551
|
-
this.stakeEventsByPosition.clear();
|
|
552
|
-
let maxPositionId = -1;
|
|
553
|
-
for (const event of events) {
|
|
554
|
-
const positionEvents = this.stakeEventsByPosition.get(event.args.id) ?? [];
|
|
555
|
-
positionEvents.push(event);
|
|
556
|
-
this.stakeEventsByPosition.set(event.args.id, positionEvents);
|
|
557
|
-
if (event.args.id > maxPositionId) {
|
|
558
|
-
maxPositionId = event.args.id;
|
|
559
|
-
this.positionCountCheckpoints.push({ count: maxPositionId + 1, time: event.time });
|
|
560
|
-
}
|
|
561
|
-
}
|
|
562
|
-
}
|
|
563
|
-
// eslint-disable-next-line complexity
|
|
564
|
-
matchesFilter(event, range, filter) {
|
|
565
|
-
if (range[1] !== "latest" && event.time > range[1]) return false;
|
|
566
|
-
if (event.time < range[0]) return false;
|
|
567
|
-
if (isDefined3(filter?.name) && event.name !== filter.name) return false;
|
|
568
|
-
if (isDefined3(filter?.args?.id) && event.args.id !== filter.args.id) return false;
|
|
569
|
-
if (isDefined3(filter?.args?.staked) && event.args.staked !== filter.args.staked) return false;
|
|
570
|
-
if (isDefined3(filter?.args?.staker) && event.args.staker !== filter.args.staker) return false;
|
|
571
|
-
return true;
|
|
572
|
-
}
|
|
573
|
-
matchingStakeEvents(range, filter) {
|
|
574
|
-
const positionId = filter?.args?.id;
|
|
575
|
-
const candidates = isDefined3(positionId) ? this.stakeEventsByPosition.get(positionId) ?? [] : this.stakeEventCache;
|
|
576
|
-
return candidates.filter((event) => this.matchesFilter(event, range, filter));
|
|
577
|
-
}
|
|
578
|
-
positionCountThrough(end) {
|
|
579
|
-
if (end === "latest") return this.positionCountCheckpoints.at(-1)?.count ?? 0;
|
|
580
|
-
let low = 0;
|
|
581
|
-
let high = this.positionCountCheckpoints.length;
|
|
582
|
-
while (low < high) {
|
|
583
|
-
const middle = Math.floor((low + high) / 2);
|
|
584
|
-
if (this.positionCountCheckpoints[middle].time <= end) {
|
|
585
|
-
low = middle + 1;
|
|
586
|
-
} else {
|
|
587
|
-
high = middle;
|
|
588
|
-
}
|
|
589
|
-
}
|
|
590
|
-
return this.positionCountCheckpoints[low - 1]?.count ?? 0;
|
|
591
|
-
}
|
|
592
|
-
stakeEventFromLog(log) {
|
|
593
|
-
const parsed = this.contractInterface.parseLog({ data: log.data, topics: log.topics });
|
|
594
|
-
if (parsed === null || !STAKE_EVENT_NAMES.has(parsed.name)) return;
|
|
595
|
-
const [staked, staker, id, amount] = parsed.args;
|
|
596
|
-
return {
|
|
597
|
-
name: parsed.name,
|
|
598
|
-
args: {
|
|
599
|
-
amount: asAttoXL1(amount),
|
|
600
|
-
id: Number(id),
|
|
601
|
-
staked: toAddress2(staked),
|
|
602
|
-
staker: toAddress2(staker)
|
|
603
|
-
},
|
|
604
|
-
time: log.blockNumber
|
|
605
|
-
};
|
|
606
|
-
}
|
|
607
|
-
async sync() {
|
|
608
|
-
const now = Date.now();
|
|
609
|
-
const elapsed = this.lastSuccessfulSyncAt === void 0 ? void 0 : now - this.lastSuccessfulSyncAt;
|
|
610
|
-
if (this.currentHead !== void 0 && elapsed !== void 0 && elapsed >= 0 && elapsed < this.headPollIntervalMs) return;
|
|
611
|
-
this.syncPromise ??= this.syncFromHead().then(() => {
|
|
612
|
-
this.lastSuccessfulSyncAt = Date.now();
|
|
613
|
-
}).finally(() => {
|
|
614
|
-
this.syncPromise = void 0;
|
|
615
|
-
});
|
|
616
|
-
await this.syncPromise;
|
|
617
|
-
}
|
|
618
|
-
async syncFromHead() {
|
|
619
|
-
const manifest = await this.getManifest();
|
|
620
|
-
const head = asEvmEventIndexHead(await this.fetchJson(evmEventIndexHeadPath(this.address)), true);
|
|
621
|
-
assertEx5(head.address.toLowerCase() === this.address.toLowerCase(), () => "EVM event index head address mismatch");
|
|
622
|
-
assertEx5(head.chainId === manifest.chainId, () => "EVM event index chain mismatch");
|
|
623
|
-
if (this.currentHead?.block === head.block && this.currentHead.hash === head.hash) return;
|
|
624
|
-
if (this.currentHead !== void 0 && (head.block < this.currentHead.block || head.block === this.currentHead.block && head.hash !== this.currentHead.hash)) {
|
|
625
|
-
this.completeFrames.clear();
|
|
626
|
-
this.tailFrame = void 0;
|
|
627
|
-
}
|
|
628
|
-
const indexedBlockCount = Math.max(0, head.block - manifest.deploymentBlock + 1);
|
|
629
|
-
const completeFrameCount = Math.floor(indexedBlockCount / manifest.frameSize);
|
|
630
|
-
const missingFrameIndexes = Array.from({ length: completeFrameCount }, (_, index) => index).filter((index) => !this.completeFrames.has(index));
|
|
631
|
-
await Promise.all(missingFrameIndexes.map(async (index) => {
|
|
632
|
-
const frame = asEvmEventIndexFrame(await this.fetchJson(evmEventIndexFramePath(this.address, index)), true);
|
|
633
|
-
const expectedFrom = manifest.deploymentBlock + index * manifest.frameSize;
|
|
634
|
-
assertEx5(frame.fromBlock === expectedFrom, () => `EVM event index frame ${index} starts at the wrong block`);
|
|
635
|
-
assertEx5(frame.toBlock === expectedFrom + manifest.frameSize - 1, () => `EVM event index frame ${index} is incomplete`);
|
|
636
|
-
this.completeFrames.set(index, frame);
|
|
637
|
-
}));
|
|
638
|
-
const tailStart = manifest.deploymentBlock + completeFrameCount * manifest.frameSize;
|
|
639
|
-
this.tailFrame = tailStart <= head.block ? asEvmEventIndexFrame(await this.fetchJson(`${evmEventIndexTailPath(this.address)}?head=${head.hash}`), true) : void 0;
|
|
640
|
-
if (this.tailFrame !== void 0) {
|
|
641
|
-
assertEx5(this.tailFrame.fromBlock === tailStart, () => "EVM event index tail starts at the wrong block");
|
|
642
|
-
assertEx5(this.tailFrame.toBlock === head.block, () => "EVM event index tail is stale relative to its head");
|
|
643
|
-
}
|
|
644
|
-
this.indexStakeEvents(this.decodeIndexedStakeEvents());
|
|
645
|
-
this.currentHead = head;
|
|
646
|
-
}
|
|
647
|
-
};
|
|
648
|
-
__publicField(RestStakeEventsViewer, "connectionTypes", ["rest"]);
|
|
649
|
-
__publicField(RestStakeEventsViewer, "defaultMoniker", StakeEventsViewerMoniker);
|
|
650
|
-
__publicField(RestStakeEventsViewer, "dependencies", []);
|
|
651
|
-
__publicField(RestStakeEventsViewer, "monikers", [StakeEventsViewerMoniker]);
|
|
652
|
-
__publicField(RestStakeEventsViewer, "surface", "node");
|
|
653
|
-
RestStakeEventsViewer = __decorateClass([
|
|
654
|
-
creatableProvider()
|
|
655
|
-
], RestStakeEventsViewer);
|
|
656
|
-
|
|
657
|
-
// src/modules/ethereum/indexing/RestStakeViewer.ts
|
|
658
|
-
import { assertEx as assertEx6, toAddress as toAddress3 } from "@ariestools/sdk";
|
|
659
|
-
import {
|
|
660
|
-
AbstractCreatableProvider as AbstractCreatableProvider2,
|
|
661
|
-
ChainContractViewerMoniker,
|
|
662
|
-
creatableProvider as creatableProvider2,
|
|
663
|
-
StakeEventsViewerMoniker as StakeEventsViewerMoniker2,
|
|
664
|
-
StakeViewerMoniker
|
|
446
|
+
RestStakeEventsViewer,
|
|
447
|
+
RestStakeEventsViewerOptionsZod,
|
|
448
|
+
RestStakeViewer,
|
|
449
|
+
RestStakeViewerOptionsZod
|
|
665
450
|
} from "@xyo-network/xl1-sdk";
|
|
666
|
-
import { z as z2 } from "zod";
|
|
667
|
-
var DEFAULT_REFRESH_INTERVAL_MS = 5e3;
|
|
668
|
-
var MIN_REFRESH_INTERVAL_MS = 5e3;
|
|
669
|
-
var RestStakeViewerOptionsZod = z2.object({ refreshIntervalMs: z2.coerce.number().optional() });
|
|
670
|
-
var RestStakeViewer = class extends AbstractCreatableProvider2 {
|
|
671
|
-
moniker = RestStakeViewer.defaultMoniker;
|
|
672
|
-
_chainContractViewer;
|
|
673
|
-
_stakeEventsViewer;
|
|
674
|
-
lastSuccessfulSyncAt;
|
|
675
|
-
positionIndex = /* @__PURE__ */ new Map();
|
|
676
|
-
positionsByStaked = /* @__PURE__ */ new Map();
|
|
677
|
-
positionsByStaker = /* @__PURE__ */ new Map();
|
|
678
|
-
refreshIntervalMs = DEFAULT_REFRESH_INTERVAL_MS;
|
|
679
|
-
syncPromise;
|
|
680
|
-
/** Returns the finalized stake-event source used to materialize positions. */
|
|
681
|
-
get stakeEvents() {
|
|
682
|
-
return this._stakeEventsViewer;
|
|
683
|
-
}
|
|
684
|
-
/** Returns active finalized stake positions. */
|
|
685
|
-
async activeStakes() {
|
|
686
|
-
await this.sync();
|
|
687
|
-
return this.positionIndex.values().filter((position) => position.removeBlock === 0 && position.withdrawBlock === 0).toArray();
|
|
688
|
-
}
|
|
689
|
-
/** Creates the provider after its REST binding and dependencies resolve. */
|
|
690
|
-
async createHandler() {
|
|
691
|
-
await super.createHandler();
|
|
692
|
-
RestStakeViewer.requireBoundConnection(this.config);
|
|
693
|
-
const { refreshIntervalMs } = RestStakeViewerOptionsZod.parse(this.config.options);
|
|
694
|
-
if (refreshIntervalMs !== void 0) {
|
|
695
|
-
assertEx6(refreshIntervalMs >= MIN_REFRESH_INTERVAL_MS, () => `refreshIntervalMs must be at least ${MIN_REFRESH_INTERVAL_MS}ms`);
|
|
696
|
-
}
|
|
697
|
-
this.refreshIntervalMs = refreshIntervalMs ?? DEFAULT_REFRESH_INTERVAL_MS;
|
|
698
|
-
this._chainContractViewer = await this.locator.getInstance(ChainContractViewerMoniker);
|
|
699
|
-
this._stakeEventsViewer = await this.locator.getInstance(StakeEventsViewerMoniker2);
|
|
700
|
-
}
|
|
701
|
-
/** Returns the configured chain's withdrawal delay. */
|
|
702
|
-
async minWithdrawalBlocks() {
|
|
703
|
-
return await this._chainContractViewer.minWithdrawalBlocks();
|
|
704
|
-
}
|
|
705
|
-
/** Returns finalized positions that have been removed but not withdrawn. */
|
|
706
|
-
async removedStakes() {
|
|
707
|
-
await this.sync();
|
|
708
|
-
return this.positionIndex.values().filter((position) => position.removeBlock !== 0 && position.withdrawBlock === 0).toArray();
|
|
709
|
-
}
|
|
710
|
-
/** Returns the configured rewards contract address. */
|
|
711
|
-
async rewardsContract() {
|
|
712
|
-
return toAddress3(await this._chainContractViewer.rewardsContract());
|
|
713
|
-
}
|
|
714
|
-
/** Returns a finalized position by its contract id. */
|
|
715
|
-
async stakeById(id) {
|
|
716
|
-
await this.sync();
|
|
717
|
-
return assertEx6(this.positionIndex.get(id), () => `RestStakeViewer: position ${id} not found in finalized event index`);
|
|
718
|
-
}
|
|
719
|
-
/** Returns a staker's finalized position by its contract slot. */
|
|
720
|
-
async stakeByStaker(staker, slot) {
|
|
721
|
-
await this.sync();
|
|
722
|
-
const position = this.positionsByStaker.get(toAddress3(staker))?.at(slot);
|
|
723
|
-
return assertEx6(position, () => `RestStakeViewer: staker ${staker} has no finalized position at slot ${slot}`);
|
|
724
|
-
}
|
|
725
|
-
/** Returns finalized positions added for an address in the supplied EVM block range. */
|
|
726
|
-
async stakesByStaked(staked, range = [0, void 0]) {
|
|
727
|
-
await this.sync();
|
|
728
|
-
return this.positionsInRange(this.positionsByStaked.get(toAddress3(staked)) ?? [], range);
|
|
729
|
-
}
|
|
730
|
-
/** Returns finalized positions added by a staker in the supplied EVM block range. */
|
|
731
|
-
async stakesByStaker(staker, range = [0, void 0]) {
|
|
732
|
-
await this.sync();
|
|
733
|
-
return this.positionsInRange(this.positionsByStaker.get(toAddress3(staker)) ?? [], range);
|
|
734
|
-
}
|
|
735
|
-
/** Returns the configured staking-token address. */
|
|
736
|
-
async stakingTokenAddress() {
|
|
737
|
-
return toAddress3(await this._chainContractViewer.stakingTokenAddress());
|
|
738
|
-
}
|
|
739
|
-
/** Returns finalized positions that have completed withdrawal. */
|
|
740
|
-
async withdrawnStakes() {
|
|
741
|
-
await this.sync();
|
|
742
|
-
return this.positionIndex.values().filter((position) => position.removeBlock !== 0 && position.withdrawBlock !== 0).toArray();
|
|
743
|
-
}
|
|
744
|
-
applyEvent(index, event) {
|
|
745
|
-
if (event.name === "StakeAdded") {
|
|
746
|
-
index.set(event.args.id, {
|
|
747
|
-
id: event.args.id,
|
|
748
|
-
staked: toAddress3(event.args.staked),
|
|
749
|
-
staker: toAddress3(event.args.staker),
|
|
750
|
-
amount: event.args.amount,
|
|
751
|
-
addBlock: event.time,
|
|
752
|
-
removeBlock: 0,
|
|
753
|
-
withdrawBlock: 0
|
|
754
|
-
});
|
|
755
|
-
return;
|
|
756
|
-
}
|
|
757
|
-
const position = assertEx6(index.get(event.args.id), () => `RestStakeViewer: ${event.name} precedes StakeAdded for position ${event.args.id}`);
|
|
758
|
-
index.set(event.args.id, {
|
|
759
|
-
...position,
|
|
760
|
-
...event.name === "StakeRemoved" ? { removeBlock: event.time } : { withdrawBlock: event.time }
|
|
761
|
-
});
|
|
762
|
-
}
|
|
763
|
-
positionsInRange(positions, range) {
|
|
764
|
-
const [fromBlock, configuredToBlock] = range;
|
|
765
|
-
const toBlock = configuredToBlock ?? Number.MAX_SAFE_INTEGER;
|
|
766
|
-
return positions.filter((position) => position.addBlock >= fromBlock && position.addBlock <= toBlock);
|
|
767
|
-
}
|
|
768
|
-
rebuildPositionIndex(events) {
|
|
769
|
-
const positionIndex = /* @__PURE__ */ new Map();
|
|
770
|
-
for (const event of events.toSorted((left, right) => left.time - right.time)) {
|
|
771
|
-
this.applyEvent(positionIndex, event);
|
|
772
|
-
}
|
|
773
|
-
const positionsByStaked = /* @__PURE__ */ new Map();
|
|
774
|
-
const positionsByStaker = /* @__PURE__ */ new Map();
|
|
775
|
-
for (const position of positionIndex.values().toArray().toSorted((left, right) => left.id - right.id)) {
|
|
776
|
-
const staked = toAddress3(position.staked);
|
|
777
|
-
const staker = toAddress3(position.staker);
|
|
778
|
-
positionsByStaked.set(staked, [...positionsByStaked.get(staked) ?? [], position]);
|
|
779
|
-
positionsByStaker.set(staker, [...positionsByStaker.get(staker) ?? [], position]);
|
|
780
|
-
}
|
|
781
|
-
this.positionIndex = positionIndex;
|
|
782
|
-
this.positionsByStaked = positionsByStaked;
|
|
783
|
-
this.positionsByStaker = positionsByStaker;
|
|
784
|
-
}
|
|
785
|
-
async sync() {
|
|
786
|
-
const now = Date.now();
|
|
787
|
-
const elapsed = this.lastSuccessfulSyncAt === void 0 ? void 0 : now - this.lastSuccessfulSyncAt;
|
|
788
|
-
if (elapsed !== void 0 && elapsed >= 0 && elapsed < this.refreshIntervalMs) return;
|
|
789
|
-
this.syncPromise ??= Promise.resolve(this.stakeEvents.stakeEvents([0, "latest"])).then((events) => this.rebuildPositionIndex(events)).then(() => {
|
|
790
|
-
this.lastSuccessfulSyncAt = Date.now();
|
|
791
|
-
}).finally(() => {
|
|
792
|
-
this.syncPromise = void 0;
|
|
793
|
-
});
|
|
794
|
-
await this.syncPromise;
|
|
795
|
-
}
|
|
796
|
-
};
|
|
797
|
-
__publicField(RestStakeViewer, "connectionTypes", ["rest"]);
|
|
798
|
-
__publicField(RestStakeViewer, "defaultMoniker", StakeViewerMoniker);
|
|
799
|
-
__publicField(RestStakeViewer, "dependencies", [ChainContractViewerMoniker, StakeEventsViewerMoniker2]);
|
|
800
|
-
__publicField(RestStakeViewer, "monikers", [StakeViewerMoniker]);
|
|
801
|
-
__publicField(RestStakeViewer, "surface", "node");
|
|
802
|
-
RestStakeViewer = __decorateClass([
|
|
803
|
-
creatableProvider2()
|
|
804
|
-
], RestStakeViewer);
|
|
805
451
|
|
|
806
452
|
// src/modules/ethereum/providers/AbstractEvmRunner.ts
|
|
807
|
-
import { assertEx as
|
|
453
|
+
import { assertEx as assertEx5 } from "@ariestools/sdk";
|
|
808
454
|
import { AbstractEvmProvider } from "@xyo-network/xl1-sdk";
|
|
809
455
|
function evmContractRunnerHandleKey(moniker) {
|
|
810
456
|
return `evm-contract-runner:${moniker}`;
|
|
@@ -812,7 +458,7 @@ function evmContractRunnerHandleKey(moniker) {
|
|
|
812
458
|
var AbstractEvmRunner = class extends AbstractEvmProvider {
|
|
813
459
|
_runner;
|
|
814
460
|
get runner() {
|
|
815
|
-
return
|
|
461
|
+
return assertEx5(this._runner, () => "EVM contract runner not initialized");
|
|
816
462
|
}
|
|
817
463
|
/** Creates the provider instance after its dependencies and configuration have resolved. */
|
|
818
464
|
async createHandler() {
|
|
@@ -825,17 +471,17 @@ var AbstractEvmRunner = class extends AbstractEvmProvider {
|
|
|
825
471
|
};
|
|
826
472
|
|
|
827
473
|
// src/modules/ethereum/providers/EvmStakeRunner.ts
|
|
828
|
-
import { toEthAddress as
|
|
474
|
+
import { toEthAddress as toEthAddress4 } from "@ariestools/sdk";
|
|
829
475
|
import { IStakedXyoChain__factory } from "@xyo-network/typechain";
|
|
830
476
|
import {
|
|
831
|
-
creatableProvider
|
|
477
|
+
creatableProvider,
|
|
832
478
|
StakeRunnerMoniker
|
|
833
479
|
} from "@xyo-network/xl1-sdk";
|
|
834
480
|
import { getAddress } from "ethers/address";
|
|
835
481
|
var EvmStakeRunner = class extends AbstractEvmRunner {
|
|
836
482
|
moniker = EvmStakeRunner.defaultMoniker;
|
|
837
483
|
async addStake(staked, amount) {
|
|
838
|
-
const result = await this.contract.addStake(getAddress(
|
|
484
|
+
const result = await this.contract.addStake(getAddress(toEthAddress4(staked)), amount);
|
|
839
485
|
await result.wait();
|
|
840
486
|
return true;
|
|
841
487
|
}
|
|
@@ -859,7 +505,7 @@ __publicField(EvmStakeRunner, "dependencies", []);
|
|
|
859
505
|
__publicField(EvmStakeRunner, "monikers", [StakeRunnerMoniker]);
|
|
860
506
|
__publicField(EvmStakeRunner, "surface", "node");
|
|
861
507
|
EvmStakeRunner = __decorateClass([
|
|
862
|
-
|
|
508
|
+
creatableProvider()
|
|
863
509
|
], EvmStakeRunner);
|
|
864
510
|
export {
|
|
865
511
|
AbstractEvmRunner,
|