@xyo-network/xl1-protocol-sdk 1.26.12 → 1.26.13
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/neutral/simple/accountBalance/SimpleAccountBalanceViewer.d.ts +2 -2
- package/dist/neutral/simple/block/SimpleBlockViewer.d.ts +2 -2
- package/dist/neutral/simple/datalake/SimpleDataLakeRunner.d.ts +1 -1
- package/dist/neutral/simple/finalization/SimpleFinalizationViewer.d.ts +1 -1
- package/dist/neutral/simple/windowedBlock/SimpleWindowedBlockViewer.d.ts +10 -10
- package/dist/neutral/transaction/TransactionBuilder.d.ts +4 -4
- package/dist/neutral/transaction/signTransaction.d.ts +1 -1
- package/package.json +24 -14
- package/src/ChainContextHelpers.ts +0 -50
- package/src/CreatableProvider/AbstractCreatableProvider.ts +0 -97
- package/src/CreatableProvider/CreatableProvider.ts +0 -102
- package/src/CreatableProvider/CreatableProviderRegistry.ts +0 -94
- package/src/CreatableProvider/GetInstanceOptions.ts +0 -11
- package/src/CreatableProvider/LabeledCreatableProviderFactory.ts +0 -24
- package/src/CreatableProvider/ProviderFactory.ts +0 -138
- package/src/CreatableProvider/ProviderFactoryLocator.ts +0 -170
- package/src/CreatableProvider/ProviderFactoryLocatorInstance.ts +0 -70
- package/src/CreatableProvider/index.ts +0 -8
- package/src/SignedBigInt.ts +0 -59
- package/src/_internal/context/getTestProviderContext.ts +0 -13
- package/src/_internal/context/index.ts +0 -1
- package/src/_internal/index.ts +0 -2
- package/src/actor/ActorV3.ts +0 -177
- package/src/actor/index.ts +0 -1
- package/src/amount/ShiftedBigInt.ts +0 -73
- package/src/amount/XL1Amount.ts +0 -103
- package/src/amount/index.ts +0 -4
- package/src/amount/splitOnDecimal.ts +0 -6
- package/src/amount/splitOnDecimalToString.ts +0 -40
- package/src/block/hydrate/allHashesPresent.ts +0 -8
- package/src/block/hydrate/blockPayloadsFromHydratedBlock.ts +0 -12
- package/src/block/hydrate/flattenHydratedBlock.ts +0 -28
- package/src/block/hydrate/flattenHydratedBlocks.ts +0 -7
- package/src/block/hydrate/hydrateBlock.ts +0 -43
- package/src/block/hydrate/index.ts +0 -7
- package/src/block/hydrate/transactionsFromHydratedBlock.ts +0 -7
- package/src/block/hydrate/tryHydrateBlock.ts +0 -26
- package/src/block/index.ts +0 -2
- package/src/block/primitives/blockFromBlockNumber.ts +0 -69
- package/src/block/primitives/frames/calculateFramesFromRange.ts +0 -30
- package/src/block/primitives/frames/deepCalculateFramesFromRange.ts +0 -28
- package/src/block/primitives/frames/index.ts +0 -2
- package/src/block/primitives/hashFromBlockNumber.ts +0 -9
- package/src/block/primitives/index.ts +0 -7
- package/src/block/primitives/model.ts +0 -18
- package/src/block/primitives/payloads/ChainWindow.ts +0 -7
- package/src/block/primitives/payloads/index.ts +0 -1
- package/src/block/primitives/toStepIdentityString.ts +0 -6
- package/src/block/primitives/validateTransactionOpcodes.ts +0 -45
- package/src/config/Actor.ts +0 -32
- package/src/config/Actors.ts +0 -9
- package/src/config/Base.ts +0 -27
- package/src/config/Chain.ts +0 -23
- package/src/config/Config.ts +0 -24
- package/src/config/DataLake/DataLake.ts +0 -12
- package/src/config/DataLake/DataLakeRemoteConfig.ts +0 -11
- package/src/config/DataLake/RestDataLakeConfig.ts +0 -18
- package/src/config/DataLake/RouterDataLakeConfig.ts +0 -22
- package/src/config/DataLake/index.ts +0 -4
- package/src/config/DeepPartial.ts +0 -4
- package/src/config/Evm.ts +0 -38
- package/src/config/HostActor.ts +0 -32
- package/src/config/Log.ts +0 -25
- package/src/config/Provider.ts +0 -20
- package/src/config/Providers.ts +0 -9
- package/src/config/Remote.ts +0 -59
- package/src/config/Telemetry.ts +0 -49
- package/src/config/UsageMeta.ts +0 -46
- package/src/config/Validation.ts +0 -29
- package/src/config/index.ts +0 -12
- package/src/config/storage/Storage.ts +0 -16
- package/src/config/storage/driver/Mongo.ts +0 -53
- package/src/config/storage/driver/index.ts +0 -1
- package/src/config/storage/index.ts +0 -2
- package/src/constants.ts +0 -4
- package/src/context/Actor.ts +0 -20
- package/src/context/HostActor.ts +0 -20
- package/src/context/getEmptyProviderContext.ts +0 -19
- package/src/context/index.ts +0 -3
- package/src/createDeclarationPayload.ts +0 -15
- package/src/createTransferPayload.ts +0 -16
- package/src/driver/cache/LruCacheMap.ts +0 -48
- package/src/driver/cache/index.ts +0 -1
- package/src/driver/index.ts +0 -2
- package/src/driver/memory/MemoryMap.ts +0 -48
- package/src/driver/memory/index.ts +0 -1
- package/src/eip-712/Payloads/EIP712Data.ts +0 -35
- package/src/eip-712/Payloads/EIP712Signature.ts +0 -32
- package/src/eip-712/Payloads/index.ts +0 -2
- package/src/eip-712/Types.ts +0 -41
- package/src/eip-712/index.ts +0 -4
- package/src/eip-712/sign.ts +0 -19
- package/src/eip-712/spec/fixtures.ts +0 -27
- package/src/eip-712/verify.ts +0 -20
- package/src/getFileConfig.ts +0 -36
- package/src/index.ts +0 -27
- package/src/instances/Address.ts +0 -16
- package/src/instances/BoundWitness.ts +0 -13
- package/src/instances/Data.ts +0 -4
- package/src/instances/Fees.ts +0 -9
- package/src/instances/HydratedBoundWitness.ts +0 -16
- package/src/instances/Object.ts +0 -6
- package/src/instances/Payload.ts +0 -7
- package/src/instances/Signature.ts +0 -12
- package/src/instances/block/BlockFields.ts +0 -18
- package/src/instances/block/HydratedBlock.ts +0 -10
- package/src/instances/block/index.ts +0 -1
- package/src/instances/index.ts +0 -10
- package/src/instances/modifiers/BlockWindowInstance.ts +0 -8
- package/src/instances/modifiers/BlockWindowState.ts +0 -6
- package/src/instances/modifiers/Signed.ts +0 -9
- package/src/instances/modifiers/Validatable.ts +0 -6
- package/src/instances/modifiers/index.ts +0 -4
- package/src/instances/transaction/HydratedTransaction.ts +0 -9
- package/src/instances/transaction/TransactionFields.ts +0 -22
- package/src/instances/transaction/index.ts +0 -1
- package/src/isInternetAvailable.ts +0 -11
- package/src/model/ChainFork/ChainForkStatic.ts +0 -9
- package/src/model/ChainFork/index.ts +0 -1
- package/src/model/ChainIdentity.ts +0 -6
- package/src/model/ChainStore.ts +0 -16
- package/src/model/CreatableProviderContext.ts +0 -6
- package/src/model/CreatableProviderContext.zod.ts +0 -55
- package/src/model/PayloadBundle/bundledPayloadToHydratedBlock.ts +0 -15
- package/src/model/PayloadBundle/bundledPayloadToHydratedTransaction.ts +0 -15
- package/src/model/PayloadBundle/hydratedBlockToPayloadBundle.ts +0 -19
- package/src/model/PayloadBundle/hydratedTransactionToPayloadBundle.ts +0 -19
- package/src/model/PayloadBundle/index.ts +0 -4
- package/src/model/index.ts +0 -6
- package/src/multipliers.ts +0 -18
- package/src/payloads/AddressPairPayload.ts +0 -27
- package/src/payloads/index.ts +0 -4
- package/src/payloads/netBalancesForPayloads.ts +0 -24
- package/src/payloads/netSchemasForPayloads.ts +0 -24
- package/src/payloads/netTransfersForPayloads.ts +0 -27
- package/src/primitives/block/index.ts +0 -2
- package/src/primitives/block/range/blockRangeSteps.ts +0 -23
- package/src/primitives/block/range/index.ts +0 -1
- package/src/primitives/block/rate/blockRate.ts +0 -77
- package/src/primitives/block/rate/index.ts +0 -4
- package/src/primitives/block/rate/stepRate.ts +0 -37
- package/src/primitives/block/rate/timeHelpers.ts +0 -61
- package/src/primitives/block/rate/timeRate.ts +0 -121
- package/src/primitives/chain/getWindowedChain.ts +0 -50
- package/src/primitives/chain/index.ts +0 -3
- package/src/primitives/chain/step/chainStepRewardAddress.ts +0 -30
- package/src/primitives/chain/step/index.ts +0 -4
- package/src/primitives/chain/step/stepRewardBlock.ts +0 -13
- package/src/primitives/chain/step/stepRewardTotal.ts +0 -46
- package/src/primitives/chain/step/stepsRewardTotal.ts +0 -37
- package/src/primitives/chain/time/externalBlockNumberFromXL1BlockNumber.ts +0 -32
- package/src/primitives/chain/time/externalBlockRangeFromStep.ts +0 -21
- package/src/primitives/chain/time/externalBlockRangeFromXL1BlockRange.ts +0 -17
- package/src/primitives/chain/time/index.ts +0 -3
- package/src/primitives/datalake/addDataLakePayloads.ts +0 -18
- package/src/primitives/datalake/addDataLakePayloadsToPayloads.ts +0 -24
- package/src/primitives/datalake/index.ts +0 -2
- package/src/primitives/index.ts +0 -13
- package/src/primitives/mapToMapType.ts +0 -35
- package/src/primitives/payload/index.ts +0 -1
- package/src/primitives/payload/mergeTransfers.ts +0 -16
- package/src/primitives/readPayloadMapFromStore.ts +0 -58
- package/src/primitives/rewardFromBlockNumber.ts +0 -19
- package/src/primitives/rewards/index.ts +0 -1
- package/src/primitives/rewards/networkStakeStepRewardPositionWeight.ts +0 -26
- package/src/primitives/stake/activeStakeAtTimeByAddress.ts +0 -27
- package/src/primitives/stake/activeStakeAtTimeByPosition.ts +0 -25
- package/src/primitives/stake/allStakersForRange.ts +0 -32
- package/src/primitives/stake/allStakersForStep.ts +0 -24
- package/src/primitives/stake/index.ts +0 -6
- package/src/primitives/stake/mergedAddRemoveStakeEventsByPosition.ts +0 -15
- package/src/primitives/stake/mergedAddRemoveStakeEventsByStaker.ts +0 -17
- package/src/primitives/stake/weightedStakeForRangeByPosition.ts +0 -69
- package/src/primitives/state/findMostRecentBlock.ts +0 -44
- package/src/primitives/state/hydratedBlockByNumber.ts +0 -25
- package/src/primitives/state/index.ts +0 -2
- package/src/primitives/step/completedStepRewardAddress.ts +0 -10
- package/src/primitives/step/derivedReceiveAddress.ts +0 -9
- package/src/primitives/step/index.ts +0 -4
- package/src/primitives/step/stepBlockRange.ts +0 -9
- package/src/primitives/step/stepTransferIndex.ts +0 -19
- package/src/primitives/transaction/elevatedPayloads.ts +0 -24
- package/src/primitives/transaction/index.ts +0 -1
- package/src/primitives/uncle/findBestUncle.ts +0 -9
- package/src/primitives/uncle/findUncles.ts +0 -75
- package/src/primitives/uncle/index.ts +0 -3
- package/src/primitives/uncle/scoreUncle.ts +0 -7
- package/src/services/AccountTransfersService.ts +0 -13
- package/src/services/BlockProducerService.ts +0 -11
- package/src/services/Chain/BaseChainService.ts +0 -4
- package/src/services/Chain/ChainHeadService.ts +0 -8
- package/src/services/Chain/ChainService.ts +0 -6
- package/src/services/Chain/index.ts +0 -3
- package/src/services/Election.ts +0 -14
- package/src/services/NetworkStakeService.ts +0 -4
- package/src/services/Params.ts +0 -13
- package/src/services/PendingTransactionsService.ts +0 -7
- package/src/services/SchemasService.ts +0 -11
- package/src/services/StakeIntentService/ChainIndexingServiceStateSchema.ts +0 -50
- package/src/services/StakeIntentService/StakeIntentService.ts +0 -35
- package/src/services/StakeIntentService/index.ts +0 -2
- package/src/services/index.ts +0 -8
- package/src/simple/StakeEventsViewer/SimpleStakeEventsViewer.ts +0 -93
- package/src/simple/StakeEventsViewer/index.ts +0 -1
- package/src/simple/StakeTotalsViewer/SimpleStakeTotalsViewer.ts +0 -116
- package/src/simple/StakeTotalsViewer/index.ts +0 -1
- package/src/simple/StakeViewer/SimpleStakeViewer.ts +0 -164
- package/src/simple/StakeViewer/index.ts +0 -1
- package/src/simple/TransactionViewer/SimpleTransactionViewer.ts +0 -100
- package/src/simple/TransactionViewer/index.ts +0 -1
- package/src/simple/accountBalance/SimpleAccountBalanceViewer.ts +0 -271
- package/src/simple/accountBalance/index.ts +0 -1
- package/src/simple/block/SimpleBlockViewer.ts +0 -231
- package/src/simple/block/index.ts +0 -1
- package/src/simple/blockInvalidation/SimpleBlockInvalidationViewer.ts +0 -197
- package/src/simple/blockInvalidation/index.ts +0 -1
- package/src/simple/blockReward/SimpleBlockRewardViewer.ts +0 -27
- package/src/simple/blockReward/index.ts +0 -1
- package/src/simple/blockValidation/SimpleBlockValidationViewer.ts +0 -194
- package/src/simple/blockValidation/index.ts +0 -1
- package/src/simple/chainContractViewer/SimpleChainContractViewer.ts +0 -92
- package/src/simple/chainContractViewer/index.ts +0 -1
- package/src/simple/client/SimpleXyoClient.ts +0 -14
- package/src/simple/client/index.ts +0 -1
- package/src/simple/datalake/AbstractRestDataLake.ts +0 -70
- package/src/simple/datalake/AbstractSimpleDataLake.ts +0 -62
- package/src/simple/datalake/RestDataLakeRunner.ts +0 -54
- package/src/simple/datalake/RestDataLakeViewer.ts +0 -22
- package/src/simple/datalake/SimpleDataLakeRunner.ts +0 -44
- package/src/simple/datalake/SimpleDataLakeViewer.ts +0 -24
- package/src/simple/datalake/index.ts +0 -4
- package/src/simple/finalization/SimpleFinalizationRunner.ts +0 -45
- package/src/simple/finalization/SimpleFinalizationViewer.ts +0 -123
- package/src/simple/finalization/index.ts +0 -2
- package/src/simple/gateway/SimpleXyoGateway.ts +0 -30
- package/src/simple/gateway/SimpleXyoGatewayRunner.ts +0 -137
- package/src/simple/gateway/index.ts +0 -2
- package/src/simple/index.ts +0 -22
- package/src/simple/mempool/SimpleMempoolRunner.ts +0 -390
- package/src/simple/mempool/SimpleMempoolViewer.ts +0 -215
- package/src/simple/mempool/index.ts +0 -2
- package/src/simple/network/SimpleXyoNetwork.ts +0 -48
- package/src/simple/network/index.ts +0 -1
- package/src/simple/network/lib/FailedNetworkStatusPayloads.ts +0 -16
- package/src/simple/network/lib/StatusNetworks.ts +0 -32
- package/src/simple/network/lib/index.ts +0 -2
- package/src/simple/permissions/SimpleXyoPermissions.ts +0 -82
- package/src/simple/permissions/index.ts +0 -2
- package/src/simple/permissions/store/MemoryPermissions.ts +0 -32
- package/src/simple/permissions/store/PermissionsStore.ts +0 -17
- package/src/simple/permissions/store/index.ts +0 -2
- package/src/simple/runner/SimpleXyoRunner.ts +0 -41
- package/src/simple/runner/index.ts +0 -1
- package/src/simple/signer/SimpleXyoSigner.ts +0 -78
- package/src/simple/signer/index.ts +0 -1
- package/src/simple/timeSync2/SimpleTimeSyncViewer.ts +0 -132
- package/src/simple/timeSync2/index.ts +0 -1
- package/src/simple/transactionInvalidation/SimpleTransactionInvalidationViewer.ts +0 -197
- package/src/simple/transactionInvalidation/index.ts +0 -1
- package/src/simple/transactionValidation/SimpleTransactionValidationViewer.ts +0 -173
- package/src/simple/transactionValidation/index.ts +0 -1
- package/src/simple/windowedBlock/SimpleWindowedBlockViewer.ts +0 -207
- package/src/simple/windowedBlock/index.ts +0 -1
- package/src/status/RuntimeStatusMonitor.ts +0 -120
- package/src/status/ServiceStatus.ts +0 -21
- package/src/status/index.ts +0 -2
- package/src/summary/index.ts +0 -2
- package/src/summary/model/BalancesStepSummary.ts +0 -35
- package/src/summary/model/SchemasStepSummary.ts +0 -33
- package/src/summary/model/StepSummary.ts +0 -20
- package/src/summary/model/TransfersSummary.ts +0 -36
- package/src/summary/model/index.ts +0 -4
- package/src/summary/primitives/balances/balancesStepSummaryFromRange.ts +0 -94
- package/src/summary/primitives/balances/balancesSummary.ts +0 -48
- package/src/summary/primitives/balances/index.ts +0 -2
- package/src/summary/primitives/index.ts +0 -3
- package/src/summary/primitives/schemas/index.ts +0 -2
- package/src/summary/primitives/schemas/schemasStepSummaryFromRange.ts +0 -86
- package/src/summary/primitives/schemas/schemasSummary.ts +0 -44
- package/src/summary/primitives/transfers/index.ts +0 -2
- package/src/summary/primitives/transfers/transfersStepSummaryFromRange.ts +0 -109
- package/src/summary/primitives/transfers/transfersSummary.ts +0 -52
- package/src/test/BuildBlockOptions.ts +0 -81
- package/src/test/buildBlock.ts +0 -105
- package/src/test/buildGenesisBlock.ts +0 -29
- package/src/test/buildNextBlock.ts +0 -37
- package/src/test/buildRandomChain.ts +0 -92
- package/src/test/buildRandomGenesisBlock.ts +0 -47
- package/src/test/createGenesisBlock.ts +0 -41
- package/src/test/createProducerChainStakeIntentTransaction.ts +0 -48
- package/src/test/getSimpleBlockViewerLocator.ts +0 -41
- package/src/test/getTestProviderContext.ts +0 -8
- package/src/test/index.ts +0 -2
- package/src/time/index.ts +0 -1
- package/src/time/primitives/index.ts +0 -1
- package/src/time/primitives/xl1BlockNumberToEthBlockNumber.ts +0 -13
- package/src/transaction/TransactionBuilder.ts +0 -164
- package/src/transaction/buildRandomTransaction.ts +0 -38
- package/src/transaction/buildTransaction.ts +0 -68
- package/src/transaction/buildUnsignedTransaction.ts +0 -56
- package/src/transaction/confirmSubmittedTransaction.ts +0 -42
- package/src/transaction/hydrateTransaction.ts +0 -117
- package/src/transaction/index.ts +0 -9
- package/src/transaction/primitives/index.ts +0 -4
- package/src/transaction/primitives/transactionBlockByteCount.ts +0 -10
- package/src/transaction/primitives/transactionElevatedPayloads.ts +0 -18
- package/src/transaction/primitives/transactionOperations.ts +0 -13
- package/src/transaction/primitives/transactionRequiredGas.ts +0 -22
- package/src/transaction/script.ts +0 -48
- package/src/transaction/signTransaction.ts +0 -32
- package/src/utils/HydratedCache.ts +0 -39
- package/src/utils/index.ts +0 -2
- package/src/utils/isZodError.ts +0 -11
- package/src/validation/index.ts +0 -2
- package/src/validation/lib/getUrl.ts +0 -7
- package/src/validation/lib/index.ts +0 -2
- package/src/validation/lib/isLocalhost.ts +0 -9
- package/src/validation/schema/Address.ts +0 -2
- package/src/validation/schema/Mnemonic.ts +0 -21
- package/src/validation/schema/index.ts +0 -2
- package/src/wallet/generateXyoBaseWalletFromPhrase.ts +0 -13
- package/src/wallet/index.ts +0 -2
- package/src/wallet/paths.ts +0 -17
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
import { assertEx, Promisable } from '@xylabs/sdk-js'
|
|
2
|
-
import { PayloadBuilder } from '@xyo-network/sdk-js'
|
|
3
|
-
import {
|
|
4
|
-
AccountBalanceViewer,
|
|
5
|
-
AccountBalanceViewerMoniker,
|
|
6
|
-
asXL1BlockRange,
|
|
7
|
-
BlockInvalidationConfig,
|
|
8
|
-
BlockInvalidationQualification,
|
|
9
|
-
BlockInvalidationViewer,
|
|
10
|
-
BlockInvalidationViewerMoniker,
|
|
11
|
-
BlockViewer,
|
|
12
|
-
BlockViewerMoniker,
|
|
13
|
-
ChainContractViewer,
|
|
14
|
-
ChainContractViewerMoniker,
|
|
15
|
-
ChainId,
|
|
16
|
-
HydratedBlockStateValidationFunction,
|
|
17
|
-
HydratedBlockValidationError,
|
|
18
|
-
HydratedBlockValidationFunction,
|
|
19
|
-
isChainQualifiedHeadConfig,
|
|
20
|
-
isHydratedBlock,
|
|
21
|
-
SignedHydratedBlock,
|
|
22
|
-
type SignedHydratedBlockWithHashMeta,
|
|
23
|
-
XL1BlockNumber,
|
|
24
|
-
} from '@xyo-network/xl1-protocol-lib'
|
|
25
|
-
|
|
26
|
-
import type { CreatableProviderParams } from '../../CreatableProvider/index.ts'
|
|
27
|
-
import { AbstractCreatableProvider, creatableProvider } from '../../CreatableProvider/index.ts'
|
|
28
|
-
import { findUncles, getWindowedChain } from '../../primitives/index.ts'
|
|
29
|
-
|
|
30
|
-
/** Parameters for SimpleBlockInvalidationViewer. */
|
|
31
|
-
export interface SimpleBlockInvalidationViewerParams extends CreatableProviderParams {
|
|
32
|
-
maxUncleWindowSize?: number
|
|
33
|
-
state?: HydratedBlockStateValidationFunction
|
|
34
|
-
value?: HydratedBlockValidationFunction
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/** SimpleBlockInvalidationViewer implementation. */
|
|
38
|
-
@creatableProvider()
|
|
39
|
-
export class SimpleBlockInvalidationViewer extends AbstractCreatableProvider<SimpleBlockInvalidationViewerParams> implements BlockInvalidationViewer {
|
|
40
|
-
static readonly defaultMoniker = BlockInvalidationViewerMoniker
|
|
41
|
-
static readonly dependencies = [AccountBalanceViewerMoniker, BlockViewerMoniker, ChainContractViewerMoniker]
|
|
42
|
-
static readonly monikers = [BlockInvalidationViewerMoniker]
|
|
43
|
-
moniker = SimpleBlockInvalidationViewer.defaultMoniker
|
|
44
|
-
|
|
45
|
-
private _accountBalanceViewer!: AccountBalanceViewer
|
|
46
|
-
private _blockViewer!: BlockViewer
|
|
47
|
-
private _chainContractViewer!: ChainContractViewer
|
|
48
|
-
private _uncleWindowedChainCache: SignedHydratedBlockWithHashMeta[] | null = null
|
|
49
|
-
|
|
50
|
-
protected get blockViewer() {
|
|
51
|
-
return this._blockViewer
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
protected get chainContractViewer() {
|
|
55
|
-
return this._chainContractViewer
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
protected get maxUncleWindowSize() {
|
|
59
|
-
return this.params.maxUncleWindowSize!
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
static override async paramsHandler(params: Partial<SimpleBlockInvalidationViewerParams>): Promise<SimpleBlockInvalidationViewerParams> {
|
|
63
|
-
return {
|
|
64
|
-
...await super.paramsHandler(params),
|
|
65
|
-
value: params.value,
|
|
66
|
-
state: params.state,
|
|
67
|
-
maxUncleWindowSize: params.maxUncleWindowSize ?? 100,
|
|
68
|
-
} satisfies SimpleBlockInvalidationViewerParams
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
override async createHandler() {
|
|
72
|
-
await super.createHandler()
|
|
73
|
-
this._accountBalanceViewer = await this.locator.getInstance<AccountBalanceViewer>(AccountBalanceViewerMoniker)
|
|
74
|
-
this._blockViewer = await this.locator.getInstance<BlockViewer>(BlockViewerMoniker)
|
|
75
|
-
this._chainContractViewer = await this.locator.getInstance<ChainContractViewer>(ChainContractViewerMoniker)
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
async invalidateBlock(
|
|
79
|
-
block: SignedHydratedBlock,
|
|
80
|
-
config?: BlockInvalidationConfig,
|
|
81
|
-
): Promise<HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta> {
|
|
82
|
-
return (await this.invalidateBlocks([block], config))[0]
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
async invalidateBlocks(
|
|
86
|
-
blocks: SignedHydratedBlock[],
|
|
87
|
-
config?: BlockInvalidationConfig,
|
|
88
|
-
): Promise<(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[]> {
|
|
89
|
-
return (await this.qualifiedInvalidateBlocks(blocks, config))[0]
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
async invalidateUncle(
|
|
93
|
-
blocks: SignedHydratedBlock[],
|
|
94
|
-
config?: BlockInvalidationConfig,
|
|
95
|
-
): Promise<(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[]> {
|
|
96
|
-
return (await this.qualifiedInvalidateUncle(blocks, config))[0]
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
async qualifiedInvalidateBlock(
|
|
100
|
-
block: SignedHydratedBlockWithHashMeta,
|
|
101
|
-
config?: BlockInvalidationConfig,
|
|
102
|
-
): Promise<[HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta, BlockInvalidationQualification]> {
|
|
103
|
-
const result = (await this.qualifiedInvalidateBlocks([block], config))
|
|
104
|
-
return [result[0][0], result[1]]
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
async qualifiedInvalidateBlocks(
|
|
108
|
-
blocks: SignedHydratedBlock[],
|
|
109
|
-
config?: BlockInvalidationConfig,
|
|
110
|
-
): Promise<[(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[], BlockInvalidationQualification]> {
|
|
111
|
-
const { value, state } = config ?? {
|
|
112
|
-
shape: true, links: true, state: true, head: undefined,
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
const blocksWithMeta = await Promise.all(blocks.map(b => Promise.all([PayloadBuilder.addHashMeta(b[0]), PayloadBuilder.addHashMeta(b[1])])))
|
|
116
|
-
|
|
117
|
-
const head = isChainQualifiedHeadConfig(config)
|
|
118
|
-
? assertEx(
|
|
119
|
-
(await this.blockViewer.blockByHash(config.head))?.[0],
|
|
120
|
-
() => `Specified a head that is not in the chain [${config.head}]`,
|
|
121
|
-
)
|
|
122
|
-
: undefined
|
|
123
|
-
|
|
124
|
-
const headBlock = head ?? (await this.blockViewer.currentBlock())[0]
|
|
125
|
-
|
|
126
|
-
const validateProtocol = value ? this.doInvalidateProtocol.bind(this) : undefined
|
|
127
|
-
const validateState = state ? this.doInvalidateState.bind(this) : undefined
|
|
128
|
-
|
|
129
|
-
const chainIdAtBlockNumber = (blockNumber: XL1BlockNumber) => this.chainContractViewer.chainIdAtBlockNumber(blockNumber)
|
|
130
|
-
|
|
131
|
-
const qualification = { head: headBlock._hash, range: asXL1BlockRange([0, headBlock.block], true) }
|
|
132
|
-
const [protocolResults, stateResults] = await Promise.all([
|
|
133
|
-
validateProtocol?.(blocksWithMeta, chainIdAtBlockNumber), validateState?.(blocksWithMeta, chainIdAtBlockNumber),
|
|
134
|
-
])
|
|
135
|
-
const blockResults = blocksWithMeta.map((r, i) => {
|
|
136
|
-
const errors = []
|
|
137
|
-
if (protocolResults && !isHydratedBlock(protocolResults[i])) {
|
|
138
|
-
errors.push(...(protocolResults[i]))
|
|
139
|
-
}
|
|
140
|
-
if (stateResults && !isHydratedBlock(stateResults[i])) {
|
|
141
|
-
errors.push(...(stateResults[i]))
|
|
142
|
-
}
|
|
143
|
-
return errors.length === 0 ? r : errors
|
|
144
|
-
})
|
|
145
|
-
return [blockResults, qualification]
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
qualifiedInvalidateUncle(
|
|
149
|
-
_blocks: SignedHydratedBlock[],
|
|
150
|
-
_config?: BlockInvalidationConfig,
|
|
151
|
-
): Promise<[(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[], BlockInvalidationQualification]> {
|
|
152
|
-
throw new Error('Method not implemented.')
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
private async doInvalidateProtocol(
|
|
156
|
-
blocks: SignedHydratedBlockWithHashMeta[],
|
|
157
|
-
chainIdAtBlockNumber: (blockNumber: XL1BlockNumber) => Promisable<ChainId>,
|
|
158
|
-
): Promise<(SignedHydratedBlockWithHashMeta | HydratedBlockValidationError[])[]> {
|
|
159
|
-
return (await Promise.all(blocks.map(async (block) => {
|
|
160
|
-
const errors = await this.params.value!(
|
|
161
|
-
this.context,
|
|
162
|
-
block,
|
|
163
|
-
chainIdAtBlockNumber,
|
|
164
|
-
)
|
|
165
|
-
return (errors.length === 0) ? block : errors
|
|
166
|
-
})))
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
private async doInvalidateState(
|
|
170
|
-
blocks: SignedHydratedBlockWithHashMeta[],
|
|
171
|
-
chainIdAtBlockNumber: (blockNumber: XL1BlockNumber) => Promisable<ChainId>,
|
|
172
|
-
): Promise<(SignedHydratedBlockWithHashMeta | HydratedBlockValidationError[])[]> {
|
|
173
|
-
const windowedUncleChain = await this.updateWindowedChainCache()
|
|
174
|
-
|
|
175
|
-
const uncles = findUncles(this.context, windowedUncleChain, blocks)
|
|
176
|
-
|
|
177
|
-
if (uncles.length !== 1) {
|
|
178
|
-
this.logger?.warn(JSON.stringify({ uncles, blocks }, null, 2))
|
|
179
|
-
this.logger?.warn(JSON.stringify(windowedUncleChain, null, 2))
|
|
180
|
-
throw new Error(`No uncles or greater than one uncle found in block validation, which is not supported [${uncles.length}, ${blocks.length}]`)
|
|
181
|
-
}
|
|
182
|
-
return (await Promise.all(uncles[0].map(async (block) => {
|
|
183
|
-
const errors = await this.params.state!(
|
|
184
|
-
{
|
|
185
|
-
...this.context, chainIdAtBlockNumber, accountBalance: this._accountBalanceViewer,
|
|
186
|
-
},
|
|
187
|
-
block,
|
|
188
|
-
)
|
|
189
|
-
return (errors.length === 0) ? block : errors
|
|
190
|
-
})))
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
private async updateWindowedChainCache() {
|
|
194
|
-
this._uncleWindowedChainCache = await getWindowedChain(this.context, this.blockViewer, this.maxUncleWindowSize, this._uncleWindowedChainCache ?? [])
|
|
195
|
-
return [...this._uncleWindowedChainCache]
|
|
196
|
-
}
|
|
197
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './SimpleBlockInvalidationViewer.ts'
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { Promisable } from '@xylabs/sdk-js'
|
|
2
|
-
import {
|
|
3
|
-
AttoXL1, BlockRewardViewer, BlockRewardViewerMoniker, XL1BlockNumber,
|
|
4
|
-
} from '@xyo-network/xl1-protocol-lib'
|
|
5
|
-
|
|
6
|
-
import {
|
|
7
|
-
AbstractCreatableProvider, creatableProvider, CreatableProviderParams,
|
|
8
|
-
} from '../../CreatableProvider/index.ts'
|
|
9
|
-
import { rewardFromBlockNumber } from '../../primitives/index.ts'
|
|
10
|
-
|
|
11
|
-
/** Parameters for SimpleBlockRewardViewer. */
|
|
12
|
-
export interface SimpleBlockRewardViewerParams extends CreatableProviderParams {}
|
|
13
|
-
|
|
14
|
-
/** SimpleBlockRewardViewer implementation. */
|
|
15
|
-
@creatableProvider()
|
|
16
|
-
export class SimpleBlockRewardViewer extends AbstractCreatableProvider<SimpleBlockRewardViewerParams> implements BlockRewardViewer {
|
|
17
|
-
static readonly defaultMoniker = BlockRewardViewerMoniker
|
|
18
|
-
static readonly dependencies = []
|
|
19
|
-
static readonly monikers = [BlockRewardViewerMoniker]
|
|
20
|
-
moniker = SimpleBlockRewardViewer.defaultMoniker
|
|
21
|
-
|
|
22
|
-
allowedRewardForBlock(block: XL1BlockNumber): Promisable<AttoXL1> {
|
|
23
|
-
return rewardFromBlockNumber(
|
|
24
|
-
block,
|
|
25
|
-
)
|
|
26
|
-
}
|
|
27
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './SimpleBlockRewardViewer.ts'
|
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
import { assertEx, Promisable } from '@xylabs/sdk-js'
|
|
2
|
-
import { PayloadBuilder } from '@xyo-network/sdk-js'
|
|
3
|
-
import {
|
|
4
|
-
AccountBalanceViewer,
|
|
5
|
-
AccountBalanceViewerMoniker,
|
|
6
|
-
asXL1BlockRange,
|
|
7
|
-
BlockValidationConfig,
|
|
8
|
-
BlockValidationQualification,
|
|
9
|
-
BlockValidationViewer,
|
|
10
|
-
BlockValidationViewerMoniker,
|
|
11
|
-
BlockViewer,
|
|
12
|
-
BlockViewerMoniker,
|
|
13
|
-
ChainContractViewer,
|
|
14
|
-
ChainContractViewerMoniker,
|
|
15
|
-
ChainId,
|
|
16
|
-
HydratedBlockStateValidationFunction,
|
|
17
|
-
HydratedBlockValidationError,
|
|
18
|
-
HydratedBlockValidationFunction,
|
|
19
|
-
isChainQualifiedHeadConfig,
|
|
20
|
-
isHydratedBlock,
|
|
21
|
-
SignedHydratedBlock,
|
|
22
|
-
type SignedHydratedBlockWithHashMeta,
|
|
23
|
-
XL1BlockNumber,
|
|
24
|
-
} from '@xyo-network/xl1-protocol-lib'
|
|
25
|
-
|
|
26
|
-
import type { CreatableProviderParams } from '../../CreatableProvider/index.ts'
|
|
27
|
-
import { AbstractCreatableProvider, creatableProvider } from '../../CreatableProvider/index.ts'
|
|
28
|
-
import { findUncles, getWindowedChain } from '../../primitives/index.ts'
|
|
29
|
-
|
|
30
|
-
/** Parameters for SimpleBlockValidationViewer. */
|
|
31
|
-
export interface SimpleBlockValidationViewerParams extends CreatableProviderParams {
|
|
32
|
-
maxUncleWindowSize?: number
|
|
33
|
-
protocol?: HydratedBlockValidationFunction
|
|
34
|
-
state?: HydratedBlockStateValidationFunction
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/** SimpleBlockValidationViewer implementation. */
|
|
38
|
-
@creatableProvider()
|
|
39
|
-
export class SimpleBlockValidationViewer extends AbstractCreatableProvider<SimpleBlockValidationViewerParams> implements BlockValidationViewer {
|
|
40
|
-
static readonly defaultMoniker = BlockValidationViewerMoniker
|
|
41
|
-
static readonly dependencies = [AccountBalanceViewerMoniker, BlockViewerMoniker, ChainContractViewerMoniker]
|
|
42
|
-
static readonly monikers = [BlockValidationViewerMoniker]
|
|
43
|
-
moniker = SimpleBlockValidationViewer.defaultMoniker
|
|
44
|
-
|
|
45
|
-
private _accountBalanceViewer!: AccountBalanceViewer
|
|
46
|
-
private _blockViewer!: BlockViewer
|
|
47
|
-
private _chainContractViewer!: ChainContractViewer
|
|
48
|
-
private _uncleWindowedChainCache: SignedHydratedBlockWithHashMeta[] | null = null
|
|
49
|
-
|
|
50
|
-
protected get blockViewer() {
|
|
51
|
-
return this._blockViewer
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
protected get chainContractViewer() {
|
|
55
|
-
return this._chainContractViewer
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
protected get maxUncleWindowSize() {
|
|
59
|
-
return this.params.maxUncleWindowSize!
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
static override async paramsHandler(params: Partial<SimpleBlockValidationViewerParams>): Promise<SimpleBlockValidationViewerParams> {
|
|
63
|
-
return {
|
|
64
|
-
...await super.paramsHandler(params),
|
|
65
|
-
protocol: params.protocol,
|
|
66
|
-
state: params.state,
|
|
67
|
-
maxUncleWindowSize: params.maxUncleWindowSize ?? 100,
|
|
68
|
-
} satisfies SimpleBlockValidationViewerParams
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
override async createHandler() {
|
|
72
|
-
await super.createHandler()
|
|
73
|
-
this._accountBalanceViewer = await this.locator.getInstance<AccountBalanceViewer>(AccountBalanceViewerMoniker)
|
|
74
|
-
this._blockViewer = await this.locator.getInstance<BlockViewer>(BlockViewerMoniker)
|
|
75
|
-
this._chainContractViewer = await this.locator.getInstance<ChainContractViewer>(ChainContractViewerMoniker)
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
async qualifiedValidateBlock(
|
|
79
|
-
block: SignedHydratedBlockWithHashMeta,
|
|
80
|
-
config?: BlockValidationConfig,
|
|
81
|
-
): Promise<[HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta, BlockValidationQualification]> {
|
|
82
|
-
const result = (await this.qualifiedValidateBlocks([block], config))
|
|
83
|
-
return [result[0][0], result[1]]
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
async qualifiedValidateBlocks(
|
|
87
|
-
blocks: SignedHydratedBlock[],
|
|
88
|
-
config?: BlockValidationConfig,
|
|
89
|
-
): Promise<[(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[], BlockValidationQualification]> {
|
|
90
|
-
const { value, state } = config ?? {
|
|
91
|
-
shape: true, links: true, state: true, head: undefined,
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
const blocksWithMeta = await Promise.all(blocks.map(b => Promise.all([PayloadBuilder.addHashMeta(b[0]), PayloadBuilder.addHashMeta(b[1])])))
|
|
95
|
-
|
|
96
|
-
const head = isChainQualifiedHeadConfig(config)
|
|
97
|
-
? assertEx(
|
|
98
|
-
(await this.blockViewer.blockByHash(config.head))?.[0],
|
|
99
|
-
() => `Specified a head that is not in the chain [${config.head}]`,
|
|
100
|
-
)
|
|
101
|
-
: undefined
|
|
102
|
-
|
|
103
|
-
const headBlock = head ?? (await this.blockViewer.currentBlock())[0]
|
|
104
|
-
|
|
105
|
-
const validateProtocol = value ? this.doValidateProtocol.bind(this) : undefined
|
|
106
|
-
const validateState = state ? this.doValidateState.bind(this) : undefined
|
|
107
|
-
|
|
108
|
-
const chainIdAtBlockNumber = (blockNumber: XL1BlockNumber) => this.chainContractViewer.chainIdAtBlockNumber(blockNumber)
|
|
109
|
-
|
|
110
|
-
const qualification = { head: headBlock._hash, range: asXL1BlockRange([0, headBlock.block], true) }
|
|
111
|
-
const [protocolResults, stateResults] = await Promise.all([
|
|
112
|
-
validateProtocol?.(blocksWithMeta, chainIdAtBlockNumber), validateState?.(blocksWithMeta, chainIdAtBlockNumber),
|
|
113
|
-
])
|
|
114
|
-
const blockResults = blocksWithMeta.map((r, i) => {
|
|
115
|
-
const errors = []
|
|
116
|
-
if (protocolResults && !isHydratedBlock(protocolResults[i])) {
|
|
117
|
-
errors.push(...(protocolResults[i]))
|
|
118
|
-
}
|
|
119
|
-
if (stateResults && !isHydratedBlock(stateResults[i])) {
|
|
120
|
-
errors.push(...(stateResults[i]))
|
|
121
|
-
}
|
|
122
|
-
return errors.length === 0 ? r : errors
|
|
123
|
-
})
|
|
124
|
-
return [blockResults, qualification]
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
qualifiedValidateUncle(
|
|
128
|
-
_blocks: SignedHydratedBlock[],
|
|
129
|
-
_config?: BlockValidationConfig,
|
|
130
|
-
): Promise<[(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[], BlockValidationQualification]> {
|
|
131
|
-
throw new Error('Method not implemented.')
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
async validateBlock(block: SignedHydratedBlock, config?: BlockValidationConfig): Promise<HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta> {
|
|
135
|
-
return (await this.validateBlocks([block], config))[0]
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
async validateBlocks(
|
|
139
|
-
blocks: SignedHydratedBlock[],
|
|
140
|
-
config?: BlockValidationConfig,
|
|
141
|
-
): Promise<(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[]> {
|
|
142
|
-
return (await this.qualifiedValidateBlocks(blocks, config))[0]
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
async validateUncle(
|
|
146
|
-
blocks: SignedHydratedBlock[],
|
|
147
|
-
config?: BlockValidationConfig,
|
|
148
|
-
): Promise<(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[]> {
|
|
149
|
-
return (await this.qualifiedValidateUncle(blocks, config))[0]
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
private async doValidateProtocol(
|
|
153
|
-
blocks: SignedHydratedBlockWithHashMeta[],
|
|
154
|
-
chainIdAtBlockNumber: (blockNumber: XL1BlockNumber) => Promisable<ChainId>,
|
|
155
|
-
): Promise<(SignedHydratedBlockWithHashMeta | HydratedBlockValidationError[])[]> {
|
|
156
|
-
return (await Promise.all(blocks.map(async (block) => {
|
|
157
|
-
const errors = await this.params.protocol!(
|
|
158
|
-
this.context,
|
|
159
|
-
block,
|
|
160
|
-
chainIdAtBlockNumber,
|
|
161
|
-
)
|
|
162
|
-
return (errors.length === 0) ? block : errors
|
|
163
|
-
})))
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
private async doValidateState(
|
|
167
|
-
blocks: SignedHydratedBlockWithHashMeta[],
|
|
168
|
-
chainIdAtBlockNumber: (blockNumber: XL1BlockNumber) => Promisable<ChainId>,
|
|
169
|
-
): Promise<(SignedHydratedBlockWithHashMeta | HydratedBlockValidationError[])[]> {
|
|
170
|
-
const windowedUncleChain = await this.updateWindowedChainCache()
|
|
171
|
-
|
|
172
|
-
const uncles = findUncles(this.context, windowedUncleChain, blocks)
|
|
173
|
-
|
|
174
|
-
if (uncles.length !== 1) {
|
|
175
|
-
this.logger?.warn(JSON.stringify({ uncles, blocks }, null, 2))
|
|
176
|
-
this.logger?.warn(JSON.stringify(windowedUncleChain, null, 2))
|
|
177
|
-
throw new Error(`No uncles or greater than one uncle found in block validation, which is not supported [${uncles.length}, ${blocks.length}]`)
|
|
178
|
-
}
|
|
179
|
-
return (await Promise.all(uncles[0].map(async (block) => {
|
|
180
|
-
const errors = await this.params.state!(
|
|
181
|
-
{
|
|
182
|
-
...this.context, chainIdAtBlockNumber, accountBalance: this._accountBalanceViewer,
|
|
183
|
-
},
|
|
184
|
-
block,
|
|
185
|
-
)
|
|
186
|
-
return (errors.length === 0) ? block : errors
|
|
187
|
-
})))
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
private async updateWindowedChainCache() {
|
|
191
|
-
this._uncleWindowedChainCache = await getWindowedChain(this.context, this.blockViewer, this.maxUncleWindowSize, this._uncleWindowedChainCache ?? [])
|
|
192
|
-
return [...this._uncleWindowedChainCache]
|
|
193
|
-
}
|
|
194
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './SimpleBlockValidationViewer.ts'
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
type Address, assertEx,
|
|
3
|
-
type Hash,
|
|
4
|
-
} from '@xylabs/sdk-js'
|
|
5
|
-
import {
|
|
6
|
-
ChainContractViewer, ChainContractViewerMoniker, ChainId, FinalizationViewer, FinalizationViewerMoniker, XL1BlockNumber,
|
|
7
|
-
} from '@xyo-network/xl1-protocol-lib'
|
|
8
|
-
|
|
9
|
-
import { withContextCacheResponse } from '../../ChainContextHelpers.ts'
|
|
10
|
-
import {
|
|
11
|
-
AbstractCreatableProvider, creatableProvider, CreatableProviderParams,
|
|
12
|
-
} from '../../CreatableProvider/index.ts'
|
|
13
|
-
|
|
14
|
-
/** Parameters for SimpleChainContractViewer. */
|
|
15
|
-
export interface SimpleChainContractViewerParams extends CreatableProviderParams {
|
|
16
|
-
forkedAtBlockNumber?: XL1BlockNumber
|
|
17
|
-
forkedAtHash?: Hash
|
|
18
|
-
forkedChainContractViewer?: ChainContractViewer
|
|
19
|
-
forkedChainId?: ChainId
|
|
20
|
-
minWithdrawalBlocks: number
|
|
21
|
-
rewardsContract: Address
|
|
22
|
-
stakingTokenAddress: Address
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* A class that represents a chain stake as backed by an EVM smart contract
|
|
27
|
-
*/
|
|
28
|
-
@creatableProvider()
|
|
29
|
-
export class SimpleChainContractViewer extends AbstractCreatableProvider<SimpleChainContractViewerParams> implements ChainContractViewer {
|
|
30
|
-
static readonly defaultMoniker = ChainContractViewerMoniker
|
|
31
|
-
static readonly dependencies = [FinalizationViewerMoniker]
|
|
32
|
-
static readonly monikers = [ChainContractViewerMoniker]
|
|
33
|
-
override moniker = SimpleChainContractViewer.defaultMoniker
|
|
34
|
-
|
|
35
|
-
protected _finalizationViewer!: FinalizationViewer
|
|
36
|
-
|
|
37
|
-
protected get finalizationViewer() {
|
|
38
|
-
return this._finalizationViewer
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
chainId() {
|
|
42
|
-
return this.finalizationViewer.chainId()
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
async chainIdAtBlockNumber(blockNumber: XL1BlockNumber) {
|
|
46
|
-
return await withContextCacheResponse(this.context, 'chainIdAtBlockNumber', `${blockNumber}`, async () => {
|
|
47
|
-
let chainId = this.chainId()
|
|
48
|
-
// eslint-disable-next-line unicorn/no-this-assignment, @typescript-eslint/no-this-alias
|
|
49
|
-
let contractViewer: ChainContractViewer = this
|
|
50
|
-
let forkedAtBlockNumber = await contractViewer.forkedAtBlockNumber()
|
|
51
|
-
while (forkedAtBlockNumber !== null && blockNumber <= forkedAtBlockNumber) {
|
|
52
|
-
contractViewer = assertEx(await contractViewer.forkedChainContractViewer())
|
|
53
|
-
forkedAtBlockNumber = await contractViewer.forkedAtBlockNumber()
|
|
54
|
-
chainId = await contractViewer.chainId()
|
|
55
|
-
}
|
|
56
|
-
return chainId
|
|
57
|
-
})
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
override async createHandler() {
|
|
61
|
-
this._finalizationViewer = await this.locator.getInstance(FinalizationViewerMoniker)
|
|
62
|
-
return await super.createHandler()
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
forkedAtBlockNumber() {
|
|
66
|
-
return this.params.forkedAtBlockNumber ?? null
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
forkedAtHash() {
|
|
70
|
-
return this.params.forkedAtHash ?? null
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
forkedChainContractViewer() {
|
|
74
|
-
return this.params.forkedChainContractViewer ?? null
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
forkedChainId() {
|
|
78
|
-
return this.params.forkedChainId ?? null
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
minWithdrawalBlocks() {
|
|
82
|
-
return this.params.minWithdrawalBlocks
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
rewardsContract() {
|
|
86
|
-
return this.params.rewardsContract
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
stakingTokenAddress() {
|
|
90
|
-
return this.params.stakingTokenAddress
|
|
91
|
-
}
|
|
92
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './SimpleChainContractViewer.ts'
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
XyoClient, XyoGatewayRunner, XyoPermissions,
|
|
3
|
-
} from '@xyo-network/xl1-protocol-lib'
|
|
4
|
-
|
|
5
|
-
/** SimpleXyoClient implementation. */
|
|
6
|
-
export class SimpleXyoClient implements XyoClient {
|
|
7
|
-
gateways: Readonly<Partial<Record<string, XyoGatewayRunner>>>
|
|
8
|
-
permissions: XyoPermissions
|
|
9
|
-
|
|
10
|
-
constructor(gateways: Readonly<Partial<Record<string, XyoGatewayRunner>>>, permissions: XyoPermissions) {
|
|
11
|
-
this.gateways = gateways
|
|
12
|
-
this.permissions = permissions
|
|
13
|
-
}
|
|
14
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './SimpleXyoClient.ts'
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { axiosJsonConfig } from '@xylabs/sdk-js'
|
|
2
|
-
import {
|
|
3
|
-
exists, type Hash, type PromisableArray,
|
|
4
|
-
} from '@xylabs/sdk-js'
|
|
5
|
-
import type {
|
|
6
|
-
NextOptions, Schema, Sequence,
|
|
7
|
-
} from '@xyo-network/sdk-js'
|
|
8
|
-
import { asAnyPayload, isAnyPayload } from '@xyo-network/sdk-js'
|
|
9
|
-
import type { DataLakeData, DataLakeViewer } from '@xyo-network/xl1-protocol-lib'
|
|
10
|
-
import { Axios } from 'axios'
|
|
11
|
-
|
|
12
|
-
import { AbstractCreatableProvider, type CreatableProviderParams } from '../../CreatableProvider/index.ts'
|
|
13
|
-
|
|
14
|
-
/** Parameters for AbstractRestDataLake. */
|
|
15
|
-
export interface AbstractRestDataLakeParams extends
|
|
16
|
-
CreatableProviderParams {
|
|
17
|
-
|
|
18
|
-
allowedSchemas?: Schema[]
|
|
19
|
-
disallowedSchemas?: Schema[]
|
|
20
|
-
endpoint: string
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/** Abstract base class for RestDataLake implementations. */
|
|
24
|
-
export abstract class AbstractRestDataLake<TParams extends AbstractRestDataLakeParams = AbstractRestDataLakeParams> extends
|
|
25
|
-
AbstractCreatableProvider<TParams> implements Omit<DataLakeViewer, 'moniker'> {
|
|
26
|
-
get allowedSchemas(): Schema[] | undefined {
|
|
27
|
-
return this.params.allowedSchemas
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
get axios() {
|
|
31
|
-
return new Axios(axiosJsonConfig())
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
get disallowedSchemas(): Schema[] | undefined {
|
|
35
|
-
return this.params.disallowedSchemas
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
get endpoint() {
|
|
39
|
-
return this.params.endpoint
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
async get(hashes: Hash[]): Promise<DataLakeData[]> {
|
|
43
|
-
return (await Promise.all(hashes.map(hash => this.getOne(hash)))).filter(exists)
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
next(_options?: NextOptions<Sequence> | undefined): PromisableArray<DataLakeData> {
|
|
47
|
-
throw new Error('Method not implemented.')
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
protected async getOne(hash: Hash): Promise<DataLakeData | undefined> {
|
|
51
|
-
return asAnyPayload((await this.axios.get(`${this.params.endpoint}/get/${hash}`)).data)
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
protected isAllowed(value: DataLakeData | undefined): boolean {
|
|
55
|
-
if (isAnyPayload(value)) {
|
|
56
|
-
return this.isAllowedSchema(value.schema)
|
|
57
|
-
}
|
|
58
|
-
return false
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
protected isAllowedSchema(schema: Schema): boolean {
|
|
62
|
-
if (this.allowedSchemas && !this.allowedSchemas.includes(schema)) {
|
|
63
|
-
return false
|
|
64
|
-
}
|
|
65
|
-
if (this.disallowedSchemas && this.disallowedSchemas.includes(schema)) {
|
|
66
|
-
return false
|
|
67
|
-
}
|
|
68
|
-
return true
|
|
69
|
-
}
|
|
70
|
-
}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import type { Hash, PromisableArray } from '@xylabs/sdk-js'
|
|
2
|
-
import type {
|
|
3
|
-
NextOptions, Schema, Sequence,
|
|
4
|
-
} from '@xyo-network/sdk-js'
|
|
5
|
-
import { isAnyPayload } from '@xyo-network/sdk-js'
|
|
6
|
-
import type {
|
|
7
|
-
DataLakeData, DataLakeViewer, MapTypeRead,
|
|
8
|
-
} from '@xyo-network/xl1-protocol-lib'
|
|
9
|
-
|
|
10
|
-
import { AbstractCreatableProvider, type CreatableProviderParams } from '../../CreatableProvider/index.ts'
|
|
11
|
-
|
|
12
|
-
/** Parameters for AbstractSimpleDataLake. */
|
|
13
|
-
export interface AbstractSimpleDataLakeParams<TMap extends
|
|
14
|
-
MapTypeRead<Hash, DataLakeData> = MapTypeRead<Hash, DataLakeData>> extends
|
|
15
|
-
CreatableProviderParams {
|
|
16
|
-
|
|
17
|
-
allowedSchemas?: Schema[]
|
|
18
|
-
disallowedSchemas?: Schema[]
|
|
19
|
-
map: TMap
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/** Abstract base class for SimpleDataLake implementations. */
|
|
23
|
-
export abstract class AbstractSimpleDataLake<TParams extends AbstractSimpleDataLakeParams = AbstractSimpleDataLakeParams> extends
|
|
24
|
-
AbstractCreatableProvider<TParams> implements Omit<DataLakeViewer, 'moniker'> {
|
|
25
|
-
get allowedSchemas(): Schema[] | undefined {
|
|
26
|
-
return this.params.allowedSchemas
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
get disallowedSchemas(): Schema[] | undefined {
|
|
30
|
-
return this.params.disallowedSchemas
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
protected get map(): TParams['map'] {
|
|
34
|
-
return this.params.map
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
async get(hashes: Hash[]): Promise<DataLakeData[]> {
|
|
38
|
-
const result = await this.map.getMany(hashes)
|
|
39
|
-
return result.filter(data => this.isAllowed(data))
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
next(_options?: NextOptions<Sequence> | undefined): PromisableArray<DataLakeData> {
|
|
43
|
-
throw new Error('Method not implemented.')
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
protected isAllowed(value: DataLakeData | undefined): boolean {
|
|
47
|
-
if (isAnyPayload(value)) {
|
|
48
|
-
return this.isAllowedSchema(value.schema)
|
|
49
|
-
}
|
|
50
|
-
return true
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
protected isAllowedSchema(schema: Schema): boolean {
|
|
54
|
-
if (this.allowedSchemas && !this.allowedSchemas.includes(schema)) {
|
|
55
|
-
return false
|
|
56
|
-
}
|
|
57
|
-
if (this.disallowedSchemas && this.disallowedSchemas.includes(schema)) {
|
|
58
|
-
return false
|
|
59
|
-
}
|
|
60
|
-
return true
|
|
61
|
-
}
|
|
62
|
-
}
|