@xyo-network/xl1-protocol-sdk 1.26.12 → 1.26.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. package/dist/neutral/simple/accountBalance/SimpleAccountBalanceViewer.d.ts +2 -2
  2. package/dist/neutral/simple/block/SimpleBlockViewer.d.ts +2 -2
  3. package/dist/neutral/simple/datalake/SimpleDataLakeRunner.d.ts +1 -1
  4. package/dist/neutral/simple/finalization/SimpleFinalizationViewer.d.ts +1 -1
  5. package/dist/neutral/simple/windowedBlock/SimpleWindowedBlockViewer.d.ts +10 -10
  6. package/dist/neutral/transaction/TransactionBuilder.d.ts +4 -4
  7. package/dist/neutral/transaction/signTransaction.d.ts +1 -1
  8. package/package.json +24 -14
  9. package/src/ChainContextHelpers.ts +0 -50
  10. package/src/CreatableProvider/AbstractCreatableProvider.ts +0 -97
  11. package/src/CreatableProvider/CreatableProvider.ts +0 -102
  12. package/src/CreatableProvider/CreatableProviderRegistry.ts +0 -94
  13. package/src/CreatableProvider/GetInstanceOptions.ts +0 -11
  14. package/src/CreatableProvider/LabeledCreatableProviderFactory.ts +0 -24
  15. package/src/CreatableProvider/ProviderFactory.ts +0 -138
  16. package/src/CreatableProvider/ProviderFactoryLocator.ts +0 -170
  17. package/src/CreatableProvider/ProviderFactoryLocatorInstance.ts +0 -70
  18. package/src/CreatableProvider/index.ts +0 -8
  19. package/src/SignedBigInt.ts +0 -59
  20. package/src/_internal/context/getTestProviderContext.ts +0 -13
  21. package/src/_internal/context/index.ts +0 -1
  22. package/src/_internal/index.ts +0 -2
  23. package/src/actor/ActorV3.ts +0 -177
  24. package/src/actor/index.ts +0 -1
  25. package/src/amount/ShiftedBigInt.ts +0 -73
  26. package/src/amount/XL1Amount.ts +0 -103
  27. package/src/amount/index.ts +0 -4
  28. package/src/amount/splitOnDecimal.ts +0 -6
  29. package/src/amount/splitOnDecimalToString.ts +0 -40
  30. package/src/block/hydrate/allHashesPresent.ts +0 -8
  31. package/src/block/hydrate/blockPayloadsFromHydratedBlock.ts +0 -12
  32. package/src/block/hydrate/flattenHydratedBlock.ts +0 -28
  33. package/src/block/hydrate/flattenHydratedBlocks.ts +0 -7
  34. package/src/block/hydrate/hydrateBlock.ts +0 -43
  35. package/src/block/hydrate/index.ts +0 -7
  36. package/src/block/hydrate/transactionsFromHydratedBlock.ts +0 -7
  37. package/src/block/hydrate/tryHydrateBlock.ts +0 -26
  38. package/src/block/index.ts +0 -2
  39. package/src/block/primitives/blockFromBlockNumber.ts +0 -69
  40. package/src/block/primitives/frames/calculateFramesFromRange.ts +0 -30
  41. package/src/block/primitives/frames/deepCalculateFramesFromRange.ts +0 -28
  42. package/src/block/primitives/frames/index.ts +0 -2
  43. package/src/block/primitives/hashFromBlockNumber.ts +0 -9
  44. package/src/block/primitives/index.ts +0 -7
  45. package/src/block/primitives/model.ts +0 -18
  46. package/src/block/primitives/payloads/ChainWindow.ts +0 -7
  47. package/src/block/primitives/payloads/index.ts +0 -1
  48. package/src/block/primitives/toStepIdentityString.ts +0 -6
  49. package/src/block/primitives/validateTransactionOpcodes.ts +0 -45
  50. package/src/config/Actor.ts +0 -32
  51. package/src/config/Actors.ts +0 -9
  52. package/src/config/Base.ts +0 -27
  53. package/src/config/Chain.ts +0 -23
  54. package/src/config/Config.ts +0 -24
  55. package/src/config/DataLake/DataLake.ts +0 -12
  56. package/src/config/DataLake/DataLakeRemoteConfig.ts +0 -11
  57. package/src/config/DataLake/RestDataLakeConfig.ts +0 -18
  58. package/src/config/DataLake/RouterDataLakeConfig.ts +0 -22
  59. package/src/config/DataLake/index.ts +0 -4
  60. package/src/config/DeepPartial.ts +0 -4
  61. package/src/config/Evm.ts +0 -38
  62. package/src/config/HostActor.ts +0 -32
  63. package/src/config/Log.ts +0 -25
  64. package/src/config/Provider.ts +0 -20
  65. package/src/config/Providers.ts +0 -9
  66. package/src/config/Remote.ts +0 -59
  67. package/src/config/Telemetry.ts +0 -49
  68. package/src/config/UsageMeta.ts +0 -46
  69. package/src/config/Validation.ts +0 -29
  70. package/src/config/index.ts +0 -12
  71. package/src/config/storage/Storage.ts +0 -16
  72. package/src/config/storage/driver/Mongo.ts +0 -53
  73. package/src/config/storage/driver/index.ts +0 -1
  74. package/src/config/storage/index.ts +0 -2
  75. package/src/constants.ts +0 -4
  76. package/src/context/Actor.ts +0 -20
  77. package/src/context/HostActor.ts +0 -20
  78. package/src/context/getEmptyProviderContext.ts +0 -19
  79. package/src/context/index.ts +0 -3
  80. package/src/createDeclarationPayload.ts +0 -15
  81. package/src/createTransferPayload.ts +0 -16
  82. package/src/driver/cache/LruCacheMap.ts +0 -48
  83. package/src/driver/cache/index.ts +0 -1
  84. package/src/driver/index.ts +0 -2
  85. package/src/driver/memory/MemoryMap.ts +0 -48
  86. package/src/driver/memory/index.ts +0 -1
  87. package/src/eip-712/Payloads/EIP712Data.ts +0 -35
  88. package/src/eip-712/Payloads/EIP712Signature.ts +0 -32
  89. package/src/eip-712/Payloads/index.ts +0 -2
  90. package/src/eip-712/Types.ts +0 -41
  91. package/src/eip-712/index.ts +0 -4
  92. package/src/eip-712/sign.ts +0 -19
  93. package/src/eip-712/spec/fixtures.ts +0 -27
  94. package/src/eip-712/verify.ts +0 -20
  95. package/src/getFileConfig.ts +0 -36
  96. package/src/index.ts +0 -27
  97. package/src/instances/Address.ts +0 -16
  98. package/src/instances/BoundWitness.ts +0 -13
  99. package/src/instances/Data.ts +0 -4
  100. package/src/instances/Fees.ts +0 -9
  101. package/src/instances/HydratedBoundWitness.ts +0 -16
  102. package/src/instances/Object.ts +0 -6
  103. package/src/instances/Payload.ts +0 -7
  104. package/src/instances/Signature.ts +0 -12
  105. package/src/instances/block/BlockFields.ts +0 -18
  106. package/src/instances/block/HydratedBlock.ts +0 -10
  107. package/src/instances/block/index.ts +0 -1
  108. package/src/instances/index.ts +0 -10
  109. package/src/instances/modifiers/BlockWindowInstance.ts +0 -8
  110. package/src/instances/modifiers/BlockWindowState.ts +0 -6
  111. package/src/instances/modifiers/Signed.ts +0 -9
  112. package/src/instances/modifiers/Validatable.ts +0 -6
  113. package/src/instances/modifiers/index.ts +0 -4
  114. package/src/instances/transaction/HydratedTransaction.ts +0 -9
  115. package/src/instances/transaction/TransactionFields.ts +0 -22
  116. package/src/instances/transaction/index.ts +0 -1
  117. package/src/isInternetAvailable.ts +0 -11
  118. package/src/model/ChainFork/ChainForkStatic.ts +0 -9
  119. package/src/model/ChainFork/index.ts +0 -1
  120. package/src/model/ChainIdentity.ts +0 -6
  121. package/src/model/ChainStore.ts +0 -16
  122. package/src/model/CreatableProviderContext.ts +0 -6
  123. package/src/model/CreatableProviderContext.zod.ts +0 -55
  124. package/src/model/PayloadBundle/bundledPayloadToHydratedBlock.ts +0 -15
  125. package/src/model/PayloadBundle/bundledPayloadToHydratedTransaction.ts +0 -15
  126. package/src/model/PayloadBundle/hydratedBlockToPayloadBundle.ts +0 -19
  127. package/src/model/PayloadBundle/hydratedTransactionToPayloadBundle.ts +0 -19
  128. package/src/model/PayloadBundle/index.ts +0 -4
  129. package/src/model/index.ts +0 -6
  130. package/src/multipliers.ts +0 -18
  131. package/src/payloads/AddressPairPayload.ts +0 -27
  132. package/src/payloads/index.ts +0 -4
  133. package/src/payloads/netBalancesForPayloads.ts +0 -24
  134. package/src/payloads/netSchemasForPayloads.ts +0 -24
  135. package/src/payloads/netTransfersForPayloads.ts +0 -27
  136. package/src/primitives/block/index.ts +0 -2
  137. package/src/primitives/block/range/blockRangeSteps.ts +0 -23
  138. package/src/primitives/block/range/index.ts +0 -1
  139. package/src/primitives/block/rate/blockRate.ts +0 -77
  140. package/src/primitives/block/rate/index.ts +0 -4
  141. package/src/primitives/block/rate/stepRate.ts +0 -37
  142. package/src/primitives/block/rate/timeHelpers.ts +0 -61
  143. package/src/primitives/block/rate/timeRate.ts +0 -121
  144. package/src/primitives/chain/getWindowedChain.ts +0 -50
  145. package/src/primitives/chain/index.ts +0 -3
  146. package/src/primitives/chain/step/chainStepRewardAddress.ts +0 -30
  147. package/src/primitives/chain/step/index.ts +0 -4
  148. package/src/primitives/chain/step/stepRewardBlock.ts +0 -13
  149. package/src/primitives/chain/step/stepRewardTotal.ts +0 -46
  150. package/src/primitives/chain/step/stepsRewardTotal.ts +0 -37
  151. package/src/primitives/chain/time/externalBlockNumberFromXL1BlockNumber.ts +0 -32
  152. package/src/primitives/chain/time/externalBlockRangeFromStep.ts +0 -21
  153. package/src/primitives/chain/time/externalBlockRangeFromXL1BlockRange.ts +0 -17
  154. package/src/primitives/chain/time/index.ts +0 -3
  155. package/src/primitives/datalake/addDataLakePayloads.ts +0 -18
  156. package/src/primitives/datalake/addDataLakePayloadsToPayloads.ts +0 -24
  157. package/src/primitives/datalake/index.ts +0 -2
  158. package/src/primitives/index.ts +0 -13
  159. package/src/primitives/mapToMapType.ts +0 -35
  160. package/src/primitives/payload/index.ts +0 -1
  161. package/src/primitives/payload/mergeTransfers.ts +0 -16
  162. package/src/primitives/readPayloadMapFromStore.ts +0 -58
  163. package/src/primitives/rewardFromBlockNumber.ts +0 -19
  164. package/src/primitives/rewards/index.ts +0 -1
  165. package/src/primitives/rewards/networkStakeStepRewardPositionWeight.ts +0 -26
  166. package/src/primitives/stake/activeStakeAtTimeByAddress.ts +0 -27
  167. package/src/primitives/stake/activeStakeAtTimeByPosition.ts +0 -25
  168. package/src/primitives/stake/allStakersForRange.ts +0 -32
  169. package/src/primitives/stake/allStakersForStep.ts +0 -24
  170. package/src/primitives/stake/index.ts +0 -6
  171. package/src/primitives/stake/mergedAddRemoveStakeEventsByPosition.ts +0 -15
  172. package/src/primitives/stake/mergedAddRemoveStakeEventsByStaker.ts +0 -17
  173. package/src/primitives/stake/weightedStakeForRangeByPosition.ts +0 -69
  174. package/src/primitives/state/findMostRecentBlock.ts +0 -44
  175. package/src/primitives/state/hydratedBlockByNumber.ts +0 -25
  176. package/src/primitives/state/index.ts +0 -2
  177. package/src/primitives/step/completedStepRewardAddress.ts +0 -10
  178. package/src/primitives/step/derivedReceiveAddress.ts +0 -9
  179. package/src/primitives/step/index.ts +0 -4
  180. package/src/primitives/step/stepBlockRange.ts +0 -9
  181. package/src/primitives/step/stepTransferIndex.ts +0 -19
  182. package/src/primitives/transaction/elevatedPayloads.ts +0 -24
  183. package/src/primitives/transaction/index.ts +0 -1
  184. package/src/primitives/uncle/findBestUncle.ts +0 -9
  185. package/src/primitives/uncle/findUncles.ts +0 -75
  186. package/src/primitives/uncle/index.ts +0 -3
  187. package/src/primitives/uncle/scoreUncle.ts +0 -7
  188. package/src/services/AccountTransfersService.ts +0 -13
  189. package/src/services/BlockProducerService.ts +0 -11
  190. package/src/services/Chain/BaseChainService.ts +0 -4
  191. package/src/services/Chain/ChainHeadService.ts +0 -8
  192. package/src/services/Chain/ChainService.ts +0 -6
  193. package/src/services/Chain/index.ts +0 -3
  194. package/src/services/Election.ts +0 -14
  195. package/src/services/NetworkStakeService.ts +0 -4
  196. package/src/services/Params.ts +0 -13
  197. package/src/services/PendingTransactionsService.ts +0 -7
  198. package/src/services/SchemasService.ts +0 -11
  199. package/src/services/StakeIntentService/ChainIndexingServiceStateSchema.ts +0 -50
  200. package/src/services/StakeIntentService/StakeIntentService.ts +0 -35
  201. package/src/services/StakeIntentService/index.ts +0 -2
  202. package/src/services/index.ts +0 -8
  203. package/src/simple/StakeEventsViewer/SimpleStakeEventsViewer.ts +0 -93
  204. package/src/simple/StakeEventsViewer/index.ts +0 -1
  205. package/src/simple/StakeTotalsViewer/SimpleStakeTotalsViewer.ts +0 -116
  206. package/src/simple/StakeTotalsViewer/index.ts +0 -1
  207. package/src/simple/StakeViewer/SimpleStakeViewer.ts +0 -164
  208. package/src/simple/StakeViewer/index.ts +0 -1
  209. package/src/simple/TransactionViewer/SimpleTransactionViewer.ts +0 -100
  210. package/src/simple/TransactionViewer/index.ts +0 -1
  211. package/src/simple/accountBalance/SimpleAccountBalanceViewer.ts +0 -271
  212. package/src/simple/accountBalance/index.ts +0 -1
  213. package/src/simple/block/SimpleBlockViewer.ts +0 -231
  214. package/src/simple/block/index.ts +0 -1
  215. package/src/simple/blockInvalidation/SimpleBlockInvalidationViewer.ts +0 -197
  216. package/src/simple/blockInvalidation/index.ts +0 -1
  217. package/src/simple/blockReward/SimpleBlockRewardViewer.ts +0 -27
  218. package/src/simple/blockReward/index.ts +0 -1
  219. package/src/simple/blockValidation/SimpleBlockValidationViewer.ts +0 -194
  220. package/src/simple/blockValidation/index.ts +0 -1
  221. package/src/simple/chainContractViewer/SimpleChainContractViewer.ts +0 -92
  222. package/src/simple/chainContractViewer/index.ts +0 -1
  223. package/src/simple/client/SimpleXyoClient.ts +0 -14
  224. package/src/simple/client/index.ts +0 -1
  225. package/src/simple/datalake/AbstractRestDataLake.ts +0 -70
  226. package/src/simple/datalake/AbstractSimpleDataLake.ts +0 -62
  227. package/src/simple/datalake/RestDataLakeRunner.ts +0 -54
  228. package/src/simple/datalake/RestDataLakeViewer.ts +0 -22
  229. package/src/simple/datalake/SimpleDataLakeRunner.ts +0 -44
  230. package/src/simple/datalake/SimpleDataLakeViewer.ts +0 -24
  231. package/src/simple/datalake/index.ts +0 -4
  232. package/src/simple/finalization/SimpleFinalizationRunner.ts +0 -45
  233. package/src/simple/finalization/SimpleFinalizationViewer.ts +0 -123
  234. package/src/simple/finalization/index.ts +0 -2
  235. package/src/simple/gateway/SimpleXyoGateway.ts +0 -30
  236. package/src/simple/gateway/SimpleXyoGatewayRunner.ts +0 -137
  237. package/src/simple/gateway/index.ts +0 -2
  238. package/src/simple/index.ts +0 -22
  239. package/src/simple/mempool/SimpleMempoolRunner.ts +0 -390
  240. package/src/simple/mempool/SimpleMempoolViewer.ts +0 -215
  241. package/src/simple/mempool/index.ts +0 -2
  242. package/src/simple/network/SimpleXyoNetwork.ts +0 -48
  243. package/src/simple/network/index.ts +0 -1
  244. package/src/simple/network/lib/FailedNetworkStatusPayloads.ts +0 -16
  245. package/src/simple/network/lib/StatusNetworks.ts +0 -32
  246. package/src/simple/network/lib/index.ts +0 -2
  247. package/src/simple/permissions/SimpleXyoPermissions.ts +0 -82
  248. package/src/simple/permissions/index.ts +0 -2
  249. package/src/simple/permissions/store/MemoryPermissions.ts +0 -32
  250. package/src/simple/permissions/store/PermissionsStore.ts +0 -17
  251. package/src/simple/permissions/store/index.ts +0 -2
  252. package/src/simple/runner/SimpleXyoRunner.ts +0 -41
  253. package/src/simple/runner/index.ts +0 -1
  254. package/src/simple/signer/SimpleXyoSigner.ts +0 -78
  255. package/src/simple/signer/index.ts +0 -1
  256. package/src/simple/timeSync2/SimpleTimeSyncViewer.ts +0 -132
  257. package/src/simple/timeSync2/index.ts +0 -1
  258. package/src/simple/transactionInvalidation/SimpleTransactionInvalidationViewer.ts +0 -197
  259. package/src/simple/transactionInvalidation/index.ts +0 -1
  260. package/src/simple/transactionValidation/SimpleTransactionValidationViewer.ts +0 -173
  261. package/src/simple/transactionValidation/index.ts +0 -1
  262. package/src/simple/windowedBlock/SimpleWindowedBlockViewer.ts +0 -207
  263. package/src/simple/windowedBlock/index.ts +0 -1
  264. package/src/status/RuntimeStatusMonitor.ts +0 -120
  265. package/src/status/ServiceStatus.ts +0 -21
  266. package/src/status/index.ts +0 -2
  267. package/src/summary/index.ts +0 -2
  268. package/src/summary/model/BalancesStepSummary.ts +0 -35
  269. package/src/summary/model/SchemasStepSummary.ts +0 -33
  270. package/src/summary/model/StepSummary.ts +0 -20
  271. package/src/summary/model/TransfersSummary.ts +0 -36
  272. package/src/summary/model/index.ts +0 -4
  273. package/src/summary/primitives/balances/balancesStepSummaryFromRange.ts +0 -94
  274. package/src/summary/primitives/balances/balancesSummary.ts +0 -48
  275. package/src/summary/primitives/balances/index.ts +0 -2
  276. package/src/summary/primitives/index.ts +0 -3
  277. package/src/summary/primitives/schemas/index.ts +0 -2
  278. package/src/summary/primitives/schemas/schemasStepSummaryFromRange.ts +0 -86
  279. package/src/summary/primitives/schemas/schemasSummary.ts +0 -44
  280. package/src/summary/primitives/transfers/index.ts +0 -2
  281. package/src/summary/primitives/transfers/transfersStepSummaryFromRange.ts +0 -109
  282. package/src/summary/primitives/transfers/transfersSummary.ts +0 -52
  283. package/src/test/BuildBlockOptions.ts +0 -81
  284. package/src/test/buildBlock.ts +0 -105
  285. package/src/test/buildGenesisBlock.ts +0 -29
  286. package/src/test/buildNextBlock.ts +0 -37
  287. package/src/test/buildRandomChain.ts +0 -92
  288. package/src/test/buildRandomGenesisBlock.ts +0 -47
  289. package/src/test/createGenesisBlock.ts +0 -41
  290. package/src/test/createProducerChainStakeIntentTransaction.ts +0 -48
  291. package/src/test/getSimpleBlockViewerLocator.ts +0 -41
  292. package/src/test/getTestProviderContext.ts +0 -8
  293. package/src/test/index.ts +0 -2
  294. package/src/time/index.ts +0 -1
  295. package/src/time/primitives/index.ts +0 -1
  296. package/src/time/primitives/xl1BlockNumberToEthBlockNumber.ts +0 -13
  297. package/src/transaction/TransactionBuilder.ts +0 -164
  298. package/src/transaction/buildRandomTransaction.ts +0 -38
  299. package/src/transaction/buildTransaction.ts +0 -68
  300. package/src/transaction/buildUnsignedTransaction.ts +0 -56
  301. package/src/transaction/confirmSubmittedTransaction.ts +0 -42
  302. package/src/transaction/hydrateTransaction.ts +0 -117
  303. package/src/transaction/index.ts +0 -9
  304. package/src/transaction/primitives/index.ts +0 -4
  305. package/src/transaction/primitives/transactionBlockByteCount.ts +0 -10
  306. package/src/transaction/primitives/transactionElevatedPayloads.ts +0 -18
  307. package/src/transaction/primitives/transactionOperations.ts +0 -13
  308. package/src/transaction/primitives/transactionRequiredGas.ts +0 -22
  309. package/src/transaction/script.ts +0 -48
  310. package/src/transaction/signTransaction.ts +0 -32
  311. package/src/utils/HydratedCache.ts +0 -39
  312. package/src/utils/index.ts +0 -2
  313. package/src/utils/isZodError.ts +0 -11
  314. package/src/validation/index.ts +0 -2
  315. package/src/validation/lib/getUrl.ts +0 -7
  316. package/src/validation/lib/index.ts +0 -2
  317. package/src/validation/lib/isLocalhost.ts +0 -9
  318. package/src/validation/schema/Address.ts +0 -2
  319. package/src/validation/schema/Mnemonic.ts +0 -21
  320. package/src/validation/schema/index.ts +0 -2
  321. package/src/wallet/generateXyoBaseWalletFromPhrase.ts +0 -13
  322. package/src/wallet/index.ts +0 -2
  323. package/src/wallet/paths.ts +0 -17
