@xyo-network/xl1-cli-lib 1.15.27 → 1.16.0

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.
Files changed (89) hide show
  1. package/dist/node/commands/index.d.ts +1 -0
  2. package/dist/node/commands/index.d.ts.map +1 -1
  3. package/dist/node/commands/mempool/index.d.ts +2 -0
  4. package/dist/node/commands/mempool/index.d.ts.map +1 -0
  5. package/dist/node/commands/mempool/runMempool.d.ts +9 -0
  6. package/dist/node/commands/mempool/runMempool.d.ts.map +1 -0
  7. package/dist/node/index.mjs +130 -96
  8. package/dist/node/index.mjs.map +1 -1
  9. package/dist/node/orchestration/actor/implementation/BalanceActor.d.ts +2 -2
  10. package/dist/node/orchestration/actor/implementation/BalanceActor.d.ts.map +1 -1
  11. package/dist/node/orchestration/actor/implementation/ChainHeadUpdateActor.d.ts +1 -1
  12. package/dist/node/orchestration/actor/implementation/ChainHeadUpdateActor.d.ts.map +1 -1
  13. package/dist/node/orchestration/actor/implementation/ProducerActor.d.ts +5 -5
  14. package/dist/node/orchestration/actor/implementation/ProducerActor.d.ts.map +1 -1
  15. package/dist/node/orchestration/actor/implementation/ValidatorActor.d.ts +4 -4
  16. package/dist/node/orchestration/actor/implementation/ValidatorActor.d.ts.map +1 -1
  17. package/dist/node/orchestration/initServices.d.ts.map +1 -1
  18. package/dist/node/orchestration/map/BalanceSummary/initLocalTransferSummaryMap.d.ts +1 -1
  19. package/dist/node/orchestration/map/BalanceSummary/initLocalTransferSummaryMap.d.ts.map +1 -1
  20. package/dist/node/orchestration/map/BalanceSummary/initTransferSummaryMap.d.ts +1 -1
  21. package/dist/node/orchestration/map/BalanceSummary/initTransferSummaryMap.d.ts.map +1 -1
  22. package/dist/node/orchestration/services/implementation/balance.d.ts +2 -1
  23. package/dist/node/orchestration/services/implementation/balance.d.ts.map +1 -1
  24. package/dist/node/orchestration/services/implementation/chain/index.d.ts +2 -1
  25. package/dist/node/orchestration/services/implementation/chain/index.d.ts.map +1 -1
  26. package/dist/node/orchestration/services/implementation/head/createBootstrapHead.d.ts +2 -1
  27. package/dist/node/orchestration/services/implementation/head/createBootstrapHead.d.ts.map +1 -1
  28. package/dist/node/orchestration/services/implementation/head/createForkedHead/config/getBridgeSourceDetails.d.ts +2 -1
  29. package/dist/node/orchestration/services/implementation/head/createForkedHead/config/getBridgeSourceDetails.d.ts.map +1 -1
  30. package/dist/node/orchestration/services/implementation/head/createForkedHead/createForkedHead.d.ts +4 -3
  31. package/dist/node/orchestration/services/implementation/head/createForkedHead/createForkedHead.d.ts.map +1 -1
  32. package/dist/node/orchestration/services/implementation/head/createForkedHead/getBridgeDestinationObservation.d.ts +2 -1
  33. package/dist/node/orchestration/services/implementation/head/createForkedHead/getBridgeDestinationObservation.d.ts.map +1 -1
  34. package/dist/node/orchestration/services/implementation/head/createForkedHead/getBridgeIntent.d.ts +2 -1
  35. package/dist/node/orchestration/services/implementation/head/createForkedHead/getBridgeIntent.d.ts.map +1 -1
  36. package/dist/node/orchestration/services/implementation/head/createForkedHead/getBridgeSourceObservation.d.ts +2 -1
  37. package/dist/node/orchestration/services/implementation/head/createForkedHead/getBridgeSourceObservation.d.ts.map +1 -1
  38. package/dist/node/orchestration/services/implementation/head/createForkedHead/getFirstBlockForNewChain.d.ts +4 -3
  39. package/dist/node/orchestration/services/implementation/head/createForkedHead/getFirstBlockForNewChain.d.ts.map +1 -1
  40. package/dist/node/orchestration/services/implementation/head/getForkFromBlock.d.ts +4 -3
  41. package/dist/node/orchestration/services/implementation/head/getForkFromBlock.d.ts.map +1 -1
  42. package/dist/node/orchestration/services/implementation/head/head.d.ts +2 -1
  43. package/dist/node/orchestration/services/implementation/head/head.d.ts.map +1 -1
  44. package/dist/node/orchestration/services/implementation/iterator.d.ts +2 -2
  45. package/dist/node/orchestration/services/implementation/iterator.d.ts.map +1 -1
  46. package/dist/node/orchestration/services/implementation/pendingTransactions.d.ts +2 -1
  47. package/dist/node/orchestration/services/implementation/pendingTransactions.d.ts.map +1 -1
  48. package/dist/node/orchestration/services/implementation/producer.d.ts +2 -1
  49. package/dist/node/orchestration/services/implementation/producer.d.ts.map +1 -1
  50. package/dist/node/orchestration/services/implementation/reward.d.ts +2 -1
  51. package/dist/node/orchestration/services/implementation/reward.d.ts.map +1 -1
  52. package/dist/node/orchestration/services/implementation/time.d.ts +2 -1
  53. package/dist/node/orchestration/services/implementation/time.d.ts.map +1 -1
  54. package/dist/node/orchestration/services/implementation/transfer.d.ts +2 -1
  55. package/dist/node/orchestration/services/implementation/transfer.d.ts.map +1 -1
  56. package/dist/node/orchestration/services/implementation/validator.d.ts +2 -1
  57. package/dist/node/orchestration/services/implementation/validator.d.ts.map +1 -1
  58. package/dist/node/runCLI.d.ts.map +1 -1
  59. package/dist/node/xl1.mjs +130 -96
  60. package/dist/node/xl1.mjs.map +1 -1
  61. package/package.json +33 -32
  62. package/src/commands/index.ts +1 -0
  63. package/src/commands/mempool/index.ts +1 -0
  64. package/src/commands/mempool/runMempool.ts +12 -0
  65. package/src/orchestration/archivists/ChainFinalized/remote.ts +1 -1
  66. package/src/orchestration/archivists/ChainSubmissions/remote.ts +1 -1
  67. package/src/orchestration/archivists/PendingTransactions/remote.ts +1 -1
  68. package/src/orchestration/initServices.ts +8 -3
  69. package/src/orchestration/map/BalanceSummary/initLocalTransferSummaryMap.ts +2 -1
  70. package/src/orchestration/map/BalanceSummary/initTransferSummaryMap.ts +2 -1
  71. package/src/orchestration/services/implementation/balance.ts +2 -1
  72. package/src/orchestration/services/implementation/chain/index.ts +2 -1
  73. package/src/orchestration/services/implementation/head/createBootstrapHead.ts +2 -1
  74. package/src/orchestration/services/implementation/head/createForkedHead/config/getBridgeSourceDetails.ts +2 -1
  75. package/src/orchestration/services/implementation/head/createForkedHead/createForkedHead.ts +4 -5
  76. package/src/orchestration/services/implementation/head/createForkedHead/getBridgeDestinationObservation.ts +2 -1
  77. package/src/orchestration/services/implementation/head/createForkedHead/getBridgeIntent.ts +2 -1
  78. package/src/orchestration/services/implementation/head/createForkedHead/getBridgeSourceObservation.ts +2 -1
  79. package/src/orchestration/services/implementation/head/createForkedHead/getFirstBlockForNewChain.ts +4 -5
  80. package/src/orchestration/services/implementation/head/getForkFromBlock.ts +6 -5
  81. package/src/orchestration/services/implementation/head/head.ts +2 -3
  82. package/src/orchestration/services/implementation/iterator.ts +3 -2
  83. package/src/orchestration/services/implementation/pendingTransactions.ts +2 -1
  84. package/src/orchestration/services/implementation/producer.ts +2 -1
  85. package/src/orchestration/services/implementation/reward.ts +2 -2
  86. package/src/orchestration/services/implementation/time.ts +2 -1
  87. package/src/orchestration/services/implementation/transfer.ts +2 -1
  88. package/src/orchestration/services/implementation/validator.ts +2 -1
  89. package/src/runCLI.ts +33 -17
