@xyo-network/xl1-protocol-sdk 1.26.11 → 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/package.json +29 -16
- 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,19 +0,0 @@
|
|
|
1
|
-
import { assertEx } from '@xylabs/sdk-js'
|
|
2
|
-
import { StepSizes } from '@xyo-network/xl1-protocol-lib'
|
|
3
|
-
|
|
4
|
-
/** StepTransferIndex helper function. */
|
|
5
|
-
export function stepTransferIndex(block: number, step: number) {
|
|
6
|
-
let rewardTransferCount = 0
|
|
7
|
-
let rewardTransferIndex = -1
|
|
8
|
-
for (let i = 3; i < StepSizes.length; i++) {
|
|
9
|
-
const stepSize = StepSizes[i]
|
|
10
|
-
if (block % stepSize === 0) {
|
|
11
|
-
if (stepSize === StepSizes[step]) {
|
|
12
|
-
rewardTransferIndex = rewardTransferCount
|
|
13
|
-
}
|
|
14
|
-
rewardTransferCount++
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
assertEx(rewardTransferIndex >= 0, () => `Could not find step size for step ${step} at block ${block}`)
|
|
18
|
-
return [rewardTransferIndex, rewardTransferCount]
|
|
19
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { WithHashMeta } from '@xyo-network/sdk-js'
|
|
2
|
-
import type { AllowedBlockPayload, HydratedTransactionWithHashMeta } from '@xyo-network/xl1-protocol-lib'
|
|
3
|
-
import { isAllowedBlockPayload } from '@xyo-network/xl1-protocol-lib'
|
|
4
|
-
|
|
5
|
-
const ELEVATE_OPCODE = 'elevate'
|
|
6
|
-
|
|
7
|
-
/** ElevatedPayloads helper function. */
|
|
8
|
-
export function elevatedPayloads([tx, payloads]: HydratedTransactionWithHashMeta) {
|
|
9
|
-
const opCodes = (tx.script ?? []).filter(operation => operation.startsWith(`${ELEVATE_OPCODE}|`))
|
|
10
|
-
const elevatedPayloads: WithHashMeta<AllowedBlockPayload>[] = []
|
|
11
|
-
for (const opCode of opCodes) {
|
|
12
|
-
const [code, hash] = opCode.split('|')
|
|
13
|
-
if (code === ELEVATE_OPCODE) {
|
|
14
|
-
const elevatedPayload = payloads.find(payload => payload._hash === hash)
|
|
15
|
-
if (isAllowedBlockPayload(elevatedPayload)) {
|
|
16
|
-
elevatedPayloads.push(elevatedPayload)
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
if (opCodes.length === elevatedPayloads.length) {
|
|
21
|
-
return elevatedPayloads
|
|
22
|
-
}
|
|
23
|
-
throw new Error('Not all elevated payloads could be found in the transaction payloads')
|
|
24
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './elevatedPayloads.ts'
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { SignedHydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol-lib'
|
|
2
|
-
|
|
3
|
-
import { scoreUncle } from './scoreUncle.ts'
|
|
4
|
-
|
|
5
|
-
/** FindBestUncle helper function. */
|
|
6
|
-
export function findBestUncle(finalizedWindowedChain: SignedHydratedBlockWithHashMeta[], uncles: SignedHydratedBlockWithHashMeta[][]) {
|
|
7
|
-
const scores = uncles.map(uncle => ([scoreUncle(finalizedWindowedChain, uncle), uncle] as const)).toSorted((a, b) => b[0] - a[0])
|
|
8
|
-
return scores[0]?.[1] ?? finalizedWindowedChain
|
|
9
|
-
}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
assertEx,
|
|
3
|
-
exists, type Hash,
|
|
4
|
-
} from '@xylabs/sdk-js'
|
|
5
|
-
import type { BaseContext, SignedHydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol-lib'
|
|
6
|
-
import { isTransactionBoundWitness } from '@xyo-network/xl1-protocol-lib'
|
|
7
|
-
|
|
8
|
-
function blocksToChains(blocks: SignedHydratedBlockWithHashMeta[]) {
|
|
9
|
-
const chains: SignedHydratedBlockWithHashMeta[][] = []
|
|
10
|
-
const map = new Map<Hash, SignedHydratedBlockWithHashMeta>()
|
|
11
|
-
for (const block of blocks) {
|
|
12
|
-
map.set(block[0]._hash, block)
|
|
13
|
-
}
|
|
14
|
-
for (const block of blocks) {
|
|
15
|
-
let uncle: SignedHydratedBlockWithHashMeta[] = [block]
|
|
16
|
-
let previous = block[0].previous ? map.get(block[0].previous) : undefined
|
|
17
|
-
while (previous) {
|
|
18
|
-
if (previous[0].block === (uncle[0][0].block - 1)) {
|
|
19
|
-
uncle.unshift(previous)
|
|
20
|
-
previous = previous[0].previous ? map.get(previous[0].previous) : undefined
|
|
21
|
-
} else {
|
|
22
|
-
// block number sequence is off
|
|
23
|
-
uncle = []
|
|
24
|
-
break
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
if (uncle.length > 0) {
|
|
28
|
-
chains.push(uncle)
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return chains
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
function toValidUncle(
|
|
35
|
-
_context: BaseContext,
|
|
36
|
-
finalizedWindowedChain: SignedHydratedBlockWithHashMeta[],
|
|
37
|
-
possibleUncle: SignedHydratedBlockWithHashMeta[],
|
|
38
|
-
) {
|
|
39
|
-
const finalizedWindowStartBlockNumber = finalizedWindowedChain.at(0)?.[0].block ?? -1
|
|
40
|
-
const finalizedHead = assertEx(finalizedWindowedChain.at(-1), () => 'finalizedWindowedChain is empty')
|
|
41
|
-
// prune the chain to match the finalized head
|
|
42
|
-
|
|
43
|
-
const prunedPossibleUncle = possibleUncle.filter(b => b[0].block > finalizedHead[0].block)
|
|
44
|
-
|
|
45
|
-
if (prunedPossibleUncle.length === 0) {
|
|
46
|
-
return
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
if (prunedPossibleUncle[0][0].block !== finalizedHead[0].block + 1) {
|
|
50
|
-
// uncle does not build on finalized head (block number mismatch)
|
|
51
|
-
return
|
|
52
|
-
}
|
|
53
|
-
if (prunedPossibleUncle[0][0].previous !== finalizedHead[0]._hash) {
|
|
54
|
-
// uncle does not build on finalized head (previous hash mismatch)
|
|
55
|
-
return
|
|
56
|
-
}
|
|
57
|
-
const allUncleTransactions = prunedPossibleUncle.flatMap(b => b[1]).filter(isTransactionBoundWitness)
|
|
58
|
-
const allFinalizedTransactions = finalizedWindowedChain.flatMap(b => b[1]).filter(isTransactionBoundWitness)
|
|
59
|
-
const txPossiblyBeforeWindow = allUncleTransactions.find(tx => tx.nbf < finalizedWindowStartBlockNumber)
|
|
60
|
-
if (txPossiblyBeforeWindow) {
|
|
61
|
-
// uncle has a transaction that is valid before the finalized window
|
|
62
|
-
return
|
|
63
|
-
}
|
|
64
|
-
const txExistsInWindow = allUncleTransactions.find(tx => allFinalizedTransactions.find(finalTx => finalTx._hash === tx._hash))
|
|
65
|
-
if (txExistsInWindow) {
|
|
66
|
-
// uncle has a transaction that is already in the finalized window
|
|
67
|
-
return
|
|
68
|
-
}
|
|
69
|
-
return prunedPossibleUncle
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/** FindUncles helper function. */
|
|
73
|
-
export function findUncles(context: BaseContext, finalizedWindowedChain: SignedHydratedBlockWithHashMeta[], blocks: SignedHydratedBlockWithHashMeta[]) {
|
|
74
|
-
return blocksToChains(blocks).map(chain => toValidUncle(context, finalizedWindowedChain, chain)).filter(exists)
|
|
75
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { SignedHydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol-lib'
|
|
2
|
-
|
|
3
|
-
/** ScoreUncle helper function. */
|
|
4
|
-
export function scoreUncle(finalizedWindowedChain: SignedHydratedBlockWithHashMeta[], blocks: SignedHydratedBlockWithHashMeta[]) {
|
|
5
|
-
// TODO: More than length check
|
|
6
|
-
return blocks.length
|
|
7
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
Address, Hash, Promisable,
|
|
3
|
-
} from '@xylabs/sdk-js'
|
|
4
|
-
import type { AttoXL1 } from '@xyo-network/xl1-protocol-lib'
|
|
5
|
-
|
|
6
|
-
/** Provider interface for querying transfer totals by account at a given chain head */
|
|
7
|
-
export interface AccountTransfersProvider {
|
|
8
|
-
transfer(head: Hash, account: Address): Promisable<AttoXL1>
|
|
9
|
-
transfers(head: Hash, accounts: Address[]): Promisable<Partial<Record<Address, AttoXL1>>>
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
/** Service interface for querying account transfers, extending AccountTransfersProvider */
|
|
13
|
-
export interface AccountTransfersService extends AccountTransfersProvider {}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
Addressable,
|
|
3
|
-
BlockBoundWitness, IterableRepository,
|
|
4
|
-
SignedHydratedBlockWithHashMeta,
|
|
5
|
-
} from '@xyo-network/xl1-protocol-lib'
|
|
6
|
-
|
|
7
|
-
/** Repository type for producing the next block from a block bound witness */
|
|
8
|
-
export type NextBlockProducer = IterableRepository<BlockBoundWitness, SignedHydratedBlockWithHashMeta | undefined>
|
|
9
|
-
|
|
10
|
-
/** Service interface for an addressable block producer */
|
|
11
|
-
export interface BlockProducerService extends Addressable, NextBlockProducer {}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { ChainContractViewer, ChainStakeViewer } from '@xyo-network/xl1-protocol-lib'
|
|
2
|
-
|
|
3
|
-
import type { BaseChainService } from './BaseChainService.ts'
|
|
4
|
-
|
|
5
|
-
/** @deprecated use ChainContractViewer, StakeTotalsViewer, StakeRunner instead */
|
|
6
|
-
export interface ChainService extends Omit<ChainContractViewer, 'moniker'>, Omit<ChainStakeViewer, 'moniker'>, BaseChainService {}
|
package/src/services/Election.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { Address } from '@xylabs/sdk-js'
|
|
2
|
-
import type { WithHashMeta } from '@xyo-network/sdk-js'
|
|
3
|
-
import type { BlockBoundWitness } from '@xyo-network/xl1-protocol-lib'
|
|
4
|
-
|
|
5
|
-
/** Service for determining the block producer committee for the next block */
|
|
6
|
-
export interface ElectionService {
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Given the current block, get the leader for the next block
|
|
10
|
-
* @param current The previous block
|
|
11
|
-
*/
|
|
12
|
-
getCreatorCommitteeForNextBlock(current: WithHashMeta<BlockBoundWitness>): Promise<Address[]>
|
|
13
|
-
|
|
14
|
-
}
|
package/src/services/Params.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { CreatableParams } from '@xylabs/sdk-js'
|
|
2
|
-
import type { AccountInstance } from '@xyo-network/sdk-js'
|
|
3
|
-
import type { OpenTelemetryProviders } from '@xyo-network/xl1-protocol-lib'
|
|
4
|
-
|
|
5
|
-
/** Base parameters for all services, including creatable params and OpenTelemetry providers */
|
|
6
|
-
export interface BaseServiceParams extends CreatableParams, OpenTelemetryProviders {
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
/** Service parameters that include an account instance for signing operations */
|
|
11
|
-
export interface BaseAccountableServiceParams extends BaseServiceParams {
|
|
12
|
-
account: AccountInstance
|
|
13
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { Hash } from '@xylabs/sdk-js'
|
|
2
|
-
import type { SignedHydratedTransaction } from '@xyo-network/xl1-protocol-lib'
|
|
3
|
-
|
|
4
|
-
/** Service for retrieving pending transactions from the mempool */
|
|
5
|
-
export interface PendingTransactionsService {
|
|
6
|
-
getPendingTransactions(head: Hash, limit: number, timeout?: number): Promise<SignedHydratedTransaction[]>
|
|
7
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { Hash, Promisable } from '@xylabs/sdk-js'
|
|
2
|
-
import type { Schema } from '@xyo-network/sdk-js'
|
|
3
|
-
|
|
4
|
-
/** Provider interface for querying schema counts at a given chain head */
|
|
5
|
-
export interface SchemasProvider {
|
|
6
|
-
schema(head: Hash, schema: Schema): Promisable<number>
|
|
7
|
-
schemas(head: Hash, schemas: Schema[]): Promisable<Partial<Record<Schema, number>>>
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
/** Service interface for querying schema counts, extending SchemasProvider */
|
|
11
|
-
export interface SchemasService extends SchemasProvider {}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import type { Hash, JsonValue } from '@xylabs/sdk-js'
|
|
2
|
-
import { AsObjectFactory } from '@xylabs/sdk-js'
|
|
3
|
-
import type { Payload, WithStorageMeta } from '@xyo-network/sdk-js'
|
|
4
|
-
import {
|
|
5
|
-
asSchema, isPayloadOfSchemaType, isStorageMeta,
|
|
6
|
-
} from '@xyo-network/sdk-js'
|
|
7
|
-
|
|
8
|
-
/** Fields stored by a chain indexing service to track its indexing progress and state */
|
|
9
|
-
export interface ChainIndexingServiceStateFields<T extends JsonValue = JsonValue> {
|
|
10
|
-
/**
|
|
11
|
-
* The hash of the last block that this service has indexing
|
|
12
|
-
*/
|
|
13
|
-
endBlockHash: Hash
|
|
14
|
-
/**
|
|
15
|
-
* The hash of the block that the service started indexing. If undefined, the service is
|
|
16
|
-
* assumed to have started indexing from the genesis block
|
|
17
|
-
*/
|
|
18
|
-
startBlockHash?: Hash
|
|
19
|
-
/**
|
|
20
|
-
* The indexed state for the range
|
|
21
|
-
*/
|
|
22
|
-
state: T
|
|
23
|
-
}
|
|
24
|
-
/** Schema identifier for chain indexing service state payloads */
|
|
25
|
-
export const ChainIndexingServiceStateSchema = asSchema('network.xyo.chain.indexing.service.state', true)
|
|
26
|
-
/** Schema type for ChainIndexingServiceState payloads. */
|
|
27
|
-
export type ChainIndexingServiceStateSchema = typeof ChainIndexingServiceStateSchema
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* The result of a ChainIndexingServiceState
|
|
31
|
-
*/
|
|
32
|
-
export type ChainIndexingServiceState<T extends JsonValue = JsonValue> = Payload<ChainIndexingServiceStateFields<T>, ChainIndexingServiceStateSchema>
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Identity functions for determining if an object is an ChainIndexingServiceState
|
|
36
|
-
*/
|
|
37
|
-
export const isChainIndexingServiceState = <T extends JsonValue = JsonValue>(payload?: unknown): payload is ChainIndexingServiceState<T> => {
|
|
38
|
-
return isPayloadOfSchemaType<ChainIndexingServiceState<T>>(ChainIndexingServiceStateSchema)(payload)
|
|
39
|
-
}
|
|
40
|
-
/** Type assertion factory for ChainIndexingServiceState payloads */
|
|
41
|
-
export const asChainIndexingServiceState = AsObjectFactory.create<ChainIndexingServiceState<JsonValue>>(isChainIndexingServiceState)
|
|
42
|
-
|
|
43
|
-
/** Type guard for ChainIndexingServiceState with storage metadata */
|
|
44
|
-
export const isChainIndexingServiceStateWithStorageMeta
|
|
45
|
-
= <T extends JsonValue = JsonValue>(value: unknown): value is WithStorageMeta<ChainIndexingServiceState<T>> =>
|
|
46
|
-
isChainIndexingServiceState<T>(value) && isStorageMeta(value)
|
|
47
|
-
|
|
48
|
-
/** Type assertion factory for ChainIndexingServiceState with storage metadata */
|
|
49
|
-
export const asChainIndexingServiceStateWithStorageMeta
|
|
50
|
-
= AsObjectFactory.create<WithStorageMeta<ChainIndexingServiceState>>(isChainIndexingServiceStateWithStorageMeta)
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import type { Address } from '@xylabs/sdk-js'
|
|
2
|
-
import type { Intent } from '@xyo-network/xl1-protocol-lib'
|
|
3
|
-
|
|
4
|
-
/** Service for managing and querying stake intent declarations on the chain */
|
|
5
|
-
export interface StakeIntentService {
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Gets the declared ranges for an address based on historical on-chain data
|
|
9
|
-
* @param address The address to get the declared ranges for
|
|
10
|
-
* @param intent The declared intent to filter for
|
|
11
|
-
*/
|
|
12
|
-
getDeclaredCandidateRanges(address: Address, intent: Intent): Promise<Readonly<Readonly<[number, number]>[]>>
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Gets the declared candidates for a block based on historical on-chain data
|
|
16
|
-
* @param block The block number to get the declared candidates for
|
|
17
|
-
* @param intent The declared intent to filter for
|
|
18
|
-
*/
|
|
19
|
-
getDeclaredCandidatesForBlock(block: number, intent: Intent): Promise<Address[]>
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Gets the required minimum stake for a given intent
|
|
23
|
-
* @param intent The declared intent to filter for
|
|
24
|
-
* @returns The required minimum stake for the intent
|
|
25
|
-
*/
|
|
26
|
-
getRequiredMinimumStakeForIntent(intent: Intent): bigint
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Checks if the address is staked for a block for a given intent
|
|
30
|
-
* @param block The block number to check
|
|
31
|
-
* @param intent The declared intent to filter for
|
|
32
|
-
* @param address The address to check
|
|
33
|
-
*/
|
|
34
|
-
isStakedForBlock(block: number, intent: Intent, address: Address): Promise<boolean>
|
|
35
|
-
}
|
package/src/services/index.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export * from './AccountTransfersService.ts'
|
|
2
|
-
export * from './BlockProducerService.ts'
|
|
3
|
-
export * from './Chain/index.ts'
|
|
4
|
-
export * from './Election.ts'
|
|
5
|
-
export * from './NetworkStakeService.ts'
|
|
6
|
-
export * from './PendingTransactionsService.ts'
|
|
7
|
-
export * from './SchemasService.ts'
|
|
8
|
-
export * from './StakeIntentService/index.ts'
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { isDefined } from '@xylabs/sdk-js'
|
|
2
|
-
import {
|
|
3
|
-
Position, StakeEvent, StakeEventFilter, StakeEventName, StakeEventsViewer, StakeEventsViewerMoniker,
|
|
4
|
-
} from '@xyo-network/xl1-protocol-lib'
|
|
5
|
-
|
|
6
|
-
import {
|
|
7
|
-
AbstractCreatableProvider, creatableProvider, CreatableProviderParams,
|
|
8
|
-
} from '../../CreatableProvider/index.ts'
|
|
9
|
-
|
|
10
|
-
/** Parameters for SimpleStakeEvents. */
|
|
11
|
-
export interface SimpleStakeEventsParams extends CreatableProviderParams {
|
|
12
|
-
positions: Position[]
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
/** SimpleStakeEventsViewer implementation. */
|
|
16
|
-
@creatableProvider()
|
|
17
|
-
export class SimpleStakeEventsViewer extends AbstractCreatableProvider<SimpleStakeEventsParams> implements StakeEventsViewer {
|
|
18
|
-
static readonly defaultMoniker = StakeEventsViewerMoniker
|
|
19
|
-
static readonly dependencies = []
|
|
20
|
-
static readonly monikers = [StakeEventsViewerMoniker]
|
|
21
|
-
moniker = SimpleStakeEventsViewer.defaultMoniker
|
|
22
|
-
|
|
23
|
-
protected get positions() {
|
|
24
|
-
return this.params.positions
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
positionCount(range: [number, number | 'latest']): number {
|
|
28
|
-
return this.positionsFromRange(range).length
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
stakeEvents<TName extends StakeEventName>(range: [number, number | 'latest'], { name }: StakeEventFilter<TName> = {}): StakeEvent<TName>[] {
|
|
32
|
-
const positions = this.positionsFromRange(range)
|
|
33
|
-
const events = this.eventsFromPositions(positions)
|
|
34
|
-
if (isDefined(name)) {
|
|
35
|
-
return events.filter((event): event is StakeEvent<TName> => event.name === name)
|
|
36
|
-
}
|
|
37
|
-
return events as StakeEvent<TName>[]
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
protected override async startHandler(): Promise<void> {
|
|
41
|
-
await super.startHandler()
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
private eventsFromPositions(positions: Position[]): StakeEvent<StakeEventName>[] {
|
|
45
|
-
const events = positions.map((position) => {
|
|
46
|
-
const events: StakeEvent<StakeEventName>[] = [{
|
|
47
|
-
name: 'StakeAdded',
|
|
48
|
-
time: position.addBlock,
|
|
49
|
-
args: {
|
|
50
|
-
staker: position.staker,
|
|
51
|
-
staked: position.staked,
|
|
52
|
-
amount: position.amount,
|
|
53
|
-
id: position.id,
|
|
54
|
-
},
|
|
55
|
-
}]
|
|
56
|
-
if (position.removeBlock !== 0) {
|
|
57
|
-
events.push({
|
|
58
|
-
name: 'StakeRemoved',
|
|
59
|
-
time: position.removeBlock,
|
|
60
|
-
args: {
|
|
61
|
-
staker: position.staker,
|
|
62
|
-
staked: position.staked,
|
|
63
|
-
amount: position.amount,
|
|
64
|
-
id: position.id,
|
|
65
|
-
},
|
|
66
|
-
})
|
|
67
|
-
}
|
|
68
|
-
if (position.withdrawBlock !== 0) {
|
|
69
|
-
events.push({
|
|
70
|
-
name: 'StakeWithdrawn',
|
|
71
|
-
time: position.withdrawBlock,
|
|
72
|
-
args: {
|
|
73
|
-
staker: position.staker,
|
|
74
|
-
staked: position.staked,
|
|
75
|
-
amount: position.amount,
|
|
76
|
-
id: position.id,
|
|
77
|
-
},
|
|
78
|
-
})
|
|
79
|
-
}
|
|
80
|
-
return events
|
|
81
|
-
})
|
|
82
|
-
return events.flat()
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
private positionsFromRange(range: [number, number | 'latest']): Position[] {
|
|
86
|
-
const startBlock = range[0]
|
|
87
|
-
const endBlock = range[1] === 'latest' ? Number.MAX_SAFE_INTEGER : range[1]
|
|
88
|
-
const filteredPositions = this.positions?.filter((position) => {
|
|
89
|
-
return position.addBlock <= endBlock && (position.removeBlock === 0 || position.removeBlock >= startBlock)
|
|
90
|
-
}) ?? []
|
|
91
|
-
return filteredPositions
|
|
92
|
-
}
|
|
93
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './SimpleStakeEventsViewer.ts'
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import { type Address, asAddress } from '@xylabs/sdk-js'
|
|
2
|
-
import { assertEx } from '@xylabs/sdk-js'
|
|
3
|
-
import {
|
|
4
|
-
StakeTotalsViewer, StakeTotalsViewerMoniker,
|
|
5
|
-
StakeViewer,
|
|
6
|
-
StakeViewerMoniker,
|
|
7
|
-
} from '@xyo-network/xl1-protocol-lib'
|
|
8
|
-
|
|
9
|
-
import {
|
|
10
|
-
AbstractCreatableProvider, creatableProvider, CreatableProviderParams,
|
|
11
|
-
} from '../../CreatableProvider/index.ts'
|
|
12
|
-
|
|
13
|
-
/** Parameters for SimpleStakeTotalsViewer. */
|
|
14
|
-
export interface SimpleStakeTotalsViewerParams extends CreatableProviderParams {
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
/** SimpleStakeTotalsViewer implementation. */
|
|
19
|
-
@creatableProvider()
|
|
20
|
-
export class SimpleStakeTotalsViewer extends AbstractCreatableProvider<SimpleStakeTotalsViewerParams> implements StakeTotalsViewer {
|
|
21
|
-
static readonly defaultMoniker = StakeTotalsViewerMoniker
|
|
22
|
-
static readonly dependencies = [StakeTotalsViewerMoniker]
|
|
23
|
-
static readonly monikers = [StakeTotalsViewerMoniker]
|
|
24
|
-
moniker = SimpleStakeTotalsViewer.defaultMoniker
|
|
25
|
-
|
|
26
|
-
private _stakeViewer!: StakeViewer
|
|
27
|
-
|
|
28
|
-
get stakeViewer() {
|
|
29
|
-
return this._stakeViewer
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
async active(time = Number.MAX_SAFE_INTEGER) {
|
|
33
|
-
let active = 0n
|
|
34
|
-
const positions = await this.stakeViewer.activeStakes()
|
|
35
|
-
for (const position of positions) {
|
|
36
|
-
if (position.removeBlock === 0 || position.removeBlock > time) {
|
|
37
|
-
active += position.amount
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
return active
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
async activeByStaked(staked: Address, time = Number.MAX_SAFE_INTEGER) {
|
|
44
|
-
let active = 0n
|
|
45
|
-
const positions = await this.stakeViewer.activeStakes()
|
|
46
|
-
for (const position of positions) {
|
|
47
|
-
if ((position.removeBlock === 0 || position.removeBlock > time) && asAddress(position.staked) === asAddress(staked)) {
|
|
48
|
-
active += position.amount
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
return active
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
async activeByStaker(staker: Address, time = Number.MAX_SAFE_INTEGER) {
|
|
55
|
-
let active = 0n
|
|
56
|
-
const positions = await this.stakeViewer.activeStakes()
|
|
57
|
-
for (const position of positions) {
|
|
58
|
-
if ((position.removeBlock === 0 || position.removeBlock > time) && asAddress(position.staker) === asAddress(staker)) {
|
|
59
|
-
active += position.amount
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
return active
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
override async createHandler() {
|
|
66
|
-
await super.createHandler()
|
|
67
|
-
this._stakeViewer = assertEx(
|
|
68
|
-
(await this.locateAndCreate<StakeViewer>(StakeViewerMoniker)),
|
|
69
|
-
() => 'Failed to create StakeViewer',
|
|
70
|
-
)
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
async pending(time = Number.MAX_SAFE_INTEGER): Promise<bigint> {
|
|
74
|
-
let pending = 0n
|
|
75
|
-
const positions = await this.stakeViewer.removedStakes()
|
|
76
|
-
for (const position of positions) {
|
|
77
|
-
if ((position.removeBlock !== 0 && position.removeBlock <= time) && (position.withdrawBlock === 0 || position.withdrawBlock > time)) {
|
|
78
|
-
pending += position.amount
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
return pending
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
async pendingByStaker(staker: Address, time = Number.MAX_SAFE_INTEGER) {
|
|
85
|
-
let pending = 0n
|
|
86
|
-
const positions = await this.stakeViewer.removedStakes()
|
|
87
|
-
for (const position of positions) {
|
|
88
|
-
if ((position.removeBlock !== 0 && position.removeBlock <= time) && (position.withdrawBlock === 0 || position.withdrawBlock > time) && asAddress(position.staker) === asAddress(staker)) {
|
|
89
|
-
pending += position.amount
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
return pending
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
async withdrawn(time = Number.MAX_SAFE_INTEGER): Promise<bigint> {
|
|
96
|
-
let withdrawn = 0n
|
|
97
|
-
const positions = await this.stakeViewer.withdrawnStakes()
|
|
98
|
-
for (const position of positions) {
|
|
99
|
-
if (position.withdrawBlock !== 0 && position.withdrawBlock <= time) {
|
|
100
|
-
withdrawn += position.amount
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return withdrawn
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
async withdrawnByStaker(staker: Address, time = Number.MAX_SAFE_INTEGER): Promise<bigint> {
|
|
107
|
-
let withdrawn = 0n
|
|
108
|
-
const positions = await this.stakeViewer.withdrawnStakes()
|
|
109
|
-
for (const position of positions) {
|
|
110
|
-
if (position.withdrawBlock !== 0 && position.withdrawBlock <= time && asAddress(position.staker) === asAddress(staker)) {
|
|
111
|
-
withdrawn += position.amount
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
return withdrawn
|
|
115
|
-
}
|
|
116
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './SimpleStakeTotalsViewer.ts'
|