@xyo-network/chain-orchestration 1.20.18 → 1.20.19

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 (91) hide show
  1. package/dist/browser/index.mjs +357 -83
  2. package/dist/browser/index.mjs.map +1 -1
  3. package/dist/browser/node/config/locators/actors/bridgeLocatorFromConfig.d.ts +1 -1
  4. package/dist/browser/node/config/locators/actors/bridgeLocatorFromConfig.d.ts.map +1 -1
  5. package/dist/browser/node/config/tryParseConfig.d.ts +156 -2
  6. package/dist/browser/node/config/tryParseConfig.d.ts.map +1 -1
  7. package/dist/browser/node/init/initFinalizationArchivistIfNeeded.d.ts.map +1 -1
  8. package/dist/browser/shared/config/actors/Api.d.ts +11 -5
  9. package/dist/browser/shared/config/actors/Api.d.ts.map +1 -1
  10. package/dist/browser/shared/config/actors/Bridge.d.ts +11 -5
  11. package/dist/browser/shared/config/actors/Bridge.d.ts.map +1 -1
  12. package/dist/browser/shared/config/actors/Mempool.d.ts +11 -5
  13. package/dist/browser/shared/config/actors/Mempool.d.ts.map +1 -1
  14. package/dist/browser/shared/config/actors/Producer.d.ts +11 -5
  15. package/dist/browser/shared/config/actors/Producer.d.ts.map +1 -1
  16. package/dist/browser/shared/config/actors/RewardRedemption.d.ts +11 -5
  17. package/dist/browser/shared/config/actors/RewardRedemption.d.ts.map +1 -1
  18. package/dist/browser/shared/config/actors/Validator.d.ts +11 -5
  19. package/dist/browser/shared/config/actors/Validator.d.ts.map +1 -1
  20. package/dist/browser/shared/config/actors/accountIndex.d.ts +3 -0
  21. package/dist/browser/shared/config/actors/accountIndex.d.ts.map +1 -0
  22. package/dist/browser/shared/config/mergeConfig.d.ts +1 -1
  23. package/dist/browser/shared/init/index.d.ts +1 -0
  24. package/dist/browser/shared/init/index.d.ts.map +1 -1
  25. package/dist/browser/shared/init/initActorAccount.d.ts.map +1 -1
  26. package/dist/browser/shared/init/initActorSeedPhrase.d.ts.map +1 -1
  27. package/dist/browser/shared/init/initWallet.d.ts +1 -1
  28. package/dist/browser/shared/init/initWallet.d.ts.map +1 -1
  29. package/dist/browser/shared/init/walletResolution.d.ts +56 -0
  30. package/dist/browser/shared/init/walletResolution.d.ts.map +1 -0
  31. package/dist/neutral/index.mjs +357 -83
  32. package/dist/neutral/index.mjs.map +1 -1
  33. package/dist/neutral/node/config/locators/actors/bridgeLocatorFromConfig.d.ts +1 -1
  34. package/dist/neutral/node/config/locators/actors/bridgeLocatorFromConfig.d.ts.map +1 -1
  35. package/dist/neutral/node/config/tryParseConfig.d.ts +156 -2
  36. package/dist/neutral/node/config/tryParseConfig.d.ts.map +1 -1
  37. package/dist/neutral/node/init/initFinalizationArchivistIfNeeded.d.ts.map +1 -1
  38. package/dist/neutral/shared/config/actors/Api.d.ts +11 -5
  39. package/dist/neutral/shared/config/actors/Api.d.ts.map +1 -1
  40. package/dist/neutral/shared/config/actors/Bridge.d.ts +11 -5
  41. package/dist/neutral/shared/config/actors/Bridge.d.ts.map +1 -1
  42. package/dist/neutral/shared/config/actors/Mempool.d.ts +11 -5
  43. package/dist/neutral/shared/config/actors/Mempool.d.ts.map +1 -1
  44. package/dist/neutral/shared/config/actors/Producer.d.ts +11 -5
  45. package/dist/neutral/shared/config/actors/Producer.d.ts.map +1 -1
  46. package/dist/neutral/shared/config/actors/RewardRedemption.d.ts +11 -5
  47. package/dist/neutral/shared/config/actors/RewardRedemption.d.ts.map +1 -1
  48. package/dist/neutral/shared/config/actors/Validator.d.ts +11 -5
  49. package/dist/neutral/shared/config/actors/Validator.d.ts.map +1 -1
  50. package/dist/neutral/shared/config/actors/accountIndex.d.ts +3 -0
  51. package/dist/neutral/shared/config/actors/accountIndex.d.ts.map +1 -0
  52. package/dist/neutral/shared/config/mergeConfig.d.ts +1 -1
  53. package/dist/neutral/shared/init/index.d.ts +1 -0
  54. package/dist/neutral/shared/init/index.d.ts.map +1 -1
  55. package/dist/neutral/shared/init/initActorAccount.d.ts.map +1 -1
  56. package/dist/neutral/shared/init/initActorSeedPhrase.d.ts.map +1 -1
  57. package/dist/neutral/shared/init/initWallet.d.ts +1 -1
  58. package/dist/neutral/shared/init/initWallet.d.ts.map +1 -1
  59. package/dist/neutral/shared/init/walletResolution.d.ts +56 -0
  60. package/dist/neutral/shared/init/walletResolution.d.ts.map +1 -0
  61. package/dist/node/index.mjs +375 -99
  62. package/dist/node/index.mjs.map +1 -1
  63. package/dist/node/node/config/locators/actors/bridgeLocatorFromConfig.d.ts +1 -1
  64. package/dist/node/node/config/locators/actors/bridgeLocatorFromConfig.d.ts.map +1 -1
  65. package/dist/node/node/config/tryParseConfig.d.ts +156 -2
  66. package/dist/node/node/config/tryParseConfig.d.ts.map +1 -1
  67. package/dist/node/node/init/initFinalizationArchivistIfNeeded.d.ts.map +1 -1
  68. package/dist/node/shared/config/actors/Api.d.ts +11 -5
  69. package/dist/node/shared/config/actors/Api.d.ts.map +1 -1
  70. package/dist/node/shared/config/actors/Bridge.d.ts +11 -5
  71. package/dist/node/shared/config/actors/Bridge.d.ts.map +1 -1
  72. package/dist/node/shared/config/actors/Mempool.d.ts +11 -5
  73. package/dist/node/shared/config/actors/Mempool.d.ts.map +1 -1
  74. package/dist/node/shared/config/actors/Producer.d.ts +11 -5
  75. package/dist/node/shared/config/actors/Producer.d.ts.map +1 -1
  76. package/dist/node/shared/config/actors/RewardRedemption.d.ts +11 -5
  77. package/dist/node/shared/config/actors/RewardRedemption.d.ts.map +1 -1
  78. package/dist/node/shared/config/actors/Validator.d.ts +11 -5
  79. package/dist/node/shared/config/actors/Validator.d.ts.map +1 -1
  80. package/dist/node/shared/config/actors/accountIndex.d.ts +3 -0
  81. package/dist/node/shared/config/actors/accountIndex.d.ts.map +1 -0
  82. package/dist/node/shared/config/mergeConfig.d.ts +1 -1
  83. package/dist/node/shared/init/index.d.ts +1 -0
  84. package/dist/node/shared/init/index.d.ts.map +1 -1
  85. package/dist/node/shared/init/initActorAccount.d.ts.map +1 -1
  86. package/dist/node/shared/init/initActorSeedPhrase.d.ts.map +1 -1
  87. package/dist/node/shared/init/initWallet.d.ts +1 -1
  88. package/dist/node/shared/init/initWallet.d.ts.map +1 -1
  89. package/dist/node/shared/init/walletResolution.d.ts +56 -0
  90. package/dist/node/shared/init/walletResolution.d.ts.map +1 -0
  91. package/package.json +12 -13
