@xyo-network/chain-services 1.19.15 → 1.19.17
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/neutral/Election/BaseElectionService.d.ts +1 -1
- package/dist/neutral/Election/BaseElectionService.d.ts.map +1 -1
- package/dist/neutral/NetworkStakeStepReward/BaseNetworkStakeStepRewardService.d.ts +1 -1
- package/dist/neutral/NetworkStakeStepReward/BaseNetworkStakeStepRewardService.d.ts.map +1 -1
- package/dist/neutral/StepStake/BaseStepStakeService.d.ts +1 -1
- package/dist/neutral/StepStake/BaseStepStakeService.d.ts.map +1 -1
- package/dist/neutral/index.d.ts +0 -1
- package/dist/neutral/index.d.ts.map +1 -1
- package/dist/neutral/index.mjs +25 -323
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/neutral/simple/block/runner/SimpleBlockRunner.d.ts +5 -6
- package/dist/neutral/simple/block/runner/SimpleBlockRunner.d.ts.map +1 -1
- package/package.json +22 -24
- package/src/Election/BaseElectionService.ts +1 -1
- package/src/NetworkStakeStepReward/BaseNetworkStakeStepRewardService.ts +1 -1
- package/src/StepStake/BaseStepStakeService.ts +1 -1
- package/src/index.ts +0 -1
- package/src/simple/block/runner/SimpleBlockRunner.ts +3 -3
- package/dist/neutral/PendingTransactions/BasePendingTransactions.d.ts +0 -64
- package/dist/neutral/PendingTransactions/BasePendingTransactions.d.ts.map +0 -1
- package/dist/neutral/PendingTransactions/bundledPayloadToHydratedTransaction.d.ts +0 -4
- package/dist/neutral/PendingTransactions/bundledPayloadToHydratedTransaction.d.ts.map +0 -1
- package/dist/neutral/PendingTransactions/hydratedTransactionToPayloadBundle.d.ts +0 -4
- package/dist/neutral/PendingTransactions/hydratedTransactionToPayloadBundle.d.ts.map +0 -1
- package/dist/neutral/PendingTransactions/index.d.ts +0 -2
- package/dist/neutral/PendingTransactions/index.d.ts.map +0 -1
- package/src/PendingTransactions/BasePendingTransactions.ts +0 -382
- package/src/PendingTransactions/bundledPayloadToHydratedTransaction.ts +0 -14
- package/src/PendingTransactions/hydratedTransactionToPayloadBundle.ts +0 -18
- package/src/PendingTransactions/index.ts +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Address, Hash } from '@xylabs/sdk-js';
|
|
2
|
-
import { WithHashMeta } from '@xyo-network/
|
|
2
|
+
import { WithHashMeta } from '@xyo-network/sdk-js';
|
|
3
3
|
import { AbstractCreatableProvider, type BlockViewer, type ChainStakeViewer, type ElectionService, type StakeIntentService } from '@xyo-network/xl1-sdk';
|
|
4
4
|
import { BlockBoundWitness } from '@xyo-network/xl1-sdk';
|
|
5
5
|
import { BaseServiceParams } from '../model/index.ts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseElectionService.d.ts","sourceRoot":"","sources":["../../../src/Election/BaseElectionService.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAAY,IAAI,EACxB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"BaseElectionService.d.ts","sourceRoot":"","sources":["../../../src/Election/BaseElectionService.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAAY,IAAI,EACxB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EACL,yBAAyB,EACzB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EAAE,KAAK,kBAAkB,EAC9C,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAExD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAErD,MAAM,WAAW,0BAA2B,SAAQ,iBAAiB;IACnE,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;CACxC;AAED,qBACa,mBAAoB,SAAQ,yBAAyB,CAAC,0BAA0B,CAAE,YAAW,eAAe;IACvH,MAAM,CAAC,QAAQ,CAAC,cAAc,cAAa;IAC3C,MAAM,CAAC,QAAQ,CAAC,YAAY,UAAK;IACjC,MAAM,CAAC,QAAQ,CAAC,QAAQ,WAAe;IACvC,OAAO,SAAqC;IAC5C,IAAI,WAAW,+BAEd;IAED,IAAI,gBAAgB,qBAEnB;IAED,IAAI,kBAAkB,uBAErB;IAEK,+BAA+B,CAAC,OAAO,EAAE,YAAY,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IASnG,SAAS,CAAC,wBAAwB,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,SAAI,GAAG,OAAO,EAAE;CAM3G"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Address, Promisable } from '@xylabs/sdk-js';
|
|
2
|
-
import { ReadArchivist } from '@xyo-network/
|
|
2
|
+
import { ReadArchivist } from '@xyo-network/sdk-js';
|
|
3
3
|
import { AbstractCreatableProvider, AttoXL1, NetworkStakeStepRewardService, StepIdentity, StepIdentityString } from '@xyo-network/xl1-sdk';
|
|
4
4
|
import { Provider } from 'ethers';
|
|
5
5
|
import { BaseServiceParams } from '../model/index.ts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseNetworkStakeStepRewardService.d.ts","sourceRoot":"","sources":["../../../src/NetworkStakeStepReward/BaseNetworkStakeStepRewardService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"BaseNetworkStakeStepRewardService.d.ts","sourceRoot":"","sources":["../../../src/NetworkStakeStepReward/BaseNetworkStakeStepRewardService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Address, Promisable } from '@xylabs/sdk-js';
|
|
2
|
-
import type { ReadArchivist } from '@xyo-network/
|
|
2
|
+
import type { ReadArchivist } from '@xyo-network/sdk-js';
|
|
3
3
|
import type { StepIdentity, StepStakeViewer } from '@xyo-network/xl1-sdk';
|
|
4
4
|
import { AbstractCreatableProvider } from '@xyo-network/xl1-sdk';
|
|
5
5
|
import type { BaseServiceParams } from '../model/index.ts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseStepStakeService.d.ts","sourceRoot":"","sources":["../../../src/StepStake/BaseStepStakeService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"BaseStepStakeService.d.ts","sourceRoot":"","sources":["../../../src/StepStake/BaseStepStakeService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACzE,OAAO,EAAE,yBAAyB,EAA0B,MAAM,sBAAsB,CAAA;AAExF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAE1D,MAAM,WAAW,0BAA2B,SAAQ,iBAAiB;IACnE,cAAc,EAAE,aAAa,CAAA;CAC9B;AAED,8BAAsB,wBAAyB,SAAQ,yBAAyB,CAAC,0BAA0B,CAAE,YAAW,eAAe;IACrI,MAAM,CAAC,QAAQ,CAAC,cAAc,oBAAyB;IACvD,MAAM,CAAC,QAAQ,CAAC,QAAQ,sBAA2B;IAC1C,OAAO,oBAA0C;IAE1D,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAInE,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC;CAGhF"}
|
package/dist/neutral/index.d.ts
CHANGED
|
@@ -4,7 +4,6 @@ export * from './Election/index.ts';
|
|
|
4
4
|
export * from './implementation/index.ts';
|
|
5
5
|
export * from './model/index.ts';
|
|
6
6
|
export * from './NetworkStakeStepReward/index.ts';
|
|
7
|
-
export * from './PendingTransactions/index.ts';
|
|
8
7
|
export * from './simple/index.ts';
|
|
9
8
|
export * from './StepStake/index.ts';
|
|
10
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,2BAA2B,CAAA;AACzC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mCAAmC,CAAA;AACjD,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,2BAA2B,CAAA;AACzC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mCAAmC,CAAA;AACjD,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA"}
|
package/dist/neutral/index.mjs
CHANGED
|
@@ -236,321 +236,24 @@ BaseNetworkStakeStepRewardService = _ts_decorate3([
|
|
|
236
236
|
creatableProvider2()
|
|
237
237
|
], BaseNetworkStakeStepRewardService);
|
|
238
238
|
|
|
239
|
-
// src/PendingTransactions/BasePendingTransactions.ts
|
|
240
|
-
import { ValueType } from "@opentelemetry/api";
|
|
241
|
-
import { assertEx as assertEx3, exists, filterAs, filterAsync, forget, isDefined, isUndefined } from "@xylabs/sdk-js";
|
|
242
|
-
import { MemoryArchivist } from "@xyo-network/archivist-memory";
|
|
243
|
-
import { AbstractCreatableProvider as AbstractCreatableProvider4, asBlockBoundWitnessWithHashMeta, asXL1BlockNumber, creatableProvider as creatableProvider3, findMostRecentBlock, isTransactionBoundWitnessWithStorageMeta, MempoolViewerMoniker, TransactionJsonSchemaValidator, validateTransaction } from "@xyo-network/xl1-sdk";
|
|
244
|
-
import { Mutex } from "async-mutex";
|
|
245
|
-
|
|
246
|
-
// src/PendingTransactions/bundledPayloadToHydratedTransaction.ts
|
|
247
|
-
import { PayloadBuilder } from "@xyo-network/sdk-js";
|
|
248
|
-
import { asSignedTransactionBoundWitnessWithHashMeta } from "@xyo-network/xl1-sdk";
|
|
249
|
-
var bundledPayloadToHydratedTransaction = /* @__PURE__ */ __name(async (payload) => {
|
|
250
|
-
const withHashMeta = await PayloadBuilder.addHashMeta(payload.payloads);
|
|
251
|
-
const tx = asSignedTransactionBoundWitnessWithHashMeta(withHashMeta.find((p) => p._hash === payload.root));
|
|
252
|
-
if (tx) {
|
|
253
|
-
return [
|
|
254
|
-
tx,
|
|
255
|
-
withHashMeta.filter((p) => p._hash !== payload.root)
|
|
256
|
-
];
|
|
257
|
-
}
|
|
258
|
-
}, "bundledPayloadToHydratedTransaction");
|
|
259
|
-
|
|
260
|
-
// src/PendingTransactions/hydratedTransactionToPayloadBundle.ts
|
|
261
|
-
import { PayloadBundleSchema } from "@xyo-network/payload-model";
|
|
262
|
-
import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/sdk-js";
|
|
263
|
-
import { flattenHydratedTransaction } from "@xyo-network/xl1-sdk";
|
|
264
|
-
var hydratedTransactionToPayloadBundle = /* @__PURE__ */ __name((transaction) => {
|
|
265
|
-
const root = transaction[0]._hash;
|
|
266
|
-
return bundle(root, transaction);
|
|
267
|
-
}, "hydratedTransactionToPayloadBundle");
|
|
268
|
-
var bundle = /* @__PURE__ */ __name((root, transaction) => {
|
|
269
|
-
const payloads = flattenHydratedTransaction(transaction).flatMap((p) => PayloadBuilder2.omitStorageMeta(p));
|
|
270
|
-
return new PayloadBuilder2({
|
|
271
|
-
schema: PayloadBundleSchema
|
|
272
|
-
}).fields({
|
|
273
|
-
payloads,
|
|
274
|
-
root
|
|
275
|
-
}).build();
|
|
276
|
-
}, "bundle");
|
|
277
|
-
|
|
278
|
-
// src/PendingTransactions/BasePendingTransactions.ts
|
|
279
|
-
function _ts_decorate4(decorators, target, key, desc) {
|
|
280
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
281
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
282
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
283
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
284
|
-
}
|
|
285
|
-
__name(_ts_decorate4, "_ts_decorate");
|
|
286
|
-
var BasePendingTransactionsService = class _BasePendingTransactionsService extends AbstractCreatableProvider4 {
|
|
287
|
-
static {
|
|
288
|
-
__name(this, "BasePendingTransactionsService");
|
|
289
|
-
}
|
|
290
|
-
static defaultMoniker = MempoolViewerMoniker;
|
|
291
|
-
static dependencies = [];
|
|
292
|
-
static monikers = [
|
|
293
|
-
MempoolViewerMoniker
|
|
294
|
-
];
|
|
295
|
-
static MutexPriority = {
|
|
296
|
-
/**
|
|
297
|
-
* Priority for inserting new transactions
|
|
298
|
-
*/
|
|
299
|
-
InsertNewTransactions: 5,
|
|
300
|
-
/**
|
|
301
|
-
* Priority for reading pending transactions
|
|
302
|
-
*/
|
|
303
|
-
ReadTransactions: 3,
|
|
304
|
-
/**
|
|
305
|
-
* Priority for removing finalized/expired/rejected transactions
|
|
306
|
-
*/
|
|
307
|
-
PurgeTransactions: 1
|
|
308
|
-
};
|
|
309
|
-
moniker = _BasePendingTransactionsService.defaultMoniker;
|
|
310
|
-
/**
|
|
311
|
-
* A mutex to ensure that the counting the number of pending transactions is
|
|
312
|
-
* not called concurrently
|
|
313
|
-
*/
|
|
314
|
-
_countPendingTransactionsMutex = new Mutex();
|
|
315
|
-
/**
|
|
316
|
-
* A local Archivist optimized for fast retrieval that stores only validated
|
|
317
|
-
* pending transactions
|
|
318
|
-
*/
|
|
319
|
-
_curatedPendingBundledTransactionsArchivist;
|
|
320
|
-
/**
|
|
321
|
-
* The last count of total pending transactions
|
|
322
|
-
*/
|
|
323
|
-
_pendingTransactionsCount = 0;
|
|
324
|
-
/**
|
|
325
|
-
* A set of transaction hashes that are pending removal from the
|
|
326
|
-
* curated pending transactions archivist. This is used to track
|
|
327
|
-
* which transactions need to be removed from the archivist.
|
|
328
|
-
*/
|
|
329
|
-
_removablePendingTransactionHashes = /* @__PURE__ */ new Set();
|
|
330
|
-
/**
|
|
331
|
-
* A mutex to ensure that the curated pending transactions archivist is
|
|
332
|
-
* updated in a thread-safe manner
|
|
333
|
-
*/
|
|
334
|
-
_updateCuratedPendingTransactionsArchivistMutex = new Mutex();
|
|
335
|
-
get additionalPendingTransactionValidators() {
|
|
336
|
-
return this.params.additionalPendingTransactionValidators ?? [];
|
|
337
|
-
}
|
|
338
|
-
get chainArchivist() {
|
|
339
|
-
return assertEx3(this.params.chainArchivist, () => "No completed blocks with data archivist");
|
|
340
|
-
}
|
|
341
|
-
get pendingBundledTransactionsArchivist() {
|
|
342
|
-
return assertEx3(this.params.pendingBundledTransactionsArchivist, () => "No pending bundled transactions archivist");
|
|
343
|
-
}
|
|
344
|
-
get pendingBundledTransactionsLocalArchivist() {
|
|
345
|
-
return assertEx3(this._curatedPendingBundledTransactionsArchivist, () => "No pending bundled transactions curated archivist");
|
|
346
|
-
}
|
|
347
|
-
get pendingTransactionsCount() {
|
|
348
|
-
forget(this.countPendingTransactions());
|
|
349
|
-
return this._pendingTransactionsCount;
|
|
350
|
-
}
|
|
351
|
-
get rejectedTransactionsArchivist() {
|
|
352
|
-
return assertEx3(this.params.rejectedTransactionsArchivist, () => "No rejected transactions archivist");
|
|
353
|
-
}
|
|
354
|
-
async createHandler() {
|
|
355
|
-
await super.createHandler();
|
|
356
|
-
this._curatedPendingBundledTransactionsArchivist = await MemoryArchivist.create({
|
|
357
|
-
account: "random"
|
|
358
|
-
});
|
|
359
|
-
this.pendingBundledTransactionsArchivist.on("inserted", ({ payloads }) => {
|
|
360
|
-
forget(this.insertNewTransactions(payloads));
|
|
361
|
-
});
|
|
362
|
-
this.chainArchivist.on("inserted", ({ payloads }) => {
|
|
363
|
-
this.markAnyIncludedTransactionsForRemoval(payloads);
|
|
364
|
-
forget(this.cleanupWorker());
|
|
365
|
-
});
|
|
366
|
-
this.rejectedTransactionsArchivist.on("inserted", ({ payloads }) => {
|
|
367
|
-
this.markAnyIncludedTransactionsForRemoval(payloads);
|
|
368
|
-
forget(this.cleanupWorker());
|
|
369
|
-
});
|
|
370
|
-
const pendingTransactionsCounter = this.meter?.createObservableUpDownCounter("xyo_pending_transactions_counter", {
|
|
371
|
-
description: "The current number of pending transactions",
|
|
372
|
-
valueType: ValueType.INT,
|
|
373
|
-
unit: "1"
|
|
374
|
-
});
|
|
375
|
-
pendingTransactionsCounter?.addCallback((observer) => {
|
|
376
|
-
observer.observe(this.pendingTransactionsCount);
|
|
377
|
-
});
|
|
378
|
-
}
|
|
379
|
-
pendingBlocks(_options) {
|
|
380
|
-
throw new Error("Method [pendingBlocks] not implemented.");
|
|
381
|
-
}
|
|
382
|
-
async pendingTransactions({ limit = 100 } = {}) {
|
|
383
|
-
return await this.spanAsync("getPendingTransactions", async () => {
|
|
384
|
-
return await this._updateCuratedPendingTransactionsArchivistMutex.runExclusive(async () => {
|
|
385
|
-
let lastHead = filterAs(await this.chainArchivist.next({
|
|
386
|
-
limit: 100
|
|
387
|
-
}), (x) => asBlockBoundWitnessWithHashMeta(x)).at(-1);
|
|
388
|
-
if (isUndefined(lastHead)) return [];
|
|
389
|
-
await this.pruneCuratedPendingTransactionsArchivist(lastHead._hash);
|
|
390
|
-
const foundPendingTransactions = [];
|
|
391
|
-
let cursor;
|
|
392
|
-
while (foundPendingTransactions.length < limit) {
|
|
393
|
-
const pendingBundledTransactions = await this.pendingBundledTransactionsLocalArchivist.next({
|
|
394
|
-
limit: 100,
|
|
395
|
-
order: "asc",
|
|
396
|
-
cursor
|
|
397
|
-
});
|
|
398
|
-
if (pendingBundledTransactions.length === 0) break;
|
|
399
|
-
cursor = pendingBundledTransactions.at(-1)?._sequence;
|
|
400
|
-
const undeletedTransactionBundles = pendingBundledTransactions.filter((tx) => !this._removablePendingTransactionHashes.has(tx.root));
|
|
401
|
-
const transactions = (await Promise.all(undeletedTransactionBundles.map((p) => bundledPayloadToHydratedTransaction(p)))).filter(exists);
|
|
402
|
-
const activeTransactions = transactions.filter(isTransactionActive(asXL1BlockNumber(lastHead.block + 1, true)));
|
|
403
|
-
const txValidationResults = await Promise.all(activeTransactions.map(async (tx) => [
|
|
404
|
-
tx,
|
|
405
|
-
await validateTransaction({
|
|
406
|
-
...this.context,
|
|
407
|
-
chainId: this.params.chainId
|
|
408
|
-
}, tx, this.additionalPendingTransactionValidators)
|
|
409
|
-
]));
|
|
410
|
-
const validTransactions = txValidationResults.filter(([, errors]) => errors.length === 0).map(([tx]) => tx);
|
|
411
|
-
const invalidTransactions = txValidationResults.filter(([, errors]) => errors.length > 0).map(([tx]) => tx);
|
|
412
|
-
if (invalidTransactions.length > 0) {
|
|
413
|
-
this.logger?.warn(`getPendingTransactions: Found ${invalidTransactions.length} invalid pending transactions`);
|
|
414
|
-
for (const tx of invalidTransactions) {
|
|
415
|
-
this.logger?.warn(tx[0]._hash);
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
foundPendingTransactions.push(...validTransactions);
|
|
419
|
-
}
|
|
420
|
-
if (foundPendingTransactions.length > 0) {
|
|
421
|
-
this.logger?.log(`getPendingTransactions: Found ${foundPendingTransactions.length} pending transactions`);
|
|
422
|
-
for (const tx of foundPendingTransactions) {
|
|
423
|
-
this.logger?.log(tx[0]._hash);
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
return foundPendingTransactions;
|
|
427
|
-
}, _BasePendingTransactionsService.MutexPriority.ReadTransactions);
|
|
428
|
-
}, this.context);
|
|
429
|
-
}
|
|
430
|
-
async cleanupWorker() {
|
|
431
|
-
return await this._updateCuratedPendingTransactionsArchivistMutex.runExclusive(async () => {
|
|
432
|
-
const lastHead = await findMostRecentBlock(this.chainArchivist);
|
|
433
|
-
if (isDefined(lastHead)) await this.pruneCuratedPendingTransactionsArchivist(lastHead._hash);
|
|
434
|
-
}, _BasePendingTransactionsService.MutexPriority.PurgeTransactions);
|
|
435
|
-
}
|
|
436
|
-
async countPendingTransactions() {
|
|
437
|
-
if (this._countPendingTransactionsMutex.isLocked()) return;
|
|
438
|
-
await this._countPendingTransactionsMutex.runExclusive(async () => {
|
|
439
|
-
const payloads = await this._curatedPendingBundledTransactionsArchivist?.all() ?? [];
|
|
440
|
-
this._pendingTransactionsCount = payloads.length;
|
|
441
|
-
});
|
|
442
|
-
}
|
|
443
|
-
async filterAlreadyFinalizedTransactions(incomingTransactions) {
|
|
444
|
-
const incomingTransactionHashes = incomingTransactions.map((payload) => payload.root);
|
|
445
|
-
const finalizedTransactions = await this.chainArchivist.get(incomingTransactionHashes);
|
|
446
|
-
const finalizedTransactionHashes = new Set(finalizedTransactions.map((item) => item._hash));
|
|
447
|
-
const nonFinalizedTransactions = incomingTransactions.filter((item) => !finalizedTransactionHashes.has(item._hash));
|
|
448
|
-
return nonFinalizedTransactions;
|
|
449
|
-
}
|
|
450
|
-
async insertNewTransactions(payloads) {
|
|
451
|
-
if (payloads.length === 0) return;
|
|
452
|
-
return await this.spanAsync("InsertNewTransactions", async () => {
|
|
453
|
-
return await this._updateCuratedPendingTransactionsArchivistMutex.runExclusive(async () => {
|
|
454
|
-
const unprocessedTransactions = await this.filterAlreadyFinalizedTransactions(payloads);
|
|
455
|
-
const hydratedUnprocessedTransactions = (await Promise.all(unprocessedTransactions.map(async (tx) => {
|
|
456
|
-
return await bundledPayloadToHydratedTransaction(tx);
|
|
457
|
-
}))).filter(exists);
|
|
458
|
-
const validTransactions = await filterAsync(hydratedUnprocessedTransactions, async (tx) => {
|
|
459
|
-
const errors = await validateTransaction({
|
|
460
|
-
...this.context,
|
|
461
|
-
chainId: this.params.chainId
|
|
462
|
-
}, tx, [
|
|
463
|
-
TransactionJsonSchemaValidator
|
|
464
|
-
]);
|
|
465
|
-
if (errors.length > 0) {
|
|
466
|
-
this.logger?.warn("validateTransaction", errors);
|
|
467
|
-
}
|
|
468
|
-
return errors.length > 0 ? false : true;
|
|
469
|
-
});
|
|
470
|
-
if (validTransactions.length > 0) {
|
|
471
|
-
const bundledTransactions = validTransactions.map((tx) => hydratedTransactionToPayloadBundle(tx));
|
|
472
|
-
await this.pendingBundledTransactionsLocalArchivist.insert(bundledTransactions);
|
|
473
|
-
}
|
|
474
|
-
}, _BasePendingTransactionsService.MutexPriority.InsertNewTransactions);
|
|
475
|
-
}, this.context);
|
|
476
|
-
}
|
|
477
|
-
/**
|
|
478
|
-
* Marks any included transactions in the provided payloads for removal preventing them
|
|
479
|
-
* from being included in the curated pending transactions archivist and from being offered
|
|
480
|
-
* during the next retrieval of pending transactions.
|
|
481
|
-
* @param payloads An array of payloads that may contain transactions.
|
|
482
|
-
*/
|
|
483
|
-
markAnyIncludedTransactionsForRemoval(payloads) {
|
|
484
|
-
const hashes = payloads.filter(isTransactionBoundWitnessWithStorageMeta).map((p) => p._hash);
|
|
485
|
-
for (const hash of hashes) {
|
|
486
|
-
this._removablePendingTransactionHashes.add(hash);
|
|
487
|
-
}
|
|
488
|
-
}
|
|
489
|
-
async pruneCuratedPendingTransactionsArchivist(head) {
|
|
490
|
-
return await this.spanAsync("pruneCuratedPendingTransactionsArchivist", async () => {
|
|
491
|
-
const foundPendingTransactionsToDeleteHashes = [];
|
|
492
|
-
let cursor;
|
|
493
|
-
let [lastHead] = filterAs(await this.chainArchivist.get([
|
|
494
|
-
head
|
|
495
|
-
]), (x) => asBlockBoundWitnessWithHashMeta(x));
|
|
496
|
-
while (isDefined(lastHead)) {
|
|
497
|
-
const pendingBundledTransactions = await this.pendingBundledTransactionsLocalArchivist.next({
|
|
498
|
-
limit: 100,
|
|
499
|
-
order: "asc",
|
|
500
|
-
cursor
|
|
501
|
-
});
|
|
502
|
-
if (pendingBundledTransactions.length === 0) {
|
|
503
|
-
break;
|
|
504
|
-
}
|
|
505
|
-
cursor = pendingBundledTransactions.at(-1)?._sequence;
|
|
506
|
-
const deletedTransactionBundles = pendingBundledTransactions.filter((tx) => this._removablePendingTransactionHashes.has(tx.root));
|
|
507
|
-
foundPendingTransactionsToDeleteHashes.push(...deletedTransactionBundles.map((tx) => tx._hash).filter(exists));
|
|
508
|
-
const undeletedTransactionBundles = pendingBundledTransactions.filter((tx) => !this._removablePendingTransactionHashes.has(tx.root));
|
|
509
|
-
const transactions = (await Promise.all(undeletedTransactionBundles.map((p) => bundledPayloadToHydratedTransaction(p)))).filter(exists);
|
|
510
|
-
const expiredTransactions = transactions.filter(isTransactionExpired(asXL1BlockNumber(lastHead.block + 1, true)));
|
|
511
|
-
const expiredBundleHashes = expiredTransactions.map((expiredHydratedTx) => (
|
|
512
|
-
// Find the corresponding payload bundle hash for the expired transaction
|
|
513
|
-
pendingBundledTransactions.find((bundledTx) => bundledTx.root === expiredHydratedTx[0]._hash)?._hash
|
|
514
|
-
)).filter(exists);
|
|
515
|
-
foundPendingTransactionsToDeleteHashes.push(...expiredBundleHashes);
|
|
516
|
-
}
|
|
517
|
-
const deletedHashes = await this.pendingBundledTransactionsLocalArchivist.delete(foundPendingTransactionsToDeleteHashes);
|
|
518
|
-
for (const payload of deletedHashes) {
|
|
519
|
-
this._removablePendingTransactionHashes.delete(payload._hash);
|
|
520
|
-
}
|
|
521
|
-
if (deletedHashes.length > 0) {
|
|
522
|
-
this.logger?.log(`foundPendingTransactionsToDeleteHashes: Found ${deletedHashes.length} deletable transactions`);
|
|
523
|
-
for (const payload of deletedHashes) {
|
|
524
|
-
this.logger?.log(payload._hash);
|
|
525
|
-
}
|
|
526
|
-
}
|
|
527
|
-
}, this.context);
|
|
528
|
-
}
|
|
529
|
-
};
|
|
530
|
-
BasePendingTransactionsService = _ts_decorate4([
|
|
531
|
-
creatableProvider3()
|
|
532
|
-
], BasePendingTransactionsService);
|
|
533
|
-
var isTransactionExpired = /* @__PURE__ */ __name((block) => ([txBw]) => txBw.exp < block, "isTransactionExpired");
|
|
534
|
-
var isTransactionActive = /* @__PURE__ */ __name((block) => ([txBw]) => txBw.nbf <= block && txBw.exp >= block, "isTransactionActive");
|
|
535
|
-
|
|
536
239
|
// src/simple/block/runner/SimpleBlockRunner.ts
|
|
537
|
-
import { assertEx as
|
|
538
|
-
import { MemoryArchivist
|
|
240
|
+
import { assertEx as assertEx4, exists, hexToBigInt, isDefined } from "@xylabs/sdk-js";
|
|
241
|
+
import { MemoryArchivist } from "@xyo-network/archivist-memory";
|
|
539
242
|
import { FixedPercentageBlockRewardDiviner, FixedPercentageBlockRewardDivinerConfigSchema } from "@xyo-network/chain-modules";
|
|
540
243
|
import { buildNextBlock as buildNextBlock2 } from "@xyo-network/chain-protocol";
|
|
541
|
-
import { PayloadBuilder as
|
|
542
|
-
import { AbstractCreatableProvider as
|
|
244
|
+
import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/sdk-js";
|
|
245
|
+
import { AbstractCreatableProvider as AbstractCreatableProvider4, AccountBalanceViewerMoniker, asBlockBoundWitness, AttoXL1, BlockNumberSchema, BlockRewardViewerMoniker as BlockRewardViewerMoniker2, BlockRunnerMoniker, BlockValidationViewerMoniker, creatableProvider as creatableProvider3, createDeclarationIntent as createDeclarationIntent2, defaultRewardRatio, isSignedHydratedBlockWithHashMeta, MempoolRunnerMoniker, MempoolViewerMoniker, TimeSyncViewerMoniker, XYO_STEP_REWARD_ADDRESS } from "@xyo-network/xl1-sdk";
|
|
543
246
|
|
|
544
247
|
// src/simple/block/runner/generateTransactionFeeTransfers.ts
|
|
545
248
|
import { hexFromBigInt } from "@xylabs/sdk-js";
|
|
546
|
-
import { assertEx as
|
|
547
|
-
import { PayloadBuilder
|
|
249
|
+
import { assertEx as assertEx3 } from "@xylabs/sdk-js";
|
|
250
|
+
import { PayloadBuilder } from "@xyo-network/sdk-js";
|
|
548
251
|
import { HydratedTransactionWrapper, transactionRequiredGas, TransferSchema, XYO_ZERO_ADDRESS } from "@xyo-network/xl1-sdk";
|
|
549
252
|
async function generateTransactionFeeTransfers(address, transactions) {
|
|
550
253
|
const txs = await Promise.all(transactions.map(async (tx) => {
|
|
551
254
|
return HydratedTransactionWrapper.parse([
|
|
552
|
-
await
|
|
553
|
-
await
|
|
255
|
+
await PayloadBuilder.addStorageMeta(tx[0]),
|
|
256
|
+
await PayloadBuilder.addStorageMeta(tx[1])
|
|
554
257
|
]);
|
|
555
258
|
}));
|
|
556
259
|
const txBaseFeeCosts = {};
|
|
@@ -576,7 +279,7 @@ async function generateTransactionFeeTransfers(address, transactions) {
|
|
|
576
279
|
return payload;
|
|
577
280
|
});
|
|
578
281
|
for (const [from, amount] of Object.entries(txGasCosts)) {
|
|
579
|
-
const fromPayload =
|
|
282
|
+
const fromPayload = assertEx3(payloads.find((p) => p.from === from), () => "from payload not found");
|
|
580
283
|
fromPayload.transfers[address] = hexFromBigInt(amount);
|
|
581
284
|
}
|
|
582
285
|
return payloads;
|
|
@@ -584,17 +287,17 @@ async function generateTransactionFeeTransfers(address, transactions) {
|
|
|
584
287
|
__name(generateTransactionFeeTransfers, "generateTransactionFeeTransfers");
|
|
585
288
|
|
|
586
289
|
// src/simple/block/runner/SimpleBlockRunner.ts
|
|
587
|
-
function
|
|
290
|
+
function _ts_decorate4(decorators, target, key, desc) {
|
|
588
291
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
589
292
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
590
293
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
591
294
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
592
295
|
}
|
|
593
|
-
__name(
|
|
296
|
+
__name(_ts_decorate4, "_ts_decorate");
|
|
594
297
|
var DEFAULT_BLOCK_SIZE = 10;
|
|
595
298
|
var XYO_PRODUCER_REDECLARATION_DURATION = 1e4;
|
|
596
299
|
var XYO_PRODUCER_REDECLARATION_WINDOW = 500;
|
|
597
|
-
var SimpleBlockRunner = class _SimpleBlockRunner extends
|
|
300
|
+
var SimpleBlockRunner = class _SimpleBlockRunner extends AbstractCreatableProvider4 {
|
|
598
301
|
static {
|
|
599
302
|
__name(this, "SimpleBlockRunner");
|
|
600
303
|
}
|
|
@@ -604,7 +307,7 @@ var SimpleBlockRunner = class _SimpleBlockRunner extends AbstractCreatableProvid
|
|
|
604
307
|
BlockRewardViewerMoniker2,
|
|
605
308
|
BlockValidationViewerMoniker,
|
|
606
309
|
MempoolRunnerMoniker,
|
|
607
|
-
|
|
310
|
+
MempoolViewerMoniker,
|
|
608
311
|
TimeSyncViewerMoniker
|
|
609
312
|
];
|
|
610
313
|
static monikers = [
|
|
@@ -690,15 +393,15 @@ var SimpleBlockRunner = class _SimpleBlockRunner extends AbstractCreatableProvid
|
|
|
690
393
|
// return assertEx(this.params.validateHydratedBlockState, () => 'validateHydratedBlockState is required')
|
|
691
394
|
// }
|
|
692
395
|
async createHandler() {
|
|
693
|
-
this._rejectedTransactionsArchivist = this.params.rejectedTransactionsArchivist ?? await
|
|
694
|
-
this._account =
|
|
396
|
+
this._rejectedTransactionsArchivist = this.params.rejectedTransactionsArchivist ?? await MemoryArchivist.create();
|
|
397
|
+
this._account = assertEx4(this.params.account, () => "Account is required");
|
|
695
398
|
this._address = this.account.address;
|
|
696
399
|
this._accountBalanceViewer = await this.locateAndCreate(AccountBalanceViewerMoniker);
|
|
697
400
|
this._blockRewardViewer = await this.locateAndCreate(BlockRewardViewerMoniker2);
|
|
698
401
|
this._blockValidationViewer = await this.locator.getInstance(BlockValidationViewerMoniker);
|
|
699
402
|
this._chainId = this.context.config.chain.id;
|
|
700
403
|
this._mempoolRunner = await this.locateAndCreate(MempoolRunnerMoniker);
|
|
701
|
-
this._mempoolViewer = await this.locateAndCreate(
|
|
404
|
+
this._mempoolViewer = await this.locateAndCreate(MempoolViewerMoniker);
|
|
702
405
|
this._rewardAddress = this.params.rewardAddress;
|
|
703
406
|
this._timeSyncViewer = await this.locateAndCreate(TimeSyncViewerMoniker);
|
|
704
407
|
}
|
|
@@ -707,7 +410,7 @@ var SimpleBlockRunner = class _SimpleBlockRunner extends AbstractCreatableProvid
|
|
|
707
410
|
}
|
|
708
411
|
async produceNextBlock(head, force) {
|
|
709
412
|
const result = await this.proposeNextValidBlock(head);
|
|
710
|
-
return force ?
|
|
413
|
+
return force ? assertEx4(result, () => "Failed to produce next block") : result;
|
|
711
414
|
}
|
|
712
415
|
async getBlockRewardTransfers(block) {
|
|
713
416
|
if (!this._blockRewardDiviner) {
|
|
@@ -721,7 +424,7 @@ var SimpleBlockRunner = class _SimpleBlockRunner extends AbstractCreatableProvid
|
|
|
721
424
|
}
|
|
722
425
|
});
|
|
723
426
|
}
|
|
724
|
-
const blockId = new
|
|
427
|
+
const blockId = new PayloadBuilder2({
|
|
725
428
|
schema: BlockNumberSchema
|
|
726
429
|
}).fields({
|
|
727
430
|
block
|
|
@@ -744,7 +447,7 @@ var SimpleBlockRunner = class _SimpleBlockRunner extends AbstractCreatableProvid
|
|
|
744
447
|
async proposeNextValidBlock(head, validateBalances = false, force = false) {
|
|
745
448
|
return await this.spanAsync("proposeNextValidBlock", async () => {
|
|
746
449
|
try {
|
|
747
|
-
const { block: previousBlock } =
|
|
450
|
+
const { block: previousBlock } = assertEx4(asBlockBoundWitness(head), () => "Invalid head block");
|
|
748
451
|
const nextBlock = previousBlock + 1;
|
|
749
452
|
const nextBlockTransactions = await this.mempoolViewer.pendingTransactions({
|
|
750
453
|
limit: _SimpleBlockRunner.DefaultBlockSize
|
|
@@ -816,7 +519,7 @@ var SimpleBlockRunner = class _SimpleBlockRunner extends AbstractCreatableProvid
|
|
|
816
519
|
fundedTransfers.push(transfer);
|
|
817
520
|
return tx;
|
|
818
521
|
}
|
|
819
|
-
}))).filter(
|
|
522
|
+
}))).filter(exists);
|
|
820
523
|
return [
|
|
821
524
|
fundedTransactions,
|
|
822
525
|
fundedTransfers
|
|
@@ -832,19 +535,19 @@ var SimpleBlockRunner = class _SimpleBlockRunner extends AbstractCreatableProvid
|
|
|
832
535
|
*/
|
|
833
536
|
heartbeatRequired(head) {
|
|
834
537
|
const epoch = head.$epoch;
|
|
835
|
-
if (
|
|
538
|
+
if (isDefined(epoch) && Date.now() - epoch > this.heartbeatInterval) {
|
|
836
539
|
return true;
|
|
837
540
|
}
|
|
838
541
|
return false;
|
|
839
542
|
}
|
|
840
543
|
};
|
|
841
|
-
SimpleBlockRunner =
|
|
842
|
-
|
|
544
|
+
SimpleBlockRunner = _ts_decorate4([
|
|
545
|
+
creatableProvider3()
|
|
843
546
|
], SimpleBlockRunner);
|
|
844
547
|
|
|
845
548
|
// src/StepStake/BaseStepStakeService.ts
|
|
846
|
-
import { AbstractCreatableProvider as
|
|
847
|
-
var AbstractStepStakeService = class _AbstractStepStakeService extends
|
|
549
|
+
import { AbstractCreatableProvider as AbstractCreatableProvider5, StepStakeViewerMoniker } from "@xyo-network/xl1-sdk";
|
|
550
|
+
var AbstractStepStakeService = class _AbstractStepStakeService extends AbstractCreatableProvider5 {
|
|
848
551
|
static {
|
|
849
552
|
__name(this, "AbstractStepStakeService");
|
|
850
553
|
}
|
|
@@ -864,7 +567,6 @@ export {
|
|
|
864
567
|
AbstractStepStakeService,
|
|
865
568
|
BaseElectionService,
|
|
866
569
|
BaseNetworkStakeStepRewardService,
|
|
867
|
-
BasePendingTransactionsService,
|
|
868
570
|
DEFAULT_BLOCK_SIZE,
|
|
869
571
|
EvmBlockRewardViewer,
|
|
870
572
|
SimpleBlockRunner,
|