@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.
Files changed (188) 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 +23 -11
  12. package/dist/neutral/ChainBlockNumberIteration/ChainBlockNumberIterationService.d.ts.map +1 -1
  13. package/dist/neutral/ChainService/Evm/Evm.d.ts +6 -5
  14. package/dist/neutral/ChainService/Evm/Evm.d.ts.map +1 -1
  15. package/dist/neutral/ChainService/Memory/Memory.d.ts +6 -4
  16. package/dist/neutral/ChainService/Memory/Memory.d.ts.map +1 -1
  17. package/dist/neutral/ChainValidator/XyoValidator.d.ts +4 -18
  18. package/dist/neutral/ChainValidator/XyoValidator.d.ts.map +1 -1
  19. package/dist/neutral/Election/BaseElectionService.d.ts +3 -3
  20. package/dist/neutral/Election/BaseElectionService.d.ts.map +1 -1
  21. package/dist/neutral/PendingTransactions/BasePendingTransactions.d.ts +9 -9
  22. package/dist/neutral/PendingTransactions/BasePendingTransactions.d.ts.map +1 -1
  23. package/dist/neutral/StakeIntent/XyoStakeIntentService.d.ts +7 -6
  24. package/dist/neutral/StakeIntent/XyoStakeIntentService.d.ts.map +1 -1
  25. package/dist/neutral/Time/BaseTimeSyncService.d.ts +3 -6
  26. package/dist/neutral/Time/BaseTimeSyncService.d.ts.map +1 -1
  27. package/dist/neutral/blockViewerFromChainIteratorAndArchivist.d.ts.map +1 -1
  28. package/dist/neutral/implementation/accountBalance.d.ts +7 -0
  29. package/dist/neutral/implementation/accountBalance.d.ts.map +1 -0
  30. package/dist/neutral/implementation/blockViewer.d.ts +7 -0
  31. package/dist/neutral/implementation/blockViewer.d.ts.map +1 -0
  32. package/dist/neutral/implementation/chain/evm.d.ts +7 -0
  33. package/dist/neutral/implementation/chain/evm.d.ts.map +1 -0
  34. package/dist/neutral/implementation/chain/index.d.ts +7 -0
  35. package/dist/neutral/implementation/chain/index.d.ts.map +1 -0
  36. package/dist/neutral/implementation/evm/index.d.ts +2 -0
  37. package/dist/neutral/implementation/evm/index.d.ts.map +1 -0
  38. package/dist/neutral/implementation/evm/initChainId.d.ts +4 -0
  39. package/dist/neutral/implementation/evm/initChainId.d.ts.map +1 -0
  40. package/dist/neutral/implementation/evm/initEvmProvider.d.ts +11 -0
  41. package/dist/neutral/implementation/evm/initEvmProvider.d.ts.map +1 -0
  42. package/dist/neutral/implementation/evm/initInfuraProvider.d.ts +6 -0
  43. package/dist/neutral/implementation/evm/initInfuraProvider.d.ts.map +1 -0
  44. package/dist/neutral/implementation/evm/initJsonRpcProvider.d.ts +6 -0
  45. package/dist/neutral/implementation/evm/initJsonRpcProvider.d.ts.map +1 -0
  46. package/dist/neutral/implementation/head/createBootstrapHead.d.ts +5 -0
  47. package/dist/neutral/implementation/head/createBootstrapHead.d.ts.map +1 -0
  48. package/dist/neutral/implementation/head/createForkedHead/config/getBridgeDestinationDetails.d.ts +8 -0
  49. package/dist/neutral/implementation/head/createForkedHead/config/getBridgeDestinationDetails.d.ts.map +1 -0
  50. package/dist/neutral/implementation/head/createForkedHead/config/getBridgeSourceDetails.d.ts +9 -0
  51. package/dist/neutral/implementation/head/createForkedHead/config/getBridgeSourceDetails.d.ts.map +1 -0
  52. package/dist/neutral/implementation/head/createForkedHead/config/getForkDetails.d.ts +4 -0
  53. package/dist/neutral/implementation/head/createForkedHead/config/getForkDetails.d.ts.map +1 -0
  54. package/dist/neutral/implementation/head/createForkedHead/config/index.d.ts +4 -0
  55. package/dist/neutral/implementation/head/createForkedHead/config/index.d.ts.map +1 -0
  56. package/dist/neutral/implementation/head/createForkedHead/createForkedHead.d.ts +5 -0
  57. package/dist/neutral/implementation/head/createForkedHead/createForkedHead.d.ts.map +1 -0
  58. package/dist/neutral/implementation/head/createForkedHead/getBridgeDestinationObservation.d.ts +11 -0
  59. package/dist/neutral/implementation/head/createForkedHead/getBridgeDestinationObservation.d.ts.map +1 -0
  60. package/dist/neutral/implementation/head/createForkedHead/getBridgeIntent.d.ts +11 -0
  61. package/dist/neutral/implementation/head/createForkedHead/getBridgeIntent.d.ts.map +1 -0
  62. package/dist/neutral/implementation/head/createForkedHead/getBridgeSourceObservation.d.ts +11 -0
  63. package/dist/neutral/implementation/head/createForkedHead/getBridgeSourceObservation.d.ts.map +1 -0
  64. package/dist/neutral/implementation/head/createForkedHead/getFirstBlockForNewChain.d.ts +13 -0
  65. package/dist/neutral/implementation/head/createForkedHead/getFirstBlockForNewChain.d.ts.map +1 -0
  66. package/dist/neutral/implementation/head/createForkedHead/index.d.ts +2 -0
  67. package/dist/neutral/implementation/head/createForkedHead/index.d.ts.map +1 -0
  68. package/dist/neutral/implementation/head/getForkFromBlock.d.ts +12 -0
  69. package/dist/neutral/implementation/head/getForkFromBlock.d.ts.map +1 -0
  70. package/dist/neutral/implementation/head/head.d.ts +11 -0
  71. package/dist/neutral/implementation/head/head.d.ts.map +1 -0
  72. package/dist/neutral/implementation/head/index.d.ts +2 -0
  73. package/dist/neutral/implementation/head/index.d.ts.map +1 -0
  74. package/dist/neutral/implementation/head/submitNewChain.d.ts +10 -0
  75. package/dist/neutral/implementation/head/submitNewChain.d.ts.map +1 -0
  76. package/dist/neutral/implementation/index.d.ts +13 -0
  77. package/dist/neutral/implementation/index.d.ts.map +1 -0
  78. package/dist/neutral/implementation/mempoolRunner.d.ts +7 -0
  79. package/dist/neutral/implementation/mempoolRunner.d.ts.map +1 -0
  80. package/dist/neutral/implementation/mempoolViewer.d.ts +7 -0
  81. package/dist/neutral/implementation/mempoolViewer.d.ts.map +1 -0
  82. package/dist/neutral/implementation/pendingTransactions.d.ts +9 -0
  83. package/dist/neutral/implementation/pendingTransactions.d.ts.map +1 -0
  84. package/dist/neutral/implementation/producer.d.ts +5 -0
  85. package/dist/neutral/implementation/producer.d.ts.map +1 -0
  86. package/dist/neutral/implementation/reward.d.ts +14 -0
  87. package/dist/neutral/implementation/reward.d.ts.map +1 -0
  88. package/dist/neutral/implementation/time.d.ts +6 -0
  89. package/dist/neutral/implementation/time.d.ts.map +1 -0
  90. package/dist/neutral/implementation/validator.d.ts +5 -0
  91. package/dist/neutral/implementation/validator.d.ts.map +1 -0
  92. package/dist/neutral/index.d.ts +2 -2
  93. package/dist/neutral/index.d.ts.map +1 -1
  94. package/dist/neutral/index.mjs +1623 -1150
  95. package/dist/neutral/index.mjs.map +1 -1
  96. package/dist/neutral/simple/block/index.d.ts +2 -0
  97. package/dist/neutral/simple/block/index.d.ts.map +1 -0
  98. package/dist/neutral/simple/block/runner/SimpleBlockRunner.d.ts +117 -0
  99. package/dist/neutral/simple/block/runner/SimpleBlockRunner.d.ts.map +1 -0
  100. package/dist/neutral/simple/block/runner/generateTransactionFeeTransfers.d.ts.map +1 -0
  101. package/dist/neutral/simple/block/runner/index.d.ts +2 -0
  102. package/dist/neutral/simple/block/runner/index.d.ts.map +1 -0
  103. package/dist/neutral/simple/block/runner/spec/SimpleBlockRewardViewer.d.ts +2 -0
  104. package/dist/neutral/simple/block/runner/spec/SimpleBlockRewardViewer.d.ts.map +1 -0
  105. package/dist/neutral/simple/index.d.ts +2 -0
  106. package/dist/neutral/simple/index.d.ts.map +1 -0
  107. package/package.json +30 -27
  108. package/src/AccountBalance/accountBalanceServiceFromArchivist.ts +38 -10
  109. package/src/AccountBalance/index.ts +0 -1
  110. package/src/BaseService.ts +0 -13
  111. package/src/BlockReward/EvmBlockRewardViewer.ts +50 -0
  112. package/src/BlockReward/index.ts +1 -3
  113. package/src/ChainBlockNumberIteration/ChainBlockNumberIterationService.ts +74 -6
  114. package/src/ChainService/Evm/Evm.ts +39 -36
  115. package/src/ChainService/Memory/Memory.ts +14 -7
  116. package/src/ChainValidator/XyoValidator.ts +29 -34
  117. package/src/Election/BaseElectionService.ts +5 -4
  118. package/src/NetworkStakeStepReward/BaseNetworkStakeStepRewardService.ts +18 -18
  119. package/src/PendingTransactions/BasePendingTransactions.ts +15 -9
  120. package/src/Schemas/BaseSchemasService.ts +1 -1
  121. package/src/StakeIntent/XyoStakeIntentService.ts +24 -18
  122. package/src/StepStake/BaseStepStakeService.ts +2 -2
  123. package/src/Time/BaseTimeSyncService.ts +6 -16
  124. package/src/blockViewerFromChainIteratorAndArchivist.ts +20 -1
  125. package/src/implementation/accountBalance.ts +29 -0
  126. package/src/implementation/blockViewer.ts +29 -0
  127. package/src/implementation/chain/evm.ts +39 -0
  128. package/src/implementation/chain/index.ts +46 -0
  129. package/src/implementation/evm/index.ts +1 -0
  130. package/src/implementation/evm/initChainId.ts +20 -0
  131. package/src/implementation/evm/initEvmProvider.ts +24 -0
  132. package/src/implementation/evm/initInfuraProvider.ts +26 -0
  133. package/src/implementation/evm/initJsonRpcProvider.ts +20 -0
  134. package/src/implementation/head/createBootstrapHead.ts +31 -0
  135. package/src/implementation/head/createForkedHead/config/getBridgeDestinationDetails.ts +27 -0
  136. package/src/implementation/head/createForkedHead/config/getBridgeSourceDetails.ts +19 -0
  137. package/src/implementation/head/createForkedHead/config/getForkDetails.ts +10 -0
  138. package/src/implementation/head/createForkedHead/config/index.ts +3 -0
  139. package/src/implementation/head/createForkedHead/createForkedHead.ts +29 -0
  140. package/src/implementation/head/createForkedHead/getBridgeDestinationObservation.ts +42 -0
  141. package/src/implementation/head/createForkedHead/getBridgeIntent.ts +51 -0
  142. package/src/implementation/head/createForkedHead/getBridgeSourceObservation.ts +46 -0
  143. package/src/implementation/head/createForkedHead/getFirstBlockForNewChain.ts +41 -0
  144. package/src/implementation/head/createForkedHead/index.ts +1 -0
  145. package/src/implementation/head/getForkFromBlock.ts +43 -0
  146. package/src/implementation/head/head.ts +49 -0
  147. package/src/implementation/head/index.ts +1 -0
  148. package/src/implementation/head/submitNewChain.ts +27 -0
  149. package/src/implementation/index.ts +12 -0
  150. package/src/implementation/mempoolRunner.ts +29 -0
  151. package/src/implementation/mempoolViewer.ts +29 -0
  152. package/src/implementation/pendingTransactions.ts +36 -0
  153. package/src/implementation/producer.ts +16 -0
  154. package/src/implementation/reward.ts +53 -0
  155. package/src/implementation/time.ts +26 -0
  156. package/src/implementation/validator.ts +15 -0
  157. package/src/index.ts +2 -2
  158. package/src/simple/block/index.ts +1 -0
  159. package/src/{BlockProducer/BaseBlockProducerService.ts → simple/block/runner/SimpleBlockRunner.ts} +111 -74
  160. package/src/simple/block/runner/index.ts +1 -0
  161. package/src/simple/block/runner/spec/SimpleBlockRewardViewer.ts +413 -0
  162. package/src/simple/index.ts +1 -0
  163. package/dist/neutral/AccountBalance/BaseAccountBalanceService.d.ts +0 -36
  164. package/dist/neutral/AccountBalance/BaseAccountBalanceService.d.ts.map +0 -1
  165. package/dist/neutral/AccountTransfers/BaseAccountTransfersService.d.ts +0 -13
  166. package/dist/neutral/AccountTransfers/BaseAccountTransfersService.d.ts.map +0 -1
  167. package/dist/neutral/AccountTransfers/index.d.ts +0 -2
  168. package/dist/neutral/AccountTransfers/index.d.ts.map +0 -1
  169. package/dist/neutral/BlockProducer/BaseBlockProducerService.d.ts +0 -85
  170. package/dist/neutral/BlockProducer/BaseBlockProducerService.d.ts.map +0 -1
  171. package/dist/neutral/BlockProducer/generateTransactionFeeTransfers.d.ts.map +0 -1
  172. package/dist/neutral/BlockProducer/index.d.ts +0 -2
  173. package/dist/neutral/BlockProducer/index.d.ts.map +0 -1
  174. package/dist/neutral/BlockReward/BaseBlockRewardService.d.ts +0 -10
  175. package/dist/neutral/BlockReward/BaseBlockRewardService.d.ts.map +0 -1
  176. package/dist/neutral/BlockReward/EvmBlockRewardService.d.ts +0 -18
  177. package/dist/neutral/BlockReward/EvmBlockRewardService.d.ts.map +0 -1
  178. package/dist/neutral/BlockReward/MemoryBlockRewardService.d.ts +0 -23
  179. package/dist/neutral/BlockReward/MemoryBlockRewardService.d.ts.map +0 -1
  180. package/src/AccountBalance/BaseAccountBalanceService.ts +0 -100
  181. package/src/AccountTransfers/BaseAccountTransfersService.ts +0 -36
  182. package/src/AccountTransfers/index.ts +0 -1
  183. package/src/BlockProducer/index.ts +0 -1
  184. package/src/BlockReward/BaseBlockRewardService.ts +0 -17
  185. package/src/BlockReward/EvmBlockRewardService.ts +0 -49
  186. package/src/BlockReward/MemoryBlockRewardService.ts +0 -72
  187. /package/dist/neutral/{BlockProducer → simple/block/runner}/generateTransactionFeeTransfers.d.ts +0 -0
  188. /package/src/{BlockProducer → simple/block/runner}/generateTransactionFeeTransfers.ts +0 -0
