@xyo-network/xl1-cli-lib 1.14.0 → 1.14.2

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.
@@ -166,7 +166,7 @@ var BalanceActor = class _BalanceActor extends Actor {
166
166
  super("BalanceActor", "Balance", params);
167
167
  }
168
168
  get balanceService() {
169
- return assertEx(this.params.balanceService, () => "balanceService not set");
169
+ return assertEx(this.params.balance, () => "balanceService not set");
170
170
  }
171
171
  get chainIterator() {
172
172
  return assertEx(this.params.chainIterator, () => "chainIterator not set");
@@ -266,7 +266,7 @@ var ProducerActor = class _ProducerActor extends Actor {
266
266
  return assertEx3(this.params.account, () => "account not set");
267
267
  }
268
268
  get balanceService() {
269
- return assertEx3(this.params.balanceService, () => "balanceService not set");
269
+ return assertEx3(this.params.balance, () => "balanceService not set");
270
270
  }
271
271
  get chainIterator() {
272
272
  return assertEx3(this.params.chainIterator, () => "chainIterator not set");
@@ -284,7 +284,7 @@ var ProducerActor = class _ProducerActor extends Actor {
284
284
  return assertEx3(this.params.producer, () => "producer not set");
285
285
  }
286
286
  get stakeIntentService() {
287
- return assertEx3(this.params.stakeIntentService, () => "stakeIntentService not set");
287
+ return assertEx3(this.params.stakeIntent, () => "stakeIntentService not set");
288
288
  }
289
289
  static create(params) {
290
290
  return new _ProducerActor(params);
@@ -413,7 +413,7 @@ var ValidatorActor = class _ValidatorActor extends Actor {
413
413
  return assertEx4(this.params.account, () => "account not set");
414
414
  }
415
415
  get balanceService() {
416
- return assertEx4(this.params.balanceService, () => "balanceService not set");
416
+ return assertEx4(this.params.balance, () => "balanceService not set");
417
417
  }
418
418
  get chainIterator() {
419
419
  return assertEx4(this.params.chainIterator, () => "chainIterator not set");
@@ -428,7 +428,7 @@ var ValidatorActor = class _ValidatorActor extends Actor {
428
428
  return assertEx4(this.params.pendingBundledTransactionsArchivistWrite, () => "pendingBundledTransactionsArchivistWrite not set");
429
429
  }
430
430
  get stakeIntentService() {
431
- return assertEx4(this.params.stakeIntentService, () => "stakeIntentService not set");
431
+ return assertEx4(this.params.stakeIntent, () => "stakeIntentService not set");
432
432
  }
433
433
  // protected get validator() {
434
434
  // return assertEx(this.params.validator, () => 'validator not set')
@@ -529,8 +529,8 @@ var initHealthEndpoints = /* @__PURE__ */ __name((params) => {
529
529
  // src/orchestration/initServices.ts
530
530
  import { assertEx as assertEx17 } from "@xylabs/assert";
531
531
  import { asAddress as asAddress2 } from "@xylabs/hex";
532
- import { isDefined as isDefined10 } from "@xylabs/typeof";
533
- import { balanceSummaryRepositoryFromMap, initTelemetry, startupSpanAsync as startupSpanAsync7, validateHydratedBlockState } from "@xyo-network/chain-sdk";
532
+ import { isDefined as isDefined11 } from "@xylabs/typeof";
533
+ import { balanceSummaryRepositoryFromMap, BaseTimeSyncService, initTelemetry, startupSpanAsync as startupSpanAsync7, validateHydratedBlockState } from "@xyo-network/chain-sdk";
534
534
 
535
535
  // src/orchestration/archivists/ChainFinalized/archivist.ts
536
536
  import { initArchivistSync, startupSpanAsync } from "@xyo-network/chain-sdk";
@@ -1091,8 +1091,9 @@ var init = /* @__PURE__ */ __name((params) => {
1091
1091
 
1092
1092
  // src/orchestration/services/implementation/head.ts
1093
1093
  import { delay } from "@xylabs/delay";
1094
- import { ZERO_ADDRESS as ZERO_ADDRESS2 } from "@xylabs/hex";
1095
- import { createGenesisBlock, findMostRecentBlock as findMostRecentBlock2 } from "@xyo-network/chain-sdk";
1094
+ import { asHash, hexFromBigInt, ZERO_ADDRESS as ZERO_ADDRESS2 } from "@xylabs/hex";
1095
+ import { isDefined as isDefined10 } from "@xylabs/typeof";
1096
+ import { buildBlock, createGenesisBlock, findMostRecentBlock as findMostRecentBlock2, isBlockBoundWitnessWithHashStorageMeta } from "@xyo-network/chain-sdk";
1096
1097
  import { flattenHydratedBlock as flattenHydratedBlock2 } from "@xyo-network/xl1-protocol-sdk";
1097
1098
  var headSingleton;
1098
1099
  var createBootstrapHead = /* @__PURE__ */ __name(async (chainSubmissionsArchivistWrite, chainArchivist, account) => {
@@ -1108,11 +1109,57 @@ var createBootstrapHead = /* @__PURE__ */ __name(async (chainSubmissionsArchivis
1108
1109
  }
1109
1110
  return bw;
1110
1111
  }, "createBootstrapHead");
1112
+ var createForkedHead = /* @__PURE__ */ __name(async (chainSubmissionsArchivistWrite, chainArchivist, account, forkBlock, chainId) => {
1113
+ const { _hash: previousBlockHash, block: previousBlockNumber, step_hashes: previousStepHashes, protocol } = forkBlock;
1114
+ const forkBlockReward = 0n;
1115
+ const forkBlockRewardAddress = account.address;
1116
+ const options = {
1117
+ blockPayloads: [],
1118
+ chainId,
1119
+ previousBlockHash,
1120
+ previousBlockNumber,
1121
+ previousStepHashes,
1122
+ signers: [
1123
+ account
1124
+ ],
1125
+ txs: [],
1126
+ protocol,
1127
+ reward: forkBlockReward,
1128
+ rewardAddress: forkBlockRewardAddress
1129
+ };
1130
+ const block = await buildBlock(options);
1131
+ const [bw] = block;
1132
+ await chainSubmissionsArchivistWrite.insert(flattenHydratedBlock2(block));
1133
+ while (true) {
1134
+ const result = await chainArchivist.get([
1135
+ bw._hash
1136
+ ]);
1137
+ if (result.length > 0) break;
1138
+ await delay(1e3);
1139
+ }
1140
+ return bw;
1141
+ }, "createForkedHead");
1111
1142
  var initHead = /* @__PURE__ */ __name(async (params) => {
1112
- const { account, chainArchivist, chainSubmissionsArchivistWrite } = params;
1143
+ const { account, chainArchivist, chainSubmissionsArchivistWrite, chainService } = params;
1113
1144
  if (headSingleton) return headSingleton;
1114
1145
  let head = await findMostRecentBlock2(chainArchivist);
1115
- if (!head) head = await createBootstrapHead(chainSubmissionsArchivistWrite, chainArchivist, account);
1146
+ if (!head) {
1147
+ head = await createBootstrapHead(chainSubmissionsArchivistWrite, chainArchivist, account);
1148
+ } else if (head.chain !== chainService.chainId) {
1149
+ const forkedAtBigInt = await chainService.forkedAtHash();
1150
+ const forkedAtHex = hexFromBigInt(forkedAtBigInt);
1151
+ const forkedAtHash = asHash(forkedAtHex);
1152
+ if (isDefined10(forkedAtHash)) {
1153
+ const [forkBlock] = await chainArchivist.get([
1154
+ forkedAtHash
1155
+ ]);
1156
+ const forkedChainId = await chainService.forkedChainId();
1157
+ const forkedAtBlockNumber = Number(await chainService.forkedAtBlockNumber());
1158
+ if (isBlockBoundWitnessWithHashStorageMeta(forkBlock) && forkBlock.chain === forkedChainId && forkBlock.block === forkedAtBlockNumber) {
1159
+ head = await createForkedHead(chainSubmissionsArchivistWrite, chainArchivist, account, forkBlock, chainService.chainId);
1160
+ }
1161
+ }
1162
+ }
1116
1163
  headSingleton = head;
1117
1164
  return headSingleton;
1118
1165
  }, "initHead");
@@ -1290,7 +1337,7 @@ var RuntimeStatusMonitor = class extends LoggerStatusReporter {
1290
1337
 
1291
1338
  // src/orchestration/initServices.ts
1292
1339
  var isStartable = /* @__PURE__ */ __name((value) => {
1293
- return isDefined10(value.start) && typeof value.start === "function";
1340
+ return isDefined11(value.start) && typeof value.start === "function";
1294
1341
  }, "isStartable");
1295
1342
  var initServices = /* @__PURE__ */ __name(async (context) => {
1296
1343
  const { config: config3, logger } = context;
@@ -1354,7 +1401,8 @@ var initServices = /* @__PURE__ */ __name(async (context) => {
1354
1401
  ...initParams,
1355
1402
  account,
1356
1403
  chainArchivist,
1357
- chainSubmissionsArchivistWrite
1404
+ chainSubmissionsArchivistWrite,
1405
+ chainService
1358
1406
  }));
1359
1407
  const [pendingTransactionsService, rewardService, chainIterator, balanceService] = await Promise.all([
1360
1408
  startupSpanAsync7("PendingTransactions", () => initPendingTransactions({
@@ -1411,7 +1459,11 @@ var initServices = /* @__PURE__ */ __name(async (context) => {
1411
1459
  validateHydratedBlockState,
1412
1460
  ...initParams
1413
1461
  };
1414
- const rewardAddress = isDefined10(config3.producer.rewardAddress) ? assertEx17(asAddress2(config3.producer.rewardAddress), () => "Invalid block reward address provided") : account.address;
1462
+ const time = await BaseTimeSyncService.create({
1463
+ chainArchivist,
1464
+ chainIterator
1465
+ });
1466
+ const rewardAddress = isDefined11(config3.producer.rewardAddress) ? assertEx17(asAddress2(config3.producer.rewardAddress), () => "Invalid block reward address provided") : account.address;
1415
1467
  const producerParams = {
1416
1468
  ...validatorParams,
1417
1469
  name: "Producer",
@@ -1421,24 +1473,25 @@ var initServices = /* @__PURE__ */ __name(async (context) => {
1421
1473
  pendingTransactionsService,
1422
1474
  rejectedTransactionsArchivist,
1423
1475
  rewardAddress,
1476
+ time,
1424
1477
  ...initParams
1425
1478
  };
1426
1479
  const producer = await startupSpanAsync7("Producer", () => initBlockProducer(producerParams));
1427
1480
  const result = {
1428
1481
  account,
1429
- balanceService,
1482
+ balance: balanceService,
1430
1483
  chainArchivist,
1431
1484
  chainContractViewer,
1432
1485
  chainIterator,
1433
1486
  chainStaker,
1434
1487
  chainStakeViewer,
1435
1488
  chainSubmissionsArchivistWrite,
1436
- electionService,
1489
+ election: electionService,
1437
1490
  pendingBundledTransactionsArchivistWrite,
1438
- pendingTransactionsService,
1491
+ pendingTransactions: pendingTransactionsService,
1439
1492
  producer,
1440
- rewardService,
1441
- stakeIntentService
1493
+ reward: rewardService,
1494
+ stakeIntent: stakeIntentService
1442
1495
  };
1443
1496
  logger?.log("All services created. Starting...");
1444
1497
  const startableServices = [
@@ -1451,7 +1504,7 @@ var initServices = /* @__PURE__ */ __name(async (context) => {
1451
1504
 
1452
1505
  // src/runCLI.ts
1453
1506
  import { deepMerge } from "@xylabs/object";
1454
- import { isDefined as isDefined13 } from "@xylabs/typeof";
1507
+ import { isDefined as isDefined14 } from "@xylabs/typeof";
1455
1508
  import { ConfigZod } from "@xyo-network/xl1-protocol-sdk";
1456
1509
  import yargs from "yargs";
1457
1510
  import { hideBin } from "yargs/helpers";
@@ -1511,16 +1564,16 @@ var XL1LogoColorizedAscii = `\x1B[38;2;128;128;128m\xA0\xA0\xA0\xA0\xA0\xA0\xA0\
1511
1564
  // src/initLogger.ts
1512
1565
  import { Base as Base2 } from "@xylabs/base";
1513
1566
  import { ConsoleLogger, LogLevel, SilentLogger } from "@xylabs/logger";
1514
- import { isDefined as isDefined11 } from "@xylabs/typeof";
1567
+ import { isDefined as isDefined12 } from "@xylabs/typeof";
1515
1568
  var initLogger = /* @__PURE__ */ __name((config3) => {
1516
1569
  let logger;
1517
1570
  if (config3.silent) {
1518
1571
  logger = new SilentLogger();
1519
1572
  } else {
1520
1573
  let level;
1521
- if (isDefined11(config3.logLevel)) {
1574
+ if (isDefined12(config3.logLevel)) {
1522
1575
  const parsed = LogLevel[config3.logLevel.toLowerCase()];
1523
- if (isDefined11(parsed)) level = parsed;
1576
+ if (isDefined12(parsed)) level = parsed;
1524
1577
  }
1525
1578
  logger = new ConsoleLogger(level);
1526
1579
  }
@@ -1546,7 +1599,7 @@ var optionsFromGlobalZodRegistry = /* @__PURE__ */ __name(() => {
1546
1599
  }, "optionsFromGlobalZodRegistry");
1547
1600
 
1548
1601
  // src/tryParseConfig.ts
1549
- import { isDefined as isDefined12, isNull } from "@xylabs/typeof";
1602
+ import { isDefined as isDefined13, isNull } from "@xylabs/typeof";
1550
1603
  import { cosmiconfigSync } from "cosmiconfig";
1551
1604
  var configName = "xyo";
1552
1605
  var configSection = "xl1";
@@ -1555,7 +1608,7 @@ var tryParseConfig = /* @__PURE__ */ __name(() => {
1555
1608
  const result = explorer.search();
1556
1609
  if (!isNull(result)) {
1557
1610
  const section = result?.config?.[configSection];
1558
- if (isDefined12(section) && typeof section === "object") {
1611
+ if (isDefined13(section) && typeof section === "object") {
1559
1612
  return section;
1560
1613
  }
1561
1614
  }
@@ -1585,7 +1638,7 @@ var waitForHostPort = /* @__PURE__ */ __name((host, port) => {
1585
1638
 
1586
1639
  // src/runCLI.ts
1587
1640
  var config;
1588
- var version = isDefined13("1.13.0") ? "1.13.0" : "unknown";
1641
+ var version = isDefined14("1.14.1") ? "1.14.1" : "unknown";
1589
1642
  var getContextFromConfig = /* @__PURE__ */ __name((config3) => {
1590
1643
  const logger = initLogger(config3);
1591
1644
  const orchestrator = new Orchestrator(logger);