@@ -53,7 +53,7 @@ var ValidatorActor = class extends ActorV3 {
53
53
  await super.startHandler();
54
54
  this.registerTimer("ValidatorActor", async () => {
55
55
  await this.spanAsync("processPendingBlocks", async () => {
56
- console.log("ValidatorActor: Processing pending blocks...");
56
+ this.logger?.debug("ValidatorActor: Processing pending blocks...");
57
57
  await processPendingBlocks({
58
58
  blockValidationViewer: this.blockValidationViewer,
59
59
  context: this.context,
@@ -98,13 +98,24 @@ __name(buildTelemetryConfig, "buildTelemetryConfig");
98
98
  // src/shared/config/actors/Api.ts
99
99
  import { zodAsFactory, zodIsFactory, zodToFactory } from "@xylabs/sdk-js";
100
100
  import { BaseConfigContextZod, HostActorConfigZod } from "@xyo-network/xl1-sdk";
101
+ import { globalRegistry as globalRegistry2, z as z2 } from "zod";
102
+
103
+ // src/shared/config/actors/accountIndex.ts
101
104
  import { globalRegistry, z } from "zod";
102
- var ApiConfigZod = HostActorConfigZod.extend(z.object({
103
- initRewardsCache: z.union([
104
- z.number(),
105
- z.string(),
106
- z.boolean()
107
- ]).transform((v) => v !== "0" && v !== "false" && v !== false && v != 0).default(true).register(globalRegistry, {
105
+ var ActorAccountIndexZod = /* @__PURE__ */ __name((title) => z.coerce.number().int().min(0).optional().register(globalRegistry, {
106
+ description: "Account index derived from the actor wallet phrase. Defaults to 0 for actor mnemonics and to the actor-specific shared index for the root mnemonic.",
107
+ title,
108
+ type: "number"
109
+ }), "ActorAccountIndexZod");
110
+
111
+ // src/shared/config/actors/Api.ts
112
+ var ApiConfigZod = HostActorConfigZod.extend(z2.object({
113
+ accountIndex: ActorAccountIndexZod("api.accountIndex"),
114
+ initRewardsCache: z2.union([
115
+ z2.number(),
116
+ z2.string(),
117
+ z2.boolean()
118
+ ]).transform((v) => v !== "0" && v !== "false" && v !== false && v != 0).default(true).register(globalRegistry2, {
108
119
  description: "Whether to initialize the rewards cache on startup",
109
120
  title: "api.initRewardsCache",
110
121
  type: "boolean"
@@ -123,7 +134,7 @@ var toApiConfigContext = zodToFactory(ApiConfigContext, "toApiConfigContext");
123
134
  // src/shared/config/actors/Bridge.ts
124
135
  import { AddressZod, HexZod, toAddress, toHex, zodAsFactory as zodAsFactory2, zodIsFactory as zodIsFactory2, zodToFactory as zodToFactory2 } from "@xylabs/sdk-js";
125
136
  import { AttoXL1ConvertFactor, BaseConfigContextZod as BaseConfigContextZod2, HostActorConfigZod as HostActorConfigZod2, XL1 } from "@xyo-network/xl1-sdk";
126
- import { globalRegistry as globalRegistry2, z as z2 } from "zod";
137
+ import { globalRegistry as globalRegistry3, z as z3 } from "zod";
127
138
  var DEFAULT_FIXED_FEE = toHex(XL1(1000n) * AttoXL1ConvertFactor.xl1);
128
139
  var DEFAULT_VARIABLE_FEE_BASIS_POINTS = 300;
129
140
  var DEFAULT_HARDHAT_BRIDGE_CONTRACT = toAddress("2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6");
@@ -132,83 +143,84 @@ var DEFAULT_HARDHAT_REMOTE_CHAIN_WALLET_PRIVATE_KEY = toHex("0xac0974bec39a17e36
132
143
  var DEFAULT_HARDHAT_TOKEN_CONTRACT = toAddress("5FbDB2315678afecb367f032d93F642f64180aa3");
133
144
  var DEFAULT_MAX_BRIDGE_AMOUNT = toHex(XL1(1000000n) * AttoXL1ConvertFactor.xl1);
134
145
  var DEFAULT_MIN_BRIDGE_AMOUNT = toHex(XL1(1500n) * AttoXL1ConvertFactor.xl1);
135
- var BasisPointsZod = z2.coerce.number().int().nonnegative().max(1e4);
146
+ var BasisPointsZod = z3.coerce.number().int().nonnegative().max(1e4);
136
147
  var BridgeConfigZod = HostActorConfigZod2.extend({
137
- escrowAddress: AddressZod.optional().register(globalRegistry2, {
148
+ accountIndex: ActorAccountIndexZod("bridge.accountIndex"),
149
+ escrowAddress: AddressZod.optional().register(globalRegistry3, {
138
150
  description: "Address to which bridge escrow will be sent",
139
151
  title: "bridge.escrowAddress",
140
152
  type: "string"
141
153
  }),
142
- feesAddress: AddressZod.optional().register(globalRegistry2, {
154
+ feesAddress: AddressZod.optional().register(globalRegistry3, {
143
155
  description: "Address to which bridge fees will be sent",
144
156
  title: "bridge.feesAddress",
145
157
  type: "string"
146
158
  }),
147
- feeFixed: HexZod.default(DEFAULT_FIXED_FEE).register(globalRegistry2, {
159
+ feeFixed: HexZod.default(DEFAULT_FIXED_FEE).register(globalRegistry3, {
148
160
  default: DEFAULT_FIXED_FEE,
149
161
  description: "Fixed fee (in AttoXL1) applied to bridge transfers",
150
162
  title: "bridge.feeFixed",
151
163
  type: "bigint"
152
164
  }),
153
- feeRateBasisPoints: BasisPointsZod.default(DEFAULT_VARIABLE_FEE_BASIS_POINTS).register(globalRegistry2, {
165
+ feeRateBasisPoints: BasisPointsZod.default(DEFAULT_VARIABLE_FEE_BASIS_POINTS).register(globalRegistry3, {
154
166
  default: DEFAULT_VARIABLE_FEE_BASIS_POINTS,
155
167
  description: "Variable rate fee (in basis points where 1 bps = 0.01%) applied to bridge transfers",
156
168
  title: "bridge.feeRateBasisPoints",
157
169
  type: "number"
158
170
  }),
159
- maxBridgeAmount: HexZod.default(DEFAULT_MAX_BRIDGE_AMOUNT).register(globalRegistry2, {
171
+ maxBridgeAmount: HexZod.default(DEFAULT_MAX_BRIDGE_AMOUNT).register(globalRegistry3, {
160
172
  default: DEFAULT_MAX_BRIDGE_AMOUNT,
161
173
  description: "Maximum amount allowed for a bridge transfer",
162
174
  title: "bridge.maxBridgeAmount",
163
175
  type: "string"
164
176
  }),
165
- minBridgeAmount: HexZod.default(DEFAULT_MIN_BRIDGE_AMOUNT).register(globalRegistry2, {
177
+ minBridgeAmount: HexZod.default(DEFAULT_MIN_BRIDGE_AMOUNT).register(globalRegistry3, {
166
178
  default: DEFAULT_MIN_BRIDGE_AMOUNT,
167
179
  description: "Minimum amount required for a bridge transfer",
168
180
  title: "bridge.minBridgeAmount",
169
181
  type: "string"
170
182
  }),
171
- redisHost: z2.string().default("localhost").register(globalRegistry2, {
183
+ redisHost: z3.string().default("localhost").register(globalRegistry3, {
172
184
  default: "localhost",
173
185
  description: "Host for the Bridge Redis instance",
174
186
  title: "bridge.redisHost",
175
187
  type: "string"
176
188
  }),
177
- redisPort: z2.coerce.number().int().positive().default(6379).register(globalRegistry2, {
189
+ redisPort: z3.coerce.number().int().positive().default(6379).register(globalRegistry3, {
178
190
  default: 6379,
179
191
  description: "Port for the Bridge Redis instance",
180
192
  title: "bridge.redisPort",
181
193
  type: "number"
182
194
  }),
183
- remoteBridgeContractAddress: AddressZod.default(DEFAULT_HARDHAT_BRIDGE_CONTRACT).register(globalRegistry2, {
195
+ remoteBridgeContractAddress: AddressZod.default(DEFAULT_HARDHAT_BRIDGE_CONTRACT).register(globalRegistry3, {
184
196
  default: DEFAULT_HARDHAT_BRIDGE_CONTRACT,
185
197
  description: "Hex representation of remote token address used for bridging",
186
198
  title: "bridge.remoteBridgeContractAddress",
187
199
  type: "string"
188
200
  }),
189
- remoteChainId: HexZod.default(DEFAULT_HARDHAT_CHAIN_ID).register(globalRegistry2, {
201
+ remoteChainId: HexZod.default(DEFAULT_HARDHAT_CHAIN_ID).register(globalRegistry3, {
190
202
  default: DEFAULT_HARDHAT_CHAIN_ID,
191
203
  description: "Remote chain ID",
192
204
  title: "bridge.remoteChainId",
193
205
  type: "string"
194
206
  }),
195
- remoteTokenAddress: HexZod.default(DEFAULT_HARDHAT_TOKEN_CONTRACT).register(globalRegistry2, {
207
+ remoteTokenAddress: HexZod.default(DEFAULT_HARDHAT_TOKEN_CONTRACT).register(globalRegistry3, {
196
208
  default: DEFAULT_HARDHAT_TOKEN_CONTRACT,
197
209
  description: "Hex representation of remote token address used for bridging",
198
210
  title: "bridge.remoteTokenAddress",
199
211
  type: "string"
200
212
  }),
201
- remoteChainWalletPrivateKey: HexZod.default(DEFAULT_HARDHAT_REMOTE_CHAIN_WALLET_PRIVATE_KEY).register(globalRegistry2, {
213
+ remoteChainWalletPrivateKey: HexZod.default(DEFAULT_HARDHAT_REMOTE_CHAIN_WALLET_PRIVATE_KEY).register(globalRegistry3, {
202
214
  description: "Private key for the wallet to use for the remote chain wallet",
203
215
  title: "bridge.remoteChainWalletPrivateKey",
204
216
  type: "string"
205
217
  }),
206
- xl1ChainId: HexZod.optional().register(globalRegistry2, {
218
+ xl1ChainId: HexZod.optional().register(globalRegistry3, {
207
219
  description: "XL1 chain id used for bridging",
208
220
  title: "bridge.xl1ChainId",
209
221
  type: "string"
210
222
  }),
211
- xl1TokenAddress: HexZod.optional().register(globalRegistry2, {
223
+ xl1TokenAddress: HexZod.optional().register(globalRegistry3, {
212
224
  description: "XL1 token address used for bridging",
213
225
  title: "bridge.xl1TokenAddress",
214
226
  type: "string"
@@ -239,11 +251,12 @@ var toBridgeConfigContext = zodToFactory2(BridgeConfigContext, "toBridgeConfigCo
239
251
  // src/shared/config/actors/Mempool.ts
240
252
  import { zodAsFactory as zodAsFactory3, zodIsFactory as zodIsFactory3, zodToFactory as zodToFactory3 } from "@xylabs/sdk-js";
241
253
  import { BaseConfigContextZod as BaseConfigContextZod3, HostActorConfigZod as HostActorConfigZod3 } from "@xyo-network/xl1-sdk";
242
- import { globalRegistry as globalRegistry3, z as z3 } from "zod";
254
+ import { globalRegistry as globalRegistry4, z as z4 } from "zod";
243
255
  var MempoolConfigZod = HostActorConfigZod3.extend({
244
- enabled: z3.union([
245
- z3.string(),
246
- z3.boolean()
256
+ accountIndex: ActorAccountIndexZod("mempool.accountIndex"),
257
+ enabled: z4.union([
258
+ z4.string(),
259
+ z4.boolean()
247
260
  ]).default("false").transform((val, ctx) => {
248
261
  if (typeof val === "boolean") return val;
249
262
  const normalized = val.toLowerCase().trim();
@@ -264,8 +277,8 @@ var MempoolConfigZod = HostActorConfigZod3.extend({
264
277
  expected: "boolean",
265
278
  message: `Invalid boolean value: "${val}". Use true/false, 1/0, yes/no.`
266
279
  });
267
- return z3.NEVER;
268
- }).register(globalRegistry3, {
280
+ return z4.NEVER;
281
+ }).register(globalRegistry4, {
269
282
  default: "false",
270
283
  description: "Enable the Mempool",
271
284
  title: "mempool.enabled",
@@ -285,42 +298,43 @@ var toMempoolConfigContext = zodToFactory3(MempoolConfigContext, "toMempoolConfi
285
298
  // src/shared/config/actors/Producer.ts
286
299
  import { AddressZod as AddressZod2, asAddress, zodAsFactory as zodAsFactory4, zodIsFactory as zodIsFactory4, zodToFactory as zodToFactory4 } from "@xylabs/sdk-js";
287
300
  import { ActorConfigZod, BaseConfigContextZod as BaseConfigContextZod4 } from "@xyo-network/xl1-sdk";
288
- import { globalRegistry as globalRegistry4, z as z4 } from "zod";
301
+ import { globalRegistry as globalRegistry5, z as z5 } from "zod";
289
302
  var DEFAULT_BLOCK_PRODUCTION_CHECK_INTERVAL = 1e4;
290
- var ProducerConfigZod = ActorConfigZod.extend(z4.object({
291
- allowlist: z4.preprocess((val) => {
303
+ var ProducerConfigZod = ActorConfigZod.extend(z5.object({
304
+ accountIndex: ActorAccountIndexZod("producer.accountIndex"),
305
+ allowlist: z5.preprocess((val) => {
292
306
  if (typeof val === "string") {
293
307
  return val.split(",").map((s) => asAddress(s.trim()));
294
308
  }
295
309
  return val;
296
- }, z4.array(AddressZod2).optional().register(globalRegistry4, {
310
+ }, z5.array(AddressZod2).optional().register(globalRegistry5, {
297
311
  description: "List of allowed producer addresses, if undefined anyone can participate",
298
312
  title: "allowlist",
299
313
  type: "array"
300
314
  })),
301
- blockProductionCheckInterval: z4.coerce.number().default(DEFAULT_BLOCK_PRODUCTION_CHECK_INTERVAL).register(globalRegistry4, {
315
+ blockProductionCheckInterval: z5.coerce.number().default(DEFAULT_BLOCK_PRODUCTION_CHECK_INTERVAL).register(globalRegistry5, {
302
316
  description: "The interval time (in milliseconds) between block production attempts",
303
317
  title: "producer.blockProductionCheckInterval",
304
318
  type: "number"
305
319
  }),
306
- disableIntentRedeclaration: z4.boolean().optional().register(globalRegistry4, {
320
+ disableIntentRedeclaration: z5.boolean().optional().register(globalRegistry5, {
307
321
  description: "Should the producer skip redeclaring their intent to continue producing blocks",
308
322
  title: "producer.disableIntentRedeclaration",
309
323
  type: "boolean"
310
324
  }),
311
- heartbeatInterval: z4.coerce.number().default(36e5).register(globalRegistry4, {
325
+ heartbeatInterval: z5.coerce.number().default(36e5).register(globalRegistry5, {
312
326
  description: "The number of milliseconds between heartbeats if no blocks are produced",
313
327
  title: "producer.heartbeatInterval",
314
328
  type: "number"
315
329
  }),
316
330
  // TODO: BigInt schema
317
- minStake: z4.coerce.number().default(1).register(globalRegistry4, {
331
+ minStake: z5.coerce.number().default(1).register(globalRegistry5, {
318
332
  description: "Minimum stake required to be a Producer",
319
333
  title: "producer.minStake",
320
334
  type: "number"
321
335
  }),
322
336
  // TODO: Address schema
323
- rewardAddress: z4.string().optional().register(globalRegistry4, {
337
+ rewardAddress: z5.string().optional().register(globalRegistry5, {
324
338
  description: "Address to receive block rewards",
325
339
  title: "producer.rewardAddress",
326
340
  type: "string"
@@ -339,7 +353,9 @@ var toProducerConfigContext = zodToFactory4(ProducerConfigContext, "toProducerCo
339
353
  // src/shared/config/actors/RewardRedemption.ts
340
354
  import { zodAsFactory as zodAsFactory5, zodIsFactory as zodIsFactory5, zodToFactory as zodToFactory5 } from "@xylabs/sdk-js";
341
355
  import { BaseConfigContextZod as BaseConfigContextZod5, HostActorConfigZod as HostActorConfigZod4 } from "@xyo-network/xl1-sdk";
342
- var RewardRedemptionConfigZod = HostActorConfigZod4.extend({});
356
+ var RewardRedemptionConfigZod = HostActorConfigZod4.extend({
357
+ accountIndex: ActorAccountIndexZod("rewardRedemption.accountIndex")
358
+ });
343
359
  var isRewardRedemptionConfig = zodIsFactory5(RewardRedemptionConfigZod);
344
360
  var asRewardRedemptionConfig = zodAsFactory5(RewardRedemptionConfigZod, "asRewardRedemptionConfig");
345
361
  var toRewardRedemptionConfig = zodToFactory5(RewardRedemptionConfigZod, "toRewardRedemptionConfig");
@@ -353,10 +369,11 @@ var toRewardRedemptionConfigContext = zodToFactory5(RewardRedemptionConfigContex
353
369
  // src/shared/config/actors/Validator.ts
354
370
  import { AddressZod as AddressZod3, zodAsFactory as zodAsFactory6, zodIsFactory as zodIsFactory6, zodToFactory as zodToFactory6 } from "@xylabs/sdk-js";
355
371
  import { BaseConfigContextZod as BaseConfigContextZod6, HostActorConfigZod as HostActorConfigZod5 } from "@xyo-network/xl1-sdk";
356
- import { z as z5 } from "zod";
372
+ import { z as z6 } from "zod";
357
373
  var ValidatorConfigZod = HostActorConfigZod5.extend({
358
- allowedProducers: z5.array(AddressZod3).optional(),
359
- minCandidates: z5.number().int().min(0).optional()
374
+ accountIndex: ActorAccountIndexZod("validator.accountIndex"),
375
+ allowedProducers: z6.array(AddressZod3).optional(),
376
+ minCandidates: z6.number().int().min(0).optional()
360
377
  });
361
378
  var isValidatorConfig = zodIsFactory6(ValidatorConfigZod);
362
379
  var asValidatorConfig = zodAsFactory6(ValidatorConfigZod, "asValidatorConfig");
@@ -433,26 +450,279 @@ var ServiceLifetime = {
433
450
  };
434
451
 
435
452
  // src/shared/init/initActorAccount.ts
436
- import { isDefined, isUndefined } from "@xylabs/sdk-js";
437
- import { HDWallet } from "@xyo-network/sdk-js";
438
- import { ADDRESS_INDEX, generateXyoBaseWalletFromPhrase } from "@xyo-network/xl1-sdk";
453
+ import { isDefined } from "@xylabs/sdk-js";
454
+
455
+ // src/shared/init/walletResolution.ts
456
+ import { DEFAULT_WALLET_PATH, generateXyoBaseWalletFromPhrase } from "@xyo-network/xl1-sdk";
457
+ var BUILT_IN_DEV_MNEMONIC = "crane ribbon cook cousin tobacco vital moral protect merit knock veteran hint knee ocean nurse";
458
+ var INSECURE_GENESIS_REWARD_MNEMONIC = "test test test test test test test test test test test junk";
459
+ var GENESIS_REWARD_AMOUNT = 20000000000000000000000n;
460
+ var ATTO_XL1_PER_XL1 = 1000000000000000000n;
461
+ var ROOT_WALLET_RUNTIME_ID = "_root";
462
+ var SHARED_ACCOUNT_REPORT_COUNT = 10;
463
+ var RESERVED_ACTOR_INDEX = {
464
+ [ROOT_WALLET_RUNTIME_ID]: 0,
465
+ api: 4,
466
+ bridge: 2,
467
+ mempool: 5,
468
+ producer: 1,
469
+ rewardRedemption: 3,
470
+ validator: 6
471
+ };
472
+ var ACTOR_LABELS = {
473
+ [ROOT_WALLET_RUNTIME_ID]: "root/local-node",
474
+ api: "api",
475
+ bridge: "bridge",
476
+ mempool: "mempool",
477
+ producer: "producer",
478
+ rewardRedemption: "rewardRedemption",
479
+ validator: "validator"
480
+ };
481
+ var activeWalletReport;
482
+ function getAccountLabel(actorName) {
483
+ return ACTOR_LABELS[actorName] ?? actorName;
484
+ }
485
+ __name(getAccountLabel, "getAccountLabel");
486
+ function clearResolvedWalletReport() {
487
+ activeWalletReport = void 0;
488
+ }
489
+ __name(clearResolvedWalletReport, "clearResolvedWalletReport");
490
+ function getReservedActorIndex(actorName) {
491
+ return RESERVED_ACTOR_INDEX[actorName] ?? 0;
492
+ }
493
+ __name(getReservedActorIndex, "getReservedActorIndex");
494
+ function getBuiltInDevMnemonic() {
495
+ return BUILT_IN_DEV_MNEMONIC;
496
+ }
497
+ __name(getBuiltInDevMnemonic, "getBuiltInDevMnemonic");
498
+ function getInsecureGenesisRewardMnemonic() {
499
+ return INSECURE_GENESIS_REWARD_MNEMONIC;
500
+ }
501
+ __name(getInsecureGenesisRewardMnemonic, "getInsecureGenesisRewardMnemonic");
502
+ function resolveRootWallet(configuration) {
503
+ const mnemonic = configuration.mnemonic ?? BUILT_IN_DEV_MNEMONIC;
504
+ const isBuiltInDevMnemonic = mnemonic === BUILT_IN_DEV_MNEMONIC;
505
+ return {
506
+ basePath: DEFAULT_WALLET_PATH,
507
+ isBuiltInDevMnemonic,
508
+ mnemonic,
509
+ mnemonicKind: isBuiltInDevMnemonic ? "built-in-dev" : "configured-root"
510
+ };
511
+ }
512
+ __name(resolveRootWallet, "resolveRootWallet");
513
+ async function resolveWalletMetadata({ accountIndex, actorName, mnemonic, mnemonicKind, source }) {
514
+ const wallet = await generateXyoBaseWalletFromPhrase(mnemonic);
515
+ const derivationPath = `${DEFAULT_WALLET_PATH}/${accountIndex}`;
516
+ const account = await wallet.derivePath(`${accountIndex}`);
517
+ return {
518
+ accountIndex,
519
+ actorName,
520
+ address: account.address,
521
+ derivationPath,
522
+ label: getAccountLabel(actorName),
523
+ mnemonic,
524
+ mnemonicKind,
525
+ privateKey: account.privateKey,
526
+ source,
527
+ usesBuiltInDevMnemonic: mnemonic === BUILT_IN_DEV_MNEMONIC
528
+ };
529
+ }
530
+ __name(resolveWalletMetadata, "resolveWalletMetadata");
531
+ async function resolveActorWallet(actorName, actorConfig, root) {
532
+ const actorMnemonic = actorConfig?.mnemonic;
533
+ const accountIndex = actorConfig?.accountIndex;
534
+ return await resolveWalletMetadata(actorMnemonic ? {
535
+ accountIndex: accountIndex ?? 0,
536
+ actorName,
537
+ mnemonic: actorMnemonic,
538
+ mnemonicKind: "configured-actor",
539
+ source: "actor"
540
+ } : {
541
+ accountIndex: accountIndex ?? getReservedActorIndex(actorName),
542
+ actorName,
543
+ mnemonic: root.mnemonic,
544
+ mnemonicKind: root.mnemonicKind,
545
+ source: "root"
546
+ });
547
+ }
548
+ __name(resolveActorWallet, "resolveActorWallet");
549
+ async function resolveWalletReport(requestedActors, configuration) {
550
+ const root = resolveRootWallet(configuration);
551
+ const actorConfigMap = new Map(configuration.actors.map((actor) => [
552
+ actor.name,
553
+ actor
554
+ ]));
555
+ const resolvedActors = await Promise.all(requestedActors.map(async (actorName) => await resolveActorWallet(actorName, actorConfigMap.get(actorName), root)));
556
+ const labelMap = /* @__PURE__ */ new Map([
557
+ [
558
+ 0,
559
+ [
560
+ getAccountLabel(ROOT_WALLET_RUNTIME_ID)
561
+ ]
562
+ ]
563
+ ]);
564
+ for (const actor of resolvedActors) {
565
+ if (actor.source !== "root") continue;
566
+ const labels = labelMap.get(actor.accountIndex) ?? [];
567
+ labels.push(actor.label);
568
+ labelMap.set(actor.accountIndex, labels);
569
+ }
570
+ const sharedAccounts = await Promise.all(Array.from({
571
+ length: SHARED_ACCOUNT_REPORT_COUNT
572
+ }, (_, index) => index).map(async (accountIndex) => {
573
+ const account = await resolveWalletMetadata({
574
+ accountIndex,
575
+ actorName: ROOT_WALLET_RUNTIME_ID,
576
+ mnemonic: root.mnemonic,
577
+ mnemonicKind: root.mnemonicKind,
578
+ source: "root"
579
+ });
580
+ const labels = labelMap.get(accountIndex);
581
+ return {
582
+ ...account,
583
+ label: labels?.join(", ") ?? `shared[${accountIndex}]`
584
+ };
585
+ }));
586
+ const insecureGenesisRewardAccounts = configuration.chain.genesisRewardAddress ? void 0 : await Promise.all(Array.from({
587
+ length: SHARED_ACCOUNT_REPORT_COUNT
588
+ }, (_, index) => index).map(async (accountIndex) => {
589
+ const account = await resolveWalletMetadata({
590
+ accountIndex,
591
+ actorName: "genesisReward",
592
+ mnemonic: INSECURE_GENESIS_REWARD_MNEMONIC,
593
+ mnemonicKind: "configured-actor",
594
+ source: "actor"
595
+ });
596
+ return {
597
+ ...account,
598
+ label: accountIndex === 0 ? "genesisRewardAddress" : `genesisReward[${accountIndex}]`
599
+ };
600
+ }));
601
+ return {
602
+ actorSpecificAccounts: resolvedActors.filter((actor) => actor.source === "actor"),
603
+ insecureGenesisRewardAccounts,
604
+ requestedActors: [
605
+ ...requestedActors
606
+ ],
607
+ root,
608
+ sharedAccounts
609
+ };
610
+ }
611
+ __name(resolveWalletReport, "resolveWalletReport");
612
+ async function initializeResolvedWalletReport(requestedActors, configuration) {
613
+ activeWalletReport = await resolveWalletReport(requestedActors, configuration);
614
+ return activeWalletReport;
615
+ }
616
+ __name(initializeResolvedWalletReport, "initializeResolvedWalletReport");
617
+ function getResolvedWalletReport() {
618
+ return activeWalletReport;
619
+ }
620
+ __name(getResolvedWalletReport, "getResolvedWalletReport");
621
+ function formatSharedAccount(account, showPrivateKey) {
622
+ const lines = [
623
+ `[${account.accountIndex}] ${account.label}`,
624
+ `source: ${account.mnemonicKind === "built-in-dev" ? "built-in dev mnemonic" : "configured root mnemonic"}`,
625
+ `path: ${account.derivationPath}`,
626
+ `address: ${account.address}`
627
+ ];
628
+ if (showPrivateKey) lines.push(`privateKey: ${account.privateKey ?? "unavailable"}`);
629
+ return lines.join("\n");
630
+ }
631
+ __name(formatSharedAccount, "formatSharedAccount");
632
+ function formatActorSpecificAccount(account) {
633
+ return [
634
+ account.label,
635
+ "source: actor mnemonic",
636
+ `path: ${account.derivationPath}`,
637
+ `address: ${account.address}`
638
+ ].join("\n");
639
+ }
640
+ __name(formatActorSpecificAccount, "formatActorSpecificAccount");
641
+ function formatGenesisRewardAccount(account) {
642
+ const balance = account.accountIndex === 0 ? GENESIS_REWARD_AMOUNT / ATTO_XL1_PER_XL1 : 0n;
643
+ return [
644
+ `[${account.accountIndex}] ${account.label}`,
645
+ `path: ${account.derivationPath}`,
646
+ `address: ${account.address}`,
647
+ `privateKey: ${account.privateKey ?? "unavailable"}`,
648
+ `balance: ${balance.toString()} XL1`
649
+ ].join("\n");
650
+ }
651
+ __name(formatGenesisRewardAccount, "formatGenesisRewardAccount");
652
+ function formatWalletReport(report) {
653
+ const sections = [];
654
+ const showSecrets = report.root.isBuiltInDevMnemonic;
655
+ sections.push(showSecrets ? "Development wallet detected." : "Wallet summary");
656
+ if (showSecrets) {
657
+ sections.push([
658
+ "DEVELOPMENT WALLET WARNING",
659
+ "",
660
+ "XL1 is using the built-in development mnemonic.",
661
+ "This mnemonic is fixed, public, and does not change between runs.",
662
+ "The addresses and private keys below are unsafe and must never be used for real funds, production systems, or shared environments.",
663
+ "Anyone with this information can fully control these accounts.",
664
+ "",
665
+ "Mnemonic:",
666
+ report.root.mnemonic
667
+ ].join("\n"));
668
+ }
669
+ sections.push([
670
+ `Shared wallet accounts from ${report.root.basePath}:`,
671
+ "",
672
+ report.sharedAccounts.map((account) => formatSharedAccount(account, showSecrets)).join("\n\n")
673
+ ].join("\n"));
674
+ if (report.actorSpecificAccounts.length > 0) {
675
+ sections.push([
676
+ "Actor-specific wallet accounts:",
677
+ "",
678
+ report.actorSpecificAccounts.map((account) => formatActorSpecificAccount(account)).join("\n\n")
679
+ ].join("\n"));
680
+ }
681
+ if (report.insecureGenesisRewardAccounts) {
682
+ sections.push([
683
+ "INSECURE GENESIS REWARD WALLET WARNING",
684
+ "",
685
+ "XL1 is using a public, insecure fallback wallet for the genesis reward address.",
686
+ "This phrase is intentionally unsafe and must never be used for real funds, production systems, or shared environments.",
687
+ "Anyone with this information can fully control the genesis reward wallet.",
688
+ "",
689
+ "Genesis reward phrase:",
690
+ INSECURE_GENESIS_REWARD_MNEMONIC,
691
+ "",
692
+ `The genesis reward is sent to index 0 and starts with ${(GENESIS_REWARD_AMOUNT / ATTO_XL1_PER_XL1).toString()} XL1.`,
693
+ "",
694
+ `Genesis reward wallet accounts from ${DEFAULT_WALLET_PATH}:`,
695
+ "",
696
+ report.insecureGenesisRewardAccounts.map((account) => formatGenesisRewardAccount(account)).join("\n\n")
697
+ ].join("\n"));
698
+ }
699
+ return sections.join("\n\n");
700
+ }
701
+ __name(formatWalletReport, "formatWalletReport");
702
+ async function resolveGenesisRewardAddress(config) {
703
+ if (config.chain.genesisRewardAddress) return config.chain.genesisRewardAddress;
704
+ const wallet = await generateXyoBaseWalletFromPhrase(INSECURE_GENESIS_REWARD_MNEMONIC);
705
+ const account = await wallet.derivePath("0");
706
+ return account.address;
707
+ }
708
+ __name(resolveGenesisRewardAddress, "resolveGenesisRewardAddress");
709
+ async function resolveWalletForActor(actorName, mnemonic, accountIndex) {
710
+ const fromReport = activeWalletReport ? actorName === ROOT_WALLET_RUNTIME_ID ? activeWalletReport.sharedAccounts.find((account) => account.accountIndex === 0) : activeWalletReport.actorSpecificAccounts.find((account) => account.actorName === actorName) ?? activeWalletReport.sharedAccounts.find((account) => account.actorName === actorName || account.label.split(", ").includes(getAccountLabel(actorName))) : void 0;
711
+ const resolvedMnemonic = fromReport?.mnemonic ?? mnemonic ?? BUILT_IN_DEV_MNEMONIC;
712
+ const resolvedAccountIndex = fromReport?.accountIndex ?? accountIndex ?? 0;
713
+ const wallet = await generateXyoBaseWalletFromPhrase(resolvedMnemonic);
714
+ return await wallet.derivePath(`${resolvedAccountIndex}`);
715
+ }
716
+ __name(resolveWalletForActor, "resolveWalletForActor");
717
+
718
+ // src/shared/init/initActorAccount.ts
439
719
  var actorAccountSingletons = {};
440
720
  async function initActorAccount({ config, logger }) {
441
721
  const actorName = config.name;
442
722
  if (isDefined(actorAccountSingletons[actorName])) return actorAccountSingletons[actorName];
443
- let walletPhrase = config.mnemonic;
444
- if (isUndefined(walletPhrase)) {
445
- logger?.warn(`[${actorName}] No wallet mnemonic specified!`);
446
- const randomMnemonic = HDWallet.generateMnemonic();
447
- logger?.warn(`[${actorName}] Using randomly generated mnemonic:
448
-
449
- ${randomMnemonic}
450
-
451
- `);
452
- walletPhrase = randomMnemonic;
453
- }
454
- const wallet = await generateXyoBaseWalletFromPhrase(walletPhrase);
455
- const account = await wallet.derivePath(ADDRESS_INDEX.XYO);
723
+ const accountIndex = "accountIndex" in config && typeof config.accountIndex === "number" ? config.accountIndex : void 0;
724
+ const account = await resolveWalletForActor(actorName, config.mnemonic, accountIndex);
725
+ logger?.debug(`[${actorName}] Using wallet address ${account.address}`);
456
726
  actorAccountSingletons[actorName] = account;
457
727
  return actorAccountSingletons[actorName];
458
728
  }
@@ -460,28 +730,18 @@ __name(initActorAccount, "initActorAccount");
460
730
 
461
731
  // src/shared/init/initActorSeedPhrase.ts
462
732
  import { assertEx, isString } from "@xylabs/sdk-js";
463
- import { HDWallet as HDWallet2 } from "@xyo-network/sdk-js";
464
733
  async function initActorSeedPhrase(context, bios) {
465
734
  const { logger, config } = context;
466
735
  const walletKind = config.name;
467
- const storedSeedPhrase = await bios.seedPhraseStore.get(walletKind);
468
- logger?.debug(`[API] Stored mnemonic: ${storedSeedPhrase}`);
469
- const { mnemonic } = config;
470
- if (isString(storedSeedPhrase) && isString(mnemonic)) {
471
- logger?.warn("[API] Stored mnemonic does not match supplied. Updating stored mnemonic to supplied.");
472
- await bios.seedPhraseStore.set(walletKind, mnemonic);
473
- } else {
474
- let seedPhrase;
475
- if (isString(mnemonic)) {
476
- seedPhrase = mnemonic;
477
- } else {
478
- seedPhrase = HDWallet2.generateMnemonic();
479
- logger?.log("[API] No mnemonic provided, using random mnemonic. This is not recommended for production use.");
480
- logger?.log(`[API] Mnemonic: ${seedPhrase}`);
481
- }
482
- await bios.seedPhraseStore.set(walletKind, seedPhrase);
483
- }
484
- return assertEx(await bios.seedPhraseStore.get(walletKind), () => "Unable to acquire mnemonic from bios");
736
+ void bios;
737
+ const report = getResolvedWalletReport();
738
+ const account = config.name === ROOT_WALLET_RUNTIME_ID ? report?.sharedAccounts.find((entry) => entry.accountIndex === 0) : report?.actorSpecificAccounts.find((entry) => entry.actorName === config.name);
739
+ if (isString(account?.mnemonic)) return account.mnemonic;
740
+ if (isString(report?.root.mnemonic)) return report.root.mnemonic;
741
+ if (isString(config.mnemonic)) return config.mnemonic;
742
+ const fallback = getBuiltInDevMnemonic();
743
+ logger?.debug(`[${walletKind}] Falling back to built-in development mnemonic`);
744
+ return assertEx(fallback, () => "Unable to resolve mnemonic");
485
745
  }
486
746
  __name(initActorSeedPhrase, "initActorSeedPhrase");
487
747
 
@@ -535,13 +795,10 @@ function initStatusReporter({ logger }) {
535
795
  __name(initStatusReporter, "initStatusReporter");
536
796
 
537
797
  // src/shared/init/initWallet.ts
538
- import { isDefined as isDefined2 } from "@xylabs/sdk-js";
539
- import { boot } from "@xyo-network/bios";
540
- import { HDWallet as HDWallet3 } from "@xyo-network/sdk-js";
541
798
  async function initActorWallet(context, mnemonic) {
542
- const bios = await boot();
543
- const seedPhrase = isDefined2(mnemonic) ? mnemonic : await initActorSeedPhrase(context, bios);
544
- return await HDWallet3.fromPhrase(seedPhrase);
799
+ const actorName = context.config.name === ROOT_WALLET_RUNTIME_ID ? ROOT_WALLET_RUNTIME_ID : context.config.name;
800
+ const accountIndex = "accountIndex" in context.config && typeof context.config.accountIndex === "number" ? context.config.accountIndex : void 0;
801
+ return await resolveWalletForActor(actorName, mnemonic ?? context.config.mnemonic, accountIndex);
545
802
  }
546
803
  __name(initActorWallet, "initActorWallet");
547
804
 
@@ -794,7 +1051,8 @@ async function initFinalizationArchivistIfNeeded(archivist, config, account) {
794
1051
  let possibleChainId = configuredChainId;
795
1052
  if (!possibleHead) {
796
1053
  possibleChainId = possibleChainId ?? (await Account.random()).address;
797
- const chain = await createBootstrapHead(account, possibleChainId, asAttoXL1(20000000000000000000000n), config.chain.genesisRewardAddress ?? account.address);
1054
+ const genesisRewardAddress = await resolveGenesisRewardAddress(config);
1055
+ const chain = await createBootstrapHead(account, possibleChainId, asAttoXL1(GENESIS_REWARD_AMOUNT), genesisRewardAddress);
798
1056
  const payloads = chain.flatMap((block) => flattenHydratedBlock(block));
799
1057
  await archivist.insert(payloads);
800
1058
  }
@@ -830,7 +1088,7 @@ import { assertEx as assertEx5 } from "@xylabs/sdk-js";
830
1088
  import { asArchivistInstance } from "@xyo-network/sdk-js";
831
1089
 
832
1090
  // src/node/manifest/getLocator.ts
833
- import { isDefined as isDefined3 } from "@xylabs/sdk-js";
1091
+ import { isDefined as isDefined2 } from "@xylabs/sdk-js";
834
1092
  import { MongoDBArchivistV2 as MongoDBArchivistV22, MongoDBArchivistV2Deletable } from "@xyo-network/archivist-mongodb";
835
1093
  import { ViewArchivist } from "@xyo-network/archivist-view";
836
1094
  import { initTelemetry as initTelemetry2 } from "@xyo-network/chain-telemetry";
@@ -850,7 +1108,7 @@ var getLocator = /* @__PURE__ */ __name(async ({ logger, config }) => {
850
1108
  port
851
1109
  }
852
1110
  });
853
- if (isDefined3(logger)) AbstractModule.defaultLogger = logger;
1111
+ if (isDefined2(logger)) AbstractModule.defaultLogger = logger;
854
1112
  const statusReporter = logger ? new LoggerModuleStatusReporter(logger) : void 0;
855
1113
  const locator = new ModuleFactoryLocator();
856
1114
  const mongoConfig = config.storage?.mongo;
@@ -1291,19 +1549,16 @@ function apiLocatorFromConfig(context, parent) {
1291
1549
  __name(apiLocatorFromConfig, "apiLocatorFromConfig");
1292
1550
 
1293
1551
  // src/node/config/locators/actors/bridgeLocatorFromConfig.ts
1294
- import { isDefined as isDefined4 } from "@xylabs/sdk-js";
1295
- import { HDWallet as HDWallet4 } from "@xyo-network/sdk-js";
1296
- import { ADDRESS_INDEX as ADDRESS_INDEX2, generateXyoBaseWalletFromPhrase as generateXyoBaseWalletFromPhrase2, JsonRpcAccountBalanceViewer as JsonRpcAccountBalanceViewer3, JsonRpcBlockViewer, JsonRpcFinalizationViewer, JsonRpcMempoolRunner, JsonRpcMempoolViewer, JsonRpcXyoRunner, JsonRpcXyoViewer, ProviderFactoryLocator as ProviderFactoryLocator3, RestDataLakeRunner, RestDataLakeViewer, SimpleStakeEventsViewer as SimpleStakeEventsViewer2, SimpleXyoConnectionRunner as SimpleXyoConnectionRunner2, SimpleXyoGatewayRunner, SimpleXyoRunner as SimpleXyoRunner2, SimpleXyoSigner as SimpleXyoSigner2 } from "@xyo-network/xl1-sdk";
1552
+ import { isDefined as isDefined3 } from "@xylabs/sdk-js";
1553
+ import { JsonRpcAccountBalanceViewer as JsonRpcAccountBalanceViewer3, JsonRpcBlockViewer, JsonRpcFinalizationViewer, JsonRpcMempoolRunner, JsonRpcMempoolViewer, JsonRpcXyoRunner, JsonRpcXyoViewer, ProviderFactoryLocator as ProviderFactoryLocator3, RestDataLakeRunner, RestDataLakeViewer, SimpleStakeEventsViewer as SimpleStakeEventsViewer2, SimpleXyoConnectionRunner as SimpleXyoConnectionRunner2, SimpleXyoGatewayRunner, SimpleXyoRunner as SimpleXyoRunner2, SimpleXyoSigner as SimpleXyoSigner2 } from "@xyo-network/xl1-sdk";
1297
1554
  async function bridgeLocatorFromConfig(context, parent) {
1298
1555
  const locator = new ProviderFactoryLocator3({
1299
1556
  ...context,
1300
1557
  locator: parent
1301
1558
  });
1302
1559
  const { config } = context;
1303
- const { dataLake, mnemonic } = config;
1304
- const walletPhrase = isDefined4(mnemonic) ? mnemonic : HDWallet4.generateMnemonic();
1305
- const wallet = await generateXyoBaseWalletFromPhrase2(walletPhrase);
1306
- const signerAccount = await wallet.derivePath(ADDRESS_INDEX2.XYO);
1560
+ const { dataLake } = config;
1561
+ const signerAccount = await initActorAccount(context);
1307
1562
  if (config.remote.rpc) {
1308
1563
  locator.registerMany([
1309
1564
  JsonRpcMempoolViewer.factory(JsonRpcMempoolViewer.dependencies, {}),
@@ -1315,7 +1570,7 @@ async function bridgeLocatorFromConfig(context, parent) {
1315
1570
  JsonRpcXyoViewer.factory(JsonRpcXyoViewer.dependencies, {})
1316
1571
  ]);
1317
1572
  }
1318
- if (isDefined4(dataLake)) {
1573
+ if (isDefined3(dataLake)) {
1319
1574
  const { driver } = dataLake;
1320
1575
  switch (driver) {
1321
1576
  case "rest": {
@@ -1518,7 +1773,7 @@ async function locatorsFromConfig(context, { actors, ...config }) {
1518
1773
  __name(locatorsFromConfig, "locatorsFromConfig");
1519
1774
 
1520
1775
  // src/node/config/tryParseConfig.ts
1521
- import { isDefined as isDefined5, isNull } from "@xylabs/sdk-js";
1776
+ import { isDefined as isDefined4, isNull } from "@xylabs/sdk-js";
1522
1777
  import { ConfigZod } from "@xyo-network/xl1-sdk";
1523
1778
  import { cosmiconfig } from "cosmiconfig";
1524
1779
  var configName = "xyo";
@@ -1530,11 +1785,15 @@ async function tryParseConfig(options) {
1530
1785
  // loaders: { '.ts': TypeScriptLoader() },
1531
1786
  searchPlaces
1532
1787
  });
1533
- const result = isDefined5(configPath) ? (await explorer.load(configPath))?.config : (await explorer.search())?.config;
1534
- if (isDefined5(result) && !isNull(result)) {
1788
+ const result = isDefined4(configPath) ? (await explorer.load(configPath))?.config : (await explorer.search())?.config;
1789
+ if (isDefined4(result) && !isNull(result)) {
1535
1790
  const section = result[configSection];
1536
- if (isDefined5(section) && typeof section === "object") {
1537
- return ConfigZod.loose().parse(section);
1791
+ if (isDefined4(section) && typeof section === "object") {
1792
+ const parsed = ConfigZod.loose().parse(section);
1793
+ return typeof section.mnemonic === "string" ? {
1794
+ ...parsed,
1795
+ mnemonic: section.mnemonic
1796
+ } : parsed;
1538
1797
  }
1539
1798
  }
1540
1799
  return ConfigZod.parse({});
@@ -1548,13 +1807,16 @@ export * from "@xyo-network/chain-orchestration-storage";
1548
1807
  export {
1549
1808
  ApiConfigContext,
1550
1809
  ApiConfigZod,
1810
+ BUILT_IN_DEV_MNEMONIC,
1551
1811
  BasisPointsZod,
1552
1812
  BridgeConfigContext,
1553
1813
  BridgeConfigZod,
1554
1814
  BridgeSettingsZod,
1555
1815
  DEFAULT_BLOCK_PRODUCTION_CHECK_INTERVAL,
1556
1816
  DefaultServiceProvider,
1817
+ GENESIS_REWARD_AMOUNT,
1557
1818
  GenericHost,
1819
+ INSECURE_GENESIS_REWARD_MNEMONIC,
1558
1820
  MempoolConfigContext,
1559
1821
  MempoolConfigZod,
1560
1822
  NodeManifest,
@@ -1563,8 +1825,10 @@ export {
1563
1825
  ProducerConfigContext,
1564
1826
  ProducerConfigZod,
1565
1827
  PublicChildManifests,
1828
+ ROOT_WALLET_RUNTIME_ID,
1566
1829
  RewardRedemptionConfigContext,
1567
1830
  RewardRedemptionConfigZod,
1831
+ SHARED_ACCOUNT_REPORT_COUNT,
1568
1832
  ServiceLifetime,
1569
1833
  ValidatorActor,
1570
1834
  ValidatorConfigContext,
@@ -1584,9 +1848,15 @@ export {
1584
1848
  basicRemoteRunnerLocator,
1585
1849
  basicRemoteViewerLocator,
1586
1850
  buildTelemetryConfig,
1851
+ clearResolvedWalletReport,
1587
1852
  contextFromConfigWithoutLocator,
1588
1853
  createProducerChainStakeIntentBlock,
1854
+ formatWalletReport,
1855
+ getBuiltInDevMnemonic,
1856
+ getInsecureGenesisRewardMnemonic,
1589
1857
  getLocator,
1858
+ getReservedActorIndex,
1859
+ getResolvedWalletReport,
1590
1860
  initActorAccount,
1591
1861
  initActorSeedPhrase,
1592
1862
  initActorWallet,
@@ -1599,6 +1869,7 @@ export {
1599
1869
  initServerNode,
1600
1870
  initStatusReporter,
1601
1871
  initTransferSummaryMap,
1872
+ initializeResolvedWalletReport,
1602
1873
  isApiConfig,
1603
1874
  isApiConfigContext,
1604
1875
  isBridgeConfig,
@@ -1615,6 +1886,11 @@ export {
1615
1886
  localLocatorFromConfig,
1616
1887
  locatorsFromConfig,
1617
1888
  mergeConfig,
1889
+ resolveActorWallet,
1890
+ resolveGenesisRewardAddress,
1891
+ resolveRootWallet,
1892
+ resolveWalletForActor,
1893
+ resolveWalletReport,
1618
1894
  rootLocatorFromConfig,
1619
1895
  telemetryContextFromConfig,
1620
1896
  toApiConfig,