@@ -0,0 +1,2 @@
1
+ export * from './runner/index.ts';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/simple/block/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA"}
@@ -0,0 +1,117 @@
1
+ import { AbstractCreatable, Address, CreatableParams, Hex, Promisable } from '@xylabs/sdk-js';
2
+ import { AccountInstance } from '@xyo-network/account-model';
3
+ import { ArchivistInstance } from '@xyo-network/archivist-model';
4
+ import { BlockRewardDiviner } from '@xyo-network/chain-modules';
5
+ import { WithHashMeta } from '@xyo-network/payload-model';
6
+ import { BlockBoundWitness, ChainId, ChainStakeIntent, SignedBlockBoundWitnessWithHashMeta, SignedHydratedBlockWithHashMeta, Transfer } from '@xyo-network/xl1-protocol';
7
+ import { AccountBalanceViewer, BlockRewardViewer, BlockRunner, Config, HydratedBlockStateValidationFunction, MempoolRunner, MempoolViewer, TimeSyncViewer } from '@xyo-network/xl1-protocol-sdk';
8
+ import z from 'zod';
9
+ /**
10
+ * The default block size for a block
11
+ */
12
+ export declare const DEFAULT_BLOCK_SIZE = 10;
13
+ /**
14
+ * The amount of time for which a producer will restake their intent
15
+ */
16
+ export declare const XYO_PRODUCER_REDECLARATION_DURATION = 10000;
17
+ /**
18
+ * The number of blocks within which a producer will redeclare
19
+ * their intent to produce blocks
20
+ */
21
+ export declare const XYO_PRODUCER_REDECLARATION_WINDOW = 500;
22
+ export declare const SimpleBlockRunnerParamsZod: z.ZodObject<{
23
+ balanceViewer: z.ZodObject<{}, z.z.core.$loose>;
24
+ blockRewardViewer: z.ZodObject<{}, z.z.core.$loose>;
25
+ chainId: z.ZodString;
26
+ config: z.ZodObject<{}, z.z.core.$loose>;
27
+ mempoolViewer: z.ZodObject<{}, z.z.core.$loose>;
28
+ mempoolRunner: z.ZodObject<{}, z.z.core.$loose>;
29
+ rejectedTransactionsArchivist: z.ZodOptional<z.ZodObject<{}, z.z.core.$loose>>;
30
+ rewardAddress: z.ZodPipe<z.ZodString, z.ZodTransform<Address, string>>;
31
+ time: z.ZodObject<{}, z.z.core.$loose>;
32
+ validateHydratedBlockState: z.ZodOptional<z.ZodFunction<z.z.core.$ZodFunctionArgs, z.z.core.$ZodFunctionOut>>;
33
+ }, z.z.core.$strip>;
34
+ export type SimpleBlockRunnerParams = CreatableParams & {
35
+ account: AccountInstance;
36
+ balanceViewer: AccountBalanceViewer;
37
+ blockRewardViewer: BlockRewardViewer;
38
+ chainId: ChainId;
39
+ config: Config;
40
+ mempoolRunner: MempoolRunner;
41
+ mempoolViewer: MempoolViewer;
42
+ rejectedTransactionsArchivist?: ArchivistInstance;
43
+ rewardAddress: Address;
44
+ time: TimeSyncViewer;
45
+ validateHydratedBlockState?: HydratedBlockStateValidationFunction;
46
+ };
47
+ export declare class SimpleBlockRunner extends AbstractCreatable<SimpleBlockRunnerParams> implements BlockRunner {
48
+ protected _blockRewardDiviner: BlockRewardDiviner | undefined;
49
+ protected _lastRedeclarationBlock: number | undefined;
50
+ protected _rejectedTransactionsArchivist: ArchivistInstance | undefined;
51
+ /**
52
+ * The default block size for a block
53
+ */
54
+ static get DefaultBlockSize(): number;
55
+ /**
56
+ * The amount of time for which the producer will redeclare
57
+ * their intent to continue producing blocks
58
+ */
59
+ static get RedeclarationDuration(): number;
60
+ /**
61
+ * The number of blocks within which the producer will redeclare
62
+ * their intent to continue producing blocks
63
+ */
64
+ static get RedeclarationWindow(): number;
65
+ get address(): Address;
66
+ protected get account(): AccountInstance;
67
+ protected get balanceViewer(): AccountBalanceViewer;
68
+ protected get blockRewardViewer(): BlockRewardViewer;
69
+ protected get chainId(): Hex;
70
+ protected get mempoolRunner(): MempoolRunner;
71
+ protected get mempoolViewer(): MempoolViewer;
72
+ protected get rejectedTransactionsArchivist(): ArchivistInstance<import("@xyo-network/archivist-model").ArchivistParams<import("@xyo-network/module-model").AnyConfigSchema<import("@xyo-network/archivist-model").ArchivistConfig>>, import("@xyo-network/archivist-model").ArchivistModuleEventData, import("@xyo-network/payload-model").Payload>;
73
+ protected get rewardAddress(): Address;
74
+ protected get time(): TimeSyncViewer;
75
+ static paramsHandler(params?: Partial<SimpleBlockRunnerParams> | undefined): Promise<SimpleBlockRunnerParams>;
76
+ next(head: WithHashMeta<BlockBoundWitness>): Promise<SignedHydratedBlockWithHashMeta | undefined>;
77
+ produceNextBlock(head: SignedBlockBoundWitnessWithHashMeta, force: true): Promise<SignedHydratedBlockWithHashMeta>;
78
+ produceNextBlock(head: SignedBlockBoundWitnessWithHashMeta, force?: false): Promise<SignedHydratedBlockWithHashMeta | undefined>;
79
+ protected getBlockRewardTransfers(block: number): Promise<Transfer[]>;
80
+ /**
81
+ * Handles the producer redeclaration logic
82
+ * @param head The current head block
83
+ * @returns chain stake intent for the producer redeclaration, or undefined if no redeclaration is needed
84
+ */
85
+ protected getProducerRedeclaration(head: WithHashMeta<BlockBoundWitness>): Promisable<ChainStakeIntent | undefined>;
86
+ protected proposeNextValidBlock(head: WithHashMeta<BlockBoundWitness>, validateBalances?: boolean, force?: boolean): Promise<[{
87
+ schema: "network.xyo.boundwitness";
88
+ addresses: Address[];
89
+ payload_hashes: import("@xylabs/sdk-js").Hash[];
90
+ payload_schemas: string[];
91
+ previous_hashes: (import("@xylabs/sdk-js").Hash | null)[];
92
+ $signatures: Hex[];
93
+ block: import("@xyo-network/xl1-protocol").XL1BlockNumber;
94
+ chain: Hex;
95
+ previous: import("@xylabs/sdk-js").Hash | null;
96
+ $epoch: number;
97
+ _hash: import("@xylabs/sdk-js").Hash;
98
+ _dataHash: import("@xylabs/sdk-js").Hash;
99
+ $destination?: Address | undefined;
100
+ $sourceQuery?: import("@xylabs/sdk-js").Hash | undefined;
101
+ protocol?: number | undefined;
102
+ step_hashes?: import("@xylabs/sdk-js").Hash[] | undefined;
103
+ }, {
104
+ schema: string;
105
+ _hash: import("@xylabs/sdk-js").Hash;
106
+ _dataHash: import("@xylabs/sdk-js").Hash;
107
+ }[]] | undefined>;
108
+ private filterByFunded;
109
+ private generateTimePayload;
110
+ /**
111
+ * Check if a heartbeat block is required based on network activity.
112
+ * @param head The current head block
113
+ * @returns True if a heartbeat is required, false otherwise
114
+ */
115
+ private heartbeatRequired;
116
+ }
117
+ //# sourceMappingURL=SimpleBlockRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SimpleBlockRunner.d.ts","sourceRoot":"","sources":["../../../../../src/simple/block/runner/SimpleBlockRunner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateTransactionFeeTransfers.d.ts","sourceRoot":"","sources":["../../../../../src/simple/block/runner/generateTransactionFeeTransfers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAiB,MAAM,gBAAgB,CAAA;AAG5D,OAAO,KAAK,EACV,yBAAyB,EACzB,QAAQ,EAET,MAAM,2BAA2B,CAAA;AAKlC,wBAAsB,+BAA+B,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CA0CtI"}
@@ -0,0 +1,2 @@
1
+ export * from './SimpleBlockRunner.ts';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/simple/block/runner/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA"}
@@ -0,0 +1,2 @@
1
+ import '@xylabs/vitest-extended';
2
+ //# sourceMappingURL=SimpleBlockRewardViewer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SimpleBlockRewardViewer.d.ts","sourceRoot":"","sources":["../../../../../../src/simple/block/runner/spec/SimpleBlockRewardViewer.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './block/index.ts';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/simple/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "http://json.schemastore.org/package.json",
3
3
  "name": "@xyo-network/chain-services",
