@xyo-network/chain-orchestration 1.20.17 → 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.
- package/dist/browser/index.mjs +374 -86
- package/dist/browser/index.mjs.map +1 -1
- package/dist/browser/node/config/locators/actors/bridgeLocatorFromConfig.d.ts +1 -1
- package/dist/browser/node/config/locators/actors/bridgeLocatorFromConfig.d.ts.map +1 -1
- package/dist/browser/node/config/locators/localLocatorFromConfig.d.ts.map +1 -1
- package/dist/browser/node/config/locators/locatorsFromConfig.d.ts.map +1 -1
- package/dist/browser/node/config/tryParseConfig.d.ts +160 -2
- package/dist/browser/node/config/tryParseConfig.d.ts.map +1 -1
- package/dist/browser/node/index.d.ts +3 -4
- package/dist/browser/node/index.d.ts.map +1 -1
- package/dist/browser/node/init/initEvmProvidersIfAvailable.d.ts.map +1 -1
- package/dist/browser/node/init/initFinalizationArchivistIfNeeded.d.ts.map +1 -1
- package/dist/browser/node/init/initServerNode.d.ts +2 -0
- package/dist/browser/node/init/initServerNode.d.ts.map +1 -1
- package/dist/browser/node/manifest/public/index.d.ts +0 -3
- package/dist/browser/node/manifest/public/index.d.ts.map +1 -1
- package/dist/browser/shared/actor/ValidatorActor.d.ts +4 -2
- package/dist/browser/shared/actor/ValidatorActor.d.ts.map +1 -1
- package/dist/browser/shared/config/actors/Api.d.ts +23 -5
- package/dist/browser/shared/config/actors/Api.d.ts.map +1 -1
- package/dist/browser/shared/config/actors/Bridge.d.ts +23 -5
- package/dist/browser/shared/config/actors/Bridge.d.ts.map +1 -1
- package/dist/browser/shared/config/actors/Mempool.d.ts +23 -5
- package/dist/browser/shared/config/actors/Mempool.d.ts.map +1 -1
- package/dist/browser/shared/config/actors/Producer.d.ts +30 -5
- package/dist/browser/shared/config/actors/Producer.d.ts.map +1 -1
- package/dist/browser/shared/config/actors/RewardRedemption.d.ts +23 -5
- package/dist/browser/shared/config/actors/RewardRedemption.d.ts.map +1 -1
- package/dist/browser/shared/config/actors/Validator.d.ts +29 -5
- package/dist/browser/shared/config/actors/Validator.d.ts.map +1 -1
- package/dist/browser/shared/config/actors/accountIndex.d.ts +3 -0
- package/dist/browser/shared/config/actors/accountIndex.d.ts.map +1 -0
- package/dist/browser/shared/config/actors/index.d.ts +0 -1
- package/dist/browser/shared/config/actors/index.d.ts.map +1 -1
- package/dist/browser/shared/config/mergeConfig.d.ts +3 -1
- package/dist/browser/shared/config/mergeConfig.d.ts.map +1 -1
- package/dist/browser/shared/init/index.d.ts +1 -0
- package/dist/browser/shared/init/index.d.ts.map +1 -1
- package/dist/browser/shared/init/initActorAccount.d.ts.map +1 -1
- package/dist/browser/shared/init/initActorSeedPhrase.d.ts.map +1 -1
- package/dist/browser/shared/init/initWallet.d.ts +1 -1
- package/dist/browser/shared/init/initWallet.d.ts.map +1 -1
- package/dist/browser/shared/init/walletResolution.d.ts +56 -0
- package/dist/browser/shared/init/walletResolution.d.ts.map +1 -0
- package/dist/browser/shared/orchestrator/Orchestrator.d.ts +1 -1
- package/dist/browser/shared/orchestrator/Orchestrator.d.ts.map +1 -1
- package/dist/neutral/index.mjs +374 -86
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/neutral/node/config/locators/actors/bridgeLocatorFromConfig.d.ts +1 -1
- package/dist/neutral/node/config/locators/actors/bridgeLocatorFromConfig.d.ts.map +1 -1
- package/dist/neutral/node/config/locators/localLocatorFromConfig.d.ts.map +1 -1
- package/dist/neutral/node/config/locators/locatorsFromConfig.d.ts.map +1 -1
- package/dist/neutral/node/config/tryParseConfig.d.ts +160 -2
- package/dist/neutral/node/config/tryParseConfig.d.ts.map +1 -1
- package/dist/neutral/node/index.d.ts +3 -4
- package/dist/neutral/node/index.d.ts.map +1 -1
- package/dist/neutral/node/init/initEvmProvidersIfAvailable.d.ts.map +1 -1
- package/dist/neutral/node/init/initFinalizationArchivistIfNeeded.d.ts.map +1 -1
- package/dist/neutral/node/init/initServerNode.d.ts +2 -0
- package/dist/neutral/node/init/initServerNode.d.ts.map +1 -1
- package/dist/neutral/node/manifest/public/index.d.ts +0 -3
- package/dist/neutral/node/manifest/public/index.d.ts.map +1 -1
- package/dist/neutral/shared/actor/ValidatorActor.d.ts +4 -2
- package/dist/neutral/shared/actor/ValidatorActor.d.ts.map +1 -1
- package/dist/neutral/shared/config/actors/Api.d.ts +23 -5
- package/dist/neutral/shared/config/actors/Api.d.ts.map +1 -1
- package/dist/neutral/shared/config/actors/Bridge.d.ts +23 -5
- package/dist/neutral/shared/config/actors/Bridge.d.ts.map +1 -1
- package/dist/neutral/shared/config/actors/Mempool.d.ts +23 -5
- package/dist/neutral/shared/config/actors/Mempool.d.ts.map +1 -1
- package/dist/neutral/shared/config/actors/Producer.d.ts +30 -5
- package/dist/neutral/shared/config/actors/Producer.d.ts.map +1 -1
- package/dist/neutral/shared/config/actors/RewardRedemption.d.ts +23 -5
- package/dist/neutral/shared/config/actors/RewardRedemption.d.ts.map +1 -1
- package/dist/neutral/shared/config/actors/Validator.d.ts +29 -5
- package/dist/neutral/shared/config/actors/Validator.d.ts.map +1 -1
- package/dist/neutral/shared/config/actors/accountIndex.d.ts +3 -0
- package/dist/neutral/shared/config/actors/accountIndex.d.ts.map +1 -0
- package/dist/neutral/shared/config/actors/index.d.ts +0 -1
- package/dist/neutral/shared/config/actors/index.d.ts.map +1 -1
- package/dist/neutral/shared/config/mergeConfig.d.ts +3 -1
- package/dist/neutral/shared/config/mergeConfig.d.ts.map +1 -1
- package/dist/neutral/shared/init/index.d.ts +1 -0
- package/dist/neutral/shared/init/index.d.ts.map +1 -1
- package/dist/neutral/shared/init/initActorAccount.d.ts.map +1 -1
- package/dist/neutral/shared/init/initActorSeedPhrase.d.ts.map +1 -1
- package/dist/neutral/shared/init/initWallet.d.ts +1 -1
- package/dist/neutral/shared/init/initWallet.d.ts.map +1 -1
- package/dist/neutral/shared/init/walletResolution.d.ts +56 -0
- package/dist/neutral/shared/init/walletResolution.d.ts.map +1 -0
- package/dist/neutral/shared/orchestrator/Orchestrator.d.ts +1 -1
- package/dist/neutral/shared/orchestrator/Orchestrator.d.ts.map +1 -1
- package/dist/node/index.mjs +510 -477
- package/dist/node/index.mjs.map +1 -1
- package/dist/node/node/config/locators/actors/bridgeLocatorFromConfig.d.ts +1 -1
- package/dist/node/node/config/locators/actors/bridgeLocatorFromConfig.d.ts.map +1 -1
- package/dist/node/node/config/locators/localLocatorFromConfig.d.ts.map +1 -1
- package/dist/node/node/config/locators/locatorsFromConfig.d.ts.map +1 -1
- package/dist/node/node/config/tryParseConfig.d.ts +160 -2
- package/dist/node/node/config/tryParseConfig.d.ts.map +1 -1
- package/dist/node/node/index.d.ts +3 -4
- package/dist/node/node/index.d.ts.map +1 -1
- package/dist/node/node/init/initEvmProvidersIfAvailable.d.ts.map +1 -1
- package/dist/node/node/init/initFinalizationArchivistIfNeeded.d.ts.map +1 -1
- package/dist/node/node/init/initServerNode.d.ts +2 -0
- package/dist/node/node/init/initServerNode.d.ts.map +1 -1
- package/dist/node/node/manifest/public/index.d.ts +0 -3
- package/dist/node/node/manifest/public/index.d.ts.map +1 -1
- package/dist/node/shared/actor/ValidatorActor.d.ts +4 -2
- package/dist/node/shared/actor/ValidatorActor.d.ts.map +1 -1
- package/dist/node/shared/config/actors/Api.d.ts +23 -5
- package/dist/node/shared/config/actors/Api.d.ts.map +1 -1
- package/dist/node/shared/config/actors/Bridge.d.ts +23 -5
- package/dist/node/shared/config/actors/Bridge.d.ts.map +1 -1
- package/dist/node/shared/config/actors/Mempool.d.ts +23 -5
- package/dist/node/shared/config/actors/Mempool.d.ts.map +1 -1
- package/dist/node/shared/config/actors/Producer.d.ts +30 -5
- package/dist/node/shared/config/actors/Producer.d.ts.map +1 -1
- package/dist/node/shared/config/actors/RewardRedemption.d.ts +23 -5
- package/dist/node/shared/config/actors/RewardRedemption.d.ts.map +1 -1
- package/dist/node/shared/config/actors/Validator.d.ts +29 -5
- package/dist/node/shared/config/actors/Validator.d.ts.map +1 -1
- package/dist/node/shared/config/actors/accountIndex.d.ts +3 -0
- package/dist/node/shared/config/actors/accountIndex.d.ts.map +1 -0
- package/dist/node/shared/config/actors/index.d.ts +0 -1
- package/dist/node/shared/config/actors/index.d.ts.map +1 -1
- package/dist/node/shared/config/mergeConfig.d.ts +3 -1
- package/dist/node/shared/config/mergeConfig.d.ts.map +1 -1
- package/dist/node/shared/init/index.d.ts +1 -0
- package/dist/node/shared/init/index.d.ts.map +1 -1
- package/dist/node/shared/init/initActorAccount.d.ts.map +1 -1
- package/dist/node/shared/init/initActorSeedPhrase.d.ts.map +1 -1
- package/dist/node/shared/init/initWallet.d.ts +1 -1
- package/dist/node/shared/init/initWallet.d.ts.map +1 -1
- package/dist/node/shared/init/walletResolution.d.ts +56 -0
- package/dist/node/shared/init/walletResolution.d.ts.map +1 -0
- package/dist/node/shared/orchestrator/Orchestrator.d.ts +1 -1
- package/dist/node/shared/orchestrator/Orchestrator.d.ts.map +1 -1
- package/package.json +18 -25
- package/dist/browser/node/archivists/ChainFinalized/archivist.d.ts +0 -4
- package/dist/browser/node/archivists/ChainFinalized/archivist.d.ts.map +0 -1
- package/dist/browser/node/archivists/ChainFinalized/index.d.ts +0 -2
- package/dist/browser/node/archivists/ChainFinalized/index.d.ts.map +0 -1
- package/dist/browser/node/archivists/ChainFinalized/local.d.ts +0 -4
- package/dist/browser/node/archivists/ChainFinalized/local.d.ts.map +0 -1
- package/dist/browser/node/archivists/PendingBlocks/archivist.d.ts +0 -4
- package/dist/browser/node/archivists/PendingBlocks/archivist.d.ts.map +0 -1
- package/dist/browser/node/archivists/PendingBlocks/index.d.ts +0 -2
- package/dist/browser/node/archivists/PendingBlocks/index.d.ts.map +0 -1
- package/dist/browser/node/archivists/PendingBlocks/local.d.ts +0 -4
- package/dist/browser/node/archivists/PendingBlocks/local.d.ts.map +0 -1
- package/dist/browser/node/archivists/RejectedTransactions/archivist.d.ts +0 -4
- package/dist/browser/node/archivists/RejectedTransactions/archivist.d.ts.map +0 -1
- package/dist/browser/node/archivists/RejectedTransactions/index.d.ts +0 -2
- package/dist/browser/node/archivists/RejectedTransactions/index.d.ts.map +0 -1
- package/dist/browser/node/archivists/RejectedTransactions/local.d.ts +0 -3
- package/dist/browser/node/archivists/RejectedTransactions/local.d.ts.map +0 -1
- package/dist/browser/node/archivists/StakeIntentState/archivist.d.ts +0 -4
- package/dist/browser/node/archivists/StakeIntentState/archivist.d.ts.map +0 -1
- package/dist/browser/node/archivists/StakeIntentState/index.d.ts +0 -2
- package/dist/browser/node/archivists/StakeIntentState/index.d.ts.map +0 -1
- package/dist/browser/node/archivists/StakeIntentState/local.d.ts +0 -4
- package/dist/browser/node/archivists/StakeIntentState/local.d.ts.map +0 -1
- package/dist/browser/node/archivists/index.d.ts +0 -5
- package/dist/browser/node/archivists/index.d.ts.map +0 -1
- package/dist/browser/node/archivists/lib/index.d.ts +0 -2
- package/dist/browser/node/archivists/lib/index.d.ts.map +0 -1
- package/dist/browser/node/archivists/lib/localPersistentArchivist.d.ts +0 -21
- package/dist/browser/node/archivists/lib/localPersistentArchivist.d.ts.map +0 -1
- package/dist/browser/node/evm/index.d.ts +0 -5
- package/dist/browser/node/evm/index.d.ts.map +0 -1
- package/dist/browser/node/evm/initChainId.d.ts +0 -4
- package/dist/browser/node/evm/initChainId.d.ts.map +0 -1
- package/dist/browser/node/evm/initEvmProvider.d.ts +0 -5
- package/dist/browser/node/evm/initEvmProvider.d.ts.map +0 -1
- package/dist/browser/node/evm/initInfuraProvider.d.ts +0 -6
- package/dist/browser/node/evm/initInfuraProvider.d.ts.map +0 -1
- package/dist/browser/node/evm/initJsonRpcProvider.d.ts +0 -6
- package/dist/browser/node/evm/initJsonRpcProvider.d.ts.map +0 -1
- package/dist/browser/node/health/index.d.ts +0 -2
- package/dist/browser/node/health/index.d.ts.map +0 -1
- package/dist/browser/node/health/initHealthEndpoints.d.ts +0 -5
- package/dist/browser/node/health/initHealthEndpoints.d.ts.map +0 -1
- package/dist/browser/node/sharedMiddleware.d.ts +0 -3
- package/dist/browser/node/sharedMiddleware.d.ts.map +0 -1
- package/dist/neutral/node/archivists/ChainFinalized/archivist.d.ts +0 -4
- package/dist/neutral/node/archivists/ChainFinalized/archivist.d.ts.map +0 -1
- package/dist/neutral/node/archivists/ChainFinalized/index.d.ts +0 -2
- package/dist/neutral/node/archivists/ChainFinalized/index.d.ts.map +0 -1
- package/dist/neutral/node/archivists/ChainFinalized/local.d.ts +0 -4
- package/dist/neutral/node/archivists/ChainFinalized/local.d.ts.map +0 -1
- package/dist/neutral/node/archivists/PendingBlocks/archivist.d.ts +0 -4
- package/dist/neutral/node/archivists/PendingBlocks/archivist.d.ts.map +0 -1
- package/dist/neutral/node/archivists/PendingBlocks/index.d.ts +0 -2
- package/dist/neutral/node/archivists/PendingBlocks/index.d.ts.map +0 -1
- package/dist/neutral/node/archivists/PendingBlocks/local.d.ts +0 -4
- package/dist/neutral/node/archivists/PendingBlocks/local.d.ts.map +0 -1
- package/dist/neutral/node/archivists/RejectedTransactions/archivist.d.ts +0 -4
- package/dist/neutral/node/archivists/RejectedTransactions/archivist.d.ts.map +0 -1
- package/dist/neutral/node/archivists/RejectedTransactions/index.d.ts +0 -2
- package/dist/neutral/node/archivists/RejectedTransactions/index.d.ts.map +0 -1
- package/dist/neutral/node/archivists/RejectedTransactions/local.d.ts +0 -3
- package/dist/neutral/node/archivists/RejectedTransactions/local.d.ts.map +0 -1
- package/dist/neutral/node/archivists/StakeIntentState/archivist.d.ts +0 -4
- package/dist/neutral/node/archivists/StakeIntentState/archivist.d.ts.map +0 -1
- package/dist/neutral/node/archivists/StakeIntentState/index.d.ts +0 -2
- package/dist/neutral/node/archivists/StakeIntentState/index.d.ts.map +0 -1
- package/dist/neutral/node/archivists/StakeIntentState/local.d.ts +0 -4
- package/dist/neutral/node/archivists/StakeIntentState/local.d.ts.map +0 -1
- package/dist/neutral/node/archivists/index.d.ts +0 -5
- package/dist/neutral/node/archivists/index.d.ts.map +0 -1
- package/dist/neutral/node/archivists/lib/index.d.ts +0 -2
- package/dist/neutral/node/archivists/lib/index.d.ts.map +0 -1
- package/dist/neutral/node/archivists/lib/localPersistentArchivist.d.ts +0 -21
- package/dist/neutral/node/archivists/lib/localPersistentArchivist.d.ts.map +0 -1
- package/dist/neutral/node/evm/index.d.ts +0 -5
- package/dist/neutral/node/evm/index.d.ts.map +0 -1
- package/dist/neutral/node/evm/initChainId.d.ts +0 -4
- package/dist/neutral/node/evm/initChainId.d.ts.map +0 -1
- package/dist/neutral/node/evm/initEvmProvider.d.ts +0 -5
- package/dist/neutral/node/evm/initEvmProvider.d.ts.map +0 -1
- package/dist/neutral/node/evm/initInfuraProvider.d.ts +0 -6
- package/dist/neutral/node/evm/initInfuraProvider.d.ts.map +0 -1
- package/dist/neutral/node/evm/initJsonRpcProvider.d.ts +0 -6
- package/dist/neutral/node/evm/initJsonRpcProvider.d.ts.map +0 -1
- package/dist/neutral/node/health/index.d.ts +0 -2
- package/dist/neutral/node/health/index.d.ts.map +0 -1
- package/dist/neutral/node/health/initHealthEndpoints.d.ts +0 -5
- package/dist/neutral/node/health/initHealthEndpoints.d.ts.map +0 -1
- package/dist/neutral/node/sharedMiddleware.d.ts +0 -3
- package/dist/neutral/node/sharedMiddleware.d.ts.map +0 -1
- package/dist/node/node/archivists/ChainFinalized/archivist.d.ts +0 -4
- package/dist/node/node/archivists/ChainFinalized/archivist.d.ts.map +0 -1
- package/dist/node/node/archivists/ChainFinalized/index.d.ts +0 -2
- package/dist/node/node/archivists/ChainFinalized/index.d.ts.map +0 -1
- package/dist/node/node/archivists/ChainFinalized/local.d.ts +0 -4
- package/dist/node/node/archivists/ChainFinalized/local.d.ts.map +0 -1
- package/dist/node/node/archivists/PendingBlocks/archivist.d.ts +0 -4
- package/dist/node/node/archivists/PendingBlocks/archivist.d.ts.map +0 -1
- package/dist/node/node/archivists/PendingBlocks/index.d.ts +0 -2
- package/dist/node/node/archivists/PendingBlocks/index.d.ts.map +0 -1
- package/dist/node/node/archivists/PendingBlocks/local.d.ts +0 -4
- package/dist/node/node/archivists/PendingBlocks/local.d.ts.map +0 -1
- package/dist/node/node/archivists/RejectedTransactions/archivist.d.ts +0 -4
- package/dist/node/node/archivists/RejectedTransactions/archivist.d.ts.map +0 -1
- package/dist/node/node/archivists/RejectedTransactions/index.d.ts +0 -2
- package/dist/node/node/archivists/RejectedTransactions/index.d.ts.map +0 -1
- package/dist/node/node/archivists/RejectedTransactions/local.d.ts +0 -3
- package/dist/node/node/archivists/RejectedTransactions/local.d.ts.map +0 -1
- package/dist/node/node/archivists/StakeIntentState/archivist.d.ts +0 -4
- package/dist/node/node/archivists/StakeIntentState/archivist.d.ts.map +0 -1
- package/dist/node/node/archivists/StakeIntentState/index.d.ts +0 -2
- package/dist/node/node/archivists/StakeIntentState/index.d.ts.map +0 -1
- package/dist/node/node/archivists/StakeIntentState/local.d.ts +0 -4
- package/dist/node/node/archivists/StakeIntentState/local.d.ts.map +0 -1
- package/dist/node/node/archivists/index.d.ts +0 -5
- package/dist/node/node/archivists/index.d.ts.map +0 -1
- package/dist/node/node/archivists/lib/index.d.ts +0 -2
- package/dist/node/node/archivists/lib/index.d.ts.map +0 -1
- package/dist/node/node/archivists/lib/localPersistentArchivist.d.ts +0 -21
- package/dist/node/node/archivists/lib/localPersistentArchivist.d.ts.map +0 -1
- package/dist/node/node/evm/index.d.ts +0 -5
- package/dist/node/node/evm/index.d.ts.map +0 -1
- package/dist/node/node/evm/initChainId.d.ts +0 -4
- package/dist/node/node/evm/initChainId.d.ts.map +0 -1
- package/dist/node/node/evm/initEvmProvider.d.ts +0 -5
- package/dist/node/node/evm/initEvmProvider.d.ts.map +0 -1
- package/dist/node/node/evm/initInfuraProvider.d.ts +0 -6
- package/dist/node/node/evm/initInfuraProvider.d.ts.map +0 -1
- package/dist/node/node/evm/initJsonRpcProvider.d.ts +0 -6
- package/dist/node/node/evm/initJsonRpcProvider.d.ts.map +0 -1
- package/dist/node/node/health/index.d.ts +0 -2
- package/dist/node/node/health/index.d.ts.map +0 -1
- package/dist/node/node/health/initHealthEndpoints.d.ts +0 -5
- package/dist/node/node/health/initHealthEndpoints.d.ts.map +0 -1
- package/dist/node/node/sharedMiddleware.d.ts +0 -3
- package/dist/node/node/sharedMiddleware.d.ts.map +0 -1
package/dist/node/index.mjs
CHANGED
|
@@ -4,7 +4,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
4
4
|
// src/shared/actor/ValidatorActor.ts
|
|
5
5
|
import { creatable } from "@xylabs/sdk-js";
|
|
6
6
|
import { processPendingBlocks } from "@xyo-network/chain-sdk";
|
|
7
|
-
import { ActorV3, BlockValidationViewerMoniker, BlockViewerMoniker, FinalizationRunnerMoniker, MempoolViewerMoniker } from "@xyo-network/xl1-sdk";
|
|
7
|
+
import { ActorV3, BlockValidationViewerMoniker, BlockViewerMoniker, DeadLetterQueueRunnerMoniker, FinalizationRunnerMoniker, MempoolViewerMoniker } from "@xyo-network/xl1-sdk";
|
|
8
8
|
function _ts_decorate(decorators, target, key, desc) {
|
|
9
9
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
10
10
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -18,6 +18,7 @@ var ValidatorActor = class extends ActorV3 {
|
|
|
18
18
|
}
|
|
19
19
|
_blockValidationViewer;
|
|
20
20
|
_blockViewer;
|
|
21
|
+
_deadLetterQueueRunner;
|
|
21
22
|
_finalizationRunner;
|
|
22
23
|
_lastValidatedBlock;
|
|
23
24
|
_lastValidatedBlockHash;
|
|
@@ -37,18 +38,22 @@ var ValidatorActor = class extends ActorV3 {
|
|
|
37
38
|
get mempoolViewer() {
|
|
38
39
|
return this._mempoolViewer;
|
|
39
40
|
}
|
|
41
|
+
get minCandidates() {
|
|
42
|
+
return this.params.config.minCandidates;
|
|
43
|
+
}
|
|
40
44
|
async createHandler() {
|
|
41
45
|
await super.startHandler();
|
|
42
46
|
this._blockValidationViewer = await this.locator.getInstance(BlockValidationViewerMoniker);
|
|
43
47
|
this._blockViewer = await this.locator.getInstance(BlockViewerMoniker);
|
|
44
48
|
this._finalizationRunner = await this.locator.getInstance(FinalizationRunnerMoniker);
|
|
45
49
|
this._mempoolViewer = await this.locator.getInstance(MempoolViewerMoniker);
|
|
50
|
+
this._deadLetterQueueRunner = await this.locator.tryGetInstance(DeadLetterQueueRunnerMoniker);
|
|
46
51
|
}
|
|
47
52
|
async startHandler() {
|
|
48
53
|
await super.startHandler();
|
|
49
54
|
this.registerTimer("ValidatorActor", async () => {
|
|
50
55
|
await this.spanAsync("processPendingBlocks", async () => {
|
|
51
|
-
|
|
56
|
+
this.logger?.debug("ValidatorActor: Processing pending blocks...");
|
|
52
57
|
await processPendingBlocks({
|
|
53
58
|
blockValidationViewer: this.blockValidationViewer,
|
|
54
59
|
context: this.context,
|
|
@@ -56,7 +61,9 @@ var ValidatorActor = class extends ActorV3 {
|
|
|
56
61
|
mempoolViewer: this.mempoolViewer,
|
|
57
62
|
blockViewer: this.blockViewer,
|
|
58
63
|
finalizationRunner: this.finalizationRunner,
|
|
59
|
-
allowedProducers: this.allowedProducers
|
|
64
|
+
allowedProducers: this.allowedProducers,
|
|
65
|
+
minCandidates: this.minCandidates,
|
|
66
|
+
deadLetterQueueRunner: this._deadLetterQueueRunner
|
|
60
67
|
});
|
|
61
68
|
}, {
|
|
62
69
|
...this.context,
|
|
@@ -91,13 +98,24 @@ __name(buildTelemetryConfig, "buildTelemetryConfig");
|
|
|
91
98
|
// src/shared/config/actors/Api.ts
|
|
92
99
|
import { zodAsFactory, zodIsFactory, zodToFactory } from "@xylabs/sdk-js";
|
|
93
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
|
|
94
104
|
import { globalRegistry, z } from "zod";
|
|
95
|
-
var
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
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, {
|
|
101
119
|
description: "Whether to initialize the rewards cache on startup",
|
|
102
120
|
title: "api.initRewardsCache",
|
|
103
121
|
type: "boolean"
|
|
@@ -116,7 +134,7 @@ var toApiConfigContext = zodToFactory(ApiConfigContext, "toApiConfigContext");
|
|
|
116
134
|
// src/shared/config/actors/Bridge.ts
|
|
117
135
|
import { AddressZod, HexZod, toAddress, toHex, zodAsFactory as zodAsFactory2, zodIsFactory as zodIsFactory2, zodToFactory as zodToFactory2 } from "@xylabs/sdk-js";
|
|
118
136
|
import { AttoXL1ConvertFactor, BaseConfigContextZod as BaseConfigContextZod2, HostActorConfigZod as HostActorConfigZod2, XL1 } from "@xyo-network/xl1-sdk";
|
|
119
|
-
import { globalRegistry as
|
|
137
|
+
import { globalRegistry as globalRegistry3, z as z3 } from "zod";
|
|
120
138
|
var DEFAULT_FIXED_FEE = toHex(XL1(1000n) * AttoXL1ConvertFactor.xl1);
|
|
121
139
|
var DEFAULT_VARIABLE_FEE_BASIS_POINTS = 300;
|
|
122
140
|
var DEFAULT_HARDHAT_BRIDGE_CONTRACT = toAddress("2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6");
|
|
@@ -125,83 +143,84 @@ var DEFAULT_HARDHAT_REMOTE_CHAIN_WALLET_PRIVATE_KEY = toHex("0xac0974bec39a17e36
|
|
|
125
143
|
var DEFAULT_HARDHAT_TOKEN_CONTRACT = toAddress("5FbDB2315678afecb367f032d93F642f64180aa3");
|
|
126
144
|
var DEFAULT_MAX_BRIDGE_AMOUNT = toHex(XL1(1000000n) * AttoXL1ConvertFactor.xl1);
|
|
127
145
|
var DEFAULT_MIN_BRIDGE_AMOUNT = toHex(XL1(1500n) * AttoXL1ConvertFactor.xl1);
|
|
128
|
-
var BasisPointsZod =
|
|
146
|
+
var BasisPointsZod = z3.coerce.number().int().nonnegative().max(1e4);
|
|
129
147
|
var BridgeConfigZod = HostActorConfigZod2.extend({
|
|
130
|
-
|
|
148
|
+
accountIndex: ActorAccountIndexZod("bridge.accountIndex"),
|
|
149
|
+
escrowAddress: AddressZod.optional().register(globalRegistry3, {
|
|
131
150
|
description: "Address to which bridge escrow will be sent",
|
|
132
151
|
title: "bridge.escrowAddress",
|
|
133
152
|
type: "string"
|
|
134
153
|
}),
|
|
135
|
-
feesAddress: AddressZod.optional().register(
|
|
154
|
+
feesAddress: AddressZod.optional().register(globalRegistry3, {
|
|
136
155
|
description: "Address to which bridge fees will be sent",
|
|
137
156
|
title: "bridge.feesAddress",
|
|
138
157
|
type: "string"
|
|
139
158
|
}),
|
|
140
|
-
feeFixed: HexZod.default(DEFAULT_FIXED_FEE).register(
|
|
159
|
+
feeFixed: HexZod.default(DEFAULT_FIXED_FEE).register(globalRegistry3, {
|
|
141
160
|
default: DEFAULT_FIXED_FEE,
|
|
142
161
|
description: "Fixed fee (in AttoXL1) applied to bridge transfers",
|
|
143
162
|
title: "bridge.feeFixed",
|
|
144
163
|
type: "bigint"
|
|
145
164
|
}),
|
|
146
|
-
feeRateBasisPoints: BasisPointsZod.default(DEFAULT_VARIABLE_FEE_BASIS_POINTS).register(
|
|
165
|
+
feeRateBasisPoints: BasisPointsZod.default(DEFAULT_VARIABLE_FEE_BASIS_POINTS).register(globalRegistry3, {
|
|
147
166
|
default: DEFAULT_VARIABLE_FEE_BASIS_POINTS,
|
|
148
167
|
description: "Variable rate fee (in basis points where 1 bps = 0.01%) applied to bridge transfers",
|
|
149
168
|
title: "bridge.feeRateBasisPoints",
|
|
150
169
|
type: "number"
|
|
151
170
|
}),
|
|
152
|
-
maxBridgeAmount: HexZod.default(DEFAULT_MAX_BRIDGE_AMOUNT).register(
|
|
171
|
+
maxBridgeAmount: HexZod.default(DEFAULT_MAX_BRIDGE_AMOUNT).register(globalRegistry3, {
|
|
153
172
|
default: DEFAULT_MAX_BRIDGE_AMOUNT,
|
|
154
173
|
description: "Maximum amount allowed for a bridge transfer",
|
|
155
174
|
title: "bridge.maxBridgeAmount",
|
|
156
175
|
type: "string"
|
|
157
176
|
}),
|
|
158
|
-
minBridgeAmount: HexZod.default(DEFAULT_MIN_BRIDGE_AMOUNT).register(
|
|
177
|
+
minBridgeAmount: HexZod.default(DEFAULT_MIN_BRIDGE_AMOUNT).register(globalRegistry3, {
|
|
159
178
|
default: DEFAULT_MIN_BRIDGE_AMOUNT,
|
|
160
179
|
description: "Minimum amount required for a bridge transfer",
|
|
161
180
|
title: "bridge.minBridgeAmount",
|
|
162
181
|
type: "string"
|
|
163
182
|
}),
|
|
164
|
-
redisHost:
|
|
183
|
+
redisHost: z3.string().default("localhost").register(globalRegistry3, {
|
|
165
184
|
default: "localhost",
|
|
166
185
|
description: "Host for the Bridge Redis instance",
|
|
167
186
|
title: "bridge.redisHost",
|
|
168
187
|
type: "string"
|
|
169
188
|
}),
|
|
170
|
-
redisPort:
|
|
189
|
+
redisPort: z3.coerce.number().int().positive().default(6379).register(globalRegistry3, {
|
|
171
190
|
default: 6379,
|
|
172
191
|
description: "Port for the Bridge Redis instance",
|
|
173
192
|
title: "bridge.redisPort",
|
|
174
193
|
type: "number"
|
|
175
194
|
}),
|
|
176
|
-
remoteBridgeContractAddress: AddressZod.default(DEFAULT_HARDHAT_BRIDGE_CONTRACT).register(
|
|
195
|
+
remoteBridgeContractAddress: AddressZod.default(DEFAULT_HARDHAT_BRIDGE_CONTRACT).register(globalRegistry3, {
|
|
177
196
|
default: DEFAULT_HARDHAT_BRIDGE_CONTRACT,
|
|
178
197
|
description: "Hex representation of remote token address used for bridging",
|
|
179
198
|
title: "bridge.remoteBridgeContractAddress",
|
|
180
199
|
type: "string"
|
|
181
200
|
}),
|
|
182
|
-
remoteChainId: HexZod.default(DEFAULT_HARDHAT_CHAIN_ID).register(
|
|
201
|
+
remoteChainId: HexZod.default(DEFAULT_HARDHAT_CHAIN_ID).register(globalRegistry3, {
|
|
183
202
|
default: DEFAULT_HARDHAT_CHAIN_ID,
|
|
184
203
|
description: "Remote chain ID",
|
|
185
204
|
title: "bridge.remoteChainId",
|
|
186
205
|
type: "string"
|
|
187
206
|
}),
|
|
188
|
-
remoteTokenAddress: HexZod.default(DEFAULT_HARDHAT_TOKEN_CONTRACT).register(
|
|
207
|
+
remoteTokenAddress: HexZod.default(DEFAULT_HARDHAT_TOKEN_CONTRACT).register(globalRegistry3, {
|
|
189
208
|
default: DEFAULT_HARDHAT_TOKEN_CONTRACT,
|
|
190
209
|
description: "Hex representation of remote token address used for bridging",
|
|
191
210
|
title: "bridge.remoteTokenAddress",
|
|
192
211
|
type: "string"
|
|
193
212
|
}),
|
|
194
|
-
remoteChainWalletPrivateKey: HexZod.default(DEFAULT_HARDHAT_REMOTE_CHAIN_WALLET_PRIVATE_KEY).register(
|
|
213
|
+
remoteChainWalletPrivateKey: HexZod.default(DEFAULT_HARDHAT_REMOTE_CHAIN_WALLET_PRIVATE_KEY).register(globalRegistry3, {
|
|
195
214
|
description: "Private key for the wallet to use for the remote chain wallet",
|
|
196
215
|
title: "bridge.remoteChainWalletPrivateKey",
|
|
197
216
|
type: "string"
|
|
198
217
|
}),
|
|
199
|
-
xl1ChainId: HexZod.optional().register(
|
|
218
|
+
xl1ChainId: HexZod.optional().register(globalRegistry3, {
|
|
200
219
|
description: "XL1 chain id used for bridging",
|
|
201
220
|
title: "bridge.xl1ChainId",
|
|
202
221
|
type: "string"
|
|
203
222
|
}),
|
|
204
|
-
xl1TokenAddress: HexZod.optional().register(
|
|
223
|
+
xl1TokenAddress: HexZod.optional().register(globalRegistry3, {
|
|
205
224
|
description: "XL1 token address used for bridging",
|
|
206
225
|
title: "bridge.xl1TokenAddress",
|
|
207
226
|
type: "string"
|
|
@@ -232,11 +251,12 @@ var toBridgeConfigContext = zodToFactory2(BridgeConfigContext, "toBridgeConfigCo
|
|
|
232
251
|
// src/shared/config/actors/Mempool.ts
|
|
233
252
|
import { zodAsFactory as zodAsFactory3, zodIsFactory as zodIsFactory3, zodToFactory as zodToFactory3 } from "@xylabs/sdk-js";
|
|
234
253
|
import { BaseConfigContextZod as BaseConfigContextZod3, HostActorConfigZod as HostActorConfigZod3 } from "@xyo-network/xl1-sdk";
|
|
235
|
-
import { globalRegistry as
|
|
254
|
+
import { globalRegistry as globalRegistry4, z as z4 } from "zod";
|
|
236
255
|
var MempoolConfigZod = HostActorConfigZod3.extend({
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
256
|
+
accountIndex: ActorAccountIndexZod("mempool.accountIndex"),
|
|
257
|
+
enabled: z4.union([
|
|
258
|
+
z4.string(),
|
|
259
|
+
z4.boolean()
|
|
240
260
|
]).default("false").transform((val, ctx) => {
|
|
241
261
|
if (typeof val === "boolean") return val;
|
|
242
262
|
const normalized = val.toLowerCase().trim();
|
|
@@ -257,8 +277,8 @@ var MempoolConfigZod = HostActorConfigZod3.extend({
|
|
|
257
277
|
expected: "boolean",
|
|
258
278
|
message: `Invalid boolean value: "${val}". Use true/false, 1/0, yes/no.`
|
|
259
279
|
});
|
|
260
|
-
return
|
|
261
|
-
}).register(
|
|
280
|
+
return z4.NEVER;
|
|
281
|
+
}).register(globalRegistry4, {
|
|
262
282
|
default: "false",
|
|
263
283
|
description: "Enable the Mempool",
|
|
264
284
|
title: "mempool.enabled",
|
|
@@ -278,36 +298,43 @@ var toMempoolConfigContext = zodToFactory3(MempoolConfigContext, "toMempoolConfi
|
|
|
278
298
|
// src/shared/config/actors/Producer.ts
|
|
279
299
|
import { AddressZod as AddressZod2, asAddress, zodAsFactory as zodAsFactory4, zodIsFactory as zodIsFactory4, zodToFactory as zodToFactory4 } from "@xylabs/sdk-js";
|
|
280
300
|
import { ActorConfigZod, BaseConfigContextZod as BaseConfigContextZod4 } from "@xyo-network/xl1-sdk";
|
|
281
|
-
import { globalRegistry as
|
|
282
|
-
var
|
|
283
|
-
|
|
301
|
+
import { globalRegistry as globalRegistry5, z as z5 } from "zod";
|
|
302
|
+
var DEFAULT_BLOCK_PRODUCTION_CHECK_INTERVAL = 1e4;
|
|
303
|
+
var ProducerConfigZod = ActorConfigZod.extend(z5.object({
|
|
304
|
+
accountIndex: ActorAccountIndexZod("producer.accountIndex"),
|
|
305
|
+
allowlist: z5.preprocess((val) => {
|
|
284
306
|
if (typeof val === "string") {
|
|
285
307
|
return val.split(",").map((s) => asAddress(s.trim()));
|
|
286
308
|
}
|
|
287
309
|
return val;
|
|
288
|
-
},
|
|
310
|
+
}, z5.array(AddressZod2).optional().register(globalRegistry5, {
|
|
289
311
|
description: "List of allowed producer addresses, if undefined anyone can participate",
|
|
290
312
|
title: "allowlist",
|
|
291
313
|
type: "array"
|
|
292
314
|
})),
|
|
293
|
-
|
|
315
|
+
blockProductionCheckInterval: z5.coerce.number().default(DEFAULT_BLOCK_PRODUCTION_CHECK_INTERVAL).register(globalRegistry5, {
|
|
316
|
+
description: "The interval time (in milliseconds) between block production attempts",
|
|
317
|
+
title: "producer.blockProductionCheckInterval",
|
|
318
|
+
type: "number"
|
|
319
|
+
}),
|
|
320
|
+
disableIntentRedeclaration: z5.boolean().optional().register(globalRegistry5, {
|
|
294
321
|
description: "Should the producer skip redeclaring their intent to continue producing blocks",
|
|
295
322
|
title: "producer.disableIntentRedeclaration",
|
|
296
323
|
type: "boolean"
|
|
297
324
|
}),
|
|
298
|
-
heartbeatInterval:
|
|
325
|
+
heartbeatInterval: z5.coerce.number().default(36e5).register(globalRegistry5, {
|
|
299
326
|
description: "The number of milliseconds between heartbeats if no blocks are produced",
|
|
300
327
|
title: "producer.heartbeatInterval",
|
|
301
328
|
type: "number"
|
|
302
329
|
}),
|
|
303
330
|
// TODO: BigInt schema
|
|
304
|
-
minStake:
|
|
331
|
+
minStake: z5.coerce.number().default(1).register(globalRegistry5, {
|
|
305
332
|
description: "Minimum stake required to be a Producer",
|
|
306
333
|
title: "producer.minStake",
|
|
307
334
|
type: "number"
|
|
308
335
|
}),
|
|
309
336
|
// TODO: Address schema
|
|
310
|
-
rewardAddress:
|
|
337
|
+
rewardAddress: z5.string().optional().register(globalRegistry5, {
|
|
311
338
|
description: "Address to receive block rewards",
|
|
312
339
|
title: "producer.rewardAddress",
|
|
313
340
|
type: "string"
|
|
@@ -326,7 +353,9 @@ var toProducerConfigContext = zodToFactory4(ProducerConfigContext, "toProducerCo
|
|
|
326
353
|
// src/shared/config/actors/RewardRedemption.ts
|
|
327
354
|
import { zodAsFactory as zodAsFactory5, zodIsFactory as zodIsFactory5, zodToFactory as zodToFactory5 } from "@xylabs/sdk-js";
|
|
328
355
|
import { BaseConfigContextZod as BaseConfigContextZod5, HostActorConfigZod as HostActorConfigZod4 } from "@xyo-network/xl1-sdk";
|
|
329
|
-
var RewardRedemptionConfigZod = HostActorConfigZod4.extend({
|
|
356
|
+
var RewardRedemptionConfigZod = HostActorConfigZod4.extend({
|
|
357
|
+
accountIndex: ActorAccountIndexZod("rewardRedemption.accountIndex")
|
|
358
|
+
});
|
|
330
359
|
var isRewardRedemptionConfig = zodIsFactory5(RewardRedemptionConfigZod);
|
|
331
360
|
var asRewardRedemptionConfig = zodAsFactory5(RewardRedemptionConfigZod, "asRewardRedemptionConfig");
|
|
332
361
|
var toRewardRedemptionConfig = zodToFactory5(RewardRedemptionConfigZod, "toRewardRedemptionConfig");
|
|
@@ -340,9 +369,11 @@ var toRewardRedemptionConfigContext = zodToFactory5(RewardRedemptionConfigContex
|
|
|
340
369
|
// src/shared/config/actors/Validator.ts
|
|
341
370
|
import { AddressZod as AddressZod3, zodAsFactory as zodAsFactory6, zodIsFactory as zodIsFactory6, zodToFactory as zodToFactory6 } from "@xylabs/sdk-js";
|
|
342
371
|
import { BaseConfigContextZod as BaseConfigContextZod6, HostActorConfigZod as HostActorConfigZod5 } from "@xyo-network/xl1-sdk";
|
|
343
|
-
import { z as
|
|
372
|
+
import { z as z6 } from "zod";
|
|
344
373
|
var ValidatorConfigZod = HostActorConfigZod5.extend({
|
|
345
|
-
|
|
374
|
+
accountIndex: ActorAccountIndexZod("validator.accountIndex"),
|
|
375
|
+
allowedProducers: z6.array(AddressZod3).optional(),
|
|
376
|
+
minCandidates: z6.number().int().min(0).optional()
|
|
346
377
|
});
|
|
347
378
|
var isValidatorConfig = zodIsFactory6(ValidatorConfigZod);
|
|
348
379
|
var asValidatorConfig = zodAsFactory6(ValidatorConfigZod, "asValidatorConfig");
|
|
@@ -419,26 +450,279 @@ var ServiceLifetime = {
|
|
|
419
450
|
};
|
|
420
451
|
|
|
421
452
|
// src/shared/init/initActorAccount.ts
|
|
422
|
-
import { isDefined
|
|
423
|
-
|
|
424
|
-
|
|
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
|
|
425
719
|
var actorAccountSingletons = {};
|
|
426
720
|
async function initActorAccount({ config, logger }) {
|
|
427
721
|
const actorName = config.name;
|
|
428
722
|
if (isDefined(actorAccountSingletons[actorName])) return actorAccountSingletons[actorName];
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
const randomMnemonic = HDWallet.generateMnemonic();
|
|
433
|
-
logger?.warn(`[${actorName}}] Using randomly generated mnemonic:
|
|
434
|
-
|
|
435
|
-
${randomMnemonic}
|
|
436
|
-
|
|
437
|
-
`);
|
|
438
|
-
walletPhrase = randomMnemonic;
|
|
439
|
-
}
|
|
440
|
-
const wallet = await generateXyoBaseWalletFromPhrase(walletPhrase);
|
|
441
|
-
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}`);
|
|
442
726
|
actorAccountSingletons[actorName] = account;
|
|
443
727
|
return actorAccountSingletons[actorName];
|
|
444
728
|
}
|
|
@@ -446,28 +730,18 @@ __name(initActorAccount, "initActorAccount");
|
|
|
446
730
|
|
|
447
731
|
// src/shared/init/initActorSeedPhrase.ts
|
|
448
732
|
import { assertEx, isString } from "@xylabs/sdk-js";
|
|
449
|
-
import { HDWallet as HDWallet2 } from "@xyo-network/sdk-js";
|
|
450
733
|
async function initActorSeedPhrase(context, bios) {
|
|
451
734
|
const { logger, config } = context;
|
|
452
735
|
const walletKind = config.name;
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
const
|
|
456
|
-
if (isString(
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
seedPhrase = mnemonic;
|
|
463
|
-
} else {
|
|
464
|
-
seedPhrase = HDWallet2.generateMnemonic();
|
|
465
|
-
logger?.log("[API] No mnemonic provided, using random mnemonic. This is not recommended for production use.");
|
|
466
|
-
logger?.log(`[API] Mnemonic: ${seedPhrase}`);
|
|
467
|
-
}
|
|
468
|
-
await bios.seedPhraseStore.set(walletKind, seedPhrase);
|
|
469
|
-
}
|
|
470
|
-
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");
|
|
471
745
|
}
|
|
472
746
|
__name(initActorSeedPhrase, "initActorSeedPhrase");
|
|
473
747
|
|
|
@@ -521,13 +795,10 @@ function initStatusReporter({ logger }) {
|
|
|
521
795
|
__name(initStatusReporter, "initStatusReporter");
|
|
522
796
|
|
|
523
797
|
// src/shared/init/initWallet.ts
|
|
524
|
-
import { isDefined as isDefined2 } from "@xylabs/sdk-js";
|
|
525
|
-
import { boot } from "@xyo-network/bios";
|
|
526
|
-
import { HDWallet as HDWallet3 } from "@xyo-network/sdk-js";
|
|
527
798
|
async function initActorWallet(context, mnemonic) {
|
|
528
|
-
const
|
|
529
|
-
const
|
|
530
|
-
return await
|
|
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);
|
|
531
802
|
}
|
|
532
803
|
__name(initActorWallet, "initActorWallet");
|
|
533
804
|
|
|
@@ -596,177 +867,6 @@ Orchestrator = _ts_decorate2([
|
|
|
596
867
|
creatable2()
|
|
597
868
|
], Orchestrator);
|
|
598
869
|
|
|
599
|
-
// src/node/archivists/ChainFinalized/archivist.ts
|
|
600
|
-
import { timeBudget } from "@xylabs/sdk-js";
|
|
601
|
-
import { startupSpanAsync } from "@xyo-network/chain-utils";
|
|
602
|
-
import { Mutex as Mutex3 } from "async-mutex";
|
|
603
|
-
|
|
604
|
-
// src/node/archivists/ChainFinalized/local.ts
|
|
605
|
-
import { Mutex as Mutex2 } from "async-mutex";
|
|
606
|
-
|
|
607
|
-
// src/node/archivists/lib/localPersistentArchivist.ts
|
|
608
|
-
import { rm } from "fs/promises";
|
|
609
|
-
import Path from "path";
|
|
610
|
-
import { LmdbArchivist, LmdbArchivistConfigSchema } from "@xyo-network/archivist-lmdb";
|
|
611
|
-
import { getStoreDirectory } from "@xyo-network/chain-protocol";
|
|
612
|
-
var DEFAULT_STORAGE_ROOT = Path.join(process.cwd(), ".store");
|
|
613
|
-
var getLocalPersistentArchivist = /* @__PURE__ */ __name((name, dbName, storeName, storageRoot, kind = "lmdb") => {
|
|
614
|
-
switch (kind) {
|
|
615
|
-
case "lmdb": {
|
|
616
|
-
const root = storageRoot ?? DEFAULT_STORAGE_ROOT;
|
|
617
|
-
return LmdbArchivist.create({
|
|
618
|
-
account: "random",
|
|
619
|
-
config: {
|
|
620
|
-
name,
|
|
621
|
-
clearStoreOnStart: false,
|
|
622
|
-
dbName,
|
|
623
|
-
location: getStoreDirectory(dbName, root, "lmdb"),
|
|
624
|
-
schema: LmdbArchivistConfigSchema,
|
|
625
|
-
storeName
|
|
626
|
-
}
|
|
627
|
-
});
|
|
628
|
-
}
|
|
629
|
-
}
|
|
630
|
-
}, "getLocalPersistentArchivist");
|
|
631
|
-
|
|
632
|
-
// src/node/archivists/ChainFinalized/local.ts
|
|
633
|
-
var mutex = new Mutex2();
|
|
634
|
-
var singleton;
|
|
635
|
-
async function initLocalChainFinalizedArchivist({ config }) {
|
|
636
|
-
return await mutex.runExclusive(async () => {
|
|
637
|
-
if (singleton) return singleton;
|
|
638
|
-
const { root } = config.storage;
|
|
639
|
-
singleton = await getLocalPersistentArchivist("local-finalized-chain", "chain", "finalized", root);
|
|
640
|
-
return singleton;
|
|
641
|
-
});
|
|
642
|
-
}
|
|
643
|
-
__name(initLocalChainFinalizedArchivist, "initLocalChainFinalizedArchivist");
|
|
644
|
-
|
|
645
|
-
// src/node/archivists/ChainFinalized/archivist.ts
|
|
646
|
-
var mutex2 = new Mutex3();
|
|
647
|
-
var singleton2;
|
|
648
|
-
async function initChainFinalizedArchivist(context) {
|
|
649
|
-
return await mutex2.runExclusive(async () => {
|
|
650
|
-
if (singleton2) return singleton2;
|
|
651
|
-
return await timeBudget("initChainFinalizedArchivist", context.logger, async () => {
|
|
652
|
-
const local = await startupSpanAsync("ChainFinalizedArchivist:initLocal", () => initLocalChainFinalizedArchivist(context));
|
|
653
|
-
singleton2 = local;
|
|
654
|
-
return singleton2;
|
|
655
|
-
}, 2e3, true);
|
|
656
|
-
});
|
|
657
|
-
}
|
|
658
|
-
__name(initChainFinalizedArchivist, "initChainFinalizedArchivist");
|
|
659
|
-
|
|
660
|
-
// src/node/archivists/PendingBlocks/archivist.ts
|
|
661
|
-
import { timeBudget as timeBudget2 } from "@xylabs/sdk-js";
|
|
662
|
-
import { startupSpanAsync as startupSpanAsync2 } from "@xyo-network/chain-utils";
|
|
663
|
-
import { Mutex as Mutex5 } from "async-mutex";
|
|
664
|
-
|
|
665
|
-
// src/node/archivists/PendingBlocks/local.ts
|
|
666
|
-
import { Mutex as Mutex4 } from "async-mutex";
|
|
667
|
-
var mutex3 = new Mutex4();
|
|
668
|
-
var singleton3;
|
|
669
|
-
async function initLocalPendingBlocksArchivist({ config }) {
|
|
670
|
-
return await mutex3.runExclusive(async () => {
|
|
671
|
-
if (singleton3) return singleton3;
|
|
672
|
-
const { root } = config.storage;
|
|
673
|
-
singleton3 = await getLocalPersistentArchivist("local-pending-blocks", "chain", "pending_block_bundles", root);
|
|
674
|
-
return singleton3;
|
|
675
|
-
});
|
|
676
|
-
}
|
|
677
|
-
__name(initLocalPendingBlocksArchivist, "initLocalPendingBlocksArchivist");
|
|
678
|
-
|
|
679
|
-
// src/node/archivists/PendingBlocks/archivist.ts
|
|
680
|
-
var mutex4 = new Mutex5();
|
|
681
|
-
var singleton4;
|
|
682
|
-
async function initPendingBlocksArchivist(context) {
|
|
683
|
-
return await mutex4.runExclusive(async () => {
|
|
684
|
-
if (singleton4) return singleton4;
|
|
685
|
-
return await timeBudget2("initPendingBlocksArchivist", context.logger, async () => {
|
|
686
|
-
const local = await startupSpanAsync2("PendingBlocksArchivist:initLocal", () => initLocalPendingBlocksArchivist(context));
|
|
687
|
-
singleton4 = local;
|
|
688
|
-
return singleton4;
|
|
689
|
-
}, 2e3, true);
|
|
690
|
-
});
|
|
691
|
-
}
|
|
692
|
-
__name(initPendingBlocksArchivist, "initPendingBlocksArchivist");
|
|
693
|
-
|
|
694
|
-
// src/node/archivists/RejectedTransactions/archivist.ts
|
|
695
|
-
import { timeBudget as timeBudget3 } from "@xylabs/sdk-js";
|
|
696
|
-
import { startupSpanAsync as startupSpanAsync3 } from "@xyo-network/chain-utils";
|
|
697
|
-
import { Mutex as Mutex7 } from "async-mutex";
|
|
698
|
-
|
|
699
|
-
// src/node/archivists/RejectedTransactions/local.ts
|
|
700
|
-
import { MemoryArchivist, MemoryArchivistConfigSchema } from "@xyo-network/sdk-js";
|
|
701
|
-
import { Mutex as Mutex6 } from "async-mutex";
|
|
702
|
-
var mutex5 = new Mutex6();
|
|
703
|
-
var singleton5;
|
|
704
|
-
async function initLocalRejectedTransactionsArchivist() {
|
|
705
|
-
return await mutex5.runExclusive(async () => {
|
|
706
|
-
if (singleton5) return singleton5;
|
|
707
|
-
singleton5 = await MemoryArchivist.create({
|
|
708
|
-
account: "random",
|
|
709
|
-
config: {
|
|
710
|
-
schema: MemoryArchivistConfigSchema,
|
|
711
|
-
max: 1e3,
|
|
712
|
-
name: "localRejectedTransactions"
|
|
713
|
-
}
|
|
714
|
-
});
|
|
715
|
-
return singleton5;
|
|
716
|
-
});
|
|
717
|
-
}
|
|
718
|
-
__name(initLocalRejectedTransactionsArchivist, "initLocalRejectedTransactionsArchivist");
|
|
719
|
-
|
|
720
|
-
// src/node/archivists/RejectedTransactions/archivist.ts
|
|
721
|
-
var mutex6 = new Mutex7();
|
|
722
|
-
var singleton6;
|
|
723
|
-
async function initRejectedTransactionsArchivist({ logger }) {
|
|
724
|
-
return await mutex6.runExclusive(async () => {
|
|
725
|
-
if (singleton6) return singleton6;
|
|
726
|
-
return await timeBudget3("initRejectedTransactionsArchivist", logger, async () => {
|
|
727
|
-
const local = await startupSpanAsync3("RejectedTransactionsArchivist:initLocal", () => initLocalRejectedTransactionsArchivist());
|
|
728
|
-
singleton6 = local;
|
|
729
|
-
return singleton6;
|
|
730
|
-
}, 2e3, true);
|
|
731
|
-
});
|
|
732
|
-
}
|
|
733
|
-
__name(initRejectedTransactionsArchivist, "initRejectedTransactionsArchivist");
|
|
734
|
-
|
|
735
|
-
// src/node/archivists/StakeIntentState/archivist.ts
|
|
736
|
-
import { assertEx as assertEx4, timeBudget as timeBudget4 } from "@xylabs/sdk-js";
|
|
737
|
-
import { startupSpanAsync as startupSpanAsync4 } from "@xyo-network/chain-utils";
|
|
738
|
-
import { Mutex as Mutex9 } from "async-mutex";
|
|
739
|
-
|
|
740
|
-
// src/node/archivists/StakeIntentState/local.ts
|
|
741
|
-
import { assertEx as assertEx3 } from "@xylabs/sdk-js";
|
|
742
|
-
import { Mutex as Mutex8 } from "async-mutex";
|
|
743
|
-
var mutex7 = new Mutex8();
|
|
744
|
-
var singleton7;
|
|
745
|
-
async function initLocalStakeIntentStateArchivist({ config }) {
|
|
746
|
-
return await mutex7.runExclusive(async () => {
|
|
747
|
-
if (singleton7) return singleton7;
|
|
748
|
-
const { root } = config.storage;
|
|
749
|
-
singleton7 = await getLocalPersistentArchivist("local-stake-intent-state", "stakeIntent", "state", root);
|
|
750
|
-
return assertEx3(singleton7, () => new Error("Failed to initialize stake intent state archivist"));
|
|
751
|
-
});
|
|
752
|
-
}
|
|
753
|
-
__name(initLocalStakeIntentStateArchivist, "initLocalStakeIntentStateArchivist");
|
|
754
|
-
|
|
755
|
-
// src/node/archivists/StakeIntentState/archivist.ts
|
|
756
|
-
var mutex8 = new Mutex9();
|
|
757
|
-
var singleton8;
|
|
758
|
-
async function initStakeIntentStateArchivist(context) {
|
|
759
|
-
return await mutex8.runExclusive(async () => {
|
|
760
|
-
if (singleton8) return singleton8;
|
|
761
|
-
return await timeBudget4("initStakeIntentStateArchivist", context.logger, async () => {
|
|
762
|
-
const local = await startupSpanAsync4("StakeIntentStateArchivist:initLocal", () => initLocalStakeIntentStateArchivist(context));
|
|
763
|
-
singleton8 = local;
|
|
764
|
-
return assertEx4(singleton8, () => "StakeIntentStateArchivist is undefined");
|
|
765
|
-
}, 2e3, true);
|
|
766
|
-
});
|
|
767
|
-
}
|
|
768
|
-
__name(initStakeIntentStateArchivist, "initStakeIntentStateArchivist");
|
|
769
|
-
|
|
770
870
|
// src/node/config/locators/basicRemoteRunnerLocator.ts
|
|
771
871
|
import { isAccountInstance } from "@xyo-network/sdk-js";
|
|
772
872
|
import { basicRemoteRunnerLocator as sdkBasicRemoteRunnerLocator, JsonRpcAccountBalanceViewer, JsonRpcXyoSigner, SimpleXyoSigner } from "@xyo-network/xl1-sdk";
|
|
@@ -845,14 +945,14 @@ async function contextFromConfigWithoutLocator(config, logger, serviceName, serv
|
|
|
845
945
|
__name(contextFromConfigWithoutLocator, "contextFromConfigWithoutLocator");
|
|
846
946
|
|
|
847
947
|
// src/node/config/locators/localLocatorFromConfig.ts
|
|
848
|
-
import { assertEx as
|
|
948
|
+
import { assertEx as assertEx7 } from "@xylabs/sdk-js";
|
|
849
949
|
import { validateHydratedBlock, validateHydratedBlockState } from "@xyo-network/chain-validation";
|
|
850
|
-
import { BlockCumulativeBalanceValidatorFactory, ProviderFactoryLocator, SimpleAccountBalanceViewer, SimpleBlockValidationViewer, SimpleBlockViewer, SimpleFinalizationRunner, SimpleFinalizationViewer, SimpleMempoolRunner, SimpleMempoolViewer, SimpleTransactionViewer, SimpleWindowedBlockViewer, SimpleXyoConnectionViewer, SimpleXyoViewer } from "@xyo-network/xl1-sdk";
|
|
950
|
+
import { BlockCumulativeBalanceValidatorFactory, ProviderFactoryLocator, SimpleAccountBalanceViewer, SimpleBlockValidationViewer, SimpleBlockViewer, SimpleDeadLetterQueueRunner, SimpleDeadLetterQueueViewer, SimpleFinalizationRunner, SimpleFinalizationViewer, SimpleMempoolRunner, SimpleMempoolViewer, SimpleTransactionValidationViewer, SimpleTransactionViewer, SimpleWindowedBlockViewer, SimpleXyoConnectionViewer, SimpleXyoViewer, validateTransaction } from "@xyo-network/xl1-sdk";
|
|
851
951
|
|
|
852
952
|
// src/node/init/initBalanceSummaryMap.ts
|
|
853
953
|
import { BaseMongoSdk } from "@xylabs/mongo";
|
|
854
|
-
import { assertEx as
|
|
855
|
-
import { MongoMap } from "@xyo-network/chain-protocol";
|
|
954
|
+
import { assertEx as assertEx3 } from "@xylabs/sdk-js";
|
|
955
|
+
import { MongoMap } from "@xyo-network/chain-protocol-driver-mongodb";
|
|
856
956
|
import { hasMongoConfig, MemoryMap } from "@xyo-network/xl1-sdk";
|
|
857
957
|
async function initBalanceSummaryMap({ logger, config }) {
|
|
858
958
|
const mongoConfig = config.storage?.mongo;
|
|
@@ -876,7 +976,7 @@ async function initBalanceSummaryMap({ logger, config }) {
|
|
|
876
976
|
maxEntries: 5e3
|
|
877
977
|
}
|
|
878
978
|
});
|
|
879
|
-
|
|
979
|
+
assertEx3(await result.start(), () => "Failed to start transfer summary map");
|
|
880
980
|
return result;
|
|
881
981
|
} else {
|
|
882
982
|
logger?.warn("[API] Mongo configuration not found. Using MemoryMap for BalanceSummaryMap.");
|
|
@@ -886,118 +986,35 @@ async function initBalanceSummaryMap({ logger, config }) {
|
|
|
886
986
|
__name(initBalanceSummaryMap, "initBalanceSummaryMap");
|
|
887
987
|
|
|
888
988
|
// src/node/init/initEvmProvidersIfAvailable.ts
|
|
889
|
-
import { asEthAddress
|
|
989
|
+
import { asEthAddress } from "@xylabs/sdk-js";
|
|
890
990
|
import { EvmChainContractViewer, EvmStakeEventsViewer, EvmStakeTotalsViewer, EvmStakeViewer } from "@xyo-network/chain-ethereum";
|
|
991
|
+
import { canUseEvmProvider, initEvmProvider } from "@xyo-network/chain-orchestration-evm";
|
|
891
992
|
import { SimpleChainContractViewer, SimpleStakeEventsViewer, SimpleStakeTotalsViewer, SimpleStakeViewer, SimpleTimeSyncViewer, XYO_ZERO_ADDRESS } from "@xyo-network/xl1-sdk";
|
|
892
|
-
|
|
893
|
-
// src/node/evm/initChainId.ts
|
|
894
|
-
import { assertEx as assertEx6, hexFrom, isDefined as isDefined3, isHex } from "@xylabs/sdk-js";
|
|
895
|
-
var canUseChainId = /* @__PURE__ */ __name(({ config }) => {
|
|
896
|
-
return isDefined3(config.evm.chainId);
|
|
897
|
-
}, "canUseChainId");
|
|
898
|
-
var getChainId = /* @__PURE__ */ __name(({ config }) => {
|
|
899
|
-
const chainId = assertEx6(config.evm.chainId, () => "Missing config.evm.chainId");
|
|
900
|
-
if (isHex(chainId, {
|
|
901
|
-
prefix: true
|
|
902
|
-
})) {
|
|
903
|
-
const hex = hexFrom(chainId);
|
|
904
|
-
const parsed = Number.parseInt(hex, 16);
|
|
905
|
-
return parsed;
|
|
906
|
-
} else {
|
|
907
|
-
const parsed = Number.parseInt(chainId, 10);
|
|
908
|
-
return parsed;
|
|
909
|
-
}
|
|
910
|
-
}, "getChainId");
|
|
911
|
-
|
|
912
|
-
// src/node/evm/initEvmProvider.ts
|
|
913
|
-
import { assertEx as assertEx9 } from "@xylabs/sdk-js";
|
|
914
|
-
|
|
915
|
-
// src/node/evm/initInfuraProvider.ts
|
|
916
|
-
import { assertEx as assertEx7, isDefined as isDefined4 } from "@xylabs/sdk-js";
|
|
917
|
-
import { InfuraProvider } from "ethers/providers";
|
|
918
|
-
var instance;
|
|
919
|
-
var initInfuraProvider = /* @__PURE__ */ __name((context) => {
|
|
920
|
-
if (instance) return instance;
|
|
921
|
-
const providerConfig = getInfuraProviderConfig(context);
|
|
922
|
-
instance = Promise.resolve(new InfuraProvider(providerConfig[0], providerConfig[1]));
|
|
923
|
-
return instance;
|
|
924
|
-
}, "initInfuraProvider");
|
|
925
|
-
var canUseInfuraProvider = /* @__PURE__ */ __name((context) => {
|
|
926
|
-
const { config } = context;
|
|
927
|
-
return canUseChainId(context) && isDefined4(config.evm?.infura?.projectId) && isDefined4(config.evm?.infura?.projectSecret);
|
|
928
|
-
}, "canUseInfuraProvider");
|
|
929
|
-
var getInfuraProviderConfig = /* @__PURE__ */ __name((context) => {
|
|
930
|
-
const { config } = context;
|
|
931
|
-
const projectId = assertEx7(config.evm?.infura?.projectId, () => "Missing config.evm.infura.projectId");
|
|
932
|
-
const projectSecret = assertEx7(config.evm?.infura?.projectSecret, () => "Missing config.evm.infura.projectSecret");
|
|
933
|
-
return [
|
|
934
|
-
getChainId(context),
|
|
935
|
-
projectId,
|
|
936
|
-
projectSecret
|
|
937
|
-
];
|
|
938
|
-
}, "getInfuraProviderConfig");
|
|
939
|
-
|
|
940
|
-
// src/node/evm/initJsonRpcProvider.ts
|
|
941
|
-
import { assertEx as assertEx8, isDefined as isDefined5 } from "@xylabs/sdk-js";
|
|
942
|
-
import { JsonRpcProvider } from "ethers/providers";
|
|
943
|
-
var initJsonRpcProvider = /* @__PURE__ */ __name((context) => {
|
|
944
|
-
const providerConfig = getJsonRpcProviderConfig(context);
|
|
945
|
-
return Promise.resolve(new JsonRpcProvider(...providerConfig));
|
|
946
|
-
}, "initJsonRpcProvider");
|
|
947
|
-
var canUseJsonRpcProvider = /* @__PURE__ */ __name((context) => {
|
|
948
|
-
const { config } = context;
|
|
949
|
-
return canUseChainId(context) && isDefined5(config.evm.jsonRpc?.url);
|
|
950
|
-
}, "canUseJsonRpcProvider");
|
|
951
|
-
var getJsonRpcProviderConfig = /* @__PURE__ */ __name((context) => {
|
|
952
|
-
const { config } = context;
|
|
953
|
-
const jsonRpcUrl = assertEx8(config.evm.jsonRpc?.url, () => "Missing config.evm.jsonRpc.url");
|
|
954
|
-
return [
|
|
955
|
-
jsonRpcUrl,
|
|
956
|
-
getChainId(context)
|
|
957
|
-
];
|
|
958
|
-
}, "getJsonRpcProviderConfig");
|
|
959
|
-
|
|
960
|
-
// src/node/evm/initEvmProvider.ts
|
|
961
|
-
var provider;
|
|
962
|
-
var initEvmProvider = /* @__PURE__ */ __name(async (context) => {
|
|
963
|
-
if (provider) return provider;
|
|
964
|
-
if (canUseInfuraProvider(context)) {
|
|
965
|
-
provider = initInfuraProvider(context);
|
|
966
|
-
} else if (canUseJsonRpcProvider(context)) {
|
|
967
|
-
provider = initJsonRpcProvider(context);
|
|
968
|
-
}
|
|
969
|
-
return assertEx9(await provider, () => "No provider available");
|
|
970
|
-
}, "initEvmProvider");
|
|
971
|
-
var canUseEvmProvider = /* @__PURE__ */ __name((context) => {
|
|
972
|
-
return canUseInfuraProvider(context) || canUseJsonRpcProvider(context);
|
|
973
|
-
}, "canUseEvmProvider");
|
|
974
|
-
|
|
975
|
-
// src/node/init/initEvmProvidersIfAvailable.ts
|
|
976
993
|
async function initEvmProvidersIfAvailable(locator) {
|
|
977
994
|
const context = locator.context;
|
|
978
995
|
const { logger } = context;
|
|
979
|
-
if (canUseEvmProvider(context)) {
|
|
980
|
-
const chainId =
|
|
981
|
-
const
|
|
996
|
+
if (canUseEvmProvider(context) && context.config.chain.id) {
|
|
997
|
+
const chainId = context.config.chain.id;
|
|
998
|
+
const provider = await initEvmProvider(context);
|
|
982
999
|
const address = asEthAddress(chainId, true);
|
|
983
1000
|
locator.register(EvmStakeEventsViewer.factory(EvmStakeEventsViewer.dependencies, {
|
|
984
1001
|
address,
|
|
985
|
-
provider
|
|
1002
|
+
provider
|
|
986
1003
|
}));
|
|
987
1004
|
locator.register(EvmStakeViewer.factory(EvmStakeViewer.dependencies, {
|
|
988
1005
|
address,
|
|
989
|
-
provider
|
|
1006
|
+
provider
|
|
990
1007
|
}));
|
|
991
1008
|
locator.register(EvmStakeTotalsViewer.factory(EvmStakeTotalsViewer.dependencies, {
|
|
992
1009
|
address,
|
|
993
|
-
provider
|
|
1010
|
+
provider
|
|
994
1011
|
}));
|
|
995
1012
|
locator.register(EvmChainContractViewer.factory(EvmChainContractViewer.dependencies, {
|
|
996
1013
|
address,
|
|
997
|
-
provider
|
|
1014
|
+
provider
|
|
998
1015
|
}));
|
|
999
1016
|
locator.register(SimpleTimeSyncViewer.factory(SimpleTimeSyncViewer.dependencies, {
|
|
1000
|
-
ethProvider:
|
|
1017
|
+
ethProvider: provider
|
|
1001
1018
|
}));
|
|
1002
1019
|
} else {
|
|
1003
1020
|
logger?.warn("EVM provider not available - running with memory based contract/stake viewers");
|
|
@@ -1021,7 +1038,7 @@ async function initEvmProvidersIfAvailable(locator) {
|
|
|
1021
1038
|
__name(initEvmProvidersIfAvailable, "initEvmProvidersIfAvailable");
|
|
1022
1039
|
|
|
1023
1040
|
// src/node/init/initFinalizationArchivistIfNeeded.ts
|
|
1024
|
-
import { assertEx as
|
|
1041
|
+
import { assertEx as assertEx4 } from "@xylabs/sdk-js";
|
|
1025
1042
|
import { createBootstrapHead } from "@xyo-network/chain-sdk";
|
|
1026
1043
|
import { Account } from "@xyo-network/sdk-js";
|
|
1027
1044
|
import { asAttoXL1, findMostRecentBlock, flattenHydratedBlock } from "@xyo-network/xl1-sdk";
|
|
@@ -1034,12 +1051,13 @@ async function initFinalizationArchivistIfNeeded(archivist, config, account) {
|
|
|
1034
1051
|
let possibleChainId = configuredChainId;
|
|
1035
1052
|
if (!possibleHead) {
|
|
1036
1053
|
possibleChainId = possibleChainId ?? (await Account.random()).address;
|
|
1037
|
-
const
|
|
1054
|
+
const genesisRewardAddress = await resolveGenesisRewardAddress(config);
|
|
1055
|
+
const chain = await createBootstrapHead(account, possibleChainId, asAttoXL1(GENESIS_REWARD_AMOUNT), genesisRewardAddress);
|
|
1038
1056
|
const payloads = chain.flatMap((block) => flattenHydratedBlock(block));
|
|
1039
1057
|
await archivist.insert(payloads);
|
|
1040
1058
|
}
|
|
1041
|
-
const head = possibleHead ??
|
|
1042
|
-
const chainId =
|
|
1059
|
+
const head = possibleHead ?? assertEx4(await findMostRecentBlock(archivist), () => "No blocks found in chain archivist");
|
|
1060
|
+
const chainId = assertEx4(possibleChainId, () => "Chain ID could not be determined");
|
|
1043
1061
|
return [
|
|
1044
1062
|
head,
|
|
1045
1063
|
chainId
|
|
@@ -1066,15 +1084,15 @@ async function initFinalizedArchivist(config) {
|
|
|
1066
1084
|
__name(initFinalizedArchivist, "initFinalizedArchivist");
|
|
1067
1085
|
|
|
1068
1086
|
// src/node/init/initServerNode.ts
|
|
1069
|
-
import { assertEx as
|
|
1087
|
+
import { assertEx as assertEx5 } from "@xylabs/sdk-js";
|
|
1070
1088
|
import { asArchivistInstance } from "@xyo-network/sdk-js";
|
|
1071
1089
|
|
|
1072
1090
|
// src/node/manifest/getLocator.ts
|
|
1073
|
-
import { isDefined as
|
|
1091
|
+
import { isDefined as isDefined2 } from "@xylabs/sdk-js";
|
|
1074
1092
|
import { MongoDBArchivistV2 as MongoDBArchivistV22, MongoDBArchivistV2Deletable } from "@xyo-network/archivist-mongodb";
|
|
1075
1093
|
import { ViewArchivist } from "@xyo-network/archivist-view";
|
|
1076
1094
|
import { initTelemetry as initTelemetry2 } from "@xyo-network/chain-telemetry";
|
|
1077
|
-
import { AbstractModule, LoggerModuleStatusReporter, MemoryArchivist
|
|
1095
|
+
import { AbstractModule, LoggerModuleStatusReporter, MemoryArchivist, MemorySentinel, ModuleFactoryLocator } from "@xyo-network/sdk-js";
|
|
1078
1096
|
import { hasMongoConfig as hasMongoConfig2 } from "@xyo-network/xl1-sdk";
|
|
1079
1097
|
var getLocator = /* @__PURE__ */ __name(async ({ logger, config }) => {
|
|
1080
1098
|
const { otlpEndpoint } = config.telemetry?.otel ?? {};
|
|
@@ -1090,7 +1108,7 @@ var getLocator = /* @__PURE__ */ __name(async ({ logger, config }) => {
|
|
|
1090
1108
|
port
|
|
1091
1109
|
}
|
|
1092
1110
|
});
|
|
1093
|
-
if (
|
|
1111
|
+
if (isDefined2(logger)) AbstractModule.defaultLogger = logger;
|
|
1094
1112
|
const statusReporter = logger ? new LoggerModuleStatusReporter(logger) : void 0;
|
|
1095
1113
|
const locator = new ModuleFactoryLocator();
|
|
1096
1114
|
const mongoConfig = config.storage?.mongo;
|
|
@@ -1114,7 +1132,7 @@ var getLocator = /* @__PURE__ */ __name(async ({ logger, config }) => {
|
|
|
1114
1132
|
"network.xyo.storage.capabilities.delete": "enabled"
|
|
1115
1133
|
}, false);
|
|
1116
1134
|
}
|
|
1117
|
-
locator.register(
|
|
1135
|
+
locator.register(MemoryArchivist.factory({
|
|
1118
1136
|
traceProvider,
|
|
1119
1137
|
meterProvider,
|
|
1120
1138
|
statusReporter
|
|
@@ -1211,6 +1229,62 @@ var Chain_default = {
|
|
|
1211
1229
|
schema: "network.xyo.manifest"
|
|
1212
1230
|
};
|
|
1213
1231
|
|
|
1232
|
+
// src/node/manifest/public/DeadLetterQueue.json
|
|
1233
|
+
var DeadLetterQueue_default = {
|
|
1234
|
+
$schema: "https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json",
|
|
1235
|
+
nodes: [
|
|
1236
|
+
{
|
|
1237
|
+
config: {
|
|
1238
|
+
accountPath: "3",
|
|
1239
|
+
name: "DeadLetterQueue",
|
|
1240
|
+
schema: "network.xyo.node.config"
|
|
1241
|
+
},
|
|
1242
|
+
modules: {
|
|
1243
|
+
private: [],
|
|
1244
|
+
public: [
|
|
1245
|
+
{
|
|
1246
|
+
config: {
|
|
1247
|
+
accountPath: "3/1/1",
|
|
1248
|
+
name: "RejectedBlocks",
|
|
1249
|
+
getCache: {
|
|
1250
|
+
enabled: true,
|
|
1251
|
+
maxEntries: 5e3
|
|
1252
|
+
},
|
|
1253
|
+
labels: {
|
|
1254
|
+
"network.xyo.storage.capabilities.delete": "enabled",
|
|
1255
|
+
"network.xyo.storage.class": "mongodb"
|
|
1256
|
+
},
|
|
1257
|
+
payloadSdkConfig: {
|
|
1258
|
+
collection: "rejected_blocks"
|
|
1259
|
+
},
|
|
1260
|
+
schema: "network.xyo.archivist.config"
|
|
1261
|
+
}
|
|
1262
|
+
},
|
|
1263
|
+
{
|
|
1264
|
+
config: {
|
|
1265
|
+
accountPath: "3/1/2",
|
|
1266
|
+
name: "RejectedTransactions",
|
|
1267
|
+
getCache: {
|
|
1268
|
+
enabled: true,
|
|
1269
|
+
maxEntries: 5e3
|
|
1270
|
+
},
|
|
1271
|
+
labels: {
|
|
1272
|
+
"network.xyo.storage.capabilities.delete": "enabled",
|
|
1273
|
+
"network.xyo.storage.class": "mongodb"
|
|
1274
|
+
},
|
|
1275
|
+
payloadSdkConfig: {
|
|
1276
|
+
collection: "rejected_transactions"
|
|
1277
|
+
},
|
|
1278
|
+
schema: "network.xyo.archivist.config"
|
|
1279
|
+
}
|
|
1280
|
+
}
|
|
1281
|
+
]
|
|
1282
|
+
}
|
|
1283
|
+
}
|
|
1284
|
+
],
|
|
1285
|
+
schema: "network.xyo.manifest"
|
|
1286
|
+
};
|
|
1287
|
+
|
|
1214
1288
|
// src/node/manifest/public/Pending.json
|
|
1215
1289
|
var Pending_default = {
|
|
1216
1290
|
$schema: "https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json",
|
|
@@ -1269,9 +1343,11 @@ var Pending_default = {
|
|
|
1269
1343
|
|
|
1270
1344
|
// src/node/manifest/public/index.ts
|
|
1271
1345
|
var ChainNodeManifest = Chain_default;
|
|
1346
|
+
var DeadLetterQueueNodeManifest = DeadLetterQueue_default;
|
|
1272
1347
|
var PendingNodeManifest = Pending_default;
|
|
1273
1348
|
var PublicChildManifests = [
|
|
1274
1349
|
...ChainNodeManifest.nodes,
|
|
1350
|
+
...DeadLetterQueueNodeManifest.nodes,
|
|
1275
1351
|
...PendingNodeManifest.nodes
|
|
1276
1352
|
];
|
|
1277
1353
|
|
|
@@ -1295,7 +1371,7 @@ async function writableChainArchivistFromNode(node) {
|
|
|
1295
1371
|
}
|
|
1296
1372
|
__name(writableChainArchivistFromNode, "writableChainArchivistFromNode");
|
|
1297
1373
|
async function readonlyChainArchivistFromNode(node) {
|
|
1298
|
-
return
|
|
1374
|
+
return assertEx5(asArchivistInstance(await node.resolve("Chain:Validated"), {
|
|
1299
1375
|
required: true
|
|
1300
1376
|
}));
|
|
1301
1377
|
}
|
|
@@ -1312,27 +1388,43 @@ async function pendingBlocksArchivistFromNode(node) {
|
|
|
1312
1388
|
});
|
|
1313
1389
|
}
|
|
1314
1390
|
__name(pendingBlocksArchivistFromNode, "pendingBlocksArchivistFromNode");
|
|
1391
|
+
async function rejectedBlocksArchivistFromNode(node) {
|
|
1392
|
+
return asArchivistInstance(await node.resolve("XYOChain:DeadLetterQueue:RejectedBlocks"), {
|
|
1393
|
+
required: true
|
|
1394
|
+
});
|
|
1395
|
+
}
|
|
1396
|
+
__name(rejectedBlocksArchivistFromNode, "rejectedBlocksArchivistFromNode");
|
|
1397
|
+
async function rejectedTransactionsArchivistFromNode(node) {
|
|
1398
|
+
return asArchivistInstance(await node.resolve("XYOChain:DeadLetterQueue:RejectedTransactions"), {
|
|
1399
|
+
required: true
|
|
1400
|
+
});
|
|
1401
|
+
}
|
|
1402
|
+
__name(rejectedTransactionsArchivistFromNode, "rejectedTransactionsArchivistFromNode");
|
|
1315
1403
|
async function initServerNode(context, wallet, providedNode) {
|
|
1316
1404
|
const node = providedNode ?? await loadNode(context, wallet);
|
|
1317
|
-
|
|
1405
|
+
assertEx5(await node.start(), () => "Failed to start node");
|
|
1318
1406
|
const writableChainArchivist = await writableChainArchivistFromNode(node);
|
|
1319
1407
|
const readonlyChainArchivist = await readonlyChainArchivistFromNode(node);
|
|
1320
1408
|
const pendingTransactionsArchivist = await pendingTransactionsArchivistFromNode(node);
|
|
1321
1409
|
const pendingBlocksArchivist = await pendingBlocksArchivistFromNode(node);
|
|
1410
|
+
const rejectedBlocksArchivist = await rejectedBlocksArchivistFromNode(node);
|
|
1411
|
+
const rejectedTransactionsArchivist = await rejectedTransactionsArchivistFromNode(node);
|
|
1322
1412
|
return {
|
|
1323
1413
|
node,
|
|
1324
1414
|
writableChainArchivist,
|
|
1325
1415
|
readonlyChainArchivist,
|
|
1326
1416
|
pendingTransactionsArchivist,
|
|
1327
|
-
pendingBlocksArchivist
|
|
1417
|
+
pendingBlocksArchivist,
|
|
1418
|
+
rejectedBlocksArchivist,
|
|
1419
|
+
rejectedTransactionsArchivist
|
|
1328
1420
|
};
|
|
1329
1421
|
}
|
|
1330
1422
|
__name(initServerNode, "initServerNode");
|
|
1331
1423
|
|
|
1332
1424
|
// src/node/init/initTransferSummaryMap.ts
|
|
1333
1425
|
import { BaseMongoSdk as BaseMongoSdk2 } from "@xylabs/mongo";
|
|
1334
|
-
import { assertEx as
|
|
1335
|
-
import { MongoMap as MongoMap2 } from "@xyo-network/chain-protocol";
|
|
1426
|
+
import { assertEx as assertEx6 } from "@xylabs/sdk-js";
|
|
1427
|
+
import { MongoMap as MongoMap2 } from "@xyo-network/chain-protocol-driver-mongodb";
|
|
1336
1428
|
import { hasMongoConfig as hasMongoConfig3, MemoryMap as MemoryMap2 } from "@xyo-network/xl1-sdk";
|
|
1337
1429
|
async function initTransferSummaryMap({ logger, config }) {
|
|
1338
1430
|
const mongoConfig = config.storage?.mongo;
|
|
@@ -1356,7 +1448,7 @@ async function initTransferSummaryMap({ logger, config }) {
|
|
|
1356
1448
|
maxEntries: 5e3
|
|
1357
1449
|
}
|
|
1358
1450
|
});
|
|
1359
|
-
|
|
1451
|
+
assertEx6(await result.start(), () => "Failed to start transfer summary map");
|
|
1360
1452
|
return result;
|
|
1361
1453
|
} else {
|
|
1362
1454
|
logger?.warn("[API] Mongo configuration not found. Using MemoryMap for TransferSummaryMap.");
|
|
@@ -1378,10 +1470,10 @@ var validateHydratedBlockStateWithCumulativeBalance = /* @__PURE__ */ __name(asy
|
|
|
1378
1470
|
];
|
|
1379
1471
|
}, "validateHydratedBlockStateWithCumulativeBalance");
|
|
1380
1472
|
async function localLocatorFromConfig(context, validateDepsOnRegister = false) {
|
|
1381
|
-
const balancesSummaryMap =
|
|
1382
|
-
const transfersSummaryMap =
|
|
1473
|
+
const balancesSummaryMap = assertEx7(await initBalanceSummaryMap(context), () => "Balance Summary Map not initialized");
|
|
1474
|
+
const transfersSummaryMap = assertEx7(await initTransferSummaryMap(context), () => "Transfer Summary Map not initialized");
|
|
1383
1475
|
const wallet = await initActorWallet(context);
|
|
1384
|
-
const { writableChainArchivist, readonlyChainArchivist, pendingTransactionsArchivist, pendingBlocksArchivist } = await initServerNode(context, wallet);
|
|
1476
|
+
const { writableChainArchivist, readonlyChainArchivist, pendingTransactionsArchivist, pendingBlocksArchivist, rejectedBlocksArchivist, rejectedTransactionsArchivist } = await initServerNode(context, wallet);
|
|
1385
1477
|
await initFinalizationArchivistIfNeeded(writableChainArchivist, context.config, wallet);
|
|
1386
1478
|
const locator = new ProviderFactoryLocator(context, {}, validateDepsOnRegister);
|
|
1387
1479
|
locator.registerMany([
|
|
@@ -1419,6 +1511,17 @@ async function localLocatorFromConfig(context, validateDepsOnRegister = false) {
|
|
|
1419
1511
|
SimpleBlockValidationViewer.factory(SimpleBlockValidationViewer.dependencies, {
|
|
1420
1512
|
state: validateHydratedBlockStateWithCumulativeBalance,
|
|
1421
1513
|
protocol: validateHydratedBlock
|
|
1514
|
+
}),
|
|
1515
|
+
SimpleTransactionValidationViewer.factory(SimpleTransactionValidationViewer.dependencies, {
|
|
1516
|
+
protocol: validateTransaction
|
|
1517
|
+
}),
|
|
1518
|
+
SimpleDeadLetterQueueRunner.factory(SimpleDeadLetterQueueRunner.dependencies, {
|
|
1519
|
+
rejectedBlocksArchivist,
|
|
1520
|
+
rejectedTransactionsArchivist
|
|
1521
|
+
}),
|
|
1522
|
+
SimpleDeadLetterQueueViewer.factory(SimpleDeadLetterQueueViewer.dependencies, {
|
|
1523
|
+
rejectedBlocksArchivist,
|
|
1524
|
+
rejectedTransactionsArchivist
|
|
1422
1525
|
})
|
|
1423
1526
|
]);
|
|
1424
1527
|
return locator;
|
|
@@ -1427,7 +1530,6 @@ __name(localLocatorFromConfig, "localLocatorFromConfig");
|
|
|
1427
1530
|
|
|
1428
1531
|
// src/node/config/locators/locatorsFromConfig.ts
|
|
1429
1532
|
import { deepMerge as deepMerge2 } from "@xylabs/sdk-js";
|
|
1430
|
-
import { ActorConfigZod as ActorConfigZod2 } from "@xyo-network/xl1-sdk";
|
|
1431
1533
|
|
|
1432
1534
|
// src/node/config/locators/actors/apiLocatorFromConfig.ts
|
|
1433
1535
|
import { ProviderFactoryLocator as ProviderFactoryLocator2, SimpleXyoConnectionRunner, SimpleXyoGateway, SimpleXyoRunner } from "@xyo-network/xl1-sdk";
|
|
@@ -1447,19 +1549,16 @@ function apiLocatorFromConfig(context, parent) {
|
|
|
1447
1549
|
__name(apiLocatorFromConfig, "apiLocatorFromConfig");
|
|
1448
1550
|
|
|
1449
1551
|
// src/node/config/locators/actors/bridgeLocatorFromConfig.ts
|
|
1450
|
-
import { isDefined as
|
|
1451
|
-
import {
|
|
1452
|
-
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";
|
|
1453
1554
|
async function bridgeLocatorFromConfig(context, parent) {
|
|
1454
1555
|
const locator = new ProviderFactoryLocator3({
|
|
1455
1556
|
...context,
|
|
1456
1557
|
locator: parent
|
|
1457
1558
|
});
|
|
1458
1559
|
const { config } = context;
|
|
1459
|
-
const { dataLake
|
|
1460
|
-
const
|
|
1461
|
-
const wallet = await generateXyoBaseWalletFromPhrase2(walletPhrase);
|
|
1462
|
-
const signerAccount = await wallet.derivePath(ADDRESS_INDEX2.XYO);
|
|
1560
|
+
const { dataLake } = config;
|
|
1561
|
+
const signerAccount = await initActorAccount(context);
|
|
1463
1562
|
if (config.remote.rpc) {
|
|
1464
1563
|
locator.registerMany([
|
|
1465
1564
|
JsonRpcMempoolViewer.factory(JsonRpcMempoolViewer.dependencies, {}),
|
|
@@ -1471,7 +1570,7 @@ async function bridgeLocatorFromConfig(context, parent) {
|
|
|
1471
1570
|
JsonRpcXyoViewer.factory(JsonRpcXyoViewer.dependencies, {})
|
|
1472
1571
|
]);
|
|
1473
1572
|
}
|
|
1474
|
-
if (
|
|
1573
|
+
if (isDefined3(dataLake)) {
|
|
1475
1574
|
const { driver } = dataLake;
|
|
1476
1575
|
switch (driver) {
|
|
1477
1576
|
case "rest": {
|
|
@@ -1649,7 +1748,7 @@ async function locatorsFromConfig(context, { actors, ...config }) {
|
|
|
1649
1748
|
case "validator": {
|
|
1650
1749
|
result[actorConfig.name] = await validatorLocatorFromConfig({
|
|
1651
1750
|
...context,
|
|
1652
|
-
config:
|
|
1751
|
+
config: ValidatorConfigZod.parse(deepMerge2(config, actorConfig))
|
|
1653
1752
|
}, result._root);
|
|
1654
1753
|
break;
|
|
1655
1754
|
}
|
|
@@ -1674,7 +1773,7 @@ async function locatorsFromConfig(context, { actors, ...config }) {
|
|
|
1674
1773
|
__name(locatorsFromConfig, "locatorsFromConfig");
|
|
1675
1774
|
|
|
1676
1775
|
// src/node/config/tryParseConfig.ts
|
|
1677
|
-
import { isDefined as
|
|
1776
|
+
import { isDefined as isDefined4, isNull } from "@xylabs/sdk-js";
|
|
1678
1777
|
import { ConfigZod } from "@xyo-network/xl1-sdk";
|
|
1679
1778
|
import { cosmiconfig } from "cosmiconfig";
|
|
1680
1779
|
var configName = "xyo";
|
|
@@ -1686,102 +1785,38 @@ async function tryParseConfig(options) {
|
|
|
1686
1785
|
// loaders: { '.ts': TypeScriptLoader() },
|
|
1687
1786
|
searchPlaces
|
|
1688
1787
|
});
|
|
1689
|
-
const result =
|
|
1690
|
-
if (
|
|
1788
|
+
const result = isDefined4(configPath) ? (await explorer.load(configPath))?.config : (await explorer.search())?.config;
|
|
1789
|
+
if (isDefined4(result) && !isNull(result)) {
|
|
1691
1790
|
const section = result[configSection];
|
|
1692
|
-
if (
|
|
1693
|
-
|
|
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;
|
|
1694
1797
|
}
|
|
1695
1798
|
}
|
|
1696
1799
|
return ConfigZod.parse({});
|
|
1697
1800
|
}
|
|
1698
1801
|
__name(tryParseConfig, "tryParseConfig");
|
|
1699
1802
|
|
|
1700
|
-
// src/node/
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
const statusCode = status === "started" ? 200 : errorCode;
|
|
1705
|
-
res.writeHead(statusCode, {
|
|
1706
|
-
"Content-Type": "application/json"
|
|
1707
|
-
});
|
|
1708
|
-
res.end(JSON.stringify({
|
|
1709
|
-
status
|
|
1710
|
-
}));
|
|
1711
|
-
}, "sendStatus");
|
|
1712
|
-
var notFound = /* @__PURE__ */ __name((res) => {
|
|
1713
|
-
res.writeHead(404, {
|
|
1714
|
-
"Content-Type": "application/json"
|
|
1715
|
-
});
|
|
1716
|
-
res.end(JSON.stringify({
|
|
1717
|
-
status: "not found"
|
|
1718
|
-
}));
|
|
1719
|
-
}, "notFound");
|
|
1720
|
-
var createHealthServer = /* @__PURE__ */ __name((context, port, statusMonitor) => {
|
|
1721
|
-
const { logger } = context;
|
|
1722
|
-
const server = http.createServer((req, res) => {
|
|
1723
|
-
const url = req.url ?? "";
|
|
1724
|
-
const status = statusMonitor.getGlobalStatus();
|
|
1725
|
-
switch (url) {
|
|
1726
|
-
case "/healthz": {
|
|
1727
|
-
sendStatus(res, status, 500);
|
|
1728
|
-
break;
|
|
1729
|
-
}
|
|
1730
|
-
case "/livez": {
|
|
1731
|
-
sendStatus(res, status, 503);
|
|
1732
|
-
break;
|
|
1733
|
-
}
|
|
1734
|
-
case "/readyz": {
|
|
1735
|
-
sendStatus(res, status, 503);
|
|
1736
|
-
break;
|
|
1737
|
-
}
|
|
1738
|
-
default: {
|
|
1739
|
-
notFound(res);
|
|
1740
|
-
}
|
|
1741
|
-
}
|
|
1742
|
-
});
|
|
1743
|
-
server.listen(port, () => {
|
|
1744
|
-
logger?.log(`Health server running on http://localhost:${port}`);
|
|
1745
|
-
logger?.log(" - /healthz");
|
|
1746
|
-
logger?.log(" - /livez");
|
|
1747
|
-
logger?.log(" - /readyz");
|
|
1748
|
-
});
|
|
1749
|
-
return server;
|
|
1750
|
-
}, "createHealthServer");
|
|
1751
|
-
function initHealthEndpoints(context, statusMonitor) {
|
|
1752
|
-
const { config } = context;
|
|
1753
|
-
const { healthCheckPort } = config;
|
|
1754
|
-
return isDefined9(healthCheckPort) ? createHealthServer(context, healthCheckPort, statusMonitor) : void 0;
|
|
1755
|
-
}
|
|
1756
|
-
__name(initHealthEndpoints, "initHealthEndpoints");
|
|
1757
|
-
|
|
1758
|
-
// src/node/sharedMiddleware.ts
|
|
1759
|
-
import { customPoweredByHeader, disableCaseSensitiveRouting, disableExpressDefaultPoweredByHeader, getJsonBodyParser, getJsonBodyParserOptions, responseProfiler, standardResponses } from "@xylabs/express";
|
|
1760
|
-
import compression from "compression";
|
|
1761
|
-
import cors from "cors";
|
|
1762
|
-
function sharedMiddleware(app) {
|
|
1763
|
-
app.set("etag", false);
|
|
1764
|
-
app.use(cors());
|
|
1765
|
-
app.use(compression());
|
|
1766
|
-
app.use(responseProfiler);
|
|
1767
|
-
app.use(getJsonBodyParser(getJsonBodyParserOptions({
|
|
1768
|
-
limit: "1mb"
|
|
1769
|
-
})));
|
|
1770
|
-
app.use(standardResponses);
|
|
1771
|
-
disableExpressDefaultPoweredByHeader(app);
|
|
1772
|
-
app.use(customPoweredByHeader);
|
|
1773
|
-
disableCaseSensitiveRouting(app);
|
|
1774
|
-
}
|
|
1775
|
-
__name(sharedMiddleware, "sharedMiddleware");
|
|
1803
|
+
// src/node/index.ts
|
|
1804
|
+
export * from "@xyo-network/chain-orchestration-evm";
|
|
1805
|
+
export * from "@xyo-network/chain-orchestration-express";
|
|
1806
|
+
export * from "@xyo-network/chain-orchestration-storage";
|
|
1776
1807
|
export {
|
|
1777
1808
|
ApiConfigContext,
|
|
1778
1809
|
ApiConfigZod,
|
|
1810
|
+
BUILT_IN_DEV_MNEMONIC,
|
|
1779
1811
|
BasisPointsZod,
|
|
1780
1812
|
BridgeConfigContext,
|
|
1781
1813
|
BridgeConfigZod,
|
|
1782
1814
|
BridgeSettingsZod,
|
|
1815
|
+
DEFAULT_BLOCK_PRODUCTION_CHECK_INTERVAL,
|
|
1783
1816
|
DefaultServiceProvider,
|
|
1817
|
+
GENESIS_REWARD_AMOUNT,
|
|
1784
1818
|
GenericHost,
|
|
1819
|
+
INSECURE_GENESIS_REWARD_MNEMONIC,
|
|
1785
1820
|
MempoolConfigContext,
|
|
1786
1821
|
MempoolConfigZod,
|
|
1787
1822
|
NodeManifest,
|
|
@@ -1790,8 +1825,10 @@ export {
|
|
|
1790
1825
|
ProducerConfigContext,
|
|
1791
1826
|
ProducerConfigZod,
|
|
1792
1827
|
PublicChildManifests,
|
|
1828
|
+
ROOT_WALLET_RUNTIME_ID,
|
|
1793
1829
|
RewardRedemptionConfigContext,
|
|
1794
1830
|
RewardRedemptionConfigZod,
|
|
1831
|
+
SHARED_ACCOUNT_REPORT_COUNT,
|
|
1795
1832
|
ServiceLifetime,
|
|
1796
1833
|
ValidatorActor,
|
|
1797
1834
|
ValidatorConfigContext,
|
|
@@ -1811,36 +1848,28 @@ export {
|
|
|
1811
1848
|
basicRemoteRunnerLocator,
|
|
1812
1849
|
basicRemoteViewerLocator,
|
|
1813
1850
|
buildTelemetryConfig,
|
|
1814
|
-
|
|
1815
|
-
canUseEvmProvider,
|
|
1816
|
-
canUseInfuraProvider,
|
|
1817
|
-
canUseJsonRpcProvider,
|
|
1851
|
+
clearResolvedWalletReport,
|
|
1818
1852
|
contextFromConfigWithoutLocator,
|
|
1819
1853
|
createProducerChainStakeIntentBlock,
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1854
|
+
formatWalletReport,
|
|
1855
|
+
getBuiltInDevMnemonic,
|
|
1856
|
+
getInsecureGenesisRewardMnemonic,
|
|
1823
1857
|
getLocator,
|
|
1858
|
+
getReservedActorIndex,
|
|
1859
|
+
getResolvedWalletReport,
|
|
1824
1860
|
initActorAccount,
|
|
1825
1861
|
initActorSeedPhrase,
|
|
1826
1862
|
initActorWallet,
|
|
1827
1863
|
initBalanceSummaryMap,
|
|
1828
1864
|
initBridgedArchivistModule,
|
|
1829
1865
|
initBridgedModule,
|
|
1830
|
-
initChainFinalizedArchivist,
|
|
1831
|
-
initEvmProvider,
|
|
1832
1866
|
initEvmProvidersIfAvailable,
|
|
1833
1867
|
initFinalizationArchivistIfNeeded,
|
|
1834
1868
|
initFinalizedArchivist,
|
|
1835
|
-
initHealthEndpoints,
|
|
1836
|
-
initInfuraProvider,
|
|
1837
|
-
initJsonRpcProvider,
|
|
1838
|
-
initPendingBlocksArchivist,
|
|
1839
|
-
initRejectedTransactionsArchivist,
|
|
1840
1869
|
initServerNode,
|
|
1841
|
-
initStakeIntentStateArchivist,
|
|
1842
1870
|
initStatusReporter,
|
|
1843
1871
|
initTransferSummaryMap,
|
|
1872
|
+
initializeResolvedWalletReport,
|
|
1844
1873
|
isApiConfig,
|
|
1845
1874
|
isApiConfigContext,
|
|
1846
1875
|
isBridgeConfig,
|
|
@@ -1857,8 +1886,12 @@ export {
|
|
|
1857
1886
|
localLocatorFromConfig,
|
|
1858
1887
|
locatorsFromConfig,
|
|
1859
1888
|
mergeConfig,
|
|
1889
|
+
resolveActorWallet,
|
|
1890
|
+
resolveGenesisRewardAddress,
|
|
1891
|
+
resolveRootWallet,
|
|
1892
|
+
resolveWalletForActor,
|
|
1893
|
+
resolveWalletReport,
|
|
1860
1894
|
rootLocatorFromConfig,
|
|
1861
|
-
sharedMiddleware,
|
|
1862
1895
|
telemetryContextFromConfig,
|
|
1863
1896
|
toApiConfig,
|
|
1864
1897
|
toApiConfigContext,
|