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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. package/package.json +29 -16
  2. package/src/ChainContextHelpers.ts +0 -50
  3. package/src/CreatableProvider/AbstractCreatableProvider.ts +0 -97
  4. package/src/CreatableProvider/CreatableProvider.ts +0 -102
  5. package/src/CreatableProvider/CreatableProviderRegistry.ts +0 -94
  6. package/src/CreatableProvider/GetInstanceOptions.ts +0 -11
  7. package/src/CreatableProvider/LabeledCreatableProviderFactory.ts +0 -24
  8. package/src/CreatableProvider/ProviderFactory.ts +0 -138
  9. package/src/CreatableProvider/ProviderFactoryLocator.ts +0 -170
  10. package/src/CreatableProvider/ProviderFactoryLocatorInstance.ts +0 -70
  11. package/src/CreatableProvider/index.ts +0 -8
  12. package/src/SignedBigInt.ts +0 -59
  13. package/src/_internal/context/getTestProviderContext.ts +0 -13
  14. package/src/_internal/context/index.ts +0 -1
  15. package/src/_internal/index.ts +0 -2
  16. package/src/actor/ActorV3.ts +0 -177
  17. package/src/actor/index.ts +0 -1
  18. package/src/amount/ShiftedBigInt.ts +0 -73
  19. package/src/amount/XL1Amount.ts +0 -103
  20. package/src/amount/index.ts +0 -4
  21. package/src/amount/splitOnDecimal.ts +0 -6
  22. package/src/amount/splitOnDecimalToString.ts +0 -40
  23. package/src/block/hydrate/allHashesPresent.ts +0 -8
  24. package/src/block/hydrate/blockPayloadsFromHydratedBlock.ts +0 -12
  25. package/src/block/hydrate/flattenHydratedBlock.ts +0 -28
  26. package/src/block/hydrate/flattenHydratedBlocks.ts +0 -7
  27. package/src/block/hydrate/hydrateBlock.ts +0 -43
  28. package/src/block/hydrate/index.ts +0 -7
  29. package/src/block/hydrate/transactionsFromHydratedBlock.ts +0 -7
  30. package/src/block/hydrate/tryHydrateBlock.ts +0 -26
  31. package/src/block/index.ts +0 -2
  32. package/src/block/primitives/blockFromBlockNumber.ts +0 -69
  33. package/src/block/primitives/frames/calculateFramesFromRange.ts +0 -30
  34. package/src/block/primitives/frames/deepCalculateFramesFromRange.ts +0 -28
  35. package/src/block/primitives/frames/index.ts +0 -2
  36. package/src/block/primitives/hashFromBlockNumber.ts +0 -9
  37. package/src/block/primitives/index.ts +0 -7
  38. package/src/block/primitives/model.ts +0 -18
  39. package/src/block/primitives/payloads/ChainWindow.ts +0 -7
  40. package/src/block/primitives/payloads/index.ts +0 -1
  41. package/src/block/primitives/toStepIdentityString.ts +0 -6
  42. package/src/block/primitives/validateTransactionOpcodes.ts +0 -45
  43. package/src/config/Actor.ts +0 -32
  44. package/src/config/Actors.ts +0 -9
  45. package/src/config/Base.ts +0 -27
  46. package/src/config/Chain.ts +0 -23
  47. package/src/config/Config.ts +0 -24
  48. package/src/config/DataLake/DataLake.ts +0 -12
  49. package/src/config/DataLake/DataLakeRemoteConfig.ts +0 -11
  50. package/src/config/DataLake/RestDataLakeConfig.ts +0 -18
  51. package/src/config/DataLake/RouterDataLakeConfig.ts +0 -22
  52. package/src/config/DataLake/index.ts +0 -4
  53. package/src/config/DeepPartial.ts +0 -4
  54. package/src/config/Evm.ts +0 -38
  55. package/src/config/HostActor.ts +0 -32
  56. package/src/config/Log.ts +0 -25
  57. package/src/config/Provider.ts +0 -20
  58. package/src/config/Providers.ts +0 -9
  59. package/src/config/Remote.ts +0 -59
  60. package/src/config/Telemetry.ts +0 -49
  61. package/src/config/UsageMeta.ts +0 -46
  62. package/src/config/Validation.ts +0 -29
  63. package/src/config/index.ts +0 -12
  64. package/src/config/storage/Storage.ts +0 -16
  65. package/src/config/storage/driver/Mongo.ts +0 -53
  66. package/src/config/storage/driver/index.ts +0 -1
  67. package/src/config/storage/index.ts +0 -2
  68. package/src/constants.ts +0 -4
  69. package/src/context/Actor.ts +0 -20
  70. package/src/context/HostActor.ts +0 -20
  71. package/src/context/getEmptyProviderContext.ts +0 -19
  72. package/src/context/index.ts +0 -3
  73. package/src/createDeclarationPayload.ts +0 -15
  74. package/src/createTransferPayload.ts +0 -16
  75. package/src/driver/cache/LruCacheMap.ts +0 -48
  76. package/src/driver/cache/index.ts +0 -1
  77. package/src/driver/index.ts +0 -2
  78. package/src/driver/memory/MemoryMap.ts +0 -48
  79. package/src/driver/memory/index.ts +0 -1
  80. package/src/eip-712/Payloads/EIP712Data.ts +0 -35
  81. package/src/eip-712/Payloads/EIP712Signature.ts +0 -32
  82. package/src/eip-712/Payloads/index.ts +0 -2
  83. package/src/eip-712/Types.ts +0 -41
  84. package/src/eip-712/index.ts +0 -4
  85. package/src/eip-712/sign.ts +0 -19
  86. package/src/eip-712/spec/fixtures.ts +0 -27
  87. package/src/eip-712/verify.ts +0 -20
  88. package/src/getFileConfig.ts +0 -36
  89. package/src/index.ts +0 -27
  90. package/src/instances/Address.ts +0 -16
  91. package/src/instances/BoundWitness.ts +0 -13
  92. package/src/instances/Data.ts +0 -4
  93. package/src/instances/Fees.ts +0 -9
  94. package/src/instances/HydratedBoundWitness.ts +0 -16
  95. package/src/instances/Object.ts +0 -6
  96. package/src/instances/Payload.ts +0 -7
  97. package/src/instances/Signature.ts +0 -12
  98. package/src/instances/block/BlockFields.ts +0 -18
  99. package/src/instances/block/HydratedBlock.ts +0 -10
  100. package/src/instances/block/index.ts +0 -1
  101. package/src/instances/index.ts +0 -10
  102. package/src/instances/modifiers/BlockWindowInstance.ts +0 -8
  103. package/src/instances/modifiers/BlockWindowState.ts +0 -6
  104. package/src/instances/modifiers/Signed.ts +0 -9
  105. package/src/instances/modifiers/Validatable.ts +0 -6
  106. package/src/instances/modifiers/index.ts +0 -4
  107. package/src/instances/transaction/HydratedTransaction.ts +0 -9
  108. package/src/instances/transaction/TransactionFields.ts +0 -22
  109. package/src/instances/transaction/index.ts +0 -1
  110. package/src/isInternetAvailable.ts +0 -11
  111. package/src/model/ChainFork/ChainForkStatic.ts +0 -9
  112. package/src/model/ChainFork/index.ts +0 -1
  113. package/src/model/ChainIdentity.ts +0 -6
  114. package/src/model/ChainStore.ts +0 -16
  115. package/src/model/CreatableProviderContext.ts +0 -6
  116. package/src/model/CreatableProviderContext.zod.ts +0 -55
  117. package/src/model/PayloadBundle/bundledPayloadToHydratedBlock.ts +0 -15
  118. package/src/model/PayloadBundle/bundledPayloadToHydratedTransaction.ts +0 -15
  119. package/src/model/PayloadBundle/hydratedBlockToPayloadBundle.ts +0 -19
  120. package/src/model/PayloadBundle/hydratedTransactionToPayloadBundle.ts +0 -19
  121. package/src/model/PayloadBundle/index.ts +0 -4
  122. package/src/model/index.ts +0 -6
  123. package/src/multipliers.ts +0 -18
  124. package/src/payloads/AddressPairPayload.ts +0 -27
  125. package/src/payloads/index.ts +0 -4
  126. package/src/payloads/netBalancesForPayloads.ts +0 -24
  127. package/src/payloads/netSchemasForPayloads.ts +0 -24
  128. package/src/payloads/netTransfersForPayloads.ts +0 -27
  129. package/src/primitives/block/index.ts +0 -2
  130. package/src/primitives/block/range/blockRangeSteps.ts +0 -23
  131. package/src/primitives/block/range/index.ts +0 -1
  132. package/src/primitives/block/rate/blockRate.ts +0 -77
  133. package/src/primitives/block/rate/index.ts +0 -4
  134. package/src/primitives/block/rate/stepRate.ts +0 -37
  135. package/src/primitives/block/rate/timeHelpers.ts +0 -61
  136. package/src/primitives/block/rate/timeRate.ts +0 -121
  137. package/src/primitives/chain/getWindowedChain.ts +0 -50
  138. package/src/primitives/chain/index.ts +0 -3
  139. package/src/primitives/chain/step/chainStepRewardAddress.ts +0 -30
  140. package/src/primitives/chain/step/index.ts +0 -4
  141. package/src/primitives/chain/step/stepRewardBlock.ts +0 -13
  142. package/src/primitives/chain/step/stepRewardTotal.ts +0 -46
  143. package/src/primitives/chain/step/stepsRewardTotal.ts +0 -37
  144. package/src/primitives/chain/time/externalBlockNumberFromXL1BlockNumber.ts +0 -32
  145. package/src/primitives/chain/time/externalBlockRangeFromStep.ts +0 -21
  146. package/src/primitives/chain/time/externalBlockRangeFromXL1BlockRange.ts +0 -17
  147. package/src/primitives/chain/time/index.ts +0 -3
  148. package/src/primitives/datalake/addDataLakePayloads.ts +0 -18
  149. package/src/primitives/datalake/addDataLakePayloadsToPayloads.ts +0 -24
  150. package/src/primitives/datalake/index.ts +0 -2
  151. package/src/primitives/index.ts +0 -13
  152. package/src/primitives/mapToMapType.ts +0 -35
  153. package/src/primitives/payload/index.ts +0 -1
  154. package/src/primitives/payload/mergeTransfers.ts +0 -16
  155. package/src/primitives/readPayloadMapFromStore.ts +0 -58
  156. package/src/primitives/rewardFromBlockNumber.ts +0 -19
  157. package/src/primitives/rewards/index.ts +0 -1
  158. package/src/primitives/rewards/networkStakeStepRewardPositionWeight.ts +0 -26
  159. package/src/primitives/stake/activeStakeAtTimeByAddress.ts +0 -27
  160. package/src/primitives/stake/activeStakeAtTimeByPosition.ts +0 -25
  161. package/src/primitives/stake/allStakersForRange.ts +0 -32
  162. package/src/primitives/stake/allStakersForStep.ts +0 -24
  163. package/src/primitives/stake/index.ts +0 -6
  164. package/src/primitives/stake/mergedAddRemoveStakeEventsByPosition.ts +0 -15
  165. package/src/primitives/stake/mergedAddRemoveStakeEventsByStaker.ts +0 -17
  166. package/src/primitives/stake/weightedStakeForRangeByPosition.ts +0 -69
  167. package/src/primitives/state/findMostRecentBlock.ts +0 -44
  168. package/src/primitives/state/hydratedBlockByNumber.ts +0 -25
  169. package/src/primitives/state/index.ts +0 -2
  170. package/src/primitives/step/completedStepRewardAddress.ts +0 -10
  171. package/src/primitives/step/derivedReceiveAddress.ts +0 -9
  172. package/src/primitives/step/index.ts +0 -4
  173. package/src/primitives/step/stepBlockRange.ts +0 -9
  174. package/src/primitives/step/stepTransferIndex.ts +0 -19
  175. package/src/primitives/transaction/elevatedPayloads.ts +0 -24
  176. package/src/primitives/transaction/index.ts +0 -1
  177. package/src/primitives/uncle/findBestUncle.ts +0 -9
  178. package/src/primitives/uncle/findUncles.ts +0 -75
  179. package/src/primitives/uncle/index.ts +0 -3
  180. package/src/primitives/uncle/scoreUncle.ts +0 -7
  181. package/src/services/AccountTransfersService.ts +0 -13
  182. package/src/services/BlockProducerService.ts +0 -11
  183. package/src/services/Chain/BaseChainService.ts +0 -4
  184. package/src/services/Chain/ChainHeadService.ts +0 -8
  185. package/src/services/Chain/ChainService.ts +0 -6
  186. package/src/services/Chain/index.ts +0 -3
  187. package/src/services/Election.ts +0 -14
  188. package/src/services/NetworkStakeService.ts +0 -4
  189. package/src/services/Params.ts +0 -13
  190. package/src/services/PendingTransactionsService.ts +0 -7
  191. package/src/services/SchemasService.ts +0 -11
  192. package/src/services/StakeIntentService/ChainIndexingServiceStateSchema.ts +0 -50
  193. package/src/services/StakeIntentService/StakeIntentService.ts +0 -35
  194. package/src/services/StakeIntentService/index.ts +0 -2
  195. package/src/services/index.ts +0 -8
  196. package/src/simple/StakeEventsViewer/SimpleStakeEventsViewer.ts +0 -93
  197. package/src/simple/StakeEventsViewer/index.ts +0 -1
  198. package/src/simple/StakeTotalsViewer/SimpleStakeTotalsViewer.ts +0 -116
  199. package/src/simple/StakeTotalsViewer/index.ts +0 -1
  200. package/src/simple/StakeViewer/SimpleStakeViewer.ts +0 -164
  201. package/src/simple/StakeViewer/index.ts +0 -1
  202. package/src/simple/TransactionViewer/SimpleTransactionViewer.ts +0 -100
  203. package/src/simple/TransactionViewer/index.ts +0 -1
  204. package/src/simple/accountBalance/SimpleAccountBalanceViewer.ts +0 -271
  205. package/src/simple/accountBalance/index.ts +0 -1
  206. package/src/simple/block/SimpleBlockViewer.ts +0 -231
  207. package/src/simple/block/index.ts +0 -1
  208. package/src/simple/blockInvalidation/SimpleBlockInvalidationViewer.ts +0 -197
  209. package/src/simple/blockInvalidation/index.ts +0 -1
  210. package/src/simple/blockReward/SimpleBlockRewardViewer.ts +0 -27
  211. package/src/simple/blockReward/index.ts +0 -1
  212. package/src/simple/blockValidation/SimpleBlockValidationViewer.ts +0 -194
  213. package/src/simple/blockValidation/index.ts +0 -1
  214. package/src/simple/chainContractViewer/SimpleChainContractViewer.ts +0 -92
  215. package/src/simple/chainContractViewer/index.ts +0 -1
  216. package/src/simple/client/SimpleXyoClient.ts +0 -14
  217. package/src/simple/client/index.ts +0 -1
  218. package/src/simple/datalake/AbstractRestDataLake.ts +0 -70
  219. package/src/simple/datalake/AbstractSimpleDataLake.ts +0 -62
  220. package/src/simple/datalake/RestDataLakeRunner.ts +0 -54
  221. package/src/simple/datalake/RestDataLakeViewer.ts +0 -22
  222. package/src/simple/datalake/SimpleDataLakeRunner.ts +0 -44
  223. package/src/simple/datalake/SimpleDataLakeViewer.ts +0 -24
  224. package/src/simple/datalake/index.ts +0 -4
  225. package/src/simple/finalization/SimpleFinalizationRunner.ts +0 -45
  226. package/src/simple/finalization/SimpleFinalizationViewer.ts +0 -123
  227. package/src/simple/finalization/index.ts +0 -2
  228. package/src/simple/gateway/SimpleXyoGateway.ts +0 -30
  229. package/src/simple/gateway/SimpleXyoGatewayRunner.ts +0 -137
  230. package/src/simple/gateway/index.ts +0 -2
  231. package/src/simple/index.ts +0 -22
  232. package/src/simple/mempool/SimpleMempoolRunner.ts +0 -390
  233. package/src/simple/mempool/SimpleMempoolViewer.ts +0 -215
  234. package/src/simple/mempool/index.ts +0 -2
  235. package/src/simple/network/SimpleXyoNetwork.ts +0 -48
  236. package/src/simple/network/index.ts +0 -1
  237. package/src/simple/network/lib/FailedNetworkStatusPayloads.ts +0 -16
  238. package/src/simple/network/lib/StatusNetworks.ts +0 -32
  239. package/src/simple/network/lib/index.ts +0 -2
  240. package/src/simple/permissions/SimpleXyoPermissions.ts +0 -82
  241. package/src/simple/permissions/index.ts +0 -2
  242. package/src/simple/permissions/store/MemoryPermissions.ts +0 -32
  243. package/src/simple/permissions/store/PermissionsStore.ts +0 -17
  244. package/src/simple/permissions/store/index.ts +0 -2
  245. package/src/simple/runner/SimpleXyoRunner.ts +0 -41
  246. package/src/simple/runner/index.ts +0 -1
  247. package/src/simple/signer/SimpleXyoSigner.ts +0 -78
  248. package/src/simple/signer/index.ts +0 -1
  249. package/src/simple/timeSync2/SimpleTimeSyncViewer.ts +0 -132
  250. package/src/simple/timeSync2/index.ts +0 -1
  251. package/src/simple/transactionInvalidation/SimpleTransactionInvalidationViewer.ts +0 -197
  252. package/src/simple/transactionInvalidation/index.ts +0 -1
  253. package/src/simple/transactionValidation/SimpleTransactionValidationViewer.ts +0 -173
  254. package/src/simple/transactionValidation/index.ts +0 -1
  255. package/src/simple/windowedBlock/SimpleWindowedBlockViewer.ts +0 -207
  256. package/src/simple/windowedBlock/index.ts +0 -1
  257. package/src/status/RuntimeStatusMonitor.ts +0 -120
  258. package/src/status/ServiceStatus.ts +0 -21
  259. package/src/status/index.ts +0 -2
  260. package/src/summary/index.ts +0 -2
  261. package/src/summary/model/BalancesStepSummary.ts +0 -35
  262. package/src/summary/model/SchemasStepSummary.ts +0 -33
  263. package/src/summary/model/StepSummary.ts +0 -20
  264. package/src/summary/model/TransfersSummary.ts +0 -36
  265. package/src/summary/model/index.ts +0 -4
  266. package/src/summary/primitives/balances/balancesStepSummaryFromRange.ts +0 -94
  267. package/src/summary/primitives/balances/balancesSummary.ts +0 -48
  268. package/src/summary/primitives/balances/index.ts +0 -2
  269. package/src/summary/primitives/index.ts +0 -3
  270. package/src/summary/primitives/schemas/index.ts +0 -2
  271. package/src/summary/primitives/schemas/schemasStepSummaryFromRange.ts +0 -86
  272. package/src/summary/primitives/schemas/schemasSummary.ts +0 -44
  273. package/src/summary/primitives/transfers/index.ts +0 -2
  274. package/src/summary/primitives/transfers/transfersStepSummaryFromRange.ts +0 -109
  275. package/src/summary/primitives/transfers/transfersSummary.ts +0 -52
  276. package/src/test/BuildBlockOptions.ts +0 -81
  277. package/src/test/buildBlock.ts +0 -105
  278. package/src/test/buildGenesisBlock.ts +0 -29
  279. package/src/test/buildNextBlock.ts +0 -37
  280. package/src/test/buildRandomChain.ts +0 -92
  281. package/src/test/buildRandomGenesisBlock.ts +0 -47
  282. package/src/test/createGenesisBlock.ts +0 -41
  283. package/src/test/createProducerChainStakeIntentTransaction.ts +0 -48
  284. package/src/test/getSimpleBlockViewerLocator.ts +0 -41
  285. package/src/test/getTestProviderContext.ts +0 -8
  286. package/src/test/index.ts +0 -2
  287. package/src/time/index.ts +0 -1
  288. package/src/time/primitives/index.ts +0 -1
  289. package/src/time/primitives/xl1BlockNumberToEthBlockNumber.ts +0 -13
  290. package/src/transaction/TransactionBuilder.ts +0 -164
  291. package/src/transaction/buildRandomTransaction.ts +0 -38
  292. package/src/transaction/buildTransaction.ts +0 -68
  293. package/src/transaction/buildUnsignedTransaction.ts +0 -56
  294. package/src/transaction/confirmSubmittedTransaction.ts +0 -42
  295. package/src/transaction/hydrateTransaction.ts +0 -117
  296. package/src/transaction/index.ts +0 -9
  297. package/src/transaction/primitives/index.ts +0 -4
  298. package/src/transaction/primitives/transactionBlockByteCount.ts +0 -10
  299. package/src/transaction/primitives/transactionElevatedPayloads.ts +0 -18
  300. package/src/transaction/primitives/transactionOperations.ts +0 -13
  301. package/src/transaction/primitives/transactionRequiredGas.ts +0 -22
  302. package/src/transaction/script.ts +0 -48
  303. package/src/transaction/signTransaction.ts +0 -32
  304. package/src/utils/HydratedCache.ts +0 -39
  305. package/src/utils/index.ts +0 -2
  306. package/src/utils/isZodError.ts +0 -11
  307. package/src/validation/index.ts +0 -2
  308. package/src/validation/lib/getUrl.ts +0 -7
  309. package/src/validation/lib/index.ts +0 -2
  310. package/src/validation/lib/isLocalhost.ts +0 -9
  311. package/src/validation/schema/Address.ts +0 -2
  312. package/src/validation/schema/Mnemonic.ts +0 -21
  313. package/src/validation/schema/index.ts +0 -2
  314. package/src/wallet/generateXyoBaseWalletFromPhrase.ts +0 -13
  315. package/src/wallet/index.ts +0 -2
  316. package/src/wallet/paths.ts +0 -17