4
- "version": "1.16.26",
4
+ "version": "1.17.1",
5
5
  "description": "XYO Layer One SDK Services",
6
6
  "homepage": "https://xylabs.com",
7
7
  "bugs": {
@@ -40,44 +40,47 @@
40
40
  ],
41
41
  "dependencies": {
42
42
  "@opentelemetry/api": "~1.9.0",
43
- "@xylabs/sdk-js": "~5.0.46",
44
- "@xylabs/telemetry": "~5.0.46",
45
- "@xyo-network/account-model": "~5.2.10",
46
- "@xyo-network/archivist-memory": "~5.2.10",
47
- "@xyo-network/archivist-model": "~5.2.10",
48
- "@xyo-network/boundwitness-model": "~5.2.10",
49
- "@xyo-network/boundwitness-validator": "~5.2.10",
50
- "@xyo-network/boundwitness-wrapper": "~5.2.10",
51
- "@xyo-network/chain-analyze": "~1.16.26",
52
- "@xyo-network/chain-modules": "~1.16.26",
53
- "@xyo-network/chain-protocol": "~1.16.26",
54
- "@xyo-network/chain-utils": "~1.16.26",
55
- "@xyo-network/payload-builder": "~5.2.10",
56
- "@xyo-network/payload-model": "~5.2.10",
43
+ "@xylabs/sdk-js": "~5.0.48",
44
+ "@xylabs/telemetry": "~5.0.48",
45
+ "@xyo-network/account-model": "~5.2.13",
46
+ "@xyo-network/archivist-memory": "~5.2.13",
47
+ "@xyo-network/archivist-model": "~5.2.13",
48
+ "@xyo-network/boundwitness-model": "~5.2.13",
49
+ "@xyo-network/boundwitness-validator": "~5.2.13",
50
+ "@xyo-network/boundwitness-wrapper": "~5.2.13",
51
+ "@xyo-network/chain-analyze": "~1.17.1",
52
+ "@xyo-network/chain-modules": "~1.17.1",
53
+ "@xyo-network/chain-protocol": "~1.17.1",
54
+ "@xyo-network/chain-utils": "~1.17.1",
55
+ "@xyo-network/payload-builder": "~5.2.13",
56
+ "@xyo-network/payload-model": "~5.2.13",
57
57
  "@xyo-network/typechain": "~4.0.10",
58
- "@xyo-network/xl1-protocol": "~1.14.15",
59
- "@xyo-network/xl1-protocol-sdk": "~1.16.26",
60
- "@xyo-network/xl1-validation": "~1.16.26",
61
- "@xyo-network/xl1-wrappers": "~1.16.26",
58
+ "@xyo-network/xl1-protocol": "~1.14.16",
59
+ "@xyo-network/xl1-protocol-sdk": "~1.17.1",
60
+ "@xyo-network/xl1-rpc": "~1.17.1",
61
+ "@xyo-network/xl1-validation": "~1.17.1",
62
+ "@xyo-network/xl1-wrappers": "~1.17.1",
62
63
  "async-mutex": "~0.5.0",
63
64
  "ethers": "6.15.0",
64
- "lru-cache": "~11.2.2",
65
+ "lru-cache": "~11.2.4",
65
66
  "zod": "~4.1.13"
66
67
  },