@@ -1,5 +1,6 @@
1
1
  export * from './api/index.ts';
2
2
  export * from './bridge/index.ts';
3
+ export * from './mempool/index.ts';
3
4
  export * from './producer/index.ts';
4
5
  export * from './rewardRedemption/index.ts';
5
6
  export * from './validator/index.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,sBAAsB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './runMempool.ts';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/mempool/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA"}
@@ -0,0 +1,9 @@
1
+ import type { Logger } from '@xylabs/logger';
2
+ import type { Config } from '@xyo-network/xl1-protocol-sdk';
3
+ interface RunMempoolContext {
4
+ config: Config;
5
+ logger?: Logger;
6
+ }
7
+ export declare function runMempool(context: RunMempoolContext): void;
8
+ export {};
9
+ //# sourceMappingURL=runMempool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runMempool.d.ts","sourceRoot":"","sources":["../../../../src/commands/mempool/runMempool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAE5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAE3D,UAAU,iBAAiB;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,QAEpD"}
@@ -593,8 +593,8 @@ var createHealthServer = /* @__PURE__ */ __name((port, statusMonitor, logger) =>
593
593
  return server;
594
594
  }, "createHealthServer");
595
595
  var initHealthEndpoints = /* @__PURE__ */ __name((params) => {
596
- const { config: config3, logger, statusReporter } = params;
597
- const { healthCheckPort } = config3.producer;
596
+ const { config: config2, logger, statusReporter } = params;
597
+ const { healthCheckPort } = config2.producer;
598
598
  return isDefined3(healthCheckPort) ? createHealthServer(healthCheckPort, statusReporter, logger) : void 0;
599
599
  }, "initHealthEndpoints");
600
600
 
@@ -603,7 +603,6 @@ import { assertEx as assertEx18 } from "@xylabs/assert";
603
603
  import { asAddress as asAddress2 } from "@xylabs/hex";
604
604
  import { isDefined as isDefined14 } from "@xylabs/typeof";
605
605
  import { initTelemetry, startupSpanAsync as startupSpanAsync8, StepSizes, validateHydratedBlockState } from "@xyo-network/chain-sdk";
606
- import { PayloadBuilder as PayloadBuilder7 } from "@xyo-network/payload-builder";
607
606
  import { readPayloadMapFromStore } from "@xyo-network/xl1-protocol-sdk";
608
607
  import { CompletedStepRewardAddressValidatorFactory, DerivedReceiveAddressValidatorFactory, SelfSignerValidator, TransactionTransfersValidatorFactory } from "@xyo-network/xl1-validation";
