@xyo-network/xl1-cli-lib 1.14.3 → 1.15.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.
- package/dist/node/index.mjs +146 -78
- package/dist/node/index.mjs.map +1 -1
- package/dist/node/orchestration/initServices.d.ts.map +1 -1
- package/dist/node/orchestration/map/BalanceSummary/index.d.ts +1 -0
- package/dist/node/orchestration/map/BalanceSummary/index.d.ts.map +1 -1
- package/dist/node/orchestration/map/BalanceSummary/{local.d.ts → initLocalBalanceSummaryMap.d.ts} +1 -1
- package/dist/node/orchestration/map/BalanceSummary/initLocalBalanceSummaryMap.d.ts.map +1 -0
- package/dist/node/orchestration/map/BalanceSummary/initLocalTransferSummaryMap.d.ts +7 -0
- package/dist/node/orchestration/map/BalanceSummary/initLocalTransferSummaryMap.d.ts.map +1 -0
- package/dist/node/orchestration/map/BalanceSummary/initTransferSummaryMap.d.ts +7 -0
- package/dist/node/orchestration/map/BalanceSummary/initTransferSummaryMap.d.ts.map +1 -0
- package/dist/node/orchestration/services/implementation/evm/initEvmProvider.d.ts +2 -2
- package/dist/node/orchestration/services/implementation/evm/initEvmProvider.d.ts.map +1 -1
- package/dist/node/orchestration/services/implementation/head/createBootstrapHead.d.ts +2 -2
- package/dist/node/orchestration/services/implementation/head/createBootstrapHead.d.ts.map +1 -1
- package/dist/node/orchestration/services/implementation/head/createForkedHead/getFirstBlockForNewChain.d.ts.map +1 -1
- package/dist/node/orchestration/services/implementation/head/head.d.ts.map +1 -1
- package/dist/node/orchestration/services/implementation/index.d.ts +1 -0
- package/dist/node/orchestration/services/implementation/index.d.ts.map +1 -1
- package/dist/node/orchestration/services/implementation/time.d.ts +4 -0
- package/dist/node/orchestration/services/implementation/time.d.ts.map +1 -0
- package/dist/node/orchestration/services/implementation/transfer.d.ts +4 -0
- package/dist/node/orchestration/services/implementation/transfer.d.ts.map +1 -0
- package/dist/node/runCLI.d.ts.map +1 -1
- package/dist/node/xl1.mjs +145 -78
- package/dist/node/xl1.mjs.map +1 -1
- package/package.json +8 -7
- package/src/optionsFromGlobalZodRegistry.ts +1 -1
- package/src/orchestration/initServices.ts +32 -16
- package/src/orchestration/map/BalanceSummary/index.ts +1 -0
- package/src/orchestration/map/BalanceSummary/initBalanceSummaryMap.ts +1 -1
- package/src/orchestration/map/BalanceSummary/initLocalTransferSummaryMap.ts +21 -0
- package/src/orchestration/map/BalanceSummary/initTransferSummaryMap.ts +22 -0
- package/src/orchestration/services/implementation/evm/initEvmProvider.ts +2 -1
- package/src/orchestration/services/implementation/head/createBootstrapHead.ts +27 -5
- package/src/orchestration/services/implementation/head/createForkedHead/config/getBridgeDestinationDetails.ts +3 -3
- package/src/orchestration/services/implementation/head/createForkedHead/getFirstBlockForNewChain.ts +5 -6
- package/src/orchestration/services/implementation/head/head.ts +4 -3
- package/src/orchestration/services/implementation/index.ts +1 -0
- package/src/orchestration/services/implementation/time.ts +23 -0
- package/src/orchestration/services/implementation/transfer.ts +13 -0
- package/src/runCLI.ts +1 -0
- package/dist/node/orchestration/map/BalanceSummary/local.d.ts.map +0 -1
- /package/src/orchestration/map/BalanceSummary/{local.ts → initLocalBalanceSummaryMap.ts} +0 -0
package/dist/node/xl1.mjs
CHANGED
|
@@ -6,7 +6,7 @@ import { config as config2 } from "dotenv";
|
|
|
6
6
|
|
|
7
7
|
// src/runCLI.ts
|
|
8
8
|
import { deepMerge } from "@xylabs/object";
|
|
9
|
-
import { isDefined as
|
|
9
|
+
import { isDefined as isDefined16 } from "@xylabs/typeof";
|
|
10
10
|
import { ConfigZod } from "@xyo-network/xl1-protocol-sdk";
|
|
11
11
|
import yargs from "yargs";
|
|
12
12
|
import { hideBin } from "yargs/helpers";
|
|
@@ -472,8 +472,8 @@ var initHealthEndpoints = /* @__PURE__ */ __name((params) => {
|
|
|
472
472
|
// src/orchestration/initServices.ts
|
|
473
473
|
import { assertEx as assertEx17 } from "@xylabs/assert";
|
|
474
474
|
import { asAddress as asAddress2 } from "@xylabs/hex";
|
|
475
|
-
import { isDefined as
|
|
476
|
-
import { balanceSummaryRepositoryFromMap,
|
|
475
|
+
import { isDefined as isDefined13 } from "@xylabs/typeof";
|
|
476
|
+
import { balanceSummaryRepositoryFromMap, initTelemetry, startupSpanAsync as startupSpanAsync8, validateHydratedBlockState } from "@xyo-network/chain-sdk";
|
|
477
477
|
|
|
478
478
|
// src/orchestration/archivists/ChainFinalized/archivist.ts
|
|
479
479
|
import { initArchivistSync, startupSpanAsync } from "@xyo-network/chain-sdk";
|
|
@@ -748,7 +748,7 @@ import { isDefined as isDefined4 } from "@xylabs/typeof";
|
|
|
748
748
|
import { startupSpanAsync as startupSpanAsync6 } from "@xyo-network/chain-sdk";
|
|
749
749
|
import { Mutex as Mutex15 } from "async-mutex";
|
|
750
750
|
|
|
751
|
-
// src/orchestration/map/BalanceSummary/
|
|
751
|
+
// src/orchestration/map/BalanceSummary/initLocalBalanceSummaryMap.ts
|
|
752
752
|
import { isDefined as isDefined3 } from "@xylabs/typeof";
|
|
753
753
|
import { Mutex as Mutex14 } from "async-mutex";
|
|
754
754
|
|
|
@@ -834,7 +834,7 @@ var getLocalPersistentMap = /* @__PURE__ */ __name(async (dbName, storeName, sto
|
|
|
834
834
|
}
|
|
835
835
|
}, "getLocalPersistentMap");
|
|
836
836
|
|
|
837
|
-
// src/orchestration/map/BalanceSummary/
|
|
837
|
+
// src/orchestration/map/BalanceSummary/initLocalBalanceSummaryMap.ts
|
|
838
838
|
var mutex13 = new Mutex14();
|
|
839
839
|
var singleton13;
|
|
840
840
|
var initLocalBalanceSummaryMap = /* @__PURE__ */ __name(async (params) => {
|
|
@@ -859,6 +859,38 @@ async function initBalanceSummaryMap(params) {
|
|
|
859
859
|
}
|
|
860
860
|
__name(initBalanceSummaryMap, "initBalanceSummaryMap");
|
|
861
861
|
|
|
862
|
+
// src/orchestration/map/BalanceSummary/initTransferSummaryMap.ts
|
|
863
|
+
import { isDefined as isDefined6 } from "@xylabs/typeof";
|
|
864
|
+
import { startupSpanAsync as startupSpanAsync7 } from "@xyo-network/chain-sdk";
|
|
865
|
+
import { Mutex as Mutex17 } from "async-mutex";
|
|
866
|
+
|
|
867
|
+
// src/orchestration/map/BalanceSummary/initLocalTransferSummaryMap.ts
|
|
868
|
+
import { isDefined as isDefined5 } from "@xylabs/typeof";
|
|
869
|
+
import { Mutex as Mutex16 } from "async-mutex";
|
|
870
|
+
var mutex15 = new Mutex16();
|
|
871
|
+
var singleton15;
|
|
872
|
+
var initLocalTransferSummaryMap = /* @__PURE__ */ __name(async (params) => {
|
|
873
|
+
return await mutex15.runExclusive(async () => {
|
|
874
|
+
if (isDefined5(singleton15)) return singleton15;
|
|
875
|
+
const { root } = params.config.storage;
|
|
876
|
+
singleton15 = await getLocalPersistentMap("transfer", "summary", root);
|
|
877
|
+
return singleton15;
|
|
878
|
+
});
|
|
879
|
+
}, "initLocalTransferSummaryMap");
|
|
880
|
+
|
|
881
|
+
// src/orchestration/map/BalanceSummary/initTransferSummaryMap.ts
|
|
882
|
+
var mutex16 = new Mutex17();
|
|
883
|
+
var singleton16;
|
|
884
|
+
async function initTransferSummaryMap(params) {
|
|
885
|
+
return await mutex16.runExclusive(async () => {
|
|
886
|
+
if (isDefined6(singleton16)) return singleton16;
|
|
887
|
+
const local = await startupSpanAsync7("TransferSummaryMap:initLocal", () => initLocalTransferSummaryMap(params));
|
|
888
|
+
singleton16 = local;
|
|
889
|
+
return singleton16;
|
|
890
|
+
});
|
|
891
|
+
}
|
|
892
|
+
__name(initTransferSummaryMap, "initTransferSummaryMap");
|
|
893
|
+
|
|
862
894
|
// src/orchestration/services/implementation/account.ts
|
|
863
895
|
import { isUndefined as isUndefined2 } from "@xylabs/typeof";
|
|
864
896
|
import { HDWallet } from "@xyo-network/wallet";
|
|
@@ -898,7 +930,7 @@ import { MemoryChainService } from "@xyo-network/chain-sdk";
|
|
|
898
930
|
// src/orchestration/services/implementation/chain/evm.ts
|
|
899
931
|
import { assertEx as assertEx14 } from "@xylabs/assert";
|
|
900
932
|
import { asAddress, ZERO_ADDRESS } from "@xylabs/hex";
|
|
901
|
-
import { isDefined as
|
|
933
|
+
import { isDefined as isDefined10 } from "@xylabs/typeof";
|
|
902
934
|
import { EvmChainService } from "@xyo-network/chain-sdk";
|
|
903
935
|
import { Wallet } from "ethers/wallet";
|
|
904
936
|
|
|
@@ -907,15 +939,15 @@ import { assertEx as assertEx13 } from "@xylabs/assert";
|
|
|
907
939
|
|
|
908
940
|
// src/orchestration/services/implementation/evm/initInfuraProvider.ts
|
|
909
941
|
import { assertEx as assertEx11 } from "@xylabs/assert";
|
|
910
|
-
import { isDefined as
|
|
942
|
+
import { isDefined as isDefined8 } from "@xylabs/typeof";
|
|
911
943
|
import { InfuraProvider } from "ethers/providers";
|
|
912
944
|
|
|
913
945
|
// src/orchestration/services/implementation/evm/initChainId.ts
|
|
914
946
|
import { assertEx as assertEx10 } from "@xylabs/assert";
|
|
915
947
|
import { hexFrom, isHex } from "@xylabs/hex";
|
|
916
|
-
import { isDefined as
|
|
948
|
+
import { isDefined as isDefined7 } from "@xylabs/typeof";
|
|
917
949
|
var canUseChainId = /* @__PURE__ */ __name((config3) => {
|
|
918
|
-
return
|
|
950
|
+
return isDefined7(config3.evm.chainId);
|
|
919
951
|
}, "canUseChainId");
|
|
920
952
|
var getChainId = /* @__PURE__ */ __name((config3) => {
|
|
921
953
|
const chainId = assertEx10(config3.evm.chainId, () => "Missing config.evm.chainId");
|
|
@@ -940,7 +972,7 @@ var initInfuraProvider = /* @__PURE__ */ __name((config3) => {
|
|
|
940
972
|
return instance;
|
|
941
973
|
}, "initInfuraProvider");
|
|
942
974
|
var canUseInfuraProvider = /* @__PURE__ */ __name((config3) => {
|
|
943
|
-
return canUseChainId(config3) &&
|
|
975
|
+
return canUseChainId(config3) && isDefined8(config3.evm?.infura?.projectId) && isDefined8(config3.evm?.infura?.projectSecret);
|
|
944
976
|
}, "canUseInfuraProvider");
|
|
945
977
|
var getInfuraProviderConfig = /* @__PURE__ */ __name((config3) => {
|
|
946
978
|
const projectId = assertEx11(config3.evm?.infura?.projectId, () => "Missing config.evm.infura.projectId");
|
|
@@ -954,14 +986,14 @@ var getInfuraProviderConfig = /* @__PURE__ */ __name((config3) => {
|
|
|
954
986
|
|
|
955
987
|
// src/orchestration/services/implementation/evm/initJsonRpcProvider.ts
|
|
956
988
|
import { assertEx as assertEx12 } from "@xylabs/assert";
|
|
957
|
-
import { isDefined as
|
|
989
|
+
import { isDefined as isDefined9 } from "@xylabs/typeof";
|
|
958
990
|
import { JsonRpcProvider } from "ethers/providers";
|
|
959
991
|
var initJsonRpcProvider = /* @__PURE__ */ __name((config3) => {
|
|
960
992
|
const providerConfig = getJsonRpcProviderConfig(config3);
|
|
961
993
|
return Promise.resolve(new JsonRpcProvider(...providerConfig));
|
|
962
994
|
}, "initJsonRpcProvider");
|
|
963
995
|
var canUseJsonRpcProvider = /* @__PURE__ */ __name((config3) => {
|
|
964
|
-
return canUseChainId(config3) &&
|
|
996
|
+
return canUseChainId(config3) && isDefined9(config3.evm.jsonRpc?.url);
|
|
965
997
|
}, "canUseJsonRpcProvider");
|
|
966
998
|
var getJsonRpcProviderConfig = /* @__PURE__ */ __name((config3) => {
|
|
967
999
|
const jsonRpcUrl = assertEx12(config3.evm.jsonRpc?.url, () => "Missing config.evm.jsonRpc.url");
|
|
@@ -990,7 +1022,7 @@ var canUseEvmProvider = /* @__PURE__ */ __name(({ config: config3 }) => {
|
|
|
990
1022
|
var chainStakeServiceSingleton;
|
|
991
1023
|
var canUseEvmContractChainService = /* @__PURE__ */ __name((config3) => {
|
|
992
1024
|
const { id } = config3.chain;
|
|
993
|
-
return
|
|
1025
|
+
return isDefined10(id) && id !== ZERO_ADDRESS && canUseEvmProvider({
|
|
994
1026
|
config: config3
|
|
995
1027
|
});
|
|
996
1028
|
}, "canUseEvmContractChainService");
|
|
@@ -1035,18 +1067,28 @@ var init = /* @__PURE__ */ __name((params) => {
|
|
|
1035
1067
|
|
|
1036
1068
|
// src/orchestration/services/implementation/head/head.ts
|
|
1037
1069
|
import { assertEx as assertEx15 } from "@xylabs/assert";
|
|
1038
|
-
import { isDefined as
|
|
1070
|
+
import { isDefined as isDefined12 } from "@xylabs/typeof";
|
|
1039
1071
|
import { findMostRecentBlock as findMostRecentBlock2 } from "@xyo-network/chain-sdk";
|
|
1040
1072
|
|
|
1041
1073
|
// src/orchestration/services/implementation/head/createBootstrapHead.ts
|
|
1042
|
-
import {
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1074
|
+
import { buildNextBlock, createDeclarationIntent as createDeclarationIntent2, createGenesisBlock } from "@xyo-network/chain-sdk";
|
|
1075
|
+
var createBootstrapHead = /* @__PURE__ */ __name(async (account, chainService) => {
|
|
1076
|
+
const chainId = chainService.chainId;
|
|
1077
|
+
const chain = [];
|
|
1078
|
+
const genesisBlock = await createGenesisBlock(account, chainId, 10000000n, account.address);
|
|
1079
|
+
chain.push(genesisBlock);
|
|
1080
|
+
const producerDeclarationPayload = createDeclarationIntent2(account.address, "producer", genesisBlock[0].block, genesisBlock[0].block + 1e4);
|
|
1081
|
+
const producerDeclarationBlock = await buildNextBlock(genesisBlock[0], [], [
|
|
1082
|
+
producerDeclarationPayload
|
|
1083
|
+
], [
|
|
1084
|
+
account
|
|
1085
|
+
]);
|
|
1086
|
+
chain.push(producerDeclarationBlock);
|
|
1087
|
+
return chain;
|
|
1046
1088
|
}, "createBootstrapHead");
|
|
1047
1089
|
|
|
1048
1090
|
// src/orchestration/services/implementation/head/createForkedHead/getBridgeDestinationObservation.ts
|
|
1049
|
-
import { BridgeDestinationObservationSchema, buildNextBlock } from "@xyo-network/chain-sdk";
|
|
1091
|
+
import { BridgeDestinationObservationSchema, buildNextBlock as buildNextBlock2 } from "@xyo-network/chain-sdk";
|
|
1050
1092
|
import { PayloadBuilder as PayloadBuilder3 } from "@xyo-network/payload-builder";
|
|
1051
1093
|
|
|
1052
1094
|
// src/orchestration/services/implementation/head/createForkedHead/config/getBridgeDestinationDetails.ts
|
|
@@ -1064,9 +1106,9 @@ var getForkBlockRewardHex = /* @__PURE__ */ __name(() => {
|
|
|
1064
1106
|
|
|
1065
1107
|
// src/orchestration/services/implementation/head/createForkedHead/config/getBridgeDestinationDetails.ts
|
|
1066
1108
|
var ethChainId = toHex4("0x1");
|
|
1067
|
-
var bridgeableTokenContract = toHex4("
|
|
1068
|
-
var bridgeDestAddress = toHex4("
|
|
1069
|
-
var destConfirmation = toHex4("
|
|
1109
|
+
var bridgeableTokenContract = toHex4("0xf72aE3E0DA743033AbD7A407557D684c1aE66aed");
|
|
1110
|
+
var bridgeDestAddress = toHex4("0x0e65b65B10C791942665030402c35023d88B14dA");
|
|
1111
|
+
var destConfirmation = toHex4("0x950861b10523b52cdbb4a9ee52ed26601db555d2652bfec21c709e5e70d5b7d3");
|
|
1070
1112
|
var getBridgeDestChainId = /* @__PURE__ */ __name(() => ethChainId, "getBridgeDestChainId");
|
|
1071
1113
|
var getBridgeDestToken = /* @__PURE__ */ __name(() => bridgeableTokenContract, "getBridgeDestToken");
|
|
1072
1114
|
var getBridgeDestAddress = /* @__PURE__ */ __name(() => bridgeDestAddress, "getBridgeDestAddress");
|
|
@@ -1105,7 +1147,7 @@ var getBridgeDestinationObservation = /* @__PURE__ */ __name(async (previousBloc
|
|
|
1105
1147
|
const bridgeDestinationObservation = new PayloadBuilder3({
|
|
1106
1148
|
schema: BridgeDestinationObservationSchema
|
|
1107
1149
|
}).fields(bridgeDestinationObservationFields).build();
|
|
1108
|
-
return await
|
|
1150
|
+
return await buildNextBlock2(previousBlock[0], [], [
|
|
1109
1151
|
bridgeDestinationObservation
|
|
1110
1152
|
], [
|
|
1111
1153
|
account
|
|
@@ -1113,7 +1155,7 @@ var getBridgeDestinationObservation = /* @__PURE__ */ __name(async (previousBloc
|
|
|
1113
1155
|
}, "getBridgeDestinationObservation");
|
|
1114
1156
|
|
|
1115
1157
|
// src/orchestration/services/implementation/head/createForkedHead/getBridgeIntent.ts
|
|
1116
|
-
import { BridgeIntentSchema, buildNextBlock as
|
|
1158
|
+
import { BridgeIntentSchema, buildNextBlock as buildNextBlock3, createTransferPayload, XYO_BRIDGE_ADDRESS } from "@xyo-network/chain-sdk";
|
|
1117
1159
|
import { PayloadBuilder as PayloadBuilder4 } from "@xyo-network/payload-builder";
|
|
1118
1160
|
var getBridgeIntent = /* @__PURE__ */ __name(async (previousBlock, account, chainService) => {
|
|
1119
1161
|
const transferPayload = createTransferPayload(account.address, {
|
|
@@ -1128,7 +1170,7 @@ var getBridgeIntent = /* @__PURE__ */ __name(async (previousBlock, account, chai
|
|
|
1128
1170
|
const bridgeIntent = new PayloadBuilder4({
|
|
1129
1171
|
schema: BridgeIntentSchema
|
|
1130
1172
|
}).fields(bridgeIntentFields).build();
|
|
1131
|
-
return await
|
|
1173
|
+
return await buildNextBlock3(previousBlock[0], [], [
|
|
1132
1174
|
bridgeIntent,
|
|
1133
1175
|
transferPayload
|
|
1134
1176
|
], [
|
|
@@ -1137,7 +1179,7 @@ var getBridgeIntent = /* @__PURE__ */ __name(async (previousBlock, account, chai
|
|
|
1137
1179
|
}, "getBridgeIntent");
|
|
1138
1180
|
|
|
1139
1181
|
// src/orchestration/services/implementation/head/createForkedHead/getBridgeSourceObservation.ts
|
|
1140
|
-
import { BridgeSourceObservationSchema, buildNextBlock as
|
|
1182
|
+
import { BridgeSourceObservationSchema, buildNextBlock as buildNextBlock4 } from "@xyo-network/chain-sdk";
|
|
1141
1183
|
import { PayloadBuilder as PayloadBuilder5 } from "@xyo-network/payload-builder";
|
|
1142
1184
|
var getBridgeSourceObservation = /* @__PURE__ */ __name(async (previousBlock, account, chainService) => {
|
|
1143
1185
|
const srcTxHash = previousBlock[0]._hash;
|
|
@@ -1150,7 +1192,7 @@ var getBridgeSourceObservation = /* @__PURE__ */ __name(async (previousBlock, ac
|
|
|
1150
1192
|
const bridgeSourceObservation = new PayloadBuilder5({
|
|
1151
1193
|
schema: BridgeSourceObservationSchema
|
|
1152
1194
|
}).fields(bridgeSourceObservationFields).build();
|
|
1153
|
-
return await
|
|
1195
|
+
return await buildNextBlock4(previousBlock[0], [], [
|
|
1154
1196
|
bridgeSourceObservation
|
|
1155
1197
|
], [
|
|
1156
1198
|
account
|
|
@@ -1158,11 +1200,10 @@ var getBridgeSourceObservation = /* @__PURE__ */ __name(async (previousBlock, ac
|
|
|
1158
1200
|
}, "getBridgeSourceObservation");
|
|
1159
1201
|
|
|
1160
1202
|
// src/orchestration/services/implementation/head/createForkedHead/getFirstBlockForNewChain.ts
|
|
1161
|
-
import { buildBlock } from "@xyo-network/chain-sdk";
|
|
1203
|
+
import { AttoXL1, buildBlock, XYO_STEP_REWARD_ADDRESS } from "@xyo-network/chain-sdk";
|
|
1162
1204
|
var getFirstBlockForNewChain = /* @__PURE__ */ __name(async (forkBlock, account, chainService) => {
|
|
1163
1205
|
const { _hash: previousBlockHash, block: previousBlockNumber, step_hashes: previousStepHashes, protocol } = forkBlock;
|
|
1164
1206
|
const chainId = chainService.chainId;
|
|
1165
|
-
const forkBlockReward = getForkBlockReward();
|
|
1166
1207
|
const options = {
|
|
1167
1208
|
blockPayloads: [],
|
|
1168
1209
|
chainId,
|
|
@@ -1174,8 +1215,8 @@ var getFirstBlockForNewChain = /* @__PURE__ */ __name(async (forkBlock, account,
|
|
|
1174
1215
|
],
|
|
1175
1216
|
txs: [],
|
|
1176
1217
|
protocol,
|
|
1177
|
-
|
|
1178
|
-
|
|
1218
|
+
stepRewardAddress: XYO_STEP_REWARD_ADDRESS,
|
|
1219
|
+
stepRewardPoolBalance: AttoXL1(0n)
|
|
1179
1220
|
};
|
|
1180
1221
|
return await buildBlock(options);
|
|
1181
1222
|
}, "getFirstBlockForNewChain");
|
|
@@ -1196,14 +1237,14 @@ var createForkedHead = /* @__PURE__ */ __name(async (forkFromBlock, account, cha
|
|
|
1196
1237
|
|
|
1197
1238
|
// src/orchestration/services/implementation/head/getForkFromBlock.ts
|
|
1198
1239
|
import { asHash, hexFromBigInt } from "@xylabs/hex";
|
|
1199
|
-
import { isDefined as
|
|
1240
|
+
import { isDefined as isDefined11 } from "@xylabs/typeof";
|
|
1200
1241
|
import { isBlockBoundWitnessWithHashStorageMeta } from "@xyo-network/chain-sdk";
|
|
1201
1242
|
var getForkFromBlock = /* @__PURE__ */ __name(async (head, chainService, chainArchivist) => {
|
|
1202
1243
|
if (head.chain !== chainService.chainId) {
|
|
1203
1244
|
const forkedAtBigInt = await chainService.forkedAtHash();
|
|
1204
1245
|
const forkedAtHex = hexFromBigInt(forkedAtBigInt);
|
|
1205
1246
|
const forkedAtHash = asHash(forkedAtHex);
|
|
1206
|
-
if (
|
|
1247
|
+
if (isDefined11(forkedAtHash)) {
|
|
1207
1248
|
const [forkedAtBlock] = await chainArchivist.get([
|
|
1208
1249
|
forkedAtHash
|
|
1209
1250
|
]);
|
|
@@ -1241,18 +1282,17 @@ var initHead = /* @__PURE__ */ __name(async (params) => {
|
|
|
1241
1282
|
let head = await findMostRecentBlock2(chainArchivist);
|
|
1242
1283
|
if (head) {
|
|
1243
1284
|
const forkFromBlock = await getForkFromBlock(head, chainService, chainArchivist);
|
|
1244
|
-
if (
|
|
1285
|
+
if (isDefined12(forkFromBlock)) {
|
|
1245
1286
|
const chain = await createForkedHead(forkFromBlock, account, chainService);
|
|
1246
1287
|
await submitNewChain(chain, chainArchivist, chainSubmissionsArchivistWrite);
|
|
1247
1288
|
const newBlock = assertEx15(chain.at(-1), () => new Error("Failed to get new head after forking"));
|
|
1248
1289
|
head = newBlock[0];
|
|
1249
1290
|
}
|
|
1250
1291
|
} else {
|
|
1251
|
-
const
|
|
1252
|
-
await submitNewChain(
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
head = genesisBlock[0];
|
|
1292
|
+
const chain = await createBootstrapHead(account, chainService);
|
|
1293
|
+
await submitNewChain(chain, chainArchivist, chainSubmissionsArchivistWrite);
|
|
1294
|
+
const newBlock = assertEx15(chain.at(-1), () => new Error("Failed to get new head after genesis"));
|
|
1295
|
+
head = newBlock[0];
|
|
1256
1296
|
}
|
|
1257
1297
|
headSingleton = head;
|
|
1258
1298
|
return headSingleton;
|
|
@@ -1331,6 +1371,27 @@ var initEvmBlockRewardService = /* @__PURE__ */ __name(async (params) => {
|
|
|
1331
1371
|
return rewardServiceSingleton;
|
|
1332
1372
|
}, "initEvmBlockRewardService");
|
|
1333
1373
|
|
|
1374
|
+
// src/orchestration/services/implementation/time.ts
|
|
1375
|
+
import { BaseTimeSyncService } from "@xyo-network/chain-sdk";
|
|
1376
|
+
var timeSyncServiceSingleton;
|
|
1377
|
+
var initTimeService = /* @__PURE__ */ __name(async ({ chainArchivist, chainIterator, config: config3, logger, meterProvider, traceProvider }) => {
|
|
1378
|
+
if (timeSyncServiceSingleton) return timeSyncServiceSingleton;
|
|
1379
|
+
const ethProvider = canUseEvmProvider({
|
|
1380
|
+
config: config3
|
|
1381
|
+
}) ? await initEvmProvider({
|
|
1382
|
+
config: config3
|
|
1383
|
+
}) : void 0;
|
|
1384
|
+
timeSyncServiceSingleton = BaseTimeSyncService.create({
|
|
1385
|
+
chainArchivist,
|
|
1386
|
+
chainIterator,
|
|
1387
|
+
ethProvider,
|
|
1388
|
+
logger,
|
|
1389
|
+
meterProvider,
|
|
1390
|
+
traceProvider
|
|
1391
|
+
});
|
|
1392
|
+
return await timeSyncServiceSingleton;
|
|
1393
|
+
}, "initTimeService");
|
|
1394
|
+
|
|
1334
1395
|
// src/orchestration/status/ServiceStatus.ts
|
|
1335
1396
|
var LoggerStatusReporter = class {
|
|
1336
1397
|
static {
|
|
@@ -1423,7 +1484,7 @@ var RuntimeStatusMonitor = class extends LoggerStatusReporter {
|
|
|
1423
1484
|
|
|
1424
1485
|
// src/orchestration/initServices.ts
|
|
1425
1486
|
var isStartable = /* @__PURE__ */ __name((value) => {
|
|
1426
|
-
return
|
|
1487
|
+
return isDefined13(value.start) && typeof value.start === "function";
|
|
1427
1488
|
}, "isStartable");
|
|
1428
1489
|
var initServices = /* @__PURE__ */ __name(async (context) => {
|
|
1429
1490
|
const { config: config3, logger } = context;
|
|
@@ -1439,7 +1500,7 @@ var initServices = /* @__PURE__ */ __name(async (context) => {
|
|
|
1439
1500
|
logger.error("Producer encountered an unhandled error!");
|
|
1440
1501
|
process.exit(1);
|
|
1441
1502
|
});
|
|
1442
|
-
await
|
|
1503
|
+
await startupSpanAsync8("initHealthEndpoints", () => initHealthEndpoints({
|
|
1443
1504
|
...context,
|
|
1444
1505
|
statusReporter
|
|
1445
1506
|
}));
|
|
@@ -1456,8 +1517,8 @@ var initServices = /* @__PURE__ */ __name(async (context) => {
|
|
|
1456
1517
|
}
|
|
1457
1518
|
};
|
|
1458
1519
|
const [{ traceProvider, meterProvider }, account] = await Promise.all([
|
|
1459
|
-
|
|
1460
|
-
|
|
1520
|
+
startupSpanAsync8("initTelemetry", () => initTelemetry(telemetryConfig)),
|
|
1521
|
+
startupSpanAsync8("initAccount", () => initAccount(context))
|
|
1461
1522
|
]);
|
|
1462
1523
|
const initParams = {
|
|
1463
1524
|
config: config3,
|
|
@@ -1466,24 +1527,25 @@ var initServices = /* @__PURE__ */ __name(async (context) => {
|
|
|
1466
1527
|
statusReporter,
|
|
1467
1528
|
traceProvider
|
|
1468
1529
|
};
|
|
1469
|
-
const [chainArchivist, [pendingBundledTransactionsArchivist, pendingBundledTransactionsArchivistWrite], rejectedTransactionsArchivist, chainSubmissionsArchivistWrite, stakeIntentStateArchivist, chainService, balanceSummaryMap] = await Promise.all([
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1530
|
+
const [chainArchivist, [pendingBundledTransactionsArchivist, pendingBundledTransactionsArchivistWrite], rejectedTransactionsArchivist, chainSubmissionsArchivistWrite, stakeIntentStateArchivist, chainService, balanceSummaryMap, transferSummaryMap] = await Promise.all([
|
|
1531
|
+
startupSpanAsync8("ChainFinalizedArchivist", () => initChainFinalizedArchivist(initParams)),
|
|
1532
|
+
startupSpanAsync8("PendingBundledTransactionsArchivist", () => initPendingBundledTransactionsArchivist(initParams)),
|
|
1533
|
+
startupSpanAsync8("RejectedTransactionsArchivist", () => initRejectedTransactionsArchivist(initParams)),
|
|
1534
|
+
startupSpanAsync8("ChainSubmissionsArchivist", () => initChainSubmissionsArchivist(initParams)),
|
|
1535
|
+
startupSpanAsync8("StakeIntentStateArchivist", () => initStakeIntentStateArchivist(initParams)),
|
|
1536
|
+
startupSpanAsync8("ChainService", () => initChainService({
|
|
1476
1537
|
...initParams,
|
|
1477
1538
|
account,
|
|
1478
1539
|
name: "ChainService"
|
|
1479
1540
|
})),
|
|
1480
|
-
|
|
1541
|
+
startupSpanAsync8("BalanceSummaryMap", () => initBalanceSummaryMap(initParams)),
|
|
1542
|
+
startupSpanAsync8("TransferSummaryMap", () => initTransferSummaryMap(initParams))
|
|
1481
1543
|
]);
|
|
1482
1544
|
const chainId = chainService.chainId;
|
|
1483
1545
|
const chainContractViewer = chainService;
|
|
1484
1546
|
const chainStakeViewer = chainService;
|
|
1485
1547
|
const chainStaker = chainService;
|
|
1486
|
-
const head = await
|
|
1548
|
+
const head = await startupSpanAsync8("initHead", () => initHead({
|
|
1487
1549
|
...initParams,
|
|
1488
1550
|
account,
|
|
1489
1551
|
chainArchivist,
|
|
@@ -1491,7 +1553,7 @@ var initServices = /* @__PURE__ */ __name(async (context) => {
|
|
|
1491
1553
|
chainService
|
|
1492
1554
|
}));
|
|
1493
1555
|
const [pendingTransactionsService, rewardService, chainIterator, balanceService] = await Promise.all([
|
|
1494
|
-
|
|
1556
|
+
startupSpanAsync8("PendingTransactions", () => initPendingTransactions({
|
|
1495
1557
|
name: "PendingTransactionsService",
|
|
1496
1558
|
chainArchivist,
|
|
1497
1559
|
chainId,
|
|
@@ -1499,34 +1561,42 @@ var initServices = /* @__PURE__ */ __name(async (context) => {
|
|
|
1499
1561
|
rejectedTransactionsArchivist,
|
|
1500
1562
|
...initParams
|
|
1501
1563
|
})),
|
|
1502
|
-
|
|
1564
|
+
startupSpanAsync8("RewardService", () => initBlockRewardService({
|
|
1503
1565
|
name: "RewardService",
|
|
1504
1566
|
account,
|
|
1505
1567
|
chainService,
|
|
1506
1568
|
...initParams
|
|
1507
1569
|
})),
|
|
1508
|
-
|
|
1570
|
+
startupSpanAsync8("ChainIterator", () => initChainIterator({
|
|
1509
1571
|
name: "ChainIterator",
|
|
1510
1572
|
chainArchivist,
|
|
1511
1573
|
head,
|
|
1512
1574
|
...initParams
|
|
1513
1575
|
})),
|
|
1514
|
-
|
|
1576
|
+
startupSpanAsync8("BalanceService", () => initBalanceService({
|
|
1515
1577
|
name: "BalanceService",
|
|
1516
1578
|
chainArchivist,
|
|
1517
1579
|
summaryRepository: balanceSummaryRepositoryFromMap(balanceSummaryMap),
|
|
1518
1580
|
...initParams
|
|
1519
1581
|
}))
|
|
1520
1582
|
]);
|
|
1521
|
-
const stakeIntentService = await
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1583
|
+
const [stakeIntentService, time] = await Promise.all([
|
|
1584
|
+
startupSpanAsync8("StakeIntentService", () => initStakeIntentService({
|
|
1585
|
+
name: "StakeIntentService",
|
|
1586
|
+
chainArchivist,
|
|
1587
|
+
chainIterator,
|
|
1588
|
+
chainStakeViewer,
|
|
1589
|
+
stakeIntentStateArchivist,
|
|
1590
|
+
...initParams
|
|
1591
|
+
})),
|
|
1592
|
+
startupSpanAsync8("TimeService", () => initTimeService({
|
|
1593
|
+
name: "TimeService",
|
|
1594
|
+
chainArchivist,
|
|
1595
|
+
chainIterator,
|
|
1596
|
+
...initParams
|
|
1597
|
+
}))
|
|
1598
|
+
]);
|
|
1599
|
+
const electionService = await startupSpanAsync8("ElectionService", () => initElectionService({
|
|
1530
1600
|
name: "ElectionService",
|
|
1531
1601
|
chainIterator,
|
|
1532
1602
|
chainStakeViewer,
|
|
@@ -1545,11 +1615,7 @@ var initServices = /* @__PURE__ */ __name(async (context) => {
|
|
|
1545
1615
|
validateHydratedBlockState,
|
|
1546
1616
|
...initParams
|
|
1547
1617
|
};
|
|
1548
|
-
const
|
|
1549
|
-
chainArchivist,
|
|
1550
|
-
chainIterator
|
|
1551
|
-
});
|
|
1552
|
-
const rewardAddress = isDefined11(config3.producer.rewardAddress) ? assertEx17(asAddress2(config3.producer.rewardAddress), () => "Invalid block reward address provided") : account.address;
|
|
1618
|
+
const rewardAddress = isDefined13(config3.producer.rewardAddress) ? assertEx17(asAddress2(config3.producer.rewardAddress), () => "Invalid block reward address provided") : account.address;
|
|
1553
1619
|
const producerParams = {
|
|
1554
1620
|
...validatorParams,
|
|
1555
1621
|
name: "Producer",
|
|
@@ -1562,7 +1628,7 @@ var initServices = /* @__PURE__ */ __name(async (context) => {
|
|
|
1562
1628
|
time,
|
|
1563
1629
|
...initParams
|
|
1564
1630
|
};
|
|
1565
|
-
const producer = await
|
|
1631
|
+
const producer = await startupSpanAsync8("Producer", () => initBlockProducer(producerParams));
|
|
1566
1632
|
const result = {
|
|
1567
1633
|
account,
|
|
1568
1634
|
balance: balanceService,
|
|
@@ -1635,16 +1701,16 @@ var XL1LogoColorizedAscii = `\x1B[38;2;128;128;128m\xA0\xA0\xA0\xA0\xA0\xA0\xA0\
|
|
|
1635
1701
|
// src/initLogger.ts
|
|
1636
1702
|
import { Base as Base2 } from "@xylabs/base";
|
|
1637
1703
|
import { ConsoleLogger, LogLevel, SilentLogger } from "@xylabs/logger";
|
|
1638
|
-
import { isDefined as
|
|
1704
|
+
import { isDefined as isDefined14 } from "@xylabs/typeof";
|
|
1639
1705
|
var initLogger = /* @__PURE__ */ __name((config3) => {
|
|
1640
1706
|
let logger;
|
|
1641
1707
|
if (config3.silent) {
|
|
1642
1708
|
logger = new SilentLogger();
|
|
1643
1709
|
} else {
|
|
1644
1710
|
let level;
|
|
1645
|
-
if (
|
|
1711
|
+
if (isDefined14(config3.logLevel)) {
|
|
1646
1712
|
const parsed = LogLevel[config3.logLevel.toLowerCase()];
|
|
1647
|
-
if (
|
|
1713
|
+
if (isDefined14(parsed)) level = parsed;
|
|
1648
1714
|
}
|
|
1649
1715
|
logger = new ConsoleLogger(level);
|
|
1650
1716
|
}
|
|
@@ -1660,7 +1726,7 @@ var usageMetaToOptions = /* @__PURE__ */ __name((meta) => {
|
|
|
1660
1726
|
}, "usageMetaToOptions");
|
|
1661
1727
|
var optionsFromGlobalZodRegistry = /* @__PURE__ */ __name(() => {
|
|
1662
1728
|
const opts = {};
|
|
1663
|
-
for (const schema of globalRegistry._map
|
|
1729
|
+
for (const schema of Object.values(globalRegistry._map)) {
|
|
1664
1730
|
if (isUsageMeta(schema)) {
|
|
1665
1731
|
if (schema.hidden) continue;
|
|
1666
1732
|
opts[schema.title] = usageMetaToOptions(schema);
|
|
@@ -1670,7 +1736,7 @@ var optionsFromGlobalZodRegistry = /* @__PURE__ */ __name(() => {
|
|
|
1670
1736
|
}, "optionsFromGlobalZodRegistry");
|
|
1671
1737
|
|
|
1672
1738
|
// src/tryParseConfig.ts
|
|
1673
|
-
import { isDefined as
|
|
1739
|
+
import { isDefined as isDefined15, isNull } from "@xylabs/typeof";
|
|
1674
1740
|
import { cosmiconfigSync } from "cosmiconfig";
|
|
1675
1741
|
var configName = "xyo";
|
|
1676
1742
|
var configSection = "xl1";
|
|
@@ -1679,7 +1745,7 @@ var tryParseConfig = /* @__PURE__ */ __name(() => {
|
|
|
1679
1745
|
const result = explorer.search();
|
|
1680
1746
|
if (!isNull(result)) {
|
|
1681
1747
|
const section = result?.config?.[configSection];
|
|
1682
|
-
if (
|
|
1748
|
+
if (isDefined15(section) && typeof section === "object") {
|
|
1683
1749
|
return section;
|
|
1684
1750
|
}
|
|
1685
1751
|
}
|
|
@@ -1709,7 +1775,7 @@ var waitForHostPort = /* @__PURE__ */ __name((host, port) => {
|
|
|
1709
1775
|
|
|
1710
1776
|
// src/runCLI.ts
|
|
1711
1777
|
var config;
|
|
1712
|
-
var version =
|
|
1778
|
+
var version = isDefined16("1.14.4") ? "1.14.4" : "unknown";
|
|
1713
1779
|
var getContextFromConfig = /* @__PURE__ */ __name((config3) => {
|
|
1714
1780
|
const logger = initLogger(config3);
|
|
1715
1781
|
const orchestrator = new Orchestrator(logger);
|
|
@@ -1741,6 +1807,7 @@ Run various components of the XL1 ecosystem.
|
|
|
1741
1807
|
Usage:
|
|
1742
1808
|
$0 <command> [options]`).parserConfiguration({
|
|
1743
1809
|
"dot-notation": true,
|
|
1810
|
+
"parse-numbers": false,
|
|
1744
1811
|
"populate--": true
|
|
1745
1812
|
}).env("XL1").scriptName("xl1").middleware((argv2) => {
|
|
1746
1813
|
try {
|