@xyo-network/chain-orchestration 1.23.2 → 2.0.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/browser/index.mjs +95 -76
- package/dist/browser/index.mjs.map +3 -3
- package/dist/browser/node/config/tryParseConfig.d.ts +0 -1
- package/dist/browser/node/config/tryParseConfig.d.ts.map +1 -1
- package/dist/browser/shared/actor/v3/ActorV3.d.ts +7 -7
- package/dist/browser/shared/actor/v3/ActorV3.d.ts.map +1 -1
- package/dist/browser/shared/config/actors/Api.d.ts +57 -61
- package/dist/browser/shared/config/actors/Api.d.ts.map +1 -1
- package/dist/browser/shared/config/actors/Bridge.d.ts +86 -86
- package/dist/browser/shared/config/actors/Bridge.d.ts.map +1 -1
- package/dist/browser/shared/config/actors/Finalizer.d.ts +55 -61
- package/dist/browser/shared/config/actors/Finalizer.d.ts.map +1 -1
- package/dist/browser/shared/config/actors/Mempool.d.ts +57 -63
- package/dist/browser/shared/config/actors/Mempool.d.ts.map +1 -1
- package/dist/browser/shared/config/actors/Producer.d.ts +56 -62
- package/dist/browser/shared/config/actors/Producer.d.ts.map +1 -1
- package/dist/browser/shared/config/actors/RewardRedemption.d.ts +52 -58
- package/dist/browser/shared/config/actors/RewardRedemption.d.ts.map +1 -1
- package/dist/neutral/index.mjs +95 -76
- package/dist/neutral/index.mjs.map +3 -3
- package/dist/neutral/node/config/tryParseConfig.d.ts +0 -1
- package/dist/neutral/node/config/tryParseConfig.d.ts.map +1 -1
- package/dist/neutral/shared/actor/v3/ActorV3.d.ts +7 -7
- package/dist/neutral/shared/actor/v3/ActorV3.d.ts.map +1 -1
- package/dist/neutral/shared/config/actors/Api.d.ts +57 -61
- package/dist/neutral/shared/config/actors/Api.d.ts.map +1 -1
- package/dist/neutral/shared/config/actors/Bridge.d.ts +86 -86
- package/dist/neutral/shared/config/actors/Bridge.d.ts.map +1 -1
- package/dist/neutral/shared/config/actors/Finalizer.d.ts +55 -61
- package/dist/neutral/shared/config/actors/Finalizer.d.ts.map +1 -1
- package/dist/neutral/shared/config/actors/Mempool.d.ts +57 -63
- package/dist/neutral/shared/config/actors/Mempool.d.ts.map +1 -1
- package/dist/neutral/shared/config/actors/Producer.d.ts +56 -62
- package/dist/neutral/shared/config/actors/Producer.d.ts.map +1 -1
- package/dist/neutral/shared/config/actors/RewardRedemption.d.ts +52 -58
- package/dist/neutral/shared/config/actors/RewardRedemption.d.ts.map +1 -1
- package/dist/node/index.mjs +97 -77
- package/dist/node/index.mjs.map +3 -3
- package/dist/node/node/config/tryParseConfig.d.ts +0 -1
- package/dist/node/node/config/tryParseConfig.d.ts.map +1 -1
- package/dist/node/shared/actor/v3/ActorV3.d.ts +7 -7
- package/dist/node/shared/actor/v3/ActorV3.d.ts.map +1 -1
- package/dist/node/shared/config/actors/Api.d.ts +57 -61
- package/dist/node/shared/config/actors/Api.d.ts.map +1 -1
- package/dist/node/shared/config/actors/Bridge.d.ts +86 -86
- package/dist/node/shared/config/actors/Bridge.d.ts.map +1 -1
- package/dist/node/shared/config/actors/Finalizer.d.ts +55 -61
- package/dist/node/shared/config/actors/Finalizer.d.ts.map +1 -1
- package/dist/node/shared/config/actors/Mempool.d.ts +57 -63
- package/dist/node/shared/config/actors/Mempool.d.ts.map +1 -1
- package/dist/node/shared/config/actors/Producer.d.ts +56 -62
- package/dist/node/shared/config/actors/Producer.d.ts.map +1 -1
- package/dist/node/shared/config/actors/RewardRedemption.d.ts +52 -58
- package/dist/node/shared/config/actors/RewardRedemption.d.ts.map +1 -1
- package/package.json +86 -86
package/dist/node/index.mjs
CHANGED
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
IdLogger
|
|
20
20
|
} from "@xylabs/sdk-js";
|
|
21
21
|
import { Semaphore } from "async-mutex";
|
|
22
|
-
import z from "zod";
|
|
22
|
+
import { z } from "zod/mini";
|
|
23
23
|
var noopCounter = { add: () => {
|
|
24
24
|
} };
|
|
25
25
|
var noopUpDownCounter = { add: () => {
|
|
@@ -39,7 +39,7 @@ var ActorParamsV3Zod = z.object({
|
|
|
39
39
|
account: AccountInstanceZod,
|
|
40
40
|
locator: z.unknown(),
|
|
41
41
|
name: CreatableNameZod,
|
|
42
|
-
statusReporter:
|
|
42
|
+
statusReporter: z.optional(StatusReporterInstanceZod)
|
|
43
43
|
});
|
|
44
44
|
function createDeferred() {
|
|
45
45
|
let resolve;
|
|
@@ -255,11 +255,14 @@ import {
|
|
|
255
255
|
zodToFactory
|
|
256
256
|
} from "@xylabs/sdk-js";
|
|
257
257
|
import { BaseConfigContextZod, HostActorConfigZod } from "@xyo-network/xl1-sdk";
|
|
258
|
-
import { globalRegistry, z as z2 } from "zod";
|
|
259
|
-
var
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
258
|
+
import { globalRegistry, z as z2 } from "zod/mini";
|
|
259
|
+
var toBooleanDefaultTrue = (v) => v !== "0" && v !== "false" && v !== false && v !== 0;
|
|
260
|
+
var toBooleanDefaultFalse = (v) => v === "1" || v === "true" || v === true || v === 1;
|
|
261
|
+
var ApiConfigZod = z2.extend(HostActorConfigZod, {
|
|
262
|
+
initRewardsCache: z2._default(
|
|
263
|
+
z2.pipe(z2.union([z2.number(), z2.string(), z2.boolean()]), z2.transform(toBooleanDefaultTrue)),
|
|
264
|
+
true
|
|
265
|
+
).register(globalRegistry, {
|
|
263
266
|
description: "Whether to initialize the rewards cache on startup",
|
|
264
267
|
title: "api.initRewardsCache",
|
|
265
268
|
type: "boolean"
|
|
@@ -272,9 +275,10 @@ var ApiConfigZod = HostActorConfigZod.extend(z2.object({
|
|
|
272
275
|
* balancer for horizontal scaling. Requires `remote.rpc` to point at the
|
|
273
276
|
* upstream API/Finalizer/Mempool/Indexer surfaces.
|
|
274
277
|
*/
|
|
275
|
-
stateless: z2.
|
|
276
|
-
(
|
|
277
|
-
|
|
278
|
+
stateless: z2._default(
|
|
279
|
+
z2.pipe(z2.union([z2.number(), z2.string(), z2.boolean()]), z2.transform(toBooleanDefaultFalse)),
|
|
280
|
+
false
|
|
281
|
+
).register(globalRegistry, {
|
|
278
282
|
description: "Run the API actor as a stateless federation node (availableBackings: [network])",
|
|
279
283
|
title: "api.stateless",
|
|
280
284
|
type: "boolean"
|
|
@@ -293,18 +297,19 @@ var ApiConfigZod = HostActorConfigZod.extend(z2.object({
|
|
|
293
297
|
* `false` per environment once external clients (explorers, wallets, dApps)
|
|
294
298
|
* have moved their indexed-method calls to `/rpc/indexed`.
|
|
295
299
|
*/
|
|
296
|
-
legacyMixedRpc: z2.
|
|
297
|
-
(
|
|
298
|
-
|
|
300
|
+
legacyMixedRpc: z2._default(
|
|
301
|
+
z2.pipe(z2.union([z2.number(), z2.string(), z2.boolean()]), z2.transform(toBooleanDefaultTrue)),
|
|
302
|
+
true
|
|
303
|
+
).register(globalRegistry, {
|
|
299
304
|
description: "Serve the full XyoConnection at POST /rpc (no surface filter). Set false to enforce node-surface-only at /rpc; indexed methods always available at /rpc/indexed regardless.",
|
|
300
305
|
title: "api.legacyMixedRpc",
|
|
301
306
|
type: "boolean"
|
|
302
307
|
})
|
|
303
|
-
})
|
|
308
|
+
});
|
|
304
309
|
var isApiConfig = zodIsFactory(ApiConfigZod);
|
|
305
310
|
var asApiConfig = zodAsFactory(ApiConfigZod, "asApiConfig");
|
|
306
311
|
var toApiConfig = zodToFactory(ApiConfigZod, "toApiConfig");
|
|
307
|
-
var ApiConfigContext =
|
|
312
|
+
var ApiConfigContext = z2.extend(BaseConfigContextZod, { config: ApiConfigZod });
|
|
308
313
|
var isApiConfigContext = zodIsFactory(ApiConfigContext);
|
|
309
314
|
var asApiConfigContext = zodAsFactory(ApiConfigContext, "asApiConfigContext");
|
|
310
315
|
var toApiConfigContext = zodToFactory(ApiConfigContext, "toApiConfigContext");
|
|
@@ -325,7 +330,7 @@ import {
|
|
|
325
330
|
HostActorConfigZod as HostActorConfigZod2,
|
|
326
331
|
XL1
|
|
327
332
|
} from "@xyo-network/xl1-sdk";
|
|
328
|
-
import { globalRegistry as globalRegistry2, z as z3 } from "zod";
|
|
333
|
+
import { globalRegistry as globalRegistry2, z as z3 } from "zod/mini";
|
|
329
334
|
var DEFAULT_FIXED_FEE = toHex(XL1(1000n) * AttoXL1ConvertFactor.xl1);
|
|
330
335
|
var DEFAULT_VARIABLE_FEE_BASIS_POINTS = 300;
|
|
331
336
|
var DEFAULT_HARDHAT_BRIDGE_CONTRACT = toAddress("2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6");
|
|
@@ -335,103 +340,108 @@ var DEFAULT_HARDHAT_TOKEN_CONTRACT = toAddress("5FbDB2315678afecb367f032d93F642f
|
|
|
335
340
|
var DEFAULT_MAX_BRIDGE_AMOUNT = toHex(XL1(1000000n) * AttoXL1ConvertFactor.xl1);
|
|
336
341
|
var DEFAULT_MIN_BRIDGE_AMOUNT = toHex(XL1(1500n) * AttoXL1ConvertFactor.xl1);
|
|
337
342
|
var DEFAULT_SCANNER_INTERVAL_MS = 3e4;
|
|
338
|
-
var BasisPointsZod = z3.coerce.number().
|
|
339
|
-
var BridgeConfigZod =
|
|
340
|
-
escrowAddress:
|
|
343
|
+
var BasisPointsZod = z3.coerce.number().check(z3.multipleOf(1), z3.nonnegative(), z3.maximum(1e4));
|
|
344
|
+
var BridgeConfigZod = z3.extend(HostActorConfigZod2, {
|
|
345
|
+
escrowAddress: z3.optional(AddressZod).register(globalRegistry2, {
|
|
341
346
|
description: "Address to which bridge escrow will be sent",
|
|
342
347
|
title: "bridge.escrowAddress",
|
|
343
348
|
type: "string"
|
|
344
349
|
}),
|
|
345
|
-
feesAddress:
|
|
350
|
+
feesAddress: z3.optional(AddressZod).register(globalRegistry2, {
|
|
346
351
|
description: "Address to which bridge fees will be sent",
|
|
347
352
|
title: "bridge.feesAddress",
|
|
348
353
|
type: "string"
|
|
349
354
|
}),
|
|
350
|
-
feeFixed:
|
|
355
|
+
feeFixed: z3._default(HexZod, DEFAULT_FIXED_FEE).register(globalRegistry2, {
|
|
351
356
|
default: DEFAULT_FIXED_FEE,
|
|
352
357
|
description: "Fixed fee (in AttoXL1) applied to bridge transfers",
|
|
353
358
|
title: "bridge.feeFixed",
|
|
354
359
|
type: "bigint"
|
|
355
360
|
}),
|
|
356
|
-
feeRateBasisPoints:
|
|
361
|
+
feeRateBasisPoints: z3._default(BasisPointsZod, DEFAULT_VARIABLE_FEE_BASIS_POINTS).register(globalRegistry2, {
|
|
357
362
|
default: DEFAULT_VARIABLE_FEE_BASIS_POINTS,
|
|
358
363
|
description: "Variable rate fee (in basis points where 1 bps = 0.01%) applied to bridge transfers",
|
|
359
364
|
title: "bridge.feeRateBasisPoints",
|
|
360
365
|
type: "number"
|
|
361
366
|
}),
|
|
362
|
-
maxBridgeAmount:
|
|
367
|
+
maxBridgeAmount: z3._default(HexZod, DEFAULT_MAX_BRIDGE_AMOUNT).register(globalRegistry2, {
|
|
363
368
|
default: DEFAULT_MAX_BRIDGE_AMOUNT,
|
|
364
369
|
description: "Maximum amount allowed for a bridge transfer",
|
|
365
370
|
title: "bridge.maxBridgeAmount",
|
|
366
371
|
type: "string"
|
|
367
372
|
}),
|
|
368
|
-
minBridgeAmount:
|
|
373
|
+
minBridgeAmount: z3._default(HexZod, DEFAULT_MIN_BRIDGE_AMOUNT).register(globalRegistry2, {
|
|
369
374
|
default: DEFAULT_MIN_BRIDGE_AMOUNT,
|
|
370
375
|
description: "Minimum amount required for a bridge transfer",
|
|
371
376
|
title: "bridge.minBridgeAmount",
|
|
372
377
|
type: "string"
|
|
373
378
|
}),
|
|
374
|
-
redisHost: z3.string()
|
|
379
|
+
redisHost: z3._default(z3.string(), "localhost").register(globalRegistry2, {
|
|
375
380
|
default: "localhost",
|
|
376
381
|
description: "Host for the Bridge Redis instance",
|
|
377
382
|
title: "bridge.redisHost",
|
|
378
383
|
type: "string"
|
|
379
384
|
}),
|
|
380
|
-
redisPort: z3.coerce.number().
|
|
385
|
+
redisPort: z3._default(z3.coerce.number().check(z3.multipleOf(1), z3.positive()), 6379).register(globalRegistry2, {
|
|
381
386
|
default: 6379,
|
|
382
387
|
description: "Port for the Bridge Redis instance",
|
|
383
388
|
title: "bridge.redisPort",
|
|
384
389
|
type: "number"
|
|
385
390
|
}),
|
|
386
|
-
scannerIntervalMs: z3.coerce.number().
|
|
391
|
+
scannerIntervalMs: z3._default(z3.coerce.number().check(z3.multipleOf(1), z3.positive()), DEFAULT_SCANNER_INTERVAL_MS).register(globalRegistry2, {
|
|
387
392
|
default: DEFAULT_SCANNER_INTERVAL_MS,
|
|
388
393
|
description: "How often (ms) the EVM->XL1 scanner polls the remote bridge contract for new BridgedToRemote ids confirmed at depth.",
|
|
389
394
|
title: "bridge.scannerIntervalMs",
|
|
390
395
|
type: "number"
|
|
391
396
|
}),
|
|
392
|
-
remoteBridgeContractAddress:
|
|
397
|
+
remoteBridgeContractAddress: z3._default(AddressZod, DEFAULT_HARDHAT_BRIDGE_CONTRACT).register(globalRegistry2, {
|
|
393
398
|
default: DEFAULT_HARDHAT_BRIDGE_CONTRACT,
|
|
394
399
|
description: "Hex representation of remote token address used for bridging",
|
|
395
400
|
title: "bridge.remoteBridgeContractAddress",
|
|
396
401
|
type: "string"
|
|
397
402
|
}),
|
|
398
|
-
|
|
403
|
+
remoteBridgeContractDeployBlock: z3.optional(z3.coerce.number().check(z3.multipleOf(1), z3.nonnegative())).register(globalRegistry2, {
|
|
404
|
+
description: "EVM block at which the remote bridge contract was deployed. When unset, the bridge actor probes the chain via eth_getCode at actor startup. Setting this avoids the probe and is cheaper for chains with high heads; it must be at or before the actual deploy block.",
|
|
405
|
+
title: "bridge.remoteBridgeContractDeployBlock",
|
|
406
|
+
type: "number"
|
|
407
|
+
}),
|
|
408
|
+
remoteChainId: z3._default(HexZod, DEFAULT_HARDHAT_CHAIN_ID).register(globalRegistry2, {
|
|
399
409
|
default: DEFAULT_HARDHAT_CHAIN_ID,
|
|
400
410
|
description: "Remote chain ID",
|
|
401
411
|
title: "bridge.remoteChainId",
|
|
402
412
|
type: "string"
|
|
403
413
|
}),
|
|
404
|
-
remoteConfirmationDepth: z3.union([
|
|
405
|
-
z3.coerce.number().
|
|
414
|
+
remoteConfirmationDepth: z3.optional(z3.union([
|
|
415
|
+
z3.coerce.number().check(z3.multipleOf(1), z3.nonnegative()),
|
|
406
416
|
z3.literal("finalized")
|
|
407
|
-
])
|
|
417
|
+
])).register(globalRegistry2, {
|
|
408
418
|
description: "Block depth or BlockTag at which the remote (EVM) chain is read as canonical. Numeric: number of confirmations behind head. 'finalized': Casper FFG finalized block. Resolved per-chain by getRemoteConfirmationDepth when unset.",
|
|
409
419
|
title: "bridge.remoteConfirmationDepth",
|
|
410
420
|
type: "string"
|
|
411
421
|
}),
|
|
412
|
-
remoteTokenAddress:
|
|
422
|
+
remoteTokenAddress: z3._default(HexZod, DEFAULT_HARDHAT_TOKEN_CONTRACT).register(globalRegistry2, {
|
|
413
423
|
default: DEFAULT_HARDHAT_TOKEN_CONTRACT,
|
|
414
424
|
description: "Hex representation of remote token address used for bridging",
|
|
415
425
|
title: "bridge.remoteTokenAddress",
|
|
416
426
|
type: "string"
|
|
417
427
|
}),
|
|
418
|
-
remoteChainWalletPrivateKey:
|
|
428
|
+
remoteChainWalletPrivateKey: z3._default(HexZod, DEFAULT_HARDHAT_REMOTE_CHAIN_WALLET_PRIVATE_KEY).register(globalRegistry2, {
|
|
419
429
|
description: "Private key for the wallet to use for the remote chain wallet",
|
|
420
430
|
title: "bridge.remoteChainWalletPrivateKey",
|
|
421
431
|
type: "string"
|
|
422
432
|
}),
|
|
423
|
-
xl1ChainId:
|
|
433
|
+
xl1ChainId: z3.optional(HexZod).register(globalRegistry2, {
|
|
424
434
|
description: "XL1 chain id used for bridging",
|
|
425
435
|
title: "bridge.xl1ChainId",
|
|
426
436
|
type: "string"
|
|
427
437
|
}),
|
|
428
|
-
xl1TokenAddress:
|
|
438
|
+
xl1TokenAddress: z3.optional(HexZod).register(globalRegistry2, {
|
|
429
439
|
description: "XL1 token address used for bridging",
|
|
430
440
|
title: "bridge.xl1TokenAddress",
|
|
431
441
|
type: "string"
|
|
432
442
|
})
|
|
433
443
|
});
|
|
434
|
-
var BridgeSettingsZod =
|
|
444
|
+
var BridgeSettingsZod = z3.required(z3.pick(BridgeConfigZod, {
|
|
435
445
|
feeFixed: true,
|
|
436
446
|
feeRateBasisPoints: true,
|
|
437
447
|
feesAddress: true,
|
|
@@ -442,11 +452,11 @@ var BridgeSettingsZod = BridgeConfigZod.pick({
|
|
|
442
452
|
remoteTokenAddress: true,
|
|
443
453
|
xl1TokenAddress: true,
|
|
444
454
|
xl1ChainId: true
|
|
445
|
-
})
|
|
455
|
+
}));
|
|
446
456
|
var isBridgeConfig = zodIsFactory2(BridgeConfigZod);
|
|
447
457
|
var asBridgeConfig = zodAsFactory2(BridgeConfigZod, "asBridgeConfig");
|
|
448
458
|
var toBridgeConfig = zodToFactory2(BridgeConfigZod, "toBridgeConfig");
|
|
449
|
-
var BridgeConfigContext =
|
|
459
|
+
var BridgeConfigContext = z3.extend(BaseConfigContextZod2, { config: BridgeConfigZod });
|
|
450
460
|
var isBridgeConfigContext = zodIsFactory2(BridgeConfigContext);
|
|
451
461
|
var asBridgeConfigContext = zodAsFactory2(BridgeConfigContext, "asBridgeConfigContext");
|
|
452
462
|
var toBridgeConfigContext = zodToFactory2(BridgeConfigContext, "toBridgeConfigContext");
|
|
@@ -463,19 +473,19 @@ import {
|
|
|
463
473
|
DEFAULT_MIN_CANDIDATES,
|
|
464
474
|
HostActorConfigZod as HostActorConfigZod3
|
|
465
475
|
} from "@xyo-network/xl1-sdk";
|
|
466
|
-
import { z as z4 } from "zod";
|
|
467
|
-
var FinalizerConfigZod =
|
|
468
|
-
allowedProducers: z4.array(AddressZod2)
|
|
476
|
+
import { z as z4 } from "zod/mini";
|
|
477
|
+
var FinalizerConfigZod = z4.extend(HostActorConfigZod3, {
|
|
478
|
+
allowedProducers: z4.optional(z4.array(AddressZod2)),
|
|
469
479
|
// Period (ms) between finalizer ticks. Default matches the historical
|
|
470
480
|
// hardcoded value in FinalizerActor; tests can lower it to drive faster
|
|
471
481
|
// block finalization.
|
|
472
|
-
finalizationCheckInterval: z4.coerce.number()
|
|
473
|
-
minCandidates: z4.number().
|
|
482
|
+
finalizationCheckInterval: z4._default(z4.coerce.number(), 500),
|
|
483
|
+
minCandidates: z4._default(z4.number().check(z4.multipleOf(1), z4.nonnegative()), DEFAULT_MIN_CANDIDATES)
|
|
474
484
|
});
|
|
475
485
|
var isFinalizerConfig = zodIsFactory3(FinalizerConfigZod);
|
|
476
486
|
var asFinalizerConfig = zodAsFactory3(FinalizerConfigZod, "asFinalizerConfig");
|
|
477
487
|
var toFinalizerConfig = zodToFactory3(FinalizerConfigZod, "toFinalizerConfig");
|
|
478
|
-
var FinalizerConfigContext =
|
|
488
|
+
var FinalizerConfigContext = z4.extend(BaseConfigContextZod3, { config: FinalizerConfigZod });
|
|
479
489
|
var isFinalizerConfigContext = zodIsFactory3(FinalizerConfigContext);
|
|
480
490
|
var asFinalizerConfigContext = zodAsFactory3(FinalizerConfigContext, "asFinalizerConfigContext");
|
|
481
491
|
var toFinalizerConfigContext = zodToFactory3(FinalizerConfigContext, "toFinalizerConfigContext");
|
|
@@ -487,45 +497,53 @@ import {
|
|
|
487
497
|
zodToFactory as zodToFactory4
|
|
488
498
|
} from "@xylabs/sdk-js";
|
|
489
499
|
import { BaseConfigContextZod as BaseConfigContextZod4, HostActorConfigZod as HostActorConfigZod4 } from "@xyo-network/xl1-sdk";
|
|
490
|
-
import { globalRegistry as globalRegistry3, z as z5 } from "zod";
|
|
500
|
+
import { globalRegistry as globalRegistry3, z as z5 } from "zod/mini";
|
|
491
501
|
var DEFAULT_MEMPOOL_BLOCK_PRUNE_INTERVAL = 1e3;
|
|
492
502
|
var DEFAULT_MEMPOOL_TRANSACTION_PRUNE_INTERVAL = 1e3;
|
|
493
503
|
var DEFAULT_MEMPOOL_DEMOTION_THRESHOLD = 3;
|
|
494
504
|
var DEFAULT_MEMPOOL_MAX_PENDING_TRANSACTIONS = 0;
|
|
495
|
-
var
|
|
496
|
-
|
|
497
|
-
|
|
505
|
+
var TRUE_VALUES = /* @__PURE__ */ new Set(["true", "1", "yes", "on"]);
|
|
506
|
+
var FALSE_VALUES = /* @__PURE__ */ new Set(["false", "0", "no", "off"]);
|
|
507
|
+
var FlexibleBooleanZod = z5.pipe(
|
|
508
|
+
z5.union([z5.string(), z5.boolean()]).check(z5.refine((val) => {
|
|
509
|
+
if (typeof val === "boolean") return true;
|
|
498
510
|
const normalized = val.toLowerCase().trim();
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
default:
|
|
511
|
+
return TRUE_VALUES.has(normalized) || FALSE_VALUES.has(normalized);
|
|
512
|
+
}, { error: "Invalid boolean value. Use true/false, 1/0, yes/no." })),
|
|
513
|
+
z5.transform((val) => {
|
|
514
|
+
if (typeof val === "boolean") return val;
|
|
515
|
+
return TRUE_VALUES.has(val.toLowerCase().trim());
|
|
516
|
+
})
|
|
517
|
+
);
|
|
518
|
+
var MempoolConfigZod = z5.extend(HostActorConfigZod4, {
|
|
519
|
+
enabled: z5._default(FlexibleBooleanZod, false).register(globalRegistry3, {
|
|
520
|
+
default: false,
|
|
509
521
|
description: "Enable the Mempool",
|
|
510
522
|
title: "mempool.enabled",
|
|
511
523
|
type: "boolean"
|
|
512
524
|
}),
|
|
513
|
-
blockPruneInterval: z5.coerce.number()
|
|
525
|
+
blockPruneInterval: z5._default(z5.coerce.number(), DEFAULT_MEMPOOL_BLOCK_PRUNE_INTERVAL).register(globalRegistry3, {
|
|
514
526
|
description: "The interval time (in milliseconds) between pending block prune attempts",
|
|
515
527
|
title: "mempool.blockPruneInterval",
|
|
516
528
|
type: "number"
|
|
517
529
|
}),
|
|
518
|
-
demotionThreshold: z5.
|
|
530
|
+
demotionThreshold: z5._default(
|
|
531
|
+
z5.coerce.number().check(z5.multipleOf(1), z5.positive()),
|
|
532
|
+
DEFAULT_MEMPOOL_DEMOTION_THRESHOLD
|
|
533
|
+
).register(globalRegistry3, {
|
|
519
534
|
description: "Number of times a transaction may be handed out to producers without being included in a block before it is considered demoted",
|
|
520
535
|
title: "mempool.demotionThreshold",
|
|
521
536
|
type: "number"
|
|
522
537
|
}),
|
|
523
|
-
maxPendingTransactions: z5.
|
|
538
|
+
maxPendingTransactions: z5._default(
|
|
539
|
+
z5.coerce.number().check(z5.multipleOf(1), z5.nonnegative()),
|
|
540
|
+
DEFAULT_MEMPOOL_MAX_PENDING_TRANSACTIONS
|
|
541
|
+
).register(globalRegistry3, {
|
|
524
542
|
description: "Maximum number of pending transactions in the pool. When exceeded, demoted transactions are evicted first, then oldest by sequence. 0 disables the cap.",
|
|
525
543
|
title: "mempool.maxPendingTransactions",
|
|
526
544
|
type: "number"
|
|
527
545
|
}),
|
|
528
|
-
transactionPruneInterval: z5.coerce.number()
|
|
546
|
+
transactionPruneInterval: z5._default(z5.coerce.number(), DEFAULT_MEMPOOL_TRANSACTION_PRUNE_INTERVAL).register(globalRegistry3, {
|
|
529
547
|
description: "The interval time (in milliseconds) between pending transaction prune attempts",
|
|
530
548
|
title: "mempool.transactionPruneInterval",
|
|
531
549
|
type: "number"
|
|
@@ -534,7 +552,7 @@ var MempoolConfigZod = HostActorConfigZod4.extend({
|
|
|
534
552
|
var isMempoolConfig = zodIsFactory4(MempoolConfigZod);
|
|
535
553
|
var asMempoolConfig = zodAsFactory4(MempoolConfigZod, "asMempoolConfig");
|
|
536
554
|
var toMempoolConfig = zodToFactory4(MempoolConfigZod, "toMempoolConfig");
|
|
537
|
-
var MempoolConfigContext =
|
|
555
|
+
var MempoolConfigContext = z5.extend(BaseConfigContextZod4, { config: MempoolConfigZod });
|
|
538
556
|
var isMempoolConfigContext = zodIsFactory4(MempoolConfigContext);
|
|
539
557
|
var asMempoolConfigContext = zodAsFactory4(MempoolConfigContext, "asMempoolConfigContext");
|
|
540
558
|
var toMempoolConfigContext = zodToFactory4(MempoolConfigContext, "toMempoolConfigContext");
|
|
@@ -547,46 +565,46 @@ import {
|
|
|
547
565
|
zodToFactory as zodToFactory5
|
|
548
566
|
} from "@xylabs/sdk-js";
|
|
549
567
|
import { ActorConfigZod, BaseConfigContextZod as BaseConfigContextZod5 } from "@xyo-network/xl1-sdk";
|
|
550
|
-
import { globalRegistry as globalRegistry4, z as z6 } from "zod";
|
|
568
|
+
import { globalRegistry as globalRegistry4, z as z6 } from "zod/mini";
|
|
551
569
|
var DEFAULT_BLOCK_PRODUCTION_CHECK_INTERVAL = 1e4;
|
|
552
|
-
var ProducerConfigZod =
|
|
553
|
-
allowlist: z6.array(AddressZod3)
|
|
570
|
+
var ProducerConfigZod = z6.extend(ActorConfigZod, {
|
|
571
|
+
allowlist: z6.optional(z6.array(AddressZod3)).register(globalRegistry4, {
|
|
554
572
|
description: "List of allowed producer addresses, if undefined anyone can participate",
|
|
555
573
|
title: "allowlist",
|
|
556
574
|
type: "array"
|
|
557
575
|
}),
|
|
558
|
-
blockProductionCheckInterval: z6.coerce.number()
|
|
576
|
+
blockProductionCheckInterval: z6._default(z6.coerce.number(), DEFAULT_BLOCK_PRODUCTION_CHECK_INTERVAL).register(globalRegistry4, {
|
|
559
577
|
description: "The interval time (in milliseconds) between block production attempts",
|
|
560
578
|
title: "producer.blockProductionCheckInterval",
|
|
561
579
|
type: "number"
|
|
562
580
|
}),
|
|
563
|
-
disableIntentRedeclaration: z6.
|
|
581
|
+
disableIntentRedeclaration: z6.optional(z6.boolean()).register(globalRegistry4, {
|
|
564
582
|
description: "Should the producer skip redeclaring their intent to continue producing blocks",
|
|
565
583
|
title: "producer.disableIntentRedeclaration",
|
|
566
584
|
type: "boolean"
|
|
567
585
|
}),
|
|
568
|
-
heartbeatInterval: z6.coerce.number()
|
|
586
|
+
heartbeatInterval: z6._default(z6.coerce.number(), 36e5).register(globalRegistry4, {
|
|
569
587
|
description: "The number of milliseconds between heartbeats if no blocks are produced",
|
|
570
588
|
title: "producer.heartbeatInterval",
|
|
571
589
|
type: "number"
|
|
572
590
|
}),
|
|
573
591
|
// TODO: BigInt schema
|
|
574
|
-
minStake: z6.coerce.number()
|
|
592
|
+
minStake: z6._default(z6.coerce.number(), 1).register(globalRegistry4, {
|
|
575
593
|
description: "Minimum stake required to be a Producer",
|
|
576
594
|
title: "producer.minStake",
|
|
577
595
|
type: "number"
|
|
578
596
|
}),
|
|
579
597
|
// TODO: Address schema
|
|
580
|
-
rewardAddress: z6.
|
|
598
|
+
rewardAddress: z6.optional(z6.string()).register(globalRegistry4, {
|
|
581
599
|
description: "Address to receive block rewards",
|
|
582
600
|
title: "producer.rewardAddress",
|
|
583
601
|
type: "string"
|
|
584
602
|
})
|
|
585
|
-
})
|
|
603
|
+
});
|
|
586
604
|
var isProducerConfig = zodIsFactory5(ProducerConfigZod);
|
|
587
605
|
var asProducerConfig = zodAsFactory5(ProducerConfigZod, "asProducerConfig");
|
|
588
606
|
var toProducerConfig = zodToFactory5(ProducerConfigZod, "toProducerConfig");
|
|
589
|
-
var ProducerConfigContext =
|
|
607
|
+
var ProducerConfigContext = z6.extend(BaseConfigContextZod5, { config: ProducerConfigZod });
|
|
590
608
|
var isProducerConfigContext = zodIsFactory5(ProducerConfigContext);
|
|
591
609
|
var asProducerConfigContext = zodAsFactory5(ProducerConfigContext, "asProducerConfigContext");
|
|
592
610
|
var toProducerConfigContext = zodToFactory5(ProducerConfigContext, "toProducerConfigContext");
|
|
@@ -598,11 +616,12 @@ import {
|
|
|
598
616
|
zodToFactory as zodToFactory6
|
|
599
617
|
} from "@xylabs/sdk-js";
|
|
600
618
|
import { BaseConfigContextZod as BaseConfigContextZod6, HostActorConfigZod as HostActorConfigZod5 } from "@xyo-network/xl1-sdk";
|
|
601
|
-
|
|
619
|
+
import { z as z7 } from "zod/mini";
|
|
620
|
+
var RewardRedemptionConfigZod = z7.extend(HostActorConfigZod5, {});
|
|
602
621
|
var isRewardRedemptionConfig = zodIsFactory6(RewardRedemptionConfigZod);
|
|
603
622
|
var asRewardRedemptionConfig = zodAsFactory6(RewardRedemptionConfigZod, "asRewardRedemptionConfig");
|
|
604
623
|
var toRewardRedemptionConfig = zodToFactory6(RewardRedemptionConfigZod, "toRewardRedemptionConfig");
|
|
605
|
-
var RewardRedemptionConfigContext =
|
|
624
|
+
var RewardRedemptionConfigContext = z7.extend(BaseConfigContextZod6, { config: RewardRedemptionConfigZod });
|
|
606
625
|
var isRewardRedemptionConfigContext = zodIsFactory6(RewardRedemptionConfigContext);
|
|
607
626
|
var asRewardRedemptionConfigContext = zodAsFactory6(RewardRedemptionConfigContext, "asRewardRedemptionConfigContext");
|
|
608
627
|
var toRewardRedemptionConfigContext = zodToFactory6(RewardRedemptionConfigContext, "toRewardRedemptionConfigContext");
|
|
@@ -2906,6 +2925,7 @@ async function locatorsFromConfig(context, { actors, ...config }, onInsecureGene
|
|
|
2906
2925
|
import { isDefined as isDefined4, isNull } from "@xylabs/sdk-js";
|
|
2907
2926
|
import { ConfigZod } from "@xyo-network/xl1-sdk";
|
|
2908
2927
|
import { cosmiconfig } from "cosmiconfig";
|
|
2928
|
+
import { z as z8 } from "zod/mini";
|
|
2909
2929
|
var configName = "xyo";
|
|
2910
2930
|
var configSection = "xl1";
|
|
2911
2931
|
var ConfigFileNotFoundError = class extends Error {
|
|
@@ -2949,7 +2969,7 @@ async function tryParseConfig(options) {
|
|
|
2949
2969
|
if (isRecord(result)) {
|
|
2950
2970
|
const section = result[configSection];
|
|
2951
2971
|
if (isRecord(section)) {
|
|
2952
|
-
const parsed = ConfigZod.
|
|
2972
|
+
const parsed = z8.looseObject(ConfigZod.shape).parse(section);
|
|
2953
2973
|
return typeof section.mnemonic === "string" ? { ...parsed, mnemonic: section.mnemonic } : parsed;
|
|
2954
2974
|
}
|
|
2955
2975
|
}
|