@xyo-network/xl1-providers 4.0.6 → 4.0.8
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/SimpleNetworkStakeViewer.d.ts +1 -1
- package/dist/browser/SimpleStepRewards/SimpleStepRewardsByPositionViewer.d.ts +2 -2
- package/dist/browser/SimpleStepRewards/SimpleStepRewardsByPositionViewer.d.ts.map +1 -1
- package/dist/browser/SimpleStepRewards/SimpleStepRewardsByStakerViewer.d.ts +2 -2
- package/dist/browser/SimpleStepRewards/SimpleStepRewardsByStakerViewer.d.ts.map +1 -1
- package/dist/browser/SimpleStepRewards/SimpleStepRewardsByStepViewer.d.ts +2 -2
- package/dist/browser/SimpleStepRewards/SimpleStepRewardsByStepViewer.d.ts.map +1 -1
- package/dist/browser/SimpleStepRewards/SimpleStepRewardsTotalViewer.d.ts +1 -1
- package/dist/browser/SimpleStepRewards/SimpleStepRewardsTotalViewer.d.ts.map +1 -1
- package/dist/browser/SimpleStepViewer.d.ts +2 -2
- package/dist/browser/SimpleStepViewer.d.ts.map +1 -1
- package/dist/browser/SimpleXyoViewer.d.ts +131 -131
- package/dist/browser/SimpleXyoViewer.d.ts.map +1 -1
- package/dist/browser/buildSimpleXyoSigner.d.ts +8 -0
- package/dist/browser/buildSimpleXyoSigner.d.ts.map +1 -0
- package/dist/browser/index.d.ts +1 -3
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.mjs +973 -1000
- package/dist/browser/index.mjs.map +4 -4
- package/dist/browser/locators/basicRestViewerLocator.d.ts +25 -0
- package/dist/browser/locators/basicRestViewerLocator.d.ts.map +1 -0
- package/dist/browser/locators/index.d.ts +1 -2
- package/dist/browser/locators/index.d.ts.map +1 -1
- package/dist/browser/locators/providerCandidates.d.ts.map +1 -1
- package/dist/browser/locators/remoteLocatorFromConfig.d.ts +1 -1
- package/dist/browser/locators/remoteLocatorFromConfig.d.ts.map +1 -1
- package/dist/browser/registerHelpers.d.ts +3 -18
- package/dist/browser/registerHelpers.d.ts.map +1 -1
- package/dist/neutral/SimpleNetworkStakeViewer.d.ts +1 -1
- package/dist/neutral/SimpleStepRewards/SimpleStepRewardsByPositionViewer.d.ts +2 -2
- package/dist/neutral/SimpleStepRewards/SimpleStepRewardsByPositionViewer.d.ts.map +1 -1
- package/dist/neutral/SimpleStepRewards/SimpleStepRewardsByStakerViewer.d.ts +2 -2
- package/dist/neutral/SimpleStepRewards/SimpleStepRewardsByStakerViewer.d.ts.map +1 -1
- package/dist/neutral/SimpleStepRewards/SimpleStepRewardsByStepViewer.d.ts +2 -2
- package/dist/neutral/SimpleStepRewards/SimpleStepRewardsByStepViewer.d.ts.map +1 -1
- package/dist/neutral/SimpleStepRewards/SimpleStepRewardsTotalViewer.d.ts +1 -1
- package/dist/neutral/SimpleStepRewards/SimpleStepRewardsTotalViewer.d.ts.map +1 -1
- package/dist/neutral/SimpleStepViewer.d.ts +2 -2
- package/dist/neutral/SimpleStepViewer.d.ts.map +1 -1
- package/dist/neutral/SimpleXyoViewer.d.ts +131 -131
- package/dist/neutral/SimpleXyoViewer.d.ts.map +1 -1
- package/dist/neutral/buildSimpleXyoSigner.d.ts +8 -0
- package/dist/neutral/buildSimpleXyoSigner.d.ts.map +1 -0
- package/dist/neutral/index.d.ts +1 -3
- package/dist/neutral/index.d.ts.map +1 -1
- package/dist/neutral/index.mjs +973 -1000
- package/dist/neutral/index.mjs.map +4 -4
- package/dist/neutral/locators/basicRestViewerLocator.d.ts +25 -0
- package/dist/neutral/locators/basicRestViewerLocator.d.ts.map +1 -0
- package/dist/neutral/locators/index.d.ts +1 -2
- package/dist/neutral/locators/index.d.ts.map +1 -1
- package/dist/neutral/locators/providerCandidates.d.ts.map +1 -1
- package/dist/neutral/locators/remoteLocatorFromConfig.d.ts +1 -1
- package/dist/neutral/locators/remoteLocatorFromConfig.d.ts.map +1 -1
- package/dist/neutral/registerHelpers.d.ts +3 -18
- package/dist/neutral/registerHelpers.d.ts.map +1 -1
- package/dist/node/SimpleNetworkStakeViewer.d.ts +1 -1
- package/dist/node/SimpleStepRewards/SimpleStepRewardsByPositionViewer.d.ts +2 -2
- package/dist/node/SimpleStepRewards/SimpleStepRewardsByPositionViewer.d.ts.map +1 -1
- package/dist/node/SimpleStepRewards/SimpleStepRewardsByStakerViewer.d.ts +2 -2
- package/dist/node/SimpleStepRewards/SimpleStepRewardsByStakerViewer.d.ts.map +1 -1
- package/dist/node/SimpleStepRewards/SimpleStepRewardsByStepViewer.d.ts +2 -2
- package/dist/node/SimpleStepRewards/SimpleStepRewardsByStepViewer.d.ts.map +1 -1
- package/dist/node/SimpleStepRewards/SimpleStepRewardsTotalViewer.d.ts +1 -1
- package/dist/node/SimpleStepRewards/SimpleStepRewardsTotalViewer.d.ts.map +1 -1
- package/dist/node/SimpleStepViewer.d.ts +2 -2
- package/dist/node/SimpleStepViewer.d.ts.map +1 -1
- package/dist/node/SimpleXyoViewer.d.ts +131 -131
- package/dist/node/SimpleXyoViewer.d.ts.map +1 -1
- package/dist/node/buildSimpleXyoSigner.d.ts +8 -0
- package/dist/node/buildSimpleXyoSigner.d.ts.map +1 -0
- package/dist/node/index.d.ts +1 -3
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.mjs +973 -1000
- package/dist/node/index.mjs.map +4 -4
- package/dist/node/locators/basicRestViewerLocator.d.ts +25 -0
- package/dist/node/locators/basicRestViewerLocator.d.ts.map +1 -0
- package/dist/node/locators/index.d.ts +1 -2
- package/dist/node/locators/index.d.ts.map +1 -1
- package/dist/node/locators/providerCandidates.d.ts.map +1 -1
- package/dist/node/locators/remoteLocatorFromConfig.d.ts +1 -1
- package/dist/node/locators/remoteLocatorFromConfig.d.ts.map +1 -1
- package/dist/node/registerHelpers.d.ts +3 -18
- package/dist/node/registerHelpers.d.ts.map +1 -1
- package/package.json +16 -12
- package/dist/browser/NodeXyoRunner.d.ts +0 -33
- package/dist/browser/NodeXyoRunner.d.ts.map +0 -1
- package/dist/browser/NodeXyoViewer.d.ts +0 -16
- package/dist/browser/NodeXyoViewer.d.ts.map +0 -1
- package/dist/browser/buildSimpleXyoSignerV2.d.ts +0 -6
- package/dist/browser/buildSimpleXyoSignerV2.d.ts.map +0 -1
- package/dist/browser/locators/commonLocatorFromConfig.d.ts +0 -11
- package/dist/browser/locators/commonLocatorFromConfig.d.ts.map +0 -1
- package/dist/browser/locators/commonProvidersFromConfig.d.ts +0 -7
- package/dist/browser/locators/commonProvidersFromConfig.d.ts.map +0 -1
- package/dist/neutral/NodeXyoRunner.d.ts +0 -33
- package/dist/neutral/NodeXyoRunner.d.ts.map +0 -1
- package/dist/neutral/NodeXyoViewer.d.ts +0 -16
- package/dist/neutral/NodeXyoViewer.d.ts.map +0 -1
- package/dist/neutral/buildSimpleXyoSignerV2.d.ts +0 -6
- package/dist/neutral/buildSimpleXyoSignerV2.d.ts.map +0 -1
- package/dist/neutral/locators/commonLocatorFromConfig.d.ts +0 -11
- package/dist/neutral/locators/commonLocatorFromConfig.d.ts.map +0 -1
- package/dist/neutral/locators/commonProvidersFromConfig.d.ts +0 -7
- package/dist/neutral/locators/commonProvidersFromConfig.d.ts.map +0 -1
- package/dist/node/NodeXyoRunner.d.ts +0 -33
- package/dist/node/NodeXyoRunner.d.ts.map +0 -1
- package/dist/node/NodeXyoViewer.d.ts +0 -16
- package/dist/node/NodeXyoViewer.d.ts.map +0 -1
- package/dist/node/buildSimpleXyoSignerV2.d.ts +0 -6
- package/dist/node/buildSimpleXyoSignerV2.d.ts.map +0 -1
- package/dist/node/locators/commonLocatorFromConfig.d.ts +0 -11
- package/dist/node/locators/commonLocatorFromConfig.d.ts.map +0 -1
- package/dist/node/locators/commonProvidersFromConfig.d.ts +0 -7
- package/dist/node/locators/commonProvidersFromConfig.d.ts.map +0 -1
package/dist/browser/index.mjs
CHANGED
|
@@ -11,19 +11,20 @@ var __decorateClass = (decorators, target, key, kind) => {
|
|
|
11
11
|
};
|
|
12
12
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
13
13
|
|
|
14
|
-
// src/
|
|
14
|
+
// src/buildSimpleXyoSigner.ts
|
|
15
15
|
import { XyoSignerMoniker } from "@xyo-network/xl1-protocol-lib";
|
|
16
16
|
import { ProviderFactoryLocator, SimpleXyoSigner } from "@xyo-network/xl1-protocol-sdk";
|
|
17
|
-
async function
|
|
17
|
+
async function buildSimpleXyoSigner(context, account) {
|
|
18
18
|
const locator = new ProviderFactoryLocator(context);
|
|
19
19
|
locator.register(
|
|
20
20
|
SimpleXyoSigner.factory(SimpleXyoSigner.dependencies, { account })
|
|
21
21
|
);
|
|
22
22
|
return await locator.getInstance(XyoSignerMoniker);
|
|
23
23
|
}
|
|
24
|
+
var buildSimpleXyoSignerV2 = buildSimpleXyoSigner;
|
|
24
25
|
|
|
25
26
|
// src/creators/createRestDataLake.ts
|
|
26
|
-
import { RestDataLakeRunner as RestDataLakeRunner3, RestDataLakeViewer as
|
|
27
|
+
import { RestDataLakeRunner as RestDataLakeRunner3, RestDataLakeViewer as RestDataLakeViewer5 } from "@xyo-network/xl1-protocol-sdk";
|
|
27
28
|
|
|
28
29
|
// src/locators/baseConfigFactoryLocator.ts
|
|
29
30
|
import {
|
|
@@ -40,7 +41,7 @@ async function baseConfigFactoryLocator() {
|
|
|
40
41
|
}
|
|
41
42
|
|
|
42
43
|
// src/locators/basicRemoteRunnerLocator.ts
|
|
43
|
-
import { isDefined as isDefined3 } from "@
|
|
44
|
+
import { isDefined as isDefined3 } from "@ariestools/sdk";
|
|
44
45
|
import {
|
|
45
46
|
ProviderFactoryLocator as ProviderFactoryLocator4,
|
|
46
47
|
RestDataLakeRunner as RestDataLakeRunner2,
|
|
@@ -95,7 +96,7 @@ SimpleXyoConnectionRunner = __decorateClass([
|
|
|
95
96
|
], SimpleXyoConnectionRunner);
|
|
96
97
|
|
|
97
98
|
// src/locators/basicRemoteViewerLocator.ts
|
|
98
|
-
import { isDefined as isDefined2 } from "@
|
|
99
|
+
import { isDefined as isDefined2 } from "@ariestools/sdk";
|
|
99
100
|
import {
|
|
100
101
|
ActorConfigZod,
|
|
101
102
|
RestDataLakeViewer as RestDataLakeViewer2,
|
|
@@ -172,7 +173,7 @@ import {
|
|
|
172
173
|
SimpleChainContractViewer,
|
|
173
174
|
SimpleFinalizationRunner,
|
|
174
175
|
SimpleFinalizationViewer,
|
|
175
|
-
SimpleMempoolRunner
|
|
176
|
+
SimpleMempoolRunner,
|
|
176
177
|
SimpleMempoolViewer,
|
|
177
178
|
SimpleStakeEventsViewer,
|
|
178
179
|
SimpleStakeTotalsViewer,
|
|
@@ -185,6 +186,13 @@ import {
|
|
|
185
186
|
SimpleXyoGatewayRunner,
|
|
186
187
|
SimpleXyoRunner
|
|
187
188
|
} from "@xyo-network/xl1-protocol-sdk";
|
|
189
|
+
import {
|
|
190
|
+
RestBlockViewer,
|
|
191
|
+
RestChainContractViewer,
|
|
192
|
+
RestChainStateViewer,
|
|
193
|
+
RestFinalizationViewer,
|
|
194
|
+
RestIndexViewer
|
|
195
|
+
} from "@xyo-network/xl1-rest-block-viewer";
|
|
188
196
|
import {
|
|
189
197
|
JsonRpcAccountBalanceViewer,
|
|
190
198
|
JsonRpcBlockViewer,
|
|
@@ -201,761 +209,296 @@ import {
|
|
|
201
209
|
JsonRpcXyoViewer
|
|
202
210
|
} from "@xyo-network/xl1-rpc";
|
|
203
211
|
|
|
204
|
-
// src/
|
|
205
|
-
import { assertEx } from "@
|
|
206
|
-
import {
|
|
207
|
-
import { XyoRunnerMoniker as XyoRunnerMoniker2 } from "@xyo-network/xl1-protocol-lib";
|
|
212
|
+
// src/SimpleDeadLetterQueueRunner.ts
|
|
213
|
+
import { assertEx } from "@ariestools/sdk";
|
|
214
|
+
import { isHashMeta, PayloadBuilder } from "@xyo-network/sdk-js";
|
|
208
215
|
import {
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
} from "@xyo-network/xl1-protocol-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
get mempool() {
|
|
219
|
-
return this._mempoolRunner;
|
|
220
|
-
}
|
|
221
|
-
get node() {
|
|
222
|
-
return this.params.node;
|
|
216
|
+
DeadLetterQueueRunnerMoniker,
|
|
217
|
+
isBlockRejection,
|
|
218
|
+
isTransactionRejection
|
|
219
|
+
} from "@xyo-network/xl1-protocol-lib";
|
|
220
|
+
import { AbstractCreatableProvider as AbstractCreatableProvider3, creatableProvider as creatableProvider3 } from "@xyo-network/xl1-protocol-sdk";
|
|
221
|
+
var SimpleDeadLetterQueueRunner = class extends AbstractCreatableProvider3 {
|
|
222
|
+
moniker = SimpleDeadLetterQueueRunner.defaultMoniker;
|
|
223
|
+
get rejectedBlocksArchivist() {
|
|
224
|
+
return this.params.rejectedBlocksArchivist;
|
|
223
225
|
}
|
|
224
|
-
get
|
|
225
|
-
return this.
|
|
226
|
+
get rejectedTransactionsArchivist() {
|
|
227
|
+
return this.params.rejectedTransactionsArchivist;
|
|
226
228
|
}
|
|
227
|
-
|
|
228
|
-
return
|
|
229
|
+
static async paramsHandler(params) {
|
|
230
|
+
return {
|
|
231
|
+
...await super.paramsHandler(params),
|
|
232
|
+
rejectedBlocksArchivist: assertEx(params?.rejectedBlocksArchivist, () => "rejectedBlocksArchivist is required"),
|
|
233
|
+
rejectedTransactionsArchivist: assertEx(params?.rejectedTransactionsArchivist, () => "rejectedTransactionsArchivist is required")
|
|
234
|
+
};
|
|
229
235
|
}
|
|
230
|
-
|
|
231
|
-
|
|
236
|
+
async pruneRejectedBlocks({
|
|
237
|
+
batchSize = 10,
|
|
238
|
+
maxPrune = 1e3,
|
|
239
|
+
maxCheck = 1e3
|
|
240
|
+
} = {}) {
|
|
241
|
+
let total = 0;
|
|
242
|
+
let pruned = 0;
|
|
243
|
+
let cursor;
|
|
244
|
+
let batch = await this.rejectedBlocksArchivist.next({
|
|
245
|
+
limit: batchSize,
|
|
246
|
+
cursor,
|
|
247
|
+
order: "desc"
|
|
248
|
+
});
|
|
249
|
+
while (batch.length > 0 && pruned < maxPrune && total < maxCheck) {
|
|
250
|
+
const pruneHashes = batch.filter(isHashMeta).filter((p) => !isBlockRejection(p)).map((p) => p._hash);
|
|
251
|
+
pruned += pruneHashes.length;
|
|
252
|
+
total += batch.length;
|
|
253
|
+
if (pruneHashes.length > 0) {
|
|
254
|
+
await this.rejectedBlocksArchivist.delete(pruneHashes);
|
|
255
|
+
}
|
|
256
|
+
const pruneSet = new Set(pruneHashes);
|
|
257
|
+
const lastSurvivor = batch.findLast((p) => isHashMeta(p) && !pruneSet.has(p._hash));
|
|
258
|
+
cursor = lastSurvivor?._sequence ?? cursor;
|
|
259
|
+
batch = await this.rejectedBlocksArchivist.next({
|
|
260
|
+
limit: batchSize,
|
|
261
|
+
cursor,
|
|
262
|
+
order: "desc"
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
return [pruned, total];
|
|
232
266
|
}
|
|
233
|
-
|
|
234
|
-
|
|
267
|
+
async pruneRejectedTransactions({
|
|
268
|
+
batchSize = 10,
|
|
269
|
+
maxPrune = 1e3,
|
|
270
|
+
maxCheck = 1e3
|
|
271
|
+
} = {}) {
|
|
272
|
+
let total = 0;
|
|
273
|
+
let pruned = 0;
|
|
274
|
+
let cursor;
|
|
275
|
+
let batch = await this.rejectedTransactionsArchivist.next({
|
|
276
|
+
limit: batchSize,
|
|
277
|
+
cursor,
|
|
278
|
+
order: "desc"
|
|
279
|
+
});
|
|
280
|
+
while (batch.length > 0 && pruned < maxPrune && total < maxCheck) {
|
|
281
|
+
const pruneHashes = batch.filter(isHashMeta).filter((p) => !isTransactionRejection(p)).map((p) => p._hash);
|
|
282
|
+
pruned += pruneHashes.length;
|
|
283
|
+
total += batch.length;
|
|
284
|
+
if (pruneHashes.length > 0) {
|
|
285
|
+
await this.rejectedTransactionsArchivist.delete(pruneHashes);
|
|
286
|
+
}
|
|
287
|
+
const pruneSet = new Set(pruneHashes);
|
|
288
|
+
const lastSurvivor = batch.findLast((p) => isHashMeta(p) && !pruneSet.has(p._hash));
|
|
289
|
+
cursor = lastSurvivor?._sequence ?? cursor;
|
|
290
|
+
batch = await this.rejectedTransactionsArchivist.next({
|
|
291
|
+
limit: batchSize,
|
|
292
|
+
cursor,
|
|
293
|
+
order: "desc"
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
return [pruned, total];
|
|
235
297
|
}
|
|
236
|
-
async
|
|
237
|
-
const
|
|
238
|
-
|
|
298
|
+
async rejectBlock(rejection) {
|
|
299
|
+
const withMeta = await PayloadBuilder.addHashMeta(rejection);
|
|
300
|
+
const inserted = await this.rejectedBlocksArchivist.insert([withMeta]);
|
|
301
|
+
return inserted.length > 0;
|
|
239
302
|
}
|
|
240
|
-
|
|
241
|
-
const
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
async startHandler() {
|
|
245
|
-
await super.startHandler();
|
|
246
|
-
this._pendingTransactionsArchivist = assertEx(
|
|
247
|
-
await this.getArchivist(this.pendingTransactionsArchivistPath),
|
|
248
|
-
() => `Could not resolve pending archivist at ${this.pendingTransactionsArchivistPath}`
|
|
249
|
-
);
|
|
250
|
-
this._pendingBlocksArchivist = assertEx(
|
|
251
|
-
await this.getArchivist(this.pendingBlocksArchivistPath),
|
|
252
|
-
() => `Could not resolve pending archivist at ${this.pendingBlocksArchivistPath}`
|
|
253
|
-
);
|
|
254
|
-
this._mempoolRunner = assertEx(await SimpleMempoolRunner.create({
|
|
255
|
-
context: this.context,
|
|
256
|
-
pendingTransactionsArchivist: this.pendingTransactionsArchivist,
|
|
257
|
-
pendingBlocksArchivist: this.pendingBlocksArchivist
|
|
258
|
-
}), () => "Failed to create SimpleMempoolRunner");
|
|
303
|
+
async rejectTransaction(rejection) {
|
|
304
|
+
const withMeta = await PayloadBuilder.addHashMeta(rejection);
|
|
305
|
+
const inserted = await this.rejectedTransactionsArchivist.insert([withMeta]);
|
|
306
|
+
return inserted.length > 0;
|
|
259
307
|
}
|
|
260
308
|
};
|
|
261
|
-
__publicField(
|
|
262
|
-
__publicField(
|
|
263
|
-
__publicField(
|
|
264
|
-
__publicField(
|
|
265
|
-
__publicField(
|
|
266
|
-
|
|
309
|
+
__publicField(SimpleDeadLetterQueueRunner, "connectionTypes", ["lmdb", "mongo", "memory"]);
|
|
310
|
+
__publicField(SimpleDeadLetterQueueRunner, "defaultMoniker", DeadLetterQueueRunnerMoniker);
|
|
311
|
+
__publicField(SimpleDeadLetterQueueRunner, "dependencies", []);
|
|
312
|
+
__publicField(SimpleDeadLetterQueueRunner, "monikers", [DeadLetterQueueRunnerMoniker]);
|
|
313
|
+
__publicField(SimpleDeadLetterQueueRunner, "surface", "node");
|
|
314
|
+
SimpleDeadLetterQueueRunner = __decorateClass([
|
|
267
315
|
creatableProvider3()
|
|
268
|
-
],
|
|
269
|
-
|
|
270
|
-
// src/NodeXyoViewer.ts
|
|
271
|
-
import { assertEx as assertEx3 } from "@xylabs/sdk";
|
|
272
|
-
import { asAttachableArchivistInstance } from "@xyo-network/sdk-js";
|
|
273
|
-
import { creatableProvider as creatableProvider5 } from "@xyo-network/xl1-protocol-sdk";
|
|
316
|
+
], SimpleDeadLetterQueueRunner);
|
|
274
317
|
|
|
275
|
-
// src/
|
|
318
|
+
// src/SimpleDeadLetterQueueViewer.ts
|
|
276
319
|
import {
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
320
|
+
exists,
|
|
321
|
+
isDefined,
|
|
322
|
+
isHash
|
|
323
|
+
} from "@ariestools/sdk";
|
|
324
|
+
import { isHashMeta as isHashMeta2 } from "@xyo-network/sdk-js";
|
|
325
|
+
import {
|
|
326
|
+
DeadLetterQueueViewerMoniker,
|
|
327
|
+
isBlockRejection as isBlockRejection2,
|
|
328
|
+
isTransactionRejection as isTransactionRejection2
|
|
329
|
+
} from "@xyo-network/xl1-protocol-lib";
|
|
330
|
+
import { AbstractCreatableProvider as AbstractCreatableProvider4, creatableProvider as creatableProvider4 } from "@xyo-network/xl1-protocol-sdk";
|
|
331
|
+
var SimpleDeadLetterQueueViewer = class extends AbstractCreatableProvider4 {
|
|
332
|
+
moniker = SimpleDeadLetterQueueViewer.defaultMoniker;
|
|
333
|
+
get rejectedBlocksArchivist() {
|
|
334
|
+
return this.params.rejectedBlocksArchivist;
|
|
335
|
+
}
|
|
336
|
+
get rejectedTransactionsArchivist() {
|
|
337
|
+
return this.params.rejectedTransactionsArchivist;
|
|
338
|
+
}
|
|
339
|
+
async rejectedBlocks({
|
|
340
|
+
cursor: providedCursor,
|
|
341
|
+
limit = 100,
|
|
342
|
+
rejector
|
|
343
|
+
} = {}) {
|
|
344
|
+
let cursor;
|
|
345
|
+
if (isHash(providedCursor)) {
|
|
346
|
+
const [p] = await this.rejectedBlocksArchivist.get([providedCursor]);
|
|
347
|
+
if (isDefined(p)) {
|
|
348
|
+
cursor = p._sequence;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
const payloads = await this.rejectedBlocksArchivist.next({
|
|
352
|
+
order: "desc",
|
|
353
|
+
limit,
|
|
354
|
+
cursor
|
|
355
|
+
});
|
|
356
|
+
const rejections = payloads.filter(isHashMeta2).map((p) => isBlockRejection2(p) ? p : void 0).filter(exists);
|
|
357
|
+
if (rejector !== void 0) {
|
|
358
|
+
return rejections.filter((r) => r.rejector === rejector);
|
|
359
|
+
}
|
|
360
|
+
return rejections;
|
|
361
|
+
}
|
|
362
|
+
async rejectedTransactions({
|
|
363
|
+
cursor: providedCursor,
|
|
364
|
+
limit = 100,
|
|
365
|
+
rejector
|
|
366
|
+
} = {}) {
|
|
367
|
+
let cursor;
|
|
368
|
+
if (isHash(providedCursor)) {
|
|
369
|
+
const [p] = await this.rejectedTransactionsArchivist.get([providedCursor]);
|
|
370
|
+
if (isDefined(p)) {
|
|
371
|
+
cursor = p._sequence;
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
const payloads = await this.rejectedTransactionsArchivist.next({
|
|
375
|
+
order: "desc",
|
|
376
|
+
limit,
|
|
377
|
+
cursor
|
|
378
|
+
});
|
|
379
|
+
const rejections = payloads.filter(isHashMeta2).map((p) => isTransactionRejection2(p) ? p : void 0).filter(exists);
|
|
380
|
+
if (rejector !== void 0) {
|
|
381
|
+
return rejections.filter((r) => r.rejector === rejector);
|
|
382
|
+
}
|
|
383
|
+
return rejections;
|
|
384
|
+
}
|
|
385
|
+
};
|
|
386
|
+
__publicField(SimpleDeadLetterQueueViewer, "connectionTypes", ["lmdb", "mongo", "memory"]);
|
|
387
|
+
__publicField(SimpleDeadLetterQueueViewer, "defaultMoniker", DeadLetterQueueViewerMoniker);
|
|
388
|
+
__publicField(SimpleDeadLetterQueueViewer, "dependencies", []);
|
|
389
|
+
__publicField(SimpleDeadLetterQueueViewer, "monikers", [DeadLetterQueueViewerMoniker]);
|
|
390
|
+
__publicField(SimpleDeadLetterQueueViewer, "surface", "node");
|
|
391
|
+
SimpleDeadLetterQueueViewer = __decorateClass([
|
|
392
|
+
creatableProvider4()
|
|
393
|
+
], SimpleDeadLetterQueueViewer);
|
|
394
|
+
|
|
395
|
+
// src/SimpleNetworkStakeViewer.ts
|
|
396
|
+
import { assertEx as assertEx2 } from "@ariestools/sdk";
|
|
280
397
|
import {
|
|
281
|
-
AccountBalanceViewerMoniker,
|
|
282
|
-
asAttoXL1,
|
|
283
|
-
asXL1BlockRange,
|
|
284
|
-
BlockViewerMoniker,
|
|
285
|
-
ChainContractViewerMoniker,
|
|
286
398
|
FinalizationViewerMoniker,
|
|
287
|
-
|
|
288
|
-
NetworkStakeStepRewardsByPositionViewerMoniker,
|
|
399
|
+
NetworkStakeStepRewardsViewerMoniker,
|
|
289
400
|
NetworkStakeViewerMoniker,
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
TimeSyncViewerMoniker,
|
|
293
|
-
TransactionViewerMoniker,
|
|
294
|
-
XYO_NETWORK_STAKING_ADDRESS,
|
|
295
|
-
XYO_ZERO_ADDRESS,
|
|
296
|
-
XyoViewerMoniker as XyoViewerMoniker3
|
|
401
|
+
StakeTotalsViewerMoniker,
|
|
402
|
+
StakeViewerMoniker
|
|
297
403
|
} from "@xyo-network/xl1-protocol-lib";
|
|
298
404
|
import {
|
|
299
|
-
AbstractCreatableProvider as
|
|
300
|
-
|
|
301
|
-
blockRangeSteps,
|
|
302
|
-
creatableProvider as creatableProvider4,
|
|
303
|
-
externalBlockRangeFromStep,
|
|
304
|
-
externalBlockRangeFromXL1BlockRange,
|
|
305
|
-
networkStakeStepRewardPositionWeight,
|
|
306
|
-
stepRewardTotal,
|
|
307
|
-
toStepIdentityString,
|
|
308
|
-
weightedStakeForRangeByPosition,
|
|
309
|
-
withContextCacheResponse
|
|
405
|
+
AbstractCreatableProvider as AbstractCreatableProvider5,
|
|
406
|
+
creatableProvider as creatableProvider5
|
|
310
407
|
} from "@xyo-network/xl1-protocol-sdk";
|
|
311
|
-
var
|
|
312
|
-
moniker =
|
|
313
|
-
_tracer;
|
|
314
|
-
_accountBalanceViewer;
|
|
315
|
-
_blockViewer;
|
|
316
|
-
_chainContractViewer;
|
|
317
|
-
_chainId;
|
|
408
|
+
var SimpleNetworkStakeViewer = class extends AbstractCreatableProvider5 {
|
|
409
|
+
moniker = SimpleNetworkStakeViewer.defaultMoniker;
|
|
318
410
|
_finalizationViewer;
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
_stepViewer;
|
|
325
|
-
_timeSyncViewer;
|
|
326
|
-
_transaction;
|
|
327
|
-
get account() {
|
|
328
|
-
return { balance: this._accountBalanceViewer };
|
|
329
|
-
}
|
|
330
|
-
get block() {
|
|
331
|
-
return this._blockViewer;
|
|
332
|
-
}
|
|
333
|
-
get chainContractViewer() {
|
|
334
|
-
return this._chainContractViewer;
|
|
411
|
+
_stake;
|
|
412
|
+
_stakeTotals;
|
|
413
|
+
_stepRewardsViewer;
|
|
414
|
+
get stepRewards() {
|
|
415
|
+
return assertEx2(this._stepRewardsViewer, () => "Step rewards viewer not initialized");
|
|
335
416
|
}
|
|
336
|
-
get
|
|
417
|
+
get finalizationViewer() {
|
|
337
418
|
return this._finalizationViewer;
|
|
338
419
|
}
|
|
339
|
-
get
|
|
340
|
-
return this.
|
|
341
|
-
}
|
|
342
|
-
get networkStake() {
|
|
343
|
-
return this._networkStakeViewer;
|
|
420
|
+
get rewardMultipliers() {
|
|
421
|
+
return this.params.rewardMultipliers;
|
|
344
422
|
}
|
|
345
423
|
get stake() {
|
|
346
|
-
return this.
|
|
347
|
-
}
|
|
348
|
-
get step() {
|
|
349
|
-
return this._stepViewer;
|
|
424
|
+
return this._stake;
|
|
350
425
|
}
|
|
351
|
-
get
|
|
352
|
-
return this.
|
|
426
|
+
get stakeTotals() {
|
|
427
|
+
return this._stakeTotals;
|
|
353
428
|
}
|
|
354
|
-
|
|
355
|
-
|
|
429
|
+
async active(blockNumber) {
|
|
430
|
+
const resolvedBlockNumber = blockNumber ?? await this.finalizationViewer.headNumber();
|
|
431
|
+
return [await this.stakeTotals.active(resolvedBlockNumber), resolvedBlockNumber];
|
|
356
432
|
}
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
get networkStepRewardsByPositionViewer() {
|
|
364
|
-
return this._networkStepRewardsByPositionViewer;
|
|
365
|
-
}
|
|
366
|
-
get rewardMultipliers() {
|
|
367
|
-
this._rewardMultipliers = this._rewardMultipliers ?? this.params.rewardMultipliers ?? {};
|
|
368
|
-
return this._rewardMultipliers;
|
|
369
|
-
}
|
|
370
|
-
async accountBalance(address, config = {}) {
|
|
371
|
-
return await this.account.balance.accountBalance(address, config);
|
|
372
|
-
}
|
|
373
|
-
async accountBalanceHistory(address, config = {}) {
|
|
374
|
-
return await this.account.balance.accountBalanceHistory(address, config);
|
|
375
|
-
}
|
|
376
|
-
async blockByHash(hash) {
|
|
377
|
-
return await this.block.blockByHash(hash);
|
|
378
|
-
}
|
|
379
|
-
async blockByNumber(blockNumber) {
|
|
380
|
-
return await this.block.blockByNumber(blockNumber);
|
|
381
|
-
}
|
|
382
|
-
async blocksByHash(hash, limit = 10) {
|
|
383
|
-
return await this.block.blocksByHash(hash, limit);
|
|
384
|
-
}
|
|
385
|
-
async blocksByNumber(blockNumber, limit = 10) {
|
|
386
|
-
return await this.block.blocksByNumber(blockNumber, limit);
|
|
387
|
-
}
|
|
388
|
-
async blocksByStep(stepLevel, stepIndex) {
|
|
389
|
-
return await this.block.blocksByStep(stepLevel, stepIndex);
|
|
390
|
-
}
|
|
391
|
-
async chainId(blockNumber = "latest") {
|
|
392
|
-
return await this.spanAsync("SimpleXyoViewer:chainId", async () => {
|
|
393
|
-
const chainId = assertEx2(
|
|
394
|
-
blockNumber === "latest" ? this._chainId : await this.chainContractViewer.chainIdAtBlockNumber(blockNumber),
|
|
395
|
-
() => `Could not find block for chainId at block ${blockNumber}`
|
|
396
|
-
);
|
|
397
|
-
return chainId;
|
|
398
|
-
}, this.context);
|
|
399
|
-
}
|
|
400
|
-
async createHandler() {
|
|
401
|
-
await super.createHandler();
|
|
402
|
-
this._accountBalanceViewer = await this.locator.getInstance(AccountBalanceViewerMoniker);
|
|
403
|
-
this._blockViewer = await this.locator.getInstance(BlockViewerMoniker);
|
|
404
|
-
this._chainContractViewer = await this.locator.getInstance(ChainContractViewerMoniker);
|
|
405
|
-
this._finalizationViewer = await this.locator.getInstance(FinalizationViewerMoniker);
|
|
406
|
-
this._mempoolViewer = await this.locator.getInstance(MempoolViewerMoniker);
|
|
407
|
-
this._networkStakeViewer = await this.locator.getInstance(NetworkStakeViewerMoniker);
|
|
408
|
-
this._networkStepRewardsByPositionViewer = await this.locator.getInstance(NetworkStakeStepRewardsByPositionViewerMoniker);
|
|
409
|
-
this._stakeViewer = await this.locator.getInstance(StakeViewerMoniker);
|
|
410
|
-
this._stepViewer = await this.locator.getInstance(StepViewerMoniker);
|
|
411
|
-
this._timeSyncViewer = await this.locator.getInstance(TimeSyncViewerMoniker);
|
|
412
|
-
this._transaction = await this.locator.getInstance(TransactionViewerMoniker);
|
|
413
|
-
this._chainId = await this._chainContractViewer.chainId();
|
|
414
|
-
}
|
|
415
|
-
async currentBlock() {
|
|
416
|
-
return await this.block.currentBlock();
|
|
417
|
-
}
|
|
418
|
-
async currentBlockHash() {
|
|
419
|
-
return await this.block.currentBlockHash();
|
|
420
|
-
}
|
|
421
|
-
async currentBlockNumber() {
|
|
422
|
-
return await this.block.currentBlockNumber();
|
|
423
|
-
}
|
|
424
|
-
forkHistory() {
|
|
425
|
-
throw new Error("Method [forkHistory] not implemented.");
|
|
426
|
-
}
|
|
427
|
-
networkStakeStepRewardAddressHistory(_address) {
|
|
428
|
-
throw new Error("Method [networkStakeStepRewardAddressHistory] not implemented.");
|
|
429
|
-
}
|
|
430
|
-
networkStakeStepRewardAddressReward(_context, _address) {
|
|
431
|
-
throw new Error("Method [networkStakeStepRewardAddressReward] not implemented.");
|
|
432
|
-
}
|
|
433
|
-
networkStakeStepRewardAddressShare(_context, _address) {
|
|
434
|
-
throw new Error("Method [networkStakeStepRewardAddressShare] not implemented.");
|
|
435
|
-
}
|
|
436
|
-
networkStakeStepRewardClaimedByAddress(_address) {
|
|
437
|
-
throw new Error("Method [networkStakeStepRewardClaimedByAddress] not implemented.");
|
|
438
|
-
}
|
|
439
|
-
async networkStakeStepRewardForPosition(position, range) {
|
|
440
|
-
const cacheKey = `${position}|${range[0]}-${range[1]}`;
|
|
441
|
-
return await withContextCacheResponse(this.context, "SimpleXyoViewer:networkStakeStepRewardForPosition", cacheKey, async () => {
|
|
442
|
-
const externalRange = await externalBlockRangeFromXL1BlockRange(this.context, this.block, range);
|
|
443
|
-
const positionCount = await this.stake.stakeEvents.positionCount(externalRange);
|
|
444
|
-
if (positionCount === 0) {
|
|
445
|
-
return [asAttoXL1(0n), asAttoXL1(0n)];
|
|
446
|
-
}
|
|
447
|
-
const steps = blockRangeSteps(range, [3, 4, 5, 6, 7]);
|
|
448
|
-
const rewards = await Promise.all(steps.map((step) => this.networkStakeStepRewardForStepForPosition(step, position)));
|
|
449
|
-
const positionReward = asAttoXL1(rewards.reduce((a, b) => a + b[0], 0n));
|
|
450
|
-
const totalReward = asAttoXL1(rewards.reduce((a, b) => a + b[1], 0n));
|
|
451
|
-
return [positionReward, totalReward];
|
|
452
|
-
});
|
|
453
|
-
}
|
|
454
|
-
async networkStakeStepRewardForStep(stepContext) {
|
|
455
|
-
return await stepRewardTotal(this.context, this.block, stepContext, this.rewardMultipliers);
|
|
456
|
-
}
|
|
457
|
-
async networkStakeStepRewardForStepForPosition(stepIdentity, position) {
|
|
458
|
-
const stepIdentityString = toStepIdentityString(stepIdentity);
|
|
459
|
-
const cacheKey = `${stepIdentityString}|${position}`;
|
|
460
|
-
return await withContextCacheResponse(this.context, "SimpleXyoViewer:networkStakeStepRewardForStepForPosition", cacheKey, async () => {
|
|
461
|
-
const range = await externalBlockRangeFromStep(this.context, this.block, stepIdentity);
|
|
462
|
-
const stake = await this.stakeById(position);
|
|
463
|
-
const numerator = stake.staked === XYO_NETWORK_STAKING_ADDRESS ? await weightedStakeForRangeByPosition(this.context, this.block, this.stake.stakeEvents, range, XYO_NETWORK_STAKING_ADDRESS, position) : 0n;
|
|
464
|
-
const denominator = await this.stepWeightedDenominator(stepIdentity);
|
|
465
|
-
const totalReward = await this.networkStakeStepRewardForStep(stepIdentity);
|
|
466
|
-
const positionReward = asAttoXL1(denominator > 0n ? totalReward * numerator / denominator : 0n);
|
|
467
|
-
const result = [positionReward, totalReward];
|
|
468
|
-
return result;
|
|
469
|
-
});
|
|
470
|
-
}
|
|
471
|
-
async networkStakeStepRewardPoolRewards(step) {
|
|
472
|
-
const stakes = await this.stake.stakesByStaked(XYO_NETWORK_STAKING_ADDRESS);
|
|
473
|
-
const rewards = [];
|
|
474
|
-
for (const stake of stakes) {
|
|
475
|
-
rewards.push([stake.staker, await this.networkStakeStepRewardForStepForPosition(
|
|
476
|
-
step,
|
|
477
|
-
stake.id
|
|
478
|
-
)]);
|
|
479
|
-
}
|
|
480
|
-
const result = {};
|
|
481
|
-
for (const [staker, reward] of rewards) {
|
|
482
|
-
result[staker] = asAttoXL1((result[staker] ?? 0n) + reward[0]);
|
|
483
|
-
}
|
|
484
|
-
const filtered = Object.fromEntries(Object.entries(result).filter(([_, v]) => v > 0n));
|
|
485
|
-
return filtered;
|
|
486
|
-
}
|
|
487
|
-
networkStakeStepRewardPoolShares(_context) {
|
|
488
|
-
throw new Error("Method [networkStakeStepRewardPoolShares] not implemented.");
|
|
489
|
-
}
|
|
490
|
-
async networkStakeStepRewardPositionWeight(stepContext, position) {
|
|
491
|
-
return await networkStakeStepRewardPositionWeight(this.context, this.block, this.stake.stakeEvents, stepContext, position);
|
|
492
|
-
}
|
|
493
|
-
networkStakeStepRewardPotentialPositionLoss(_context, _position) {
|
|
494
|
-
throw new Error("Method [networkStakeStepRewardPotentialPositionLoss] not implemented.");
|
|
495
|
-
}
|
|
496
|
-
networkStakeStepRewardRandomizer(_context) {
|
|
497
|
-
throw new Error("Method [networkStakeStepRewardRandomizer] not implemented.");
|
|
498
|
-
}
|
|
499
|
-
async networkStakeStepRewardStakerCount(stepContext) {
|
|
500
|
-
return Object.keys(await allStakersForStep(
|
|
501
|
-
this.context,
|
|
502
|
-
this.block,
|
|
503
|
-
this.stake.stakeEvents,
|
|
504
|
-
stepContext,
|
|
505
|
-
XYO_NETWORK_STAKING_ADDRESS
|
|
506
|
-
)).length;
|
|
507
|
-
}
|
|
508
|
-
networkStakeStepRewardUnclaimedByAddress(_address) {
|
|
509
|
-
throw new Error("Method [networkStakeStepRewardUnclaimedByAddress] not implemented.");
|
|
510
|
-
}
|
|
511
|
-
networkStakeStepRewardWeightForAddress(_context, _address) {
|
|
512
|
-
throw new Error("Method [networkStakeStepRewardWeightForAddress] not implemented.");
|
|
513
|
-
}
|
|
514
|
-
async networkStakeStepRewardsForPosition(position, range) {
|
|
515
|
-
const steps = blockRangeSteps(range, [3, 4, 5, 6, 7, 8]);
|
|
516
|
-
const rewards = await Promise.all(steps.map(async (step) => {
|
|
517
|
-
return [toStepIdentityString(step), await this.networkStakeStepRewardForStepForPosition(step, position)];
|
|
518
|
-
}));
|
|
519
|
-
const result = Object.fromEntries(rewards);
|
|
520
|
-
const filtered = Object.fromEntries(Object.entries(result).filter(([_, v]) => v[0] > 0n));
|
|
521
|
-
return filtered;
|
|
522
|
-
}
|
|
523
|
-
async networkStakeStepRewardsForRange(range) {
|
|
524
|
-
return await this.spanAsync("networkStakeStepRewardsForRange", async () => {
|
|
525
|
-
const steps = blockRangeSteps(range, [3, 4, 5, 6, 7, 8]);
|
|
526
|
-
const rewards = await Promise.all(steps.map(async (step) => {
|
|
527
|
-
return await this.networkStakeStepRewardForStep(step);
|
|
528
|
-
}));
|
|
529
|
-
return asAttoXL1(rewards.reduce((a, b) => a + b, 0n));
|
|
530
|
-
}, this.context);
|
|
531
|
-
}
|
|
532
|
-
async networkStakeStepRewardsForStepLevel(stepLevel, range) {
|
|
533
|
-
const steps = blockRangeSteps(range, [stepLevel]);
|
|
534
|
-
const rewards = await Promise.all(steps.map(async (step) => {
|
|
535
|
-
return await this.networkStakeStepRewardForStep(step);
|
|
536
|
-
}));
|
|
537
|
-
return asAttoXL1(rewards.reduce((a, b) => a + b, 0n));
|
|
538
|
-
}
|
|
539
|
-
payloadByHash(_hash) {
|
|
540
|
-
throw new Error("Method [payloadByHash] not implemented.");
|
|
541
|
-
}
|
|
542
|
-
payloadsByHash(_hashes) {
|
|
543
|
-
throw new Error("Method [payloadsByHash] not implemented.");
|
|
544
|
-
}
|
|
545
|
-
async rate(range, timeUnit) {
|
|
546
|
-
return await this.block.rate(range, timeUnit);
|
|
547
|
-
}
|
|
548
|
-
async stakeById(id) {
|
|
549
|
-
return await this.stake.stakeById(id);
|
|
550
|
-
}
|
|
551
|
-
async stakeByStaker(staker, slot) {
|
|
552
|
-
return await this.stake.stakeByStaker(staker, slot);
|
|
553
|
-
}
|
|
554
|
-
async stakedByStaker(staker) {
|
|
555
|
-
const result = /* @__PURE__ */ new Set();
|
|
556
|
-
let slot = 0;
|
|
557
|
-
while (true) {
|
|
558
|
-
try {
|
|
559
|
-
const ethStake = await this.stake.stakeByStaker(staker, slot);
|
|
560
|
-
result.add(toAddress(ethStake.staked));
|
|
561
|
-
slot++;
|
|
562
|
-
} catch {
|
|
563
|
-
break;
|
|
564
|
-
}
|
|
565
|
-
}
|
|
566
|
-
return [...result];
|
|
567
|
-
}
|
|
568
|
-
async stakesByStaked(staked) {
|
|
569
|
-
return await this.stake.stakesByStaked(staked);
|
|
570
|
-
}
|
|
571
|
-
async stakesByStaker(staker) {
|
|
572
|
-
return await this.stake.stakesByStaker(staker);
|
|
573
|
-
}
|
|
574
|
-
async stepSizeRate(start, stepSizeIndex, count, timeUnit) {
|
|
575
|
-
return await this.block.stepSizeRate(start, stepSizeIndex, count, timeUnit);
|
|
576
|
-
}
|
|
577
|
-
async timeDurationRate(timeConfig, startBlock, timeUnit, toleranceMs, maxAttempts) {
|
|
578
|
-
return await this.block.timeDurationRate(timeConfig, startBlock, timeUnit, toleranceMs, maxAttempts);
|
|
579
|
-
}
|
|
580
|
-
async transactionByBlockHashAndIndex(blockHash, transactionIndex = 0) {
|
|
581
|
-
return await this.transaction.byBlockHashAndIndex(blockHash, transactionIndex);
|
|
582
|
-
}
|
|
583
|
-
async transactionByBlockNumberAndIndex(blockNumber, transactionIndex = 0) {
|
|
584
|
-
return await this.transaction.byBlockNumberAndIndex(blockNumber, transactionIndex);
|
|
585
|
-
}
|
|
586
|
-
async transactionByHash(transactionHash) {
|
|
587
|
-
return await this.transaction.byHash(transactionHash);
|
|
588
|
-
}
|
|
589
|
-
async startHandler() {
|
|
590
|
-
try {
|
|
591
|
-
const currentBlockNumber = await this.currentBlockNumber();
|
|
592
|
-
await this.account.balance.accountBalance(XYO_ZERO_ADDRESS);
|
|
593
|
-
if (this.initRewardsCache) {
|
|
594
|
-
const externalRange = await externalBlockRangeFromXL1BlockRange(
|
|
595
|
-
this.context,
|
|
596
|
-
this.block,
|
|
597
|
-
asXL1BlockRange([0, currentBlockNumber], { name: "startHandler" })
|
|
598
|
-
);
|
|
599
|
-
const positionCount = await this.stake.stakeEvents.positionCount(externalRange);
|
|
600
|
-
this.logger?.debug(`SimpleXyoViewer: Precomputing networkStakeStepRewardForPosition up to position ${positionCount - 1}`);
|
|
601
|
-
const positions = Array.from(
|
|
602
|
-
{ length: positionCount },
|
|
603
|
-
(_, i) => i
|
|
604
|
-
);
|
|
605
|
-
while (positions.length > 0) {
|
|
606
|
-
const batch = positions.splice(0, 10);
|
|
607
|
-
this.logger?.debug(`SimpleXyoViewer: Precomputing networkStakeStepRewardForPosition for positions ${batch.at(0)} - ${batch.at(-1)}`);
|
|
608
|
-
await Promise.all(batch.map(async (_, position) => await this.networkStakeStepRewardForPosition(
|
|
609
|
-
position,
|
|
610
|
-
asXL1BlockRange([0, currentBlockNumber], { name: "startHandler" })
|
|
611
|
-
)));
|
|
612
|
-
}
|
|
613
|
-
this.logger?.debug(`SimpleXyoViewer: Precomputed networkStakeStepRewardForPosition up to position ${positionCount - 1}`);
|
|
614
|
-
}
|
|
615
|
-
} catch (ex) {
|
|
616
|
-
this.logger?.error(`SimpleXyoViewer: Error during startHandler initialization: ${ex.message}`);
|
|
617
|
-
this.logger?.error(ex.stack ?? "<No Stack>");
|
|
618
|
-
throw ex;
|
|
619
|
-
}
|
|
620
|
-
}
|
|
621
|
-
async stepWeightedDenominator(stepIdentity, staked) {
|
|
622
|
-
const cacheKey = toStepIdentityString(stepIdentity);
|
|
623
|
-
return await withContextCacheResponse(this.context, "NodeXyoViewer-networkStakeStepRewardForStepForPosition-denominator", cacheKey, async () => {
|
|
624
|
-
const range = await externalBlockRangeFromStep(this.context, this.block, stepIdentity);
|
|
625
|
-
return await weightedStakeForRangeByPosition(this.context, this.block, this.stake.stakeEvents, range, staked);
|
|
626
|
-
});
|
|
627
|
-
}
|
|
628
|
-
};
|
|
629
|
-
__publicField(SimpleXyoViewer, "connectionTypes", ["lmdb", "mongo", "memory"]);
|
|
630
|
-
__publicField(SimpleXyoViewer, "defaultMoniker", XyoViewerMoniker3);
|
|
631
|
-
__publicField(SimpleXyoViewer, "dependencies", [
|
|
632
|
-
AccountBalanceViewerMoniker,
|
|
633
|
-
BlockViewerMoniker,
|
|
634
|
-
ChainContractViewerMoniker,
|
|
635
|
-
FinalizationViewerMoniker,
|
|
636
|
-
MempoolViewerMoniker,
|
|
637
|
-
NetworkStakeViewerMoniker,
|
|
638
|
-
NetworkStakeStepRewardsByPositionViewerMoniker,
|
|
639
|
-
StakeViewerMoniker,
|
|
640
|
-
StepViewerMoniker,
|
|
641
|
-
TimeSyncViewerMoniker,
|
|
642
|
-
TransactionViewerMoniker
|
|
643
|
-
]);
|
|
644
|
-
__publicField(SimpleXyoViewer, "monikers", [XyoViewerMoniker3]);
|
|
645
|
-
__publicField(SimpleXyoViewer, "surface", "node");
|
|
646
|
-
SimpleXyoViewer = __decorateClass([
|
|
647
|
-
creatableProvider4()
|
|
648
|
-
], SimpleXyoViewer);
|
|
649
|
-
|
|
650
|
-
// src/NodeXyoViewer.ts
|
|
651
|
-
var NodeXyoViewer = class extends SimpleXyoViewer {
|
|
652
|
-
get node() {
|
|
653
|
-
return this.params.node;
|
|
654
|
-
}
|
|
655
|
-
static async getFinalizedArchivistFromNode(node) {
|
|
656
|
-
const resolved = await this.getArchivist(node, this.finalizedArchivistPath);
|
|
657
|
-
return assertEx3(resolved, () => `Could not resolve finalized archivist at ${this.finalizedArchivistPath}`);
|
|
658
|
-
}
|
|
659
|
-
};
|
|
660
|
-
__publicField(NodeXyoViewer, "finalizedArchivistPath", "XYOChain:Chain:Finalized");
|
|
661
|
-
__publicField(NodeXyoViewer, "getArchivist", async (node, identifier) => {
|
|
662
|
-
const archivist = await node.resolve(identifier);
|
|
663
|
-
return assertEx3(asAttachableArchivistInstance(archivist), () => `Could not resolve ${identifier} to an archivist instance`);
|
|
664
|
-
});
|
|
665
|
-
NodeXyoViewer = __decorateClass([
|
|
666
|
-
creatableProvider5()
|
|
667
|
-
], NodeXyoViewer);
|
|
668
|
-
|
|
669
|
-
// src/SimpleDeadLetterQueueRunner.ts
|
|
670
|
-
import { assertEx as assertEx4 } from "@xylabs/sdk";
|
|
671
|
-
import { isHashMeta, PayloadBuilder } from "@xyo-network/sdk-js";
|
|
672
|
-
import {
|
|
673
|
-
DeadLetterQueueRunnerMoniker,
|
|
674
|
-
isBlockRejection,
|
|
675
|
-
isTransactionRejection
|
|
676
|
-
} from "@xyo-network/xl1-protocol-lib";
|
|
677
|
-
import { AbstractCreatableProvider as AbstractCreatableProvider5, creatableProvider as creatableProvider6 } from "@xyo-network/xl1-protocol-sdk";
|
|
678
|
-
var SimpleDeadLetterQueueRunner = class extends AbstractCreatableProvider5 {
|
|
679
|
-
moniker = SimpleDeadLetterQueueRunner.defaultMoniker;
|
|
680
|
-
get rejectedBlocksArchivist() {
|
|
681
|
-
return this.params.rejectedBlocksArchivist;
|
|
682
|
-
}
|
|
683
|
-
get rejectedTransactionsArchivist() {
|
|
684
|
-
return this.params.rejectedTransactionsArchivist;
|
|
685
|
-
}
|
|
686
|
-
static async paramsHandler(params) {
|
|
687
|
-
return {
|
|
688
|
-
...await super.paramsHandler(params),
|
|
689
|
-
rejectedBlocksArchivist: assertEx4(params?.rejectedBlocksArchivist, () => "rejectedBlocksArchivist is required"),
|
|
690
|
-
rejectedTransactionsArchivist: assertEx4(params?.rejectedTransactionsArchivist, () => "rejectedTransactionsArchivist is required")
|
|
691
|
-
};
|
|
692
|
-
}
|
|
693
|
-
async pruneRejectedBlocks({
|
|
694
|
-
batchSize = 10,
|
|
695
|
-
maxPrune = 1e3,
|
|
696
|
-
maxCheck = 1e3
|
|
697
|
-
} = {}) {
|
|
698
|
-
let total = 0;
|
|
699
|
-
let pruned = 0;
|
|
700
|
-
let cursor;
|
|
701
|
-
let batch = await this.rejectedBlocksArchivist.next({
|
|
702
|
-
limit: batchSize,
|
|
703
|
-
cursor,
|
|
704
|
-
order: "desc"
|
|
705
|
-
});
|
|
706
|
-
while (batch.length > 0 && pruned < maxPrune && total < maxCheck) {
|
|
707
|
-
const pruneHashes = batch.filter(isHashMeta).filter((p) => !isBlockRejection(p)).map((p) => p._hash);
|
|
708
|
-
pruned += pruneHashes.length;
|
|
709
|
-
total += batch.length;
|
|
710
|
-
if (pruneHashes.length > 0) {
|
|
711
|
-
await this.rejectedBlocksArchivist.delete(pruneHashes);
|
|
712
|
-
}
|
|
713
|
-
const pruneSet = new Set(pruneHashes);
|
|
714
|
-
const lastSurvivor = batch.findLast((p) => isHashMeta(p) && !pruneSet.has(p._hash));
|
|
715
|
-
cursor = lastSurvivor?._sequence ?? cursor;
|
|
716
|
-
batch = await this.rejectedBlocksArchivist.next({
|
|
717
|
-
limit: batchSize,
|
|
718
|
-
cursor,
|
|
719
|
-
order: "desc"
|
|
720
|
-
});
|
|
721
|
-
}
|
|
722
|
-
return [pruned, total];
|
|
723
|
-
}
|
|
724
|
-
async pruneRejectedTransactions({
|
|
725
|
-
batchSize = 10,
|
|
726
|
-
maxPrune = 1e3,
|
|
727
|
-
maxCheck = 1e3
|
|
728
|
-
} = {}) {
|
|
729
|
-
let total = 0;
|
|
730
|
-
let pruned = 0;
|
|
731
|
-
let cursor;
|
|
732
|
-
let batch = await this.rejectedTransactionsArchivist.next({
|
|
733
|
-
limit: batchSize,
|
|
734
|
-
cursor,
|
|
735
|
-
order: "desc"
|
|
736
|
-
});
|
|
737
|
-
while (batch.length > 0 && pruned < maxPrune && total < maxCheck) {
|
|
738
|
-
const pruneHashes = batch.filter(isHashMeta).filter((p) => !isTransactionRejection(p)).map((p) => p._hash);
|
|
739
|
-
pruned += pruneHashes.length;
|
|
740
|
-
total += batch.length;
|
|
741
|
-
if (pruneHashes.length > 0) {
|
|
742
|
-
await this.rejectedTransactionsArchivist.delete(pruneHashes);
|
|
743
|
-
}
|
|
744
|
-
const pruneSet = new Set(pruneHashes);
|
|
745
|
-
const lastSurvivor = batch.findLast((p) => isHashMeta(p) && !pruneSet.has(p._hash));
|
|
746
|
-
cursor = lastSurvivor?._sequence ?? cursor;
|
|
747
|
-
batch = await this.rejectedTransactionsArchivist.next({
|
|
748
|
-
limit: batchSize,
|
|
749
|
-
cursor,
|
|
750
|
-
order: "desc"
|
|
751
|
-
});
|
|
752
|
-
}
|
|
753
|
-
return [pruned, total];
|
|
754
|
-
}
|
|
755
|
-
async rejectBlock(rejection) {
|
|
756
|
-
const withMeta = await PayloadBuilder.addHashMeta(rejection);
|
|
757
|
-
const inserted = await this.rejectedBlocksArchivist.insert([withMeta]);
|
|
758
|
-
return inserted.length > 0;
|
|
759
|
-
}
|
|
760
|
-
async rejectTransaction(rejection) {
|
|
761
|
-
const withMeta = await PayloadBuilder.addHashMeta(rejection);
|
|
762
|
-
const inserted = await this.rejectedTransactionsArchivist.insert([withMeta]);
|
|
763
|
-
return inserted.length > 0;
|
|
764
|
-
}
|
|
765
|
-
};
|
|
766
|
-
__publicField(SimpleDeadLetterQueueRunner, "connectionTypes", ["lmdb", "mongo", "memory"]);
|
|
767
|
-
__publicField(SimpleDeadLetterQueueRunner, "defaultMoniker", DeadLetterQueueRunnerMoniker);
|
|
768
|
-
__publicField(SimpleDeadLetterQueueRunner, "dependencies", []);
|
|
769
|
-
__publicField(SimpleDeadLetterQueueRunner, "monikers", [DeadLetterQueueRunnerMoniker]);
|
|
770
|
-
__publicField(SimpleDeadLetterQueueRunner, "surface", "node");
|
|
771
|
-
SimpleDeadLetterQueueRunner = __decorateClass([
|
|
772
|
-
creatableProvider6()
|
|
773
|
-
], SimpleDeadLetterQueueRunner);
|
|
774
|
-
|
|
775
|
-
// src/SimpleDeadLetterQueueViewer.ts
|
|
776
|
-
import {
|
|
777
|
-
exists,
|
|
778
|
-
isDefined,
|
|
779
|
-
isHash
|
|
780
|
-
} from "@xylabs/sdk";
|
|
781
|
-
import { isHashMeta as isHashMeta2 } from "@xyo-network/sdk-js";
|
|
782
|
-
import {
|
|
783
|
-
DeadLetterQueueViewerMoniker,
|
|
784
|
-
isBlockRejection as isBlockRejection2,
|
|
785
|
-
isTransactionRejection as isTransactionRejection2
|
|
786
|
-
} from "@xyo-network/xl1-protocol-lib";
|
|
787
|
-
import { AbstractCreatableProvider as AbstractCreatableProvider6, creatableProvider as creatableProvider7 } from "@xyo-network/xl1-protocol-sdk";
|
|
788
|
-
var SimpleDeadLetterQueueViewer = class extends AbstractCreatableProvider6 {
|
|
789
|
-
moniker = SimpleDeadLetterQueueViewer.defaultMoniker;
|
|
790
|
-
get rejectedBlocksArchivist() {
|
|
791
|
-
return this.params.rejectedBlocksArchivist;
|
|
792
|
-
}
|
|
793
|
-
get rejectedTransactionsArchivist() {
|
|
794
|
-
return this.params.rejectedTransactionsArchivist;
|
|
795
|
-
}
|
|
796
|
-
async rejectedBlocks({
|
|
797
|
-
cursor: providedCursor,
|
|
798
|
-
limit = 100,
|
|
799
|
-
rejector
|
|
800
|
-
} = {}) {
|
|
801
|
-
let cursor;
|
|
802
|
-
if (isHash(providedCursor)) {
|
|
803
|
-
const [p] = await this.rejectedBlocksArchivist.get([providedCursor]);
|
|
804
|
-
if (isDefined(p)) {
|
|
805
|
-
cursor = p._sequence;
|
|
806
|
-
}
|
|
807
|
-
}
|
|
808
|
-
const payloads = await this.rejectedBlocksArchivist.next({
|
|
809
|
-
order: "desc",
|
|
810
|
-
limit,
|
|
811
|
-
cursor
|
|
812
|
-
});
|
|
813
|
-
const rejections = payloads.filter(isHashMeta2).map((p) => isBlockRejection2(p) ? p : void 0).filter(exists);
|
|
814
|
-
if (rejector !== void 0) {
|
|
815
|
-
return rejections.filter((r) => r.rejector === rejector);
|
|
816
|
-
}
|
|
817
|
-
return rejections;
|
|
818
|
-
}
|
|
819
|
-
async rejectedTransactions({
|
|
820
|
-
cursor: providedCursor,
|
|
821
|
-
limit = 100,
|
|
822
|
-
rejector
|
|
823
|
-
} = {}) {
|
|
824
|
-
let cursor;
|
|
825
|
-
if (isHash(providedCursor)) {
|
|
826
|
-
const [p] = await this.rejectedTransactionsArchivist.get([providedCursor]);
|
|
827
|
-
if (isDefined(p)) {
|
|
828
|
-
cursor = p._sequence;
|
|
829
|
-
}
|
|
830
|
-
}
|
|
831
|
-
const payloads = await this.rejectedTransactionsArchivist.next({
|
|
832
|
-
order: "desc",
|
|
833
|
-
limit,
|
|
834
|
-
cursor
|
|
835
|
-
});
|
|
836
|
-
const rejections = payloads.filter(isHashMeta2).map((p) => isTransactionRejection2(p) ? p : void 0).filter(exists);
|
|
837
|
-
if (rejector !== void 0) {
|
|
838
|
-
return rejections.filter((r) => r.rejector === rejector);
|
|
839
|
-
}
|
|
840
|
-
return rejections;
|
|
841
|
-
}
|
|
842
|
-
};
|
|
843
|
-
__publicField(SimpleDeadLetterQueueViewer, "connectionTypes", ["lmdb", "mongo", "memory"]);
|
|
844
|
-
__publicField(SimpleDeadLetterQueueViewer, "defaultMoniker", DeadLetterQueueViewerMoniker);
|
|
845
|
-
__publicField(SimpleDeadLetterQueueViewer, "dependencies", []);
|
|
846
|
-
__publicField(SimpleDeadLetterQueueViewer, "monikers", [DeadLetterQueueViewerMoniker]);
|
|
847
|
-
__publicField(SimpleDeadLetterQueueViewer, "surface", "node");
|
|
848
|
-
SimpleDeadLetterQueueViewer = __decorateClass([
|
|
849
|
-
creatableProvider7()
|
|
850
|
-
], SimpleDeadLetterQueueViewer);
|
|
851
|
-
|
|
852
|
-
// src/SimpleNetworkStakeViewer.ts
|
|
853
|
-
import { assertEx as assertEx5 } from "@xylabs/sdk";
|
|
854
|
-
import {
|
|
855
|
-
FinalizationViewerMoniker as FinalizationViewerMoniker2,
|
|
856
|
-
NetworkStakeStepRewardsViewerMoniker,
|
|
857
|
-
NetworkStakeViewerMoniker as NetworkStakeViewerMoniker2,
|
|
858
|
-
StakeTotalsViewerMoniker,
|
|
859
|
-
StakeViewerMoniker as StakeViewerMoniker2
|
|
860
|
-
} from "@xyo-network/xl1-protocol-lib";
|
|
861
|
-
import {
|
|
862
|
-
AbstractCreatableProvider as AbstractCreatableProvider7,
|
|
863
|
-
creatableProvider as creatableProvider8
|
|
864
|
-
} from "@xyo-network/xl1-protocol-sdk";
|
|
865
|
-
var SimpleNetworkStakeViewer = class extends AbstractCreatableProvider7 {
|
|
866
|
-
moniker = SimpleNetworkStakeViewer.defaultMoniker;
|
|
867
|
-
_finalizationViewer;
|
|
868
|
-
_stake;
|
|
869
|
-
_stakeTotals;
|
|
870
|
-
_stepRewardsViewer;
|
|
871
|
-
get stepRewards() {
|
|
872
|
-
return assertEx5(this._stepRewardsViewer, () => "Step rewards viewer not initialized");
|
|
873
|
-
}
|
|
874
|
-
get finalizationViewer() {
|
|
875
|
-
return this._finalizationViewer;
|
|
876
|
-
}
|
|
877
|
-
get rewardMultipliers() {
|
|
878
|
-
return this.params.rewardMultipliers;
|
|
879
|
-
}
|
|
880
|
-
get stake() {
|
|
881
|
-
return this._stake;
|
|
882
|
-
}
|
|
883
|
-
get stakeTotals() {
|
|
884
|
-
return this._stakeTotals;
|
|
885
|
-
}
|
|
886
|
-
async active(blockNumber) {
|
|
887
|
-
const resolvedBlockNumber = blockNumber ?? await this.finalizationViewer.headNumber();
|
|
888
|
-
return [await this.stakeTotals.active(resolvedBlockNumber), resolvedBlockNumber];
|
|
889
|
-
}
|
|
890
|
-
async createHandler() {
|
|
891
|
-
await super.createHandler();
|
|
892
|
-
this._finalizationViewer = await this.locator.getInstance(FinalizationViewerMoniker2);
|
|
893
|
-
this._stake = await this.locator.getInstance(StakeViewerMoniker2);
|
|
894
|
-
this._stakeTotals = await this.locator.getInstance(StakeTotalsViewerMoniker);
|
|
895
|
-
this._stepRewardsViewer = await this.locator.getInstance(NetworkStakeStepRewardsViewerMoniker);
|
|
433
|
+
async createHandler() {
|
|
434
|
+
await super.createHandler();
|
|
435
|
+
this._finalizationViewer = await this.locator.getInstance(FinalizationViewerMoniker);
|
|
436
|
+
this._stake = await this.locator.getInstance(StakeViewerMoniker);
|
|
437
|
+
this._stakeTotals = await this.locator.getInstance(StakeTotalsViewerMoniker);
|
|
438
|
+
this._stepRewardsViewer = await this.locator.getInstance(NetworkStakeStepRewardsViewerMoniker);
|
|
896
439
|
}
|
|
897
440
|
};
|
|
898
441
|
__publicField(SimpleNetworkStakeViewer, "connectionTypes", ["lmdb", "mongo", "memory"]);
|
|
899
|
-
__publicField(SimpleNetworkStakeViewer, "defaultMoniker",
|
|
442
|
+
__publicField(SimpleNetworkStakeViewer, "defaultMoniker", NetworkStakeViewerMoniker);
|
|
900
443
|
__publicField(SimpleNetworkStakeViewer, "dependencies", [
|
|
901
|
-
|
|
444
|
+
FinalizationViewerMoniker,
|
|
902
445
|
NetworkStakeStepRewardsViewerMoniker,
|
|
903
446
|
StakeTotalsViewerMoniker,
|
|
904
|
-
|
|
447
|
+
StakeViewerMoniker
|
|
905
448
|
]);
|
|
906
|
-
__publicField(SimpleNetworkStakeViewer, "monikers", [
|
|
449
|
+
__publicField(SimpleNetworkStakeViewer, "monikers", [NetworkStakeViewerMoniker]);
|
|
907
450
|
__publicField(SimpleNetworkStakeViewer, "surface", "node");
|
|
908
451
|
SimpleNetworkStakeViewer = __decorateClass([
|
|
909
|
-
|
|
452
|
+
creatableProvider5()
|
|
910
453
|
], SimpleNetworkStakeViewer);
|
|
911
454
|
|
|
912
455
|
// src/SimpleStepRewards/SimpleStepRewardsByPositionViewer.ts
|
|
913
|
-
import { isArray } from "@
|
|
456
|
+
import { isArray } from "@ariestools/sdk";
|
|
914
457
|
import {
|
|
915
|
-
asAttoXL1
|
|
916
|
-
asXL1BlockRange
|
|
917
|
-
BlockViewerMoniker
|
|
918
|
-
FinalizationViewerMoniker as
|
|
919
|
-
NetworkStakeStepRewardsByPositionViewerMoniker
|
|
920
|
-
StakeViewerMoniker as
|
|
458
|
+
asAttoXL1,
|
|
459
|
+
asXL1BlockRange,
|
|
460
|
+
BlockViewerMoniker,
|
|
461
|
+
FinalizationViewerMoniker as FinalizationViewerMoniker2,
|
|
462
|
+
NetworkStakeStepRewardsByPositionViewerMoniker,
|
|
463
|
+
StakeViewerMoniker as StakeViewerMoniker2
|
|
921
464
|
} from "@xyo-network/xl1-protocol-lib";
|
|
922
465
|
import {
|
|
923
|
-
AbstractCreatableProvider as
|
|
924
|
-
blockRangeSteps
|
|
925
|
-
creatableProvider as
|
|
466
|
+
AbstractCreatableProvider as AbstractCreatableProvider6,
|
|
467
|
+
blockRangeSteps,
|
|
468
|
+
creatableProvider as creatableProvider6
|
|
926
469
|
} from "@xyo-network/xl1-protocol-sdk";
|
|
927
470
|
|
|
928
471
|
// src/SimpleStepRewards/primitives/networkStakeStepRewardEarned.ts
|
|
929
|
-
import { XYO_NETWORK_STAKING_ADDRESS as
|
|
930
|
-
import { withContextCacheResponse as
|
|
472
|
+
import { XYO_NETWORK_STAKING_ADDRESS as XYO_NETWORK_STAKING_ADDRESS2 } from "@xyo-network/xl1-protocol-lib";
|
|
473
|
+
import { withContextCacheResponse as withContextCacheResponse2 } from "@xyo-network/xl1-protocol-sdk";
|
|
931
474
|
|
|
932
475
|
// src/SimpleStepRewards/primitives/networkStakeStepRewardEarnedForPosition.ts
|
|
933
|
-
import { XYO_NETWORK_STAKING_ADDRESS
|
|
476
|
+
import { XYO_NETWORK_STAKING_ADDRESS } from "@xyo-network/xl1-protocol-lib";
|
|
934
477
|
import {
|
|
935
|
-
externalBlockRangeFromStep
|
|
936
|
-
stepRewardTotal
|
|
937
|
-
weightedStakeForRangeByPosition
|
|
938
|
-
withContextCacheResponse
|
|
478
|
+
externalBlockRangeFromStep,
|
|
479
|
+
stepRewardTotal,
|
|
480
|
+
weightedStakeForRangeByPosition,
|
|
481
|
+
withContextCacheResponse
|
|
939
482
|
} from "@xyo-network/xl1-protocol-sdk";
|
|
940
483
|
async function networkStakeStepRewardEarnedForPosition(context, blockViewer, stakeEventsViewer, stepIdentity, position, rewardMultipliers = {}) {
|
|
941
484
|
const cacheKey = `${stepIdentity.block}|${stepIdentity.step}|${position.id}`;
|
|
942
|
-
return await
|
|
943
|
-
const range = await
|
|
944
|
-
const numerator = position.staked ===
|
|
485
|
+
return await withContextCacheResponse(context, "networkStakeStepRewardEarnedForPosition", cacheKey, async () => {
|
|
486
|
+
const range = await externalBlockRangeFromStep(context, blockViewer, stepIdentity);
|
|
487
|
+
const numerator = position.staked === XYO_NETWORK_STAKING_ADDRESS ? await weightedStakeForRangeByPosition(
|
|
945
488
|
context,
|
|
946
489
|
blockViewer,
|
|
947
490
|
stakeEventsViewer,
|
|
948
491
|
range,
|
|
949
|
-
|
|
492
|
+
XYO_NETWORK_STAKING_ADDRESS,
|
|
950
493
|
position.id
|
|
951
494
|
) : 0n;
|
|
952
|
-
const denominator = await
|
|
495
|
+
const denominator = await weightedStakeForRangeByPosition(
|
|
953
496
|
context,
|
|
954
497
|
blockViewer,
|
|
955
498
|
stakeEventsViewer,
|
|
956
499
|
range
|
|
957
500
|
);
|
|
958
|
-
const totalReward = await
|
|
501
|
+
const totalReward = await stepRewardTotal(context, blockViewer, stepIdentity, rewardMultipliers);
|
|
959
502
|
const positionReward = denominator > 0n ? totalReward * numerator / denominator : 0n;
|
|
960
503
|
const result = [positionReward, totalReward];
|
|
961
504
|
return result;
|
|
@@ -965,8 +508,8 @@ async function networkStakeStepRewardEarnedForPosition(context, blockViewer, sta
|
|
|
965
508
|
// src/SimpleStepRewards/primitives/networkStakeStepRewardEarned.ts
|
|
966
509
|
async function networkStakeStepRewardEarned(context, blockViewer, stakeViewer, stepIdentity, rewardMultipliers = {}) {
|
|
967
510
|
const cacheKey = `${stepIdentity.block}|${stepIdentity.step}`;
|
|
968
|
-
return await
|
|
969
|
-
const positions = await stakeViewer.stakesByStaked(
|
|
511
|
+
return await withContextCacheResponse2(context, "networkStakeStepRewardEarned", cacheKey, async () => {
|
|
512
|
+
const positions = await stakeViewer.stakesByStaked(XYO_NETWORK_STAKING_ADDRESS2);
|
|
970
513
|
const results = await Promise.all(positions.map((pos) => {
|
|
971
514
|
return networkStakeStepRewardEarnedForPosition(
|
|
972
515
|
context,
|
|
@@ -984,16 +527,16 @@ async function networkStakeStepRewardEarned(context, blockViewer, stakeViewer, s
|
|
|
984
527
|
}
|
|
985
528
|
|
|
986
529
|
// src/SimpleStepRewards/primitives/networkStakeStepRewardEarnedForStaker.ts
|
|
987
|
-
import { XYO_NETWORK_STAKING_ADDRESS as
|
|
530
|
+
import { XYO_NETWORK_STAKING_ADDRESS as XYO_NETWORK_STAKING_ADDRESS3 } from "@xyo-network/xl1-protocol-lib";
|
|
988
531
|
import {
|
|
989
|
-
toStepIdentityString
|
|
990
|
-
withContextCacheResponse as
|
|
532
|
+
toStepIdentityString,
|
|
533
|
+
withContextCacheResponse as withContextCacheResponse3
|
|
991
534
|
} from "@xyo-network/xl1-protocol-sdk";
|
|
992
535
|
async function networkStakeStepRewardEarnedForStaker(context, blockViewer, stakeViewer, stepIdentity, staker, rewardMultipliers = {}) {
|
|
993
|
-
const stepId =
|
|
994
|
-
return await
|
|
536
|
+
const stepId = toStepIdentityString(stepIdentity);
|
|
537
|
+
return await withContextCacheResponse3(context, "networkStakeStepRewardEarnedForStaker", `${stepId}-${staker}`, async () => {
|
|
995
538
|
const stakes = await stakeViewer.stakesByStaker(staker);
|
|
996
|
-
const positions = stakes.filter((pos) => pos.staked ===
|
|
539
|
+
const positions = stakes.filter((pos) => pos.staked === XYO_NETWORK_STAKING_ADDRESS3);
|
|
997
540
|
const results = await Promise.all(positions.map((pos) => {
|
|
998
541
|
return networkStakeStepRewardEarnedForPosition(
|
|
999
542
|
context,
|
|
@@ -1011,7 +554,7 @@ async function networkStakeStepRewardEarnedForStaker(context, blockViewer, stake
|
|
|
1011
554
|
}
|
|
1012
555
|
|
|
1013
556
|
// src/SimpleStepRewards/SimpleStepRewardsByPositionViewer.ts
|
|
1014
|
-
var SimpleStepRewardsByPositionViewer = class extends
|
|
557
|
+
var SimpleStepRewardsByPositionViewer = class extends AbstractCreatableProvider6 {
|
|
1015
558
|
moniker = SimpleStepRewardsByPositionViewer.defaultMoniker;
|
|
1016
559
|
_blockViewer;
|
|
1017
560
|
_finalizationViewer;
|
|
@@ -1034,7 +577,7 @@ var SimpleStepRewardsByPositionViewer = class extends AbstractCreatableProvider8
|
|
|
1034
577
|
const result = {};
|
|
1035
578
|
for (const key of Object.keys(total)) {
|
|
1036
579
|
const pos = Number(key);
|
|
1037
|
-
result[pos] =
|
|
580
|
+
result[pos] = asAttoXL1(total[pos] - (earned[pos] ?? 0n));
|
|
1038
581
|
}
|
|
1039
582
|
return result;
|
|
1040
583
|
}
|
|
@@ -1043,9 +586,9 @@ var SimpleStepRewardsByPositionViewer = class extends AbstractCreatableProvider8
|
|
|
1043
586
|
}
|
|
1044
587
|
async createHandler() {
|
|
1045
588
|
await super.createHandler();
|
|
1046
|
-
this._blockViewer = await this.locator.getInstance(
|
|
1047
|
-
this._finalizationViewer = await this.locator.getInstance(
|
|
1048
|
-
this._stakeViewer = await this.locator.getInstance(
|
|
589
|
+
this._blockViewer = await this.locator.getInstance(BlockViewerMoniker);
|
|
590
|
+
this._finalizationViewer = await this.locator.getInstance(FinalizationViewerMoniker2);
|
|
591
|
+
this._stakeViewer = await this.locator.getInstance(StakeViewerMoniker2);
|
|
1049
592
|
}
|
|
1050
593
|
async earned({ range, positions } = {}) {
|
|
1051
594
|
return await this.calculateRewards({ range, positions });
|
|
@@ -1059,7 +602,7 @@ var SimpleStepRewardsByPositionViewer = class extends AbstractCreatableProvider8
|
|
|
1059
602
|
async calculateRewards({ range, positions } = {}, rewardMultipliers) {
|
|
1060
603
|
const result = {};
|
|
1061
604
|
const head = await this.finalizationViewer.head();
|
|
1062
|
-
const steps =
|
|
605
|
+
const steps = blockRangeSteps(asXL1BlockRange(
|
|
1063
606
|
range ?? [0, head[1]],
|
|
1064
607
|
{ name: "NodeStepRewardsByPositionViewer" }
|
|
1065
608
|
), [3, 4, 5, 6, 7]);
|
|
@@ -1075,7 +618,7 @@ var SimpleStepRewardsByPositionViewer = class extends AbstractCreatableProvider8
|
|
|
1075
618
|
position,
|
|
1076
619
|
rewardMultipliers
|
|
1077
620
|
);
|
|
1078
|
-
result[positionId] =
|
|
621
|
+
result[positionId] = asAttoXL1((result[positionId] ?? 0n) + reward[0]);
|
|
1079
622
|
}
|
|
1080
623
|
}
|
|
1081
624
|
}
|
|
@@ -1083,30 +626,30 @@ var SimpleStepRewardsByPositionViewer = class extends AbstractCreatableProvider8
|
|
|
1083
626
|
}
|
|
1084
627
|
};
|
|
1085
628
|
__publicField(SimpleStepRewardsByPositionViewer, "connectionTypes", ["lmdb", "mongo", "memory", "rpc"]);
|
|
1086
|
-
__publicField(SimpleStepRewardsByPositionViewer, "defaultMoniker",
|
|
1087
|
-
__publicField(SimpleStepRewardsByPositionViewer, "dependencies", [
|
|
1088
|
-
__publicField(SimpleStepRewardsByPositionViewer, "monikers", [
|
|
629
|
+
__publicField(SimpleStepRewardsByPositionViewer, "defaultMoniker", NetworkStakeStepRewardsByPositionViewerMoniker);
|
|
630
|
+
__publicField(SimpleStepRewardsByPositionViewer, "dependencies", [BlockViewerMoniker, FinalizationViewerMoniker2, StakeViewerMoniker2]);
|
|
631
|
+
__publicField(SimpleStepRewardsByPositionViewer, "monikers", [NetworkStakeStepRewardsByPositionViewerMoniker]);
|
|
1089
632
|
__publicField(SimpleStepRewardsByPositionViewer, "surface", "node");
|
|
1090
633
|
SimpleStepRewardsByPositionViewer = __decorateClass([
|
|
1091
|
-
|
|
634
|
+
creatableProvider6()
|
|
1092
635
|
], SimpleStepRewardsByPositionViewer);
|
|
1093
636
|
|
|
1094
637
|
// src/SimpleStepRewards/SimpleStepRewardsByStakerViewer.ts
|
|
1095
|
-
import { isArray as isArray2 } from "@
|
|
638
|
+
import { isArray as isArray2 } from "@ariestools/sdk";
|
|
1096
639
|
import {
|
|
1097
|
-
asAttoXL1 as
|
|
1098
|
-
asXL1BlockRange as
|
|
1099
|
-
BlockViewerMoniker as
|
|
1100
|
-
FinalizationViewerMoniker as
|
|
640
|
+
asAttoXL1 as asAttoXL12,
|
|
641
|
+
asXL1BlockRange as asXL1BlockRange2,
|
|
642
|
+
BlockViewerMoniker as BlockViewerMoniker2,
|
|
643
|
+
FinalizationViewerMoniker as FinalizationViewerMoniker3,
|
|
1101
644
|
NetworkStakeStepRewardsByStakerViewerMoniker,
|
|
1102
|
-
StakeViewerMoniker as
|
|
645
|
+
StakeViewerMoniker as StakeViewerMoniker3
|
|
1103
646
|
} from "@xyo-network/xl1-protocol-lib";
|
|
1104
647
|
import {
|
|
1105
|
-
AbstractCreatableProvider as
|
|
1106
|
-
blockRangeSteps as
|
|
1107
|
-
creatableProvider as
|
|
648
|
+
AbstractCreatableProvider as AbstractCreatableProvider7,
|
|
649
|
+
blockRangeSteps as blockRangeSteps2,
|
|
650
|
+
creatableProvider as creatableProvider7
|
|
1108
651
|
} from "@xyo-network/xl1-protocol-sdk";
|
|
1109
|
-
var SimpleStepRewardsByStakerViewer = class extends
|
|
652
|
+
var SimpleStepRewardsByStakerViewer = class extends AbstractCreatableProvider7 {
|
|
1110
653
|
moniker = SimpleStepRewardsByStakerViewer.defaultMoniker;
|
|
1111
654
|
_blockViewer;
|
|
1112
655
|
_finalizationViewer;
|
|
@@ -1128,7 +671,7 @@ var SimpleStepRewardsByStakerViewer = class extends AbstractCreatableProvider9 {
|
|
|
1128
671
|
const earned = await this.earned({ range, stakers });
|
|
1129
672
|
const result = {};
|
|
1130
673
|
for (const staker of Object.keys(total)) {
|
|
1131
|
-
result[staker] =
|
|
674
|
+
result[staker] = asAttoXL12(total[staker] - (earned[staker] ?? 0n));
|
|
1132
675
|
}
|
|
1133
676
|
return result;
|
|
1134
677
|
}
|
|
@@ -1137,9 +680,9 @@ var SimpleStepRewardsByStakerViewer = class extends AbstractCreatableProvider9 {
|
|
|
1137
680
|
}
|
|
1138
681
|
async createHandler() {
|
|
1139
682
|
await super.createHandler();
|
|
1140
|
-
this._blockViewer = await this.locator.getInstance(
|
|
1141
|
-
this._finalizationViewer = await this.locator.getInstance(
|
|
1142
|
-
this._stakeViewer = await this.locator.getInstance(
|
|
683
|
+
this._blockViewer = await this.locator.getInstance(BlockViewerMoniker2);
|
|
684
|
+
this._finalizationViewer = await this.locator.getInstance(FinalizationViewerMoniker3);
|
|
685
|
+
this._stakeViewer = await this.locator.getInstance(StakeViewerMoniker3);
|
|
1143
686
|
}
|
|
1144
687
|
async earned(options = {}) {
|
|
1145
688
|
return await this.calculateRewards(options);
|
|
@@ -1152,7 +695,7 @@ var SimpleStepRewardsByStakerViewer = class extends AbstractCreatableProvider9 {
|
|
|
1152
695
|
}
|
|
1153
696
|
async calculateRewards({ range, stakers } = {}, rewardMultipliers) {
|
|
1154
697
|
const result = {};
|
|
1155
|
-
const steps =
|
|
698
|
+
const steps = blockRangeSteps2(asXL1BlockRange2(
|
|
1156
699
|
range ?? [0, await this.finalizationViewer.headNumber()],
|
|
1157
700
|
{ name: "NodeStepRewardsByStakerViewer" }
|
|
1158
701
|
), [3, 4, 5, 6, 7]);
|
|
@@ -1167,7 +710,7 @@ var SimpleStepRewardsByStakerViewer = class extends AbstractCreatableProvider9 {
|
|
|
1167
710
|
staker,
|
|
1168
711
|
rewardMultipliers
|
|
1169
712
|
);
|
|
1170
|
-
result[staker] =
|
|
713
|
+
result[staker] = asAttoXL12((result[staker] ?? 0n) + reward[0]);
|
|
1171
714
|
}
|
|
1172
715
|
}
|
|
1173
716
|
}
|
|
@@ -1176,296 +719,671 @@ var SimpleStepRewardsByStakerViewer = class extends AbstractCreatableProvider9 {
|
|
|
1176
719
|
};
|
|
1177
720
|
__publicField(SimpleStepRewardsByStakerViewer, "connectionTypes", ["lmdb", "mongo", "memory", "rpc"]);
|
|
1178
721
|
__publicField(SimpleStepRewardsByStakerViewer, "defaultMoniker", NetworkStakeStepRewardsByStakerViewerMoniker);
|
|
1179
|
-
__publicField(SimpleStepRewardsByStakerViewer, "dependencies", [
|
|
722
|
+
__publicField(SimpleStepRewardsByStakerViewer, "dependencies", [BlockViewerMoniker2, FinalizationViewerMoniker3, StakeViewerMoniker3]);
|
|
1180
723
|
__publicField(SimpleStepRewardsByStakerViewer, "monikers", [NetworkStakeStepRewardsByStakerViewerMoniker]);
|
|
1181
724
|
__publicField(SimpleStepRewardsByStakerViewer, "surface", "node");
|
|
1182
725
|
SimpleStepRewardsByStakerViewer = __decorateClass([
|
|
1183
|
-
|
|
726
|
+
creatableProvider7()
|
|
1184
727
|
], SimpleStepRewardsByStakerViewer);
|
|
1185
728
|
|
|
1186
|
-
// src/SimpleStepRewards/SimpleStepRewardsByStepViewer.ts
|
|
729
|
+
// src/SimpleStepRewards/SimpleStepRewardsByStepViewer.ts
|
|
730
|
+
import {
|
|
731
|
+
asAttoXL1 as asAttoXL13,
|
|
732
|
+
asXL1BlockRange as asXL1BlockRange3,
|
|
733
|
+
BlockViewerMoniker as BlockViewerMoniker3,
|
|
734
|
+
FinalizationViewerMoniker as FinalizationViewerMoniker4,
|
|
735
|
+
NetworkStakeStepRewardsByStepViewerMoniker,
|
|
736
|
+
StakeViewerMoniker as StakeViewerMoniker4
|
|
737
|
+
} from "@xyo-network/xl1-protocol-lib";
|
|
738
|
+
import {
|
|
739
|
+
AbstractCreatableProvider as AbstractCreatableProvider8,
|
|
740
|
+
blockRangeSteps as blockRangeSteps3,
|
|
741
|
+
creatableProvider as creatableProvider8,
|
|
742
|
+
toStepIdentityString as toStepIdentityString2
|
|
743
|
+
} from "@xyo-network/xl1-protocol-sdk";
|
|
744
|
+
var SimpleStepRewardsByStepViewer = class extends AbstractCreatableProvider8 {
|
|
745
|
+
moniker = SimpleStepRewardsByStepViewer.defaultMoniker;
|
|
746
|
+
_blockViewer;
|
|
747
|
+
_finalizationViewer;
|
|
748
|
+
_stakeViewer;
|
|
749
|
+
get rewardMultipliers() {
|
|
750
|
+
return this.params.rewardMultipliers ?? {};
|
|
751
|
+
}
|
|
752
|
+
get blockViewer() {
|
|
753
|
+
return this._blockViewer;
|
|
754
|
+
}
|
|
755
|
+
get finalizationViewer() {
|
|
756
|
+
return this._finalizationViewer;
|
|
757
|
+
}
|
|
758
|
+
get stakeViewer() {
|
|
759
|
+
return this._stakeViewer;
|
|
760
|
+
}
|
|
761
|
+
async bonus({ range, steps } = {}) {
|
|
762
|
+
const total = await this.total({ range, steps });
|
|
763
|
+
const earned = await this.earned({ range, steps });
|
|
764
|
+
const result = {};
|
|
765
|
+
for (const stepString of Object.keys(total)) {
|
|
766
|
+
result[stepString] = asAttoXL13(total[stepString] - (earned[stepString] ?? 0n));
|
|
767
|
+
}
|
|
768
|
+
return result;
|
|
769
|
+
}
|
|
770
|
+
claimed(_options) {
|
|
771
|
+
throw new Error("Method [claimed] not implemented.");
|
|
772
|
+
}
|
|
773
|
+
async createHandler() {
|
|
774
|
+
await super.createHandler();
|
|
775
|
+
this._blockViewer = await this.locator.getInstance(BlockViewerMoniker3);
|
|
776
|
+
this._finalizationViewer = await this.locator.getInstance(FinalizationViewerMoniker4);
|
|
777
|
+
this._stakeViewer = await this.locator.getInstance(StakeViewerMoniker4);
|
|
778
|
+
}
|
|
779
|
+
async earned({ range, steps } = {}) {
|
|
780
|
+
const result = {};
|
|
781
|
+
const resolvedSteps = steps ?? blockRangeSteps3(asXL1BlockRange3(
|
|
782
|
+
range ?? [0, await this.finalizationViewer.headNumber()],
|
|
783
|
+
{ name: "NodeStepRewardsByStepViewer" }
|
|
784
|
+
), [3, 4, 5, 6, 7]);
|
|
785
|
+
for (const step of resolvedSteps) {
|
|
786
|
+
const stepIdentityString = toStepIdentityString2(step);
|
|
787
|
+
const reward = await networkStakeStepRewardEarned(
|
|
788
|
+
this.context,
|
|
789
|
+
this.blockViewer,
|
|
790
|
+
this.stakeViewer,
|
|
791
|
+
step
|
|
792
|
+
);
|
|
793
|
+
result[stepIdentityString] = asAttoXL13((result[stepIdentityString] ?? 0n) + reward[0]);
|
|
794
|
+
}
|
|
795
|
+
return result;
|
|
796
|
+
}
|
|
797
|
+
async total({ range, steps } = {}) {
|
|
798
|
+
const result = {};
|
|
799
|
+
const head = await this.finalizationViewer.head();
|
|
800
|
+
const resolvedSteps = steps ?? blockRangeSteps3(asXL1BlockRange3(
|
|
801
|
+
range ?? [0, head[1]],
|
|
802
|
+
{ name: "NodeStepRewardsByStepViewer" }
|
|
803
|
+
), [3, 4, 5, 6, 7]);
|
|
804
|
+
for (const step of resolvedSteps) {
|
|
805
|
+
const stepIdentityString = toStepIdentityString2(step);
|
|
806
|
+
const reward = await networkStakeStepRewardEarned(
|
|
807
|
+
this.context,
|
|
808
|
+
this.blockViewer,
|
|
809
|
+
this.stakeViewer,
|
|
810
|
+
step,
|
|
811
|
+
this.rewardMultipliers
|
|
812
|
+
);
|
|
813
|
+
result[stepIdentityString] = asAttoXL13((result[stepIdentityString] ?? 0n) + reward[0]);
|
|
814
|
+
}
|
|
815
|
+
return result;
|
|
816
|
+
}
|
|
817
|
+
unclaimed(_options = {}) {
|
|
818
|
+
throw new Error("Method [unclaimed] ot implemented.");
|
|
819
|
+
}
|
|
820
|
+
};
|
|
821
|
+
__publicField(SimpleStepRewardsByStepViewer, "connectionTypes", ["lmdb", "mongo", "memory", "rpc"]);
|
|
822
|
+
__publicField(SimpleStepRewardsByStepViewer, "defaultMoniker", NetworkStakeStepRewardsByStepViewerMoniker);
|
|
823
|
+
__publicField(SimpleStepRewardsByStepViewer, "dependencies", [BlockViewerMoniker3, FinalizationViewerMoniker4, StakeViewerMoniker4]);
|
|
824
|
+
__publicField(SimpleStepRewardsByStepViewer, "monikers", [NetworkStakeStepRewardsByStepViewerMoniker]);
|
|
825
|
+
__publicField(SimpleStepRewardsByStepViewer, "surface", "node");
|
|
826
|
+
SimpleStepRewardsByStepViewer = __decorateClass([
|
|
827
|
+
creatableProvider8()
|
|
828
|
+
], SimpleStepRewardsByStepViewer);
|
|
829
|
+
|
|
830
|
+
// src/SimpleStepRewards/SimpleStepRewardsTotalViewer.ts
|
|
831
|
+
import { asAttoXL1 as asAttoXL14, NetworkStakeStepRewardsTotalViewerMoniker } from "@xyo-network/xl1-protocol-lib";
|
|
832
|
+
import {
|
|
833
|
+
AbstractCreatableProvider as AbstractCreatableProvider9,
|
|
834
|
+
creatableProvider as creatableProvider9
|
|
835
|
+
} from "@xyo-network/xl1-protocol-sdk";
|
|
836
|
+
var SimpleStepRewardsTotalViewer = class extends AbstractCreatableProvider9 {
|
|
837
|
+
moniker = SimpleStepRewardsTotalViewer.defaultMoniker;
|
|
838
|
+
get rewardMultipliers() {
|
|
839
|
+
return this.params.rewardMultipliers ?? {};
|
|
840
|
+
}
|
|
841
|
+
async bonus({ range } = {}) {
|
|
842
|
+
const total = await this.total({ range });
|
|
843
|
+
const earned = await this.earned({ range });
|
|
844
|
+
return asAttoXL14(total - earned);
|
|
845
|
+
}
|
|
846
|
+
claimed(_options) {
|
|
847
|
+
throw new Error("Method [claimed] not implemented.");
|
|
848
|
+
}
|
|
849
|
+
async earned(options = {}) {
|
|
850
|
+
return await this.calculateRewards(options);
|
|
851
|
+
}
|
|
852
|
+
async total(options = {}) {
|
|
853
|
+
return await this.calculateRewards(options, this.rewardMultipliers);
|
|
854
|
+
}
|
|
855
|
+
unclaimed(_options = {}) {
|
|
856
|
+
throw new Error("Method [unclaimed] not implemented.");
|
|
857
|
+
}
|
|
858
|
+
calculateRewards(_options = {}, _rewardMultipliers) {
|
|
859
|
+
throw new Error("Method [calculateRewards] not implemented.");
|
|
860
|
+
}
|
|
861
|
+
};
|
|
862
|
+
__publicField(SimpleStepRewardsTotalViewer, "connectionTypes", ["lmdb", "mongo", "memory", "rpc"]);
|
|
863
|
+
__publicField(SimpleStepRewardsTotalViewer, "defaultMoniker", NetworkStakeStepRewardsTotalViewerMoniker);
|
|
864
|
+
__publicField(SimpleStepRewardsTotalViewer, "dependencies", []);
|
|
865
|
+
__publicField(SimpleStepRewardsTotalViewer, "monikers", [NetworkStakeStepRewardsTotalViewerMoniker]);
|
|
866
|
+
__publicField(SimpleStepRewardsTotalViewer, "surface", "node");
|
|
867
|
+
SimpleStepRewardsTotalViewer = __decorateClass([
|
|
868
|
+
creatableProvider9()
|
|
869
|
+
], SimpleStepRewardsTotalViewer);
|
|
870
|
+
|
|
871
|
+
// src/SimpleStepRewards/SimpleStepRewardsViewer.ts
|
|
872
|
+
import { assertEx as assertEx3 } from "@ariestools/sdk";
|
|
873
|
+
import {
|
|
874
|
+
BlockViewerMoniker as BlockViewerMoniker4,
|
|
875
|
+
NetworkStakeStepRewardsByPositionViewerMoniker as NetworkStakeStepRewardsByPositionViewerMoniker2,
|
|
876
|
+
NetworkStakeStepRewardsByStakerViewerMoniker as NetworkStakeStepRewardsByStakerViewerMoniker2,
|
|
877
|
+
NetworkStakeStepRewardsByStepViewerMoniker as NetworkStakeStepRewardsByStepViewerMoniker2,
|
|
878
|
+
NetworkStakeStepRewardsViewerMoniker as NetworkStakeStepRewardsViewerMoniker2
|
|
879
|
+
} from "@xyo-network/xl1-protocol-lib";
|
|
880
|
+
import {
|
|
881
|
+
AbstractCreatableProvider as AbstractCreatableProvider10,
|
|
882
|
+
creatableProvider as creatableProvider10
|
|
883
|
+
} from "@xyo-network/xl1-protocol-sdk";
|
|
884
|
+
var SimpleStepRewardsViewer = class extends AbstractCreatableProvider10 {
|
|
885
|
+
moniker = SimpleStepRewardsViewer.defaultMoniker;
|
|
886
|
+
_blockViewer;
|
|
887
|
+
_position;
|
|
888
|
+
_staker;
|
|
889
|
+
_step;
|
|
890
|
+
get position() {
|
|
891
|
+
return assertEx3(this._position, () => "Position viewer not initialized");
|
|
892
|
+
}
|
|
893
|
+
get staker() {
|
|
894
|
+
return assertEx3(this._staker, () => "Position viewer not initialized");
|
|
895
|
+
}
|
|
896
|
+
get step() {
|
|
897
|
+
return assertEx3(this._step, () => "Step viewer not initialized");
|
|
898
|
+
}
|
|
899
|
+
get total() {
|
|
900
|
+
throw new Error("Method [total] not implemented.");
|
|
901
|
+
}
|
|
902
|
+
get rewardMultipliers() {
|
|
903
|
+
return this.params.rewardMultipliers;
|
|
904
|
+
}
|
|
905
|
+
async createHandler() {
|
|
906
|
+
await super.createHandler();
|
|
907
|
+
this._blockViewer = await this.locator.getInstance(BlockViewerMoniker4);
|
|
908
|
+
this._position = await this.locator.getInstance(NetworkStakeStepRewardsByPositionViewerMoniker2);
|
|
909
|
+
this._staker = await this.locator.getInstance(NetworkStakeStepRewardsByStakerViewerMoniker2);
|
|
910
|
+
this._step = await this.locator.getInstance(NetworkStakeStepRewardsByStepViewerMoniker2);
|
|
911
|
+
}
|
|
912
|
+
async startHandler() {
|
|
913
|
+
await super.startHandler();
|
|
914
|
+
await assertEx3(this._position, () => "Position viewer not created").start();
|
|
915
|
+
await assertEx3(this._staker, () => "Staker viewer not created").start();
|
|
916
|
+
await assertEx3(this._step, () => "Step viewer not created").start();
|
|
917
|
+
}
|
|
918
|
+
};
|
|
919
|
+
__publicField(SimpleStepRewardsViewer, "connectionTypes", ["lmdb", "mongo", "memory", "rpc"]);
|
|
920
|
+
__publicField(SimpleStepRewardsViewer, "defaultMoniker", NetworkStakeStepRewardsViewerMoniker2);
|
|
921
|
+
__publicField(SimpleStepRewardsViewer, "dependencies", [
|
|
922
|
+
BlockViewerMoniker4,
|
|
923
|
+
NetworkStakeStepRewardsByPositionViewerMoniker2,
|
|
924
|
+
NetworkStakeStepRewardsByStakerViewerMoniker2,
|
|
925
|
+
NetworkStakeStepRewardsByStepViewerMoniker2
|
|
926
|
+
]);
|
|
927
|
+
__publicField(SimpleStepRewardsViewer, "monikers", [NetworkStakeStepRewardsViewerMoniker2]);
|
|
928
|
+
__publicField(SimpleStepRewardsViewer, "surface", "node");
|
|
929
|
+
SimpleStepRewardsViewer = __decorateClass([
|
|
930
|
+
creatableProvider10()
|
|
931
|
+
], SimpleStepRewardsViewer);
|
|
932
|
+
|
|
933
|
+
// src/SimpleStepViewer.ts
|
|
934
|
+
import {
|
|
935
|
+
BlockViewerMoniker as BlockViewerMoniker5,
|
|
936
|
+
NetworkStakeStepRewardsViewerMoniker as NetworkStakeStepRewardsViewerMoniker3,
|
|
937
|
+
StakeEventsViewerMoniker,
|
|
938
|
+
StakeViewerMoniker as StakeViewerMoniker5,
|
|
939
|
+
StepViewerMoniker
|
|
940
|
+
} from "@xyo-network/xl1-protocol-lib";
|
|
941
|
+
import {
|
|
942
|
+
AbstractCreatableProvider as AbstractCreatableProvider11,
|
|
943
|
+
creatableProvider as creatableProvider11,
|
|
944
|
+
externalBlockRangeFromStep as externalBlockRangeFromStep2
|
|
945
|
+
} from "@xyo-network/xl1-protocol-sdk";
|
|
946
|
+
var SimpleStepViewer = class extends AbstractCreatableProvider11 {
|
|
947
|
+
moniker = SimpleStepViewer.defaultMoniker;
|
|
948
|
+
_blockViewer;
|
|
949
|
+
_networkStakeStepRewardsViewer;
|
|
950
|
+
_stakeEventsViewer;
|
|
951
|
+
_stakeViewer;
|
|
952
|
+
get rewards() {
|
|
953
|
+
return this._networkStakeStepRewardsViewer;
|
|
954
|
+
}
|
|
955
|
+
get blockViewer() {
|
|
956
|
+
return this._blockViewer;
|
|
957
|
+
}
|
|
958
|
+
get stakeEventsViewer() {
|
|
959
|
+
return this._stakeEventsViewer;
|
|
960
|
+
}
|
|
961
|
+
get stakeViewer() {
|
|
962
|
+
return this._stakeViewer;
|
|
963
|
+
}
|
|
964
|
+
async createHandler() {
|
|
965
|
+
await super.createHandler();
|
|
966
|
+
this._blockViewer = await this.locator.getInstance(BlockViewerMoniker5);
|
|
967
|
+
this._networkStakeStepRewardsViewer = await this.locator.getInstance(NetworkStakeStepRewardsViewerMoniker3);
|
|
968
|
+
this._stakeViewer = await this.locator.getInstance(StakeViewerMoniker5);
|
|
969
|
+
this._stakeEventsViewer = await this.locator.getInstance(StakeEventsViewerMoniker);
|
|
970
|
+
}
|
|
971
|
+
async positionCount(step) {
|
|
972
|
+
const externalRange = await externalBlockRangeFromStep2(this.context, this.blockViewer, step);
|
|
973
|
+
const positionCount = await this.stakeEventsViewer.positionCount(externalRange);
|
|
974
|
+
return positionCount;
|
|
975
|
+
}
|
|
976
|
+
// TODO: Implement paging
|
|
977
|
+
async positions(step, _options) {
|
|
978
|
+
const count = await this.positionCount(step);
|
|
979
|
+
const externalRange = await externalBlockRangeFromStep2(this.context, this.blockViewer, step);
|
|
980
|
+
const allPositions = await Promise.all(Array.from({ length: count + 1 }, (_, i) => i).map(async (id) => this.stakeViewer.stakeById(id)));
|
|
981
|
+
return allPositions.filter((pos) => pos.addBlock <= externalRange[1] && (pos.removeBlock === 0 || pos.removeBlock > externalRange[0]));
|
|
982
|
+
}
|
|
983
|
+
randomizer(_step) {
|
|
984
|
+
throw new Error("Method [randomizer] not implemented.");
|
|
985
|
+
}
|
|
986
|
+
stake(_step) {
|
|
987
|
+
throw new Error("Method [stake] not implemented.");
|
|
988
|
+
}
|
|
989
|
+
stakerCount(_step) {
|
|
990
|
+
throw new Error("Method [stakerCount] not implemented.");
|
|
991
|
+
}
|
|
992
|
+
stakers(_step, _options) {
|
|
993
|
+
throw new Error("Method [stakers] not implemented.");
|
|
994
|
+
}
|
|
995
|
+
weight(_step, _positionId) {
|
|
996
|
+
throw new Error("Method [weight] not implemented.");
|
|
997
|
+
}
|
|
998
|
+
};
|
|
999
|
+
__publicField(SimpleStepViewer, "connectionTypes", ["lmdb", "mongo", "memory", "rpc"]);
|
|
1000
|
+
__publicField(SimpleStepViewer, "defaultMoniker", StepViewerMoniker);
|
|
1001
|
+
__publicField(SimpleStepViewer, "dependencies", [
|
|
1002
|
+
BlockViewerMoniker5,
|
|
1003
|
+
NetworkStakeStepRewardsViewerMoniker3,
|
|
1004
|
+
StakeViewerMoniker5,
|
|
1005
|
+
StakeEventsViewerMoniker
|
|
1006
|
+
]);
|
|
1007
|
+
__publicField(SimpleStepViewer, "monikers", [StepViewerMoniker]);
|
|
1008
|
+
__publicField(SimpleStepViewer, "surface", "node");
|
|
1009
|
+
SimpleStepViewer = __decorateClass([
|
|
1010
|
+
creatableProvider11()
|
|
1011
|
+
], SimpleStepViewer);
|
|
1012
|
+
|
|
1013
|
+
// src/SimpleXyoViewer.ts
|
|
1014
|
+
import {
|
|
1015
|
+
assertEx as assertEx4,
|
|
1016
|
+
toAddress
|
|
1017
|
+
} from "@ariestools/sdk";
|
|
1187
1018
|
import {
|
|
1188
|
-
|
|
1019
|
+
AccountBalanceViewerMoniker,
|
|
1020
|
+
asAttoXL1 as asAttoXL15,
|
|
1189
1021
|
asXL1BlockRange as asXL1BlockRange4,
|
|
1190
|
-
BlockViewerMoniker as
|
|
1022
|
+
BlockViewerMoniker as BlockViewerMoniker6,
|
|
1023
|
+
ChainContractViewerMoniker,
|
|
1191
1024
|
FinalizationViewerMoniker as FinalizationViewerMoniker5,
|
|
1192
|
-
|
|
1193
|
-
|
|
1025
|
+
MempoolViewerMoniker,
|
|
1026
|
+
NetworkStakeStepRewardsByPositionViewerMoniker as NetworkStakeStepRewardsByPositionViewerMoniker3,
|
|
1027
|
+
NetworkStakeViewerMoniker as NetworkStakeViewerMoniker2,
|
|
1028
|
+
StakeViewerMoniker as StakeViewerMoniker6,
|
|
1029
|
+
StepViewerMoniker as StepViewerMoniker2,
|
|
1030
|
+
TimeSyncViewerMoniker,
|
|
1031
|
+
TransactionViewerMoniker,
|
|
1032
|
+
XYO_NETWORK_STAKING_ADDRESS as XYO_NETWORK_STAKING_ADDRESS4,
|
|
1033
|
+
XYO_ZERO_ADDRESS,
|
|
1034
|
+
XyoViewerMoniker as XyoViewerMoniker3
|
|
1194
1035
|
} from "@xyo-network/xl1-protocol-lib";
|
|
1195
1036
|
import {
|
|
1196
|
-
AbstractCreatableProvider as
|
|
1037
|
+
AbstractCreatableProvider as AbstractCreatableProvider12,
|
|
1038
|
+
allStakersForStep,
|
|
1197
1039
|
blockRangeSteps as blockRangeSteps4,
|
|
1198
|
-
creatableProvider as
|
|
1199
|
-
|
|
1040
|
+
creatableProvider as creatableProvider12,
|
|
1041
|
+
externalBlockRangeFromStep as externalBlockRangeFromStep3,
|
|
1042
|
+
externalBlockRangeFromXL1BlockRange,
|
|
1043
|
+
networkStakeStepRewardPositionWeight,
|
|
1044
|
+
stepRewardTotal as stepRewardTotal2,
|
|
1045
|
+
toStepIdentityString as toStepIdentityString3,
|
|
1046
|
+
weightedStakeForRangeByPosition as weightedStakeForRangeByPosition2,
|
|
1047
|
+
withContextCacheResponse as withContextCacheResponse4
|
|
1200
1048
|
} from "@xyo-network/xl1-protocol-sdk";
|
|
1201
|
-
var
|
|
1202
|
-
moniker =
|
|
1049
|
+
var SimpleXyoViewer = class extends AbstractCreatableProvider12 {
|
|
1050
|
+
moniker = SimpleXyoViewer.defaultMoniker;
|
|
1051
|
+
_tracer;
|
|
1052
|
+
_accountBalanceViewer;
|
|
1203
1053
|
_blockViewer;
|
|
1054
|
+
_chainContractViewer;
|
|
1055
|
+
_chainId;
|
|
1204
1056
|
_finalizationViewer;
|
|
1057
|
+
_mempoolViewer;
|
|
1058
|
+
_networkStakeViewer;
|
|
1059
|
+
_networkStepRewardsByPositionViewer;
|
|
1060
|
+
_rewardMultipliers;
|
|
1205
1061
|
_stakeViewer;
|
|
1206
|
-
|
|
1207
|
-
|
|
1062
|
+
_stepViewer;
|
|
1063
|
+
_timeSyncViewer;
|
|
1064
|
+
_transaction;
|
|
1065
|
+
get account() {
|
|
1066
|
+
return { balance: this._accountBalanceViewer };
|
|
1208
1067
|
}
|
|
1209
|
-
get
|
|
1068
|
+
get block() {
|
|
1210
1069
|
return this._blockViewer;
|
|
1211
1070
|
}
|
|
1212
|
-
get
|
|
1071
|
+
get chainContractViewer() {
|
|
1072
|
+
return this._chainContractViewer;
|
|
1073
|
+
}
|
|
1074
|
+
get finalization() {
|
|
1213
1075
|
return this._finalizationViewer;
|
|
1214
1076
|
}
|
|
1215
|
-
get
|
|
1077
|
+
get mempool() {
|
|
1078
|
+
return this._mempoolViewer;
|
|
1079
|
+
}
|
|
1080
|
+
get networkStake() {
|
|
1081
|
+
return this._networkStakeViewer;
|
|
1082
|
+
}
|
|
1083
|
+
get stake() {
|
|
1216
1084
|
return this._stakeViewer;
|
|
1217
1085
|
}
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
const earned = await this.earned({ range, steps });
|
|
1221
|
-
const result = {};
|
|
1222
|
-
for (const stepString of Object.keys(total)) {
|
|
1223
|
-
result[stepString] = asAttoXL14(total[stepString] - (earned[stepString] ?? 0n));
|
|
1224
|
-
}
|
|
1225
|
-
return result;
|
|
1086
|
+
get step() {
|
|
1087
|
+
return this._stepViewer;
|
|
1226
1088
|
}
|
|
1227
|
-
|
|
1228
|
-
|
|
1089
|
+
get time() {
|
|
1090
|
+
return this._timeSyncViewer;
|
|
1091
|
+
}
|
|
1092
|
+
get transaction() {
|
|
1093
|
+
return this._transaction;
|
|
1094
|
+
}
|
|
1095
|
+
get finalizationViewer() {
|
|
1096
|
+
return this._finalizationViewer;
|
|
1097
|
+
}
|
|
1098
|
+
get initRewardsCache() {
|
|
1099
|
+
return this.params.initRewardsCache ?? true;
|
|
1100
|
+
}
|
|
1101
|
+
get networkStepRewardsByPositionViewer() {
|
|
1102
|
+
return this._networkStepRewardsByPositionViewer;
|
|
1103
|
+
}
|
|
1104
|
+
get rewardMultipliers() {
|
|
1105
|
+
this._rewardMultipliers = this._rewardMultipliers ?? this.params.rewardMultipliers ?? {};
|
|
1106
|
+
return this._rewardMultipliers;
|
|
1107
|
+
}
|
|
1108
|
+
async accountBalance(address, config = {}) {
|
|
1109
|
+
return await this.account.balance.accountBalance(address, config);
|
|
1110
|
+
}
|
|
1111
|
+
async accountBalanceHistory(address, config = {}) {
|
|
1112
|
+
return await this.account.balance.accountBalanceHistory(address, config);
|
|
1113
|
+
}
|
|
1114
|
+
async blockByHash(hash) {
|
|
1115
|
+
return await this.block.blockByHash(hash);
|
|
1116
|
+
}
|
|
1117
|
+
async blockByNumber(blockNumber) {
|
|
1118
|
+
return await this.block.blockByNumber(blockNumber);
|
|
1119
|
+
}
|
|
1120
|
+
async blocksByHash(hash, limit = 10) {
|
|
1121
|
+
return await this.block.blocksByHash(hash, limit);
|
|
1122
|
+
}
|
|
1123
|
+
async blocksByNumber(blockNumber, limit = 10) {
|
|
1124
|
+
return await this.block.blocksByNumber(blockNumber, limit);
|
|
1125
|
+
}
|
|
1126
|
+
async blocksByStep(stepLevel, stepIndex) {
|
|
1127
|
+
return await this.block.blocksByStep(stepLevel, stepIndex);
|
|
1128
|
+
}
|
|
1129
|
+
async chainId(blockNumber = "latest") {
|
|
1130
|
+
return await this.spanAsync("SimpleXyoViewer:chainId", async () => {
|
|
1131
|
+
const chainId = assertEx4(
|
|
1132
|
+
blockNumber === "latest" ? this._chainId : await this.chainContractViewer.chainIdAtBlockNumber(blockNumber),
|
|
1133
|
+
() => `Could not find block for chainId at block ${blockNumber}`
|
|
1134
|
+
);
|
|
1135
|
+
return chainId;
|
|
1136
|
+
}, this.context);
|
|
1229
1137
|
}
|
|
1230
1138
|
async createHandler() {
|
|
1231
1139
|
await super.createHandler();
|
|
1232
|
-
this.
|
|
1140
|
+
this._accountBalanceViewer = await this.locator.getInstance(AccountBalanceViewerMoniker);
|
|
1141
|
+
this._blockViewer = await this.locator.getInstance(BlockViewerMoniker6);
|
|
1142
|
+
this._chainContractViewer = await this.locator.getInstance(ChainContractViewerMoniker);
|
|
1233
1143
|
this._finalizationViewer = await this.locator.getInstance(FinalizationViewerMoniker5);
|
|
1234
|
-
this.
|
|
1144
|
+
this._mempoolViewer = await this.locator.getInstance(MempoolViewerMoniker);
|
|
1145
|
+
this._networkStakeViewer = await this.locator.getInstance(NetworkStakeViewerMoniker2);
|
|
1146
|
+
this._networkStepRewardsByPositionViewer = await this.locator.getInstance(NetworkStakeStepRewardsByPositionViewerMoniker3);
|
|
1147
|
+
this._stakeViewer = await this.locator.getInstance(StakeViewerMoniker6);
|
|
1148
|
+
this._stepViewer = await this.locator.getInstance(StepViewerMoniker2);
|
|
1149
|
+
this._timeSyncViewer = await this.locator.getInstance(TimeSyncViewerMoniker);
|
|
1150
|
+
this._transaction = await this.locator.getInstance(TransactionViewerMoniker);
|
|
1151
|
+
this._chainId = await this._chainContractViewer.chainId();
|
|
1235
1152
|
}
|
|
1236
|
-
async
|
|
1237
|
-
|
|
1238
|
-
const resolvedSteps = steps ?? blockRangeSteps4(asXL1BlockRange4(
|
|
1239
|
-
range ?? [0, await this.finalizationViewer.headNumber()],
|
|
1240
|
-
{ name: "NodeStepRewardsByStepViewer" }
|
|
1241
|
-
), [3, 4, 5, 6, 7]);
|
|
1242
|
-
for (const step of resolvedSteps) {
|
|
1243
|
-
const stepIdentityString = toStepIdentityString3(step);
|
|
1244
|
-
const reward = await networkStakeStepRewardEarned(
|
|
1245
|
-
this.context,
|
|
1246
|
-
this.blockViewer,
|
|
1247
|
-
this.stakeViewer,
|
|
1248
|
-
step
|
|
1249
|
-
);
|
|
1250
|
-
result[stepIdentityString] = asAttoXL14((result[stepIdentityString] ?? 0n) + reward[0]);
|
|
1251
|
-
}
|
|
1252
|
-
return result;
|
|
1153
|
+
async currentBlock() {
|
|
1154
|
+
return await this.block.currentBlock();
|
|
1253
1155
|
}
|
|
1254
|
-
async
|
|
1255
|
-
|
|
1256
|
-
const head = await this.finalizationViewer.head();
|
|
1257
|
-
const resolvedSteps = steps ?? blockRangeSteps4(asXL1BlockRange4(
|
|
1258
|
-
range ?? [0, head[1]],
|
|
1259
|
-
{ name: "NodeStepRewardsByStepViewer" }
|
|
1260
|
-
), [3, 4, 5, 6, 7]);
|
|
1261
|
-
for (const step of resolvedSteps) {
|
|
1262
|
-
const stepIdentityString = toStepIdentityString3(step);
|
|
1263
|
-
const reward = await networkStakeStepRewardEarned(
|
|
1264
|
-
this.context,
|
|
1265
|
-
this.blockViewer,
|
|
1266
|
-
this.stakeViewer,
|
|
1267
|
-
step,
|
|
1268
|
-
this.rewardMultipliers
|
|
1269
|
-
);
|
|
1270
|
-
result[stepIdentityString] = asAttoXL14((result[stepIdentityString] ?? 0n) + reward[0]);
|
|
1271
|
-
}
|
|
1272
|
-
return result;
|
|
1156
|
+
async currentBlockHash() {
|
|
1157
|
+
return await this.block.currentBlockHash();
|
|
1273
1158
|
}
|
|
1274
|
-
|
|
1275
|
-
|
|
1159
|
+
async currentBlockNumber() {
|
|
1160
|
+
return await this.block.currentBlockNumber();
|
|
1276
1161
|
}
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
__publicField(SimpleStepRewardsByStepViewer, "defaultMoniker", NetworkStakeStepRewardsByStepViewerMoniker);
|
|
1280
|
-
__publicField(SimpleStepRewardsByStepViewer, "dependencies", [BlockViewerMoniker4, FinalizationViewerMoniker5, StakeViewerMoniker5]);
|
|
1281
|
-
__publicField(SimpleStepRewardsByStepViewer, "monikers", [NetworkStakeStepRewardsByStepViewerMoniker]);
|
|
1282
|
-
__publicField(SimpleStepRewardsByStepViewer, "surface", "node");
|
|
1283
|
-
SimpleStepRewardsByStepViewer = __decorateClass([
|
|
1284
|
-
creatableProvider11()
|
|
1285
|
-
], SimpleStepRewardsByStepViewer);
|
|
1286
|
-
|
|
1287
|
-
// src/SimpleStepRewards/SimpleStepRewardsTotalViewer.ts
|
|
1288
|
-
import { asAttoXL1 as asAttoXL15, NetworkStakeStepRewardsTotalViewerMoniker } from "@xyo-network/xl1-protocol-lib";
|
|
1289
|
-
import {
|
|
1290
|
-
AbstractCreatableProvider as AbstractCreatableProvider11,
|
|
1291
|
-
creatableProvider as creatableProvider12
|
|
1292
|
-
} from "@xyo-network/xl1-protocol-sdk";
|
|
1293
|
-
var SimpleStepRewardsTotalViewer = class extends AbstractCreatableProvider11 {
|
|
1294
|
-
moniker = SimpleStepRewardsTotalViewer.defaultMoniker;
|
|
1295
|
-
get rewardMultipliers() {
|
|
1296
|
-
return this.params.rewardMultipliers ?? {};
|
|
1162
|
+
forkHistory() {
|
|
1163
|
+
throw new Error("Method [forkHistory] not implemented.");
|
|
1297
1164
|
}
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
const earned = await this.earned({ range });
|
|
1301
|
-
return asAttoXL15(total - earned);
|
|
1165
|
+
networkStakeStepRewardAddressHistory(_address) {
|
|
1166
|
+
throw new Error("Method [networkStakeStepRewardAddressHistory] not implemented.");
|
|
1302
1167
|
}
|
|
1303
|
-
|
|
1304
|
-
throw new Error("Method [
|
|
1168
|
+
networkStakeStepRewardAddressReward(_context, _address) {
|
|
1169
|
+
throw new Error("Method [networkStakeStepRewardAddressReward] not implemented.");
|
|
1305
1170
|
}
|
|
1306
|
-
|
|
1307
|
-
|
|
1171
|
+
networkStakeStepRewardAddressShare(_context, _address) {
|
|
1172
|
+
throw new Error("Method [networkStakeStepRewardAddressShare] not implemented.");
|
|
1308
1173
|
}
|
|
1309
|
-
|
|
1310
|
-
|
|
1174
|
+
networkStakeStepRewardClaimedByAddress(_address) {
|
|
1175
|
+
throw new Error("Method [networkStakeStepRewardClaimedByAddress] not implemented.");
|
|
1311
1176
|
}
|
|
1312
|
-
|
|
1313
|
-
|
|
1177
|
+
async networkStakeStepRewardForPosition(position, range) {
|
|
1178
|
+
const cacheKey = `${position}|${range[0]}-${range[1]}`;
|
|
1179
|
+
return await withContextCacheResponse4(this.context, "SimpleXyoViewer:networkStakeStepRewardForPosition", cacheKey, async () => {
|
|
1180
|
+
const externalRange = await externalBlockRangeFromXL1BlockRange(this.context, this.block, range);
|
|
1181
|
+
const positionCount = await this.stake.stakeEvents.positionCount(externalRange);
|
|
1182
|
+
if (positionCount === 0) {
|
|
1183
|
+
return [asAttoXL15(0n), asAttoXL15(0n)];
|
|
1184
|
+
}
|
|
1185
|
+
const steps = blockRangeSteps4(range, [3, 4, 5, 6, 7]);
|
|
1186
|
+
const rewards = await Promise.all(steps.map((step) => this.networkStakeStepRewardForStepForPosition(step, position)));
|
|
1187
|
+
const positionReward = asAttoXL15(rewards.reduce((a, b) => a + b[0], 0n));
|
|
1188
|
+
const totalReward = asAttoXL15(rewards.reduce((a, b) => a + b[1], 0n));
|
|
1189
|
+
return [positionReward, totalReward];
|
|
1190
|
+
});
|
|
1191
|
+
}
|
|
1192
|
+
async networkStakeStepRewardForStep(stepContext) {
|
|
1193
|
+
return await stepRewardTotal2(this.context, this.block, stepContext, this.rewardMultipliers);
|
|
1194
|
+
}
|
|
1195
|
+
async networkStakeStepRewardForStepForPosition(stepIdentity, position) {
|
|
1196
|
+
const stepIdentityString = toStepIdentityString3(stepIdentity);
|
|
1197
|
+
const cacheKey = `${stepIdentityString}|${position}`;
|
|
1198
|
+
return await withContextCacheResponse4(this.context, "SimpleXyoViewer:networkStakeStepRewardForStepForPosition", cacheKey, async () => {
|
|
1199
|
+
const range = await externalBlockRangeFromStep3(this.context, this.block, stepIdentity);
|
|
1200
|
+
const stake = await this.stakeById(position);
|
|
1201
|
+
const numerator = stake.staked === XYO_NETWORK_STAKING_ADDRESS4 ? await weightedStakeForRangeByPosition2(this.context, this.block, this.stake.stakeEvents, range, XYO_NETWORK_STAKING_ADDRESS4, position) : 0n;
|
|
1202
|
+
const denominator = await this.stepWeightedDenominator(stepIdentity);
|
|
1203
|
+
const totalReward = await this.networkStakeStepRewardForStep(stepIdentity);
|
|
1204
|
+
const positionReward = asAttoXL15(denominator > 0n ? totalReward * numerator / denominator : 0n);
|
|
1205
|
+
const result = [positionReward, totalReward];
|
|
1206
|
+
return result;
|
|
1207
|
+
});
|
|
1208
|
+
}
|
|
1209
|
+
async networkStakeStepRewardPoolRewards(step) {
|
|
1210
|
+
const stakes = await this.stake.stakesByStaked(XYO_NETWORK_STAKING_ADDRESS4);
|
|
1211
|
+
const rewards = [];
|
|
1212
|
+
for (const stake of stakes) {
|
|
1213
|
+
rewards.push([stake.staker, await this.networkStakeStepRewardForStepForPosition(
|
|
1214
|
+
step,
|
|
1215
|
+
stake.id
|
|
1216
|
+
)]);
|
|
1217
|
+
}
|
|
1218
|
+
const result = {};
|
|
1219
|
+
for (const [staker, reward] of rewards) {
|
|
1220
|
+
result[staker] = asAttoXL15((result[staker] ?? 0n) + reward[0]);
|
|
1221
|
+
}
|
|
1222
|
+
const filtered = Object.fromEntries(Object.entries(result).filter(([_, v]) => v > 0n));
|
|
1223
|
+
return filtered;
|
|
1224
|
+
}
|
|
1225
|
+
networkStakeStepRewardPoolShares(_context) {
|
|
1226
|
+
throw new Error("Method [networkStakeStepRewardPoolShares] not implemented.");
|
|
1227
|
+
}
|
|
1228
|
+
async networkStakeStepRewardPositionWeight(stepContext, position) {
|
|
1229
|
+
return await networkStakeStepRewardPositionWeight(this.context, this.block, this.stake.stakeEvents, stepContext, position);
|
|
1230
|
+
}
|
|
1231
|
+
networkStakeStepRewardPotentialPositionLoss(_context, _position) {
|
|
1232
|
+
throw new Error("Method [networkStakeStepRewardPotentialPositionLoss] not implemented.");
|
|
1233
|
+
}
|
|
1234
|
+
networkStakeStepRewardRandomizer(_context) {
|
|
1235
|
+
throw new Error("Method [networkStakeStepRewardRandomizer] not implemented.");
|
|
1314
1236
|
}
|
|
1315
|
-
|
|
1316
|
-
|
|
1237
|
+
async networkStakeStepRewardStakerCount(stepContext) {
|
|
1238
|
+
return Object.keys(await allStakersForStep(
|
|
1239
|
+
this.context,
|
|
1240
|
+
this.block,
|
|
1241
|
+
this.stake.stakeEvents,
|
|
1242
|
+
stepContext,
|
|
1243
|
+
XYO_NETWORK_STAKING_ADDRESS4
|
|
1244
|
+
)).length;
|
|
1317
1245
|
}
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
__publicField(SimpleStepRewardsTotalViewer, "defaultMoniker", NetworkStakeStepRewardsTotalViewerMoniker);
|
|
1321
|
-
__publicField(SimpleStepRewardsTotalViewer, "dependencies", []);
|
|
1322
|
-
__publicField(SimpleStepRewardsTotalViewer, "monikers", [NetworkStakeStepRewardsTotalViewerMoniker]);
|
|
1323
|
-
__publicField(SimpleStepRewardsTotalViewer, "surface", "node");
|
|
1324
|
-
SimpleStepRewardsTotalViewer = __decorateClass([
|
|
1325
|
-
creatableProvider12()
|
|
1326
|
-
], SimpleStepRewardsTotalViewer);
|
|
1327
|
-
|
|
1328
|
-
// src/SimpleStepRewards/SimpleStepRewardsViewer.ts
|
|
1329
|
-
import { assertEx as assertEx6 } from "@xylabs/sdk";
|
|
1330
|
-
import {
|
|
1331
|
-
BlockViewerMoniker as BlockViewerMoniker5,
|
|
1332
|
-
NetworkStakeStepRewardsByPositionViewerMoniker as NetworkStakeStepRewardsByPositionViewerMoniker3,
|
|
1333
|
-
NetworkStakeStepRewardsByStakerViewerMoniker as NetworkStakeStepRewardsByStakerViewerMoniker2,
|
|
1334
|
-
NetworkStakeStepRewardsByStepViewerMoniker as NetworkStakeStepRewardsByStepViewerMoniker2,
|
|
1335
|
-
NetworkStakeStepRewardsViewerMoniker as NetworkStakeStepRewardsViewerMoniker2
|
|
1336
|
-
} from "@xyo-network/xl1-protocol-lib";
|
|
1337
|
-
import {
|
|
1338
|
-
AbstractCreatableProvider as AbstractCreatableProvider12,
|
|
1339
|
-
creatableProvider as creatableProvider13
|
|
1340
|
-
} from "@xyo-network/xl1-protocol-sdk";
|
|
1341
|
-
var SimpleStepRewardsViewer = class extends AbstractCreatableProvider12 {
|
|
1342
|
-
moniker = SimpleStepRewardsViewer.defaultMoniker;
|
|
1343
|
-
_blockViewer;
|
|
1344
|
-
_position;
|
|
1345
|
-
_staker;
|
|
1346
|
-
_step;
|
|
1347
|
-
get position() {
|
|
1348
|
-
return assertEx6(this._position, () => "Position viewer not initialized");
|
|
1246
|
+
networkStakeStepRewardUnclaimedByAddress(_address) {
|
|
1247
|
+
throw new Error("Method [networkStakeStepRewardUnclaimedByAddress] not implemented.");
|
|
1349
1248
|
}
|
|
1350
|
-
|
|
1351
|
-
|
|
1249
|
+
networkStakeStepRewardWeightForAddress(_context, _address) {
|
|
1250
|
+
throw new Error("Method [networkStakeStepRewardWeightForAddress] not implemented.");
|
|
1352
1251
|
}
|
|
1353
|
-
|
|
1354
|
-
|
|
1252
|
+
async networkStakeStepRewardsForPosition(position, range) {
|
|
1253
|
+
const steps = blockRangeSteps4(range, [3, 4, 5, 6, 7, 8]);
|
|
1254
|
+
const rewards = await Promise.all(steps.map(async (step) => {
|
|
1255
|
+
return [toStepIdentityString3(step), await this.networkStakeStepRewardForStepForPosition(step, position)];
|
|
1256
|
+
}));
|
|
1257
|
+
const result = Object.fromEntries(rewards);
|
|
1258
|
+
const filtered = Object.fromEntries(Object.entries(result).filter(([_, v]) => v[0] > 0n));
|
|
1259
|
+
return filtered;
|
|
1355
1260
|
}
|
|
1356
|
-
|
|
1357
|
-
|
|
1261
|
+
async networkStakeStepRewardsForRange(range) {
|
|
1262
|
+
return await this.spanAsync("networkStakeStepRewardsForRange", async () => {
|
|
1263
|
+
const steps = blockRangeSteps4(range, [3, 4, 5, 6, 7, 8]);
|
|
1264
|
+
const rewards = await Promise.all(steps.map(async (step) => {
|
|
1265
|
+
return await this.networkStakeStepRewardForStep(step);
|
|
1266
|
+
}));
|
|
1267
|
+
return asAttoXL15(rewards.reduce((a, b) => a + b, 0n));
|
|
1268
|
+
}, this.context);
|
|
1358
1269
|
}
|
|
1359
|
-
|
|
1360
|
-
|
|
1270
|
+
async networkStakeStepRewardsForStepLevel(stepLevel, range) {
|
|
1271
|
+
const steps = blockRangeSteps4(range, [stepLevel]);
|
|
1272
|
+
const rewards = await Promise.all(steps.map(async (step) => {
|
|
1273
|
+
return await this.networkStakeStepRewardForStep(step);
|
|
1274
|
+
}));
|
|
1275
|
+
return asAttoXL15(rewards.reduce((a, b) => a + b, 0n));
|
|
1361
1276
|
}
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
this._blockViewer = await this.locator.getInstance(BlockViewerMoniker5);
|
|
1365
|
-
this._position = await this.locator.getInstance(NetworkStakeStepRewardsByPositionViewerMoniker3);
|
|
1366
|
-
this._staker = await this.locator.getInstance(NetworkStakeStepRewardsByStakerViewerMoniker2);
|
|
1367
|
-
this._step = await this.locator.getInstance(NetworkStakeStepRewardsByStepViewerMoniker2);
|
|
1277
|
+
payloadByHash(_hash) {
|
|
1278
|
+
throw new Error("Method [payloadByHash] not implemented.");
|
|
1368
1279
|
}
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
await assertEx6(this._position, () => "Position viewer not created").start();
|
|
1372
|
-
await assertEx6(this._staker, () => "Staker viewer not created").start();
|
|
1373
|
-
await assertEx6(this._step, () => "Step viewer not created").start();
|
|
1280
|
+
payloadsByHash(_hashes) {
|
|
1281
|
+
throw new Error("Method [payloadsByHash] not implemented.");
|
|
1374
1282
|
}
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
__publicField(SimpleStepRewardsViewer, "defaultMoniker", NetworkStakeStepRewardsViewerMoniker2);
|
|
1378
|
-
__publicField(SimpleStepRewardsViewer, "dependencies", [
|
|
1379
|
-
BlockViewerMoniker5,
|
|
1380
|
-
NetworkStakeStepRewardsByPositionViewerMoniker3,
|
|
1381
|
-
NetworkStakeStepRewardsByStakerViewerMoniker2,
|
|
1382
|
-
NetworkStakeStepRewardsByStepViewerMoniker2
|
|
1383
|
-
]);
|
|
1384
|
-
__publicField(SimpleStepRewardsViewer, "monikers", [NetworkStakeStepRewardsViewerMoniker2]);
|
|
1385
|
-
__publicField(SimpleStepRewardsViewer, "surface", "node");
|
|
1386
|
-
SimpleStepRewardsViewer = __decorateClass([
|
|
1387
|
-
creatableProvider13()
|
|
1388
|
-
], SimpleStepRewardsViewer);
|
|
1389
|
-
|
|
1390
|
-
// src/SimpleStepViewer.ts
|
|
1391
|
-
import {
|
|
1392
|
-
BlockViewerMoniker as BlockViewerMoniker6,
|
|
1393
|
-
NetworkStakeStepRewardsViewerMoniker as NetworkStakeStepRewardsViewerMoniker3,
|
|
1394
|
-
StakeEventsViewerMoniker,
|
|
1395
|
-
StakeViewerMoniker as StakeViewerMoniker6,
|
|
1396
|
-
StepViewerMoniker as StepViewerMoniker2
|
|
1397
|
-
} from "@xyo-network/xl1-protocol-lib";
|
|
1398
|
-
import {
|
|
1399
|
-
AbstractCreatableProvider as AbstractCreatableProvider13,
|
|
1400
|
-
creatableProvider as creatableProvider14,
|
|
1401
|
-
externalBlockRangeFromStep as externalBlockRangeFromStep3
|
|
1402
|
-
} from "@xyo-network/xl1-protocol-sdk";
|
|
1403
|
-
var SimpleStepViewer = class extends AbstractCreatableProvider13 {
|
|
1404
|
-
moniker = SimpleStepViewer.defaultMoniker;
|
|
1405
|
-
_blockViewer;
|
|
1406
|
-
_networkStakeStepRewardsViewer;
|
|
1407
|
-
_stakeEventsViewer;
|
|
1408
|
-
_stakeViewer;
|
|
1409
|
-
get rewards() {
|
|
1410
|
-
return this._networkStakeStepRewardsViewer;
|
|
1283
|
+
async rate(range, timeUnit) {
|
|
1284
|
+
return await this.block.rate(range, timeUnit);
|
|
1411
1285
|
}
|
|
1412
|
-
|
|
1413
|
-
return this.
|
|
1286
|
+
async stakeById(id) {
|
|
1287
|
+
return await this.stake.stakeById(id);
|
|
1414
1288
|
}
|
|
1415
|
-
|
|
1416
|
-
return this.
|
|
1289
|
+
async stakeByStaker(staker, slot) {
|
|
1290
|
+
return await this.stake.stakeByStaker(staker, slot);
|
|
1417
1291
|
}
|
|
1418
|
-
|
|
1419
|
-
|
|
1292
|
+
async stakedByStaker(staker) {
|
|
1293
|
+
const result = /* @__PURE__ */ new Set();
|
|
1294
|
+
let slot = 0;
|
|
1295
|
+
while (true) {
|
|
1296
|
+
try {
|
|
1297
|
+
const ethStake = await this.stake.stakeByStaker(staker, slot);
|
|
1298
|
+
result.add(toAddress(ethStake.staked));
|
|
1299
|
+
slot++;
|
|
1300
|
+
} catch {
|
|
1301
|
+
break;
|
|
1302
|
+
}
|
|
1303
|
+
}
|
|
1304
|
+
return [...result];
|
|
1420
1305
|
}
|
|
1421
|
-
async
|
|
1422
|
-
await
|
|
1423
|
-
this._blockViewer = await this.locator.getInstance(BlockViewerMoniker6);
|
|
1424
|
-
this._networkStakeStepRewardsViewer = await this.locator.getInstance(NetworkStakeStepRewardsViewerMoniker3);
|
|
1425
|
-
this._stakeViewer = await this.locator.getInstance(StakeViewerMoniker6);
|
|
1426
|
-
this._stakeEventsViewer = await this.locator.getInstance(StakeEventsViewerMoniker);
|
|
1306
|
+
async stakesByStaked(staked) {
|
|
1307
|
+
return await this.stake.stakesByStaked(staked);
|
|
1427
1308
|
}
|
|
1428
|
-
async
|
|
1429
|
-
|
|
1430
|
-
const positionCount = await this.stakeEventsViewer.positionCount(externalRange);
|
|
1431
|
-
return positionCount;
|
|
1309
|
+
async stakesByStaker(staker) {
|
|
1310
|
+
return await this.stake.stakesByStaker(staker);
|
|
1432
1311
|
}
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
const count = await this.positionCount(step);
|
|
1436
|
-
const externalRange = await externalBlockRangeFromStep3(this.context, this.blockViewer, step);
|
|
1437
|
-
const allPositions = await Promise.all(Array.from({ length: count + 1 }, (_, i) => i).map(async (id) => this.stakeViewer.stakeById(id)));
|
|
1438
|
-
return allPositions.filter((pos) => pos.addBlock <= externalRange[1] && (pos.removeBlock === 0 || pos.removeBlock > externalRange[0]));
|
|
1312
|
+
async stepSizeRate(start, stepSizeIndex, count, timeUnit) {
|
|
1313
|
+
return await this.block.stepSizeRate(start, stepSizeIndex, count, timeUnit);
|
|
1439
1314
|
}
|
|
1440
|
-
|
|
1441
|
-
|
|
1315
|
+
async timeDurationRate(timeConfig, startBlock, timeUnit, toleranceMs, maxAttempts) {
|
|
1316
|
+
return await this.block.timeDurationRate(timeConfig, startBlock, timeUnit, toleranceMs, maxAttempts);
|
|
1442
1317
|
}
|
|
1443
|
-
|
|
1444
|
-
|
|
1318
|
+
async transactionByBlockHashAndIndex(blockHash, transactionIndex = 0) {
|
|
1319
|
+
return await this.transaction.byBlockHashAndIndex(blockHash, transactionIndex);
|
|
1445
1320
|
}
|
|
1446
|
-
|
|
1447
|
-
|
|
1321
|
+
async transactionByBlockNumberAndIndex(blockNumber, transactionIndex = 0) {
|
|
1322
|
+
return await this.transaction.byBlockNumberAndIndex(blockNumber, transactionIndex);
|
|
1448
1323
|
}
|
|
1449
|
-
|
|
1450
|
-
|
|
1324
|
+
async transactionByHash(transactionHash) {
|
|
1325
|
+
return await this.transaction.byHash(transactionHash);
|
|
1451
1326
|
}
|
|
1452
|
-
|
|
1453
|
-
|
|
1327
|
+
async startHandler() {
|
|
1328
|
+
try {
|
|
1329
|
+
const currentBlockNumber = await this.currentBlockNumber();
|
|
1330
|
+
await this.account.balance.accountBalance(XYO_ZERO_ADDRESS);
|
|
1331
|
+
if (this.initRewardsCache) {
|
|
1332
|
+
const externalRange = await externalBlockRangeFromXL1BlockRange(
|
|
1333
|
+
this.context,
|
|
1334
|
+
this.block,
|
|
1335
|
+
asXL1BlockRange4([0, currentBlockNumber], { name: "startHandler" })
|
|
1336
|
+
);
|
|
1337
|
+
const positionCount = await this.stake.stakeEvents.positionCount(externalRange);
|
|
1338
|
+
this.logger?.debug(`SimpleXyoViewer: Precomputing networkStakeStepRewardForPosition up to position ${positionCount - 1}`);
|
|
1339
|
+
const positions = Array.from(
|
|
1340
|
+
{ length: positionCount },
|
|
1341
|
+
(_, i) => i
|
|
1342
|
+
);
|
|
1343
|
+
while (positions.length > 0) {
|
|
1344
|
+
const batch = positions.splice(0, 10);
|
|
1345
|
+
this.logger?.debug(`SimpleXyoViewer: Precomputing networkStakeStepRewardForPosition for positions ${batch.at(0)} - ${batch.at(-1)}`);
|
|
1346
|
+
await Promise.all(batch.map(async (_, position) => await this.networkStakeStepRewardForPosition(
|
|
1347
|
+
position,
|
|
1348
|
+
asXL1BlockRange4([0, currentBlockNumber], { name: "startHandler" })
|
|
1349
|
+
)));
|
|
1350
|
+
}
|
|
1351
|
+
this.logger?.debug(`SimpleXyoViewer: Precomputed networkStakeStepRewardForPosition up to position ${positionCount - 1}`);
|
|
1352
|
+
}
|
|
1353
|
+
} catch (ex) {
|
|
1354
|
+
this.logger?.error(`SimpleXyoViewer: Error during startHandler initialization: ${ex.message}`);
|
|
1355
|
+
this.logger?.error(ex.stack ?? "<No Stack>");
|
|
1356
|
+
throw ex;
|
|
1357
|
+
}
|
|
1358
|
+
}
|
|
1359
|
+
async stepWeightedDenominator(stepIdentity, staked) {
|
|
1360
|
+
const cacheKey = toStepIdentityString3(stepIdentity);
|
|
1361
|
+
return await withContextCacheResponse4(this.context, "NodeXyoViewer-networkStakeStepRewardForStepForPosition-denominator", cacheKey, async () => {
|
|
1362
|
+
const range = await externalBlockRangeFromStep3(this.context, this.block, stepIdentity);
|
|
1363
|
+
return await weightedStakeForRangeByPosition2(this.context, this.block, this.stake.stakeEvents, range, staked);
|
|
1364
|
+
});
|
|
1454
1365
|
}
|
|
1455
1366
|
};
|
|
1456
|
-
__publicField(
|
|
1457
|
-
__publicField(
|
|
1458
|
-
__publicField(
|
|
1367
|
+
__publicField(SimpleXyoViewer, "connectionTypes", ["lmdb", "mongo", "memory"]);
|
|
1368
|
+
__publicField(SimpleXyoViewer, "defaultMoniker", XyoViewerMoniker3);
|
|
1369
|
+
__publicField(SimpleXyoViewer, "dependencies", [
|
|
1370
|
+
AccountBalanceViewerMoniker,
|
|
1459
1371
|
BlockViewerMoniker6,
|
|
1460
|
-
|
|
1372
|
+
ChainContractViewerMoniker,
|
|
1373
|
+
FinalizationViewerMoniker5,
|
|
1374
|
+
MempoolViewerMoniker,
|
|
1375
|
+
NetworkStakeViewerMoniker2,
|
|
1376
|
+
NetworkStakeStepRewardsByPositionViewerMoniker3,
|
|
1461
1377
|
StakeViewerMoniker6,
|
|
1462
|
-
|
|
1378
|
+
StepViewerMoniker2,
|
|
1379
|
+
TimeSyncViewerMoniker,
|
|
1380
|
+
TransactionViewerMoniker
|
|
1463
1381
|
]);
|
|
1464
|
-
__publicField(
|
|
1465
|
-
__publicField(
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
],
|
|
1382
|
+
__publicField(SimpleXyoViewer, "monikers", [XyoViewerMoniker3]);
|
|
1383
|
+
__publicField(SimpleXyoViewer, "surface", "node");
|
|
1384
|
+
SimpleXyoViewer = __decorateClass([
|
|
1385
|
+
creatableProvider12()
|
|
1386
|
+
], SimpleXyoViewer);
|
|
1469
1387
|
|
|
1470
1388
|
// src/locators/providerCandidates.ts
|
|
1471
1389
|
var PROVIDER_IMPLEMENTATIONS = [
|
|
@@ -1482,12 +1400,13 @@ var PROVIDER_IMPLEMENTATIONS = [
|
|
|
1482
1400
|
JsonRpcXyoRunner,
|
|
1483
1401
|
JsonRpcXyoSigner,
|
|
1484
1402
|
JsonRpcXyoViewer,
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
NodeXyoViewer,
|
|
1403
|
+
RestBlockViewer,
|
|
1404
|
+
RestChainContractViewer,
|
|
1405
|
+
RestChainStateViewer,
|
|
1489
1406
|
RestDataLakeRunner,
|
|
1490
1407
|
RestDataLakeViewer,
|
|
1408
|
+
RestFinalizationViewer,
|
|
1409
|
+
RestIndexViewer,
|
|
1491
1410
|
SimpleAccountBalanceViewer,
|
|
1492
1411
|
SimpleBlockRewardViewer,
|
|
1493
1412
|
SimpleBlockValidationViewer,
|
|
@@ -1497,7 +1416,7 @@ var PROVIDER_IMPLEMENTATIONS = [
|
|
|
1497
1416
|
SimpleDeadLetterQueueViewer,
|
|
1498
1417
|
SimpleFinalizationRunner,
|
|
1499
1418
|
SimpleFinalizationViewer,
|
|
1500
|
-
|
|
1419
|
+
SimpleMempoolRunner,
|
|
1501
1420
|
SimpleMempoolViewer,
|
|
1502
1421
|
SimpleNetworkStakeViewer,
|
|
1503
1422
|
SimpleStakeEventsViewer,
|
|
@@ -1656,24 +1575,91 @@ async function basicRemoteRunnerLocator(name, rpcConnection, signerTransport, da
|
|
|
1656
1575
|
return locator;
|
|
1657
1576
|
}
|
|
1658
1577
|
|
|
1659
|
-
// src/locators/
|
|
1660
|
-
import {
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1578
|
+
// src/locators/basicRestViewerLocator.ts
|
|
1579
|
+
import { isDefined as isDefined4 } from "@ariestools/sdk";
|
|
1580
|
+
import { MemoryMap } from "@xyo-network/xl1-driver-memory";
|
|
1581
|
+
import {
|
|
1582
|
+
ActorConfigZod as ActorConfigZod2,
|
|
1583
|
+
RestDataLakeViewer as RestDataLakeViewer4,
|
|
1584
|
+
SimpleAccountBalanceViewer as SimpleAccountBalanceViewer2,
|
|
1585
|
+
SimpleStakeEventsViewer as SimpleStakeEventsViewer3,
|
|
1586
|
+
SimpleXyoGateway as SimpleXyoGateway3,
|
|
1587
|
+
synthesizeMemoryViewerBindings
|
|
1588
|
+
} from "@xyo-network/xl1-protocol-sdk";
|
|
1589
|
+
import {
|
|
1590
|
+
RestBlockViewer as RestBlockViewer2,
|
|
1591
|
+
RestChainContractViewer as RestChainContractViewer2,
|
|
1592
|
+
RestChainStateViewer as RestChainStateViewer2,
|
|
1593
|
+
RestIndexViewer as RestIndexViewer2
|
|
1594
|
+
} from "@xyo-network/xl1-rest-block-viewer";
|
|
1595
|
+
async function basicRestViewerLocator(name, restConfig, dataLakeEndpoint, options) {
|
|
1596
|
+
const connections = {
|
|
1597
|
+
"rest-blocks": restConfig.blocks,
|
|
1598
|
+
"memory": { type: "memory" }
|
|
1599
|
+
};
|
|
1600
|
+
const providerBindings = {
|
|
1601
|
+
BlockViewer: { connection: "rest-blocks" },
|
|
1602
|
+
ChainContractViewer: { connection: "rest-blocks" },
|
|
1603
|
+
ChainStateViewer: { connection: "rest-blocks" },
|
|
1604
|
+
FinalizationViewer: { connection: "rest-blocks" },
|
|
1605
|
+
...synthesizeMemoryViewerBindings()
|
|
1606
|
+
};
|
|
1607
|
+
if (isDefined4(restConfig.chainState)) {
|
|
1608
|
+
connections["rest-chain-state"] = restConfig.chainState;
|
|
1609
|
+
providerBindings.ChainStateViewer = { connection: "rest-chain-state" };
|
|
1610
|
+
}
|
|
1611
|
+
if (isDefined4(restConfig.index)) {
|
|
1612
|
+
connections["rest-index"] = restConfig.index;
|
|
1613
|
+
providerBindings.IndexViewer = { connection: "rest-index" };
|
|
1614
|
+
}
|
|
1615
|
+
const config = ActorConfigZod2.parse({
|
|
1616
|
+
name,
|
|
1617
|
+
connections,
|
|
1618
|
+
providerBindings
|
|
1619
|
+
});
|
|
1620
|
+
const locator = locatorFromAdaptedConfig({
|
|
1621
|
+
config,
|
|
1622
|
+
context: { singletons: {}, caches: {} }
|
|
1623
|
+
});
|
|
1624
|
+
locator.registerMany([
|
|
1625
|
+
SimpleXyoGateway3.factory(SimpleXyoGateway3.dependencies, {}),
|
|
1626
|
+
SimpleXyoConnectionViewer.factory(SimpleXyoConnectionViewer.dependencies, {}),
|
|
1627
|
+
SimpleStakeEventsViewer3.factory(SimpleStakeEventsViewer3.dependencies, { positions: [] }),
|
|
1628
|
+
SimpleAccountBalanceViewer2.factory(SimpleAccountBalanceViewer2.dependencies, {
|
|
1629
|
+
balancesSummaryMap: new MemoryMap(),
|
|
1630
|
+
transfersSummaryMap: new MemoryMap()
|
|
1631
|
+
})
|
|
1632
|
+
]);
|
|
1633
|
+
const fetchFn = options?.fetchFn;
|
|
1634
|
+
if (isDefined4(fetchFn)) {
|
|
1635
|
+
const chainStateBaseUrl = (restConfig.chainState ?? restConfig.blocks).baseUrl;
|
|
1636
|
+
locator.registerMany([
|
|
1637
|
+
RestBlockViewer2.factory(RestBlockViewer2.dependencies, { fetchFn, finalizedBaseUrl: restConfig.blocks.baseUrl }),
|
|
1638
|
+
RestChainStateViewer2.factory(RestChainStateViewer2.dependencies, { chainStateBaseUrl, fetchFn }),
|
|
1639
|
+
RestChainContractViewer2.factory(RestChainContractViewer2.dependencies, { contractBaseUrl: restConfig.blocks.baseUrl, fetchFn })
|
|
1640
|
+
]);
|
|
1641
|
+
if (isDefined4(restConfig.index)) {
|
|
1642
|
+
locator.register(
|
|
1643
|
+
RestIndexViewer2.factory(RestIndexViewer2.dependencies, { fetchFn, indexBaseUrl: restConfig.index.baseUrl })
|
|
1644
|
+
);
|
|
1645
|
+
}
|
|
1646
|
+
}
|
|
1647
|
+
const endpoint = dataLakeEndpoint ?? options?.dataLakeEndpoint;
|
|
1648
|
+
if (isDefined4(endpoint)) {
|
|
1649
|
+
const dataLakeViewerParams = { endpoint };
|
|
1650
|
+
locator.register(RestDataLakeViewer4.factory(RestDataLakeViewer4.dependencies, dataLakeViewerParams));
|
|
1651
|
+
}
|
|
1652
|
+
locator.freeze();
|
|
1653
|
+
return locator;
|
|
1668
1654
|
}
|
|
1669
1655
|
|
|
1670
1656
|
// src/locators/rootLocatorFromConfig.ts
|
|
1671
|
-
import { assertEx as
|
|
1657
|
+
import { assertEx as assertEx5 } from "@ariestools/sdk";
|
|
1672
1658
|
async function rootLocatorFromConfig(context, validateDepsOnRegister = false, validators) {
|
|
1673
1659
|
const { config } = context;
|
|
1674
1660
|
const hasRpcConnection = config.connections?.["default-rpc"] !== void 0 || Object.values(config.connections ?? {}).some((connection) => connection?.type === "rpc");
|
|
1675
1661
|
const newLocator = hasRpcConnection ? await remoteLocatorFromConfig(context, validateDepsOnRegister, validators) : void 0;
|
|
1676
|
-
const locator =
|
|
1662
|
+
const locator = assertEx5(newLocator, () => "Root locator could not be created from config. No supported configuration found.");
|
|
1677
1663
|
locator.freeze();
|
|
1678
1664
|
return locator;
|
|
1679
1665
|
}
|
|
@@ -1682,9 +1668,9 @@ async function rootLocatorFromConfig(context, validateDepsOnRegister = false, va
|
|
|
1682
1668
|
async function createRestDataLakeViewer(dataLakeEndpoint) {
|
|
1683
1669
|
const locator = await baseConfigFactoryLocator();
|
|
1684
1670
|
const dataLakeViewerParams = { endpoint: dataLakeEndpoint };
|
|
1685
|
-
locator.register(
|
|
1671
|
+
locator.register(RestDataLakeViewer5.factory(RestDataLakeViewer5.dependencies, dataLakeViewerParams));
|
|
1686
1672
|
locator.freeze();
|
|
1687
|
-
return await locator.getInstance(
|
|
1673
|
+
return await locator.getInstance(RestDataLakeViewer5.defaultMoniker);
|
|
1688
1674
|
}
|
|
1689
1675
|
async function createRestDataLakeRunner(dataLakeEndpoint) {
|
|
1690
1676
|
const locator = await baseConfigFactoryLocator();
|
|
@@ -1696,26 +1682,16 @@ async function createRestDataLakeRunner(dataLakeEndpoint) {
|
|
|
1696
1682
|
|
|
1697
1683
|
// src/registerHelpers.ts
|
|
1698
1684
|
import {
|
|
1699
|
-
SimpleStakeEventsViewer as
|
|
1685
|
+
SimpleStakeEventsViewer as SimpleStakeEventsViewer4,
|
|
1700
1686
|
SimpleStakeViewer as SimpleStakeViewer2,
|
|
1701
|
-
SimpleXyoGateway as
|
|
1687
|
+
SimpleXyoGateway as SimpleXyoGateway4,
|
|
1702
1688
|
SimpleXyoGatewayRunner as SimpleXyoGatewayRunner3,
|
|
1703
1689
|
SimpleXyoSigner as SimpleXyoSigner2
|
|
1704
1690
|
} from "@xyo-network/xl1-protocol-sdk";
|
|
1705
|
-
var registerGatewayRunnerWithLocatorIfProvided = (locator, params) => {
|
|
1706
|
-
const account = params?.signerAccount;
|
|
1707
|
-
if (account) {
|
|
1708
|
-
locator.registerMany([
|
|
1709
|
-
SimpleXyoSigner2.factory(SimpleXyoSigner2.dependencies, { account }),
|
|
1710
|
-
SimpleXyoGatewayRunner3.factory(SimpleXyoGatewayRunner3.dependencies, {})
|
|
1711
|
-
]);
|
|
1712
|
-
}
|
|
1713
|
-
return locator;
|
|
1714
|
-
};
|
|
1715
1691
|
var registerGatewayWithLocator = (locator, account) => {
|
|
1716
1692
|
locator.registerMany([
|
|
1717
1693
|
SimpleXyoConnectionRunner.factory(SimpleXyoConnectionRunner.dependencies, {}),
|
|
1718
|
-
|
|
1694
|
+
SimpleXyoGateway4.factory(SimpleXyoGateway4.dependencies, {})
|
|
1719
1695
|
]);
|
|
1720
1696
|
if (account) {
|
|
1721
1697
|
locator.registerMany([
|
|
@@ -1728,13 +1704,11 @@ var registerGatewayWithLocator = (locator, account) => {
|
|
|
1728
1704
|
var registerSimpleStakeViewerWithLocator = (locator, positions) => {
|
|
1729
1705
|
locator.registerMany([
|
|
1730
1706
|
SimpleStakeViewer2.factory(SimpleStakeViewer2.dependencies, { positions }),
|
|
1731
|
-
|
|
1707
|
+
SimpleStakeEventsViewer4.factory(SimpleStakeEventsViewer4.dependencies, { positions })
|
|
1732
1708
|
]);
|
|
1733
1709
|
return locator;
|
|
1734
1710
|
};
|
|
1735
1711
|
export {
|
|
1736
|
-
NodeXyoRunner,
|
|
1737
|
-
NodeXyoViewer,
|
|
1738
1712
|
SimpleDeadLetterQueueRunner,
|
|
1739
1713
|
SimpleDeadLetterQueueViewer,
|
|
1740
1714
|
SimpleNetworkStakeViewer,
|
|
@@ -1751,13 +1725,12 @@ export {
|
|
|
1751
1725
|
baseConfigFactoryLocator,
|
|
1752
1726
|
basicRemoteRunnerLocator,
|
|
1753
1727
|
basicRemoteViewerLocator,
|
|
1728
|
+
basicRestViewerLocator,
|
|
1729
|
+
buildSimpleXyoSigner,
|
|
1754
1730
|
buildSimpleXyoSignerV2,
|
|
1755
|
-
commonLocatorFromConfig,
|
|
1756
|
-
commonProvidersFromConfig,
|
|
1757
1731
|
createRestDataLakeRunner,
|
|
1758
1732
|
createRestDataLakeViewer,
|
|
1759
1733
|
locatorFromAdaptedConfig,
|
|
1760
|
-
registerGatewayRunnerWithLocatorIfProvided,
|
|
1761
1734
|
registerGatewayWithLocator,
|
|
1762
1735
|
registerSimpleStakeViewerWithLocator,
|
|
1763
1736
|
remoteLocatorFromConfig,
|