@@ -1,50 +0,0 @@
1
- import {
2
- assertEx, type Hash, isDefined, isNull,
3
- spanRootAsync,
4
- } from '@xylabs/sdk-js'
5
- import type {
6
- BaseContext, BlockViewer, SignedHydratedBlockWithHashMeta,
7
- } from '@xyo-network/xl1-protocol-lib'
8
-
9
- /**
10
- * Constructs a bounded, contiguous canonical chain ending at the current head.
11
- * @param blockViewer The BlockViewer to fetch blocks from
12
- * @param maxWindowSize The maximum size of the windowed chain
13
- * @param previousChain An optional previous chain to build upon
14
- * @returns A promise that resolves to the windowed chain of blocks
15
- */
16
- export async function getWindowedChain(
17
- context: BaseContext,
18
- blockViewer: BlockViewer,
19
- maxWindowSize: number,
20
- previousChain: SignedHydratedBlockWithHashMeta[] = [],
21
- ):
22
- Promise<SignedHydratedBlockWithHashMeta[]> {
23
- return await spanRootAsync('getWindowedChain', async () => {
24
- const newChain: SignedHydratedBlockWithHashMeta[] = []
25
- const previousChainByHash = new Map<Hash, SignedHydratedBlockWithHashMeta>(previousChain.map(block => [block[0]._hash, block]))
26
- const head = await blockViewer.currentBlock()
27
- let currentBlock: SignedHydratedBlockWithHashMeta | null = head
28
- console.log('[getWindowedChain] Current Block:', currentBlock?.[0]._hash)
29
- while (currentBlock !== null && newChain.length < maxWindowSize) {
30
- const currentBlockNumber = currentBlock[0].block
31
- const nextBlock = newChain[0]
32
- if (isDefined(nextBlock)) {
33
- const nextBlockNumber = nextBlock[0].block
34
- assertEx(
35
- currentBlockNumber === nextBlockNumber - 1,
36
- () => `[getWindowedChain] Non-monotonic block sequence detected: current=${currentBlockNumber}, next=${nextBlockNumber}`,
37
- )
38
- }
39
- assertEx(
40
- currentBlockNumber <= head[0].block,
41
- () => `[getWindowedChain] Current block number (${currentBlockNumber}) exceeds head block number (${head[0].block})`,
42
- )
43
- newChain.unshift(currentBlock)
44
- const previousBlockHash: Hash | null = currentBlock[0].previous
45
- if (isNull(previousBlockHash)) break
46
- currentBlock = previousChainByHash.get(previousBlockHash) ?? await blockViewer.blockByHash(previousBlockHash)
47
- }
48
- return newChain
49
- }, context)
50
- }
@@ -1,3 +0,0 @@
1
- export * from './getWindowedChain.ts'
2
- export * from './step/index.ts'
3
- export * from './time/index.ts'
@@ -1,30 +0,0 @@
1
- import type { Address } from '@xylabs/sdk-js'
2
- import {
3
- assertEx, exists, toAddress,
4
- } from '@xylabs/sdk-js'
5
- import type {
6
- BlockViewer, CachingContext, StepIdentity,
7
- } from '@xyo-network/xl1-protocol-lib'
8
- import {
9
- asTransfer, isTransfer, XYO_STEP_REWARD_ADDRESS,
10
- } from '@xyo-network/xl1-protocol-lib'
11
-
12
- import { mergeTransfers } from '../../payload/index.ts'
13
- import { stepTransferIndex } from '../../step/index.ts'
14
- import { stepRewardBlock } from './stepRewardBlock.ts'
15
-
16
- /** ChainStepRewardAddress helper function. */
17
- export async function chainStepRewardAddress(context: CachingContext, blockViewer: BlockViewer, { block, step }: StepIdentity): Promise<Address> {
18
- const hydratedBlock = await stepRewardBlock(context, blockViewer, { block, step })
19
- const [transferIndex, transferCount] = stepTransferIndex(block, step)
20
- const [blockBw, payloads] = hydratedBlock
21
-
22
- const transfersFromPool = payloads.filter(isTransfer).map(p => asTransfer(p)).filter(exists).filter(t => t.from === XYO_STEP_REWARD_ADDRESS)
23
- const fromEntries = Object.entries(mergeTransfers(transfersFromPool)[XYO_STEP_REWARD_ADDRESS])
24
- const sortedTransferAmounts = (fromEntries).toSorted(([,a], [,b]) => a > b ? -1 : a < b ? 1 : 0)
25
- assertEx(
26
- sortedTransferAmounts.length === transferCount,
27
- () => `Step Transfers mismatch ${block} (${blockBw._hash}) [${sortedTransferAmounts.length} - ${transferCount}]`,
28
- )
29
- return toAddress(sortedTransferAmounts[transferIndex][0])
30
- }
@@ -1,4 +0,0 @@
1
- export * from './chainStepRewardAddress.ts'
2
- export * from './stepRewardBlock.ts'
3
- export * from './stepRewardTotal.ts'
4
- export * from './stepsRewardTotal.ts'
@@ -1,13 +0,0 @@
1
- import { assertEx } from '@xylabs/sdk-js'
2
- import type {
3
- BlockViewer,
4
- CachingContext,
5
- HydratedBlockWithHashMeta, StepIdentity,
6
- } from '@xyo-network/xl1-protocol-lib'
7
- import { StepSizes } from '@xyo-network/xl1-protocol-lib'
8
-
9
- /** StepRewardBlock helper function. */
10
- export async function stepRewardBlock(context: CachingContext, blockViewer: BlockViewer, { block, step }: StepIdentity): Promise<HydratedBlockWithHashMeta> {
11
- assertEx((block % StepSizes[step]) === 0, () => `Block must be the first block of the step [${StepSizes[step]}], got ${block}`)
12
- return assertEx(await blockViewer.blockByNumber(block), () => `Could not find block for block number ${block}`)
13
- }
@@ -1,46 +0,0 @@
1
- import { assertEx, isDefined } from '@xylabs/sdk-js'
2
- import type {
3
- AttoXL1, BlockViewer, CachingContext, StepIdentity, XL1BlockRange, XL1RangeMultipliers,
4
- } from '@xyo-network/xl1-protocol-lib'
5
- import {
6
- asAttoXL1, asXL1BlockRange, isTransfer,
7
- XYO_STEP_REWARD_ADDRESS,
8
- } from '@xyo-network/xl1-protocol-lib'
9
-
10
- import { withContextCacheResponse } from '../../../ChainContextHelpers.ts'
11
- import { netTransfersForPayloads } from '../../../payloads/index.ts'
12
- import { stepBlockRange, stepTransferIndex } from '../../step/index.ts'
13
- import { stepRewardBlock } from './stepRewardBlock.ts'
14
-
15
- function stepInRange(step: StepIdentity, range: XL1BlockRange): boolean {
16
- const stepRange = stepBlockRange(step)
17
- return ((stepRange[0] >= range[0]) && (stepRange[1] <= range[1]))
18
- }
19
-
20
- /** StepRewardTotal helper function. */
21
- export async function stepRewardTotal(context: CachingContext, blockViewer: BlockViewer, { block, step }: StepIdentity, multipliers: XL1RangeMultipliers): Promise<AttoXL1> {
22
- const cacheKey = `${block}|${step}|${isDefined(multipliers)}`
23
- return await withContextCacheResponse(context, 'stepRewardTotal', cacheKey, async () => {
24
- const [blockBw, payloads] = await stepRewardBlock(context, blockViewer, { block, step })
25
- assertEx(blockBw.block === block, () => `Block Mismatch: expected ${block}, got ${blockBw.block}`)
26
- const [transferIndex] = stepTransferIndex(block, step)
27
- const stepTransfer = assertEx(
28
- payloads.find(p => isTransfer(p) && p.from === XYO_STEP_REWARD_ADDRESS),
29
- () => `No step transfer found for step ${step} at block ${block} (${blockBw._hash})`,
30
- )
31
- const rewards = assertEx(
32
- netTransfersForPayloads(context, [stepTransfer])[XYO_STEP_REWARD_ADDRESS],
33
- () => `No rewards found for step reward address ${XYO_STEP_REWARD_ADDRESS} at block ${block} (${blockBw._hash})`,
34
- )
35
- const sortedTransfers = (Object.entries(rewards)).toSorted(([,a], [,b]) => a > b ? -1 : a < b ? 1 : 0)
36
- let result = asAttoXL1(sortedTransfers[transferIndex][1] * -1n)
37
- for (const [rangeKey, [numerator, denominator]] of Object.entries(multipliers)) {
38
- const rangeParts = rangeKey.split('|').map(Number)
39
- const range: XL1BlockRange = asXL1BlockRange([rangeParts[0], rangeParts[1]], { name: 'stepRewardTotal' })
40
- if (stepInRange({ block, step }, range)) {
41
- result = asAttoXL1(result + result * numerator / denominator)
42
- }
43
- }
44
- return result
45
- })
46
- }
@@ -1,37 +0,0 @@
1
- import type {
2
- AttoXL1, BlockViewer, CachingContext, StepIdentity, XL1BlockRange,
3
- XL1RangeMultipliers,
4
- } from '@xyo-network/xl1-protocol-lib'
5
- import { asAttoXL1, asXL1BlockRange } from '@xyo-network/xl1-protocol-lib'
6
-
7
- import { XL1_NETWORK_STAKING_GENESIS_PERIOD_END_XL1_BLOCK } from '../../../constants.ts'
8
- import { blockRangeSteps } from '../../block/index.ts'
9
- import { stepRewardTotal } from './stepRewardTotal.ts'
10
-
11
- /** StepsRewardTotalGenesisPeriod helper function. */
12
- export async function stepsRewardTotalGenesisPeriod(context: CachingContext, blockViewer: BlockViewer, multipliers: XL1RangeMultipliers, stepSizes?: number[]): Promise<AttoXL1> {
13
- const range = asXL1BlockRange([0, XL1_NETWORK_STAKING_GENESIS_PERIOD_END_XL1_BLOCK], { name: 'stepsRewardTotalGenesisPeriod' })
14
- return await stepsRewardTotalRange(context, blockViewer, range, stepSizes, multipliers)
15
- }
16
-
17
- /** StepsRewardTotalRange helper function. */
18
- export async function stepsRewardTotalRange(
19
- context: CachingContext,
20
- blockViewer: BlockViewer,
21
- range: XL1BlockRange,
22
- stepSizes: number[] = [3, 4, 5, 6],
23
- multipliers: XL1RangeMultipliers,
24
- ): Promise<AttoXL1> {
25
- const steps = blockRangeSteps(range, stepSizes)
26
- return await stepsRewardTotal(context, blockViewer, steps, multipliers)
27
- }
28
-
29
- /** StepsRewardTotal helper function. */
30
- export async function stepsRewardTotal(context: CachingContext, blockViewer: BlockViewer, steps: StepIdentity[], multipliers: XL1RangeMultipliers): Promise<AttoXL1> {
31
- let totalRewards = 0n
32
- for (const step of steps) {
33
- const stepTotal = await stepRewardTotal(context, blockViewer, step, multipliers)
34
- totalRewards += stepTotal
35
- }
36
- return asAttoXL1(totalRewards)
37
- }
@@ -1,32 +0,0 @@
1
- import { assertEx, isArray } from '@xylabs/sdk-js'
2
- import type {
3
- BlockNumber, BlockViewer, CachingContext, XL1BlockNumber,
4
- } from '@xyo-network/xl1-protocol-lib'
5
- import {
6
- asBlockNumber, asTimePayload, isTimePayload,
7
- } from '@xyo-network/xl1-protocol-lib'
8
-
9
- import { withContextCacheResponse } from '../../../ChainContextHelpers.ts'
10
-
11
- const functionName = 'externalBlockNumberFromXL1BlockNumber' as const
12
-
13
- /** ExternalBlockNumberFromXL1BlockNumber helper function. */
14
- export async function externalBlockNumberFromXL1BlockNumber(
15
- context: CachingContext,
16
- blockViewer: BlockViewer,
17
- xl1BlockNumber: XL1BlockNumber,
18
- externalTimeName: 'ethereum' | 'epoch',
19
- externalGenesisTime?: BlockNumber,
20
- ): Promise<BlockNumber> {
21
- const cacheKey = `${xl1BlockNumber}-${externalTimeName}-${externalGenesisTime ?? 'default'}`
22
- return await withContextCacheResponse(context, functionName, cacheKey, async () => {
23
- const [, payloads = []] = await blockViewer.blockByNumber(xl1BlockNumber) ?? []
24
- assertEx(isArray(payloads))
25
- const timePayload = asTimePayload(payloads.find(isTimePayload))
26
- // the default here is the block number we know where the xl1 chain started running (first external staking - 1)
27
- return asBlockNumber(
28
- timePayload?.[externalTimeName] ?? externalGenesisTime ?? 23_372_716,
29
- { name: functionName },
30
- ) // default is xl1 mainnet genesis time
31
- })
32
- }
@@ -1,21 +0,0 @@
1
- import type {
2
- BlockRange, BlockViewer, CachingContext, StepIdentity,
3
- } from '@xyo-network/xl1-protocol-lib'
4
-
5
- import { toStepIdentityString } from '../../../block/index.ts'
6
- import { withContextCacheResponse } from '../../../ChainContextHelpers.ts'
7
- import { stepBlockRange } from '../../step/index.ts'
8
- import { externalBlockRangeFromXL1BlockRange } from './externalBlockRangeFromXL1BlockRange.ts'
9
-
10
- /** ExternalBlockRangeFromStep helper function. */
11
- export async function externalBlockRangeFromStep(
12
- context: CachingContext,
13
- blockViewer: BlockViewer,
14
- stepIdentity: StepIdentity,
15
- ): Promise<BlockRange> {
16
- const cacheKey = toStepIdentityString(stepIdentity)
17
- return await withContextCacheResponse(context, 'externalBlockRangeFromStep', cacheKey, async () => {
18
- const xl1BlockRange = stepBlockRange(stepIdentity)
19
- return await externalBlockRangeFromXL1BlockRange(context, blockViewer, xl1BlockRange)
20
- })
21
- }
@@ -1,17 +0,0 @@
1
- import type {
2
- BlockRange, BlockViewer, CachingContext, XL1BlockRange,
3
- } from '@xyo-network/xl1-protocol-lib'
4
-
5
- import { externalBlockNumberFromXL1BlockNumber } from './externalBlockNumberFromXL1BlockNumber.ts'
6
-
7
- /** ExternalBlockRangeFromXL1BlockRange helper function. */
8
- export async function externalBlockRangeFromXL1BlockRange(
9
- context: CachingContext,
10
- blockViewer: BlockViewer,
11
- xl1BlockRange: XL1BlockRange,
12
- externalTimeName: 'ethereum' = 'ethereum',
13
- ): Promise<BlockRange> {
14
- const start = await externalBlockNumberFromXL1BlockNumber(context, blockViewer, xl1BlockRange[0], externalTimeName)
15
- const end = await externalBlockNumberFromXL1BlockNumber(context, blockViewer, xl1BlockRange[1], externalTimeName)
16
- return [start, end]
17
- }
@@ -1,3 +0,0 @@
1
- export * from './externalBlockNumberFromXL1BlockNumber.ts'
2
- export * from './externalBlockRangeFromStep.ts'
3
- export * from './externalBlockRangeFromXL1BlockRange.ts'
@@ -1,18 +0,0 @@
1
- import type { Hash } from '@xylabs/sdk-js'
2
- import type { DataLakeViewer, HydratedBoundWitnessWithHashMeta } from '@xyo-network/xl1-protocol-lib'
3
-
4
- import { addDataLakePayloadsToPayloads } from './addDataLakePayloadsToPayloads.ts'
5
-
6
- /** AddDataLakePayloads helper function. */
7
- export async function addDataLakePayloads<T extends HydratedBoundWitnessWithHashMeta>(
8
- [boundWitness, payloads]: T,
9
- dataLakeViewer?: DataLakeViewer,
10
- ): Promise<[T, Hash[]]> {
11
- const [updatedPayloads, foundHashes] = await addDataLakePayloadsToPayloads(boundWitness.payload_hashes, payloads, dataLakeViewer)
12
- return [
13
- [
14
- boundWitness,
15
- updatedPayloads,
16
- ] as T,
17
- foundHashes]
18
- }
@@ -1,24 +0,0 @@
1
- import type { Hash } from '@xylabs/sdk-js'
2
- import { isUndefined } from '@xylabs/sdk-js'
3
- import type { Payload, WithHashMeta } from '@xyo-network/sdk-js'
4
- import { isAnyPayload, PayloadBuilder } from '@xyo-network/sdk-js'
5
- import type { DataLakeViewer } from '@xyo-network/xl1-protocol-lib'
6
-
7
- /** AddDataLakePayloadsToPayloads helper function. */
8
- export async function addDataLakePayloadsToPayloads<T extends WithHashMeta<Payload>>(
9
- hashes: Hash[],
10
- payloads: T[],
11
- dataLakeViewer?: DataLakeViewer,
12
- ): Promise<[
13
- /* Updated payloads with hash metadata */
14
- T[],
15
- /* Hashes of the newly added payloads */
16
- Hash[],
17
- ]> {
18
- if (isUndefined(dataLakeViewer)) return [payloads, []]
19
- const missingPayloadHashes = hashes.filter(hash => !payloads.some(p => p._hash === hash))
20
- const payloadsFromDataLake = await PayloadBuilder.addHashMeta(
21
- await PayloadBuilder.addHashMeta((await dataLakeViewer.get(missingPayloadHashes)).filter(isAnyPayload)),
22
- )
23
- return [[...payloads, ...payloadsFromDataLake] as T[], payloadsFromDataLake.map(p => p._hash)]
24
- }
@@ -1,2 +0,0 @@
1
- export * from './addDataLakePayloads.ts'
2
- export * from './addDataLakePayloadsToPayloads.ts'
@@ -1,13 +0,0 @@
1
- export * from './block/index.ts'
2
- export * from './chain/index.ts'
3
- export * from './datalake/index.ts'
4
- export * from './mapToMapType.ts'
5
- export * from './payload/index.ts'
6
- export * from './readPayloadMapFromStore.ts'
7
- export * from './rewardFromBlockNumber.ts'
8
- export * from './rewards/index.ts'
9
- export * from './stake/index.ts'
10
- export * from './state/index.ts'
11
- export * from './step/index.ts'
12
- export * from './transaction/index.ts'
13
- export * from './uncle/index.ts'
@@ -1,35 +0,0 @@
1
- import { isDefined } from '@xylabs/sdk-js'
2
- import type { SyncIterableMap } from '@xyo-network/xl1-protocol-lib'
3
-
4
- /** MapToMapType helper function. */
5
- export function mapToMapType<K extends {}, V extends {}>(map: Map<K, V> | SyncIterableMap<K, V>): SyncIterableMap<K, V> {
6
- return {
7
- get: (key: K) => map.get(key),
8
- has: (key: K) => map.has(key),
9
- set: (key: K, value: V) => {
10
- map.set(key, value)
11
- },
12
- setMany: (entries: [K, V][]) => {
13
- for (const [key, value] of entries) {
14
- map.set(key, value)
15
- }
16
- },
17
- delete: (key: K) => map.delete(key),
18
- clear: () => map.clear(),
19
- getMany: (keys: K[]) => {
20
- const result: V[] = []
21
- for (const key of keys) {
22
- const value = map.get(key)
23
- if (isDefined(value)) {
24
- result.push(value)
25
- }
26
- }
27
- return result
28
- },
29
- [Symbol.iterator]: function* (): Iterator<[K, V]> {
30
- for (const entry of map) {
31
- yield entry
32
- }
33
- },
34
- }
35
- }
@@ -1 +0,0 @@
1
- export * from './mergeTransfers.ts'
@@ -1,16 +0,0 @@
1
- import type { Address } from '@xylabs/sdk-js'
2
- import { hexToBigInt, toAddress } from '@xylabs/sdk-js'
3
- import type { Transfer } from '@xyo-network/xl1-protocol-lib'
4
-
5
- /** MergeTransfers helper function. */
6
- export function mergeTransfers(transfers: Transfer[]): Record<Address, Record<Address, bigint>> {
7
- const result: Record<Address, Record<Address, bigint>> = {}
8
- for (const transfer of transfers) {
9
- result[transfer.from] = result[transfer.from] ?? {}
10
- for (const [to, value] of Object.entries(transfer.transfers)) {
11
- const typedTo = toAddress(to)
12
- result[transfer.from][typedTo] = (result[transfer.from][typedTo] ?? 0n) + (hexToBigInt(value))
13
- }
14
- }
15
- return result
16
- }
@@ -1,58 +0,0 @@
1
- import type { Hash } from '@xylabs/sdk-js'
2
- import { isDefined } from '@xylabs/sdk-js'
3
- import type {
4
- ReadArchivist, ReadWriteArchivist,
5
- WithStorageMeta,
6
- } from '@xyo-network/sdk-js'
7
- import type { PayloadMap, PayloadMapRead } from '@xyo-network/xl1-protocol-lib'
8
-
9
- import { isReadArchivist, isReadWriteArchivist } from '../block/index.ts'
10
-
11
- /** ReadPayloadMapFromStore helper function. */
12
- export function readPayloadMapFromStore(store: ReadArchivist | PayloadMapRead): PayloadMapRead {
13
- if (isReadArchivist(store)) {
14
- return {
15
- get: async (hash: Hash) => {
16
- return (await store.get([hash]))[0]
17
- },
18
- getMany: async (hashes: Hash[]) => {
19
- return (await store.get(hashes))
20
- },
21
- has: async (hash: Hash) => {
22
- return isDefined((await store.get([hash]))[0])
23
- },
24
- }
25
- }
26
- return store
27
- }
28
-
29
- /** PayloadMapFromStore helper function. */
30
- export function payloadMapFromStore(store: ReadWriteArchivist | PayloadMap): PayloadMap {
31
- if (isReadWriteArchivist(store)) {
32
- return {
33
- get: async (hash: Hash) => {
34
- return (await store.get([hash]))[0]
35
- },
36
- getMany: async (hashes: Hash[]) => {
37
- return (await store.get(hashes))
38
- },
39
- has: async (hash: Hash) => {
40
- return isDefined((await store.get([hash]))[0])
41
- },
42
- clear: async () => {
43
- return await store.clear()
44
- },
45
- delete: async (id: Hash) => {
46
- await store.delete([id])
47
- return true
48
- },
49
- set: async (_id: Hash, data: WithStorageMeta) => {
50
- await store.insert([data])
51
- },
52
- setMany: async (entries: [Hash, WithStorageMeta][]) => {
53
- await store.insert(entries.map(e => e[1]))
54
- },
55
- } satisfies PayloadMap<WithStorageMeta>
56
- }
57
- return store
58
- }
@@ -1,19 +0,0 @@
1
- import {
2
- asAttoXL1, XL1_REWARDS_BLOCKS_PER_STEP, XL1_REWARDS_CREATOR_REWARD,
3
- XL1_REWARDS_MIN_BLOCK_REWARD, XL1_REWARDS_STARTING_REWARD, XL1_REWARDS_STEP_FACTOR_DENOMINATOR,
4
- XL1_REWARDS_STEP_FACTOR_NUMERATOR, type XL1BlockNumber,
5
- } from '@xyo-network/xl1-protocol-lib'
6
-
7
- /** RewardFromBlockNumber helper function. */
8
- export function rewardFromBlockNumber(blockNumber: XL1BlockNumber) {
9
- if (blockNumber === 0) {
10
- return XL1_REWARDS_CREATOR_REWARD
11
- }
12
- const step = Math.floor((blockNumber + XL1_REWARDS_BLOCKS_PER_STEP) / XL1_REWARDS_BLOCKS_PER_STEP)
13
- const stepExp = BigInt(step - 1)
14
- const poweredNumerator = stepExp > 0 ? XL1_REWARDS_STEP_FACTOR_NUMERATOR ** stepExp : 1n
15
- const poweredDenominator = stepExp > 0 ? XL1_REWARDS_STEP_FACTOR_DENOMINATOR ** stepExp : 1n
16
- let reward = (XL1_REWARDS_STARTING_REWARD * poweredNumerator) / poweredDenominator
17
- // eslint-disable-next-line unicorn/prefer-math-min-max
18
- return asAttoXL1((reward < XL1_REWARDS_MIN_BLOCK_REWARD) ? XL1_REWARDS_MIN_BLOCK_REWARD : reward)
19
- }
@@ -1 +0,0 @@
1
- export * from './networkStakeStepRewardPositionWeight.ts'
@@ -1,26 +0,0 @@
1
- import type {
2
- BlockViewer, CachingContext, StakeEventsViewer, StepIdentity,
3
- } from '@xyo-network/xl1-protocol-lib'
4
- import { XYO_NETWORK_STAKING_ADDRESS } from '@xyo-network/xl1-protocol-lib'
5
-
6
- import { externalBlockRangeFromStep } from '../chain/index.ts'
7
- import { weightedStakeForRangeByPosition } from '../stake/index.ts'
8
-
9
- /** NetworkStakeStepRewardPositionWeight helper function. */
10
- export async function networkStakeStepRewardPositionWeight(
11
- context: CachingContext,
12
- blockViewer: BlockViewer,
13
- stakeEventsViewer: StakeEventsViewer,
14
- stepContext: StepIdentity,
15
- position: number,
16
- ): Promise<bigint> {
17
- const result = await weightedStakeForRangeByPosition(
18
- context,
19
- blockViewer,
20
- stakeEventsViewer,
21
- await externalBlockRangeFromStep(context, blockViewer, stepContext),
22
- XYO_NETWORK_STAKING_ADDRESS,
23
- position,
24
- )
25
- return result
26
- }
@@ -1,27 +0,0 @@
1
- import type { Address } from '@xylabs/sdk-js'
2
- import { isDefined } from '@xylabs/sdk-js'
3
- import type { StakeEventsViewer } from '@xyo-network/xl1-protocol-lib'
4
-
5
- import { mergedAddRemoveStakeEventsByStaker } from './mergedAddRemoveStakeEventsByStaker.ts'
6
-
7
- /** ActiveStakeAtTimeByAddress helper function. */
8
- export async function activeStakeAtTimeByAddress(
9
- chain: StakeEventsViewer,
10
- staked: Address,
11
- time: number,
12
- staker?: Address,
13
- ): Promise<bigint> {
14
- const stakeEvents = (await mergedAddRemoveStakeEventsByStaker(chain, [0, time], staked, staker)).toSorted((a, b) => a.time - b.time)
15
- let result = 0n
16
- for (const event of stakeEvents) {
17
- if (event.time > time) break
18
- if (event.args.staked !== staked) continue
19
- if (isDefined(staker) && (event.args.staker !== staker)) continue
20
- if (event.name === 'StakeAdded') {
21
- result += event.args.amount
22
- } else if (event.name === 'StakeRemoved') {
23
- result -= event.args.amount
24
- }
25
- }
26
- return result
27
- }
@@ -1,25 +0,0 @@
1
- import { isUndefined } from '@xylabs/sdk-js'
2
- import type { StakeEventsViewer } from '@xyo-network/xl1-protocol-lib'
3
-
4
- import { mergedAddRemoveStakeEventsByPosition } from './mergedAddRemoveStakeEventsByPosition.ts'
5
-
6
- /** ActiveStakeAtTimeByPosition helper function. */
7
- export async function activeStakeAtTimeByPosition(
8
- chainStakeEvents: StakeEventsViewer,
9
- externalTime: number,
10
- position?: number,
11
- ): Promise<bigint> {
12
- const stakeEvents = (await mergedAddRemoveStakeEventsByPosition(chainStakeEvents, [0, externalTime], position)).toSorted((a, b) => a.time - b.time)
13
- let result = 0n
14
- for (const event of stakeEvents) {
15
- if (event.time > externalTime) break
16
- if (isUndefined(position) || position === Number(event.args.id)) {
17
- if (event.name === 'StakeAdded') {
18
- result += event.args.amount
19
- } else if (event.name === 'StakeRemoved') {
20
- result -= event.args.amount
21
- }
22
- }
23
- }
24
- return result
25
- }
@@ -1,32 +0,0 @@
1
- import {
2
- type Address,
3
- toAddress,
4
- } from '@xylabs/sdk-js'
5
- import type { StakeEventsViewer } from '@xyo-network/xl1-protocol-lib'
6
-
7
- import { mergedAddRemoveStakeEventsByStaker } from './mergedAddRemoveStakeEventsByStaker.ts'
8
-
9
- /** AllStakersForRange helper function. */
10
- export async function allStakersForRange(
11
- chain: StakeEventsViewer,
12
- externalRange: [number, number],
13
- staked: Address,
14
- ): Promise<Record<Address, bigint>> {
15
- const mergedEvents = await mergedAddRemoveStakeEventsByStaker(chain, [0, externalRange[1]], staked)
16
- const resultWithZeros: Record<Address, bigint> = {}
17
- for (const event of mergedEvents) {
18
- const staker = toAddress(event.args.staker)
19
- resultWithZeros[staker] = resultWithZeros[staker] ?? 0n
20
- if (event.name === 'StakeAdded') {
21
- resultWithZeros[staker] += event.args.amount
22
- } else if (event.name === 'StakeRemoved') {
23
- resultWithZeros[staker] -= event.args.amount
24
- }
25
- }
26
- const nonZero = Object.entries(resultWithZeros).filter(([, amount]) => amount > 0n).map(([address]) => address)
27
- const result: Record<Address, bigint> = {}
28
- for (const address of nonZero) {
29
- result[toAddress(address)] = resultWithZeros[toAddress(address)]
30
- }
31
- return result
32
- }
@@ -1,24 +0,0 @@
1
- import { type Address } from '@xylabs/sdk-js'
2
- import type {
3
- BlockViewer, CachingContext, StakeEventsViewer, StepIdentity,
4
- } from '@xyo-network/xl1-protocol-lib'
5
-
6
- import { externalBlockRangeFromXL1BlockRange } from '../chain/index.ts'
7
- import { stepBlockRange } from '../step/index.ts'
8
- import { allStakersForRange } from './allStakersForRange.ts'
9
-
10
- /** AllStakersForStep helper function. */
11
- export async function allStakersForStep(
12
- context: CachingContext,
13
- blockViewer: BlockViewer,
14
- stakeEventsViewer: StakeEventsViewer,
15
- stepContext: StepIdentity,
16
- staked: Address,
17
- ): Promise<Record<Address, bigint>> {
18
- const xl1BlockRange = stepBlockRange(stepContext)
19
- return await allStakersForRange(
20
- stakeEventsViewer,
21
- await externalBlockRangeFromXL1BlockRange(context, blockViewer, xl1BlockRange),
22
- staked,
23
- )
24
- }
@@ -1,6 +0,0 @@
1
- export * from './activeStakeAtTimeByAddress.ts'
2
- export * from './activeStakeAtTimeByPosition.ts'
3
- export * from './allStakersForRange.ts'
4
- export * from './allStakersForStep.ts'
5
- export * from './mergedAddRemoveStakeEventsByPosition.ts'
6
- export * from './weightedStakeForRangeByPosition.ts'
@@ -1,15 +0,0 @@
1
- import type { StakeEvent, StakeEventsViewer } from '@xyo-network/xl1-protocol-lib'
2
-
3
- /** MergedAddRemoveStakeEventsByPosition helper function. */
4
- export async function mergedAddRemoveStakeEventsByPosition(
5
- chainEvents: StakeEventsViewer,
6
- range: [number, number],
7
- position?: number,
8
- ): Promise<(StakeEvent<'StakeAdded'> | StakeEvent<'StakeRemoved'>)[]> {
9
- const [addedEvents, removedEvents] = await Promise.all([
10
- chainEvents.stakeEvents(range, { name: 'StakeAdded', args: { id: position } }),
11
- chainEvents.stakeEvents(range, { name: 'StakeRemoved', args: { id: position } }),
12
- ])
13
- const result = [...addedEvents, ...removedEvents].toSorted((a, b) => a.time - b.time)
14
- return result
15
- }