@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,19 +0,0 @@
1
- import { assertEx } from '@xylabs/sdk-js'
2
- import { StepSizes } from '@xyo-network/xl1-protocol-lib'
3
-
4
- /** StepTransferIndex helper function. */
5
- export function stepTransferIndex(block: number, step: number) {
6
- let rewardTransferCount = 0
7
- let rewardTransferIndex = -1
8
- for (let i = 3; i < StepSizes.length; i++) {
9
- const stepSize = StepSizes[i]
10
- if (block % stepSize === 0) {
11
- if (stepSize === StepSizes[step]) {
12
- rewardTransferIndex = rewardTransferCount
13
- }
14
- rewardTransferCount++
15
- }
16
- }
17
- assertEx(rewardTransferIndex >= 0, () => `Could not find step size for step ${step} at block ${block}`)
18
- return [rewardTransferIndex, rewardTransferCount]
19
- }
@@ -1,24 +0,0 @@
1
- import type { WithHashMeta } from '@xyo-network/sdk-js'
2
- import type { AllowedBlockPayload, HydratedTransactionWithHashMeta } from '@xyo-network/xl1-protocol-lib'
3
- import { isAllowedBlockPayload } from '@xyo-network/xl1-protocol-lib'
4
-
5
- const ELEVATE_OPCODE = 'elevate'
6
-
7
- /** ElevatedPayloads helper function. */
8
- export function elevatedPayloads([tx, payloads]: HydratedTransactionWithHashMeta) {
9
- const opCodes = (tx.script ?? []).filter(operation => operation.startsWith(`${ELEVATE_OPCODE}|`))
10
- const elevatedPayloads: WithHashMeta<AllowedBlockPayload>[] = []
11
- for (const opCode of opCodes) {
12
- const [code, hash] = opCode.split('|')
13
- if (code === ELEVATE_OPCODE) {
14
- const elevatedPayload = payloads.find(payload => payload._hash === hash)
15
- if (isAllowedBlockPayload(elevatedPayload)) {
16
- elevatedPayloads.push(elevatedPayload)
17
- }
18
- }
19
- }
20
- if (opCodes.length === elevatedPayloads.length) {
21
- return elevatedPayloads
22
- }
23
- throw new Error('Not all elevated payloads could be found in the transaction payloads')
24
- }
@@ -1 +0,0 @@
1
- export * from './elevatedPayloads.ts'
@@ -1,9 +0,0 @@
1
- import type { SignedHydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol-lib'
2
-
3
- import { scoreUncle } from './scoreUncle.ts'
4
-
5
- /** FindBestUncle helper function. */
6
- export function findBestUncle(finalizedWindowedChain: SignedHydratedBlockWithHashMeta[], uncles: SignedHydratedBlockWithHashMeta[][]) {
7
- const scores = uncles.map(uncle => ([scoreUncle(finalizedWindowedChain, uncle), uncle] as const)).toSorted((a, b) => b[0] - a[0])
8
- return scores[0]?.[1] ?? finalizedWindowedChain
9
- }
@@ -1,75 +0,0 @@
1
- import {
2
- assertEx,
3
- exists, type Hash,
4
- } from '@xylabs/sdk-js'
5
- import type { BaseContext, SignedHydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol-lib'
6
- import { isTransactionBoundWitness } from '@xyo-network/xl1-protocol-lib'
7
-
8
- function blocksToChains(blocks: SignedHydratedBlockWithHashMeta[]) {
9
- const chains: SignedHydratedBlockWithHashMeta[][] = []
10
- const map = new Map<Hash, SignedHydratedBlockWithHashMeta>()
11
- for (const block of blocks) {
12
- map.set(block[0]._hash, block)
13
- }
14
- for (const block of blocks) {
15
- let uncle: SignedHydratedBlockWithHashMeta[] = [block]
16
- let previous = block[0].previous ? map.get(block[0].previous) : undefined
17
- while (previous) {
18
- if (previous[0].block === (uncle[0][0].block - 1)) {
19
- uncle.unshift(previous)
20
- previous = previous[0].previous ? map.get(previous[0].previous) : undefined
21
- } else {
22
- // block number sequence is off
23
- uncle = []
24
- break
25
- }
26
- }
27
- if (uncle.length > 0) {
28
- chains.push(uncle)
29
- }
30
- }
31
- return chains
32
- }
33
-
34
- function toValidUncle(
35
- _context: BaseContext,
36
- finalizedWindowedChain: SignedHydratedBlockWithHashMeta[],
37
- possibleUncle: SignedHydratedBlockWithHashMeta[],
38
- ) {
39
- const finalizedWindowStartBlockNumber = finalizedWindowedChain.at(0)?.[0].block ?? -1
40
- const finalizedHead = assertEx(finalizedWindowedChain.at(-1), () => 'finalizedWindowedChain is empty')
41
- // prune the chain to match the finalized head
42
-
43
- const prunedPossibleUncle = possibleUncle.filter(b => b[0].block > finalizedHead[0].block)
44
-
45
- if (prunedPossibleUncle.length === 0) {
46
- return
47
- }
48
-
49
- if (prunedPossibleUncle[0][0].block !== finalizedHead[0].block + 1) {
50
- // uncle does not build on finalized head (block number mismatch)
51
- return
52
- }
53
- if (prunedPossibleUncle[0][0].previous !== finalizedHead[0]._hash) {
54
- // uncle does not build on finalized head (previous hash mismatch)
55
- return
56
- }
57
- const allUncleTransactions = prunedPossibleUncle.flatMap(b => b[1]).filter(isTransactionBoundWitness)
58
- const allFinalizedTransactions = finalizedWindowedChain.flatMap(b => b[1]).filter(isTransactionBoundWitness)
59
- const txPossiblyBeforeWindow = allUncleTransactions.find(tx => tx.nbf < finalizedWindowStartBlockNumber)
60
- if (txPossiblyBeforeWindow) {
61
- // uncle has a transaction that is valid before the finalized window
62
- return
63
- }
64
- const txExistsInWindow = allUncleTransactions.find(tx => allFinalizedTransactions.find(finalTx => finalTx._hash === tx._hash))
65
- if (txExistsInWindow) {
66
- // uncle has a transaction that is already in the finalized window
67
- return
68
- }
69
- return prunedPossibleUncle
70
- }
71
-
72
- /** FindUncles helper function. */
73
- export function findUncles(context: BaseContext, finalizedWindowedChain: SignedHydratedBlockWithHashMeta[], blocks: SignedHydratedBlockWithHashMeta[]) {
74
- return blocksToChains(blocks).map(chain => toValidUncle(context, finalizedWindowedChain, chain)).filter(exists)
75
- }
@@ -1,3 +0,0 @@
1
- export * from './findBestUncle.ts'
2
- export * from './findUncles.ts'
3
- export * from './scoreUncle.ts'
@@ -1,7 +0,0 @@
1
- import type { SignedHydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol-lib'
2
-
3
- /** ScoreUncle helper function. */
4
- export function scoreUncle(finalizedWindowedChain: SignedHydratedBlockWithHashMeta[], blocks: SignedHydratedBlockWithHashMeta[]) {
5
- // TODO: More than length check
6
- return blocks.length
7
- }
@@ -1,13 +0,0 @@
1
- import type {
2
- Address, Hash, Promisable,
3
- } from '@xylabs/sdk-js'
4
- import type { AttoXL1 } from '@xyo-network/xl1-protocol-lib'
5
-
6
- /** Provider interface for querying transfer totals by account at a given chain head */
7
- export interface AccountTransfersProvider {
8
- transfer(head: Hash, account: Address): Promisable<AttoXL1>
9
- transfers(head: Hash, accounts: Address[]): Promisable<Partial<Record<Address, AttoXL1>>>
10
- }
11
-
12
- /** Service interface for querying account transfers, extending AccountTransfersProvider */
13
- export interface AccountTransfersService extends AccountTransfersProvider {}
@@ -1,11 +0,0 @@
1
- import type {
2
- Addressable,
3
- BlockBoundWitness, IterableRepository,
4
- SignedHydratedBlockWithHashMeta,
5
- } from '@xyo-network/xl1-protocol-lib'
6
-
7
- /** Repository type for producing the next block from a block bound witness */
8
- export type NextBlockProducer = IterableRepository<BlockBoundWitness, SignedHydratedBlockWithHashMeta | undefined>
9
-
10
- /** Service interface for an addressable block producer */
11
- export interface BlockProducerService extends Addressable, NextBlockProducer {}
@@ -1,4 +0,0 @@
1
- /** Base interface for chain service implementations */
2
- export interface BaseChainService {
3
-
4
- }
@@ -1,8 +0,0 @@
1
- import type { Hash } from '@xylabs/sdk-js'
2
-
3
- import type { BaseChainService } from './BaseChainService.ts'
4
-
5
- /** Service interface for tracking the current chain head hash */
6
- export interface ChainHeadService extends BaseChainService {
7
- head: Hash | null
8
- }
@@ -1,6 +0,0 @@
1
- import type { ChainContractViewer, ChainStakeViewer } from '@xyo-network/xl1-protocol-lib'
2
-
3
- import type { BaseChainService } from './BaseChainService.ts'
4
-
5
- /** @deprecated use ChainContractViewer, StakeTotalsViewer, StakeRunner instead */
6
- export interface ChainService extends Omit<ChainContractViewer, 'moniker'>, Omit<ChainStakeViewer, 'moniker'>, BaseChainService {}
@@ -1,3 +0,0 @@
1
- export * from './BaseChainService.ts'
2
- export * from './ChainHeadService.ts'
3
- export * from './ChainService.ts'
@@ -1,14 +0,0 @@
1
- import type { Address } from '@xylabs/sdk-js'
2
- import type { WithHashMeta } from '@xyo-network/sdk-js'
3
- import type { BlockBoundWitness } from '@xyo-network/xl1-protocol-lib'
4
-
5
- /** Service for determining the block producer committee for the next block */
6
- export interface ElectionService {
7
-
8
- /**
9
- * Given the current block, get the leader for the next block
10
- * @param current The previous block
11
- */
12
- getCreatorCommitteeForNextBlock(current: WithHashMeta<BlockBoundWitness>): Promise<Address[]>
13
-
14
- }
@@ -1,4 +0,0 @@
1
- import type { NetworkStakeStepRewardViewer } from '@xyo-network/xl1-protocol-lib'
2
-
3
- /** Service interface for viewing network stake step rewards */
4
- export interface NetworkStakeStepRewardService extends NetworkStakeStepRewardViewer {}
@@ -1,13 +0,0 @@
1
- import type { CreatableParams } from '@xylabs/sdk-js'
2
- import type { AccountInstance } from '@xyo-network/sdk-js'
3
- import type { OpenTelemetryProviders } from '@xyo-network/xl1-protocol-lib'
4
-
5
- /** Base parameters for all services, including creatable params and OpenTelemetry providers */
6
- export interface BaseServiceParams extends CreatableParams, OpenTelemetryProviders {
7
-
8
- }
9
-
10
- /** Service parameters that include an account instance for signing operations */
11
- export interface BaseAccountableServiceParams extends BaseServiceParams {
12
- account: AccountInstance
13
- }
@@ -1,7 +0,0 @@
1
- import type { Hash } from '@xylabs/sdk-js'
2
- import type { SignedHydratedTransaction } from '@xyo-network/xl1-protocol-lib'
3
-
4
- /** Service for retrieving pending transactions from the mempool */
5
- export interface PendingTransactionsService {
6
- getPendingTransactions(head: Hash, limit: number, timeout?: number): Promise<SignedHydratedTransaction[]>
7
- }
@@ -1,11 +0,0 @@
1
- import type { Hash, Promisable } from '@xylabs/sdk-js'
2
- import type { Schema } from '@xyo-network/sdk-js'
3
-
4
- /** Provider interface for querying schema counts at a given chain head */
5
- export interface SchemasProvider {
6
- schema(head: Hash, schema: Schema): Promisable<number>
7
- schemas(head: Hash, schemas: Schema[]): Promisable<Partial<Record<Schema, number>>>
8
- }
9
-
10
- /** Service interface for querying schema counts, extending SchemasProvider */
11
- export interface SchemasService extends SchemasProvider {}
@@ -1,50 +0,0 @@
1
- import type { Hash, JsonValue } from '@xylabs/sdk-js'
2
- import { AsObjectFactory } from '@xylabs/sdk-js'
3
- import type { Payload, WithStorageMeta } from '@xyo-network/sdk-js'
4
- import {
5
- asSchema, isPayloadOfSchemaType, isStorageMeta,
6
- } from '@xyo-network/sdk-js'
7
-
8
- /** Fields stored by a chain indexing service to track its indexing progress and state */
9
- export interface ChainIndexingServiceStateFields<T extends JsonValue = JsonValue> {
10
- /**
11
- * The hash of the last block that this service has indexing
12
- */
13
- endBlockHash: Hash
14
- /**
15
- * The hash of the block that the service started indexing. If undefined, the service is
16
- * assumed to have started indexing from the genesis block
17
- */
18
- startBlockHash?: Hash
19
- /**
20
- * The indexed state for the range
21
- */
22
- state: T
23
- }
24
- /** Schema identifier for chain indexing service state payloads */
25
- export const ChainIndexingServiceStateSchema = asSchema('network.xyo.chain.indexing.service.state', true)
26
- /** Schema type for ChainIndexingServiceState payloads. */
27
- export type ChainIndexingServiceStateSchema = typeof ChainIndexingServiceStateSchema
28
-
29
- /**
30
- * The result of a ChainIndexingServiceState
31
- */
32
- export type ChainIndexingServiceState<T extends JsonValue = JsonValue> = Payload<ChainIndexingServiceStateFields<T>, ChainIndexingServiceStateSchema>
33
-
34
- /**
35
- * Identity functions for determining if an object is an ChainIndexingServiceState
36
- */
37
- export const isChainIndexingServiceState = <T extends JsonValue = JsonValue>(payload?: unknown): payload is ChainIndexingServiceState<T> => {
38
- return isPayloadOfSchemaType<ChainIndexingServiceState<T>>(ChainIndexingServiceStateSchema)(payload)
39
- }
40
- /** Type assertion factory for ChainIndexingServiceState payloads */
41
- export const asChainIndexingServiceState = AsObjectFactory.create<ChainIndexingServiceState<JsonValue>>(isChainIndexingServiceState)
42
-
43
- /** Type guard for ChainIndexingServiceState with storage metadata */
44
- export const isChainIndexingServiceStateWithStorageMeta
45
- = <T extends JsonValue = JsonValue>(value: unknown): value is WithStorageMeta<ChainIndexingServiceState<T>> =>
46
- isChainIndexingServiceState<T>(value) && isStorageMeta(value)
47
-
48
- /** Type assertion factory for ChainIndexingServiceState with storage metadata */
49
- export const asChainIndexingServiceStateWithStorageMeta
50
- = AsObjectFactory.create<WithStorageMeta<ChainIndexingServiceState>>(isChainIndexingServiceStateWithStorageMeta)
@@ -1,35 +0,0 @@
1
- import type { Address } from '@xylabs/sdk-js'
2
- import type { Intent } from '@xyo-network/xl1-protocol-lib'
3
-
4
- /** Service for managing and querying stake intent declarations on the chain */
5
- export interface StakeIntentService {
6
-
7
- /**
8
- * Gets the declared ranges for an address based on historical on-chain data
9
- * @param address The address to get the declared ranges for
10
- * @param intent The declared intent to filter for
11
- */
12
- getDeclaredCandidateRanges(address: Address, intent: Intent): Promise<Readonly<Readonly<[number, number]>[]>>
13
-
14
- /**
15
- * Gets the declared candidates for a block based on historical on-chain data
16
- * @param block The block number to get the declared candidates for
17
- * @param intent The declared intent to filter for
18
- */
19
- getDeclaredCandidatesForBlock(block: number, intent: Intent): Promise<Address[]>
20
-
21
- /**
22
- * Gets the required minimum stake for a given intent
23
- * @param intent The declared intent to filter for
24
- * @returns The required minimum stake for the intent
25
- */
26
- getRequiredMinimumStakeForIntent(intent: Intent): bigint
27
-
28
- /**
29
- * Checks if the address is staked for a block for a given intent
30
- * @param block The block number to check
31
- * @param intent The declared intent to filter for
32
- * @param address The address to check
33
- */
34
- isStakedForBlock(block: number, intent: Intent, address: Address): Promise<boolean>
35
- }
@@ -1,2 +0,0 @@
1
- export * from './ChainIndexingServiceStateSchema.ts'
2
- export * from './StakeIntentService.ts'
@@ -1,8 +0,0 @@
1
- export * from './AccountTransfersService.ts'
2
- export * from './BlockProducerService.ts'
3
- export * from './Chain/index.ts'
4
- export * from './Election.ts'
5
- export * from './NetworkStakeService.ts'
6
- export * from './PendingTransactionsService.ts'
7
- export * from './SchemasService.ts'
8
- export * from './StakeIntentService/index.ts'
@@ -1,93 +0,0 @@
1
- import { isDefined } from '@xylabs/sdk-js'
2
- import {
3
- Position, StakeEvent, StakeEventFilter, StakeEventName, StakeEventsViewer, StakeEventsViewerMoniker,
4
- } from '@xyo-network/xl1-protocol-lib'
5
-
6
- import {
7
- AbstractCreatableProvider, creatableProvider, CreatableProviderParams,
8
- } from '../../CreatableProvider/index.ts'
9
-
10
- /** Parameters for SimpleStakeEvents. */
11
- export interface SimpleStakeEventsParams extends CreatableProviderParams {
12
- positions: Position[]
13
- }
14
-
15
- /** SimpleStakeEventsViewer implementation. */
16
- @creatableProvider()
17
- export class SimpleStakeEventsViewer extends AbstractCreatableProvider<SimpleStakeEventsParams> implements StakeEventsViewer {
18
- static readonly defaultMoniker = StakeEventsViewerMoniker
19
- static readonly dependencies = []
20
- static readonly monikers = [StakeEventsViewerMoniker]
21
- moniker = SimpleStakeEventsViewer.defaultMoniker
22
-
23
- protected get positions() {
24
- return this.params.positions
25
- }
26
-
27
- positionCount(range: [number, number | 'latest']): number {
28
- return this.positionsFromRange(range).length
29
- }
30
-
31
- stakeEvents<TName extends StakeEventName>(range: [number, number | 'latest'], { name }: StakeEventFilter<TName> = {}): StakeEvent<TName>[] {
32
- const positions = this.positionsFromRange(range)
33
- const events = this.eventsFromPositions(positions)
34
- if (isDefined(name)) {
35
- return events.filter((event): event is StakeEvent<TName> => event.name === name)
36
- }
37
- return events as StakeEvent<TName>[]
38
- }
39
-
40
- protected override async startHandler(): Promise<void> {
41
- await super.startHandler()
42
- }
43
-
44
- private eventsFromPositions(positions: Position[]): StakeEvent<StakeEventName>[] {
45
- const events = positions.map((position) => {
46
- const events: StakeEvent<StakeEventName>[] = [{
47
- name: 'StakeAdded',
48
- time: position.addBlock,
49
- args: {
50
- staker: position.staker,
51
- staked: position.staked,
52
- amount: position.amount,
53
- id: position.id,
54
- },
55
- }]
56
- if (position.removeBlock !== 0) {
57
- events.push({
58
- name: 'StakeRemoved',
59
- time: position.removeBlock,
60
- args: {
61
- staker: position.staker,
62
- staked: position.staked,
63
- amount: position.amount,
64
- id: position.id,
65
- },
66
- })
67
- }
68
- if (position.withdrawBlock !== 0) {
69
- events.push({
70
- name: 'StakeWithdrawn',
71
- time: position.withdrawBlock,
72
- args: {
73
- staker: position.staker,
74
- staked: position.staked,
75
- amount: position.amount,
76
- id: position.id,
77
- },
78
- })
79
- }
80
- return events
81
- })
82
- return events.flat()
83
- }
84
-
85
- private positionsFromRange(range: [number, number | 'latest']): Position[] {
86
- const startBlock = range[0]
87
- const endBlock = range[1] === 'latest' ? Number.MAX_SAFE_INTEGER : range[1]
88
- const filteredPositions = this.positions?.filter((position) => {
89
- return position.addBlock <= endBlock && (position.removeBlock === 0 || position.removeBlock >= startBlock)
90
- }) ?? []
91
- return filteredPositions
92
- }
93
- }
@@ -1 +0,0 @@
1
- export * from './SimpleStakeEventsViewer.ts'
@@ -1,116 +0,0 @@
1
- import { type Address, asAddress } from '@xylabs/sdk-js'
2
- import { assertEx } from '@xylabs/sdk-js'
3
- import {
4
- StakeTotalsViewer, StakeTotalsViewerMoniker,
5
- StakeViewer,
6
- StakeViewerMoniker,
7
- } from '@xyo-network/xl1-protocol-lib'
8
-
9
- import {
10
- AbstractCreatableProvider, creatableProvider, CreatableProviderParams,
11
- } from '../../CreatableProvider/index.ts'
12
-
13
- /** Parameters for SimpleStakeTotalsViewer. */
14
- export interface SimpleStakeTotalsViewerParams extends CreatableProviderParams {
15
-
16
- }
17
-
18
- /** SimpleStakeTotalsViewer implementation. */
19
- @creatableProvider()
20
- export class SimpleStakeTotalsViewer extends AbstractCreatableProvider<SimpleStakeTotalsViewerParams> implements StakeTotalsViewer {
21
- static readonly defaultMoniker = StakeTotalsViewerMoniker
22
- static readonly dependencies = [StakeTotalsViewerMoniker]
23
- static readonly monikers = [StakeTotalsViewerMoniker]
24
- moniker = SimpleStakeTotalsViewer.defaultMoniker
25
-
26
- private _stakeViewer!: StakeViewer
27
-
28
- get stakeViewer() {
29
- return this._stakeViewer
30
- }
31
-
32
- async active(time = Number.MAX_SAFE_INTEGER) {
33
- let active = 0n
34
- const positions = await this.stakeViewer.activeStakes()
35
- for (const position of positions) {
36
- if (position.removeBlock === 0 || position.removeBlock > time) {
37
- active += position.amount
38
- }
39
- }
40
- return active
41
- }
42
-
43
- async activeByStaked(staked: Address, time = Number.MAX_SAFE_INTEGER) {
44
- let active = 0n
45
- const positions = await this.stakeViewer.activeStakes()
46
- for (const position of positions) {
47
- if ((position.removeBlock === 0 || position.removeBlock > time) && asAddress(position.staked) === asAddress(staked)) {
48
- active += position.amount
49
- }
50
- }
51
- return active
52
- }
53
-
54
- async activeByStaker(staker: Address, time = Number.MAX_SAFE_INTEGER) {
55
- let active = 0n
56
- const positions = await this.stakeViewer.activeStakes()
57
- for (const position of positions) {
58
- if ((position.removeBlock === 0 || position.removeBlock > time) && asAddress(position.staker) === asAddress(staker)) {
59
- active += position.amount
60
- }
61
- }
62
- return active
63
- }
64
-
65
- override async createHandler() {
66
- await super.createHandler()
67
- this._stakeViewer = assertEx(
68
- (await this.locateAndCreate<StakeViewer>(StakeViewerMoniker)),
69
- () => 'Failed to create StakeViewer',
70
- )
71
- }
72
-
73
- async pending(time = Number.MAX_SAFE_INTEGER): Promise<bigint> {
74
- let pending = 0n
75
- const positions = await this.stakeViewer.removedStakes()
76
- for (const position of positions) {
77
- if ((position.removeBlock !== 0 && position.removeBlock <= time) && (position.withdrawBlock === 0 || position.withdrawBlock > time)) {
78
- pending += position.amount
79
- }
80
- }
81
- return pending
82
- }
83
-
84
- async pendingByStaker(staker: Address, time = Number.MAX_SAFE_INTEGER) {
85
- let pending = 0n
86
- const positions = await this.stakeViewer.removedStakes()
87
- for (const position of positions) {
88
- if ((position.removeBlock !== 0 && position.removeBlock <= time) && (position.withdrawBlock === 0 || position.withdrawBlock > time) && asAddress(position.staker) === asAddress(staker)) {
89
- pending += position.amount
90
- }
91
- }
92
- return pending
93
- }
94
-
95
- async withdrawn(time = Number.MAX_SAFE_INTEGER): Promise<bigint> {
96
- let withdrawn = 0n
97
- const positions = await this.stakeViewer.withdrawnStakes()
98
- for (const position of positions) {
99
- if (position.withdrawBlock !== 0 && position.withdrawBlock <= time) {
100
- withdrawn += position.amount
101
- }
102
- }
103
- return withdrawn
104
- }
105
-
106
- async withdrawnByStaker(staker: Address, time = Number.MAX_SAFE_INTEGER): Promise<bigint> {
107
- let withdrawn = 0n
108
- const positions = await this.stakeViewer.withdrawnStakes()
109
- for (const position of positions) {
110
- if (position.withdrawBlock !== 0 && position.withdrawBlock <= time && asAddress(position.staker) === asAddress(staker)) {
111
- withdrawn += position.amount
112
- }
113
- }
114
- return withdrawn
115
- }
116
- }
@@ -1 +0,0 @@
1
- export * from './SimpleStakeTotalsViewer.ts'