67
68
  "devDependencies": {
68
69
  "@types/node": "~24.10.1",
69
- "@xylabs/sdk-js": "~5.0.46",
70
+ "@xylabs/sdk-js": "~5.0.48",
70
71
  "@xylabs/ts-scripts-yarn3": "~7.2.8",
71
72
  "@xylabs/tsconfig": "~7.2.8",
72
- "@xylabs/vitest-extended": "~5.0.46",
73
- "@xyo-network/account": "~5.2.10",
74
- "@xyo-network/account-model": "~5.2.10",
75
- "@xyo-network/chain-validation": "~1.16.26",
76
- "@xyo-network/wallet": "~5.2.10",
73
+ "@xylabs/vitest-extended": "~5.0.48",
74
+ "@xyo-network/account": "~5.2.13",
75
+ "@xyo-network/account-model": "~5.2.13",
76
+ "@xyo-network/chain-validation": "~1.17.1",
77
+ "@xyo-network/wallet": "~5.2.13",
78
+ "@xyo-network/wallet-model": "~5.2.13",
79
+ "cosmiconfig": "^9.0.0",
77
80
  "eslint": "^9.39.1",
78
81
  "tslib": "~2.8.1",
79
82
  "typescript": "~5.9.3",
80
- "vitest": "~4.0.13",
83
+ "vitest": "~4.0.15",
81
84
  "vitest-mock-extended": "~3.1.0",
82
85
  "web3-types": "~1.10.0"
83
86
  },
