@xyo-network/chain-orchestration 1.20.14 → 1.20.16

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 (146) hide show
  1. package/README.md +9 -177
  2. package/dist/browser/index.mjs.map +1 -1
  3. package/dist/browser/shared/config/actors/Api.d.ts +9 -539
  4. package/dist/browser/shared/config/actors/Api.d.ts.map +1 -1
  5. package/dist/browser/shared/config/actors/Bridge.d.ts +9 -689
  6. package/dist/browser/shared/config/actors/Bridge.d.ts.map +1 -1
  7. package/dist/browser/shared/config/actors/Mempool.d.ts +9 -539
  8. package/dist/browser/shared/config/actors/Mempool.d.ts.map +1 -1
  9. package/dist/browser/shared/config/actors/Producer.d.ts +9 -575
  10. package/dist/browser/shared/config/actors/Producer.d.ts.map +1 -1
  11. package/dist/browser/shared/config/actors/RewardRedemption.d.ts +9 -533
  12. package/dist/browser/shared/config/actors/RewardRedemption.d.ts.map +1 -1
  13. package/dist/browser/shared/config/actors/Validator.d.ts +9 -563
  14. package/dist/browser/shared/config/actors/Validator.d.ts.map +1 -1
  15. package/dist/browser/shared/createDeclarationIntentBlock.d.ts +11 -11
  16. package/dist/neutral/index.mjs.map +1 -1
  17. package/dist/neutral/shared/config/actors/Api.d.ts +9 -539
  18. package/dist/neutral/shared/config/actors/Api.d.ts.map +1 -1
  19. package/dist/neutral/shared/config/actors/Bridge.d.ts +9 -689
  20. package/dist/neutral/shared/config/actors/Bridge.d.ts.map +1 -1
  21. package/dist/neutral/shared/config/actors/Mempool.d.ts +9 -539
  22. package/dist/neutral/shared/config/actors/Mempool.d.ts.map +1 -1
  23. package/dist/neutral/shared/config/actors/Producer.d.ts +9 -575
  24. package/dist/neutral/shared/config/actors/Producer.d.ts.map +1 -1
  25. package/dist/neutral/shared/config/actors/RewardRedemption.d.ts +9 -533
  26. package/dist/neutral/shared/config/actors/RewardRedemption.d.ts.map +1 -1
  27. package/dist/neutral/shared/config/actors/Validator.d.ts +9 -563
  28. package/dist/neutral/shared/config/actors/Validator.d.ts.map +1 -1
  29. package/dist/neutral/shared/createDeclarationIntentBlock.d.ts +11 -11
  30. package/dist/node/index.mjs.map +1 -1
  31. package/dist/node/shared/config/actors/Api.d.ts +9 -539
  32. package/dist/node/shared/config/actors/Api.d.ts.map +1 -1
  33. package/dist/node/shared/config/actors/Bridge.d.ts +9 -689
  34. package/dist/node/shared/config/actors/Bridge.d.ts.map +1 -1
  35. package/dist/node/shared/config/actors/Mempool.d.ts +9 -539
  36. package/dist/node/shared/config/actors/Mempool.d.ts.map +1 -1
  37. package/dist/node/shared/config/actors/Producer.d.ts +9 -575
  38. package/dist/node/shared/config/actors/Producer.d.ts.map +1 -1
  39. package/dist/node/shared/config/actors/RewardRedemption.d.ts +9 -533
  40. package/dist/node/shared/config/actors/RewardRedemption.d.ts.map +1 -1
  41. package/dist/node/shared/config/actors/Validator.d.ts +9 -563
  42. package/dist/node/shared/config/actors/Validator.d.ts.map +1 -1
  43. package/dist/node/shared/createDeclarationIntentBlock.d.ts +11 -11
  44. package/package.json +136 -52
  45. package/src/neutral/config/index.ts +0 -1
  46. package/src/neutral/config/locators/basicRemoteRunnerLocator.ts +0 -14
  47. package/src/neutral/config/locators/basicRemoteViewerLocator.ts +0 -11
  48. package/src/neutral/config/locators/index.ts +0 -3
  49. package/src/neutral/config/locators/rootLocatorFromConfig.ts +0 -19
  50. package/src/neutral/index.ts +0 -2
  51. package/src/node/archivists/ChainFinalized/archivist.ts +0 -21
  52. package/src/node/archivists/ChainFinalized/index.ts +0 -1
  53. package/src/node/archivists/ChainFinalized/local.ts +0 -17
  54. package/src/node/archivists/PendingBlocks/archivist.ts +0 -21
  55. package/src/node/archivists/PendingBlocks/index.ts +0 -1
  56. package/src/node/archivists/PendingBlocks/local.ts +0 -17
  57. package/src/node/archivists/RejectedTransactions/archivist.ts +0 -21
  58. package/src/node/archivists/RejectedTransactions/index.ts +0 -1
  59. package/src/node/archivists/RejectedTransactions/local.ts +0 -19
  60. package/src/node/archivists/StakeIntentState/archivist.ts +0 -21
  61. package/src/node/archivists/StakeIntentState/index.ts +0 -1
  62. package/src/node/archivists/StakeIntentState/local.ts +0 -18
  63. package/src/node/archivists/index.ts +0 -4
  64. package/src/node/archivists/lib/index.ts +0 -1
  65. package/src/node/archivists/lib/localPersistentArchivist.ts +0 -63
  66. package/src/node/config/index.ts +0 -2
  67. package/src/node/config/locators/actors/apiLocatorFromConfig.ts +0 -25
  68. package/src/node/config/locators/actors/bridgeLocatorFromConfig.ts +0 -83
  69. package/src/node/config/locators/actors/index.ts +0 -6
  70. package/src/node/config/locators/actors/mempoolLocatorFromConfig.ts +0 -17
  71. package/src/node/config/locators/actors/producerLocatorFromConfig.ts +0 -29
  72. package/src/node/config/locators/actors/rewardRedemptionLocatorFromConfig.ts +0 -56
  73. package/src/node/config/locators/actors/validatorLocatorFromConfig.ts +0 -15
  74. package/src/node/config/locators/basicRemoteRunnerLocator.ts +0 -38
  75. package/src/node/config/locators/basicRemoteViewerLocator.ts +0 -19
  76. package/src/node/config/locators/contextFromConfigWithoutLocator.ts +0 -25
  77. package/src/node/config/locators/index.ts +0 -7
  78. package/src/node/config/locators/localLocatorFromConfig.ts +0 -75
  79. package/src/node/config/locators/localViewerFromConfig.ts +0 -14
  80. package/src/node/config/locators/locatorsFromConfig.ts +0 -75
  81. package/src/node/config/locators/remoteViewerFromConfig.ts +0 -13
  82. package/src/node/config/locators/rootLocatorFromConfig.ts +0 -22
  83. package/src/node/config/locators/telemetryContextFromConfig.ts +0 -15
  84. package/src/node/config/tryParseConfig.ts +0 -42
  85. package/src/node/evm/index.ts +0 -4
  86. package/src/node/evm/initChainId.ts +0 -20
  87. package/src/node/evm/initEvmProvider.ts +0 -22
  88. package/src/node/evm/initInfuraProvider.ts +0 -29
  89. package/src/node/evm/initJsonRpcProvider.ts +0 -22
  90. package/src/node/health/index.ts +0 -1
  91. package/src/node/health/initHealthEndpoints.ts +0 -67
  92. package/src/node/index.ts +0 -8
  93. package/src/node/init/index.ts +0 -6
  94. package/src/node/init/initBalanceSummaryMap.ts +0 -33
  95. package/src/node/init/initEvmProvidersIfAvailable.ts +0 -93
  96. package/src/node/init/initFinalizationArchivistIfNeeded.ts +0 -44
  97. package/src/node/init/initFinalizedArchivist.ts +0 -16
  98. package/src/node/init/initServerNode.ts +0 -51
  99. package/src/node/init/initTransferSummaryMap.ts +0 -33
  100. package/src/node/manifest/getLocator.ts +0 -65
  101. package/src/node/manifest/index.ts +0 -5
  102. package/src/node/manifest/loadNode.ts +0 -26
  103. package/src/node/manifest/node.json +0 -17
  104. package/src/node/manifest/nodeManifest.ts +0 -8
  105. package/src/node/manifest/private/index.ts +0 -4
  106. package/src/node/manifest/public/Chain.json +0 -49
  107. package/src/node/manifest/public/Pending.json +0 -54
  108. package/src/node/manifest/public/index.ts +0 -20
  109. package/src/node/sharedMiddleware.ts +0 -24
  110. package/src/shared/ChainInitializableParams.ts +0 -4
  111. package/src/shared/actor/ValidatorActor.ts +0 -75
  112. package/src/shared/actor/index.ts +0 -1
  113. package/src/shared/buildTelemetryConfig.ts +0 -10
  114. package/src/shared/config/actors/Api.ts +0 -29
  115. package/src/shared/config/actors/Bridge.ts +0 -131
  116. package/src/shared/config/actors/Mempool.ts +0 -39
  117. package/src/shared/config/actors/Producer.ts +0 -56
  118. package/src/shared/config/actors/RewardRedemption.ts +0 -21
  119. package/src/shared/config/actors/Validator.ts +0 -22
  120. package/src/shared/config/actors/index.ts +0 -7
  121. package/src/shared/config/index.ts +0 -3
  122. package/src/shared/config/locators/basicRemoteRunnerLocator.ts +0 -63
  123. package/src/shared/config/locators/basicRemoteViewerLocator.ts +0 -44
  124. package/src/shared/config/locators/commonLocatorFromConfig.ts +0 -40
  125. package/src/shared/config/locators/index.ts +0 -4
  126. package/src/shared/config/locators/remoteLocatorFromConfig.ts +0 -56
  127. package/src/shared/config/mergeConfig.ts +0 -11
  128. package/src/shared/createDeclarationIntentBlock.ts +0 -19
  129. package/src/shared/host/implementation/DefaultHost.ts +0 -25
  130. package/src/shared/host/implementation/DefaultServiceCollection.ts +0 -60
  131. package/src/shared/host/implementation/DefaultServiceProvider.ts +0 -12
  132. package/src/shared/host/implementation/index.ts +0 -2
  133. package/src/shared/host/index.ts +0 -2
  134. package/src/shared/host/model/Host.ts +0 -21
  135. package/src/shared/host/model/ServiceCollection.ts +0 -22
  136. package/src/shared/host/model/ServiceProvider.ts +0 -3
  137. package/src/shared/host/model/index.ts +0 -3
  138. package/src/shared/index.ts +0 -8
  139. package/src/shared/init/index.ts +0 -5
  140. package/src/shared/init/initActorAccount.ts +0 -28
  141. package/src/shared/init/initActorSeedPhrase.ts +0 -29
  142. package/src/shared/init/initBridgedModule.ts +0 -40
  143. package/src/shared/init/initStatusReporter.ts +0 -15
  144. package/src/shared/init/initWallet.ts +0 -44
  145. package/src/shared/orchestrator/Orchestrator.ts +0 -66
  146. package/src/shared/orchestrator/index.ts +0 -1