609
608
  import { Semaphore as Semaphore2 } from "async-mutex";
@@ -643,10 +642,10 @@ var getLocalPersistentArchivist = /* @__PURE__ */ __name((name, dbName, storeNam
643
642
  // src/orchestration/archivists/ChainFinalized/local.ts
644
643
  var mutex = new Mutex2();
645
644
  var singleton;
646
- var initLocalChainFinalizedArchivist = /* @__PURE__ */ __name(async ({ config: config3 }) => {
645
+ var initLocalChainFinalizedArchivist = /* @__PURE__ */ __name(async ({ config: config2 }) => {
647
646
  return await mutex.runExclusive(async () => {
648
647
  if (singleton) return singleton;
649
- const { root } = config3.storage;
648
+ const { root } = config2.storage;
650
649
  singleton = await getLocalPersistentArchivist("local-finalized-chain", "chain", "finalized", root);
651
650
  return singleton;
652
651
  });
@@ -659,10 +658,10 @@ import { getUrl } from "@xyo-network/xl1-protocol-sdk";
659
658
  import { Mutex as Mutex3 } from "async-mutex";
660
659
  var mutex2 = new Mutex3();
661
660
  var singleton2;
662
- var initRemoteChainFinalizedArchivist = /* @__PURE__ */ __name(async ({ config: config3 }) => {
661
+ var initRemoteChainFinalizedArchivist = /* @__PURE__ */ __name(async ({ config: config2 }) => {
663
662
  return await mutex2.runExclusive(async () => {
664
663
  if (singleton2) return singleton2;
665
- const { host, port } = config3.api;
664
+ const { host, port } = config2.mempool.enabled ? config2.mempool : config2.api;
666
665
  const nodeUrl = getUrl(host, port);
667
666
  const bridge = await initBridge(nodeUrl);
668
667
  singleton2 = await initBridgedArchivistModule({
@@ -676,16 +675,16 @@ var initRemoteChainFinalizedArchivist = /* @__PURE__ */ __name(async ({ config:
676
675
  // src/orchestration/archivists/ChainFinalized/archivist.ts
677
676
  var mutex3 = new Mutex4();
678
677
  var singleton3;
679
- async function initChainFinalizedArchivist({ config: config3, logger, traceProvider }) {
678
+ async function initChainFinalizedArchivist({ config: config2, logger, traceProvider }) {
680
679
  return await mutex3.runExclusive(async () => {
681
680
  if (singleton3) return singleton3;
682
681
  const [remote, local] = await Promise.all([
683
682
  startupSpanAsync("ChainFinalizedArchivist:initRemote", () => initRemoteChainFinalizedArchivist({
684
- config: config3,
683
+ config: config2,
685
684
  logger
686
685
  })),
687
686
  startupSpanAsync("ChainFinalizedArchivist:initLocal", () => initLocalChainFinalizedArchivist({
688
- config: config3,
687
+ config: config2,
689
688
  logger
690
689
  }))
691
690
  ]);
@@ -708,10 +707,10 @@ import { getUrl as getUrl2 } from "@xyo-network/xl1-protocol-sdk";
708
707
  import { Mutex as Mutex5 } from "async-mutex";
709
708
  var mutex4 = new Mutex5();
710
709
  var singleton4;
711
- var initRemoteChainSubmissionsArchivist = /* @__PURE__ */ __name(async ({ config: config3 }) => {
710
+ var initRemoteChainSubmissionsArchivist = /* @__PURE__ */ __name(async ({ config: config2 }) => {
712
711
  return await mutex4.runExclusive(async () => {
713
712
  if (singleton4) return singleton4;
714
- const { host, port } = config3.api;
713
+ const { host, port } = config2.mempool.enabled ? config2.mempool : config2.api;
715
714
  const nodeUrl = getUrl2(host, port);
716
715
  const bridge = await initBridge2(nodeUrl);
717
716
  singleton4 = await initBridgedArchivistModule2({
@@ -765,10 +764,10 @@ import { getUrl as getUrl3 } from "@xyo-network/xl1-protocol-sdk";
765
764
  import { Mutex as Mutex8 } from "async-mutex";
766
765
  var mutex7 = new Mutex8();
767
766
  var singleton7;
768
- var initRemotePendingTransactionsArchivist = /* @__PURE__ */ __name(async ({ config: config3 }) => {
767
+ var initRemotePendingTransactionsArchivist = /* @__PURE__ */ __name(async ({ config: config2 }) => {
769
768
  return await mutex7.runExclusive(async () => {
770
769
  if (singleton7) return singleton7;
771
- const { host, port } = config3.api;
770
+ const { host, port } = config2.mempool.enabled ? config2.mempool : config2.api;
772
771
  const nodeUrl = getUrl3(host, port);
773
772
  const bridge = await initBridge3(nodeUrl);
774
773
  singleton7 = await initBridgedArchivistModule3({
@@ -848,10 +847,10 @@ import { assertEx as assertEx9 } from "@xylabs/assert";
848
847
  import { Mutex as Mutex12 } from "async-mutex";
849
848
  var mutex11 = new Mutex12();
850
849
  var singleton11;
851
- var initLocalStakeIntentStateArchivist = /* @__PURE__ */ __name(async ({ config: config3 }) => {
850
+ var initLocalStakeIntentStateArchivist = /* @__PURE__ */ __name(async ({ config: config2 }) => {
852
851
  return await mutex11.runExclusive(async () => {
853
852
  if (singleton11) return singleton11;
854
- const { root } = config3.storage;
853
+ const { root } = config2.storage;
855
854
  singleton11 = await getLocalPersistentArchivist("local-stake-intent-state", "stakeIntent", "state", root);
856
855
  return assertEx9(singleton11, () => new Error("Failed to initialize stake intent state archivist"));
857
856
  });
@@ -940,9 +939,9 @@ import { isUndefined as isUndefined3 } from "@xylabs/typeof";
940
939
  import { HDWallet } from "@xyo-network/wallet";
941
940
  import { ADDRESS_INDEX, generateXyoBaseWalletFromPhrase } from "@xyo-network/xl1-protocol-sdk";
942
941
  var accountServiceSingleton;
943
- var initAccount = /* @__PURE__ */ __name(async ({ config: config3, logger }) => {
942
+ var initAccount = /* @__PURE__ */ __name(async ({ config: config2, logger }) => {
944
943
  if (accountServiceSingleton) return accountServiceSingleton;
945
- let walletPhrase = config3.producer.mnemonic;
944
+ let walletPhrase = config2.producer.mnemonic;
946
945
  if (isUndefined3(walletPhrase)) {
947
946
  logger?.warn("[Producer] No wallet mnemonic specified!");
948
947
  const randomMnemonic = HDWallet.generateMnemonic();
@@ -990,11 +989,11 @@ import { InfuraProvider } from "ethers/providers";
990
989
  import { assertEx as assertEx11 } from "@xylabs/assert";
991
990
  import { hexFrom, isHex } from "@xylabs/hex";
992
991
  import { isDefined as isDefined8 } from "@xylabs/typeof";
993
- var canUseChainId = /* @__PURE__ */ __name((config3) => {
994
- return isDefined8(config3.evm.chainId);
992
+ var canUseChainId = /* @__PURE__ */ __name((config2) => {
993
+ return isDefined8(config2.evm.chainId);
995
994
  }, "canUseChainId");
996
- var getChainId = /* @__PURE__ */ __name((config3) => {
997
- const chainId = assertEx11(config3.evm.chainId, () => "Missing config.evm.chainId");
995
+ var getChainId = /* @__PURE__ */ __name((config2) => {
996
+ const chainId = assertEx11(config2.evm.chainId, () => "Missing config.evm.chainId");
998
997
  if (isHex(chainId, {
999
998
  prefix: true
1000
999
  })) {
@@ -1009,20 +1008,20 @@ var getChainId = /* @__PURE__ */ __name((config3) => {
1009
1008
 
1010
1009
  // src/orchestration/services/implementation/evm/initInfuraProvider.ts
1011
1010
  var instance;
1012
- var initInfuraProvider = /* @__PURE__ */ __name((config3) => {
1011
+ var initInfuraProvider = /* @__PURE__ */ __name((config2) => {
1013
1012
  if (instance) return instance;
1014
- const providerConfig = getInfuraProviderConfig(config3);
1013
+ const providerConfig = getInfuraProviderConfig(config2);
1015
1014
  instance = Promise.resolve(new InfuraProvider(...providerConfig));
1016
1015
  return instance;
1017
1016
  }, "initInfuraProvider");
1018
- var canUseInfuraProvider = /* @__PURE__ */ __name((config3) => {
1019
- return canUseChainId(config3) && isDefined9(config3.evm?.infura?.projectId) && isDefined9(config3.evm?.infura?.projectSecret);
1017
+ var canUseInfuraProvider = /* @__PURE__ */ __name((config2) => {
1018
+ return canUseChainId(config2) && isDefined9(config2.evm?.infura?.projectId) && isDefined9(config2.evm?.infura?.projectSecret);
1020
1019
  }, "canUseInfuraProvider");
1021
- var getInfuraProviderConfig = /* @__PURE__ */ __name((config3) => {
1022
- const projectId = assertEx12(config3.evm?.infura?.projectId, () => "Missing config.evm.infura.projectId");
1023
- const projectSecret = assertEx12(config3.evm?.infura?.projectSecret, () => "Missing config.evm.infura.projectSecret");
1020
+ var getInfuraProviderConfig = /* @__PURE__ */ __name((config2) => {
1021
+ const projectId = assertEx12(config2.evm?.infura?.projectId, () => "Missing config.evm.infura.projectId");
1022
+ const projectSecret = assertEx12(config2.evm?.infura?.projectSecret, () => "Missing config.evm.infura.projectSecret");
1024
1023
  return [
1025
- getChainId(config3),
1024
+ getChainId(config2),
1026
1025
  projectId,
1027
1026
  projectSecret
1028
1027
  ];
@@ -1032,50 +1031,50 @@ var getInfuraProviderConfig = /* @__PURE__ */ __name((config3) => {
1032
1031
  import { assertEx as assertEx13 } from "@xylabs/assert";
1033
1032
  import { isDefined as isDefined10 } from "@xylabs/typeof";
1034
1033
  import { JsonRpcProvider } from "ethers/providers";
1035
- var initJsonRpcProvider = /* @__PURE__ */ __name((config3) => {
1036
- const providerConfig = getJsonRpcProviderConfig(config3);
1034
+ var initJsonRpcProvider = /* @__PURE__ */ __name((config2) => {
1035
+ const providerConfig = getJsonRpcProviderConfig(config2);
1037
1036
  return Promise.resolve(new JsonRpcProvider(...providerConfig));
1038
1037
  }, "initJsonRpcProvider");
1039
- var canUseJsonRpcProvider = /* @__PURE__ */ __name((config3) => {
1040
- return canUseChainId(config3) && isDefined10(config3.evm.jsonRpc?.url);
1038
+ var canUseJsonRpcProvider = /* @__PURE__ */ __name((config2) => {
1039
+ return canUseChainId(config2) && isDefined10(config2.evm.jsonRpc?.url);
1041
1040
  }, "canUseJsonRpcProvider");
1042
- var getJsonRpcProviderConfig = /* @__PURE__ */ __name((config3) => {
1043
- const jsonRpcUrl = assertEx13(config3.evm.jsonRpc?.url, () => "Missing config.evm.jsonRpc.url");
1041
+ var getJsonRpcProviderConfig = /* @__PURE__ */ __name((config2) => {
1042
+ const jsonRpcUrl = assertEx13(config2.evm.jsonRpc?.url, () => "Missing config.evm.jsonRpc.url");
1044
1043
  return [
1045
1044
  jsonRpcUrl,
1046
- getChainId(config3)
1045
+ getChainId(config2)
1047
1046
  ];
1048
1047
  }, "getJsonRpcProviderConfig");
1049
1048
 
1050
1049
  // src/orchestration/services/implementation/evm/initEvmProvider.ts
1051
1050
  var provider;
1052
- var initEvmProvider = /* @__PURE__ */ __name(async ({ config: config3 }) => {
1051
+ var initEvmProvider = /* @__PURE__ */ __name(async ({ config: config2 }) => {
1053
1052
  if (provider) return provider;
1054
- if (canUseInfuraProvider(config3)) {
1055
- provider = initInfuraProvider(config3);
1056
- } else if (canUseJsonRpcProvider(config3)) {
1057
- provider = initJsonRpcProvider(config3);
1053
+ if (canUseInfuraProvider(config2)) {
1054
+ provider = initInfuraProvider(config2);
1055
+ } else if (canUseJsonRpcProvider(config2)) {
1056
+ provider = initJsonRpcProvider(config2);
1058
1057
  }
1059
1058
  return assertEx14(await provider, () => "Error: No provider available");
1060
1059
  }, "initEvmProvider");
1061
- var canUseEvmProvider = /* @__PURE__ */ __name(({ config: config3 }) => {
1062
- return canUseInfuraProvider(config3) || canUseJsonRpcProvider(config3);
1060
+ var canUseEvmProvider = /* @__PURE__ */ __name(({ config: config2 }) => {
1061
+ return canUseInfuraProvider(config2) || canUseJsonRpcProvider(config2);
1063
1062
  }, "canUseEvmProvider");
1064
1063
 
1065
1064
  // src/orchestration/services/implementation/chain/evm.ts
1066
1065
  var chainStakeServiceSingleton;
1067
- var canUseEvmContractChainService = /* @__PURE__ */ __name((config3) => {
1068
- const { id } = config3.chain;
1066
+ var canUseEvmContractChainService = /* @__PURE__ */ __name((config2) => {
1067
+ const { id } = config2.chain;
1069
1068
  return isDefined11(id) && id !== ZERO_ADDRESS && canUseEvmProvider({
1070
- config: config3
1069
+ config: config2
1071
1070
  });
1072
1071
  }, "canUseEvmContractChainService");
1073
- var initEvmContractChainService = /* @__PURE__ */ __name(async ({ account, config: config3, traceProvider, meterProvider, logger }) => {
1072
+ var initEvmContractChainService = /* @__PURE__ */ __name(async ({ account, config: config2, traceProvider, meterProvider, logger }) => {
1074
1073
  if (chainStakeServiceSingleton) return chainStakeServiceSingleton;
1075
- const emvStakingContractAddress = assertEx15(config3.chain.id, () => "Error: config.chain.id is required");
1074
+ const emvStakingContractAddress = assertEx15(config2.chain.id, () => "Error: config.chain.id is required");
1076
1075
  const id = assertEx15(asAddress(emvStakingContractAddress), () => "Error: config.chain.id is not a valid address");
1077
1076
  const provider2 = assertEx15(await initEvmProvider({
1078
- config: config3
1077
+ config: config2
1079
1078
  }));
1080
1079
  const privateKey = assertEx15(account.private?.hex, () => "Error: Account does not have a private key");
1081
1080
  const runner = new Wallet(privateKey, provider2);
@@ -1091,15 +1090,15 @@ var initEvmContractChainService = /* @__PURE__ */ __name(async ({ account, confi
1091
1090
 
1092
1091
  // src/orchestration/services/implementation/chain/index.ts
1093
1092
  var chainStakeServiceSingleton2;
1094
- var initChainService = /* @__PURE__ */ __name(({ account, config: config3 }) => init({
1095
- config: config3,
1093
+ var initChainService = /* @__PURE__ */ __name(({ account, config: config2 }) => init({
1094
+ config: config2,
1096
1095
  name: "ChainService",
1097
1096
  account
1098
1097
  }), "initChainService");
1099
1098
  var init = /* @__PURE__ */ __name((params) => {
1100
1099
  if (chainStakeServiceSingleton2) return chainStakeServiceSingleton2;
1101
- const { config: config3 } = params;
1102
- chainStakeServiceSingleton2 = canUseEvmContractChainService(config3) ? initEvmContractChainService({
1100
+ const { config: config2 } = params;
1101
+ chainStakeServiceSingleton2 = canUseEvmContractChainService(config2) ? initEvmContractChainService({
1103
1102
  ...params,
1104
1103
  name: "ChainStakeService"
1105
1104
  }) : MemoryChainService.create({
@@ -1282,7 +1281,7 @@ var createForkedHead = /* @__PURE__ */ __name(async (forkFromBlock, account, cha
1282
1281
  // src/orchestration/services/implementation/head/getForkFromBlock.ts
1283
1282
  import { asHash, hexFromBigInt } from "@xylabs/hex";
1284
1283
  import { isDefined as isDefined12 } from "@xylabs/typeof";
1285
- import { isBlockBoundWitnessWithHashStorageMeta } from "@xyo-network/chain-sdk";
1284
+ import { isBlockBoundWitnessWithHashMeta } from "@xyo-network/chain-sdk";
1286
1285
  var getForkFromBlock = /* @__PURE__ */ __name(async (head, chainService, chainArchivist) => {
1287
1286
  if (head.chain !== chainService.chainId) {
1288
1287
  const forkedAtBigInt = await chainService.forkedAtHash();
@@ -1294,7 +1293,7 @@ var getForkFromBlock = /* @__PURE__ */ __name(async (head, chainService, chainAr
1294
1293
  ]);
1295
1294
  const forkedChainId = await chainService.forkedChainId();
1296
1295
  const forkedAtBlockNumber = Number(await chainService.forkedAtBlockNumber());
1297
- if (isBlockBoundWitnessWithHashStorageMeta(forkedAtBlock) && forkedAtBlock.chain === forkedChainId && forkedAtBlock.block === forkedAtBlockNumber) {
1296
+ if (isBlockBoundWitnessWithHashMeta(forkedAtBlock) && forkedAtBlock.chain === forkedChainId && forkedAtBlock.block === forkedAtBlockNumber) {
1298
1297
  return forkedAtBlock;
1299
1298
  }
1300
1299
  }
@@ -1387,9 +1386,9 @@ import { EvmBlockRewardService, MemoryBlockRewardService } from "@xyo-network/ch
1387
1386
  var rewardServiceSingleton;
1388
1387
  var initBlockRewardService = /* @__PURE__ */ __name((params) => {
1389
1388
  if (rewardServiceSingleton) return rewardServiceSingleton;
1390
- const { config: config3 } = params;
1389
+ const { config: config2 } = params;
1391
1390
  rewardServiceSingleton = canUseEvmBlockRewardService({
1392
- config: config3
1391
+ config: config2
1393
1392
  }) ? initEvmBlockRewardService(params) : initXyoBlockRewardService(params);
1394
1393
  return rewardServiceSingleton;
1395
1394
  }, "initBlockRewardService");
@@ -1418,12 +1417,12 @@ var initEvmBlockRewardService = /* @__PURE__ */ __name(async (params) => {
1418
1417
  // src/orchestration/services/implementation/time.ts
1419
1418
  import { BaseTimeSyncService } from "@xyo-network/chain-sdk";
1420
1419
  var timeSyncServiceSingleton;
1421
- var initTimeService = /* @__PURE__ */ __name(async ({ chainArchivist, chainIterator, config: config3, logger, meterProvider, traceProvider }) => {
1420
+ var initTimeService = /* @__PURE__ */ __name(async ({ chainArchivist, chainIterator, config: config2, logger, meterProvider, traceProvider }) => {
1422
1421
  if (timeSyncServiceSingleton) return timeSyncServiceSingleton;
1423
1422
  const ethProvider = canUseEvmProvider({
1424
- config: config3
1423
+ config: config2
1425
1424
  }) ? await initEvmProvider({
1426
- config: config3
1425
+ config: config2
1427
1426
  }) : void 0;
1428
1427
  timeSyncServiceSingleton = BaseTimeSyncService.create({
1429
1428
  chainArchivist,
@@ -1548,7 +1547,7 @@ var isStartable = /* @__PURE__ */ __name((value) => {
1548
1547
  return isDefined14(value.start) && typeof value.start === "function";
1549
1548
  }, "isStartable");
1550
1549
  var initServices = /* @__PURE__ */ __name(async (context) => {
1551
- const { config: config3, logger } = context;
1550
+ const { config: config2, logger } = context;
1552
1551
  const statusReporter = new RuntimeStatusMonitor(logger);
1553
1552
  statusReporter.onGlobalTransition({
1554
1553
  to: "started"
@@ -1565,7 +1564,7 @@ var initServices = /* @__PURE__ */ __name(async (context) => {
1565
1564
  ...context,
1566
1565
  statusReporter
1567
1566
  }));
1568
- const { otlpEndpoint } = config3.telemetry?.otel ?? {};
1567
+ const { otlpEndpoint } = config2.telemetry?.otel ?? {};
1569
1568
  const telemetryConfig = {
1570
1569
  attributes: {
1571
1570
  serviceName: "xl1-producer",
@@ -1581,10 +1580,10 @@ var initServices = /* @__PURE__ */ __name(async (context) => {
1581
1580
  startupSpanAsync8("initTelemetry", () => initTelemetry(telemetryConfig)),
1582
1581
  startupSpanAsync8("initAccount", () => initAccount(context))
1583
1582
  ]);
1584
- const allowedRewardRedeemers = config3.validation?.allowedRewardRedeemers ?? [];
1585
- const allowedRewardEscrowAccountSigners = config3.validation?.allowedRewardEscrowAccountSigners ?? [];
1583
+ const allowedRewardRedeemers = config2.validation?.allowedRewardRedeemers ?? [];
1584
+ const allowedRewardEscrowAccountSigners = config2.validation?.allowedRewardEscrowAccountSigners ?? [];
1586
1585
  const initParams = {
1587
- config: config3,
1586
+ config: config2,
1588
1587
  logger,
1589
1588
  meterProvider,
1590
1589
  statusReporter,
@@ -1654,7 +1653,13 @@ var initServices = /* @__PURE__ */ __name(async (context) => {
1654
1653
  store: {
1655
1654
  chainMap
1656
1655
  },
1657
- head: /* @__PURE__ */ __name(async () => PayloadBuilder7.hash(await chainIterator.head()), "head"),
1656
+ head: /* @__PURE__ */ __name(async () => {
1657
+ const head2 = await chainIterator.head();
1658
+ return [
1659
+ head2._hash,
1660
+ head2.block
1661
+ ];
1662
+ }, "head"),
1658
1663
  chainId,
1659
1664
  summaryMap: balanceSummaryMap
1660
1665
  },
@@ -1667,7 +1672,13 @@ var initServices = /* @__PURE__ */ __name(async (context) => {
1667
1672
  store: {
1668
1673
  chainMap
1669
1674
  },
1670
- head: /* @__PURE__ */ __name(async () => PayloadBuilder7.hash(await chainIterator.head()), "head"),
1675
+ head: /* @__PURE__ */ __name(async () => {
1676
+ const head2 = await chainIterator.head();
1677
+ return [
1678
+ head2._hash,
1679
+ head2.block
1680
+ ];
1681
+ }, "head"),
1671
1682
  chainId,
1672
1683
  summaryMap: transferSummaryMap
1673
1684
  },
@@ -1709,7 +1720,7 @@ var initServices = /* @__PURE__ */ __name(async (context) => {
1709
1720
  validateHydratedBlockState,
1710
1721
  ...initParams
1711
1722
  };
1712
- const rewardAddress = isDefined14(config3.producer.rewardAddress) ? assertEx18(asAddress2(config3.producer.rewardAddress), () => "Invalid block reward address provided") : account.address;
1723
+ const rewardAddress = isDefined14(config2.producer.rewardAddress) ? assertEx18(asAddress2(config2.producer.rewardAddress), () => "Invalid block reward address provided") : account.address;
1713
1724
  const producerParams = {
1714
1725
  ...validatorParams,
1715
1726
  name: "Producer",
@@ -1771,15 +1782,22 @@ function runBridge(context) {
1771
1782
  }
1772
1783
  __name(runBridge, "runBridge");
1773
1784
 
1785
+ // src/commands/mempool/runMempool.ts
1786
+ import { getServer as getServer3 } from "@xyo-network/chain-head-reducer";
1787
+ function runMempool(context) {
1788
+ void getServer3(context);
1789
+ }
1790
+ __name(runMempool, "runMempool");
1791
+
1774
1792
  // src/commands/producer/runProducer.ts
1775
1793
  var runProducer = /* @__PURE__ */ __name(async (context) => {
1776
- const { config: config3, logger, orchestrator } = context;
1794
+ const { config: config2, logger, orchestrator } = context;
1777
1795
  logger?.log("Services: Initializing...");
1778
1796
  const services = await initServices(context);
1779
1797
  logger?.log("Services: Initialized");
1780
1798
  const params = {
1781
1799
  ...services,
1782
- config: config3
1800
+ config: config2
1783
1801
  };
1784
1802
  const chainHeadUpdate = await ChainHeadUpdateActor.create(params);
1785
1803
  const balances = await BalanceActor.create(params);
@@ -1796,9 +1814,9 @@ var runProducer = /* @__PURE__ */ __name(async (context) => {
1796
1814
  }, "runProducer");
1797
1815
 
1798
1816
  // src/commands/rewardRedemption/runRewardRedemptionApi.ts
1799
- import { getServer as getServer3 } from "@xyo-network/chain-reward-redemption";
1817
+ import { getServer as getServer4 } from "@xyo-network/chain-reward-redemption";
1800
1818
  function runRewardRedemptionApi(context) {
1801
- void getServer3(context);
1819
+ void getServer4(context);
1802
1820
  }
1803
1821
  __name(runRewardRedemptionApi, "runRewardRedemptionApi");
1804
1822
 
@@ -1826,14 +1844,14 @@ var XL1LogoColorizedAscii = `\x1B[38;2;128;128;128m\xA0\xA0\xA0\xA0\xA0\xA0\xA0\
1826
1844
  import { Base as Base2 } from "@xylabs/base";
1827
1845
  import { ConsoleLogger, LogLevel, SilentLogger } from "@xylabs/logger";
1828
1846
  import { isDefined as isDefined15 } from "@xylabs/typeof";
1829
- var initLogger = /* @__PURE__ */ __name((config3) => {
1847
+ var initLogger = /* @__PURE__ */ __name((config2) => {
1830
1848
  let logger;
1831
- if (config3.silent) {
1849
+ if (config2.silent) {
1832
1850
  logger = new SilentLogger();
1833
1851
  } else {
1834
1852
  let level;
1835
- if (isDefined15(config3.logLevel)) {
1836
- const parsed = LogLevel[config3.logLevel.toLowerCase()];
1853
+ if (isDefined15(config2.logLevel)) {
1854
+ const parsed = LogLevel[config2.logLevel.toLowerCase()];
1837
1855
  if (isDefined15(parsed)) level = parsed;
1838
1856
  }
1839
1857
  logger = new ConsoleLogger(level);
@@ -1898,10 +1916,10 @@ var waitForHostPort = /* @__PURE__ */ __name((host, port) => {
1898
1916
  }, "waitForHostPort");
1899
1917
 
1900
1918
  // src/runCLI.ts
1901
- var config;
1902
- var version = isDefined17("1.15.26") ? "1.15.26" : "unknown";
1903
- var getContextFromConfig = /* @__PURE__ */ __name((config3) => {
1904
- const logger = initLogger(config3);
1919
+ var configuration;
1920
+ var version = isDefined17("1.15.28") ? "1.15.28" : "unknown";
1921
+ var getContextFromConfig = /* @__PURE__ */ __name((configuration2) => {
1922
+ const logger = initLogger(configuration2);
1905
1923
  const orchestrator = new Orchestrator(logger);
1906
1924
  process.on("SIGINT", () => {
1907
1925
  void (async () => {
@@ -1938,7 +1956,7 @@ $0 <command> [options]`).parserConfiguration({
1938
1956
  const parsedConfigFile = tryParseConfig();
1939
1957
  const parsedConfigArgs = argv2;
1940
1958
  const mergedConfig = deepMerge(parsedConfigArgs, parsedConfigFile);
1941
- config = ConfigZod.parse(mergedConfig);
1959
+ configuration = ConfigZod.parse(mergedConfig);
1942
1960
  } catch (err) {
1943
1961
  if (err instanceof ZodError) {
1944
1962
  console.error(`${err.message}`);
@@ -1948,50 +1966,66 @@ $0 <command> [options]`).parserConfiguration({
1948
1966
  }).options(optionsFromGlobalZodRegistry()).wrap(y.terminalWidth()).command("api", "Run a XL1 API Node", (yargs2) => {
1949
1967
  return yargs2.command("$0", "Run a XL1 API Node", () => {
1950
1968
  }, () => {
1951
- const context = getContextFromConfig(config);
1969
+ const context = getContextFromConfig(configuration);
1952
1970
  runApi({
1953
1971
  ...context,
1954
- config
1972
+ config: configuration
1955
1973
  });
1956
1974
  });
1957
1975
  }).command("bridge", "Run a XL1 Bridge Node", (yargs2) => {
1958
1976
  return yargs2.command("$0", "Run a XL1 Bridge Node", () => {
1959
1977
  }, () => {
1960
- const context = getContextFromConfig(config);
1978
+ const context = getContextFromConfig(configuration);
1961
1979
  runBridge({
1962
1980
  ...context,
1963
- config
1981
+ config: configuration
1982
+ });
1983
+ });
1984
+ }).command("mempool", "Run a XL1 Mempool Node", (yargs2) => {
1985
+ return yargs2.command("$0", "Run a XL1 Mempool Node", () => {
1986
+ }, () => {
1987
+ const context = getContextFromConfig(configuration);
1988
+ runMempool({
1989
+ ...context,
1990
+ config: configuration
1964
1991
  });
1965
1992
  });
1966
1993
  }).command("producer", "Run a XL1 Producer Node", (yargs2) => {
1967
1994
  return yargs2.command("$0", "Run a XL1 Producer Node", () => {
1968
1995
  }, async () => {
1969
- const context = getContextFromConfig(config);
1996
+ const context = getContextFromConfig(configuration);
1970
1997
  await runProducer({
1971
1998
  ...context,
1972
- config
1999
+ config: configuration
1973
2000
  });
1974
2001
  });
1975
2002
  }).command("reward-redemption-api", "Run a XL1 Rewards Redemption API Node", (yargs2) => {
1976
2003
  return yargs2.command("$0", "Run a XL1 Rewards Redemption API Node", () => {
1977
2004
  }, () => {
1978
- const context = getContextFromConfig(config);
2005
+ const context = getContextFromConfig(configuration);
1979
2006
  runRewardRedemptionApi({
1980
2007
  ...context,
1981
- config
2008
+ config: configuration
1982
2009
  });
1983
2010
  });
1984
2011
  }).command("$0", "Run a full XL1 Node", () => {
1985
2012
  }, async () => {
1986
- const context = getContextFromConfig(config);
2013
+ const context = getContextFromConfig(configuration);
2014
+ if (configuration.mempool.enabled) {
2015
+ runMempool({
2016
+ ...context,
2017
+ config: configuration
2018
+ });
2019
+ await waitForHostPort(configuration.mempool.host, configuration.mempool.port);
2020
+ }
1987
2021
  runApi({
1988
2022
  ...context,
1989
- config
2023
+ config: configuration
1990
2024
  });
1991
- await waitForHostPort("localhost", config.api.port);
2025
+ await waitForHostPort(configuration.api.host, configuration.api.port);
1992
2026
  await runProducer({
1993
2027
  ...context,
1994
- config
2028
+ config: configuration
1995
2029
  });
1996
2030
  }).help().alias("help", "h").version(version).argv;
1997
2031
  await argv;
@@ -1999,9 +2033,9 @@ $0 <command> [options]`).parserConfiguration({
1999
2033
  __name(runCLI, "runCLI");
2000
2034
 
2001
2035
  // src/start.ts
2002
- import { config as config2 } from "dotenv";
2036
+ import { config } from "dotenv";
2003
2037
  var start = /* @__PURE__ */ __name(async () => {
2004
- config2({
2038
+ config({
2005
2039
  quiet: true
2006
2040
  });
2007
2041
  await runCLI();