@@ -1,18 +1,21 @@
1
1
  import type { Hash } from '@xylabs/sdk-js'
2
2
  import { assertEx } from '@xylabs/sdk-js'
3
3
  import type { ReadArchivist } from '@xyo-network/archivist-model'
4
- import { findMostRecentBlock } from '@xyo-network/chain-protocol'
5
4
  import type { Payload, WithStorageMeta } from '@xyo-network/payload-model'
6
5
  import type { ChainId } from '@xyo-network/xl1-protocol'
7
6
  import { StepSizes } from '@xyo-network/xl1-protocol'
8
- import type { AccountBalanceViewer, BalancesStepSummary } from '@xyo-network/xl1-protocol-sdk'
9
- import { LruCacheMap, readPayloadMapFromStore } from '@xyo-network/xl1-protocol-sdk'
7
+ import type {
8
+ AccountBalanceViewer, BalancesStepSummary, SimpleAccountBalanceViewerParams, SimpleBlockViewerParams, TransfersStepSummary,
9
+ } from '@xyo-network/xl1-protocol-sdk'
10
+ import {
11
+ findMostRecentBlock, LruCacheMap, readPayloadMapFromStore,
12
+ SimpleAccountBalanceViewer,
13
+ SimpleBlockViewer,
14
+ } from '@xyo-network/xl1-protocol-sdk'
10
15
  import { Semaphore } from 'async-mutex'
