@xyo-network/chain-services 1.17.7 → 1.18.0-rc.1
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/AccountBalance/accountBalanceServiceFromArchivist.d.ts +3 -3
- package/dist/neutral/AccountBalance/accountBalanceServiceFromArchivist.d.ts.map +1 -1
- package/dist/neutral/BaseService.d.ts +2 -2
- package/dist/neutral/BaseService.d.ts.map +1 -1
- package/dist/neutral/ChainService/Evm/Evm.d.ts +3 -4
- package/dist/neutral/ChainService/Evm/Evm.d.ts.map +1 -1
- package/dist/neutral/ChainService/Memory/Memory.d.ts +3 -4
- package/dist/neutral/ChainService/Memory/Memory.d.ts.map +1 -1
- package/dist/neutral/ChainValidator/XyoValidator.d.ts +4 -2
- package/dist/neutral/ChainValidator/XyoValidator.d.ts.map +1 -1
- package/dist/neutral/PendingTransactions/BasePendingTransactions.d.ts +0 -1
- package/dist/neutral/PendingTransactions/BasePendingTransactions.d.ts.map +1 -1
- package/dist/neutral/Schemas/BaseSchemasService.d.ts +1 -1
- package/dist/neutral/Schemas/BaseSchemasService.d.ts.map +1 -1
- package/dist/neutral/StakeIntent/XyoStakeIntentService.d.ts +5 -3
- package/dist/neutral/StakeIntent/XyoStakeIntentService.d.ts.map +1 -1
- package/dist/neutral/blockViewerFromChainIteratorAndArchivist.d.ts.map +1 -1
- package/dist/neutral/implementation/blockViewer.d.ts +3 -6
- package/dist/neutral/implementation/blockViewer.d.ts.map +1 -1
- package/dist/neutral/implementation/chain/evm.d.ts +2 -2
- package/dist/neutral/implementation/chain/evm.d.ts.map +1 -1
- package/dist/neutral/implementation/chain/index.d.ts +2 -3
- package/dist/neutral/implementation/chain/index.d.ts.map +1 -1
- package/dist/neutral/implementation/head/createBootstrapHead.d.ts +3 -3
- package/dist/neutral/implementation/head/createBootstrapHead.d.ts.map +1 -1
- package/dist/neutral/implementation/head/createForkedHead/config/getBridgeSourceDetails.d.ts +4 -4
- package/dist/neutral/implementation/head/createForkedHead/config/getBridgeSourceDetails.d.ts.map +1 -1
- package/dist/neutral/implementation/head/createForkedHead/createForkedHead.d.ts +2 -2
- package/dist/neutral/implementation/head/createForkedHead/createForkedHead.d.ts.map +1 -1
- package/dist/neutral/implementation/head/createForkedHead/getBridgeDestinationObservation.d.ts +3 -3
- package/dist/neutral/implementation/head/createForkedHead/getBridgeDestinationObservation.d.ts.map +1 -1
- package/dist/neutral/implementation/head/createForkedHead/getBridgeIntent.d.ts +3 -3
- package/dist/neutral/implementation/head/createForkedHead/getBridgeIntent.d.ts.map +1 -1
- package/dist/neutral/implementation/head/createForkedHead/getBridgeSourceObservation.d.ts +3 -3
- package/dist/neutral/implementation/head/createForkedHead/getBridgeSourceObservation.d.ts.map +1 -1
- package/dist/neutral/implementation/head/createForkedHead/getFirstBlockForNewChain.d.ts +3 -3
- package/dist/neutral/implementation/head/createForkedHead/getFirstBlockForNewChain.d.ts.map +1 -1
- package/dist/neutral/implementation/head/getForkFromBlock.d.ts +4 -3
- package/dist/neutral/implementation/head/getForkFromBlock.d.ts.map +1 -1
- package/dist/neutral/implementation/head/index.d.ts +2 -1
- package/dist/neutral/implementation/head/index.d.ts.map +1 -1
- package/dist/neutral/implementation/index.d.ts +0 -3
- package/dist/neutral/implementation/index.d.ts.map +1 -1
- package/dist/neutral/index.d.ts +0 -2
- package/dist/neutral/index.d.ts.map +1 -1
- package/dist/neutral/index.mjs +430 -889
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/neutral/model/Params.d.ts +3 -4
- package/dist/neutral/model/Params.d.ts.map +1 -1
- package/dist/neutral/simple/block/runner/SimpleBlockRunner.d.ts +23 -33
- package/dist/neutral/simple/block/runner/SimpleBlockRunner.d.ts.map +1 -1
- package/package.json +18 -18
- package/src/AccountBalance/accountBalanceServiceFromArchivist.ts +10 -16
- package/src/BaseService.ts +3 -2
- package/src/ChainService/Evm/Evm.ts +24 -37
- package/src/ChainService/Memory/Memory.ts +6 -12
- package/src/ChainValidator/XyoValidator.ts +11 -4
- package/src/PendingTransactions/BasePendingTransactions.ts +2 -6
- package/src/Schemas/BaseSchemasService.ts +2 -2
- package/src/StakeIntent/XyoStakeIntentService.ts +12 -8
- package/src/blockViewerFromChainIteratorAndArchivist.ts +9 -0
- package/src/implementation/accountBalance.ts +2 -2
- package/src/implementation/blockViewer.ts +5 -10
- package/src/implementation/chain/evm.ts +5 -5
- package/src/implementation/chain/index.ts +12 -14
- package/src/implementation/head/createBootstrapHead.ts +13 -8
- package/src/implementation/head/createForkedHead/config/getBridgeSourceDetails.ts +6 -6
- package/src/implementation/head/createForkedHead/createForkedHead.ts +6 -6
- package/src/implementation/head/createForkedHead/getBridgeDestinationObservation.ts +4 -4
- package/src/implementation/head/createForkedHead/getBridgeIntent.ts +5 -5
- package/src/implementation/head/createForkedHead/getBridgeSourceObservation.ts +4 -4
- package/src/implementation/head/createForkedHead/getFirstBlockForNewChain.ts +4 -4
- package/src/implementation/head/getForkFromBlock.ts +9 -7
- package/src/implementation/head/index.ts +2 -1
- package/src/implementation/index.ts +0 -3
- package/src/implementation/mempoolRunner.ts +2 -2
- package/src/implementation/mempoolViewer.ts +2 -2
- package/src/implementation/pendingTransactions.ts +1 -1
- package/src/index.ts +0 -2
- package/src/model/Params.ts +4 -4
- package/src/simple/block/runner/SimpleBlockRunner.ts +106 -118
- package/dist/neutral/ChainBlockNumberIteration/ChainBlockNumberIterationService.d.ts +0 -50
- package/dist/neutral/ChainBlockNumberIteration/ChainBlockNumberIterationService.d.ts.map +0 -1
- package/dist/neutral/ChainBlockNumberIteration/index.d.ts +0 -3
- package/dist/neutral/ChainBlockNumberIteration/index.d.ts.map +0 -1
- package/dist/neutral/ChainBlockNumberIteration/model/BlockNumberIteration.d.ts +0 -7
- package/dist/neutral/ChainBlockNumberIteration/model/BlockNumberIteration.d.ts.map +0 -1
- package/dist/neutral/ChainBlockNumberIteration/model/Params.d.ts +0 -9
- package/dist/neutral/ChainBlockNumberIteration/model/Params.d.ts.map +0 -1
- package/dist/neutral/ChainBlockNumberIteration/model/index.d.ts +0 -3
- package/dist/neutral/ChainBlockNumberIteration/model/index.d.ts.map +0 -1
- package/dist/neutral/Time/BaseTimeSyncService.d.ts +0 -24
- package/dist/neutral/Time/BaseTimeSyncService.d.ts.map +0 -1
- package/dist/neutral/Time/index.d.ts +0 -2
- package/dist/neutral/Time/index.d.ts.map +0 -1
- package/dist/neutral/implementation/head/head.d.ts +0 -11
- package/dist/neutral/implementation/head/head.d.ts.map +0 -1
- package/dist/neutral/implementation/producer.d.ts +0 -5
- package/dist/neutral/implementation/producer.d.ts.map +0 -1
- package/dist/neutral/implementation/time.d.ts +0 -6
- package/dist/neutral/implementation/time.d.ts.map +0 -1
- package/dist/neutral/implementation/validator.d.ts +0 -5
- package/dist/neutral/implementation/validator.d.ts.map +0 -1
- package/dist/neutral/simple/block/runner/spec/SimpleBlockRunner.d.ts +0 -2
- package/dist/neutral/simple/block/runner/spec/SimpleBlockRunner.d.ts.map +0 -1
- package/src/ChainBlockNumberIteration/ChainBlockNumberIterationService.ts +0 -176
- package/src/ChainBlockNumberIteration/index.ts +0 -2
- package/src/ChainBlockNumberIteration/model/BlockNumberIteration.ts +0 -7
- package/src/ChainBlockNumberIteration/model/Params.ts +0 -10
- package/src/ChainBlockNumberIteration/model/index.ts +0 -2
- package/src/Time/BaseTimeSyncService.ts +0 -54
- package/src/Time/index.ts +0 -1
- package/src/implementation/head/head.ts +0 -49
- package/src/implementation/producer.ts +0 -16
- package/src/implementation/time.ts +0 -26
- package/src/implementation/validator.ts +0 -15
- package/src/simple/block/runner/spec/SimpleBlockRunner.ts +0 -418
package/dist/neutral/index.mjs
CHANGED
|
@@ -4,9 +4,9 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
4
4
|
// src/AccountBalance/accountBalanceServiceFromArchivist.ts
|
|
5
5
|
import { assertEx } from "@xylabs/sdk-js";
|
|
6
6
|
import { StepSizes } from "@xyo-network/xl1-protocol";
|
|
7
|
-
import { findMostRecentBlock, LruCacheMap,
|
|
7
|
+
import { findMostRecentBlock, LruCacheMap, payloadMapFromStore, SimpleAccountBalanceViewer } from "@xyo-network/xl1-protocol-sdk";
|
|
8
8
|
import { Semaphore } from "async-mutex";
|
|
9
|
-
var accountBalancesViewerFromArchivist = /* @__PURE__ */ __name(async (chainId, archivist) => {
|
|
9
|
+
var accountBalancesViewerFromArchivist = /* @__PURE__ */ __name(async (context, chainId, archivist) => {
|
|
10
10
|
const summaryMap = new LruCacheMap({
|
|
11
11
|
max: 1e5,
|
|
12
12
|
allowStale: true,
|
|
@@ -19,7 +19,7 @@ var accountBalancesViewerFromArchivist = /* @__PURE__ */ __name(async (chainId,
|
|
|
19
19
|
noDisposeOnSet: false,
|
|
20
20
|
updateAgeOnGet: true
|
|
21
21
|
});
|
|
22
|
-
const chainMap =
|
|
22
|
+
const chainMap = payloadMapFromStore(archivist);
|
|
23
23
|
const headFunc = /* @__PURE__ */ __name(async () => {
|
|
24
24
|
const head = assertEx(await findMostRecentBlock(archivist), () => "No blocks found in chainArchivist");
|
|
25
25
|
return [
|
|
@@ -28,14 +28,16 @@ var accountBalancesViewerFromArchivist = /* @__PURE__ */ __name(async (chainId,
|
|
|
28
28
|
];
|
|
29
29
|
}, "headFunc");
|
|
30
30
|
const service = await SimpleAccountBalanceViewer.create({
|
|
31
|
-
context
|
|
31
|
+
context,
|
|
32
|
+
balanceSummaryContext: {
|
|
32
33
|
chainId,
|
|
33
34
|
store: {
|
|
34
35
|
chainMap
|
|
35
36
|
},
|
|
36
37
|
stepSemaphores: StepSizes.map(() => new Semaphore(20)),
|
|
37
38
|
summaryMap,
|
|
38
|
-
head: headFunc
|
|
39
|
+
head: headFunc,
|
|
40
|
+
singletons: context.singletons
|
|
39
41
|
},
|
|
40
42
|
transfersSummaryContext: {
|
|
41
43
|
chainId,
|
|
@@ -44,24 +46,16 @@ var accountBalancesViewerFromArchivist = /* @__PURE__ */ __name(async (chainId,
|
|
|
44
46
|
},
|
|
45
47
|
stepSemaphores: StepSizes.map(() => new Semaphore(20)),
|
|
46
48
|
summaryMap: transferSummaryMap,
|
|
47
|
-
head: headFunc
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
context: {
|
|
51
|
-
chainId,
|
|
52
|
-
head: headFunc,
|
|
53
|
-
store: {
|
|
54
|
-
chainMap
|
|
55
|
-
}
|
|
56
|
-
},
|
|
57
|
-
finalizedArchivist: archivist
|
|
58
|
-
})
|
|
49
|
+
head: headFunc,
|
|
50
|
+
singletons: context.singletons
|
|
51
|
+
}
|
|
59
52
|
});
|
|
60
53
|
return service;
|
|
61
54
|
}, "accountBalancesViewerFromArchivist");
|
|
62
55
|
|
|
63
56
|
// src/BaseService.ts
|
|
64
|
-
import {
|
|
57
|
+
import { creatable } from "@xylabs/sdk-js";
|
|
58
|
+
import { AbstractCreatableProvider } from "@xyo-network/xl1-protocol-sdk";
|
|
65
59
|
import { Mutex } from "async-mutex";
|
|
66
60
|
function _ts_decorate(decorators, target, key, desc) {
|
|
67
61
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -70,7 +64,7 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
70
64
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
71
65
|
}
|
|
72
66
|
__name(_ts_decorate, "_ts_decorate");
|
|
73
|
-
var BaseService = class extends
|
|
67
|
+
var BaseService = class extends AbstractCreatableProvider {
|
|
74
68
|
static {
|
|
75
69
|
__name(this, "BaseService");
|
|
76
70
|
}
|
|
@@ -101,7 +95,7 @@ function creatableService() {
|
|
|
101
95
|
__name(creatableService, "creatableService");
|
|
102
96
|
|
|
103
97
|
// src/BlockReward/EvmBlockRewardViewer.ts
|
|
104
|
-
import { AbstractCreatable
|
|
98
|
+
import { AbstractCreatable, assertEx as assertEx2, creatable as creatable2, toEthAddress } from "@xylabs/sdk-js";
|
|
105
99
|
import { XyoChainRewards__factory as XyoChainRewardsFactory } from "@xyo-network/typechain";
|
|
106
100
|
import { asAttoXL1 } from "@xyo-network/xl1-protocol";
|
|
107
101
|
import { BlockRewardViewerMoniker } from "@xyo-network/xl1-protocol-sdk";
|
|
@@ -112,7 +106,7 @@ function _ts_decorate2(decorators, target, key, desc) {
|
|
|
112
106
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
113
107
|
}
|
|
114
108
|
__name(_ts_decorate2, "_ts_decorate");
|
|
115
|
-
var EvmBlockRewardViewer = class _EvmBlockRewardViewer extends
|
|
109
|
+
var EvmBlockRewardViewer = class _EvmBlockRewardViewer extends AbstractCreatable {
|
|
116
110
|
static {
|
|
117
111
|
__name(this, "EvmBlockRewardViewer");
|
|
118
112
|
}
|
|
@@ -206,6 +200,13 @@ function blockViewerFromChainIteratorAndArchivist(chainIterator, chainArchivist)
|
|
|
206
200
|
}
|
|
207
201
|
return results;
|
|
208
202
|
}, "blocksByNumber"),
|
|
203
|
+
chainId: /* @__PURE__ */ __name(async function(blockNumber = "latest") {
|
|
204
|
+
const block = blockNumber === "latest" ? await this.currentBlock() : await this.blockByNumber(blockNumber);
|
|
205
|
+
if (!block) {
|
|
206
|
+
throw new Error(`Block not found for block number: ${blockNumber}`);
|
|
207
|
+
}
|
|
208
|
+
return block[0].chain;
|
|
209
|
+
}, "chainId"),
|
|
209
210
|
currentBlock: /* @__PURE__ */ __name(async function() {
|
|
210
211
|
const head = await chainIterator.head();
|
|
211
212
|
return this.blockByHash(head._hash);
|
|
@@ -230,211 +231,56 @@ function blockViewerFromChainIteratorAndArchivist(chainIterator, chainArchivist)
|
|
|
230
231
|
}
|
|
231
232
|
__name(blockViewerFromChainIteratorAndArchivist, "blockViewerFromChainIteratorAndArchivist");
|
|
232
233
|
|
|
233
|
-
// src/ChainBlockNumberIteration/ChainBlockNumberIterationService.ts
|
|
234
|
-
import { assertEx as assertEx3, isDefined as isDefined2, isNull, isUndefined } from "@xylabs/sdk-js";
|
|
235
|
-
import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/payload-builder";
|
|
236
|
-
import { asBlockBoundWitness, asBlockBoundWitnessWithStorageMeta, asSignedHydratedBlockWithHashMeta, asXL1BlockNumber, isBlockBoundWitnessWithHashMeta } from "@xyo-network/xl1-protocol";
|
|
237
|
-
import { BlockViewerMoniker as BlockViewerMoniker2, hydrateBlock } from "@xyo-network/xl1-protocol-sdk";
|
|
238
|
-
import { LRUCache } from "lru-cache";
|
|
239
|
-
var ChainBlockNumberIterationService = class _ChainBlockNumberIterationService extends BaseService {
|
|
240
|
-
static {
|
|
241
|
-
__name(this, "ChainBlockNumberIterationService");
|
|
242
|
-
}
|
|
243
|
-
static defaultMoniker = BlockViewerMoniker2;
|
|
244
|
-
static monikers = [
|
|
245
|
-
BlockViewerMoniker2
|
|
246
|
-
];
|
|
247
|
-
moniker = _ChainBlockNumberIterationService.defaultMoniker;
|
|
248
|
-
_blocksByBlockNumber = new LRUCache({
|
|
249
|
-
max: 1e4
|
|
250
|
-
});
|
|
251
|
-
_currentHead;
|
|
252
|
-
get chainId() {
|
|
253
|
-
return assertEx3(this._currentHead?.chain ?? this.params?.head?.chain, () => "Current head is not set");
|
|
254
|
-
}
|
|
255
|
-
get chainMap() {
|
|
256
|
-
return assertEx3(this.params.chainMap);
|
|
257
|
-
}
|
|
258
|
-
get chainStoreRead() {
|
|
259
|
-
return {
|
|
260
|
-
chainMap: this.chainMap
|
|
261
|
-
};
|
|
262
|
-
}
|
|
263
|
-
async blockByHash(hash) {
|
|
264
|
-
return asSignedHydratedBlockWithHashMeta(await hydrateBlock(this.chainStoreRead, hash)) ?? null;
|
|
265
|
-
}
|
|
266
|
-
async blockByNumber(block) {
|
|
267
|
-
return asSignedHydratedBlockWithHashMeta(await this.get(block)) ?? null;
|
|
268
|
-
}
|
|
269
|
-
async blocksByHash(hash, limit = 100) {
|
|
270
|
-
const results = [];
|
|
271
|
-
let currentBlock = await this.blockByHash(hash);
|
|
272
|
-
while (currentBlock !== null && (isUndefined(limit) || results.length < limit)) {
|
|
273
|
-
results.push(currentBlock);
|
|
274
|
-
const previousHash = currentBlock[0].previous;
|
|
275
|
-
if (isNull(previousHash)) break;
|
|
276
|
-
currentBlock = await this.blockByHash(previousHash);
|
|
277
|
-
}
|
|
278
|
-
return results;
|
|
279
|
-
}
|
|
280
|
-
async blocksByNumber(blockNumber, limit = 100) {
|
|
281
|
-
const results = [];
|
|
282
|
-
let currentBlock = await this.blockByNumber(blockNumber);
|
|
283
|
-
while (currentBlock !== null && (isUndefined(limit) || results.length < limit)) {
|
|
284
|
-
results.push(currentBlock);
|
|
285
|
-
if (currentBlock[0].block === 0) break;
|
|
286
|
-
const previousNumber = asXL1BlockNumber(currentBlock[0].block - 1, true);
|
|
287
|
-
currentBlock = await this.blockByNumber(previousNumber);
|
|
288
|
-
}
|
|
289
|
-
return results;
|
|
290
|
-
}
|
|
291
|
-
async currentBlock() {
|
|
292
|
-
return assertEx3(await this.blockByHash(await this.currentBlockHash()), () => "Current block not found");
|
|
293
|
-
}
|
|
294
|
-
async currentBlockHash() {
|
|
295
|
-
const head = assertEx3(await this.head(), () => "Head is not set");
|
|
296
|
-
return head._hash;
|
|
297
|
-
}
|
|
298
|
-
async currentBlockNumber() {
|
|
299
|
-
const head = assertEx3(await this.head(), () => "Head is not set");
|
|
300
|
-
return head.block;
|
|
301
|
-
}
|
|
302
|
-
async get(block) {
|
|
303
|
-
const head = await this.head();
|
|
304
|
-
assertEx3(head.block >= block, () => `Block requested is newer than the current head [${block}]`);
|
|
305
|
-
const cached = this._blocksByBlockNumber.get(block);
|
|
306
|
-
if (cached) return cached;
|
|
307
|
-
const startingBlock = head;
|
|
308
|
-
const currentBlockHash = await PayloadBuilder2.hash(startingBlock);
|
|
309
|
-
let currentBlock = await this.chainMap.get(currentBlockHash);
|
|
310
|
-
while (isDefined2(currentBlock)) {
|
|
311
|
-
assertEx3(asBlockBoundWitness(currentBlock), () => `Expected hash to be a block bound witness [${currentBlock?._hash}]`);
|
|
312
|
-
if (isBlockBoundWitnessWithHashMeta(currentBlock)) {
|
|
313
|
-
this._blocksByBlockNumber.set(currentBlock.block, currentBlock);
|
|
314
|
-
if (currentBlock.block === block) {
|
|
315
|
-
return currentBlock;
|
|
316
|
-
}
|
|
317
|
-
const { previous } = currentBlock;
|
|
318
|
-
if (isNull(previous)) break;
|
|
319
|
-
currentBlock = await this.chainMap.get(previous);
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
throw new Error(`Block not found: ${block}`);
|
|
323
|
-
}
|
|
324
|
-
async head() {
|
|
325
|
-
if (isDefined2(this._currentHead)) return this._currentHead;
|
|
326
|
-
if (isDefined2(this.params.head)) {
|
|
327
|
-
const newHead = await this.getBoundWitnessAsBlockBoundWitnessWithStorageMeta(this.params.head);
|
|
328
|
-
this._currentHead = newHead;
|
|
329
|
-
return newHead;
|
|
330
|
-
}
|
|
331
|
-
throw new Error("Head is not set");
|
|
332
|
-
}
|
|
333
|
-
async next(block) {
|
|
334
|
-
const currentBlock = block;
|
|
335
|
-
const nextBlockNumber = currentBlock + 1;
|
|
336
|
-
return await this.get(nextBlockNumber);
|
|
337
|
-
}
|
|
338
|
-
payloadByHash(_hash) {
|
|
339
|
-
throw new Error("Method [payloadByHash] not implemented.");
|
|
340
|
-
}
|
|
341
|
-
payloadsByHash(_hashes) {
|
|
342
|
-
throw new Error("Method [payloadsByHash] not implemented.");
|
|
343
|
-
}
|
|
344
|
-
// TODO: Decide on inclusive/exclusive (probably need inclusive to account for chain head)
|
|
345
|
-
// and then communicate via method name and documentation
|
|
346
|
-
async previous(block = void 0, count = 1) {
|
|
347
|
-
const results = [];
|
|
348
|
-
let currentBlock = isDefined2(block) ? await this.get(block) : await this.head();
|
|
349
|
-
while (isDefined2(currentBlock) && results.length < count) {
|
|
350
|
-
if (isBlockBoundWitnessWithHashMeta(currentBlock)) {
|
|
351
|
-
results.push(currentBlock);
|
|
352
|
-
const { previous } = currentBlock;
|
|
353
|
-
if (isNull(previous)) break;
|
|
354
|
-
const nextBlock = await this.chainMap.get(previous);
|
|
355
|
-
currentBlock = asBlockBoundWitnessWithStorageMeta(nextBlock);
|
|
356
|
-
} else {
|
|
357
|
-
const hash = PayloadBuilder2.hash(currentBlock);
|
|
358
|
-
assertEx3(asBlockBoundWitnessWithStorageMeta(currentBlock), () => `Expected hash to be a block bound witness [${hash}]`);
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
return results;
|
|
362
|
-
}
|
|
363
|
-
async updateHead(head) {
|
|
364
|
-
const newHead = await this.getBoundWitnessAsBlockBoundWitnessWithStorageMeta(head);
|
|
365
|
-
this._currentHead = newHead;
|
|
366
|
-
void this.emit("headUpdated", {
|
|
367
|
-
blocks: [
|
|
368
|
-
newHead
|
|
369
|
-
]
|
|
370
|
-
});
|
|
371
|
-
}
|
|
372
|
-
async getBoundWitnessAsBlockBoundWitnessWithStorageMeta(head) {
|
|
373
|
-
const hash = await PayloadBuilder2.hash(head);
|
|
374
|
-
const stored = await this.chainMap.get(hash);
|
|
375
|
-
const newHead = asBlockBoundWitnessWithStorageMeta(stored);
|
|
376
|
-
if (isUndefined(newHead)) throw new Error(`Head block not found in archivist [${hash}]`);
|
|
377
|
-
return newHead;
|
|
378
|
-
}
|
|
379
|
-
};
|
|
380
|
-
|
|
381
234
|
// src/ChainService/Evm/Evm.ts
|
|
382
|
-
import {
|
|
383
|
-
import { StakedXyoChain__factory as StakedXyoChainFactory } from "@xyo-network/typechain";
|
|
235
|
+
import { toAddress, toEthAddress as toEthAddress2 } from "@xylabs/sdk-js";
|
|
384
236
|
import { ChainContractViewerMoniker } from "@xyo-network/xl1-protocol-sdk";
|
|
385
237
|
import { getAddress } from "ethers/address";
|
|
386
|
-
var
|
|
238
|
+
var EvmChainViewer = class _EvmChainViewer extends BaseService {
|
|
387
239
|
static {
|
|
388
|
-
__name(this, "
|
|
240
|
+
__name(this, "EvmChainViewer");
|
|
389
241
|
}
|
|
390
242
|
static defaultMoniker = ChainContractViewerMoniker;
|
|
391
243
|
static monikers = [
|
|
392
244
|
ChainContractViewerMoniker
|
|
393
245
|
];
|
|
394
|
-
moniker =
|
|
246
|
+
moniker = _EvmChainViewer.defaultMoniker;
|
|
247
|
+
get contract() {
|
|
248
|
+
return this.params.contract;
|
|
249
|
+
}
|
|
395
250
|
async active() {
|
|
396
|
-
return await
|
|
251
|
+
return await this.contract.active();
|
|
397
252
|
}
|
|
398
253
|
async activeByStaked(staked) {
|
|
399
|
-
return await
|
|
254
|
+
return await this.contract.activeByAddressStaked(getAddress(toEthAddress2(staked)));
|
|
400
255
|
}
|
|
401
256
|
async activeByStaker(address) {
|
|
402
|
-
return await
|
|
257
|
+
return await this.contract.activeByStaker(getAddress(toEthAddress2(address)));
|
|
403
258
|
}
|
|
404
259
|
async addStake(staked, amount) {
|
|
405
|
-
const result = await
|
|
260
|
+
const result = await this.contract.addStake(getAddress(toEthAddress2(staked)), amount);
|
|
406
261
|
await result.wait();
|
|
407
262
|
return true;
|
|
408
263
|
}
|
|
409
|
-
chainId() {
|
|
410
|
-
return assertEx4(this.params.id);
|
|
411
|
-
}
|
|
412
|
-
async contract() {
|
|
413
|
-
if (this.params.contract === void 0) {
|
|
414
|
-
this.params.contract = StakedXyoChainFactory.connect(toEthAddress2(await this.chainId()), this.params.runner);
|
|
415
|
-
}
|
|
416
|
-
return assertEx4(this.params.contract);
|
|
417
|
-
}
|
|
418
264
|
async forkedAtBlockNumber() {
|
|
419
|
-
return await
|
|
265
|
+
return await this.contract.forkedAtBlockNumber();
|
|
420
266
|
}
|
|
421
267
|
async forkedAtHash() {
|
|
422
|
-
return await
|
|
268
|
+
return await this.contract.forkedAtHash();
|
|
423
269
|
}
|
|
424
270
|
async forkedChainId() {
|
|
425
|
-
return toAddress(await
|
|
271
|
+
return toAddress(await this.contract.forkedChainId());
|
|
426
272
|
}
|
|
427
273
|
async minWithdrawalBlocks() {
|
|
428
|
-
return await
|
|
274
|
+
return await this.contract.minWithdrawalBlocks();
|
|
429
275
|
}
|
|
430
276
|
async pending() {
|
|
431
|
-
return await
|
|
277
|
+
return await this.contract.pending();
|
|
432
278
|
}
|
|
433
279
|
async pendingByStaker(staker) {
|
|
434
|
-
return await
|
|
280
|
+
return await this.contract.pendingByStaker(getAddress(toEthAddress2(staker)));
|
|
435
281
|
}
|
|
436
282
|
async removeStake(slot) {
|
|
437
|
-
const result = await
|
|
283
|
+
const result = await this.contract.removeStake(slot);
|
|
438
284
|
await result.wait();
|
|
439
285
|
return true;
|
|
440
286
|
}
|
|
@@ -442,36 +288,36 @@ var EvmChainService = class _EvmChainService extends BaseService {
|
|
|
442
288
|
throw new Error("Method not implemented.");
|
|
443
289
|
}
|
|
444
290
|
async rewardsContract() {
|
|
445
|
-
return await
|
|
291
|
+
return await this.contract.rewardsContract();
|
|
446
292
|
}
|
|
447
293
|
async stakingTokenAddress() {
|
|
448
|
-
return await
|
|
294
|
+
return await this.contract.stakingTokenAddress();
|
|
449
295
|
}
|
|
450
296
|
async withdrawStake(slot) {
|
|
451
|
-
const result = await
|
|
297
|
+
const result = await this.contract.withdrawStake(slot);
|
|
452
298
|
await result.wait();
|
|
453
299
|
return true;
|
|
454
300
|
}
|
|
455
301
|
async withdrawn() {
|
|
456
|
-
return await
|
|
302
|
+
return await this.contract.withdrawn();
|
|
457
303
|
}
|
|
458
304
|
async withdrawnByStaker(staker) {
|
|
459
|
-
return await
|
|
305
|
+
return await this.contract.withdrawnByStaker(getAddress(staker));
|
|
460
306
|
}
|
|
461
307
|
};
|
|
462
308
|
|
|
463
309
|
// src/ChainService/Memory/Memory.ts
|
|
464
|
-
import {
|
|
310
|
+
import { toAddress as toAddress2, ZERO_ADDRESS } from "@xylabs/sdk-js";
|
|
465
311
|
import { ChainContractViewerMoniker as ChainContractViewerMoniker2 } from "@xyo-network/xl1-protocol-sdk";
|
|
466
|
-
var
|
|
312
|
+
var MemoryChainViewer = class _MemoryChainViewer extends BaseService {
|
|
467
313
|
static {
|
|
468
|
-
__name(this, "
|
|
314
|
+
__name(this, "MemoryChainViewer");
|
|
469
315
|
}
|
|
470
316
|
static defaultMoniker = ChainContractViewerMoniker2;
|
|
471
317
|
static monikers = [
|
|
472
318
|
ChainContractViewerMoniker2
|
|
473
319
|
];
|
|
474
|
-
moniker =
|
|
320
|
+
moniker = _MemoryChainViewer.defaultMoniker;
|
|
475
321
|
_chainId;
|
|
476
322
|
_simulatedStake = 1n;
|
|
477
323
|
async active() {
|
|
@@ -486,11 +332,8 @@ var MemoryChainService = class _MemoryChainService extends BaseService {
|
|
|
486
332
|
async addStake(_staked, _amount) {
|
|
487
333
|
return await Promise.resolve(true);
|
|
488
334
|
}
|
|
489
|
-
chainId() {
|
|
490
|
-
return assertEx5(this._chainId, () => "Chain ID not set");
|
|
491
|
-
}
|
|
492
335
|
createHandler() {
|
|
493
|
-
const { minStake = 1 } = this.params.config.producer ?? {};
|
|
336
|
+
const { minStake = 1 } = this.params.context.config.producer ?? {};
|
|
494
337
|
this._simulatedStake = BigInt(minStake);
|
|
495
338
|
}
|
|
496
339
|
async forkedAtBlockNumber() {
|
|
@@ -539,7 +382,8 @@ var MemoryChainService = class _MemoryChainService extends BaseService {
|
|
|
539
382
|
};
|
|
540
383
|
|
|
541
384
|
// src/ChainValidator/XyoValidator.ts
|
|
542
|
-
import {
|
|
385
|
+
import { creatable as creatable3 } from "@xylabs/sdk-js";
|
|
386
|
+
import { BlockViewerMoniker as BlockViewerMoniker2 } from "@xyo-network/xl1-protocol-sdk";
|
|
543
387
|
function _ts_decorate3(decorators, target, key, desc) {
|
|
544
388
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
545
389
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -551,6 +395,7 @@ var XyoValidator = class extends BaseService {
|
|
|
551
395
|
static {
|
|
552
396
|
__name(this, "XyoValidator");
|
|
553
397
|
}
|
|
398
|
+
_blockViewer;
|
|
554
399
|
// get address() {
|
|
555
400
|
// return this.account.address
|
|
556
401
|
// }
|
|
@@ -558,7 +403,7 @@ var XyoValidator = class extends BaseService {
|
|
|
558
403
|
// return assertEx(this.params.account, () => 'account is required')
|
|
559
404
|
// }
|
|
560
405
|
get blockViewer() {
|
|
561
|
-
return
|
|
406
|
+
return this._blockViewer;
|
|
562
407
|
}
|
|
563
408
|
// protected get chainInfo() {
|
|
564
409
|
// return assertEx(this.params.chainId, () => 'chainInfo is required')
|
|
@@ -572,6 +417,9 @@ var XyoValidator = class extends BaseService {
|
|
|
572
417
|
// protected get blockRewardService() {
|
|
573
418
|
// return assertEx(this.params.blockRewardService, () => 'blockRewardService is required')
|
|
574
419
|
// }
|
|
420
|
+
async createHandler() {
|
|
421
|
+
this._blockViewer = await this.locator.getInstance(BlockViewerMoniker2);
|
|
422
|
+
}
|
|
575
423
|
validatePendingBlock(_block) {
|
|
576
424
|
return [];
|
|
577
425
|
}
|
|
@@ -587,7 +435,7 @@ XyoValidator = _ts_decorate3([
|
|
|
587
435
|
], XyoValidator);
|
|
588
436
|
|
|
589
437
|
// src/Election/BaseElectionService.ts
|
|
590
|
-
import { assertEx as
|
|
438
|
+
import { assertEx as assertEx3, creatable as creatable4 } from "@xylabs/sdk-js";
|
|
591
439
|
import { hexToLast4BytesInt, shuffleWithSeed } from "@xyo-network/chain-utils";
|
|
592
440
|
function _ts_decorate4(decorators, target, key, desc) {
|
|
593
441
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -601,13 +449,13 @@ var BaseElectionService = class extends BaseService {
|
|
|
601
449
|
__name(this, "BaseElectionService");
|
|
602
450
|
}
|
|
603
451
|
get blockViewer() {
|
|
604
|
-
return
|
|
452
|
+
return assertEx3(this.params.blockViewer, () => "No block viewer");
|
|
605
453
|
}
|
|
606
454
|
get chainStakeViewer() {
|
|
607
|
-
return
|
|
455
|
+
return assertEx3(this.params.chainStakeViewer, () => "No chain stake viewer");
|
|
608
456
|
}
|
|
609
457
|
get stakeIntentService() {
|
|
610
|
-
return
|
|
458
|
+
return assertEx3(this.params.stakeIntentService, () => "No staked intent service");
|
|
611
459
|
}
|
|
612
460
|
async getCreatorCommitteeForNextBlock(current) {
|
|
613
461
|
return await this.spanAsync("getCreatorCommitteeForNextBlock", async () => {
|
|
@@ -629,18 +477,20 @@ BaseElectionService = _ts_decorate4([
|
|
|
629
477
|
], BaseElectionService);
|
|
630
478
|
|
|
631
479
|
// src/implementation/accountBalance.ts
|
|
632
|
-
import { isDefined as
|
|
480
|
+
import { isDefined as isDefined2 } from "@xylabs/sdk-js";
|
|
633
481
|
import { AccountBalanceViewerRpcSchemas, HttpRpcTransport, JsonRpcAccountBalanceViewer } from "@xyo-network/xl1-rpc";
|
|
634
482
|
var balanceServiceSingleton;
|
|
635
|
-
var initAccountBalanceService = /* @__PURE__ */ __name((params) => {
|
|
483
|
+
var initAccountBalanceService = /* @__PURE__ */ __name(async (params) => {
|
|
636
484
|
const { config, logger } = params;
|
|
637
485
|
if (balanceServiceSingleton) return balanceServiceSingleton;
|
|
638
486
|
const endpoint = config.services?.accountBalanceViewerEndpoint ?? config.services?.apiEndpoint;
|
|
639
|
-
if (
|
|
487
|
+
if (isDefined2(endpoint)) {
|
|
640
488
|
const transport = new HttpRpcTransport(endpoint, {
|
|
641
489
|
...AccountBalanceViewerRpcSchemas
|
|
642
490
|
});
|
|
643
|
-
const viewer =
|
|
491
|
+
const viewer = await JsonRpcAccountBalanceViewer.create({
|
|
492
|
+
transport
|
|
493
|
+
});
|
|
644
494
|
logger?.log("Using AccountBalanceViewer RPC service at", endpoint);
|
|
645
495
|
return viewer;
|
|
646
496
|
} else {
|
|
@@ -649,18 +499,19 @@ var initAccountBalanceService = /* @__PURE__ */ __name((params) => {
|
|
|
649
499
|
}, "initAccountBalanceService");
|
|
650
500
|
|
|
651
501
|
// src/implementation/blockViewer.ts
|
|
652
|
-
import { isDefined as
|
|
502
|
+
import { isDefined as isDefined3 } from "@xylabs/sdk-js";
|
|
653
503
|
import { BlockViewerRpcSchemas, HttpRpcTransport as HttpRpcTransport2, JsonRpcBlockViewer } from "@xyo-network/xl1-rpc";
|
|
654
504
|
var blockViewerSingleton;
|
|
655
|
-
var initBlockViewer = /* @__PURE__ */ __name((
|
|
656
|
-
const { config, logger } = params;
|
|
505
|
+
var initBlockViewer = /* @__PURE__ */ __name(async ({ config, logger }) => {
|
|
657
506
|
if (blockViewerSingleton) return blockViewerSingleton;
|
|
658
507
|
const endpoint = config.services?.apiEndpoint;
|
|
659
|
-
if (
|
|
508
|
+
if (isDefined3(endpoint)) {
|
|
660
509
|
const transport = new HttpRpcTransport2(endpoint, {
|
|
661
510
|
...BlockViewerRpcSchemas
|
|
662
511
|
});
|
|
663
|
-
const viewer =
|
|
512
|
+
const viewer = await JsonRpcBlockViewer.create({
|
|
513
|
+
transport
|
|
514
|
+
});
|
|
664
515
|
logger?.log("Using BlockViewer RPC service at", endpoint);
|
|
665
516
|
return viewer;
|
|
666
517
|
} else {
|
|
@@ -669,26 +520,26 @@ var initBlockViewer = /* @__PURE__ */ __name((params) => {
|
|
|
669
520
|
}, "initBlockViewer");
|
|
670
521
|
|
|
671
522
|
// src/implementation/chain/index.ts
|
|
672
|
-
import { assertEx as
|
|
523
|
+
import { assertEx as assertEx9 } from "@xylabs/sdk-js";
|
|
673
524
|
|
|
674
525
|
// src/implementation/chain/evm.ts
|
|
675
|
-
import { asAddress, assertEx as
|
|
526
|
+
import { asAddress, assertEx as assertEx8, isDefined as isDefined7, ZERO_ADDRESS as ZERO_ADDRESS2 } from "@xylabs/sdk-js";
|
|
676
527
|
import { Wallet } from "ethers/wallet";
|
|
677
528
|
|
|
678
529
|
// src/implementation/evm/initEvmProvider.ts
|
|
679
|
-
import { assertEx as
|
|
530
|
+
import { assertEx as assertEx7 } from "@xylabs/sdk-js";
|
|
680
531
|
|
|
681
532
|
// src/implementation/evm/initInfuraProvider.ts
|
|
682
|
-
import { assertEx as
|
|
533
|
+
import { assertEx as assertEx5, isDefined as isDefined5 } from "@xylabs/sdk-js";
|
|
683
534
|
import { InfuraProvider } from "ethers/providers";
|
|
684
535
|
|
|
685
536
|
// src/implementation/evm/initChainId.ts
|
|
686
|
-
import { assertEx as
|
|
537
|
+
import { assertEx as assertEx4, hexFrom, isDefined as isDefined4, isHex } from "@xylabs/sdk-js";
|
|
687
538
|
var canUseChainId = /* @__PURE__ */ __name((config) => {
|
|
688
|
-
return
|
|
539
|
+
return isDefined4(config.evm.chainId);
|
|
689
540
|
}, "canUseChainId");
|
|
690
541
|
var getChainId = /* @__PURE__ */ __name((config) => {
|
|
691
|
-
const chainId =
|
|
542
|
+
const chainId = assertEx4(config.evm.chainId, () => "Missing config.evm.chainId");
|
|
692
543
|
if (isHex(chainId, {
|
|
693
544
|
prefix: true
|
|
694
545
|
})) {
|
|
@@ -710,11 +561,11 @@ var initInfuraProvider = /* @__PURE__ */ __name((config) => {
|
|
|
710
561
|
return instance;
|
|
711
562
|
}, "initInfuraProvider");
|
|
712
563
|
var canUseInfuraProvider = /* @__PURE__ */ __name((config) => {
|
|
713
|
-
return canUseChainId(config) &&
|
|
564
|
+
return canUseChainId(config) && isDefined5(config.evm?.infura?.projectId) && isDefined5(config.evm?.infura?.projectSecret);
|
|
714
565
|
}, "canUseInfuraProvider");
|
|
715
566
|
var getInfuraProviderConfig = /* @__PURE__ */ __name((config) => {
|
|
716
|
-
const projectId =
|
|
717
|
-
const projectSecret =
|
|
567
|
+
const projectId = assertEx5(config.evm?.infura?.projectId, () => "Missing config.evm.infura.projectId");
|
|
568
|
+
const projectSecret = assertEx5(config.evm?.infura?.projectSecret, () => "Missing config.evm.infura.projectSecret");
|
|
718
569
|
return [
|
|
719
570
|
getChainId(config),
|
|
720
571
|
projectId,
|
|
@@ -723,17 +574,17 @@ var getInfuraProviderConfig = /* @__PURE__ */ __name((config) => {
|
|
|
723
574
|
}, "getInfuraProviderConfig");
|
|
724
575
|
|
|
725
576
|
// src/implementation/evm/initJsonRpcProvider.ts
|
|
726
|
-
import { assertEx as
|
|
577
|
+
import { assertEx as assertEx6, isDefined as isDefined6 } from "@xylabs/sdk-js";
|
|
727
578
|
import { JsonRpcProvider } from "ethers/providers";
|
|
728
579
|
var initJsonRpcProvider = /* @__PURE__ */ __name((config) => {
|
|
729
580
|
const providerConfig = getJsonRpcProviderConfig(config);
|
|
730
581
|
return Promise.resolve(new JsonRpcProvider(...providerConfig));
|
|
731
582
|
}, "initJsonRpcProvider");
|
|
732
583
|
var canUseJsonRpcProvider = /* @__PURE__ */ __name((config) => {
|
|
733
|
-
return canUseChainId(config) &&
|
|
584
|
+
return canUseChainId(config) && isDefined6(config.evm.jsonRpc?.url);
|
|
734
585
|
}, "canUseJsonRpcProvider");
|
|
735
586
|
var getJsonRpcProviderConfig = /* @__PURE__ */ __name((config) => {
|
|
736
|
-
const jsonRpcUrl =
|
|
587
|
+
const jsonRpcUrl = assertEx6(config.evm.jsonRpc?.url, () => "Missing config.evm.jsonRpc.url");
|
|
737
588
|
return [
|
|
738
589
|
jsonRpcUrl,
|
|
739
590
|
getChainId(config)
|
|
@@ -749,7 +600,7 @@ var initEvmProvider = /* @__PURE__ */ __name(async ({ config }) => {
|
|
|
749
600
|
} else if (canUseJsonRpcProvider(config)) {
|
|
750
601
|
provider = initJsonRpcProvider(config);
|
|
751
602
|
}
|
|
752
|
-
return
|
|
603
|
+
return assertEx7(await provider, () => "No provider available");
|
|
753
604
|
}, "initEvmProvider");
|
|
754
605
|
var canUseEvmProvider = /* @__PURE__ */ __name(({ config }) => {
|
|
755
606
|
return canUseInfuraProvider(config) || canUseJsonRpcProvider(config);
|
|
@@ -759,20 +610,20 @@ var canUseEvmProvider = /* @__PURE__ */ __name(({ config }) => {
|
|
|
759
610
|
var chainStakeServiceSingleton;
|
|
760
611
|
var canUseEvmContractChainService = /* @__PURE__ */ __name((config) => {
|
|
761
612
|
const { id } = config.chain;
|
|
762
|
-
return
|
|
613
|
+
return isDefined7(id) && id !== ZERO_ADDRESS2 && canUseEvmProvider({
|
|
763
614
|
config
|
|
764
615
|
});
|
|
765
616
|
}, "canUseEvmContractChainService");
|
|
766
|
-
var initEvmContractChainService = /* @__PURE__ */ __name(async ({ account, config, traceProvider, meterProvider, logger }) => {
|
|
617
|
+
var initEvmContractChainService = /* @__PURE__ */ __name(async ({ account, context: { config }, traceProvider, meterProvider, logger }) => {
|
|
767
618
|
if (chainStakeServiceSingleton) return chainStakeServiceSingleton;
|
|
768
|
-
const emvStakingContractAddress =
|
|
769
|
-
const id =
|
|
770
|
-
const provider2 =
|
|
619
|
+
const emvStakingContractAddress = assertEx8(config.chain.id, () => "config.chain.id is required");
|
|
620
|
+
const id = assertEx8(asAddress(emvStakingContractAddress), () => "config.chain.id is not a valid address");
|
|
621
|
+
const provider2 = assertEx8(await initEvmProvider({
|
|
771
622
|
config
|
|
772
623
|
}));
|
|
773
|
-
const privateKey =
|
|
624
|
+
const privateKey = assertEx8(account.private?.hex, () => "Account does not have a private key");
|
|
774
625
|
const runner = new Wallet(privateKey, provider2);
|
|
775
|
-
chainStakeServiceSingleton =
|
|
626
|
+
chainStakeServiceSingleton = EvmChainViewer.create({
|
|
776
627
|
id,
|
|
777
628
|
runner,
|
|
778
629
|
traceProvider,
|
|
@@ -786,27 +637,28 @@ var initEvmContractChainService = /* @__PURE__ */ __name(async ({ account, confi
|
|
|
786
637
|
|
|
787
638
|
// src/implementation/chain/index.ts
|
|
788
639
|
var chainStakeServiceSingleton2;
|
|
789
|
-
var initChainService = /* @__PURE__ */ __name(({ account,
|
|
640
|
+
var initChainService = /* @__PURE__ */ __name(({ account, context }) => {
|
|
641
|
+
const { logger } = context;
|
|
790
642
|
logger?.log("ChainService: Initializing...");
|
|
791
643
|
const result = init({
|
|
792
|
-
|
|
644
|
+
context,
|
|
793
645
|
name: "ChainService",
|
|
794
646
|
account
|
|
795
647
|
});
|
|
796
648
|
logger?.log("ChainService: Initialized");
|
|
797
649
|
return result;
|
|
798
650
|
}, "initChainService");
|
|
799
|
-
var initMemoryChainService = /* @__PURE__ */ __name(async ({
|
|
800
|
-
const result = await
|
|
801
|
-
|
|
651
|
+
var initMemoryChainService = /* @__PURE__ */ __name(async ({ context }) => {
|
|
652
|
+
const result = await MemoryChainViewer.create({
|
|
653
|
+
context,
|
|
802
654
|
name: "MemoryChainService"
|
|
803
655
|
});
|
|
804
|
-
|
|
656
|
+
assertEx9(await result.start(), () => "Failed to start MemoryChainService");
|
|
805
657
|
return result;
|
|
806
658
|
}, "initMemoryChainService");
|
|
807
659
|
var init = /* @__PURE__ */ __name(async (params) => {
|
|
808
660
|
if (chainStakeServiceSingleton2) return chainStakeServiceSingleton2;
|
|
809
|
-
const { config } = params;
|
|
661
|
+
const { config } = params.context;
|
|
810
662
|
chainStakeServiceSingleton2 = canUseEvmContractChainService(config) ? await initEvmContractChainService({
|
|
811
663
|
...params,
|
|
812
664
|
name: "ChainStakeService"
|
|
@@ -814,16 +666,12 @@ var init = /* @__PURE__ */ __name(async (params) => {
|
|
|
814
666
|
return chainStakeServiceSingleton2;
|
|
815
667
|
}, "init");
|
|
816
668
|
|
|
817
|
-
// src/implementation/head/head.ts
|
|
818
|
-
import { assertEx as assertEx14, isDefined as isDefined10 } from "@xylabs/sdk-js";
|
|
819
|
-
import { findMostRecentBlock as findMostRecentBlock2 } from "@xyo-network/xl1-protocol-sdk";
|
|
820
|
-
|
|
821
669
|
// src/implementation/head/createBootstrapHead.ts
|
|
822
|
-
import { buildNextBlock,
|
|
823
|
-
|
|
824
|
-
|
|
670
|
+
import { buildNextBlock, createGenesisBlock } from "@xyo-network/chain-protocol";
|
|
671
|
+
import { createDeclarationIntent } from "@xyo-network/xl1-protocol-sdk";
|
|
672
|
+
var createBootstrapHead = /* @__PURE__ */ __name(async (account, chainId, genesisBlockRewardAmount, genesisBlockRewardAddress) => {
|
|
825
673
|
const chain = [];
|
|
826
|
-
const genesisBlock = await createGenesisBlock(account, chainId,
|
|
674
|
+
const genesisBlock = await createGenesisBlock(account, chainId, genesisBlockRewardAmount, genesisBlockRewardAddress);
|
|
827
675
|
chain.push(genesisBlock);
|
|
828
676
|
const producerDeclarationPayload = createDeclarationIntent(account.address, "producer", genesisBlock[0].block, genesisBlock[0].block + 1e4);
|
|
829
677
|
const producerDeclarationBlock = await buildNextBlock(genesisBlock[0], [], [
|
|
@@ -835,179 +683,6 @@ var createBootstrapHead = /* @__PURE__ */ __name(async (account, chainService) =
|
|
|
835
683
|
return chain;
|
|
836
684
|
}, "createBootstrapHead");
|
|
837
685
|
|
|
838
|
-
// src/implementation/head/createForkedHead/getBridgeDestinationObservation.ts
|
|
839
|
-
import { buildNextBlock as buildNextBlock2 } from "@xyo-network/chain-protocol";
|
|
840
|
-
import { PayloadBuilder as PayloadBuilder3 } from "@xyo-network/payload-builder";
|
|
841
|
-
import { BridgeDestinationObservationSchema } from "@xyo-network/xl1-protocol";
|
|
842
|
-
|
|
843
|
-
// src/implementation/head/createForkedHead/config/getBridgeDestinationDetails.ts
|
|
844
|
-
import { toHex as toHex2 } from "@xylabs/sdk-js";
|
|
845
|
-
|
|
846
|
-
// src/implementation/head/createForkedHead/config/getForkDetails.ts
|
|
847
|
-
import { toHex } from "@xylabs/sdk-js";
|
|
848
|
-
import { AttoXL1ConvertFactor } from "@xyo-network/xl1-protocol";
|
|
849
|
-
var getForkBlockReward = /* @__PURE__ */ __name(() => {
|
|
850
|
-
return 18000000000n * AttoXL1ConvertFactor.xl1;
|
|
851
|
-
}, "getForkBlockReward");
|
|
852
|
-
var getForkBlockRewardHex = /* @__PURE__ */ __name(() => {
|
|
853
|
-
return toHex(getForkBlockReward());
|
|
854
|
-
}, "getForkBlockRewardHex");
|
|
855
|
-
|
|
856
|
-
// src/implementation/head/createForkedHead/config/getBridgeDestinationDetails.ts
|
|
857
|
-
var ethChainId = toHex2("0x1");
|
|
858
|
-
var bridgeableTokenContract = toHex2("0xf72aE3E0DA743033AbD7A407557D684c1aE66aed");
|
|
859
|
-
var bridgeDestAddress = toHex2("0x0e65b65B10C791942665030402c35023d88B14dA");
|
|
860
|
-
var destConfirmation = toHex2("0x950861b10523b52cdbb4a9ee52ed26601db555d2652bfec21c709e5e70d5b7d3");
|
|
861
|
-
var getBridgeDestChainId = /* @__PURE__ */ __name(() => ethChainId, "getBridgeDestChainId");
|
|
862
|
-
var getBridgeDestToken = /* @__PURE__ */ __name(() => bridgeableTokenContract, "getBridgeDestToken");
|
|
863
|
-
var getBridgeDestAddress = /* @__PURE__ */ __name(() => bridgeDestAddress, "getBridgeDestAddress");
|
|
864
|
-
var getBridgeDestAmount = /* @__PURE__ */ __name(() => getForkBlockRewardHex(), "getBridgeDestAmount");
|
|
865
|
-
var getBridgeDestConfirmation = /* @__PURE__ */ __name(() => destConfirmation, "getBridgeDestConfirmation");
|
|
866
|
-
var getBridgeDestinationDetails = /* @__PURE__ */ __name(() => {
|
|
867
|
-
return {
|
|
868
|
-
dest: getBridgeDestChainId(),
|
|
869
|
-
destToken: getBridgeDestToken(),
|
|
870
|
-
destAddress: getBridgeDestAddress(),
|
|
871
|
-
destAmount: getBridgeDestAmount()
|
|
872
|
-
};
|
|
873
|
-
}, "getBridgeDestinationDetails");
|
|
874
|
-
|
|
875
|
-
// src/implementation/head/createForkedHead/config/getBridgeSourceDetails.ts
|
|
876
|
-
var getBridgeSrcChainId = /* @__PURE__ */ __name((chainService) => chainService.chainId(), "getBridgeSrcChainId");
|
|
877
|
-
var getBridgeSrcAddress = /* @__PURE__ */ __name((account) => account.address, "getBridgeSrcAddress");
|
|
878
|
-
var getBridgeSrcToken = /* @__PURE__ */ __name((chainService) => chainService.chainId(), "getBridgeSrcToken");
|
|
879
|
-
var getBridgeSrcAmount = /* @__PURE__ */ __name(() => getForkBlockRewardHex(), "getBridgeSrcAmount");
|
|
880
|
-
var getBridgeSourceDetails = /* @__PURE__ */ __name(async (account, chainService) => {
|
|
881
|
-
return {
|
|
882
|
-
src: await getBridgeSrcChainId(chainService),
|
|
883
|
-
srcAddress: getBridgeSrcAddress(account),
|
|
884
|
-
srcToken: await getBridgeSrcToken(chainService),
|
|
885
|
-
srcAmount: getBridgeSrcAmount()
|
|
886
|
-
};
|
|
887
|
-
}, "getBridgeSourceDetails");
|
|
888
|
-
|
|
889
|
-
// src/implementation/head/createForkedHead/getBridgeDestinationObservation.ts
|
|
890
|
-
var getBridgeDestinationObservation = /* @__PURE__ */ __name(async (previousBlock, account, chainService) => {
|
|
891
|
-
const bridgeDestinationObservationFields = {
|
|
892
|
-
...await getBridgeSourceDetails(account, chainService),
|
|
893
|
-
...getBridgeDestinationDetails(),
|
|
894
|
-
destConfirmation: getBridgeDestConfirmation()
|
|
895
|
-
};
|
|
896
|
-
const bridgeDestinationObservation = new PayloadBuilder3({
|
|
897
|
-
schema: BridgeDestinationObservationSchema
|
|
898
|
-
}).fields(bridgeDestinationObservationFields).build();
|
|
899
|
-
return await buildNextBlock2(previousBlock[0], [], [
|
|
900
|
-
bridgeDestinationObservation
|
|
901
|
-
], [
|
|
902
|
-
account
|
|
903
|
-
]);
|
|
904
|
-
}, "getBridgeDestinationObservation");
|
|
905
|
-
|
|
906
|
-
// src/implementation/head/createForkedHead/getBridgeIntent.ts
|
|
907
|
-
import { buildNextBlock as buildNextBlock3, createTransferPayload } from "@xyo-network/chain-protocol";
|
|
908
|
-
import { PayloadBuilder as PayloadBuilder4 } from "@xyo-network/payload-builder";
|
|
909
|
-
import { BridgeIntentSchema, XYO_BRIDGE_ADDRESS } from "@xyo-network/xl1-protocol";
|
|
910
|
-
var getBridgeIntent = /* @__PURE__ */ __name(async (previousBlock, account, chainService) => {
|
|
911
|
-
const transferPayload = createTransferPayload(account.address, {
|
|
912
|
-
[XYO_BRIDGE_ADDRESS]: getForkBlockReward()
|
|
913
|
-
});
|
|
914
|
-
const nonce = `${Date.now()}`;
|
|
915
|
-
const bridgeIntentFields = {
|
|
916
|
-
...await getBridgeSourceDetails(account, chainService),
|
|
917
|
-
...getBridgeDestinationDetails(),
|
|
918
|
-
nonce
|
|
919
|
-
};
|
|
920
|
-
const bridgeIntent = new PayloadBuilder4({
|
|
921
|
-
schema: BridgeIntentSchema
|
|
922
|
-
}).fields(bridgeIntentFields).build();
|
|
923
|
-
return await buildNextBlock3(previousBlock[0], [], [
|
|
924
|
-
bridgeIntent,
|
|
925
|
-
transferPayload
|
|
926
|
-
], [
|
|
927
|
-
account
|
|
928
|
-
]);
|
|
929
|
-
}, "getBridgeIntent");
|
|
930
|
-
|
|
931
|
-
// src/implementation/head/createForkedHead/getBridgeSourceObservation.ts
|
|
932
|
-
import { buildNextBlock as buildNextBlock4 } from "@xyo-network/chain-protocol";
|
|
933
|
-
import { PayloadBuilder as PayloadBuilder5 } from "@xyo-network/payload-builder";
|
|
934
|
-
import { BridgeSourceObservationSchema } from "@xyo-network/xl1-protocol";
|
|
935
|
-
var getBridgeSourceObservation = /* @__PURE__ */ __name(async (previousBlock, account, chainService) => {
|
|
936
|
-
const srcTxHash = previousBlock[0]._hash;
|
|
937
|
-
const bridgeSourceObservationFields = {
|
|
938
|
-
...await getBridgeSourceDetails(account, chainService),
|
|
939
|
-
...getBridgeDestinationDetails(),
|
|
940
|
-
// Observation
|
|
941
|
-
srcConfirmation: srcTxHash
|
|
942
|
-
};
|
|
943
|
-
const bridgeSourceObservation = new PayloadBuilder5({
|
|
944
|
-
schema: BridgeSourceObservationSchema
|
|
945
|
-
}).fields(bridgeSourceObservationFields).build();
|
|
946
|
-
return await buildNextBlock4(previousBlock[0], [], [
|
|
947
|
-
bridgeSourceObservation
|
|
948
|
-
], [
|
|
949
|
-
account
|
|
950
|
-
]);
|
|
951
|
-
}, "getBridgeSourceObservation");
|
|
952
|
-
|
|
953
|
-
// src/implementation/head/createForkedHead/getFirstBlockForNewChain.ts
|
|
954
|
-
import { buildBlock } from "@xyo-network/chain-protocol";
|
|
955
|
-
import { AttoXL1, XYO_STEP_REWARD_ADDRESS } from "@xyo-network/xl1-protocol";
|
|
956
|
-
var getFirstBlockForNewChain = /* @__PURE__ */ __name(async (forkBlock, account, chainService) => {
|
|
957
|
-
const { _hash: previousBlockHash, block: previousBlockNumber, step_hashes: previousStepHashes = [], protocol } = forkBlock;
|
|
958
|
-
const chainId = await chainService.chainId();
|
|
959
|
-
const options = {
|
|
960
|
-
blockPayloads: [],
|
|
961
|
-
chainId,
|
|
962
|
-
previousBlockHash,
|
|
963
|
-
previousBlockNumber,
|
|
964
|
-
previousStepHashes,
|
|
965
|
-
signers: [
|
|
966
|
-
account
|
|
967
|
-
],
|
|
968
|
-
txs: [],
|
|
969
|
-
protocol,
|
|
970
|
-
chainStepRewardAddress: XYO_STEP_REWARD_ADDRESS,
|
|
971
|
-
stepRewardPoolBalance: AttoXL1(0n)
|
|
972
|
-
};
|
|
973
|
-
return await buildBlock(options);
|
|
974
|
-
}, "getFirstBlockForNewChain");
|
|
975
|
-
|
|
976
|
-
// src/implementation/head/createForkedHead/createForkedHead.ts
|
|
977
|
-
var createForkedHead = /* @__PURE__ */ __name(async (forkFromBlock, account, chainService) => {
|
|
978
|
-
const chain = [];
|
|
979
|
-
const firstBlockForNewChain = await getFirstBlockForNewChain(forkFromBlock, account, chainService);
|
|
980
|
-
chain.push(firstBlockForNewChain);
|
|
981
|
-
const bridgeIntent = await getBridgeIntent(firstBlockForNewChain, account, chainService);
|
|
982
|
-
chain.push(bridgeIntent);
|
|
983
|
-
const bridgeSourceObservation = await getBridgeSourceObservation(bridgeIntent, account, chainService);
|
|
984
|
-
chain.push(bridgeSourceObservation);
|
|
985
|
-
const bridgeDestinationObservation = await getBridgeDestinationObservation(bridgeSourceObservation, account, chainService);
|
|
986
|
-
chain.push(bridgeDestinationObservation);
|
|
987
|
-
return chain;
|
|
988
|
-
}, "createForkedHead");
|
|
989
|
-
|
|
990
|
-
// src/implementation/head/getForkFromBlock.ts
|
|
991
|
-
import { asHash, hexFromBigInt, isDefined as isDefined9 } from "@xylabs/sdk-js";
|
|
992
|
-
import { isSignedBlockBoundWitnessWithHashMeta } from "@xyo-network/xl1-protocol";
|
|
993
|
-
var getForkFromBlock = /* @__PURE__ */ __name(async (head, chainService, chainArchivist) => {
|
|
994
|
-
if (head.chain !== await chainService.chainId()) {
|
|
995
|
-
const forkedAtBigInt = await chainService.forkedAtHash();
|
|
996
|
-
const forkedAtHex = hexFromBigInt(forkedAtBigInt);
|
|
997
|
-
const forkedAtHash = asHash(forkedAtHex);
|
|
998
|
-
if (isDefined9(forkedAtHash)) {
|
|
999
|
-
const [forkedAtBlock] = await chainArchivist.get([
|
|
1000
|
-
forkedAtHash
|
|
1001
|
-
]);
|
|
1002
|
-
const forkedChainId = await chainService.forkedChainId();
|
|
1003
|
-
const forkedAtBlockNumber = Number(await chainService.forkedAtBlockNumber());
|
|
1004
|
-
if (isSignedBlockBoundWitnessWithHashMeta(forkedAtBlock) && forkedAtBlock.chain === forkedChainId && forkedAtBlock.block === forkedAtBlockNumber) {
|
|
1005
|
-
return forkedAtBlock;
|
|
1006
|
-
}
|
|
1007
|
-
}
|
|
1008
|
-
}
|
|
1009
|
-
}, "getForkFromBlock");
|
|
1010
|
-
|
|
1011
686
|
// src/implementation/head/submitNewChain.ts
|
|
1012
687
|
import { delay } from "@xylabs/sdk-js";
|
|
1013
688
|
import { flattenHydratedBlock } from "@xyo-network/xl1-protocol-sdk";
|
|
@@ -1025,43 +700,21 @@ var submitNewChain = /* @__PURE__ */ __name(async (chain, chainArchivist, chainS
|
|
|
1025
700
|
}
|
|
1026
701
|
}, "submitNewChain");
|
|
1027
702
|
|
|
1028
|
-
// src/implementation/head/head.ts
|
|
1029
|
-
var headSingleton;
|
|
1030
|
-
var initHead = /* @__PURE__ */ __name(async (params) => {
|
|
1031
|
-
const { account, chainArchivist, chainSubmissionsArchivistWrite, chainService } = params;
|
|
1032
|
-
if (headSingleton) return headSingleton;
|
|
1033
|
-
let head = await findMostRecentBlock2(chainArchivist);
|
|
1034
|
-
if (head) {
|
|
1035
|
-
const forkFromBlock = await getForkFromBlock(head, chainService, chainArchivist);
|
|
1036
|
-
if (isDefined10(forkFromBlock)) {
|
|
1037
|
-
const chain = await createForkedHead(forkFromBlock, account, chainService);
|
|
1038
|
-
await submitNewChain(chain, chainArchivist, chainSubmissionsArchivistWrite);
|
|
1039
|
-
const newBlock = assertEx14(chain.at(-1), () => new Error("Failed to get new head after forking"));
|
|
1040
|
-
head = newBlock[0];
|
|
1041
|
-
}
|
|
1042
|
-
} else {
|
|
1043
|
-
const chain = await createBootstrapHead(account, chainService);
|
|
1044
|
-
await submitNewChain(chain, chainArchivist, chainSubmissionsArchivistWrite);
|
|
1045
|
-
const newBlock = assertEx14(chain.at(-1), () => new Error("Failed to get new head after genesis"));
|
|
1046
|
-
head = newBlock[0];
|
|
1047
|
-
}
|
|
1048
|
-
headSingleton = head;
|
|
1049
|
-
return headSingleton;
|
|
1050
|
-
}, "initHead");
|
|
1051
|
-
|
|
1052
703
|
// src/implementation/mempoolRunner.ts
|
|
1053
|
-
import { isDefined as
|
|
704
|
+
import { isDefined as isDefined8 } from "@xylabs/sdk-js";
|
|
1054
705
|
import { HttpRpcTransport as HttpRpcTransport3, JsonRpcMempoolRunner, MempoolRunnerRpcSchemas } from "@xyo-network/xl1-rpc";
|
|
1055
706
|
var mempoolRunnerSingleton;
|
|
1056
|
-
var initMempoolRunner = /* @__PURE__ */ __name((params) => {
|
|
707
|
+
var initMempoolRunner = /* @__PURE__ */ __name(async (params) => {
|
|
1057
708
|
const { config, logger } = params;
|
|
1058
709
|
if (mempoolRunnerSingleton) return mempoolRunnerSingleton;
|
|
1059
710
|
const endpoint = config.services?.apiEndpoint;
|
|
1060
|
-
if (
|
|
711
|
+
if (isDefined8(endpoint)) {
|
|
1061
712
|
const transport = new HttpRpcTransport3(endpoint, {
|
|
1062
713
|
...MempoolRunnerRpcSchemas
|
|
1063
714
|
});
|
|
1064
|
-
const runner =
|
|
715
|
+
const runner = await JsonRpcMempoolRunner.create({
|
|
716
|
+
transport
|
|
717
|
+
});
|
|
1065
718
|
logger?.log("Using mempoolRunner RPC service at", endpoint);
|
|
1066
719
|
return runner;
|
|
1067
720
|
} else {
|
|
@@ -1070,18 +723,20 @@ var initMempoolRunner = /* @__PURE__ */ __name((params) => {
|
|
|
1070
723
|
}, "initMempoolRunner");
|
|
1071
724
|
|
|
1072
725
|
// src/implementation/mempoolViewer.ts
|
|
1073
|
-
import { isDefined as
|
|
726
|
+
import { isDefined as isDefined9 } from "@xylabs/sdk-js";
|
|
1074
727
|
import { HttpRpcTransport as HttpRpcTransport4, JsonRpcMempoolViewer, MempoolViewerRpcSchemas } from "@xyo-network/xl1-rpc";
|
|
1075
728
|
var mempoolViewerSingleton;
|
|
1076
|
-
var initMempoolViewer = /* @__PURE__ */ __name((params) => {
|
|
729
|
+
var initMempoolViewer = /* @__PURE__ */ __name(async (params) => {
|
|
1077
730
|
const { config, logger } = params;
|
|
1078
731
|
if (mempoolViewerSingleton) return mempoolViewerSingleton;
|
|
1079
732
|
const endpoint = config.services?.apiEndpoint;
|
|
1080
|
-
if (
|
|
733
|
+
if (isDefined9(endpoint)) {
|
|
1081
734
|
const transport = new HttpRpcTransport4(endpoint, {
|
|
1082
735
|
...MempoolViewerRpcSchemas
|
|
1083
736
|
});
|
|
1084
|
-
const viewer =
|
|
737
|
+
const viewer = await JsonRpcMempoolViewer.create({
|
|
738
|
+
transport
|
|
739
|
+
});
|
|
1085
740
|
logger?.log("Using MempoolViewer RPC service at", endpoint);
|
|
1086
741
|
return viewer;
|
|
1087
742
|
} else {
|
|
@@ -1090,24 +745,24 @@ var initMempoolViewer = /* @__PURE__ */ __name((params) => {
|
|
|
1090
745
|
}, "initMempoolViewer");
|
|
1091
746
|
|
|
1092
747
|
// src/implementation/pendingTransactions.ts
|
|
1093
|
-
import { isDefined as
|
|
748
|
+
import { isDefined as isDefined11 } from "@xylabs/sdk-js";
|
|
1094
749
|
import { timeBudget } from "@xyo-network/xl1-protocol-sdk";
|
|
1095
750
|
import { HttpRpcTransport as HttpRpcTransport5, JsonRpcMempoolViewer as JsonRpcMempoolViewer2, MempoolViewerRpcSchemas as MempoolViewerRpcSchemas2 } from "@xyo-network/xl1-rpc";
|
|
1096
751
|
|
|
1097
752
|
// src/PendingTransactions/BasePendingTransactions.ts
|
|
1098
753
|
import { ValueType } from "@opentelemetry/api";
|
|
1099
|
-
import { assertEx as
|
|
754
|
+
import { assertEx as assertEx10, creatable as creatable5, exists, filterAs, filterAsync, forget, isDefined as isDefined10, isUndefined } from "@xylabs/sdk-js";
|
|
1100
755
|
import { MemoryArchivist } from "@xyo-network/archivist-memory";
|
|
1101
|
-
import { asBlockBoundWitnessWithHashMeta, asXL1BlockNumber
|
|
1102
|
-
import { findMostRecentBlock as
|
|
756
|
+
import { asBlockBoundWitnessWithHashMeta, asXL1BlockNumber, isTransactionBoundWitnessWithStorageMeta } from "@xyo-network/xl1-protocol";
|
|
757
|
+
import { findMostRecentBlock as findMostRecentBlock2, MempoolViewerMoniker } from "@xyo-network/xl1-protocol-sdk";
|
|
1103
758
|
import { TransactionJsonSchemaValidator, validateTransaction } from "@xyo-network/xl1-validation";
|
|
1104
759
|
import { Mutex as Mutex2 } from "async-mutex";
|
|
1105
760
|
|
|
1106
761
|
// src/PendingTransactions/bundledPayloadToHydratedTransaction.ts
|
|
1107
|
-
import { PayloadBuilder as
|
|
762
|
+
import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/payload-builder";
|
|
1108
763
|
import { asSignedTransactionBoundWitnessWithHashMeta } from "@xyo-network/xl1-protocol";
|
|
1109
764
|
var bundledPayloadToHydratedTransaction = /* @__PURE__ */ __name(async (payload) => {
|
|
1110
|
-
const withHashMeta = await
|
|
765
|
+
const withHashMeta = await PayloadBuilder2.addHashMeta(payload.payloads);
|
|
1111
766
|
const tx = asSignedTransactionBoundWitnessWithHashMeta(withHashMeta.find((p) => p._hash === payload.root));
|
|
1112
767
|
if (tx) {
|
|
1113
768
|
return [
|
|
@@ -1118,7 +773,7 @@ var bundledPayloadToHydratedTransaction = /* @__PURE__ */ __name(async (payload)
|
|
|
1118
773
|
}, "bundledPayloadToHydratedTransaction");
|
|
1119
774
|
|
|
1120
775
|
// src/PendingTransactions/hydratedTransactionToPayloadBundle.ts
|
|
1121
|
-
import { PayloadBuilder as
|
|
776
|
+
import { PayloadBuilder as PayloadBuilder3 } from "@xyo-network/payload-builder";
|
|
1122
777
|
import { PayloadBundleSchema } from "@xyo-network/payload-model";
|
|
1123
778
|
import { flattenHydratedTransaction } from "@xyo-network/xl1-protocol-sdk";
|
|
1124
779
|
var hydratedTransactionToPayloadBundle = /* @__PURE__ */ __name((transaction) => {
|
|
@@ -1126,8 +781,8 @@ var hydratedTransactionToPayloadBundle = /* @__PURE__ */ __name((transaction) =>
|
|
|
1126
781
|
return bundle(root, transaction);
|
|
1127
782
|
}, "hydratedTransactionToPayloadBundle");
|
|
1128
783
|
var bundle = /* @__PURE__ */ __name((root, transaction) => {
|
|
1129
|
-
const payloads = flattenHydratedTransaction(transaction).flatMap((p) =>
|
|
1130
|
-
return new
|
|
784
|
+
const payloads = flattenHydratedTransaction(transaction).flatMap((p) => PayloadBuilder3.omitStorageMeta(p));
|
|
785
|
+
return new PayloadBuilder3({
|
|
1131
786
|
schema: PayloadBundleSchema
|
|
1132
787
|
}).fields({
|
|
1133
788
|
payloads,
|
|
@@ -1195,23 +850,20 @@ var BasePendingTransactionsService = class _BasePendingTransactionsService exten
|
|
|
1195
850
|
return this.params.additionalPendingTransactionValidators ?? [];
|
|
1196
851
|
}
|
|
1197
852
|
get chainArchivist() {
|
|
1198
|
-
return
|
|
1199
|
-
}
|
|
1200
|
-
get chainId() {
|
|
1201
|
-
return assertEx15(this.params.chainId, () => "No chain id");
|
|
853
|
+
return assertEx10(this.params.chainArchivist, () => "No completed blocks with data archivist");
|
|
1202
854
|
}
|
|
1203
855
|
get pendingBundledTransactionsArchivist() {
|
|
1204
|
-
return
|
|
856
|
+
return assertEx10(this.params.pendingBundledTransactionsArchivist, () => "No pending bundled transactions archivist");
|
|
1205
857
|
}
|
|
1206
858
|
get pendingBundledTransactionsLocalArchivist() {
|
|
1207
|
-
return
|
|
859
|
+
return assertEx10(this._curatedPendingBundledTransactionsArchivist, () => "No pending bundled transactions curated archivist");
|
|
1208
860
|
}
|
|
1209
861
|
get pendingTransactionsCount() {
|
|
1210
862
|
forget(this.countPendingTransactions());
|
|
1211
863
|
return this._pendingTransactionsCount;
|
|
1212
864
|
}
|
|
1213
865
|
get rejectedTransactionsArchivist() {
|
|
1214
|
-
return
|
|
866
|
+
return assertEx10(this.params.rejectedTransactionsArchivist, () => "No rejected transactions archivist");
|
|
1215
867
|
}
|
|
1216
868
|
async createHandler() {
|
|
1217
869
|
await super.createHandler();
|
|
@@ -1247,7 +899,7 @@ var BasePendingTransactionsService = class _BasePendingTransactionsService exten
|
|
|
1247
899
|
let lastHead = filterAs(await this.chainArchivist.next({
|
|
1248
900
|
limit: 100
|
|
1249
901
|
}), (x) => asBlockBoundWitnessWithHashMeta(x)).at(-1);
|
|
1250
|
-
if (
|
|
902
|
+
if (isUndefined(lastHead)) return [];
|
|
1251
903
|
await this.pruneCuratedPendingTransactionsArchivist(lastHead._hash);
|
|
1252
904
|
const foundPendingTransactions = [];
|
|
1253
905
|
let cursor;
|
|
@@ -1261,11 +913,11 @@ var BasePendingTransactionsService = class _BasePendingTransactionsService exten
|
|
|
1261
913
|
cursor = pendingBundledTransactions.at(-1)?._sequence;
|
|
1262
914
|
const undeletedTransactionBundles = pendingBundledTransactions.filter((tx) => !this._removablePendingTransactionHashes.has(tx.root));
|
|
1263
915
|
const transactions = (await Promise.all(undeletedTransactionBundles.map((p) => bundledPayloadToHydratedTransaction(p)))).filter(exists);
|
|
1264
|
-
const activeTransactions = transactions.filter(isTransactionActive(
|
|
916
|
+
const activeTransactions = transactions.filter(isTransactionActive(asXL1BlockNumber(lastHead.block + 1, true)));
|
|
1265
917
|
const txValidationResults = await Promise.all(activeTransactions.map(async (tx) => [
|
|
1266
918
|
tx,
|
|
1267
919
|
await validateTransaction(tx, {
|
|
1268
|
-
chainId: this.chainId
|
|
920
|
+
chainId: this.params.chainId
|
|
1269
921
|
}, this.additionalPendingTransactionValidators)
|
|
1270
922
|
]));
|
|
1271
923
|
const validTransactions = txValidationResults.filter(([, errors]) => errors.length === 0).map(([tx]) => tx);
|
|
@@ -1290,8 +942,8 @@ var BasePendingTransactionsService = class _BasePendingTransactionsService exten
|
|
|
1290
942
|
}
|
|
1291
943
|
async cleanupWorker() {
|
|
1292
944
|
return await this._updateCuratedPendingTransactionsArchivistMutex.runExclusive(async () => {
|
|
1293
|
-
const lastHead = await
|
|
1294
|
-
if (
|
|
945
|
+
const lastHead = await findMostRecentBlock2(this.chainArchivist);
|
|
946
|
+
if (isDefined10(lastHead)) await this.pruneCuratedPendingTransactionsArchivist(lastHead._hash);
|
|
1295
947
|
}, _BasePendingTransactionsService.MutexPriority.PurgeTransactions);
|
|
1296
948
|
}
|
|
1297
949
|
async countPendingTransactions() {
|
|
@@ -1318,7 +970,7 @@ var BasePendingTransactionsService = class _BasePendingTransactionsService exten
|
|
|
1318
970
|
}))).filter(exists);
|
|
1319
971
|
const validTransactions = await filterAsync(hydratedUnprocessedTransactions, async (tx) => {
|
|
1320
972
|
const errors = await validateTransaction(tx, {
|
|
1321
|
-
chainId: this.chainId
|
|
973
|
+
chainId: this.params.chainId
|
|
1322
974
|
}, [
|
|
1323
975
|
TransactionJsonSchemaValidator
|
|
1324
976
|
]);
|
|
@@ -1353,7 +1005,7 @@ var BasePendingTransactionsService = class _BasePendingTransactionsService exten
|
|
|
1353
1005
|
let [lastHead] = filterAs(await this.chainArchivist.get([
|
|
1354
1006
|
head
|
|
1355
1007
|
]), (x) => asBlockBoundWitnessWithHashMeta(x));
|
|
1356
|
-
while (
|
|
1008
|
+
while (isDefined10(lastHead)) {
|
|
1357
1009
|
const pendingBundledTransactions = await this.pendingBundledTransactionsLocalArchivist.next({
|
|
1358
1010
|
limit: 100,
|
|
1359
1011
|
order: "asc",
|
|
@@ -1367,7 +1019,7 @@ var BasePendingTransactionsService = class _BasePendingTransactionsService exten
|
|
|
1367
1019
|
foundPendingTransactionsToDeleteHashes.push(...deletedTransactionBundles.map((tx) => tx._hash).filter(exists));
|
|
1368
1020
|
const undeletedTransactionBundles = pendingBundledTransactions.filter((tx) => !this._removablePendingTransactionHashes.has(tx.root));
|
|
1369
1021
|
const transactions = (await Promise.all(undeletedTransactionBundles.map((p) => bundledPayloadToHydratedTransaction(p)))).filter(exists);
|
|
1370
|
-
const expiredTransactions = transactions.filter(isTransactionExpired(
|
|
1022
|
+
const expiredTransactions = transactions.filter(isTransactionExpired(asXL1BlockNumber(lastHead.block + 1, true)));
|
|
1371
1023
|
const expiredBundleHashes = expiredTransactions.map((expiredHydratedTx) => (
|
|
1372
1024
|
// Find the corresponding payload bundle hash for the expired transaction
|
|
1373
1025
|
pendingBundledTransactions.find((bundledTx) => bundledTx.root === expiredHydratedTx[0]._hash)?._hash
|
|
@@ -1399,11 +1051,13 @@ var initPendingTransactions = /* @__PURE__ */ __name(async ({ config, params, lo
|
|
|
1399
1051
|
if (serviceSingleton) return serviceSingleton;
|
|
1400
1052
|
return await timeBudget("initPendingTransactions", logger, async () => {
|
|
1401
1053
|
const endpoint = config.services?.apiEndpoint;
|
|
1402
|
-
if (
|
|
1054
|
+
if (isDefined11(endpoint)) {
|
|
1403
1055
|
const transport = new HttpRpcTransport5(endpoint, {
|
|
1404
1056
|
...MempoolViewerRpcSchemas2
|
|
1405
1057
|
});
|
|
1406
|
-
const viewer =
|
|
1058
|
+
const viewer = await JsonRpcMempoolViewer2.create({
|
|
1059
|
+
transport
|
|
1060
|
+
});
|
|
1407
1061
|
logger?.log("Using MempoolViewer RPC service at", endpoint);
|
|
1408
1062
|
return viewer;
|
|
1409
1063
|
} else {
|
|
@@ -1413,30 +1067,177 @@ var initPendingTransactions = /* @__PURE__ */ __name(async ({ config, params, lo
|
|
|
1413
1067
|
}, 2e3, true);
|
|
1414
1068
|
}, "initPendingTransactions");
|
|
1415
1069
|
|
|
1416
|
-
// src/implementation/
|
|
1417
|
-
import {
|
|
1070
|
+
// src/implementation/reward.ts
|
|
1071
|
+
import { assertEx as assertEx11 } from "@xylabs/sdk-js";
|
|
1072
|
+
import { SimpleBlockRewardViewer, timeBudget as timeBudget2 } from "@xyo-network/xl1-protocol-sdk";
|
|
1073
|
+
var rewardServiceSingleton;
|
|
1074
|
+
var initBlockRewardViewer = /* @__PURE__ */ __name((params) => {
|
|
1075
|
+
if (rewardServiceSingleton) return rewardServiceSingleton;
|
|
1076
|
+
return timeBudget2("initBlockRewardViewer", params.logger, () => {
|
|
1077
|
+
const { config } = params;
|
|
1078
|
+
rewardServiceSingleton = canUseEvmBlockRewardViewer({
|
|
1079
|
+
config
|
|
1080
|
+
}) ? initEvmBlockRewardViewer(params) : initXyoBlockRewardViewer(params);
|
|
1081
|
+
return rewardServiceSingleton;
|
|
1082
|
+
}, 2e3, true);
|
|
1083
|
+
}, "initBlockRewardViewer");
|
|
1084
|
+
var initXyoBlockRewardViewer = /* @__PURE__ */ __name((params) => {
|
|
1085
|
+
if (rewardServiceSingleton) return rewardServiceSingleton;
|
|
1086
|
+
return timeBudget2("initXyoBlockRewardViewer", params.logger, () => {
|
|
1087
|
+
rewardServiceSingleton = SimpleBlockRewardViewer.create(params);
|
|
1088
|
+
return rewardServiceSingleton;
|
|
1089
|
+
}, 2e3, true);
|
|
1090
|
+
}, "initXyoBlockRewardViewer");
|
|
1091
|
+
var canUseEvmBlockRewardViewer = /* @__PURE__ */ __name((params) => canUseEvmProvider({
|
|
1092
|
+
config: params.config
|
|
1093
|
+
}), "canUseEvmBlockRewardViewer");
|
|
1094
|
+
var initEvmBlockRewardViewer = /* @__PURE__ */ __name(async (params) => {
|
|
1095
|
+
if (rewardServiceSingleton) return rewardServiceSingleton;
|
|
1096
|
+
return await timeBudget2("initEvmBlockRewardViewer", params.logger, async () => {
|
|
1097
|
+
const provider2 = assertEx11(await initEvmProvider(params));
|
|
1098
|
+
const evmBlockRewardViewerParams = {
|
|
1099
|
+
...params,
|
|
1100
|
+
provider: provider2
|
|
1101
|
+
};
|
|
1102
|
+
rewardServiceSingleton = EvmBlockRewardViewer.create(evmBlockRewardViewerParams);
|
|
1103
|
+
return rewardServiceSingleton;
|
|
1104
|
+
}, 2e3, true);
|
|
1105
|
+
}, "initEvmBlockRewardViewer");
|
|
1106
|
+
|
|
1107
|
+
// src/NetworkStakeStepReward/BaseNetworkStakeStepRewardService.ts
|
|
1108
|
+
import { creatable as creatable6 } from "@xylabs/sdk-js";
|
|
1109
|
+
import { NetworkStakeStepRewardViewerMoniker } from "@xyo-network/xl1-protocol-sdk";
|
|
1110
|
+
function _ts_decorate6(decorators, target, key, desc) {
|
|
1111
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
1112
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
1113
|
+
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;
|
|
1114
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1115
|
+
}
|
|
1116
|
+
__name(_ts_decorate6, "_ts_decorate");
|
|
1117
|
+
var BaseNetworkStakeStepRewardService = class _BaseNetworkStakeStepRewardService extends BaseService {
|
|
1118
|
+
static {
|
|
1119
|
+
__name(this, "BaseNetworkStakeStepRewardService");
|
|
1120
|
+
}
|
|
1121
|
+
static defaultMoniker = NetworkStakeStepRewardViewerMoniker;
|
|
1122
|
+
static monikers = [
|
|
1123
|
+
NetworkStakeStepRewardViewerMoniker
|
|
1124
|
+
];
|
|
1125
|
+
moniker = _BaseNetworkStakeStepRewardService.defaultMoniker;
|
|
1126
|
+
networkStakeStepRewardAddressHistory(_address) {
|
|
1127
|
+
throw new Error("Method [networkStakeStepRewardAddressHistory] not implemented.");
|
|
1128
|
+
}
|
|
1129
|
+
networkStakeStepRewardAddressReward(_context, _address) {
|
|
1130
|
+
throw new Error("Method [networkStakeStepRewardAddressReward] not implemented.");
|
|
1131
|
+
}
|
|
1132
|
+
networkStakeStepRewardAddressShare(_context, _address) {
|
|
1133
|
+
throw new Error("Method [networkStakeStepRewardAddressShare] not implemented.");
|
|
1134
|
+
}
|
|
1135
|
+
networkStakeStepRewardClaimedByAddress(_address) {
|
|
1136
|
+
throw new Error("Method [networkStakeStepRewardClaimedByAddress] not implemented.");
|
|
1137
|
+
}
|
|
1138
|
+
networkStakeStepRewardForPosition(_position, _range) {
|
|
1139
|
+
throw new Error("Method [networkStakeStepRewardForPosition] not implemented.");
|
|
1140
|
+
}
|
|
1141
|
+
networkStakeStepRewardForStep(_context) {
|
|
1142
|
+
throw new Error("Method [networkStakeStepRewardForStep] not implemented.");
|
|
1143
|
+
}
|
|
1144
|
+
networkStakeStepRewardForStepForPosition(_context, _position) {
|
|
1145
|
+
throw new Error("Method [networkStakeStepRewardForStepForPosition] not implemented.");
|
|
1146
|
+
}
|
|
1147
|
+
networkStakeStepRewardPoolRewards(_context) {
|
|
1148
|
+
throw new Error("Method [networkStakeStepRewardPoolRewards] not implemented.");
|
|
1149
|
+
}
|
|
1150
|
+
networkStakeStepRewardPoolShares(_context) {
|
|
1151
|
+
throw new Error("Method [networkStakeStepRewardPoolShares] not implemented.");
|
|
1152
|
+
}
|
|
1153
|
+
networkStakeStepRewardPositionWeight(_context, _position) {
|
|
1154
|
+
throw new Error("Method [networkStakeStepRewardPositionWeight] not implemented.");
|
|
1155
|
+
}
|
|
1156
|
+
networkStakeStepRewardPotentialPositionLoss(_context, _position) {
|
|
1157
|
+
throw new Error("Method [networkStakeStepRewardPotentialPositionLoss] not implemented.");
|
|
1158
|
+
}
|
|
1159
|
+
networkStakeStepRewardRandomizer(_context) {
|
|
1160
|
+
throw new Error("Method [networkStakeStepRewardRandomizer] not implemented.");
|
|
1161
|
+
}
|
|
1162
|
+
networkStakeStepRewardStakerCount(_context) {
|
|
1163
|
+
throw new Error("Method [networkStakeStepRewardStakerCount] not implemented.");
|
|
1164
|
+
}
|
|
1165
|
+
networkStakeStepRewardUnclaimedByAddress(_address) {
|
|
1166
|
+
throw new Error("Method [networkStakeStepRewardUnclaimedByAddress] not implemented.");
|
|
1167
|
+
}
|
|
1168
|
+
networkStakeStepRewardWeightForAddress(_context, _address) {
|
|
1169
|
+
throw new Error("Method [networkStakeStepRewardWeightForAddress] not implemented.");
|
|
1170
|
+
}
|
|
1171
|
+
networkStakeStepRewardsForPosition(_position, _range) {
|
|
1172
|
+
throw new Error("Method [networkStakeStepRewardsForPosition] not implemented.");
|
|
1173
|
+
}
|
|
1174
|
+
networkStakeStepRewardsForRange(_range) {
|
|
1175
|
+
throw new Error("Method [networkStakeStepRewardsForRange] not implemented.");
|
|
1176
|
+
}
|
|
1177
|
+
networkStakeStepRewardsForStepLevel(_stepLevel, _range) {
|
|
1178
|
+
throw new Error("Method [networkStakeStepRewardsForStepLevel] not implemented.");
|
|
1179
|
+
}
|
|
1180
|
+
};
|
|
1181
|
+
BaseNetworkStakeStepRewardService = _ts_decorate6([
|
|
1182
|
+
creatable6()
|
|
1183
|
+
], BaseNetworkStakeStepRewardService);
|
|
1184
|
+
|
|
1185
|
+
// src/Schemas/BaseSchemasService.ts
|
|
1186
|
+
import { creatable as creatable7, spanRootAsync } from "@xylabs/sdk-js";
|
|
1187
|
+
import { schemasSummary } from "@xyo-network/xl1-protocol-sdk";
|
|
1188
|
+
function _ts_decorate7(decorators, target, key, desc) {
|
|
1189
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
1190
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
1191
|
+
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;
|
|
1192
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1193
|
+
}
|
|
1194
|
+
__name(_ts_decorate7, "_ts_decorate");
|
|
1195
|
+
var BaseSchemasService = class extends BaseService {
|
|
1196
|
+
static {
|
|
1197
|
+
__name(this, "BaseSchemasService");
|
|
1198
|
+
}
|
|
1199
|
+
async schema(head, schema) {
|
|
1200
|
+
return (await this.schemas(head, [
|
|
1201
|
+
schema
|
|
1202
|
+
]))[schema] ?? 0;
|
|
1203
|
+
}
|
|
1204
|
+
async schemas(head, schemas) {
|
|
1205
|
+
return await spanRootAsync("transfers", async () => {
|
|
1206
|
+
const [summary] = await schemasSummary(this.params.schemasStepSummaryContext);
|
|
1207
|
+
const result = {};
|
|
1208
|
+
for (const schema of schemas) {
|
|
1209
|
+
const count = summary[schema] ?? 0;
|
|
1210
|
+
result[schema] = count;
|
|
1211
|
+
}
|
|
1212
|
+
return result;
|
|
1213
|
+
});
|
|
1214
|
+
}
|
|
1215
|
+
};
|
|
1216
|
+
BaseSchemasService = _ts_decorate7([
|
|
1217
|
+
creatable7()
|
|
1218
|
+
], BaseSchemasService);
|
|
1418
1219
|
|
|
1419
1220
|
// src/simple/block/runner/SimpleBlockRunner.ts
|
|
1420
|
-
import {
|
|
1221
|
+
import { assertEx as assertEx13, exists as exists2, hexToBigInt, isDefined as isDefined12 } from "@xylabs/sdk-js";
|
|
1421
1222
|
import { MemoryArchivist as MemoryArchivist2 } from "@xyo-network/archivist-memory";
|
|
1422
1223
|
import { FixedPercentageBlockRewardDiviner, FixedPercentageBlockRewardDivinerConfigSchema } from "@xyo-network/chain-modules";
|
|
1423
|
-
import { buildNextBlock as
|
|
1424
|
-
import { PayloadBuilder as
|
|
1425
|
-
import { asBlockBoundWitness
|
|
1426
|
-
import
|
|
1224
|
+
import { buildNextBlock as buildNextBlock2 } from "@xyo-network/chain-protocol";
|
|
1225
|
+
import { PayloadBuilder as PayloadBuilder5 } from "@xyo-network/payload-builder";
|
|
1226
|
+
import { asBlockBoundWitness, AttoXL1, BlockNumberSchema, defaultRewardRatio, XYO_STEP_REWARD_ADDRESS } from "@xyo-network/xl1-protocol";
|
|
1227
|
+
import { AbstractCreatableProvider as AbstractCreatableProvider2, AccountBalanceViewerMoniker, BlockRewardViewerMoniker as BlockRewardViewerMoniker2, BlockRunnerMoniker, creatableProvider, createDeclarationIntent as createDeclarationIntent2, MempoolRunnerMoniker, MempoolViewerMoniker as MempoolViewerMoniker2, TimeSyncViewerMoniker } from "@xyo-network/xl1-protocol-sdk";
|
|
1427
1228
|
|
|
1428
1229
|
// src/simple/block/runner/generateTransactionFeeTransfers.ts
|
|
1429
|
-
import { hexFromBigInt
|
|
1430
|
-
import { assertEx as
|
|
1431
|
-
import { PayloadBuilder as
|
|
1230
|
+
import { hexFromBigInt } from "@xylabs/sdk-js";
|
|
1231
|
+
import { assertEx as assertEx12 } from "@xylabs/sdk-js";
|
|
1232
|
+
import { PayloadBuilder as PayloadBuilder4 } from "@xyo-network/payload-builder";
|
|
1432
1233
|
import { TransferSchema, XYO_ZERO_ADDRESS } from "@xyo-network/xl1-protocol";
|
|
1433
1234
|
import { transactionRequiredGas } from "@xyo-network/xl1-protocol-sdk";
|
|
1434
1235
|
import { HydratedTransactionWrapper } from "@xyo-network/xl1-wrappers";
|
|
1435
1236
|
async function generateTransactionFeeTransfers(address, transactions) {
|
|
1436
1237
|
const txs = await Promise.all(transactions.map(async (tx) => {
|
|
1437
1238
|
return HydratedTransactionWrapper.parse([
|
|
1438
|
-
await
|
|
1439
|
-
await
|
|
1239
|
+
await PayloadBuilder4.addStorageMeta(tx[0]),
|
|
1240
|
+
await PayloadBuilder4.addStorageMeta(tx[1])
|
|
1440
1241
|
]);
|
|
1441
1242
|
}));
|
|
1442
1243
|
const txBaseFeeCosts = {};
|
|
@@ -1456,49 +1257,50 @@ async function generateTransactionFeeTransfers(address, transactions) {
|
|
|
1456
1257
|
from,
|
|
1457
1258
|
transfers: {
|
|
1458
1259
|
// burn the base fee
|
|
1459
|
-
[XYO_ZERO_ADDRESS]:
|
|
1260
|
+
[XYO_ZERO_ADDRESS]: hexFromBigInt(amount)
|
|
1460
1261
|
}
|
|
1461
1262
|
};
|
|
1462
1263
|
return payload;
|
|
1463
1264
|
});
|
|
1464
1265
|
for (const [from, amount] of Object.entries(txGasCosts)) {
|
|
1465
|
-
const fromPayload =
|
|
1466
|
-
fromPayload.transfers[address] =
|
|
1266
|
+
const fromPayload = assertEx12(payloads.find((p) => p.from === from), () => "from payload not found");
|
|
1267
|
+
fromPayload.transfers[address] = hexFromBigInt(amount);
|
|
1467
1268
|
}
|
|
1468
1269
|
return payloads;
|
|
1469
1270
|
}
|
|
1470
1271
|
__name(generateTransactionFeeTransfers, "generateTransactionFeeTransfers");
|
|
1471
1272
|
|
|
1472
1273
|
// src/simple/block/runner/SimpleBlockRunner.ts
|
|
1473
|
-
function
|
|
1274
|
+
function _ts_decorate8(decorators, target, key, desc) {
|
|
1474
1275
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
1475
1276
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
1476
1277
|
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;
|
|
1477
1278
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1478
1279
|
}
|
|
1479
|
-
__name(
|
|
1280
|
+
__name(_ts_decorate8, "_ts_decorate");
|
|
1480
1281
|
var DEFAULT_BLOCK_SIZE = 10;
|
|
1481
1282
|
var XYO_PRODUCER_REDECLARATION_DURATION = 1e4;
|
|
1482
1283
|
var XYO_PRODUCER_REDECLARATION_WINDOW = 500;
|
|
1483
|
-
var
|
|
1484
|
-
balanceViewer: z.object().loose(),
|
|
1485
|
-
blockRewardViewer: z.object().loose(),
|
|
1486
|
-
chainId: z.string(),
|
|
1487
|
-
config: z.object().loose(),
|
|
1488
|
-
mempoolViewer: z.object().loose(),
|
|
1489
|
-
mempoolRunner: z.object().loose(),
|
|
1490
|
-
rejectedTransactionsArchivist: z.object().loose().optional(),
|
|
1491
|
-
rewardAddress: AddressZod,
|
|
1492
|
-
time: z.object().loose(),
|
|
1493
|
-
validateHydratedBlockState: z.function().optional()
|
|
1494
|
-
});
|
|
1495
|
-
var SimpleBlockRunner = class _SimpleBlockRunner extends AbstractCreatable3 {
|
|
1284
|
+
var SimpleBlockRunner = class _SimpleBlockRunner extends AbstractCreatableProvider2 {
|
|
1496
1285
|
static {
|
|
1497
1286
|
__name(this, "SimpleBlockRunner");
|
|
1498
1287
|
}
|
|
1288
|
+
static defaultMoniker = BlockRunnerMoniker;
|
|
1289
|
+
static monikers = [
|
|
1290
|
+
BlockRunnerMoniker
|
|
1291
|
+
];
|
|
1292
|
+
moniker = _SimpleBlockRunner.defaultMoniker;
|
|
1499
1293
|
_blockRewardDiviner;
|
|
1500
1294
|
_lastRedeclarationBlock;
|
|
1501
1295
|
_rejectedTransactionsArchivist;
|
|
1296
|
+
_account;
|
|
1297
|
+
_accountBalanceViewer;
|
|
1298
|
+
_address;
|
|
1299
|
+
_blockRewardViewer;
|
|
1300
|
+
_mempoolRunner;
|
|
1301
|
+
_mempoolViewer;
|
|
1302
|
+
_rewardAddress;
|
|
1303
|
+
_timeSyncViewer;
|
|
1502
1304
|
/**
|
|
1503
1305
|
* The default block size for a block
|
|
1504
1306
|
*/
|
|
@@ -1519,29 +1321,26 @@ var SimpleBlockRunner = class _SimpleBlockRunner extends AbstractCreatable3 {
|
|
|
1519
1321
|
static get RedeclarationWindow() {
|
|
1520
1322
|
return XYO_PRODUCER_REDECLARATION_WINDOW;
|
|
1521
1323
|
}
|
|
1522
|
-
get address() {
|
|
1523
|
-
return this.account.address;
|
|
1524
|
-
}
|
|
1525
1324
|
get account() {
|
|
1526
|
-
return
|
|
1325
|
+
return this._account;
|
|
1527
1326
|
}
|
|
1528
|
-
get
|
|
1529
|
-
return
|
|
1327
|
+
get accountBalanceViewer() {
|
|
1328
|
+
return this._accountBalanceViewer;
|
|
1530
1329
|
}
|
|
1531
|
-
get
|
|
1532
|
-
return
|
|
1330
|
+
get address() {
|
|
1331
|
+
return this._address;
|
|
1533
1332
|
}
|
|
1534
|
-
get
|
|
1535
|
-
return
|
|
1333
|
+
get blockRewardViewer() {
|
|
1334
|
+
return this._blockRewardViewer;
|
|
1536
1335
|
}
|
|
1537
1336
|
// protected get electionService() {
|
|
1538
1337
|
// return assertEx(this.params.electionService, () => 'electionService is required')
|
|
1539
1338
|
// }
|
|
1540
1339
|
get mempoolRunner() {
|
|
1541
|
-
return
|
|
1340
|
+
return this._mempoolRunner;
|
|
1542
1341
|
}
|
|
1543
1342
|
get mempoolViewer() {
|
|
1544
|
-
return
|
|
1343
|
+
return this._mempoolViewer;
|
|
1545
1344
|
}
|
|
1546
1345
|
// protected get pendingTransactionsService() {
|
|
1547
1346
|
// return assertEx(this.params.pendingTransactionsService, () => 'Missing pendingTransactionsService')
|
|
@@ -1550,34 +1349,34 @@ var SimpleBlockRunner = class _SimpleBlockRunner extends AbstractCreatable3 {
|
|
|
1550
1349
|
return this._rejectedTransactionsArchivist;
|
|
1551
1350
|
}
|
|
1552
1351
|
get rewardAddress() {
|
|
1553
|
-
return
|
|
1352
|
+
return assertEx13(this.params.rewardAddress, () => "No reward address provided");
|
|
1554
1353
|
}
|
|
1555
1354
|
// protected get stakeIntentService(): StakeIntentService {
|
|
1556
1355
|
// return assertEx(this.params.stakeIntentService, () => 'No StakeIntentService provided')
|
|
1557
1356
|
// }
|
|
1558
|
-
get
|
|
1559
|
-
return
|
|
1357
|
+
get timeSyncViewer() {
|
|
1358
|
+
return this._timeSyncViewer;
|
|
1560
1359
|
}
|
|
1561
1360
|
// protected get validateHydratedBlockState() {
|
|
1562
1361
|
// return assertEx(this.params.validateHydratedBlockState, () => 'validateHydratedBlockState is required')
|
|
1563
1362
|
// }
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1363
|
+
async createHandler() {
|
|
1364
|
+
this._rejectedTransactionsArchivist = this.params.rejectedTransactionsArchivist ?? await MemoryArchivist2.create();
|
|
1365
|
+
this._account = assertEx13(this.params.account, () => "Account is required");
|
|
1366
|
+
this._rewardAddress = assertEx13(this.params.rewardAddress, () => "No reward address provided");
|
|
1367
|
+
this._address = this.account.address;
|
|
1368
|
+
this._accountBalanceViewer = await this.locateAndCreate(AccountBalanceViewerMoniker);
|
|
1369
|
+
this._blockRewardViewer = await this.locateAndCreate(BlockRewardViewerMoniker2);
|
|
1370
|
+
this._mempoolRunner = await this.locateAndCreate(MempoolRunnerMoniker);
|
|
1371
|
+
this._mempoolViewer = await this.locateAndCreate(MempoolViewerMoniker2);
|
|
1372
|
+
this._timeSyncViewer = await this.locateAndCreate(TimeSyncViewerMoniker);
|
|
1572
1373
|
}
|
|
1573
1374
|
async next(head) {
|
|
1574
|
-
if (head.chain !== this.chainId) return;
|
|
1575
1375
|
return await this.proposeNextValidBlock(head);
|
|
1576
1376
|
}
|
|
1577
1377
|
async produceNextBlock(head, force) {
|
|
1578
|
-
assertEx17(head.chain === this.chainId, () => "Block chain ID does not match");
|
|
1579
1378
|
const result = await this.proposeNextValidBlock(head);
|
|
1580
|
-
return force ?
|
|
1379
|
+
return force ? assertEx13(result, () => "Failed to produce next block") : result;
|
|
1581
1380
|
}
|
|
1582
1381
|
async getBlockRewardTransfers(block) {
|
|
1583
1382
|
if (!this._blockRewardDiviner) {
|
|
@@ -1591,7 +1390,7 @@ var SimpleBlockRunner = class _SimpleBlockRunner extends AbstractCreatable3 {
|
|
|
1591
1390
|
}
|
|
1592
1391
|
});
|
|
1593
1392
|
}
|
|
1594
|
-
const blockId = new
|
|
1393
|
+
const blockId = new PayloadBuilder5({
|
|
1595
1394
|
schema: BlockNumberSchema
|
|
1596
1395
|
}).fields({
|
|
1597
1396
|
block
|
|
@@ -1607,50 +1406,49 @@ var SimpleBlockRunner = class _SimpleBlockRunner extends AbstractCreatable3 {
|
|
|
1607
1406
|
* @returns chain stake intent for the producer redeclaration, or undefined if no redeclaration is needed
|
|
1608
1407
|
*/
|
|
1609
1408
|
getProducerRedeclaration(head) {
|
|
1610
|
-
if (this.params.config.producer.disableIntentRedeclaration) return;
|
|
1409
|
+
if (this.params.context.config.producer.disableIntentRedeclaration) return;
|
|
1611
1410
|
const currentBlock = head.block;
|
|
1612
1411
|
return createDeclarationIntent2(this.address, "producer", currentBlock, currentBlock + _SimpleBlockRunner.RedeclarationDuration);
|
|
1613
1412
|
}
|
|
1614
1413
|
async proposeNextValidBlock(head, validateBalances = false, force = false) {
|
|
1615
1414
|
return await this.spanAsync("proposeNextValidBlock", async () => {
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1415
|
+
try {
|
|
1416
|
+
const { block: previousBlock } = assertEx13(asBlockBoundWitness(head), () => "Invalid head block");
|
|
1417
|
+
const nextBlock = previousBlock + 1;
|
|
1418
|
+
const nextBlockTransactions = await this.mempoolViewer.pendingTransactions({
|
|
1419
|
+
limit: _SimpleBlockRunner.DefaultBlockSize
|
|
1420
|
+
});
|
|
1421
|
+
this.logger?.info(`Pending Tx Count ${nextBlockTransactions.length}`);
|
|
1422
|
+
const blockPayloads = [];
|
|
1423
|
+
const producerRedeclarationPayload = await this.getProducerRedeclaration(head);
|
|
1424
|
+
if (producerRedeclarationPayload) blockPayloads.push(producerRedeclarationPayload);
|
|
1425
|
+
if (nextBlockTransactions.length === 0 && !this.heartbeatRequired(head) && !force) return;
|
|
1426
|
+
const rewardTransferPayloads = await this.getBlockRewardTransfers(nextBlock);
|
|
1427
|
+
blockPayloads.push(...rewardTransferPayloads);
|
|
1428
|
+
const transactionTransfers = await generateTransactionFeeTransfers(this.address, nextBlockTransactions);
|
|
1429
|
+
const timeStart = Date.now();
|
|
1430
|
+
const timePayload = await this.generateTimePayload(head);
|
|
1431
|
+
const timeDuration = Date.now() - timeStart;
|
|
1432
|
+
if (timeDuration > 100) {
|
|
1433
|
+
this.logger?.warn(`[Slow] Generated time payload in ${timeDuration}ms`);
|
|
1434
|
+
}
|
|
1435
|
+
const [fundedNextBlockTransactions, fundedTransfers] = await this.filterByFunded(head, nextBlockTransactions, transactionTransfers, validateBalances);
|
|
1436
|
+
blockPayloads.push(...fundedTransfers, timePayload);
|
|
1437
|
+
this.logger?.info(`Building block ${head.block + 1}`);
|
|
1438
|
+
const startBuild = Date.now();
|
|
1439
|
+
const stepRewardPoolBalance = (await this.accountBalanceViewer.accountBalances([
|
|
1440
|
+
XYO_STEP_REWARD_ADDRESS
|
|
1441
|
+
]))[XYO_STEP_REWARD_ADDRESS];
|
|
1442
|
+
const block = await buildNextBlock2(head, fundedNextBlockTransactions, blockPayloads, [
|
|
1443
|
+
this.account
|
|
1444
|
+
], XYO_STEP_REWARD_ADDRESS, stepRewardPoolBalance);
|
|
1445
|
+
this.logger?.info(`Built block ${block[0].block} in ${Date.now() - startBuild}ms with ${block[1].length} payloads`);
|
|
1446
|
+
await this.mempoolRunner.submitBlocks([
|
|
1447
|
+
block
|
|
1448
|
+
]);
|
|
1449
|
+
return block;
|
|
1450
|
+
} catch {
|
|
1638
1451
|
}
|
|
1639
|
-
const [fundedNextBlockTransactions, fundedTransfers] = await this.filterByFunded(head, nextBlockTransactions, transactionTransfers, validateBalances);
|
|
1640
|
-
blockPayloads.push(...fundedTransfers, timePayload);
|
|
1641
|
-
this.logger?.info(`Building block ${head.block + 1}`);
|
|
1642
|
-
const startBuild = Date.now();
|
|
1643
|
-
const stepRewardPoolBalance = (await this.balanceViewer.accountBalances([
|
|
1644
|
-
XYO_STEP_REWARD_ADDRESS2
|
|
1645
|
-
]))[XYO_STEP_REWARD_ADDRESS2];
|
|
1646
|
-
const block = await buildNextBlock5(head, fundedNextBlockTransactions, blockPayloads, [
|
|
1647
|
-
this.account
|
|
1648
|
-
], XYO_STEP_REWARD_ADDRESS2, stepRewardPoolBalance);
|
|
1649
|
-
this.logger?.info(`Built block ${block[0].block} in ${Date.now() - startBuild}ms with ${block[1].length} payloads`);
|
|
1650
|
-
await this.mempoolRunner.submitBlocks([
|
|
1651
|
-
block
|
|
1652
|
-
]);
|
|
1653
|
-
return block;
|
|
1654
1452
|
});
|
|
1655
1453
|
}
|
|
1656
1454
|
// remove unfunded transactions and block transfers
|
|
@@ -1661,9 +1459,9 @@ var SimpleBlockRunner = class _SimpleBlockRunner extends AbstractCreatable3 {
|
|
|
1661
1459
|
if (!transfer) return;
|
|
1662
1460
|
const totalTransferCost = Object.values(transfer?.transfers).reduce((acc, t) => acc + hexToBigInt(t ?? "00"), 0n);
|
|
1663
1461
|
if (validateBalances) {
|
|
1664
|
-
const balance = (await this.
|
|
1462
|
+
const balance = (await this.accountBalanceViewer.accountBalances([
|
|
1665
1463
|
transfer.from
|
|
1666
|
-
]))[transfer.from] ??
|
|
1464
|
+
]))[transfer.from] ?? AttoXL1(0n);
|
|
1667
1465
|
if (balance >= totalTransferCost) {
|
|
1668
1466
|
fundedTransfers.push(transfer);
|
|
1669
1467
|
return tx;
|
|
@@ -1679,19 +1477,7 @@ var SimpleBlockRunner = class _SimpleBlockRunner extends AbstractCreatable3 {
|
|
|
1679
1477
|
];
|
|
1680
1478
|
}
|
|
1681
1479
|
async generateTimePayload(head) {
|
|
1682
|
-
|
|
1683
|
-
const ethereumHash = asHash2(ethHashOrNull, () => "No ethereum hash available from time sync service");
|
|
1684
|
-
const timePayload = {
|
|
1685
|
-
schema: TimeSchema,
|
|
1686
|
-
// this is for the previous block
|
|
1687
|
-
xl1: head.block,
|
|
1688
|
-
// this is for the previous block
|
|
1689
|
-
xl1Hash: head._hash,
|
|
1690
|
-
ethereum,
|
|
1691
|
-
ethereumHash,
|
|
1692
|
-
epoch: Date.now()
|
|
1693
|
-
};
|
|
1694
|
-
return timePayload;
|
|
1480
|
+
return await this.timeSyncViewer.currentTimePayload();
|
|
1695
1481
|
}
|
|
1696
1482
|
/**
|
|
1697
1483
|
* Check if a heartbeat block is required based on network activity.
|
|
@@ -1700,8 +1486,8 @@ var SimpleBlockRunner = class _SimpleBlockRunner extends AbstractCreatable3 {
|
|
|
1700
1486
|
*/
|
|
1701
1487
|
heartbeatRequired(head) {
|
|
1702
1488
|
const epoch = head.$epoch;
|
|
1703
|
-
if (
|
|
1704
|
-
const { heartbeatInterval } = this.params.config.producer;
|
|
1489
|
+
if (isDefined12(epoch)) {
|
|
1490
|
+
const { heartbeatInterval } = this.params.context.config.producer;
|
|
1705
1491
|
if (Date.now() - epoch > heartbeatInterval) {
|
|
1706
1492
|
return true;
|
|
1707
1493
|
}
|
|
@@ -1709,252 +1495,10 @@ var SimpleBlockRunner = class _SimpleBlockRunner extends AbstractCreatable3 {
|
|
|
1709
1495
|
return false;
|
|
1710
1496
|
}
|
|
1711
1497
|
};
|
|
1712
|
-
SimpleBlockRunner =
|
|
1713
|
-
|
|
1498
|
+
SimpleBlockRunner = _ts_decorate8([
|
|
1499
|
+
creatableProvider()
|
|
1714
1500
|
], SimpleBlockRunner);
|
|
1715
1501
|
|
|
1716
|
-
// src/implementation/producer.ts
|
|
1717
|
-
var serviceSingleton2;
|
|
1718
|
-
var initBlockProducer = /* @__PURE__ */ __name(async (params) => {
|
|
1719
|
-
if (serviceSingleton2) return serviceSingleton2;
|
|
1720
|
-
return await timeBudget2("initBlockProducer", params.logger, async () => {
|
|
1721
|
-
serviceSingleton2 = await SimpleBlockRunner.create(params);
|
|
1722
|
-
return serviceSingleton2;
|
|
1723
|
-
}, 2e3, true);
|
|
1724
|
-
}, "initBlockProducer");
|
|
1725
|
-
|
|
1726
|
-
// src/implementation/reward.ts
|
|
1727
|
-
import { assertEx as assertEx18 } from "@xylabs/sdk-js";
|
|
1728
|
-
import { SimpleBlockRewardViewer, timeBudget as timeBudget3 } from "@xyo-network/xl1-protocol-sdk";
|
|
1729
|
-
var rewardServiceSingleton;
|
|
1730
|
-
var initBlockRewardViewer = /* @__PURE__ */ __name((params) => {
|
|
1731
|
-
if (rewardServiceSingleton) return rewardServiceSingleton;
|
|
1732
|
-
return timeBudget3("initBlockRewardViewer", params.logger, () => {
|
|
1733
|
-
const { config } = params;
|
|
1734
|
-
rewardServiceSingleton = canUseEvmBlockRewardViewer({
|
|
1735
|
-
config
|
|
1736
|
-
}) ? initEvmBlockRewardViewer(params) : initXyoBlockRewardViewer(params);
|
|
1737
|
-
return rewardServiceSingleton;
|
|
1738
|
-
}, 2e3, true);
|
|
1739
|
-
}, "initBlockRewardViewer");
|
|
1740
|
-
var initXyoBlockRewardViewer = /* @__PURE__ */ __name((params) => {
|
|
1741
|
-
if (rewardServiceSingleton) return rewardServiceSingleton;
|
|
1742
|
-
return timeBudget3("initXyoBlockRewardViewer", params.logger, () => {
|
|
1743
|
-
rewardServiceSingleton = SimpleBlockRewardViewer.create(params);
|
|
1744
|
-
return rewardServiceSingleton;
|
|
1745
|
-
}, 2e3, true);
|
|
1746
|
-
}, "initXyoBlockRewardViewer");
|
|
1747
|
-
var canUseEvmBlockRewardViewer = /* @__PURE__ */ __name((params) => canUseEvmProvider({
|
|
1748
|
-
config: params.config
|
|
1749
|
-
}), "canUseEvmBlockRewardViewer");
|
|
1750
|
-
var initEvmBlockRewardViewer = /* @__PURE__ */ __name(async (params) => {
|
|
1751
|
-
if (rewardServiceSingleton) return rewardServiceSingleton;
|
|
1752
|
-
return await timeBudget3("initEvmBlockRewardViewer", params.logger, async () => {
|
|
1753
|
-
const provider2 = assertEx18(await initEvmProvider(params));
|
|
1754
|
-
const evmBlockRewardViewerParams = {
|
|
1755
|
-
...params,
|
|
1756
|
-
provider: provider2
|
|
1757
|
-
};
|
|
1758
|
-
rewardServiceSingleton = EvmBlockRewardViewer.create(evmBlockRewardViewerParams);
|
|
1759
|
-
return rewardServiceSingleton;
|
|
1760
|
-
}, 2e3, true);
|
|
1761
|
-
}, "initEvmBlockRewardViewer");
|
|
1762
|
-
|
|
1763
|
-
// src/implementation/time.ts
|
|
1764
|
-
import { timeBudget as timeBudget4 } from "@xyo-network/xl1-protocol-sdk";
|
|
1765
|
-
|
|
1766
|
-
// src/Time/BaseTimeSyncService.ts
|
|
1767
|
-
import { creatable as creatable7 } from "@xylabs/sdk-js";
|
|
1768
|
-
import { SimpleTimeSyncViewer, TimeSyncViewerMoniker } from "@xyo-network/xl1-protocol-sdk";
|
|
1769
|
-
function _ts_decorate7(decorators, target, key, desc) {
|
|
1770
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
1771
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
1772
|
-
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;
|
|
1773
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1774
|
-
}
|
|
1775
|
-
__name(_ts_decorate7, "_ts_decorate");
|
|
1776
|
-
var BaseTimeSyncService = class _BaseTimeSyncService extends BaseService {
|
|
1777
|
-
static {
|
|
1778
|
-
__name(this, "BaseTimeSyncService");
|
|
1779
|
-
}
|
|
1780
|
-
static defaultMoniker = TimeSyncViewerMoniker;
|
|
1781
|
-
static monikers = [
|
|
1782
|
-
TimeSyncViewerMoniker
|
|
1783
|
-
];
|
|
1784
|
-
moniker = _BaseTimeSyncService.defaultMoniker;
|
|
1785
|
-
timeSyncViewer;
|
|
1786
|
-
get blockViewer() {
|
|
1787
|
-
return this.params.blockViewer;
|
|
1788
|
-
}
|
|
1789
|
-
get ethProvider() {
|
|
1790
|
-
return this.params.ethProvider;
|
|
1791
|
-
}
|
|
1792
|
-
async convertTime(fromDomain, toDomain, from) {
|
|
1793
|
-
return await this.timeSyncViewer.convertTime(fromDomain, toDomain, from);
|
|
1794
|
-
}
|
|
1795
|
-
async createHandler() {
|
|
1796
|
-
await super.createHandler();
|
|
1797
|
-
this.timeSyncViewer = await SimpleTimeSyncViewer.create({
|
|
1798
|
-
blockViewer: this.blockViewer,
|
|
1799
|
-
ethProvider: this.ethProvider
|
|
1800
|
-
});
|
|
1801
|
-
}
|
|
1802
|
-
async currentTime(domain) {
|
|
1803
|
-
return await this.timeSyncViewer.currentTime(domain);
|
|
1804
|
-
}
|
|
1805
|
-
async currentTimeAndHash(domain) {
|
|
1806
|
-
return await this.timeSyncViewer.currentTimeAndHash(domain);
|
|
1807
|
-
}
|
|
1808
|
-
async currentTimePayload() {
|
|
1809
|
-
return await this.timeSyncViewer.currentTimePayload();
|
|
1810
|
-
}
|
|
1811
|
-
};
|
|
1812
|
-
BaseTimeSyncService = _ts_decorate7([
|
|
1813
|
-
creatable7()
|
|
1814
|
-
], BaseTimeSyncService);
|
|
1815
|
-
|
|
1816
|
-
// src/implementation/time.ts
|
|
1817
|
-
var timeSyncServiceSingleton;
|
|
1818
|
-
var initTimeService = /* @__PURE__ */ __name(async ({ blockViewer, config, logger, meterProvider, traceProvider }) => {
|
|
1819
|
-
if (timeSyncServiceSingleton) return timeSyncServiceSingleton;
|
|
1820
|
-
return await timeBudget4("initTimeService", logger, async () => {
|
|
1821
|
-
const ethProvider = canUseEvmProvider({
|
|
1822
|
-
config
|
|
1823
|
-
}) ? await initEvmProvider({
|
|
1824
|
-
config
|
|
1825
|
-
}) : void 0;
|
|
1826
|
-
timeSyncServiceSingleton = BaseTimeSyncService.create({
|
|
1827
|
-
blockViewer,
|
|
1828
|
-
ethProvider,
|
|
1829
|
-
logger,
|
|
1830
|
-
meterProvider,
|
|
1831
|
-
traceProvider
|
|
1832
|
-
});
|
|
1833
|
-
return await timeSyncServiceSingleton;
|
|
1834
|
-
}, 2e3, true);
|
|
1835
|
-
}, "initTimeService");
|
|
1836
|
-
|
|
1837
|
-
// src/implementation/validator.ts
|
|
1838
|
-
var serviceSingleton3;
|
|
1839
|
-
var initValidator = /* @__PURE__ */ __name((params) => {
|
|
1840
|
-
if (serviceSingleton3) return serviceSingleton3;
|
|
1841
|
-
serviceSingleton3 = initBlockProducer(params);
|
|
1842
|
-
return serviceSingleton3;
|
|
1843
|
-
}, "initValidator");
|
|
1844
|
-
|
|
1845
|
-
// src/NetworkStakeStepReward/BaseNetworkStakeStepRewardService.ts
|
|
1846
|
-
import { creatable as creatable8 } from "@xylabs/sdk-js";
|
|
1847
|
-
import { NetworkStakeStepRewardViewerMoniker } from "@xyo-network/xl1-protocol-sdk";
|
|
1848
|
-
function _ts_decorate8(decorators, target, key, desc) {
|
|
1849
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
1850
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
1851
|
-
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;
|
|
1852
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1853
|
-
}
|
|
1854
|
-
__name(_ts_decorate8, "_ts_decorate");
|
|
1855
|
-
var BaseNetworkStakeStepRewardService = class _BaseNetworkStakeStepRewardService extends BaseService {
|
|
1856
|
-
static {
|
|
1857
|
-
__name(this, "BaseNetworkStakeStepRewardService");
|
|
1858
|
-
}
|
|
1859
|
-
static defaultMoniker = NetworkStakeStepRewardViewerMoniker;
|
|
1860
|
-
static monikers = [
|
|
1861
|
-
NetworkStakeStepRewardViewerMoniker
|
|
1862
|
-
];
|
|
1863
|
-
moniker = _BaseNetworkStakeStepRewardService.defaultMoniker;
|
|
1864
|
-
networkStakeStepRewardAddressHistory(_address) {
|
|
1865
|
-
throw new Error("Method [networkStakeStepRewardAddressHistory] not implemented.");
|
|
1866
|
-
}
|
|
1867
|
-
networkStakeStepRewardAddressReward(_context, _address) {
|
|
1868
|
-
throw new Error("Method [networkStakeStepRewardAddressReward] not implemented.");
|
|
1869
|
-
}
|
|
1870
|
-
networkStakeStepRewardAddressShare(_context, _address) {
|
|
1871
|
-
throw new Error("Method [networkStakeStepRewardAddressShare] not implemented.");
|
|
1872
|
-
}
|
|
1873
|
-
networkStakeStepRewardClaimedByAddress(_address) {
|
|
1874
|
-
throw new Error("Method [networkStakeStepRewardClaimedByAddress] not implemented.");
|
|
1875
|
-
}
|
|
1876
|
-
networkStakeStepRewardForPosition(_position, _range) {
|
|
1877
|
-
throw new Error("Method [networkStakeStepRewardForPosition] not implemented.");
|
|
1878
|
-
}
|
|
1879
|
-
networkStakeStepRewardForStep(_context) {
|
|
1880
|
-
throw new Error("Method [networkStakeStepRewardForStep] not implemented.");
|
|
1881
|
-
}
|
|
1882
|
-
networkStakeStepRewardForStepForPosition(_context, _position) {
|
|
1883
|
-
throw new Error("Method [networkStakeStepRewardForStepForPosition] not implemented.");
|
|
1884
|
-
}
|
|
1885
|
-
networkStakeStepRewardPoolRewards(_context) {
|
|
1886
|
-
throw new Error("Method [networkStakeStepRewardPoolRewards] not implemented.");
|
|
1887
|
-
}
|
|
1888
|
-
networkStakeStepRewardPoolShares(_context) {
|
|
1889
|
-
throw new Error("Method [networkStakeStepRewardPoolShares] not implemented.");
|
|
1890
|
-
}
|
|
1891
|
-
networkStakeStepRewardPositionWeight(_context, _position) {
|
|
1892
|
-
throw new Error("Method [networkStakeStepRewardPositionWeight] not implemented.");
|
|
1893
|
-
}
|
|
1894
|
-
networkStakeStepRewardPotentialPositionLoss(_context, _position) {
|
|
1895
|
-
throw new Error("Method [networkStakeStepRewardPotentialPositionLoss] not implemented.");
|
|
1896
|
-
}
|
|
1897
|
-
networkStakeStepRewardRandomizer(_context) {
|
|
1898
|
-
throw new Error("Method [networkStakeStepRewardRandomizer] not implemented.");
|
|
1899
|
-
}
|
|
1900
|
-
networkStakeStepRewardStakerCount(_context) {
|
|
1901
|
-
throw new Error("Method [networkStakeStepRewardStakerCount] not implemented.");
|
|
1902
|
-
}
|
|
1903
|
-
networkStakeStepRewardUnclaimedByAddress(_address) {
|
|
1904
|
-
throw new Error("Method [networkStakeStepRewardUnclaimedByAddress] not implemented.");
|
|
1905
|
-
}
|
|
1906
|
-
networkStakeStepRewardWeightForAddress(_context, _address) {
|
|
1907
|
-
throw new Error("Method [networkStakeStepRewardWeightForAddress] not implemented.");
|
|
1908
|
-
}
|
|
1909
|
-
networkStakeStepRewardsForPosition(_position, _range) {
|
|
1910
|
-
throw new Error("Method [networkStakeStepRewardsForPosition] not implemented.");
|
|
1911
|
-
}
|
|
1912
|
-
networkStakeStepRewardsForRange(_range) {
|
|
1913
|
-
throw new Error("Method [networkStakeStepRewardsForRange] not implemented.");
|
|
1914
|
-
}
|
|
1915
|
-
networkStakeStepRewardsForStepLevel(_stepLevel, _range) {
|
|
1916
|
-
throw new Error("Method [networkStakeStepRewardsForStepLevel] not implemented.");
|
|
1917
|
-
}
|
|
1918
|
-
};
|
|
1919
|
-
BaseNetworkStakeStepRewardService = _ts_decorate8([
|
|
1920
|
-
creatable8()
|
|
1921
|
-
], BaseNetworkStakeStepRewardService);
|
|
1922
|
-
|
|
1923
|
-
// src/Schemas/BaseSchemasService.ts
|
|
1924
|
-
import { creatable as creatable9, spanRootAsync } from "@xylabs/sdk-js";
|
|
1925
|
-
import { schemasSummary } from "@xyo-network/xl1-protocol-sdk";
|
|
1926
|
-
function _ts_decorate9(decorators, target, key, desc) {
|
|
1927
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
1928
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
1929
|
-
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;
|
|
1930
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1931
|
-
}
|
|
1932
|
-
__name(_ts_decorate9, "_ts_decorate");
|
|
1933
|
-
var BaseSchemasService = class extends BaseService {
|
|
1934
|
-
static {
|
|
1935
|
-
__name(this, "BaseSchemasService");
|
|
1936
|
-
}
|
|
1937
|
-
async schema(head, schema) {
|
|
1938
|
-
return (await this.schemas(head, [
|
|
1939
|
-
schema
|
|
1940
|
-
]))[schema] ?? 0;
|
|
1941
|
-
}
|
|
1942
|
-
async schemas(head, schemas) {
|
|
1943
|
-
return await spanRootAsync("transfers", async () => {
|
|
1944
|
-
const [summary] = await schemasSummary(this.params.context);
|
|
1945
|
-
const result = {};
|
|
1946
|
-
for (const schema of schemas) {
|
|
1947
|
-
const count = summary[schema] ?? 0;
|
|
1948
|
-
result[schema] = count;
|
|
1949
|
-
}
|
|
1950
|
-
return result;
|
|
1951
|
-
});
|
|
1952
|
-
}
|
|
1953
|
-
};
|
|
1954
|
-
BaseSchemasService = _ts_decorate9([
|
|
1955
|
-
creatable9()
|
|
1956
|
-
], BaseSchemasService);
|
|
1957
|
-
|
|
1958
1502
|
// src/StakeIntent/lib/getBlockSignedStakeDeclarations.ts
|
|
1959
1503
|
import { exists as exists3, filterAs as filterAs2 } from "@xylabs/sdk-js";
|
|
1960
1504
|
import { isBoundWitness } from "@xyo-network/boundwitness-model";
|
|
@@ -1982,21 +1526,21 @@ var mapBoundWitnessToStakeIntentHashes = /* @__PURE__ */ __name((bw) => {
|
|
|
1982
1526
|
}, "mapBoundWitnessToStakeIntentHashes");
|
|
1983
1527
|
|
|
1984
1528
|
// src/StakeIntent/XyoStakeIntentService.ts
|
|
1985
|
-
import { asAddress as asAddress2, assertEx as
|
|
1529
|
+
import { asAddress as asAddress2, assertEx as assertEx14, creatable as creatable8, filterAs as filterAs3, isUndefined as isUndefined2 } from "@xylabs/sdk-js";
|
|
1986
1530
|
import { analyzeChain, ChainStakeIntentAnalyzer, isChainSummaryStakeIntent } from "@xyo-network/chain-analyze";
|
|
1987
1531
|
import { DEFAULT_FIND_FIRST_MATCHING_NEXT_OPTIONS, findFirstMatching, IntervalMap } from "@xyo-network/chain-utils";
|
|
1988
|
-
import { PayloadBuilder as
|
|
1989
|
-
import { asBlockBoundWitness as
|
|
1990
|
-
import { asChainIndexingServiceStateWithStorageMeta, ChainIndexingServiceStateSchema, isChainIndexingServiceState, readPayloadMapFromStore
|
|
1532
|
+
import { PayloadBuilder as PayloadBuilder6 } from "@xyo-network/payload-builder";
|
|
1533
|
+
import { asBlockBoundWitness as asBlockBoundWitness2, asBlockBoundWitnessWithStorageMeta, asChainStakeIntent as asChainStakeIntent2 } from "@xyo-network/xl1-protocol";
|
|
1534
|
+
import { asChainIndexingServiceStateWithStorageMeta, BlockViewerMoniker as BlockViewerMoniker3, ChainIndexingServiceStateSchema, ChainStakeViewerMoniker, isChainIndexingServiceState, readPayloadMapFromStore, timeBudget as timeBudget3 } from "@xyo-network/xl1-protocol-sdk";
|
|
1991
1535
|
import { Mutex as Mutex3 } from "async-mutex";
|
|
1992
|
-
import { LRUCache
|
|
1993
|
-
function
|
|
1536
|
+
import { LRUCache } from "lru-cache";
|
|
1537
|
+
function _ts_decorate9(decorators, target, key, desc) {
|
|
1994
1538
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
1995
1539
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
1996
1540
|
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;
|
|
1997
1541
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1998
1542
|
}
|
|
1999
|
-
__name(
|
|
1543
|
+
__name(_ts_decorate9, "_ts_decorate");
|
|
2000
1544
|
var ACTIVE_STAKE_TTL = 1e3 * 60 * 60 * 2;
|
|
2001
1545
|
var NO_ACTIVE_STAKE_TTL = 1e3 * 2;
|
|
2002
1546
|
var STAKE_CACHE_MAX_ENTRIES = 1e4;
|
|
@@ -2014,45 +1558,47 @@ var XyoStakeIntentService = class extends BaseService {
|
|
|
2014
1558
|
// in performance for small sets, and (most importantly) easily
|
|
2015
1559
|
// persisted so we can recover state on restart.
|
|
2016
1560
|
_producers = new IntervalMap();
|
|
2017
|
-
_stakeCache = new
|
|
1561
|
+
_stakeCache = new LRUCache({
|
|
2018
1562
|
max: STAKE_CACHE_MAX_ENTRIES
|
|
2019
1563
|
});
|
|
2020
1564
|
_updateMutex = new Mutex3();
|
|
1565
|
+
_blockViewer;
|
|
1566
|
+
_chainStakeViewer;
|
|
2021
1567
|
get blockViewer() {
|
|
2022
|
-
return this.
|
|
1568
|
+
return this._blockViewer;
|
|
2023
1569
|
}
|
|
2024
1570
|
get chainArchivist() {
|
|
2025
|
-
return
|
|
1571
|
+
return assertEx14(this.params.chainArchivist, () => "chainArchivist not set");
|
|
2026
1572
|
}
|
|
2027
1573
|
get chainStakeViewer() {
|
|
2028
|
-
return
|
|
1574
|
+
return this._chainStakeViewer;
|
|
2029
1575
|
}
|
|
2030
1576
|
get stakeIntentStateArchivist() {
|
|
2031
|
-
return
|
|
1577
|
+
return assertEx14(this.params.stakeIntentStateArchivist, () => "stakeIntentStateArchivist not set");
|
|
2032
1578
|
}
|
|
2033
1579
|
static async paramsHandler(params) {
|
|
2034
1580
|
return {
|
|
2035
1581
|
...await super.paramsHandler(params),
|
|
2036
|
-
|
|
2037
|
-
|
|
2038
|
-
chainStakeViewer: assertEx19(params?.chainStakeViewer, () => "chainStakeViewer is required"),
|
|
2039
|
-
stakeIntentStateArchivist: assertEx19(params?.stakeIntentStateArchivist, () => "stakeIntentStateArchivist is required")
|
|
1582
|
+
chainArchivist: assertEx14(params?.chainArchivist, () => "chainArchivist is required"),
|
|
1583
|
+
stakeIntentStateArchivist: assertEx14(params?.stakeIntentStateArchivist, () => "stakeIntentStateArchivist is required")
|
|
2040
1584
|
};
|
|
2041
1585
|
}
|
|
2042
1586
|
async createHandler() {
|
|
1587
|
+
this._blockViewer = await this.locator.getInstance(BlockViewerMoniker3);
|
|
1588
|
+
this._chainStakeViewer = await this.locator.getInstance(ChainStakeViewerMoniker);
|
|
2043
1589
|
const head = await this.blockViewer.currentBlock();
|
|
2044
|
-
if (
|
|
1590
|
+
if (isUndefined2(head)) return;
|
|
2045
1591
|
await this.recoverState(head[0]._hash);
|
|
2046
1592
|
}
|
|
2047
1593
|
async getDeclaredCandidateRanges(address, intent) {
|
|
2048
1594
|
await Promise.resolve();
|
|
2049
|
-
|
|
1595
|
+
assertEx14(intent === "producer", () => `Support not yet added for intent ${intent}`);
|
|
2050
1596
|
const results = this._producers.get(address);
|
|
2051
1597
|
return results ?? [];
|
|
2052
1598
|
}
|
|
2053
1599
|
async getDeclaredCandidatesForBlock(block, intent) {
|
|
2054
1600
|
return await this.spanAsync("getDeclaredCandidatesForBlock", async () => {
|
|
2055
|
-
|
|
1601
|
+
assertEx14(intent === "producer", () => `Support not yet added for intent ${intent}`);
|
|
2056
1602
|
const results = this._producers.findAllContaining(block);
|
|
2057
1603
|
const candidates = [
|
|
2058
1604
|
...results
|
|
@@ -2065,7 +1611,7 @@ var XyoStakeIntentService = class extends BaseService {
|
|
|
2065
1611
|
getRequiredMinimumStakeForIntent(intent) {
|
|
2066
1612
|
switch (intent) {
|
|
2067
1613
|
case "producer": {
|
|
2068
|
-
const { minStake } = this.params.config.producer;
|
|
1614
|
+
const { minStake } = this.params.context.config.producer;
|
|
2069
1615
|
return BigInt(minStake);
|
|
2070
1616
|
}
|
|
2071
1617
|
}
|
|
@@ -2106,7 +1652,7 @@ var XyoStakeIntentService = class extends BaseService {
|
|
|
2106
1652
|
}
|
|
2107
1653
|
async persistState(current) {
|
|
2108
1654
|
const state = this._producers.serialize();
|
|
2109
|
-
const payload = new
|
|
1655
|
+
const payload = new PayloadBuilder6({
|
|
2110
1656
|
schema: ChainIndexingServiceStateSchema
|
|
2111
1657
|
}).fields({
|
|
2112
1658
|
endBlockHash: current,
|
|
@@ -2117,8 +1663,8 @@ var XyoStakeIntentService = class extends BaseService {
|
|
|
2117
1663
|
]);
|
|
2118
1664
|
}
|
|
2119
1665
|
async recoverState(current) {
|
|
2120
|
-
return await
|
|
2121
|
-
const currentBlock =
|
|
1666
|
+
return await timeBudget3("XyoStakeIntentService.recoverState", console, async () => {
|
|
1667
|
+
const currentBlock = assertEx14(asBlockBoundWitness2((await this.chainArchivist.get([
|
|
2122
1668
|
current
|
|
2123
1669
|
]))?.[0]), () => `Block ${current} not found`);
|
|
2124
1670
|
const currentBlockNum = currentBlock.block;
|
|
@@ -2135,7 +1681,7 @@ var XyoStakeIntentService = class extends BaseService {
|
|
|
2135
1681
|
const indexed = (await this.chainArchivist.get([
|
|
2136
1682
|
state.endBlockHash
|
|
2137
1683
|
]))?.[0];
|
|
2138
|
-
const indexedBlock =
|
|
1684
|
+
const indexedBlock = asBlockBoundWitnessWithStorageMeta(indexed);
|
|
2139
1685
|
if (indexedBlock) {
|
|
2140
1686
|
const indexedBlockNum = indexedBlock.block;
|
|
2141
1687
|
if (indexedBlockNum <= currentBlockNum) {
|
|
@@ -2159,10 +1705,10 @@ var XyoStakeIntentService = class extends BaseService {
|
|
|
2159
1705
|
await this._updateMutex.runExclusive(async () => {
|
|
2160
1706
|
return await this.spanAsync("updateIndex", async () => {
|
|
2161
1707
|
const currentHead = (await this.blockViewer.currentBlock())[0];
|
|
2162
|
-
if (
|
|
2163
|
-
return await
|
|
1708
|
+
if (isUndefined2(currentHead)) return;
|
|
1709
|
+
return await timeBudget3("XyoStakeIntentService.updateIndex", console, async () => {
|
|
2164
1710
|
const currentHeadHash = currentHead._hash;
|
|
2165
|
-
const chainMap =
|
|
1711
|
+
const chainMap = readPayloadMapFromStore(this.chainArchivist);
|
|
2166
1712
|
const result = await analyzeChain({
|
|
2167
1713
|
chainMap
|
|
2168
1714
|
}, [
|
|
@@ -2187,20 +1733,20 @@ var XyoStakeIntentService = class extends BaseService {
|
|
|
2187
1733
|
});
|
|
2188
1734
|
}
|
|
2189
1735
|
};
|
|
2190
|
-
XyoStakeIntentService =
|
|
2191
|
-
|
|
1736
|
+
XyoStakeIntentService = _ts_decorate9([
|
|
1737
|
+
creatable8()
|
|
2192
1738
|
], XyoStakeIntentService);
|
|
2193
1739
|
|
|
2194
1740
|
// src/StepStake/BaseStepStakeService.ts
|
|
2195
|
-
import { creatable as
|
|
1741
|
+
import { creatable as creatable9 } from "@xylabs/sdk-js";
|
|
2196
1742
|
import { StepStakeViewerMoniker } from "@xyo-network/xl1-protocol-sdk";
|
|
2197
|
-
function
|
|
1743
|
+
function _ts_decorate10(decorators, target, key, desc) {
|
|
2198
1744
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
2199
1745
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
2200
1746
|
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;
|
|
2201
1747
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
2202
1748
|
}
|
|
2203
|
-
__name(
|
|
1749
|
+
__name(_ts_decorate10, "_ts_decorate");
|
|
2204
1750
|
var BaseStepStakeService = class _BaseStepStakeService extends BaseService {
|
|
2205
1751
|
static {
|
|
2206
1752
|
__name(this, "BaseStepStakeService");
|
|
@@ -2217,8 +1763,8 @@ var BaseStepStakeService = class _BaseStepStakeService extends BaseService {
|
|
|
2217
1763
|
throw new Error("Method [stepStakeForAddress] not implemented.");
|
|
2218
1764
|
}
|
|
2219
1765
|
};
|
|
2220
|
-
BaseStepStakeService =
|
|
2221
|
-
|
|
1766
|
+
BaseStepStakeService = _ts_decorate10([
|
|
1767
|
+
creatable9()
|
|
2222
1768
|
], BaseStepStakeService);
|
|
2223
1769
|
export {
|
|
2224
1770
|
BaseAccountableService,
|
|
@@ -2228,14 +1774,11 @@ export {
|
|
|
2228
1774
|
BaseSchemasService,
|
|
2229
1775
|
BaseService,
|
|
2230
1776
|
BaseStepStakeService,
|
|
2231
|
-
BaseTimeSyncService,
|
|
2232
|
-
ChainBlockNumberIterationService,
|
|
2233
1777
|
DEFAULT_BLOCK_SIZE,
|
|
2234
1778
|
EvmBlockRewardViewer,
|
|
2235
|
-
|
|
2236
|
-
|
|
1779
|
+
EvmChainViewer,
|
|
1780
|
+
MemoryChainViewer,
|
|
2237
1781
|
SimpleBlockRunner,
|
|
2238
|
-
SimpleBlockRunnerParamsZod,
|
|
2239
1782
|
XYO_PRODUCER_REDECLARATION_DURATION,
|
|
2240
1783
|
XYO_PRODUCER_REDECLARATION_WINDOW,
|
|
2241
1784
|
XyoStakeIntentService,
|
|
@@ -2244,21 +1787,19 @@ export {
|
|
|
2244
1787
|
blockViewerFromChainIteratorAndArchivist,
|
|
2245
1788
|
canUseEvmProvider,
|
|
2246
1789
|
creatableService,
|
|
1790
|
+
createBootstrapHead,
|
|
2247
1791
|
getBlockSignedStakeDeclarations,
|
|
2248
1792
|
initAccountBalanceService,
|
|
2249
|
-
initBlockProducer,
|
|
2250
1793
|
initBlockRewardViewer,
|
|
2251
1794
|
initBlockViewer,
|
|
2252
1795
|
initChainService,
|
|
2253
1796
|
initEvmBlockRewardViewer,
|
|
2254
1797
|
initEvmProvider,
|
|
2255
|
-
initHead,
|
|
2256
1798
|
initMemoryChainService,
|
|
2257
1799
|
initMempoolRunner,
|
|
2258
1800
|
initMempoolViewer,
|
|
2259
1801
|
initPendingTransactions,
|
|
2260
|
-
|
|
2261
|
-
|
|
2262
|
-
initXyoBlockRewardViewer
|
|
1802
|
+
initXyoBlockRewardViewer,
|
|
1803
|
+
submitNewChain
|
|
2263
1804
|
};
|
|
2264
1805
|
//# sourceMappingURL=index.mjs.map
|