@@ -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
- }
@@ -1,17 +0,0 @@
1
- import type { Address } from '@xylabs/sdk-js'
2
- import type { StakeEvent, StakeEventsViewer } from '@xyo-network/xl1-protocol-lib'
3
-
4
- /** MergedAddRemoveStakeEventsByStaker helper function. */
5
- export async function mergedAddRemoveStakeEventsByStaker(
6
- chainEvents: StakeEventsViewer,
7
- range: [number, number],
8
- staked: Address,
9
- staker?: Address,
10
- ): Promise<(StakeEvent<'StakeAdded'> | StakeEvent<'StakeRemoved'>)[]> {
11
- const [addedEvents, removedEvents] = await Promise.all([
12
- chainEvents.stakeEvents(range, { name: 'StakeAdded', args: { staked, staker } }),
13
- chainEvents.stakeEvents(range, { name: 'StakeRemoved', args: { staked, staker } }),
14
- ])
15
- const result = [...addedEvents, ...removedEvents].toSorted((a, b) => a.time - b.time)
16
- return result
17
- }
@@ -1,69 +0,0 @@
1
- import type { Address } from '@xylabs/sdk-js'
2
- import { isDefined } from '@xylabs/sdk-js'
3
- import type {
4
- BlockRange,
5
- BlockViewer,
6
- CachingContext,
7
- StakeEventsViewer,
8
- } from '@xyo-network/xl1-protocol-lib'
9
- import { asBlockNumber } from '@xyo-network/xl1-protocol-lib'
10
-
11
- import { withContextCacheResponse } from '../../ChainContextHelpers.ts'
12
- import { mergedAddRemoveStakeEventsByPosition } from './mergedAddRemoveStakeEventsByPosition.ts'
13
-
14
- /** WeightedStakeForRangeByPosition helper function. */
15
- export async function weightedStakeForRangeByPosition(
16
- context: CachingContext,
17
- blockViewer: BlockViewer,
18
- stakeEventsViewer: StakeEventsViewer,
19
- externalRange: BlockRange, // first to last block of step
20
- staked?: Address,
21
- positionId?: number,
22
- ): Promise<bigint> {
23
- const cacheKey = isDefined(positionId) ? `${externalRange[0]}-${externalRange[1]}-${positionId}` : `${externalRange[0]}-${externalRange[1]}-all`
24
- return await withContextCacheResponse(context, 'weightedStakeForRangeByPosition', cacheKey, async () => {
25
- let weightedStakeSum = 0n
26
- if (isDefined(positionId)) {
27
- const mergedEvents = (await mergedAddRemoveStakeEventsByPosition(
28
- stakeEventsViewer,
29
- [0, externalRange[1]],
30
- positionId,
31
- )).toSorted((a, b) => a.time - b.time)
32
- let currentTime = externalRange[0]
33
- let currentStake = 0n // await activeStakeAtTimeByPosition(chainEvents, pos.staked, currentTime - 1, position)
34
-
35
- // if not staking the desired address, return 0n
36
- if (isDefined(staked) && mergedEvents.at(0)?.args.staked !== staked) {
37
- return 0n
38
- }
39
-
40
- for (const event of mergedEvents) {
41
- if (event.time > currentTime) {
42
- // Add the weighted stake for the period between the range start or previous event and this event
43
- weightedStakeSum += currentStake * BigInt(event.time - currentTime)
44
- }
45
- if (event.name === 'StakeAdded') {
46
- currentStake += event.args.amount
47
- } else if (event.name === 'StakeRemoved') {
48
- currentStake -= event.args.amount
49
- }
50
- // seems that sometimes we get multiple remove events, so ensure stake doesn't go negative
51
- currentStake = currentStake < 0n ? 0n : currentStake
52
- currentTime = asBlockNumber(event.time, { name: 'weightedStakeForRangeByPosition' })
53
- if (currentTime > externalRange[1]) {
54
- break
55
- }
56
- }
57
- if (externalRange[1] > currentTime) {
58
- // Add the weighted stake for the period between the last event and the end of the range
59
- weightedStakeSum += currentStake * BigInt(externalRange[1] - currentTime)
60
- }
61
- } else {
62
- const positionCount = await stakeEventsViewer.positionCount([0, externalRange[1]])
63
- for (let pos = 0; pos < positionCount; pos++) {
64
- weightedStakeSum += await weightedStakeForRangeByPosition(context, blockViewer, stakeEventsViewer, externalRange, staked, pos)
65
- }
66
- }
67
- return weightedStakeSum
68
- })
69
- }
@@ -1,44 +0,0 @@
1
- import type {
2
- NextOptions, Payload, ReadArchivist,
3
- Sequence, WithStorageMeta,
4
- } from '@xyo-network/sdk-js'
5
- import type { SignedBlockBoundWitnessWithHashMeta } from '@xyo-network/xl1-protocol-lib'
6
- import { isSignedBlockBoundWitnessWithStorageMeta } from '@xyo-network/xl1-protocol-lib'
7
-
8
- // TODO: Use some smart value relative to DEFAULT_BLOCK_SIZE
9
- // to ensure we're likely to find it in a single request
10
- // without bringing back too much data
11
- const DEFAULT_NEXT_OPTIONS: NextOptions = { limit: 50 }
12
-
13
- /**
14
- * Iterates an archivist to find the most recent block
15
- * @param chainArchivist The archivist to iterate over for the most recent chain block
16
- * @param nextOptions The options to use when iterating the archivist
17
- * @param maxIterations The max number of iterations to perform when finding the most recent block
18
- * @returns The most recent block found in the archivist or undefined if no blocks are found
19
- */
20
- export const findMostRecentBlock = async (
21
- chainArchivist: ReadArchivist,
22
- nextOptions: NextOptions = DEFAULT_NEXT_OPTIONS,
23
- maxIterations = Number.POSITIVE_INFINITY,
24
- ): Promise<SignedBlockBoundWitnessWithHashMeta | undefined> => {
25
- let mostRecentBlock: SignedBlockBoundWitnessWithHashMeta | undefined
26
- let cursor: Sequence | undefined
27
- let batch: WithStorageMeta<Payload>[]
28
- let iterations = 0
29
- do {
30
- batch = await chainArchivist.next({
31
- ...nextOptions, order: 'desc', cursor,
32
- })
33
- const blocks = batch.filter(isSignedBlockBoundWitnessWithStorageMeta)
34
- const last = blocks?.at(0)
35
- if (last) {
36
- mostRecentBlock = last
37
- break
38
- } else {
39
- cursor = batch.at(-1)?._sequence
40
- }
41
- iterations = iterations + 1
42
- } while (batch.length > 0 && iterations < maxIterations)
43
- return mostRecentBlock
44
- }
@@ -1,25 +0,0 @@
1
- import { assertEx, spanAsync } from '@xylabs/sdk-js'
2
- import type {
3
- ChainContextRead,
4
- HydratedBlockWithHashMeta, XL1BlockNumber,
5
- } from '@xyo-network/xl1-protocol-lib'
6
-
7
- import { blockFromBlockNumber, hydrateBlock } from '../../block/index.ts'
8
- import { withContextCacheResponse } from '../../ChainContextHelpers.ts'
9
-
10
- /** HydratedBlockByNumber helper function. */
11
- export async function hydratedBlockByNumber(context: ChainContextRead, blockNumber: XL1BlockNumber): Promise<HydratedBlockWithHashMeta | null> {
12
- return await spanAsync('hydratedBlockByNumber', async () => {
13
- if (blockNumber < 0) throw new Error(`Block number ${blockNumber} is less than 0`)
14
- if (blockNumber > Number.MAX_SAFE_INTEGER) throw new Error(`Block number ${blockNumber} is greater than the maximum safe integer`)
15
- if (blockNumber % 1 !== 0) throw new Error(`Block number ${blockNumber} is not an integer`)
16
- const cacheKey = `${blockNumber}`
17
- return await withContextCacheResponse(context, 'hydratedBlockByNumber', cacheKey, async () => {
18
- const block = assertEx(
19
- await blockFromBlockNumber(context, blockNumber),
20
- () => `Could not find block for block number ${blockNumber}`,
21
- )
22
- return await hydrateBlock(context, block._hash)
23
- }, { max: 20_000 })
24
- }, { ...context, timeBudgetLimit: 500 })
25
- }
@@ -1,2 +0,0 @@
1
- export * from './findMostRecentBlock.ts'
2
- export * from './hydratedBlockByNumber.ts'
@@ -1,10 +0,0 @@
1
- import { type Address, toAddress } from '@xylabs/sdk-js'
2
- import { type StepIdentity, StepSizes } from '@xyo-network/xl1-protocol-lib'
3
- import { keccak256 } from 'ethers'
4
-
5
- /** CompletedStepRewardAddress helper function. */
6
- export function completedStepRewardAddress({ block, step }: StepIdentity): Address {
7
- const resolvedStepSize = step < StepSizes.length ? StepSizes[step] : step
8
- const addressKey = new TextEncoder().encode(`${block}|${resolvedStepSize}`)
9
- return toAddress(keccak256(addressKey).slice(-40), { prefix: false })
10
- }
@@ -1,9 +0,0 @@
1
- import { type Address, toAddress } from '@xylabs/sdk-js'
2
- import { isDefined } from '@xylabs/sdk-js'
3
- import { keccak256 } from 'ethers'
4
-
5
- /** DerivedReceiveAddress helper function. */
6
- export function derivedReceiveAddress(address: Address, scope?: string): Address {
7
- const addressKey = new TextEncoder().encode(isDefined(scope) ? `${scope}|${address}` : address)
8
- return toAddress(keccak256(addressKey).slice(-40), { prefix: false })
9
- }
@@ -1,4 +0,0 @@
1
- export * from './completedStepRewardAddress.ts'
2
- export * from './derivedReceiveAddress.ts'
3
- export * from './stepBlockRange.ts'
4
- export * from './stepTransferIndex.ts'
@@ -1,9 +0,0 @@
1
- import type { StepIdentity, XL1BlockRange } from '@xyo-network/xl1-protocol-lib'
2
- import { asXL1BlockRange, StepSizes } from '@xyo-network/xl1-protocol-lib'
3
-
4
- /** StepBlockRange helper function. */
5
- export function stepBlockRange({ block, step }: StepIdentity): XL1BlockRange {
6
- const stepSize = StepSizes[step]
7
- const start = block - stepSize
8
- return asXL1BlockRange([start, start + stepSize - 1], { name: 'stepBlockRange' })
9
- }