11
16
 
12
- import { BaseAccountBalanceService } from './BaseAccountBalanceService.ts'
13
-
14
17
  // this is intended to only be used for testing
15
- export const accountBalancesServiceFromArchivist = async (
18
+ export const accountBalancesViewerFromArchivist = async (
16
19
  chainId: ChainId,
17
20
  archivist: ReadArchivist<WithStorageMeta<Payload>>,
18
21
  ): Promise<AccountBalanceViewer> => {
@@ -22,12 +25,21 @@ export const accountBalancesServiceFromArchivist = async (
22
25
  noDisposeOnSet: false,
23
26
  updateAgeOnGet: true,
24
27
  })
28
+
29
+ const transferSummaryMap = new LruCacheMap<string, TransfersStepSummary>({
30
+ max: 100_000,
31
+ allowStale: true,
32
+ noDisposeOnSet: false,
33
+ updateAgeOnGet: true,
34
+ })
35
+
25
36
  const chainMap = readPayloadMapFromStore<WithStorageMeta<Payload>>(archivist)
26
37
  const headFunc = async (): Promise<[Hash, number]> => {
27
- const head = await findMostRecentBlock(archivist)
28
- return [assertEx(head?._hash, () => 'No head found in chainArchivist'), assertEx(head?.block, () => 'No head found in chainArchivist')]
38
+ const head = assertEx(await findMostRecentBlock(archivist), () => 'No blocks found in chainArchivist')
39
+ return [head._hash, head.block]
29
40
  }
30
- const service = await BaseAccountBalanceService.create({
41
+
42
+ const service = await SimpleAccountBalanceViewer.create({
31
43
  context: {
32
44
  chainId,
33
45
  store: { chainMap },
@@ -35,6 +47,22 @@ export const accountBalancesServiceFromArchivist = async (
35
47
  summaryMap,
36
48
  head: headFunc,
37
49
  },
38
- })
50
+ transfersSummaryContext: {
51
+ chainId,
52
+ store: { chainMap },
53
+ stepSemaphores: StepSizes.map(() => new Semaphore(20)),
54
+ summaryMap: transferSummaryMap,
55
+ head: headFunc,
56
+
57
+ },
58
+ blockViewer: await SimpleBlockViewer.create({
59
+ context: {
60
+ chainId,
61
+ head: headFunc,
62
+ store: { chainMap },
63
+ },
64
+ finalizedArchivist: archivist,
65
+ } satisfies SimpleBlockViewerParams),
66
+ } satisfies SimpleAccountBalanceViewerParams)
39
67
  return service
40
68
  }
@@ -1,2 +1 @@
1
1
  export * from './accountBalanceServiceFromArchivist.ts'
2
- export * from './BaseAccountBalanceService.ts'
@@ -1,6 +1,5 @@
1
1
  import type { EventData, Promisable } from '@xylabs/sdk-js'
2
2
  import { AbstractCreatable, creatable } from '@xylabs/sdk-js'
3
- import { spanRoot, spanRootAsync } from '@xylabs/telemetry'
4
3
  import { Mutex } from 'async-mutex'
5
4
 
6
5
  import type { BaseAccountableServiceParams, BaseServiceParams } from './model/index.ts'
@@ -24,18 +23,6 @@ export class BaseService<TParams extends BaseServiceParams = BaseServiceParams,
24
23
  return await this.create(params) as TService
25
24
  })
