@xyo-network/chain-services 1.17.0 → 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.
Files changed (182) hide show
  1. package/dist/neutral/AccountBalance/accountBalanceServiceFromArchivist.d.ts +1 -1
  2. package/dist/neutral/AccountBalance/accountBalanceServiceFromArchivist.d.ts.map +1 -1
  3. package/dist/neutral/AccountBalance/index.d.ts +0 -1
  4. package/dist/neutral/AccountBalance/index.d.ts.map +1 -1
  5. package/dist/neutral/BaseService.d.ts +0 -3
  6. package/dist/neutral/BaseService.d.ts.map +1 -1
  7. package/dist/neutral/BlockReward/EvmBlockRewardViewer.d.ts +17 -0
  8. package/dist/neutral/BlockReward/EvmBlockRewardViewer.d.ts.map +1 -0
  9. package/dist/neutral/BlockReward/index.d.ts +1 -3
  10. package/dist/neutral/BlockReward/index.d.ts.map +1 -1
  11. package/dist/neutral/ChainBlockNumberIteration/ChainBlockNumberIterationService.d.ts +4 -2
  12. package/dist/neutral/ChainBlockNumberIteration/ChainBlockNumberIterationService.d.ts.map +1 -1
  13. package/dist/neutral/ChainService/Evm/Evm.d.ts +2 -1
  14. package/dist/neutral/ChainService/Evm/Evm.d.ts.map +1 -1
  15. package/dist/neutral/ChainService/Memory/Memory.d.ts +2 -0
  16. package/dist/neutral/ChainService/Memory/Memory.d.ts.map +1 -1
  17. package/dist/neutral/ChainValidator/XyoValidator.d.ts +2 -16
  18. package/dist/neutral/ChainValidator/XyoValidator.d.ts.map +1 -1
  19. package/dist/neutral/PendingTransactions/BasePendingTransactions.d.ts +7 -6
  20. package/dist/neutral/PendingTransactions/BasePendingTransactions.d.ts.map +1 -1
  21. package/dist/neutral/StakeIntent/XyoStakeIntentService.d.ts +5 -4
  22. package/dist/neutral/StakeIntent/XyoStakeIntentService.d.ts.map +1 -1
  23. package/dist/neutral/blockViewerFromChainIteratorAndArchivist.d.ts.map +1 -1
  24. package/dist/neutral/implementation/accountBalance.d.ts +7 -0
  25. package/dist/neutral/implementation/accountBalance.d.ts.map +1 -0
  26. package/dist/neutral/implementation/blockViewer.d.ts +7 -0
  27. package/dist/neutral/implementation/blockViewer.d.ts.map +1 -0
  28. package/dist/neutral/implementation/chain/evm.d.ts +7 -0
  29. package/dist/neutral/implementation/chain/evm.d.ts.map +1 -0
  30. package/dist/neutral/implementation/chain/index.d.ts +7 -0
  31. package/dist/neutral/implementation/chain/index.d.ts.map +1 -0
  32. package/dist/neutral/implementation/evm/index.d.ts +2 -0
  33. package/dist/neutral/implementation/evm/index.d.ts.map +1 -0
  34. package/dist/neutral/implementation/evm/initChainId.d.ts +4 -0
  35. package/dist/neutral/implementation/evm/initChainId.d.ts.map +1 -0
  36. package/dist/neutral/implementation/evm/initEvmProvider.d.ts +11 -0
  37. package/dist/neutral/implementation/evm/initEvmProvider.d.ts.map +1 -0
  38. package/dist/neutral/implementation/evm/initInfuraProvider.d.ts +6 -0
  39. package/dist/neutral/implementation/evm/initInfuraProvider.d.ts.map +1 -0
  40. package/dist/neutral/implementation/evm/initJsonRpcProvider.d.ts +6 -0
  41. package/dist/neutral/implementation/evm/initJsonRpcProvider.d.ts.map +1 -0
  42. package/dist/neutral/implementation/head/createBootstrapHead.d.ts +5 -0
  43. package/dist/neutral/implementation/head/createBootstrapHead.d.ts.map +1 -0
  44. package/dist/neutral/implementation/head/createForkedHead/config/getBridgeDestinationDetails.d.ts +8 -0
  45. package/dist/neutral/implementation/head/createForkedHead/config/getBridgeDestinationDetails.d.ts.map +1 -0
  46. package/dist/neutral/implementation/head/createForkedHead/config/getBridgeSourceDetails.d.ts +9 -0
  47. package/dist/neutral/implementation/head/createForkedHead/config/getBridgeSourceDetails.d.ts.map +1 -0
  48. package/dist/neutral/implementation/head/createForkedHead/config/getForkDetails.d.ts +4 -0
  49. package/dist/neutral/implementation/head/createForkedHead/config/getForkDetails.d.ts.map +1 -0
  50. package/dist/neutral/implementation/head/createForkedHead/config/index.d.ts +4 -0
  51. package/dist/neutral/implementation/head/createForkedHead/config/index.d.ts.map +1 -0
  52. package/dist/neutral/implementation/head/createForkedHead/createForkedHead.d.ts +5 -0
  53. package/dist/neutral/implementation/head/createForkedHead/createForkedHead.d.ts.map +1 -0
  54. package/dist/neutral/implementation/head/createForkedHead/getBridgeDestinationObservation.d.ts +11 -0
  55. package/dist/neutral/implementation/head/createForkedHead/getBridgeDestinationObservation.d.ts.map +1 -0
  56. package/dist/neutral/implementation/head/createForkedHead/getBridgeIntent.d.ts +11 -0
  57. package/dist/neutral/implementation/head/createForkedHead/getBridgeIntent.d.ts.map +1 -0
  58. package/dist/neutral/implementation/head/createForkedHead/getBridgeSourceObservation.d.ts +11 -0
  59. package/dist/neutral/implementation/head/createForkedHead/getBridgeSourceObservation.d.ts.map +1 -0
  60. package/dist/neutral/implementation/head/createForkedHead/getFirstBlockForNewChain.d.ts +13 -0
  61. package/dist/neutral/implementation/head/createForkedHead/getFirstBlockForNewChain.d.ts.map +1 -0
  62. package/dist/neutral/implementation/head/createForkedHead/index.d.ts +2 -0
  63. package/dist/neutral/implementation/head/createForkedHead/index.d.ts.map +1 -0
  64. package/dist/neutral/implementation/head/getForkFromBlock.d.ts +12 -0
  65. package/dist/neutral/implementation/head/getForkFromBlock.d.ts.map +1 -0
  66. package/dist/neutral/implementation/head/head.d.ts +11 -0
  67. package/dist/neutral/implementation/head/head.d.ts.map +1 -0
  68. package/dist/neutral/implementation/head/index.d.ts +2 -0
  69. package/dist/neutral/implementation/head/index.d.ts.map +1 -0
  70. package/dist/neutral/implementation/head/submitNewChain.d.ts +10 -0
  71. package/dist/neutral/implementation/head/submitNewChain.d.ts.map +1 -0
  72. package/dist/neutral/implementation/index.d.ts +13 -0
  73. package/dist/neutral/implementation/index.d.ts.map +1 -0
  74. package/dist/neutral/implementation/mempoolRunner.d.ts +7 -0
  75. package/dist/neutral/implementation/mempoolRunner.d.ts.map +1 -0
  76. package/dist/neutral/implementation/mempoolViewer.d.ts +7 -0
  77. package/dist/neutral/implementation/mempoolViewer.d.ts.map +1 -0
  78. package/dist/neutral/implementation/pendingTransactions.d.ts +9 -0
  79. package/dist/neutral/implementation/pendingTransactions.d.ts.map +1 -0
  80. package/dist/neutral/implementation/producer.d.ts +5 -0
  81. package/dist/neutral/implementation/producer.d.ts.map +1 -0
  82. package/dist/neutral/implementation/reward.d.ts +14 -0
  83. package/dist/neutral/implementation/reward.d.ts.map +1 -0
  84. package/dist/neutral/implementation/time.d.ts +6 -0
  85. package/dist/neutral/implementation/time.d.ts.map +1 -0
  86. package/dist/neutral/implementation/validator.d.ts +5 -0
  87. package/dist/neutral/implementation/validator.d.ts.map +1 -0
  88. package/dist/neutral/index.d.ts +2 -2
  89. package/dist/neutral/index.d.ts.map +1 -1
  90. package/dist/neutral/index.mjs +1565 -1140
  91. package/dist/neutral/index.mjs.map +1 -1
  92. package/dist/neutral/simple/block/index.d.ts +2 -0
  93. package/dist/neutral/simple/block/index.d.ts.map +1 -0
  94. package/dist/neutral/simple/block/runner/SimpleBlockRunner.d.ts +117 -0
  95. package/dist/neutral/simple/block/runner/SimpleBlockRunner.d.ts.map +1 -0
  96. package/dist/neutral/simple/block/runner/generateTransactionFeeTransfers.d.ts.map +1 -0
  97. package/dist/neutral/simple/block/runner/index.d.ts +2 -0
  98. package/dist/neutral/simple/block/runner/index.d.ts.map +1 -0
  99. package/dist/neutral/simple/block/runner/spec/SimpleBlockRewardViewer.d.ts +2 -0
  100. package/dist/neutral/simple/block/runner/spec/SimpleBlockRewardViewer.d.ts.map +1 -0
  101. package/dist/neutral/simple/index.d.ts +2 -0
  102. package/dist/neutral/simple/index.d.ts.map +1 -0
  103. package/package.json +30 -27
  104. package/src/AccountBalance/accountBalanceServiceFromArchivist.ts +35 -8
  105. package/src/AccountBalance/index.ts +0 -1
  106. package/src/BaseService.ts +0 -13
  107. package/src/BlockReward/EvmBlockRewardViewer.ts +50 -0
  108. package/src/BlockReward/index.ts +1 -3
  109. package/src/ChainBlockNumberIteration/ChainBlockNumberIterationService.ts +14 -2
  110. package/src/ChainService/Evm/Evm.ts +5 -4
  111. package/src/ChainService/Memory/Memory.ts +5 -0
  112. package/src/ChainValidator/XyoValidator.ts +25 -30
  113. package/src/NetworkStakeStepReward/BaseNetworkStakeStepRewardService.ts +18 -18
  114. package/src/PendingTransactions/BasePendingTransactions.ts +10 -5
  115. package/src/Schemas/BaseSchemasService.ts +1 -1
  116. package/src/StakeIntent/XyoStakeIntentService.ts +18 -8
  117. package/src/StepStake/BaseStepStakeService.ts +2 -2
  118. package/src/blockViewerFromChainIteratorAndArchivist.ts +8 -1
  119. package/src/implementation/accountBalance.ts +29 -0
  120. package/src/implementation/blockViewer.ts +29 -0
  121. package/src/implementation/chain/evm.ts +39 -0
  122. package/src/implementation/chain/index.ts +46 -0
  123. package/src/implementation/evm/index.ts +1 -0
  124. package/src/implementation/evm/initChainId.ts +20 -0
  125. package/src/implementation/evm/initEvmProvider.ts +24 -0
  126. package/src/implementation/evm/initInfuraProvider.ts +26 -0
  127. package/src/implementation/evm/initJsonRpcProvider.ts +20 -0
  128. package/src/implementation/head/createBootstrapHead.ts +31 -0
  129. package/src/implementation/head/createForkedHead/config/getBridgeDestinationDetails.ts +27 -0
  130. package/src/implementation/head/createForkedHead/config/getBridgeSourceDetails.ts +19 -0
  131. package/src/implementation/head/createForkedHead/config/getForkDetails.ts +10 -0
  132. package/src/implementation/head/createForkedHead/config/index.ts +3 -0
  133. package/src/implementation/head/createForkedHead/createForkedHead.ts +29 -0
  134. package/src/implementation/head/createForkedHead/getBridgeDestinationObservation.ts +42 -0
  135. package/src/implementation/head/createForkedHead/getBridgeIntent.ts +51 -0
  136. package/src/implementation/head/createForkedHead/getBridgeSourceObservation.ts +46 -0
  137. package/src/implementation/head/createForkedHead/getFirstBlockForNewChain.ts +41 -0
  138. package/src/implementation/head/createForkedHead/index.ts +1 -0
  139. package/src/implementation/head/getForkFromBlock.ts +43 -0
  140. package/src/implementation/head/head.ts +49 -0
  141. package/src/implementation/head/index.ts +1 -0
  142. package/src/implementation/head/submitNewChain.ts +27 -0
  143. package/src/implementation/index.ts +12 -0
  144. package/src/implementation/mempoolRunner.ts +29 -0
  145. package/src/implementation/mempoolViewer.ts +29 -0
  146. package/src/implementation/pendingTransactions.ts +36 -0
  147. package/src/implementation/producer.ts +16 -0
  148. package/src/implementation/reward.ts +53 -0
  149. package/src/implementation/time.ts +26 -0
  150. package/src/implementation/validator.ts +15 -0
  151. package/src/index.ts +2 -2
  152. package/src/simple/block/index.ts +1 -0
  153. package/src/{BlockProducer/BaseBlockProducerService.ts → simple/block/runner/SimpleBlockRunner.ts} +111 -74
  154. package/src/simple/block/runner/index.ts +1 -0
  155. package/src/simple/block/runner/spec/SimpleBlockRewardViewer.ts +413 -0
  156. package/src/simple/index.ts +1 -0
  157. package/dist/neutral/AccountBalance/BaseAccountBalanceService.d.ts +0 -35
  158. package/dist/neutral/AccountBalance/BaseAccountBalanceService.d.ts.map +0 -1
  159. package/dist/neutral/AccountTransfers/BaseAccountTransfersService.d.ts +0 -13
  160. package/dist/neutral/AccountTransfers/BaseAccountTransfersService.d.ts.map +0 -1
  161. package/dist/neutral/AccountTransfers/index.d.ts +0 -2
  162. package/dist/neutral/AccountTransfers/index.d.ts.map +0 -1
  163. package/dist/neutral/BlockProducer/BaseBlockProducerService.d.ts +0 -85
  164. package/dist/neutral/BlockProducer/BaseBlockProducerService.d.ts.map +0 -1
  165. package/dist/neutral/BlockProducer/generateTransactionFeeTransfers.d.ts.map +0 -1
  166. package/dist/neutral/BlockProducer/index.d.ts +0 -2
  167. package/dist/neutral/BlockProducer/index.d.ts.map +0 -1
  168. package/dist/neutral/BlockReward/BaseBlockRewardService.d.ts +0 -10
  169. package/dist/neutral/BlockReward/BaseBlockRewardService.d.ts.map +0 -1
  170. package/dist/neutral/BlockReward/EvmBlockRewardService.d.ts +0 -18
  171. package/dist/neutral/BlockReward/EvmBlockRewardService.d.ts.map +0 -1
  172. package/dist/neutral/BlockReward/MemoryBlockRewardService.d.ts +0 -23
  173. package/dist/neutral/BlockReward/MemoryBlockRewardService.d.ts.map +0 -1
  174. package/src/AccountBalance/BaseAccountBalanceService.ts +0 -98
  175. package/src/AccountTransfers/BaseAccountTransfersService.ts +0 -36
  176. package/src/AccountTransfers/index.ts +0 -1
  177. package/src/BlockProducer/index.ts +0 -1
  178. package/src/BlockReward/BaseBlockRewardService.ts +0 -17
  179. package/src/BlockReward/EvmBlockRewardService.ts +0 -49
  180. package/src/BlockReward/MemoryBlockRewardService.ts +0 -72
  181. /package/dist/neutral/{BlockProducer → simple/block/runner}/generateTransactionFeeTransfers.d.ts +0 -0
  182. /package/src/{BlockProducer → simple/block/runner}/generateTransactionFeeTransfers.ts +0 -0