@@ -1,4 +0,0 @@
1
- import type { CreatableProviderContext } from '@xyo-network/xl1-sdk'
2
-
3
- /** @deprecated */
4
- export type ChainInitializableParams = CreatableProviderContext
@@ -1,75 +0,0 @@
1
- import type { Hash } from '@xylabs/sdk-js'
2
- import { creatable } from '@xylabs/sdk-js'
3
- import { processPendingBlocks } from '@xyo-network/chain-sdk'
4
- import type {
5
- ActorParamsV3, BlockBoundWitness, BlockValidationViewer, BlockViewer,
6
- FinalizationRunner,
7
- MempoolViewer,
8
- } from '@xyo-network/xl1-sdk'
9
- import {
10
- ActorV3, BlockValidationViewerMoniker, BlockViewerMoniker, FinalizationRunnerMoniker,
11
- MempoolViewerMoniker,
12
- } from '@xyo-network/xl1-sdk'
13
-
14
- import { ValidatorConfig } from '../config/index.ts'
15
-
16
- export type ValidatorActorParams = ActorParamsV3<
17
- {
18
- config: ValidatorConfig
19
- }>
20
-
21
- @creatable()
22
- export class ValidatorActor extends ActorV3<ValidatorActorParams> {
23
- protected _blockValidationViewer!: BlockValidationViewer
24
- protected _blockViewer!: BlockViewer
25
- protected _finalizationRunner!: FinalizationRunner
26
- protected _lastValidatedBlock: BlockBoundWitness | undefined
27
- protected _lastValidatedBlockHash: Hash | undefined
28
- protected _mempoolViewer!: MempoolViewer
29
-
30
- protected get allowedProducers() {
31
- return this.params.config.allowedProducers ?? []
32
- }
33
-
34
- protected get blockValidationViewer() {
35
- return this._blockValidationViewer
36
- }
37
-
38
- protected get blockViewer() {
39
- return this._blockViewer
40
- }
41
-
42
- protected get finalizationRunner() {
43
- return this._finalizationRunner
44
- }
45
-
46
- protected get mempoolViewer() {
47
- return this._mempoolViewer
48
- }
49
-
50
- override async createHandler() {
51
- await super.startHandler()
52
- this._blockValidationViewer = await this.locator.getInstance(BlockValidationViewerMoniker)
53
- this._blockViewer = await this.locator.getInstance(BlockViewerMoniker)
54
- this._finalizationRunner = await this.locator.getInstance(FinalizationRunnerMoniker)
55
- this._mempoolViewer = await this.locator.getInstance(MempoolViewerMoniker)
56
- }
57
-
58
- override async startHandler(): Promise<void> {
59
- await super.startHandler()
60
- this.registerTimer('ValidatorActor', async () => {
61
- await this.spanAsync('processPendingBlocks', async () => {
62
- console.log('ValidatorActor: Processing pending blocks...')
63
- await processPendingBlocks({
64
- blockValidationViewer: this.blockValidationViewer,
65
- context: this.context,
66
- logger: this.logger,
67
- mempoolViewer: this.mempoolViewer,
68
- blockViewer: this.blockViewer,
69
- finalizationRunner: this.finalizationRunner,
70
- allowedProducers: this.allowedProducers,
71
- })
72
- }, { ...this.context, timeBudgetLimit: 1500 })
73
- }, 2000, 500)
74
- }
75
- }
@@ -1 +0,0 @@
1
- export * from './ValidatorActor.ts'
@@ -1,10 +0,0 @@
1
- import type { Config } from '@xyo-network/xl1-sdk'
2
-
3
- export function buildTelemetryConfig(config: Config, serviceName: string, serviceVersion: string, defaultMetricsScrapePort = 9464) {
4
- const { otlpEndpoint } = config.telemetry?.otel ?? {}
5
- const { path: endpoint = '/metrics', port = defaultMetricsScrapePort } = config.telemetry?.metrics?.scrape ?? {}
6
- const telemetryConfig = {
7
- attributes: { serviceName, serviceVersion }, otlpEndpoint, metricsConfig: { endpoint, port },
8
- }
9
- return telemetryConfig
10
- }
@@ -1,29 +0,0 @@
1
- import {
2
- zodAsFactory, zodIsFactory, zodToFactory,
3
- } from '@xylabs/sdk-js'
4
- import { BaseConfigContextZod, HostActorConfigZod } from '@xyo-network/xl1-sdk'
5
- import { globalRegistry, z } from 'zod'
6
-
7
- export const ApiConfigZod = HostActorConfigZod.extend(z.object({
8
- initRewardsCache: z.union([z.number(), z.string(), z.boolean()]).transform(
9
- v => v !== '0' && v !== 'false' && v !== false && v != 0,
10
- ).default(true).register(globalRegistry, {
11
- description: 'Whether to initialize the rewards cache on startup',
12
- title: 'api.initRewardsCache',
13
- type: 'boolean',
14
- }),
15
- }).shape)
16
-
17
- export type ApiConfig = z.infer<typeof ApiConfigZod>
18
-
19
- export const isApiConfig = zodIsFactory(ApiConfigZod)
20
- export const asApiConfig = zodAsFactory(ApiConfigZod, 'asApiConfig')
21
- export const toApiConfig = zodToFactory(ApiConfigZod, 'toApiConfig')
22
-
23
- export const ApiConfigContext = BaseConfigContextZod.extend({ config: ApiConfigZod })
24
-
25
- export type ApiConfigContext = z.infer<typeof ApiConfigContext>
26
-
27
- export const isApiConfigContext = zodIsFactory(ApiConfigContext)
28
- export const asApiConfigContext = zodAsFactory(ApiConfigContext, 'asApiConfigContext')
29
- export const toApiConfigContext = zodToFactory(ApiConfigContext, 'toApiConfigContext')
@@ -1,131 +0,0 @@
1
- import {
2
- AddressZod, HexZod, toAddress, toHex, zodAsFactory, zodIsFactory, zodToFactory,
3
- } from '@xylabs/sdk-js'
4
- import type { ChainId } from '@xyo-network/xl1-sdk'
5
- import {
6
- AttoXL1ConvertFactor, BaseConfigContextZod, HostActorConfigZod, XL1,
7
- } from '@xyo-network/xl1-sdk'
8
- import { globalRegistry, z } from 'zod'
9
-
10
- const DEFAULT_FIXED_FEE = toHex(XL1(1000n) * AttoXL1ConvertFactor.xl1)
11
- const DEFAULT_VARIABLE_FEE_BASIS_POINTS = 300 // 3%
12
- const DEFAULT_HARDHAT_BRIDGE_CONTRACT = toAddress('2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6')
13
- const DEFAULT_HARDHAT_CHAIN_ID: ChainId = toHex('7A69')
14
- const DEFAULT_HARDHAT_REMOTE_CHAIN_WALLET_PRIVATE_KEY = toHex('0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80')
15
- const DEFAULT_HARDHAT_TOKEN_CONTRACT = toAddress('5FbDB2315678afecb367f032d93F642f64180aa3')
16
- const DEFAULT_MAX_BRIDGE_AMOUNT = toHex(XL1(1_000_000n) * AttoXL1ConvertFactor.xl1)
17
- const DEFAULT_MIN_BRIDGE_AMOUNT = toHex(XL1(1500n) * AttoXL1ConvertFactor.xl1)
18
-
19
- export const BasisPointsZod = z.coerce.number().int().nonnegative().max(10_000)
20
- export type BasisPoints = z.infer<typeof BasisPointsZod>
21
-
22
- export const BridgeConfigZod = HostActorConfigZod.extend({
23
- escrowAddress: AddressZod.optional().register(globalRegistry, {
24
- description: 'Address to which bridge escrow will be sent',
25
- title: 'bridge.escrowAddress',
26
- type: 'string',
27
- }),
28
- feesAddress: AddressZod.optional().register(globalRegistry, {
29
- description: 'Address to which bridge fees will be sent',
30
- title: 'bridge.feesAddress',
31
- type: 'string',
32
- }),
33
- feeFixed: HexZod.default(DEFAULT_FIXED_FEE).register(globalRegistry, {
34
- default: DEFAULT_FIXED_FEE,
35
- description: 'Fixed fee (in AttoXL1) applied to bridge transfers',
36
- title: 'bridge.feeFixed',
37
- type: 'bigint',
38
- }),
39
- feeRateBasisPoints: BasisPointsZod.default(DEFAULT_VARIABLE_FEE_BASIS_POINTS).register(globalRegistry, {
40
- default: DEFAULT_VARIABLE_FEE_BASIS_POINTS,
41
- description: 'Variable rate fee (in basis points where 1 bps = 0.01%) applied to bridge transfers',
42
- title: 'bridge.feeRateBasisPoints',
43
- type: 'number',
44
- }),
45
- maxBridgeAmount: HexZod.default(DEFAULT_MAX_BRIDGE_AMOUNT).register(globalRegistry, {
46
- default: DEFAULT_MAX_BRIDGE_AMOUNT,
47
- description: 'Maximum amount allowed for a bridge transfer',
48
- title: 'bridge.maxBridgeAmount',
49
- type: 'string',
50
- }),
51
- minBridgeAmount: HexZod.default(DEFAULT_MIN_BRIDGE_AMOUNT).register(globalRegistry, {
52
- default: DEFAULT_MIN_BRIDGE_AMOUNT,
53
- description: 'Minimum amount required for a bridge transfer',
54
- title: 'bridge.minBridgeAmount',
55
- type: 'string',
56
- }),
57
- redisHost: z.string().default('localhost').register(globalRegistry, {
58
- default: 'localhost',
59
- description: 'Host for the Bridge Redis instance',
60
- title: 'bridge.redisHost',
61
- type: 'string',
62
- }),
63
- redisPort: z.coerce.number().int().positive().default(6379).register(globalRegistry, {
64
- default: 6379,
65
- description: 'Port for the Bridge Redis instance',
66
- title: 'bridge.redisPort',
67
- type: 'number',
68
- }),
69
- remoteBridgeContractAddress: AddressZod.default(DEFAULT_HARDHAT_BRIDGE_CONTRACT).register(globalRegistry, {
70
- default: DEFAULT_HARDHAT_BRIDGE_CONTRACT,
71
- description: 'Hex representation of remote token address used for bridging',
72
- title: 'bridge.remoteBridgeContractAddress',
73
- type: 'string',
74
- }),
75
- remoteChainId: HexZod.default(DEFAULT_HARDHAT_CHAIN_ID).register(globalRegistry, {
76
- default: DEFAULT_HARDHAT_CHAIN_ID,
77
- description: 'Remote chain ID',
78
- title: 'bridge.remoteChainId',
79
- type: 'string',
80
- }),
81
- remoteTokenAddress: HexZod.default(DEFAULT_HARDHAT_TOKEN_CONTRACT).register(globalRegistry, {
82
- default: DEFAULT_HARDHAT_TOKEN_CONTRACT,
83
- description: 'Hex representation of remote token address used for bridging',
84
- title: 'bridge.remoteTokenAddress',
85
- type: 'string',
86
- }),
87
- remoteChainWalletPrivateKey: HexZod.default(DEFAULT_HARDHAT_REMOTE_CHAIN_WALLET_PRIVATE_KEY).register(globalRegistry, {
88
- description: 'Private key for the wallet to use for the remote chain wallet',
89
- title: 'bridge.remoteChainWalletPrivateKey',
90
- type: 'string',
91
- }),
92
- xl1ChainId: HexZod.optional().register(globalRegistry, {
93
- description: 'XL1 chain id used for bridging',
94
- title: 'bridge.xl1ChainId',
95
- type: 'string',
96
- }),
97
- xl1TokenAddress: HexZod.optional().register(globalRegistry, {
98
- description: 'XL1 token address used for bridging',
99
- title: 'bridge.xl1TokenAddress',
100
- type: 'string',
101
- }),
102
- })
103
-
104
- export type BridgeConfig = z.infer<typeof BridgeConfigZod>
105
-
106
- export const BridgeSettingsZod = BridgeConfigZod.pick({
107
- feeFixed: true,
108
- feeRateBasisPoints: true,
109
- feesAddress: true,
110
- escrowAddress: true,
111
- maxBridgeAmount: true,
112
- minBridgeAmount: true,
113
- remoteChainId: true,
114
- remoteTokenAddress: true,
115
- xl1TokenAddress: true,
116
- xl1ChainId: true,
117
- }).required()
118
-
119
- export type BridgeSettings = z.infer<typeof BridgeSettingsZod>
120
-
121
- export const isBridgeConfig = zodIsFactory(BridgeConfigZod)
122
- export const asBridgeConfig = zodAsFactory(BridgeConfigZod, 'asBridgeConfig')
123
- export const toBridgeConfig = zodToFactory(BridgeConfigZod, 'toBridgeConfig')
124
-
125
- export const BridgeConfigContext = BaseConfigContextZod.extend({ config: BridgeConfigZod })
126
-
127
- export type BridgeConfigContext = z.infer<typeof BridgeConfigContext>
128
-
129
- export const isBridgeConfigContext = zodIsFactory(BridgeConfigContext)
130
- export const asBridgeConfigContext = zodAsFactory(BridgeConfigContext, 'asBridgeConfigContext')
131
- export const toBridgeConfigContext = zodToFactory(BridgeConfigContext, 'toBridgeConfigContext')
@@ -1,39 +0,0 @@
1
- import {
2
- zodAsFactory, zodIsFactory, zodToFactory,
3
- } from '@xylabs/sdk-js'
4
- import { BaseConfigContextZod, HostActorConfigZod } from '@xyo-network/xl1-sdk'
5
- import { globalRegistry, z } from 'zod'
6
-
7
- export const MempoolConfigZod = HostActorConfigZod.extend({
8
- enabled: z.union([z.string(), z.boolean()]).default('false').transform((val, ctx) => {
9
- if (typeof val === 'boolean') return val
10
- const normalized = val.toLowerCase().trim()
11
- if (['true', '1', 'yes', 'on'].includes(normalized)) return true
12
- if (['false', '0', 'no', 'off'].includes(normalized)) return false
13
- ctx.addIssue({
14
- code: 'invalid_type',
15
- expected: 'boolean',
16
- message: `Invalid boolean value: "${val}". Use true/false, 1/0, yes/no.`,
17
- })
18
- return z.NEVER
19
- }).register(globalRegistry, {
20
- default: 'false',
21
- description: 'Enable the Mempool',
22
- title: 'mempool.enabled',
23
- type: 'boolean',
24
- }),
25
- })
26
-
27
- export type MempoolConfig = z.infer<typeof MempoolConfigZod>
28
-
29
- export const isMempoolConfig = zodIsFactory(MempoolConfigZod)
30
- export const asMempoolConfig = zodAsFactory(MempoolConfigZod, 'asMempoolConfig')
31
- export const toMempoolConfig = zodToFactory(MempoolConfigZod, 'toMempoolConfig')
32
-
33
- export const MempoolConfigContext = BaseConfigContextZod.extend({ config: MempoolConfigZod })
34
-
35
- export type MempoolConfigContext = z.infer<typeof MempoolConfigContext>
36
-
37
- export const isMempoolConfigContext = zodIsFactory(MempoolConfigContext)
38
- export const asMempoolConfigContext = zodAsFactory(MempoolConfigContext, 'asMempoolConfigContext')
39
- export const toMempoolConfigContext = zodToFactory(MempoolConfigContext, 'toMempoolConfigContext')
@@ -1,56 +0,0 @@
1
- import {
2
- AddressZod, asAddress,
3
- zodAsFactory, zodIsFactory, zodToFactory,
4
- } from '@xylabs/sdk-js'
5
- import { ActorConfigZod, BaseConfigContextZod } from '@xyo-network/xl1-sdk'
6
- import { globalRegistry, z } from 'zod'
7
-
8
- export const ProducerConfigZod = ActorConfigZod.extend(z.object({
9
- allowlist: z.preprocess((val) => {
10
- if (typeof val === 'string') {
11
- return val.split(',').map(s => asAddress(s.trim()))
12
- }
13
- return val
14
- }, z.array(AddressZod).optional().register(globalRegistry, {
15
- description: 'List of allowed producer addresses, if undefined anyone can participate',
16
- title: 'allowlist',
17
- type: 'array',
18
- })),
19
-
20
- disableIntentRedeclaration: z.boolean().optional().register(globalRegistry, {
21
- description: 'Should the producer skip redeclaring their intent to continue producing blocks',
22
- title: 'producer.disableIntentRedeclaration',
23
- type: 'boolean',
24
- }),
25
- heartbeatInterval: z.coerce.number().default(3_600_000).register(globalRegistry, {
26
- description: 'The number of milliseconds between heartbeats if no blocks are produced',
27
- title: 'producer.heartbeatInterval',
28
- type: 'number',
29
- }),
30
- // TODO: BigInt schema
31
- minStake: z.coerce.number().default(1).register(globalRegistry, {
32
- description: 'Minimum stake required to be a Producer',
33
- title: 'producer.minStake',
34
- type: 'number',
35
- }),
36
- // TODO: Address schema
37
- rewardAddress: z.string().optional().register(globalRegistry, {
38
- description: 'Address to receive block rewards',
39
- title: 'producer.rewardAddress',
40
- type: 'string',
41
- }),
42
- }).shape)
43
-
44
- export type ProducerConfig = z.infer<typeof ProducerConfigZod>
45
-
46
- export const isProducerConfig = zodIsFactory(ProducerConfigZod)
47
- export const asProducerConfig = zodAsFactory(ProducerConfigZod, 'asProducerConfig')
48
- export const toProducerConfig = zodToFactory(ProducerConfigZod, 'toProducerConfig')
49
-
50
- export const ProducerConfigContext = BaseConfigContextZod.extend({ config: ProducerConfigZod })
51
-
52
- export type ProducerConfigContext = z.infer<typeof ProducerConfigContext>
53
-
54
- export const isProducerConfigContext = zodIsFactory(ProducerConfigContext)
55
- export const asProducerConfigContext = zodAsFactory(ProducerConfigContext, 'asProducerConfigContext')
56
- export const toProducerConfigContext = zodToFactory(ProducerConfigContext, 'toProducerConfigContext')
@@ -1,21 +0,0 @@
1
- import {
2
- zodAsFactory, zodIsFactory, zodToFactory,
3
- } from '@xylabs/sdk-js'
4
- import { BaseConfigContextZod, HostActorConfigZod } from '@xyo-network/xl1-sdk'
5
- import type { z } from 'zod'
6
-
7
- export const RewardRedemptionConfigZod = HostActorConfigZod.extend({})
8
-
9
- export type RewardRedemptionConfig = z.infer<typeof RewardRedemptionConfigZod>
10
-
11
- export const isRewardRedemptionConfig = zodIsFactory(RewardRedemptionConfigZod)
12
- export const asRewardRedemptionConfig = zodAsFactory(RewardRedemptionConfigZod, 'asRewardRedemptionConfig')
13
- export const toRewardRedemptionConfig = zodToFactory(RewardRedemptionConfigZod, 'toRewardRedemptionConfig')
14
-
15
- export const RewardRedemptionConfigContext = BaseConfigContextZod.extend({ config: RewardRedemptionConfigZod })
16
-
17
- export type RewardRedemptionConfigContext = z.infer<typeof RewardRedemptionConfigContext>
18
-
19
- export const isRewardRedemptionConfigContext = zodIsFactory(RewardRedemptionConfigContext)
20
- export const asRewardRedemptionConfigContext = zodAsFactory(RewardRedemptionConfigContext, 'asRewardRedemptionConfigContext')
21
- export const toRewardRedemptionConfigContext = zodToFactory(RewardRedemptionConfigContext, 'toRewardRedemptionConfigContext')
@@ -1,22 +0,0 @@
1
- import {
2
- AddressZod,
3
- zodAsFactory, zodIsFactory, zodToFactory,
4
- } from '@xylabs/sdk-js'
5
- import { BaseConfigContextZod, HostActorConfigZod } from '@xyo-network/xl1-sdk'
6
- import { z } from 'zod'
7
-
8
- export const ValidatorConfigZod = HostActorConfigZod.extend({ allowedProducers: z.array(AddressZod).optional() })
9
-
10
- export type ValidatorConfig = z.infer<typeof ValidatorConfigZod>
11
-
12
- export const isValidatorConfig = zodIsFactory(ValidatorConfigZod)
13
- export const asValidatorConfig = zodAsFactory(ValidatorConfigZod, 'asValidatorConfig')
14
- export const toValidatorConfig = zodToFactory(ValidatorConfigZod, 'toValidatorConfig')
15
-
16
- export const ValidatorConfigContext = BaseConfigContextZod.extend({ config: ValidatorConfigZod })
17
-
18
- export type ValidatorConfigContext = z.infer<typeof ValidatorConfigContext>
19
-
20
- export const isValidatorConfigContext = zodIsFactory(ValidatorConfigContext)
21
- export const asValidatorConfigContext = zodAsFactory(ValidatorConfigContext, 'asValidatorConfigContext')
22
- export const toValidatorConfigContext = zodToFactory(ValidatorConfigContext, 'toValidatorConfigContext')
@@ -1,7 +0,0 @@
1
- export * from './Api.ts'
2
- export * from './Api.ts'
3
- export * from './Bridge.ts'
4
- export * from './Mempool.ts'
5
- export * from './Producer.ts'
6
- export * from './RewardRedemption.ts'
7
- export * from './Validator.ts'
@@ -1,3 +0,0 @@
1
- export * from './actors/index.ts'
2
- export * from './locators/index.ts'
3
- export * from './mergeConfig.ts'
@@ -1,63 +0,0 @@
1
- import { isDefined } from '@xylabs/sdk-js'
2
- import type {
3
- CreatableProviderFactory, ProviderFactoryLocatorInstance, RemoteConfig, RpcTransport, XyoSignerRpcSchemas,
4
- } from '@xyo-network/xl1-sdk'
5
- import {
6
- JsonRpcXyoRunner, JsonRpcXyoSigner,
7
- ProviderFactoryLocator, RestDataLakeViewer,
8
- SimpleXyoConnectionRunner,
9
- SimpleXyoGatewayRunner,
10
- } from '@xyo-network/xl1-sdk'
11
-
12
- import type { BasicRemoteViewerLocatorOptions } from './basicRemoteViewerLocator.ts'
13
- import { baseBasicRemoteViewerLocator } from './basicRemoteViewerLocator.ts'
14
-
15
- export interface BasicRemoteRunnerLocatorOptions extends BasicRemoteViewerLocatorOptions {
16
- additionalRunnerProviders?: CreatableProviderFactory[]
17
- signerFactory?: CreatableProviderFactory
18
- skipGatewayRunner?: boolean
19
- }
20
-
21
- export async function baseBasicRemoteRunnerLocator(
22
- name: string,
23
- remoteConfig: RemoteConfig,
24
- signerTransport: RpcTransport<XyoSignerRpcSchemas>,
25
- dataLakeEndpoint?: string,
26
- options?: BasicRemoteRunnerLocatorOptions,
27
- ): Promise<ProviderFactoryLocatorInstance> {
28
- const remoteViewerLocator = await baseBasicRemoteViewerLocator(name, remoteConfig, dataLakeEndpoint, options)
29
- const locator = new ProviderFactoryLocator(remoteViewerLocator.context, {})
30
-
31
- const providers: CreatableProviderFactory[] = [
32
- SimpleXyoConnectionRunner.factory<SimpleXyoConnectionRunner>(SimpleXyoConnectionRunner.dependencies, {}),
33
- JsonRpcXyoRunner.factory<JsonRpcXyoRunner>(JsonRpcXyoRunner.dependencies, {}),
34
- ]
35
-
36
- if (!options?.skipGatewayRunner) {
37
- providers.push(
38
- SimpleXyoGatewayRunner.factory<SimpleXyoGatewayRunner>(SimpleXyoGatewayRunner.dependencies, {}),
39
- )
40
- }
41
-
42
- locator.registerMany([
43
- ...providers,
44
- ...options?.additionalRunnerProviders ?? [],
45
- ])
46
-
47
- if (options?.signerFactory) {
48
- locator.register(options.signerFactory)
49
- } else {
50
- locator.register(
51
- JsonRpcXyoSigner.factory<JsonRpcXyoSigner>(JsonRpcXyoSigner.dependencies, { transport: signerTransport }),
52
- )
53
- }
54
-
55
- if (isDefined(dataLakeEndpoint)) {
56
- const dataLakeViewerParams = { endpoint: dataLakeEndpoint }
57
- locator.register(RestDataLakeViewer.factory<RestDataLakeViewer>(RestDataLakeViewer.dependencies, dataLakeViewerParams))
58
- }
59
-
60
- locator.freeze()
61
-
62
- return locator
63
- }
@@ -1,44 +0,0 @@
1
- import { isDefined } from '@xylabs/sdk-js'
2
- import type { CreatableProviderFactory, RemoteConfig } from '@xyo-network/xl1-sdk'
3
- import {
4
- ActorConfigZod,
5
- ProviderFactoryLocator, RestDataLakeViewer,
6
- SimpleTransactionViewer,
7
- SimpleXyoConnectionViewer, SimpleXyoGateway,
8
- } from '@xyo-network/xl1-sdk'
9
-
10
- import { commonLocatorFromConfig } from './commonLocatorFromConfig.ts'
11
- import { remoteLocatorFromConfig } from './remoteLocatorFromConfig.ts'
12
-
13
- export interface BasicRemoteViewerLocatorOptions {
14
- additionalProviders?: CreatableProviderFactory[]
15
- }
16
-
17
- export async function baseBasicRemoteViewerLocator(
18
- name: string,
19
- remoteConfig: RemoteConfig,
20
- dataLakeEndpoint?: string,
21
- options?: BasicRemoteViewerLocatorOptions,
22
- ) {
23
- const config = ActorConfigZod.parse({ name, remote: remoteConfig })
24
- const rootLocator = await commonLocatorFromConfig({
25
- config, singletons: {}, caches: {},
26
- })
27
- const remoteLocator = await remoteLocatorFromConfig(rootLocator.context)
28
- const locator = new ProviderFactoryLocator(remoteLocator.context, {})
29
- locator.registerMany([
30
- SimpleXyoGateway.factory<SimpleXyoGateway>(SimpleXyoGateway.dependencies, {}),
31
- SimpleXyoConnectionViewer.factory<SimpleXyoConnectionViewer>(SimpleXyoConnectionViewer.dependencies, {}),
32
- SimpleTransactionViewer.factory<SimpleTransactionViewer>(SimpleTransactionViewer.dependencies, {}),
33
- ...options?.additionalProviders ?? [],
34
- ])
35
-
36
- if (isDefined(dataLakeEndpoint)) {
37
- const dataLakeViewerParams = { endpoint: dataLakeEndpoint }
38
- locator.register(RestDataLakeViewer.factory<RestDataLakeViewer>(RestDataLakeViewer.dependencies, dataLakeViewerParams))
39
- }
40
-
41
- locator.freeze()
42
-
43
- return locator
44
- }
@@ -1,40 +0,0 @@
1
- import type { Promisable } from '@xylabs/sdk-js'
2
- import type { BaseConfigContext, ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'
3
- import {
4
- ProviderFactoryLocator,
5
- SimpleBlockRewardViewer,
6
- SimpleNetworkStakeViewer,
7
- SimpleStepRewardsByPositionViewer,
8
- SimpleStepRewardsByStakerViewer,
9
- SimpleStepRewardsByStepViewer,
10
- SimpleStepRewardsTotalViewer,
11
- SimpleStepRewardsViewer,
12
- SimpleStepViewer,
13
- SimpleTimeSyncViewer,
14
- SimpleTransactionValidationViewer,
15
- SimpleTransactionViewer,
16
- SimpleWindowedBlockViewer,
17
- } from '@xyo-network/xl1-sdk'
18
-
19
- export function commonLocatorFromConfig(
20
- context: BaseConfigContext,
21
- validateDepsOnRegister = false,
22
- ): Promisable<ProviderFactoryLocatorInstance> {
23
- const locator: ProviderFactoryLocatorInstance = new ProviderFactoryLocator(context, {}, validateDepsOnRegister)
24
-
25
- locator.registerMany([
26
- SimpleNetworkStakeViewer.factory<SimpleNetworkStakeViewer>(SimpleNetworkStakeViewer.dependencies, {}),
27
- SimpleTimeSyncViewer.factory<SimpleTimeSyncViewer>(SimpleTimeSyncViewer.dependencies, {}),
28
- SimpleStepViewer.factory<SimpleStepViewer>(SimpleStepViewer.dependencies, {}),
29
- SimpleStepRewardsViewer.factory<SimpleStepRewardsViewer>(SimpleStepRewardsViewer.dependencies, {}),
30
- SimpleStepRewardsByPositionViewer.factory<SimpleStepRewardsByPositionViewer>(SimpleStepRewardsByPositionViewer.dependencies, {}),
31
- SimpleStepRewardsByStakerViewer.factory<SimpleStepRewardsByStakerViewer>(SimpleStepRewardsByStakerViewer.dependencies, {}),
32
- SimpleStepRewardsByStepViewer.factory<SimpleStepRewardsByStepViewer>(SimpleStepRewardsByStepViewer.dependencies, {}),
33
- SimpleStepRewardsTotalViewer.factory<SimpleStepRewardsTotalViewer>(SimpleStepRewardsTotalViewer.dependencies, {}),
34
- SimpleWindowedBlockViewer.factory<SimpleWindowedBlockViewer>(SimpleWindowedBlockViewer.dependencies, { maxWindowSize: 1000, syncInterval: 10_000 }),
35
- SimpleBlockRewardViewer.factory<SimpleBlockRewardViewer>(SimpleBlockRewardViewer.dependencies, {}),
36
- SimpleTransactionViewer.factory<SimpleTransactionViewer>(SimpleTransactionViewer.dependencies, {}),
37
- SimpleTransactionValidationViewer.factory<SimpleTransactionValidationViewer>(SimpleTransactionValidationViewer.dependencies, {}),
38
- ])
39
- return locator
40
- }
@@ -1,4 +0,0 @@
1
- export * from './basicRemoteRunnerLocator.ts'
2
- export * from './basicRemoteViewerLocator.ts'
3
- export * from './commonLocatorFromConfig.ts'
4
- export * from './remoteLocatorFromConfig.ts'
@@ -1,56 +0,0 @@
1
- import type { Promisable } from '@xylabs/sdk-js'
2
- import { validateHydratedBlock, validateHydratedBlockState } from '@xyo-network/chain-validation'
3
- import type {
4
- BaseConfigContext, HydratedBlockStateValidationFunction, ProviderFactoryLocatorInstance,
5
- } from '@xyo-network/xl1-sdk'
6
- import {
7
- BlockCumulativeBalanceValidatorFactory,
8
- JsonRpcAccountBalanceViewer,
9
- JsonRpcBlockViewer,
10
- JsonRpcFinalizationViewer,
11
- JsonRpcMempoolRunner,
12
- JsonRpcMempoolViewer,
13
- JsonRpcNetworkStakeViewer,
14
- JsonRpcStakeViewer,
15
- JsonRpcTransactionViewer,
16
- JsonRpcXyoViewer,
17
- ProviderFactoryLocator,
18
- SimpleBlockValidationViewer,
19
- SimpleStakeEventsViewer,
20
- } from '@xyo-network/xl1-sdk'
21
-
22
- const cumulativeBalanceValidator = BlockCumulativeBalanceValidatorFactory()
23
-
24
- const validateHydratedBlockStateWithCumulativeBalance: HydratedBlockStateValidationFunction = async (context, block) => {
25
- const [stateErrors, cumulativeErrors] = await Promise.all([
26
- validateHydratedBlockState(context, block),
27
- cumulativeBalanceValidator(context, block),
28
- ])
29
- return [...stateErrors, ...cumulativeErrors]
30
- }
31
-
32
- export function remoteLocatorFromConfig(
33
- context: BaseConfigContext,
34
- validateDepsOnRegister = false,
35
- ): Promisable<ProviderFactoryLocatorInstance> {
36
- const locator = new ProviderFactoryLocator(context, {}, validateDepsOnRegister)
37
-
38
- locator.registerMany([
39
- JsonRpcMempoolViewer.factory<JsonRpcMempoolViewer>(JsonRpcMempoolViewer.dependencies, {}),
40
- JsonRpcMempoolRunner.factory<JsonRpcMempoolRunner>(JsonRpcMempoolRunner.dependencies, {}),
41
- JsonRpcAccountBalanceViewer.factory<JsonRpcAccountBalanceViewer>(JsonRpcAccountBalanceViewer.dependencies, {}),
42
- JsonRpcFinalizationViewer.factory<JsonRpcFinalizationViewer>(JsonRpcFinalizationViewer.dependencies, {}),
43
- JsonRpcBlockViewer.factory<JsonRpcBlockViewer>(JsonRpcBlockViewer.dependencies, {}),
44
- JsonRpcTransactionViewer.factory<JsonRpcTransactionViewer>(JsonRpcTransactionViewer.dependencies, {}),
45
- JsonRpcNetworkStakeViewer.factory<JsonRpcNetworkStakeViewer>(JsonRpcNetworkStakeViewer.dependencies, {}),
46
- JsonRpcStakeViewer.factory<JsonRpcStakeViewer>(JsonRpcStakeViewer.dependencies, {}),
47
- SimpleStakeEventsViewer.factory<SimpleStakeEventsViewer>(SimpleStakeEventsViewer.dependencies, { positions: [] }),
48
- JsonRpcXyoViewer.factory<JsonRpcXyoViewer>(JsonRpcXyoViewer.dependencies, {}),
49
- SimpleBlockValidationViewer.factory<SimpleBlockValidationViewer>(
50
- SimpleBlockValidationViewer.dependencies,
51
- { state: validateHydratedBlockStateWithCumulativeBalance, protocol: validateHydratedBlock },
52
- ),
53
- ])
54
-
55
- return locator
56
- }
@@ -1,11 +0,0 @@
1
- import { deepMerge } from '@xylabs/sdk-js'
2
- import type { Config } from '@xyo-network/xl1-sdk'
3
-
4
- export function mergeConfig({ actors, ...baseConfig }: Config) {
5
- return {
6
- ...baseConfig,
7
- actors: actors.map((actor) => {
8
- return deepMerge(baseConfig, actor)
9
- }),
10
- }
11
- }
@@ -1,19 +0,0 @@
1
- import { buildNextBlock } from '@xyo-network/chain-sdk'
2
- import type { AccountInstance, WithHashMeta } from '@xyo-network/sdk-js'
3
- import type { BlockBoundWitness, XL1BlockRange } from '@xyo-network/xl1-sdk'
4
- import { createDeclarationIntent } from '@xyo-network/xl1-sdk'
5
-
6
- export async function createProducerChainStakeIntentBlock(prevBlock: WithHashMeta<BlockBoundWitness>, producerAccount: AccountInstance, range: XL1BlockRange) {
7
- const producerDeclarationPayload = createDeclarationIntent(
8
- producerAccount.address,
9
- 'producer',
10
- range[0],
11
- range[1],
12
- )
13
- return await buildNextBlock(
14
- prevBlock,
15
- [],
16
- [producerDeclarationPayload],
17
- [producerAccount],
18
- )
19
- }