26
25
  }
27
-
28
- paramsHandler(params?: Partial<TParams>): TParams {
29
- return params as TParams
30
- }
31
-
32
- span<T>(name: string, fn: () => T): T {
33
- return spanRoot(name, fn, this.tracer)
34
- }
35
-
36
- async spanAsync<T>(name: string, fn: () => Promise<T>): Promise<T> {
37
- return await spanRootAsync(name, fn, this.tracer)
38
- }
39
26
  }
40
27
 
41
28
  export abstract class BaseAccountableService<
@@ -0,0 +1,50 @@
1
+ import {
2
+ AbstractCreatable,
3
+ assertEx, creatable, CreatableParams, toEthAddress,
4
+ } from '@xylabs/sdk-js'
5
+ import { XyoChainRewards__factory as XyoChainRewardsFactory } from '@xyo-network/typechain'
6
+ import {
7
+ asAttoXL1, AttoXL1, XL1BlockNumber,
8
+ } from '@xyo-network/xl1-protocol'
9
+ import {
10
+ BlockRewardViewer,
11
+ ChainContractViewer,
12
+ } from '@xyo-network/xl1-protocol-sdk'
13
+ import { Provider } from 'ethers/providers'
14
+
15
+ export interface EvmBlockRewardViewerParams extends CreatableParams {
16
+ chainContractViewer: ChainContractViewer
17
+ provider: Provider
18
+ }
19
+
20
+ @creatable()
21
+ export class EvmBlockRewardViewer extends AbstractCreatable<EvmBlockRewardViewerParams> implements BlockRewardViewer {
22
+ protected _contractAddress: string | undefined
23
+
24
+ protected get chainContractViewer() {
25
+ return assertEx(this.params.chainContractViewer, () => 'chainContractViewer is required')
26
+ }
27
+
28
+ protected get contractAddress() {
29
+ return assertEx(this._contractAddress, () => 'contractAddress is required')
30
+ }
31
+
32
+ protected get provider() {
33
+ return assertEx(this.params.provider, () => 'provider is required')
34
+ }
35
+
36
+ async allowedRewardForBlock(blockNumber: XL1BlockNumber): Promise<AttoXL1> {
37
+ const contract = XyoChainRewardsFactory.connect(toEthAddress(this.contractAddress), this.provider)
38
+ return asAttoXL1(await contract.calcBlockReward(blockNumber))
39
+ }
40
+
41
+ override async createHandler() {
42
+ await super.createHandler()
43
+ try {
44
+ this._contractAddress = await this.chainContractViewer.rewardsContract()
45
+ } catch (ex) {
46
+ const error = ex as Error
47
+ throw new Error(`Failed to get rewards contract address: ${error.message}`)
48
+ }
49
+ }
50
+ }
@@ -1,3 +1 @@
1
- export * from './BaseBlockRewardService.ts'
2
- export * from './EvmBlockRewardService.ts'
3
- export * from './MemoryBlockRewardService.ts'
1
+ export * from './EvmBlockRewardViewer.ts'
@@ -1,24 +1,34 @@
1
- import type { Hex } from '@xylabs/sdk-js'
1
+ import type {
2
+ Hash, Hex, Promisable,
3
+ } from '@xylabs/sdk-js'
2
4
  import {
3
5
  assertEx,
4
6
  isDefined, isNull, isUndefined,
5
7
  } from '@xylabs/sdk-js'
6
8
  import { PayloadBuilder } from '@xyo-network/payload-builder'
7
- import type { Payload, WithStorageMeta } from '@xyo-network/payload-model'
8
- import type { BlockBoundWitness } from '@xyo-network/xl1-protocol'
9
+ import type {
10
+ Payload, WithHashMeta, WithStorageMeta,
11
+ } from '@xyo-network/payload-model'
12
+ import type {
13
+ BlockBoundWitness, SignedHydratedBlockWithHashMeta, XL1BlockNumber,
14
+ } from '@xyo-network/xl1-protocol'
9
15
  import {
10
- asBlockBoundWitness, asBlockBoundWitnessWithStorageMeta, isBlockBoundWitnessWithHashMeta,
16
+ asBlockBoundWitness, asBlockBoundWitnessWithStorageMeta, asSignedHydratedBlockWithHashMeta, asXL1BlockNumber, isBlockBoundWitnessWithHashMeta,
11
17
  } from '@xyo-network/xl1-protocol'
