@xyo-network/chain-services 1.16.26 → 1.17.1
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/AccountBalance/accountBalanceServiceFromArchivist.d.ts +1 -1
- package/dist/neutral/AccountBalance/accountBalanceServiceFromArchivist.d.ts.map +1 -1
- package/dist/neutral/AccountBalance/index.d.ts +0 -1
- package/dist/neutral/AccountBalance/index.d.ts.map +1 -1
- package/dist/neutral/BaseService.d.ts +0 -3
- package/dist/neutral/BaseService.d.ts.map +1 -1
- package/dist/neutral/BlockReward/EvmBlockRewardViewer.d.ts +17 -0
- package/dist/neutral/BlockReward/EvmBlockRewardViewer.d.ts.map +1 -0
- package/dist/neutral/BlockReward/index.d.ts +1 -3
- package/dist/neutral/BlockReward/index.d.ts.map +1 -1
- package/dist/neutral/ChainBlockNumberIteration/ChainBlockNumberIterationService.d.ts +23 -11
- package/dist/neutral/ChainBlockNumberIteration/ChainBlockNumberIterationService.d.ts.map +1 -1
- package/dist/neutral/ChainService/Evm/Evm.d.ts +6 -5
- package/dist/neutral/ChainService/Evm/Evm.d.ts.map +1 -1
- package/dist/neutral/ChainService/Memory/Memory.d.ts +6 -4
- package/dist/neutral/ChainService/Memory/Memory.d.ts.map +1 -1
- package/dist/neutral/ChainValidator/XyoValidator.d.ts +4 -18
- package/dist/neutral/ChainValidator/XyoValidator.d.ts.map +1 -1
- package/dist/neutral/Election/BaseElectionService.d.ts +3 -3
- package/dist/neutral/Election/BaseElectionService.d.ts.map +1 -1
- package/dist/neutral/PendingTransactions/BasePendingTransactions.d.ts +9 -9
- package/dist/neutral/PendingTransactions/BasePendingTransactions.d.ts.map +1 -1
- package/dist/neutral/StakeIntent/XyoStakeIntentService.d.ts +7 -6
- package/dist/neutral/StakeIntent/XyoStakeIntentService.d.ts.map +1 -1
- package/dist/neutral/Time/BaseTimeSyncService.d.ts +3 -6
- package/dist/neutral/Time/BaseTimeSyncService.d.ts.map +1 -1
- package/dist/neutral/blockViewerFromChainIteratorAndArchivist.d.ts.map +1 -1
- package/dist/neutral/implementation/accountBalance.d.ts +7 -0
- package/dist/neutral/implementation/accountBalance.d.ts.map +1 -0
- package/dist/neutral/implementation/blockViewer.d.ts +7 -0
- package/dist/neutral/implementation/blockViewer.d.ts.map +1 -0
- package/dist/neutral/implementation/chain/evm.d.ts +7 -0
- package/dist/neutral/implementation/chain/evm.d.ts.map +1 -0
- package/dist/neutral/implementation/chain/index.d.ts +7 -0
- package/dist/neutral/implementation/chain/index.d.ts.map +1 -0
- package/dist/neutral/implementation/evm/index.d.ts +2 -0
- package/dist/neutral/implementation/evm/index.d.ts.map +1 -0
- package/dist/neutral/implementation/evm/initChainId.d.ts +4 -0
- package/dist/neutral/implementation/evm/initChainId.d.ts.map +1 -0
- package/dist/neutral/implementation/evm/initEvmProvider.d.ts +11 -0
- package/dist/neutral/implementation/evm/initEvmProvider.d.ts.map +1 -0
- package/dist/neutral/implementation/evm/initInfuraProvider.d.ts +6 -0
- package/dist/neutral/implementation/evm/initInfuraProvider.d.ts.map +1 -0
- package/dist/neutral/implementation/evm/initJsonRpcProvider.d.ts +6 -0
- package/dist/neutral/implementation/evm/initJsonRpcProvider.d.ts.map +1 -0
- package/dist/neutral/implementation/head/createBootstrapHead.d.ts +5 -0
- package/dist/neutral/implementation/head/createBootstrapHead.d.ts.map +1 -0
- package/dist/neutral/implementation/head/createForkedHead/config/getBridgeDestinationDetails.d.ts +8 -0
- package/dist/neutral/implementation/head/createForkedHead/config/getBridgeDestinationDetails.d.ts.map +1 -0
- package/dist/neutral/implementation/head/createForkedHead/config/getBridgeSourceDetails.d.ts +9 -0
- package/dist/neutral/implementation/head/createForkedHead/config/getBridgeSourceDetails.d.ts.map +1 -0
- package/dist/neutral/implementation/head/createForkedHead/config/getForkDetails.d.ts +4 -0
- package/dist/neutral/implementation/head/createForkedHead/config/getForkDetails.d.ts.map +1 -0
- package/dist/neutral/implementation/head/createForkedHead/config/index.d.ts +4 -0
- package/dist/neutral/implementation/head/createForkedHead/config/index.d.ts.map +1 -0
- package/dist/neutral/implementation/head/createForkedHead/createForkedHead.d.ts +5 -0
- package/dist/neutral/implementation/head/createForkedHead/createForkedHead.d.ts.map +1 -0
- package/dist/neutral/implementation/head/createForkedHead/getBridgeDestinationObservation.d.ts +11 -0
- package/dist/neutral/implementation/head/createForkedHead/getBridgeDestinationObservation.d.ts.map +1 -0
- package/dist/neutral/implementation/head/createForkedHead/getBridgeIntent.d.ts +11 -0
- package/dist/neutral/implementation/head/createForkedHead/getBridgeIntent.d.ts.map +1 -0
- package/dist/neutral/implementation/head/createForkedHead/getBridgeSourceObservation.d.ts +11 -0
- package/dist/neutral/implementation/head/createForkedHead/getBridgeSourceObservation.d.ts.map +1 -0
- package/dist/neutral/implementation/head/createForkedHead/getFirstBlockForNewChain.d.ts +13 -0
- package/dist/neutral/implementation/head/createForkedHead/getFirstBlockForNewChain.d.ts.map +1 -0
- package/dist/neutral/implementation/head/createForkedHead/index.d.ts +2 -0
- package/dist/neutral/implementation/head/createForkedHead/index.d.ts.map +1 -0
- package/dist/neutral/implementation/head/getForkFromBlock.d.ts +12 -0
- package/dist/neutral/implementation/head/getForkFromBlock.d.ts.map +1 -0
- package/dist/neutral/implementation/head/head.d.ts +11 -0
- package/dist/neutral/implementation/head/head.d.ts.map +1 -0
- package/dist/neutral/implementation/head/index.d.ts +2 -0
- package/dist/neutral/implementation/head/index.d.ts.map +1 -0
- package/dist/neutral/implementation/head/submitNewChain.d.ts +10 -0
- package/dist/neutral/implementation/head/submitNewChain.d.ts.map +1 -0
- package/dist/neutral/implementation/index.d.ts +13 -0
- package/dist/neutral/implementation/index.d.ts.map +1 -0
- package/dist/neutral/implementation/mempoolRunner.d.ts +7 -0
- package/dist/neutral/implementation/mempoolRunner.d.ts.map +1 -0
- package/dist/neutral/implementation/mempoolViewer.d.ts +7 -0
- package/dist/neutral/implementation/mempoolViewer.d.ts.map +1 -0
- package/dist/neutral/implementation/pendingTransactions.d.ts +9 -0
- package/dist/neutral/implementation/pendingTransactions.d.ts.map +1 -0
- package/dist/neutral/implementation/producer.d.ts +5 -0
- package/dist/neutral/implementation/producer.d.ts.map +1 -0
- package/dist/neutral/implementation/reward.d.ts +14 -0
- package/dist/neutral/implementation/reward.d.ts.map +1 -0
- package/dist/neutral/implementation/time.d.ts +6 -0
- package/dist/neutral/implementation/time.d.ts.map +1 -0
- package/dist/neutral/implementation/validator.d.ts +5 -0
- package/dist/neutral/implementation/validator.d.ts.map +1 -0
- package/dist/neutral/index.d.ts +2 -2
- package/dist/neutral/index.d.ts.map +1 -1
- package/dist/neutral/index.mjs +1623 -1150
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/neutral/simple/block/index.d.ts +2 -0
- package/dist/neutral/simple/block/index.d.ts.map +1 -0
- package/dist/neutral/simple/block/runner/SimpleBlockRunner.d.ts +117 -0
- package/dist/neutral/simple/block/runner/SimpleBlockRunner.d.ts.map +1 -0
- package/dist/neutral/simple/block/runner/generateTransactionFeeTransfers.d.ts.map +1 -0
- package/dist/neutral/simple/block/runner/index.d.ts +2 -0
- package/dist/neutral/simple/block/runner/index.d.ts.map +1 -0
- package/dist/neutral/simple/block/runner/spec/SimpleBlockRewardViewer.d.ts +2 -0
- package/dist/neutral/simple/block/runner/spec/SimpleBlockRewardViewer.d.ts.map +1 -0
- package/dist/neutral/simple/index.d.ts +2 -0
- package/dist/neutral/simple/index.d.ts.map +1 -0
- package/package.json +30 -27
- package/src/AccountBalance/accountBalanceServiceFromArchivist.ts +38 -10
- package/src/AccountBalance/index.ts +0 -1
- package/src/BaseService.ts +0 -13
- package/src/BlockReward/EvmBlockRewardViewer.ts +50 -0
- package/src/BlockReward/index.ts +1 -3
- package/src/ChainBlockNumberIteration/ChainBlockNumberIterationService.ts +74 -6
- package/src/ChainService/Evm/Evm.ts +39 -36
- package/src/ChainService/Memory/Memory.ts +14 -7
- package/src/ChainValidator/XyoValidator.ts +29 -34
- package/src/Election/BaseElectionService.ts +5 -4
- package/src/NetworkStakeStepReward/BaseNetworkStakeStepRewardService.ts +18 -18
- package/src/PendingTransactions/BasePendingTransactions.ts +15 -9
- package/src/Schemas/BaseSchemasService.ts +1 -1
- package/src/StakeIntent/XyoStakeIntentService.ts +24 -18
- package/src/StepStake/BaseStepStakeService.ts +2 -2
- package/src/Time/BaseTimeSyncService.ts +6 -16
- package/src/blockViewerFromChainIteratorAndArchivist.ts +20 -1
- package/src/implementation/accountBalance.ts +29 -0
- package/src/implementation/blockViewer.ts +29 -0
- package/src/implementation/chain/evm.ts +39 -0
- package/src/implementation/chain/index.ts +46 -0
- package/src/implementation/evm/index.ts +1 -0
- package/src/implementation/evm/initChainId.ts +20 -0
- package/src/implementation/evm/initEvmProvider.ts +24 -0
- package/src/implementation/evm/initInfuraProvider.ts +26 -0
- package/src/implementation/evm/initJsonRpcProvider.ts +20 -0
- package/src/implementation/head/createBootstrapHead.ts +31 -0
- package/src/implementation/head/createForkedHead/config/getBridgeDestinationDetails.ts +27 -0
- package/src/implementation/head/createForkedHead/config/getBridgeSourceDetails.ts +19 -0
- package/src/implementation/head/createForkedHead/config/getForkDetails.ts +10 -0
- package/src/implementation/head/createForkedHead/config/index.ts +3 -0
- package/src/implementation/head/createForkedHead/createForkedHead.ts +29 -0
- package/src/implementation/head/createForkedHead/getBridgeDestinationObservation.ts +42 -0
- package/src/implementation/head/createForkedHead/getBridgeIntent.ts +51 -0
- package/src/implementation/head/createForkedHead/getBridgeSourceObservation.ts +46 -0
- package/src/implementation/head/createForkedHead/getFirstBlockForNewChain.ts +41 -0
- package/src/implementation/head/createForkedHead/index.ts +1 -0
- package/src/implementation/head/getForkFromBlock.ts +43 -0
- package/src/implementation/head/head.ts +49 -0
- package/src/implementation/head/index.ts +1 -0
- package/src/implementation/head/submitNewChain.ts +27 -0
- package/src/implementation/index.ts +12 -0
- package/src/implementation/mempoolRunner.ts +29 -0
- package/src/implementation/mempoolViewer.ts +29 -0
- package/src/implementation/pendingTransactions.ts +36 -0
- package/src/implementation/producer.ts +16 -0
- package/src/implementation/reward.ts +53 -0
- package/src/implementation/time.ts +26 -0
- package/src/implementation/validator.ts +15 -0
- package/src/index.ts +2 -2
- package/src/simple/block/index.ts +1 -0
- package/src/{BlockProducer/BaseBlockProducerService.ts → simple/block/runner/SimpleBlockRunner.ts} +111 -74
- package/src/simple/block/runner/index.ts +1 -0
- package/src/simple/block/runner/spec/SimpleBlockRewardViewer.ts +413 -0
- package/src/simple/index.ts +1 -0
- package/dist/neutral/AccountBalance/BaseAccountBalanceService.d.ts +0 -36
- package/dist/neutral/AccountBalance/BaseAccountBalanceService.d.ts.map +0 -1
- package/dist/neutral/AccountTransfers/BaseAccountTransfersService.d.ts +0 -13
- package/dist/neutral/AccountTransfers/BaseAccountTransfersService.d.ts.map +0 -1
- package/dist/neutral/AccountTransfers/index.d.ts +0 -2
- package/dist/neutral/AccountTransfers/index.d.ts.map +0 -1
- package/dist/neutral/BlockProducer/BaseBlockProducerService.d.ts +0 -85
- package/dist/neutral/BlockProducer/BaseBlockProducerService.d.ts.map +0 -1
- package/dist/neutral/BlockProducer/generateTransactionFeeTransfers.d.ts.map +0 -1
- package/dist/neutral/BlockProducer/index.d.ts +0 -2
- package/dist/neutral/BlockProducer/index.d.ts.map +0 -1
- package/dist/neutral/BlockReward/BaseBlockRewardService.d.ts +0 -10
- package/dist/neutral/BlockReward/BaseBlockRewardService.d.ts.map +0 -1
- package/dist/neutral/BlockReward/EvmBlockRewardService.d.ts +0 -18
- package/dist/neutral/BlockReward/EvmBlockRewardService.d.ts.map +0 -1
- package/dist/neutral/BlockReward/MemoryBlockRewardService.d.ts +0 -23
- package/dist/neutral/BlockReward/MemoryBlockRewardService.d.ts.map +0 -1
- package/src/AccountBalance/BaseAccountBalanceService.ts +0 -100
- package/src/AccountTransfers/BaseAccountTransfersService.ts +0 -36
- package/src/AccountTransfers/index.ts +0 -1
- package/src/BlockProducer/index.ts +0 -1
- package/src/BlockReward/BaseBlockRewardService.ts +0 -17
- package/src/BlockReward/EvmBlockRewardService.ts +0 -49
- package/src/BlockReward/MemoryBlockRewardService.ts +0 -72
- /package/dist/neutral/{BlockProducer → simple/block/runner}/generateTransactionFeeTransfers.d.ts +0 -0
- /package/src/{BlockProducer → simple/block/runner}/generateTransactionFeeTransfers.ts +0 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { Promisable } from '@xylabs/sdk-js'
|
|
2
|
+
import { assertEx, isDefined } from '@xylabs/sdk-js'
|
|
3
|
+
import type { ArchivistInstance } from '@xyo-network/archivist-model'
|
|
4
|
+
import type { WalletInstance } from '@xyo-network/wallet-model'
|
|
5
|
+
import type { Initializable, SignedBlockBoundWitnessWithHashMeta } from '@xyo-network/xl1-protocol'
|
|
6
|
+
import { type ChainService, findMostRecentBlock } from '@xyo-network/xl1-protocol-sdk'
|
|
7
|
+
|
|
8
|
+
import { createBootstrapHead } from './createBootstrapHead.ts'
|
|
9
|
+
import { createForkedHead } from './createForkedHead/index.ts'
|
|
10
|
+
import { getForkFromBlock } from './getForkFromBlock.ts'
|
|
11
|
+
import { submitNewChain } from './submitNewChain.ts'
|
|
12
|
+
|
|
13
|
+
let headSingleton: Promisable<SignedBlockBoundWitnessWithHashMeta> | undefined
|
|
14
|
+
|
|
15
|
+
export const initHead: Initializable<{
|
|
16
|
+
account: WalletInstance
|
|
17
|
+
chainArchivist: ArchivistInstance
|
|
18
|
+
chainService: ChainService
|
|
19
|
+
chainSubmissionsArchivistWrite: ArchivistInstance
|
|
20
|
+
}, SignedBlockBoundWitnessWithHashMeta>
|
|
21
|
+
= async (params): Promise<SignedBlockBoundWitnessWithHashMeta> => {
|
|
22
|
+
const {
|
|
23
|
+
account, chainArchivist, chainSubmissionsArchivistWrite, chainService,
|
|
24
|
+
} = params
|
|
25
|
+
if (headSingleton) return headSingleton
|
|
26
|
+
let head = await findMostRecentBlock(chainArchivist)
|
|
27
|
+
|
|
28
|
+
// If there is a head
|
|
29
|
+
if (head) {
|
|
30
|
+
// If there is a head but check if it matches our chainId or we should fork from it
|
|
31
|
+
const forkFromBlock = await getForkFromBlock(head, chainService, chainArchivist)
|
|
32
|
+
// If we should fork form a block in the current chain
|
|
33
|
+
if (isDefined(forkFromBlock)) {
|
|
34
|
+
// Create a new chain from the fork from block
|
|
35
|
+
const chain = await createForkedHead(forkFromBlock, account, chainService)
|
|
36
|
+
await submitNewChain(chain, chainArchivist, chainSubmissionsArchivistWrite)
|
|
37
|
+
const newBlock = assertEx(chain.at(-1), () => new Error('Failed to get new head after forking'))
|
|
38
|
+
head = newBlock[0]
|
|
39
|
+
}
|
|
40
|
+
} else {
|
|
41
|
+
// If there is no head, create one
|
|
42
|
+
const chain = await createBootstrapHead(account, chainService)
|
|
43
|
+
await submitNewChain(chain, chainArchivist, chainSubmissionsArchivistWrite)
|
|
44
|
+
const newBlock = assertEx(chain.at(-1), () => new Error('Failed to get new head after genesis'))
|
|
45
|
+
head = newBlock[0]
|
|
46
|
+
}
|
|
47
|
+
headSingleton = head
|
|
48
|
+
return headSingleton
|
|
49
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './head.ts'
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { delay } from '@xylabs/sdk-js'
|
|
2
|
+
import type { ArchivistInstance, WriteArchivist } from '@xyo-network/archivist-model'
|
|
3
|
+
import type { SignedHydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol'
|
|
4
|
+
import { flattenHydratedBlock } from '@xyo-network/xl1-protocol-sdk'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Submit a new chain to the archivist.
|
|
8
|
+
* @param chain The new chain to submit
|
|
9
|
+
* @param chainArchivist The chain archivist instance
|
|
10
|
+
* @param chainSubmissionsArchivistWrite The chain submissions archivist instance
|
|
11
|
+
*/
|
|
12
|
+
export const submitNewChain = async (
|
|
13
|
+
chain: SignedHydratedBlockWithHashMeta[],
|
|
14
|
+
chainArchivist: ArchivistInstance,
|
|
15
|
+
chainSubmissionsArchivistWrite: WriteArchivist,
|
|
16
|
+
): Promise<void> => {
|
|
17
|
+
for (const block of chain) {
|
|
18
|
+
const [bw] = block
|
|
19
|
+
await chainSubmissionsArchivistWrite.insert(flattenHydratedBlock(block))
|
|
20
|
+
// Wait for block to show up in finalized archivist
|
|
21
|
+
while (true) {
|
|
22
|
+
const result = await chainArchivist.get([bw._hash])
|
|
23
|
+
if (result.length > 0) break
|
|
24
|
+
await delay(1000) // Wait 1 second before retrying
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export * from './accountBalance.ts'
|
|
2
|
+
export * from './blockViewer.ts'
|
|
3
|
+
export * from './chain/index.ts'
|
|
4
|
+
export * from './evm/index.ts'
|
|
5
|
+
export * from './head/index.ts'
|
|
6
|
+
export * from './mempoolRunner.ts'
|
|
7
|
+
export * from './mempoolViewer.ts'
|
|
8
|
+
export * from './pendingTransactions.ts'
|
|
9
|
+
export * from './producer.ts'
|
|
10
|
+
export * from './reward.ts'
|
|
11
|
+
export * from './time.ts'
|
|
12
|
+
export * from './validator.ts'
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { isDefined, type Promisable } from '@xylabs/sdk-js'
|
|
2
|
+
import type { Initializable, InitializableParams } from '@xyo-network/xl1-protocol'
|
|
3
|
+
import type { Config, MempoolRunner } from '@xyo-network/xl1-protocol-sdk'
|
|
4
|
+
import {
|
|
5
|
+
HttpRpcTransport,
|
|
6
|
+
JsonRpcMempoolRunner,
|
|
7
|
+
MempoolRunnerRpcSchemas,
|
|
8
|
+
} from '@xyo-network/xl1-rpc'
|
|
9
|
+
|
|
10
|
+
let mempoolRunnerSingleton: Promisable<MempoolRunner> | undefined
|
|
11
|
+
|
|
12
|
+
export type InitMempoolRunnerParams = InitializableParams<{
|
|
13
|
+
config: Config
|
|
14
|
+
}>
|
|
15
|
+
|
|
16
|
+
export const initMempoolRunner: Initializable<InitMempoolRunnerParams, MempoolRunner>
|
|
17
|
+
= (params): Promisable<MempoolRunner> => {
|
|
18
|
+
const { config, logger } = params
|
|
19
|
+
if (mempoolRunnerSingleton) return mempoolRunnerSingleton
|
|
20
|
+
const endpoint = config.services?.apiEndpoint
|
|
21
|
+
if (isDefined(endpoint)) {
|
|
22
|
+
const transport = new HttpRpcTransport(endpoint, { ...MempoolRunnerRpcSchemas })
|
|
23
|
+
const runner = new JsonRpcMempoolRunner(transport)
|
|
24
|
+
logger?.log('Using mempoolRunner RPC service at', endpoint)
|
|
25
|
+
return runner
|
|
26
|
+
} else {
|
|
27
|
+
throw new Error('No MempoolRunner endpoint configured')
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { isDefined, type Promisable } from '@xylabs/sdk-js'
|
|
2
|
+
import type { Initializable, InitializableParams } from '@xyo-network/xl1-protocol'
|
|
3
|
+
import type { Config, MempoolViewer } from '@xyo-network/xl1-protocol-sdk'
|
|
4
|
+
import {
|
|
5
|
+
HttpRpcTransport,
|
|
6
|
+
JsonRpcMempoolViewer,
|
|
7
|
+
MempoolViewerRpcSchemas,
|
|
8
|
+
} from '@xyo-network/xl1-rpc'
|
|
9
|
+
|
|
10
|
+
let mempoolViewerSingleton: Promisable<MempoolViewer> | undefined
|
|
11
|
+
|
|
12
|
+
export type InitMempoolViewerParams = InitializableParams<{
|
|
13
|
+
config: Config
|
|
14
|
+
}>
|
|
15
|
+
|
|
16
|
+
export const initMempoolViewer: Initializable<InitMempoolViewerParams, MempoolViewer>
|
|
17
|
+
= (params): Promisable<MempoolViewer> => {
|
|
18
|
+
const { config, logger } = params
|
|
19
|
+
if (mempoolViewerSingleton) return mempoolViewerSingleton
|
|
20
|
+
const endpoint = config.services?.apiEndpoint
|
|
21
|
+
if (isDefined(endpoint)) {
|
|
22
|
+
const transport = new HttpRpcTransport(endpoint, { ...MempoolViewerRpcSchemas })
|
|
23
|
+
const viewer = new JsonRpcMempoolViewer(transport)
|
|
24
|
+
logger?.log('Using MempoolViewer RPC service at', endpoint)
|
|
25
|
+
return viewer
|
|
26
|
+
} else {
|
|
27
|
+
throw new Error('No MempoolViewer endpoint configured')
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { isDefined, type Promisable } from '@xylabs/sdk-js'
|
|
2
|
+
import type { Initializable, InitializableParams } from '@xyo-network/xl1-protocol'
|
|
3
|
+
import type { Config, MempoolViewer } from '@xyo-network/xl1-protocol-sdk'
|
|
4
|
+
import { timeBudget } from '@xyo-network/xl1-protocol-sdk'
|
|
5
|
+
import {
|
|
6
|
+
HttpRpcTransport, JsonRpcMempoolViewer, MempoolViewerRpcSchemas,
|
|
7
|
+
} from '@xyo-network/xl1-rpc'
|
|
8
|
+
|
|
9
|
+
import { BasePendingTransactionsService, type BasePendingTransactionsServiceParams } from '../PendingTransactions/index.ts'
|
|
10
|
+
|
|
11
|
+
let serviceSingleton: Promisable<MempoolViewer> | undefined
|
|
12
|
+
|
|
13
|
+
export type InitPendingTransactionsServiceParams = InitializableParams<{
|
|
14
|
+
config: Config
|
|
15
|
+
params?: BasePendingTransactionsServiceParams
|
|
16
|
+
}>
|
|
17
|
+
|
|
18
|
+
export const initPendingTransactions: Initializable<InitPendingTransactionsServiceParams, MempoolViewer> = async (
|
|
19
|
+
{
|
|
20
|
+
config, params, logger,
|
|
21
|
+
}: InitPendingTransactionsServiceParams,
|
|
22
|
+
): Promise<MempoolViewer> => {
|
|
23
|
+
if (serviceSingleton) return serviceSingleton
|
|
24
|
+
return await timeBudget('initPendingTransactions', logger, async () => {
|
|
25
|
+
const endpoint = config.services?.apiEndpoint
|
|
26
|
+
if (isDefined(endpoint)) {
|
|
27
|
+
const transport = new HttpRpcTransport(endpoint, { ...MempoolViewerRpcSchemas })
|
|
28
|
+
const viewer = new JsonRpcMempoolViewer(transport)
|
|
29
|
+
logger?.log('Using MempoolViewer RPC service at', endpoint)
|
|
30
|
+
return viewer
|
|
31
|
+
} else {
|
|
32
|
+
serviceSingleton = await BasePendingTransactionsService.create(params)
|
|
33
|
+
}
|
|
34
|
+
return serviceSingleton
|
|
35
|
+
}, 2000, true)
|
|
36
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Promisable } from '@xylabs/sdk-js'
|
|
2
|
+
import type { Initializable } from '@xyo-network/xl1-protocol'
|
|
3
|
+
import { type BlockProducerService, timeBudget } from '@xyo-network/xl1-protocol-sdk'
|
|
4
|
+
|
|
5
|
+
import { SimpleBlockRunner, type SimpleBlockRunnerParams } from '../simple/index.ts'
|
|
6
|
+
|
|
7
|
+
let serviceSingleton: Promisable<BlockProducerService> | undefined
|
|
8
|
+
|
|
9
|
+
export const initBlockProducer: Initializable<SimpleBlockRunnerParams, BlockProducerService>
|
|
10
|
+
= async (params: SimpleBlockRunnerParams): Promise<BlockProducerService> => {
|
|
11
|
+
if (serviceSingleton) return serviceSingleton
|
|
12
|
+
return await timeBudget('initBlockProducer', params.logger, async () => {
|
|
13
|
+
serviceSingleton = await SimpleBlockRunner.create(params)
|
|
14
|
+
return serviceSingleton
|
|
15
|
+
}, 2000, true)
|
|
16
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { Logger } from '@xylabs/sdk-js'
|
|
2
|
+
import { assertEx } from '@xylabs/sdk-js'
|
|
3
|
+
import type { Initializable } from '@xyo-network/xl1-protocol'
|
|
4
|
+
import type {
|
|
5
|
+
BlockRewardViewer, ChainContractViewer, Config, SimpleBlockRewardViewerParams,
|
|
6
|
+
} from '@xyo-network/xl1-protocol-sdk'
|
|
7
|
+
import { SimpleBlockRewardViewer, timeBudget } from '@xyo-network/xl1-protocol-sdk'
|
|
8
|
+
|
|
9
|
+
import { EvmBlockRewardViewer, type EvmBlockRewardViewerParams } from '../BlockReward/EvmBlockRewardViewer.ts'
|
|
10
|
+
import { canUseEvmProvider, initEvmProvider } from './evm/index.ts'
|
|
11
|
+
|
|
12
|
+
let rewardServiceSingleton: Promise<BlockRewardViewer> | undefined
|
|
13
|
+
|
|
14
|
+
export const initBlockRewardViewer: Initializable<
|
|
15
|
+
Partial<SimpleBlockRewardViewerParams> & {
|
|
16
|
+
chainContractViewer: ChainContractViewer
|
|
17
|
+
config: Pick<Config, 'evm'>
|
|
18
|
+
},
|
|
19
|
+
BlockRewardViewer
|
|
20
|
+
> = (params): Promise<BlockRewardViewer> => {
|
|
21
|
+
if (rewardServiceSingleton) return rewardServiceSingleton
|
|
22
|
+
return timeBudget('initBlockRewardViewer', params.logger, () => {
|
|
23
|
+
const { config } = params
|
|
24
|
+
rewardServiceSingleton = canUseEvmBlockRewardViewer({ config })
|
|
25
|
+
? initEvmBlockRewardViewer(params)
|
|
26
|
+
: initXyoBlockRewardViewer(params as SimpleBlockRewardViewerParams)
|
|
27
|
+
return rewardServiceSingleton
|
|
28
|
+
}, 2000, true)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export const initXyoBlockRewardViewer = (params: SimpleBlockRewardViewerParams): Promise<BlockRewardViewer> => {
|
|
32
|
+
if (rewardServiceSingleton) return rewardServiceSingleton
|
|
33
|
+
return timeBudget('initXyoBlockRewardViewer', params.logger, () => {
|
|
34
|
+
rewardServiceSingleton = SimpleBlockRewardViewer.create(params)
|
|
35
|
+
return rewardServiceSingleton
|
|
36
|
+
}, 2000, true)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const canUseEvmBlockRewardViewer = (params: { config: Pick<Config, 'evm'> }) => canUseEvmProvider({ config: params.config })
|
|
40
|
+
|
|
41
|
+
export const initEvmBlockRewardViewer = async (params: ({
|
|
42
|
+
chainContractViewer: ChainContractViewer
|
|
43
|
+
config: Pick<Config, 'evm'>
|
|
44
|
+
logger?: Logger
|
|
45
|
+
})): Promise<BlockRewardViewer> => {
|
|
46
|
+
if (rewardServiceSingleton) return rewardServiceSingleton
|
|
47
|
+
return await timeBudget('initEvmBlockRewardViewer', params.logger, async () => {
|
|
48
|
+
const provider = assertEx(await initEvmProvider(params))
|
|
49
|
+
const evmBlockRewardViewerParams: EvmBlockRewardViewerParams = { ...params, provider }
|
|
50
|
+
rewardServiceSingleton = EvmBlockRewardViewer.create(evmBlockRewardViewerParams)
|
|
51
|
+
return rewardServiceSingleton
|
|
52
|
+
}, 2000, true)
|
|
53
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Promisable } from '@xylabs/sdk-js'
|
|
2
|
+
import type { Initializable } from '@xyo-network/xl1-protocol'
|
|
3
|
+
import { timeBudget, type TimeSyncViewer } from '@xyo-network/xl1-protocol-sdk'
|
|
4
|
+
import type { Config } from 'cosmiconfig'
|
|
5
|
+
|
|
6
|
+
import { type BaseTimeServiceParams, BaseTimeSyncService } from '../Time/index.ts'
|
|
7
|
+
import { canUseEvmProvider, initEvmProvider } from './evm/index.ts'
|
|
8
|
+
|
|
9
|
+
let timeSyncServiceSingleton: Promisable<TimeSyncViewer> | undefined
|
|
10
|
+
|
|
11
|
+
export const initTimeService: Initializable<BaseTimeServiceParams<Pick<Config, 'evm'>>, TimeSyncViewer> = async ({
|
|
12
|
+
blockViewer, config, logger, meterProvider, traceProvider,
|
|
13
|
+
}) => {
|
|
14
|
+
if (timeSyncServiceSingleton) return timeSyncServiceSingleton
|
|
15
|
+
|
|
16
|
+
return await timeBudget('initTimeService', logger, async () => {
|
|
17
|
+
// Configure provider for optional Ethereum time sync
|
|
18
|
+
const ethProvider = canUseEvmProvider({ config }) ? await initEvmProvider({ config }) : undefined
|
|
19
|
+
|
|
20
|
+
// Create service
|
|
21
|
+
timeSyncServiceSingleton = BaseTimeSyncService.create({
|
|
22
|
+
blockViewer, ethProvider, logger, meterProvider, traceProvider,
|
|
23
|
+
})
|
|
24
|
+
return await timeSyncServiceSingleton
|
|
25
|
+
}, 2000, true)
|
|
26
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Promisable } from '@xylabs/sdk-js'
|
|
2
|
+
import type { Initializable } from '@xyo-network/xl1-protocol'
|
|
3
|
+
import type { BlockProducerService } from '@xyo-network/xl1-protocol-sdk'
|
|
4
|
+
|
|
5
|
+
import type { SimpleBlockRunnerParams } from '../simple/index.ts'
|
|
6
|
+
import { initBlockProducer } from './producer.ts'
|
|
7
|
+
|
|
8
|
+
let serviceSingleton: Promisable<BlockProducerService> | undefined
|
|
9
|
+
|
|
10
|
+
export const initValidator: Initializable<SimpleBlockRunnerParams, BlockProducerService>
|
|
11
|
+
= (params: SimpleBlockRunnerParams): Promisable<BlockProducerService> => {
|
|
12
|
+
if (serviceSingleton) return serviceSingleton
|
|
13
|
+
serviceSingleton = initBlockProducer(params)
|
|
14
|
+
return serviceSingleton
|
|
15
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
export * from './AccountBalance/index.ts'
|
|
2
|
-
export * from './AccountTransfers/index.ts'
|
|
3
2
|
export * from './BaseService.ts'
|
|
4
|
-
export * from './BlockProducer/index.ts'
|
|
5
3
|
export * from './BlockReward/index.ts'
|
|
6
4
|
export * from './blockViewerFromChainIteratorAndArchivist.ts'
|
|
7
5
|
export * from './ChainBlockNumberIteration/index.ts'
|
|
8
6
|
export * from './ChainService/index.ts'
|
|
9
7
|
export * from './ChainValidator/index.ts'
|
|
10
8
|
export * from './Election/index.ts'
|
|
9
|
+
export * from './implementation/index.ts'
|
|
11
10
|
export * from './model/index.ts'
|
|
12
11
|
export * from './NetworkStakeStepReward/index.ts'
|
|
13
12
|
export * from './PendingTransactions/index.ts'
|
|
14
13
|
export * from './Schemas/index.ts'
|
|
14
|
+
export * from './simple/index.ts'
|
|
15
15
|
export * from './StakeIntent/index.ts'
|
|
16
16
|
export * from './StepStake/index.ts'
|
|
17
17
|
export * from './Time/index.ts'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './runner/index.ts'
|