@@ -1,98 +0,0 @@
1
- import {
2
- Address, assertEx, creatable, Hash,
3
- } from '@xylabs/sdk-js'
4
- import { spanRootAsync } from '@xylabs/telemetry'
5
- import { ReadArchivist } from '@xyo-network/archivist-model'
6
- import { AttoXL1, XL1BlockRange } from '@xyo-network/xl1-protocol'
7
- import {
8
- AccountBalanceHistoryItem,
9
- AccountBalanceViewer,
10
- balancesSummary,
11
- BalanceStepSummaryContext,
12
- BlockViewer,
13
- SimpleAccountBalanceViewer,
14
- TransfersStepSummaryContext,
15
- } from '@xyo-network/xl1-protocol-sdk'
16
- import z from 'zod'
17
-
18
- import { BaseService } from '../BaseService.ts'
19
- import { BaseServiceParams } from '../model/index.ts'
20
-
21
- export const BaseAccountBalanceServiceParamsZod = z.object({
22
- blockViewer: z.object().loose(),
23
- chainArchivist: z.object().loose(),
24
- chainIterator: z.object().loose(),
25
- context: z.object().loose(),
26
- transferContext: z.object().loose(),
27
- })
28
-
29
- export interface BaseAccountBalanceServiceParams extends BaseServiceParams {
30
- blockViewer: BlockViewer
31
- chainArchivist: ReadArchivist
32
- context: BalanceStepSummaryContext
33
- transfersSummaryContext: TransfersStepSummaryContext
34
- }
35
-
36
- @creatable()
37
- export class BaseAccountBalanceService extends BaseService<BaseAccountBalanceServiceParams> implements AccountBalanceViewer {
38
- protected accountBalanceViewer!: AccountBalanceViewer
39
-
40
- protected get blockViewer() {
41
- return assertEx(this.params.blockViewer, () => 'BlockViewer has not been initialized yet')
42
- }
43
-
44
- static override async paramsHandler(params?: Partial<BaseAccountBalanceServiceParams> | undefined): Promise<BaseAccountBalanceServiceParams> {
45
- // TODO: Use a real zod and move the zod check to the AbstractCreatable class
46
- BaseAccountBalanceServiceParamsZod.parse(params)
47
- assertEx(params?.context?.head, () => 'BalanceStepSummaryContext is required in BaseAccountBalanceServiceParams')
48
- return { ...(await super.paramsHandler(params)), ...params } as BaseAccountBalanceServiceParams
49
- }
50
-
51
- async accountBalance(address: Address, headOrRange?: XL1BlockRange | Hash): Promise<AttoXL1> {
52
- const balances = await this.accountsBalances([address], headOrRange)
53
- return balances[address] ?? AttoXL1(0n)
54
- }
55
-
56
- async accountBalanceHistory(address: Address): Promise<AccountBalanceHistoryItem[]>
57
- async accountBalanceHistory(address: Address, head: Hash): Promise<AccountBalanceHistoryItem[]>
58
- async accountBalanceHistory(address: Address, range: XL1BlockRange): Promise<AccountBalanceHistoryItem[]>
59
- accountBalanceHistory(_address: Address, _headOrRange?: Hash | XL1BlockRange): Promise<AccountBalanceHistoryItem[]> {
60
- throw new Error('Method not implemented.')
61
- }
62
-
63
- async accountsBalances(address: Address[], _headOrRange?: Hash | XL1BlockRange): Promise<Partial<Record<Address, AttoXL1>>> {
64
- return await spanRootAsync('balances', async () => {
65
- const context = {
66
- head: this.params.context.head,
67
- stepSemaphores: this.params.context.stepSemaphores,
68
- store: this.params.context.store,
69
- chainId: this.params.context.chainId,
70
- summaryMap: this.params.context.summaryMap,
71
- } satisfies BalanceStepSummaryContext
72
- const summary = await balancesSummary(
73
- context,
74
- )
75
- const result: Record<Address, AttoXL1> = {}
76
- for (const addr of address) {
77
- const summaryBalance = summary[addr] ?? 0n
78
- result[addr] = AttoXL1(summaryBalance < 0n ? 0n : summaryBalance)
79
- }
80
- return result
81
- })
82
- }
83
-
84
- async accountsBalancesHistory(addresses: Address[]): Promise<Partial<Record<Address, AccountBalanceHistoryItem[]>>>
85
- async accountsBalancesHistory(addresses: Address[], head: Hash): Promise<Partial<Record<Address, AccountBalanceHistoryItem[]>>>
86
- async accountsBalancesHistory(addresses: Address[], range: XL1BlockRange): Promise<Partial<Record<Address, AccountBalanceHistoryItem[]>>>
87
- accountsBalancesHistory(_addresses: Address[], _headOrRange?: Hash | XL1BlockRange): Promise<Partial<Record<Address, AccountBalanceHistoryItem[]>>> {
88
- throw new Error('Method not implemented.')
89
- }
90
-
91
- override async createHandler() {
92
- this.accountBalanceViewer = await SimpleAccountBalanceViewer.create({
93
- context: this.params.context,
94
- transfersSummaryContext: this.params.transfersSummaryContext,
95
- blockViewer: this.blockViewer,
96
- })
97
- }
98
- }
@@ -1,36 +0,0 @@
1
- import {
2
- Address, creatable, Hash,
3
- } from '@xylabs/sdk-js'
4
- import { spanRootAsync } from '@xylabs/telemetry'
5
- import { AttoXL1 } from '@xyo-network/xl1-protocol'
6
- import {
7
- AccountTransfersService,
8
- TransfersStepSummaryContext,
9
- transfersSummary,
10
- } from '@xyo-network/xl1-protocol-sdk'
11
-
12
- import { BaseService } from '../BaseService.ts'
13
- import { BaseServiceParams } from '../model/index.ts'
14
-
15
- export interface BaseAccountTransferServiceParams extends BaseServiceParams {
16
- context: TransfersStepSummaryContext
17
- }
18
-
19
- @creatable()
20
- export class BaseAccountTransfersService extends BaseService<BaseAccountTransferServiceParams> implements AccountTransfersService {
21
- async transfer(head: Hash, address: Address): Promise<AttoXL1> {
22
- return (await this.transfers(head, [address]))[address] ?? AttoXL1(0n)
23
- }
24
-
25
- async transfers(head: Hash, addresses: Address[]): Promise<Partial<Record<Address, AttoXL1>>> {
26
- return await spanRootAsync('transfers', async () => {
27
- const summary = await transfersSummary(this.params.context)
28
- const result: Record<Address, AttoXL1> = {}
29
- for (const addr of addresses) {
30
- const summaryBalance = summary[addr] ?? 0n
31
- result[addr] = AttoXL1(summaryBalance)
32
- }
33
- return result
34
- })
35
- }
36
- }
@@ -1 +0,0 @@
1
- export * from './BaseAccountTransfersService.ts'
@@ -1 +0,0 @@
1
- export * from './BaseBlockProducerService.ts'
@@ -1,17 +0,0 @@
1
- import {
2
- creatable, EmptyObject, Promisable,
3
- } from '@xylabs/sdk-js'
4
- import { BlockRewardService } from '@xyo-network/xl1-protocol-sdk'
5
-
6
- import { BaseService } from '../BaseService.ts'
7
- import { BaseServiceParams } from '../model/index.ts'
8
-
9
- export interface BaseBlockRewardServiceParams<TConfig extends EmptyObject = EmptyObject> extends BaseServiceParams<TConfig> {}
10
-
11
- @creatable()
12
- export class BaseBlockRewardService<TParams extends BaseBlockRewardServiceParams = BaseBlockRewardServiceParams>
13
- extends BaseService<TParams> implements BlockRewardService {
14
- getRewardForBlock(_blockNumber: bigint): Promisable<bigint> {
15
- throw new Error('getRewardForBlock method must be implemented in derived classes')
16
- }
17
- }
@@ -1,49 +0,0 @@
1
- import {
2
- assertEx, creatable, toEthAddress,
3
- } from '@xylabs/sdk-js'
4
- import { AccountInstance } from '@xyo-network/account-model'
5
- import { XyoChainRewards__factory as XyoChainRewardsFactory } from '@xyo-network/typechain'
6
- import {
7
- BlockRewardService, ChainService, Config,
8
- } from '@xyo-network/xl1-protocol-sdk'
9
- import { Provider } from 'ethers/providers'
10
-
11
- import { BaseBlockRewardService, BaseBlockRewardServiceParams } from './BaseBlockRewardService.ts'
12
-
13
- export interface EvmBlockRewardServiceParams extends BaseBlockRewardServiceParams<Pick<Config, 'evm'>> {
14
- account: AccountInstance
15
- chainService?: ChainService
16
- provider?: Provider
17
- }
18
-
19
- @creatable()
20
- export class EvmBlockRewardService extends BaseBlockRewardService<EvmBlockRewardServiceParams> implements BlockRewardService {
21
- protected _contractAddress: string | undefined
22
-
23
- protected get chainService() {
24
- return assertEx(this.params.chainService, () => 'chainService is required')
25
- }
26
-
27
- protected get contractAddress() {
28
- return assertEx(this._contractAddress, () => 'contractAddress is required')
29
- }
30
-
31
- protected get provider() {
32
- return assertEx(this.params.provider, () => 'provider is required')
33
- }
34
-
35
- override async createHandler() {
36
- await super.createHandler()
37
- try {
38
- this._contractAddress = await this.chainService.rewardsContract()
39
- } catch (ex) {
40
- const error = ex as Error
41
- throw new Error(`Failed to get rewards contract address: ${error.message}`)
42
- }
43
- }
44
-
45
- override async getRewardForBlock(blockNumber: bigint): Promise<bigint> {
46
- const contract = XyoChainRewardsFactory.connect(toEthAddress(this.contractAddress), this.provider)
47
- return await contract.calcBlockReward(blockNumber)
48
- }
49
- }
@@ -1,72 +0,0 @@
1
- import {
2
- assertEx, creatable, Promisable, toFixedPoint,
3
- } from '@xylabs/sdk-js'
4
- import { rewardFromBlockNumber } from '@xyo-network/chain-protocol'
5
- import { BlockRewardService } from '@xyo-network/xl1-protocol-sdk'
6
-
7
- import { BaseBlockRewardService, BaseBlockRewardServiceParams } from './BaseBlockRewardService.ts'
8
-
9
- export interface MemoryBlockRewardServiceParams extends BaseBlockRewardServiceParams {
10
- creatorReward?: bigint
11
- initialStepReward?: bigint
12
- minRewardPerBlock?: bigint
13
- stepFactorDenominator?: bigint
14
- stepFactorNumerator?: bigint
15
- stepSize?: bigint
16
- }
17
-
18
- @creatable()
19
- export class MemoryBlockRewardService<TParams extends MemoryBlockRewardServiceParams = MemoryBlockRewardServiceParams>
20
- extends BaseBlockRewardService<TParams> implements BlockRewardService {
21
- protected readonly rewardFromBlockNumber = rewardFromBlockNumber(18)
22
-
23
- get creatorReward() {
24
- return assertEx(this.params.creatorReward, () => 'creatorReward is required')
25
- }
26
-
27
- get initialReward() {
28
- return assertEx(this.params.initialStepReward, () => 'initialStepReward is required')
29
- }
30
-
31
- get minRewardPerBlock() {
32
- return assertEx(this.params.minRewardPerBlock, () => 'minRewardPerBlock is required')
33
- }
34
-
35
- get stepFactorDenominator() {
36
- return assertEx(this.params.stepFactorDenominator, () => 'stepFactorDenominator is required')
37
- }
38
-
39
- get stepFactorNumerator() {
40
- return assertEx(this.params.stepFactorNumerator, () => 'stepFactorNumerator is required')
41
- }
42
-
43
- get stepSize() {
44
- return assertEx(this.params.stepSize, () => 'stepSize is required')
45
- }
46
-
47
- static override async paramsHandler<T extends MemoryBlockRewardService['params']>(
48
- inParams?: Partial<T>,
49
- ): Promise<T> {
50
- return {
51
- ...await super.paramsHandler(inParams),
52
- creatorReward: inParams?.creatorReward ?? toFixedPoint(20_000_000_000n),
53
- initialStepReward: inParams?.initialStepReward ?? toFixedPoint(3000n),
54
- minRewardPerBlock: inParams?.minRewardPerBlock ?? toFixedPoint(30n),
55
- stepFactorDenominator: inParams?.stepFactorDenominator ?? 100n,
56
- stepFactorNumerator: inParams?.stepFactorNumerator ?? 90n,
57
- stepSize: inParams?.stepSize ?? 1_000_000n,
58
- } as T
59
- }
60
-
61
- override getRewardForBlock(blockNumber: bigint): Promisable<bigint> {
62
- return this.rewardFromBlockNumber(
63
- blockNumber,
64
- this.initialReward,
65
- this.stepSize,
66
- this.stepFactorNumerator,
67
- this.stepFactorDenominator,
68
- this.minRewardPerBlock,
69
- this.creatorReward,
70
- )
71
- }
72
- }