12
18
  import type {
13
- ChainIteratorServiceEventData, EventingChainBlockNumberIteratorService, PayloadMapRead,
19
+ BlockViewer,
20
+ ChainIteratorServiceEventData,
21
+ ChainStoreRead,
22
+ PayloadMapRead,
14
23
  } from '@xyo-network/xl1-protocol-sdk'
24
+ import { hydrateBlock } from '@xyo-network/xl1-protocol-sdk'
15
25
  import { LRUCache } from 'lru-cache'
16
26
 
17
27
  import { BaseService } from '../BaseService.ts'
18
28
  import type { XyoChainIteratorParams } from './model/index.ts'
19
29
 
20
30
  export class ChainBlockNumberIterationService extends BaseService<XyoChainIteratorParams, ChainIteratorServiceEventData>
21
- implements EventingChainBlockNumberIteratorService {
31
+ implements BlockViewer {
22
32
  protected _blocksByBlockNumber = new LRUCache<number, WithStorageMeta<BlockBoundWitness>>({ max: 10_000 })
23
33
  protected _currentHead: WithStorageMeta<BlockBoundWitness> | undefined
24
34
 
@@ -26,6 +36,56 @@ export class ChainBlockNumberIterationService extends BaseService<XyoChainIterat
26
36
 
27
37
  get chainMap(): PayloadMapRead<WithStorageMeta<Payload>> { return assertEx(this.params.chainMap) }
28
38
 
39
+ get chainStoreRead() {
40
+ return { chainMap: this.chainMap } satisfies ChainStoreRead
41
+ }
42
+
43
+ async blockByHash(hash: Hash): Promise<SignedHydratedBlockWithHashMeta | null> {
44
+ return asSignedHydratedBlockWithHashMeta(await hydrateBlock(this.chainStoreRead, hash)) ?? null
45
+ }
46
+
47
+ async blockByNumber(block: XL1BlockNumber): Promise<SignedHydratedBlockWithHashMeta | null> {
48
+ return asSignedHydratedBlockWithHashMeta(await this.get(block)) ?? null
49
+ }
50
+
51
+ async blocksByHash(hash: Hash, limit: number = 100): Promise<SignedHydratedBlockWithHashMeta[]> {
52
+ const results: SignedHydratedBlockWithHashMeta[] = []
53
+ let currentBlock = await this.blockByHash(hash)
54
+ while (currentBlock !== null && (isUndefined(limit) || results.length < limit)) {
55
+ results.push(currentBlock)
56
+ const previousHash = currentBlock[0].previous
57
+ if (isNull(previousHash)) break
58
+ currentBlock = await this.blockByHash(previousHash)
59
+ }
60
+ return results
61
+ }
62
+
63
+ async blocksByNumber(blockNumber: XL1BlockNumber, limit: number = 100): Promise<SignedHydratedBlockWithHashMeta[]> {
64
+ const results: SignedHydratedBlockWithHashMeta[] = []
65
+ let currentBlock = await this.blockByNumber(blockNumber)
66
+ while (currentBlock !== null && (isUndefined(limit) || results.length < limit)) {
67
+ results.push(currentBlock)
68
+ if (currentBlock[0].block === 0) break
69
+ const previousNumber = asXL1BlockNumber(currentBlock[0].block - 1, true)
70
+ currentBlock = await this.blockByNumber(previousNumber)
71
+ }
72
+ return results
73
+ }
74
+
75
+ async currentBlock(): Promise<SignedHydratedBlockWithHashMeta> {
76
+ return assertEx(await this.blockByHash(await this.currentBlockHash()), () => 'Current block not found')
77
+ }
78
+
79
+ async currentBlockHash(): Promise<Hash> {
80
+ const head = assertEx(await this.head(), () => 'Head is not set')
81
+ return head._hash
82
+ }
83
+
84
+ async currentBlockNumber(): Promise<XL1BlockNumber> {
85
+ const head = assertEx(await this.head(), () => 'Head is not set')
86
+ return head.block
87
+ }
88
+
29
89
  async get(block: number): Promise<WithStorageMeta<BlockBoundWitness>> {
30
90
  const head = await this.head()
31
91
  // if(isUndefined(head)) return undefined
@@ -68,6 +128,14 @@ export class ChainBlockNumberIterationService extends BaseService<XyoChainIterat
68
128
  return await this.get(nextBlockNumber)
69
129
  }
70
130
 
131
+ payloadByHash(_hash: Hash): Promisable<WithHashMeta<Payload> | null> {
132
+ throw new Error('Method [payloadByHash] not implemented.')
133
+ }
134
+
135
+ payloadsByHash(_hashes: Hash[]): Promisable<WithHashMeta<Payload>[]> {
136
+ throw new Error('Method [payloadsByHash] not implemented.')
137
+ }
138
+
71
139
  // TODO: Decide on inclusive/exclusive (probably need inclusive to account for chain head)
72
140
  // and then communicate via method name and documentation
73
141
  async previous(block: number | undefined = undefined, count: number = 1): Promise<WithStorageMeta<BlockBoundWitness>[]> {