@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,132 +0,0 @@
1
- import type { Hash } from '@xylabs/sdk-js'
2
- import {
3
- asHash, assertEx, isDefined,
4
- } from '@xylabs/sdk-js'
5
- import type {
6
- BlockViewer,
7
- TimeDomain, TimePayload, TimeSyncViewer,
8
- } from '@xyo-network/xl1-protocol-lib'
9
- import {
10
- asTimePayload, asXL1BlockNumber, BlockViewerMoniker, TimeSchema,
11
- TimeSyncViewerMoniker,
12
- } from '@xyo-network/xl1-protocol-lib'
13
- import type { Provider } from 'ethers'
14
-
15
- import type { CreatableProviderParams } from '../../CreatableProvider/index.ts'
16
- import { AbstractCreatableProvider, creatableProvider } from '../../CreatableProvider/index.ts'
17
-
18
- /** Parameters for SimpleTimeSyncViewer. */
19
- export interface SimpleTimeSyncViewerParams extends CreatableProviderParams {
20
- ethProvider?: Provider
21
- }
22
-
23
- /** SimpleTimeSyncViewer implementation. */
24
- @creatableProvider()
25
- export class SimpleTimeSyncViewer extends AbstractCreatableProvider<SimpleTimeSyncViewerParams> implements TimeSyncViewer {
26
- static readonly defaultMoniker = TimeSyncViewerMoniker
27
- static readonly dependencies = [BlockViewerMoniker]
28
- static readonly monikers = [TimeSyncViewerMoniker]
29
- moniker = SimpleTimeSyncViewer.defaultMoniker
30
-
31
- private _blockViewer?: BlockViewer
32
-
33
- protected get blockViewer() {
34
- return this._blockViewer!
35
- }
36
-
37
- protected get ethProvider() {
38
- return this.params.ethProvider
39
- }
40
-
41
- async convertTime(fromDomain: TimeDomain, toDomain: TimeDomain, from: number): Promise<number> {
42
- switch (fromDomain) {
43
- case 'xl1': {
44
- const [block, payloads] = assertEx(await this.blockViewer.blockByNumber(asXL1BlockNumber(from, true)), () => 'Block not found')
45
- const timeSchemaIndex = block.payload_schemas.indexOf(TimeSchema)
46
- const hash = timeSchemaIndex === -1 ? undefined : block.payload_hashes[timeSchemaIndex]
47
- const timePayload = asTimePayload(isDefined(hash) ? payloads.find(p => p._hash === hash) : undefined)
48
- if (timePayload === undefined) return 0
49
- switch (toDomain) {
50
- case 'xl1': {
51
- return timePayload.xl1 ?? 0
52
- }
53
- case 'epoch': {
54
- return timePayload.epoch ?? 0
55
- }
56
- case 'ethereum': {
57
- return timePayload.ethereum ?? 0
58
- }
59
- default: {
60
- throw new Error(`Unsupported to toDomain: ${toDomain}`)
61
- }
62
- }
63
- }
64
- default: {
65
- throw new Error(`Unsupported from fromDomain: ${fromDomain}`)
66
- }
67
- }
68
- }
69
-
70
- override async createHandler() {
71
- await super.createHandler()
72
- this._blockViewer = await this.locator.getInstance<BlockViewer>(BlockViewerMoniker)
73
- }
74
-
75
- async currentTime(domain: TimeDomain): Promise<[string, number]> {
76
- switch (domain) {
77
- case 'xl1': {
78
- return ['xl1', (await this.blockViewer.currentBlock())?.[0].block ?? -1]
79
- }
80
- case 'epoch': {
81
- return ['epoch', Date.now()]
82
- }
83
- case 'ethereum': {
84
- return ['ethereum', (await this.ethProvider?.getBlockNumber()) ?? 0]
85
- }
86
- default: {
87
- throw new Error(`Unknown time domain: ${domain}`)
88
- }
89
- }
90
- }
91
-
92
- async currentTimeAndHash(domain: TimeDomain): Promise<[number, Hash | null]> {
93
- switch (domain) {
94
- case 'xl1': {
95
- const [head] = await this.blockViewer.currentBlock()
96
- return [head.block, head._hash]
97
- }
98
- case 'epoch': {
99
- return [Date.now(), null]
100
- }
101
- case 'ethereum': {
102
- const provider = assertEx(this.ethProvider, () => 'Ethereum provider not configured')
103
- const blockNumber = (await provider.getBlockNumber()) ?? 0
104
- const block = await provider.getBlock(blockNumber)
105
- const blockHash = asHash(assertEx(block?.hash, () => 'Block hash not found'), true)
106
- return [blockNumber, blockHash]
107
- }
108
- default: {
109
- throw new Error(`Unknown time domain: ${domain}`)
110
- }
111
- }
112
- }
113
-
114
- async currentTimePayload(): Promise<TimePayload> {
115
- const [xl1, xl1Hash] = await this.currentTimeAndHash('xl1')
116
- const timePayload: TimePayload = {
117
- schema: TimeSchema,
118
- // this is for the previous block
119
- xl1,
120
- // this is for the previous block
121
- xl1Hash: assertEx(xl1Hash, () => 'No xl1 hash available from time sync service'),
122
- epoch: Date.now(),
123
- }
124
- if (isDefined(this.ethProvider)) {
125
- const [ethereum, ethHashOrNull] = await this.currentTimeAndHash('ethereum')
126
- const ethereumHash = asHash(ethHashOrNull, () => 'No ethereum hash available from time sync service')
127
- timePayload.ethereum = ethereum
128
- timePayload.ethereumHash = ethereumHash
129
- }
130
- return timePayload
131
- }
132
- }
@@ -1 +0,0 @@
1
- export * from './SimpleTimeSyncViewer.ts'
@@ -1,197 +0,0 @@
1
- import { assertEx, Promisable } from '@xylabs/sdk-js'
2
- import { PayloadBuilder } from '@xyo-network/sdk-js'
3
- import {
4
- AccountBalanceViewer,
5
- AccountBalanceViewerMoniker,
6
- asXL1BlockRange,
7
- BlockInvalidationConfig,
8
- BlockInvalidationQualification,
9
- BlockInvalidationViewer,
10
- BlockInvalidationViewerMoniker,
11
- BlockViewer,
12
- BlockViewerMoniker,
13
- ChainContractViewer,
14
- ChainContractViewerMoniker,
15
- ChainId,
16
- HydratedBlockStateValidationFunction,
17
- HydratedBlockValidationError,
18
- HydratedBlockValidationFunction,
19
- isChainQualifiedHeadConfig,
20
- isHydratedBlock,
21
- SignedHydratedBlock,
22
- type SignedHydratedBlockWithHashMeta,
23
- XL1BlockNumber,
24
- } from '@xyo-network/xl1-protocol-lib'
25
-
26
- import type { CreatableProviderParams } from '../../CreatableProvider/index.ts'
27
- import { AbstractCreatableProvider, creatableProvider } from '../../CreatableProvider/index.ts'
28
- import { findUncles, getWindowedChain } from '../../primitives/index.ts'
29
-
30
- /** Parameters for SimpleBlockInvalidationViewer. */
31
- export interface SimpleBlockInvalidationViewerParams extends CreatableProviderParams {
32
- maxUncleWindowSize?: number
33
- state?: HydratedBlockStateValidationFunction
34
- value?: HydratedBlockValidationFunction
35
- }
36
-
37
- /** SimpleBlockInvalidationViewer implementation. */
38
- @creatableProvider()
39
- export class SimpleBlockInvalidationViewer extends AbstractCreatableProvider<SimpleBlockInvalidationViewerParams> implements BlockInvalidationViewer {
40
- static readonly defaultMoniker = BlockInvalidationViewerMoniker
41
- static readonly dependencies = [AccountBalanceViewerMoniker, BlockViewerMoniker, ChainContractViewerMoniker]
42
- static readonly monikers = [BlockInvalidationViewerMoniker]
43
- moniker = SimpleBlockInvalidationViewer.defaultMoniker
44
-
45
- private _accountBalanceViewer!: AccountBalanceViewer
46
- private _blockViewer!: BlockViewer
47
- private _chainContractViewer!: ChainContractViewer
48
- private _uncleWindowedChainCache: SignedHydratedBlockWithHashMeta[] | null = null
49
-
50
- protected get blockViewer() {
51
- return this._blockViewer
52
- }
53
-
54
- protected get chainContractViewer() {
55
- return this._chainContractViewer
56
- }
57
-
58
- protected get maxUncleWindowSize() {
59
- return this.params.maxUncleWindowSize!
60
- }
61
-
62
- static override async paramsHandler(params: Partial<SimpleBlockInvalidationViewerParams>): Promise<SimpleBlockInvalidationViewerParams> {
63
- return {
64
- ...await super.paramsHandler(params),
65
- value: params.value,
66
- state: params.state,
67
- maxUncleWindowSize: params.maxUncleWindowSize ?? 100,
68
- } satisfies SimpleBlockInvalidationViewerParams
69
- }
70
-
71
- override async createHandler() {
72
- await super.createHandler()
73
- this._accountBalanceViewer = await this.locator.getInstance<AccountBalanceViewer>(AccountBalanceViewerMoniker)
74
- this._blockViewer = await this.locator.getInstance<BlockViewer>(BlockViewerMoniker)
75
- this._chainContractViewer = await this.locator.getInstance<ChainContractViewer>(ChainContractViewerMoniker)
76
- }
77
-
78
- async invalidateBlock(
79
- block: SignedHydratedBlock,
80
- config?: BlockInvalidationConfig,
81
- ): Promise<HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta> {
82
- return (await this.invalidateBlocks([block], config))[0]
83
- }
84
-
85
- async invalidateBlocks(
86
- blocks: SignedHydratedBlock[],
87
- config?: BlockInvalidationConfig,
88
- ): Promise<(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[]> {
89
- return (await this.qualifiedInvalidateBlocks(blocks, config))[0]
90
- }
91
-
92
- async invalidateUncle(
93
- blocks: SignedHydratedBlock[],
94
- config?: BlockInvalidationConfig,
95
- ): Promise<(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[]> {
96
- return (await this.qualifiedInvalidateUncle(blocks, config))[0]
97
- }
98
-
99
- async qualifiedInvalidateBlock(
100
- block: SignedHydratedBlockWithHashMeta,
101
- config?: BlockInvalidationConfig,
102
- ): Promise<[HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta, BlockInvalidationQualification]> {
103
- const result = (await this.qualifiedInvalidateBlocks([block], config))
104
- return [result[0][0], result[1]]
105
- }
106
-
107
- async qualifiedInvalidateBlocks(
108
- blocks: SignedHydratedBlock[],
109
- config?: BlockInvalidationConfig,
110
- ): Promise<[(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[], BlockInvalidationQualification]> {
111
- const { value, state } = config ?? {
112
- shape: true, links: true, state: true, head: undefined,
113
- }
114
-
115
- const blocksWithMeta = await Promise.all(blocks.map(b => Promise.all([PayloadBuilder.addHashMeta(b[0]), PayloadBuilder.addHashMeta(b[1])])))
116
-
117
- const head = isChainQualifiedHeadConfig(config)
118
- ? assertEx(
119
- (await this.blockViewer.blockByHash(config.head))?.[0],
120
- () => `Specified a head that is not in the chain [${config.head}]`,
121
- )
122
- : undefined
123
-
124
- const headBlock = head ?? (await this.blockViewer.currentBlock())[0]
125
-
126
- const validateProtocol = value ? this.doInvalidateProtocol.bind(this) : undefined
127
- const validateState = state ? this.doInvalidateState.bind(this) : undefined
128
-
129
- const chainIdAtBlockNumber = (blockNumber: XL1BlockNumber) => this.chainContractViewer.chainIdAtBlockNumber(blockNumber)
130
-
131
- const qualification = { head: headBlock._hash, range: asXL1BlockRange([0, headBlock.block], true) }
132
- const [protocolResults, stateResults] = await Promise.all([
133
- validateProtocol?.(blocksWithMeta, chainIdAtBlockNumber), validateState?.(blocksWithMeta, chainIdAtBlockNumber),
134
- ])
135
- const blockResults = blocksWithMeta.map((r, i) => {
136
- const errors = []
137
- if (protocolResults && !isHydratedBlock(protocolResults[i])) {
138
- errors.push(...(protocolResults[i]))
139
- }
140
- if (stateResults && !isHydratedBlock(stateResults[i])) {
141
- errors.push(...(stateResults[i]))
142
- }
143
- return errors.length === 0 ? r : errors
144
- })
145
- return [blockResults, qualification]
146
- }
147
-
148
- qualifiedInvalidateUncle(
149
- _blocks: SignedHydratedBlock[],
150
- _config?: BlockInvalidationConfig,
151
- ): Promise<[(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[], BlockInvalidationQualification]> {
152
- throw new Error('Method not implemented.')
153
- }
154
-
155
- private async doInvalidateProtocol(
156
- blocks: SignedHydratedBlockWithHashMeta[],
157
- chainIdAtBlockNumber: (blockNumber: XL1BlockNumber) => Promisable<ChainId>,
158
- ): Promise<(SignedHydratedBlockWithHashMeta | HydratedBlockValidationError[])[]> {
159
- return (await Promise.all(blocks.map(async (block) => {
160
- const errors = await this.params.value!(
161
- this.context,
162
- block,
163
- chainIdAtBlockNumber,
164
- )
165
- return (errors.length === 0) ? block : errors
166
- })))
167
- }
168
-
169
- private async doInvalidateState(
170
- blocks: SignedHydratedBlockWithHashMeta[],
171
- chainIdAtBlockNumber: (blockNumber: XL1BlockNumber) => Promisable<ChainId>,
172
- ): Promise<(SignedHydratedBlockWithHashMeta | HydratedBlockValidationError[])[]> {
173
- const windowedUncleChain = await this.updateWindowedChainCache()
174
-
175
- const uncles = findUncles(this.context, windowedUncleChain, blocks)
176
-
177
- if (uncles.length !== 1) {
178
- this.logger?.warn(JSON.stringify({ uncles, blocks }, null, 2))
179
- this.logger?.warn(JSON.stringify(windowedUncleChain, null, 2))
180
- throw new Error(`No uncles or greater than one uncle found in block validation, which is not supported [${uncles.length}, ${blocks.length}]`)
181
- }
182
- return (await Promise.all(uncles[0].map(async (block) => {
183
- const errors = await this.params.state!(
184
- {
185
- ...this.context, chainIdAtBlockNumber, accountBalance: this._accountBalanceViewer,
186
- },
187
- block,
188
- )
189
- return (errors.length === 0) ? block : errors
190
- })))
191
- }
192
-
193
- private async updateWindowedChainCache() {
194
- this._uncleWindowedChainCache = await getWindowedChain(this.context, this.blockViewer, this.maxUncleWindowSize, this._uncleWindowedChainCache ?? [])
195
- return [...this._uncleWindowedChainCache]
196
- }
197
- }
@@ -1 +0,0 @@
1
- export * from './SimpleTransactionInvalidationViewer.ts'
@@ -1,173 +0,0 @@
1
- import { assertEx } from '@xylabs/sdk-js'
2
- import { PayloadBuilder } from '@xyo-network/sdk-js'
3
- import {
4
- AccountBalanceViewer,
5
- AccountBalanceViewerMoniker,
6
- asXL1BlockRange,
7
- BlockViewer,
8
- BlockViewerMoniker,
9
- ChainContractViewer,
10
- ChainContractViewerMoniker,
11
- ChainId,
12
- HydratedTransactionStateValidationFunction,
13
- HydratedTransactionValidationError,
14
- HydratedTransactionValidationFunction,
15
- isChainQualifiedHeadConfig,
16
- isHydratedTransaction,
17
- SignedHydratedTransaction,
18
- type SignedHydratedTransactionWithHashMeta,
19
- TransactionValidationConfig,
20
- TransactionValidationQualification,
21
- TransactionValidationViewer,
22
- TransactionValidationViewerMoniker,
23
- } from '@xyo-network/xl1-protocol-lib'
24
-
25
- import type { CreatableProviderParams } from '../../CreatableProvider/index.ts'
26
- import { AbstractCreatableProvider, creatableProvider } from '../../CreatableProvider/index.ts'
27
-
28
- /** Parameters for SimpleTransactionValidationViewer. */
29
- export interface SimpleTransactionValidationViewerParams extends CreatableProviderParams {
30
- maxUncleWindowSize?: number
31
- protocol?: HydratedTransactionValidationFunction
32
- state?: HydratedTransactionStateValidationFunction
33
- }
34
-
35
- /** SimpleTransactionValidationViewer implementation. */
36
- @creatableProvider()
37
- export class SimpleTransactionValidationViewer extends
38
- AbstractCreatableProvider<SimpleTransactionValidationViewerParams> implements TransactionValidationViewer {
39
- static readonly defaultMoniker = TransactionValidationViewerMoniker
40
- static readonly dependencies = [AccountBalanceViewerMoniker, ChainContractViewerMoniker, BlockViewerMoniker]
41
- static readonly monikers = [TransactionValidationViewerMoniker]
42
- moniker = SimpleTransactionValidationViewer.defaultMoniker
43
-
44
- private _accountBalanceViewer!: AccountBalanceViewer
45
- private _blockViewer!: BlockViewer
46
- private _chainContractViewer!: ChainContractViewer
47
-
48
- protected get blockViewer() {
49
- return this._blockViewer
50
- }
51
-
52
- protected get chainContractViewer() {
53
- return this._chainContractViewer
54
- }
55
-
56
- protected get maxUncleWindowSize() {
57
- return this.params.maxUncleWindowSize!
58
- }
59
-
60
- static override async paramsHandler(params: Partial<SimpleTransactionValidationViewerParams>): Promise<SimpleTransactionValidationViewerParams> {
61
- return {
62
- ...await super.paramsHandler(params),
63
- protocol: params.protocol,
64
- state: params.state,
65
- maxUncleWindowSize: params.maxUncleWindowSize ?? 100,
66
- } satisfies SimpleTransactionValidationViewerParams
67
- }
68
-
69
- override async createHandler() {
70
- await super.createHandler()
71
- this._accountBalanceViewer = await this.locator.getInstance<AccountBalanceViewer>(AccountBalanceViewerMoniker)
72
- this._chainContractViewer = await this.locator.getInstance<ChainContractViewer>(ChainContractViewerMoniker)
73
- this._blockViewer = await this.locator.getInstance<BlockViewer>(BlockViewerMoniker)
74
- }
75
-
76
- async qualifiedValidateTransaction(
77
- block: SignedHydratedTransactionWithHashMeta,
78
- config?: TransactionValidationConfig,
79
- ): Promise<[HydratedTransactionValidationError[] | SignedHydratedTransactionWithHashMeta, TransactionValidationQualification]> {
80
- const result = (await this.qualifiedValidateTransactions([block], config))
81
- return [result[0][0], result[1]]
82
- }
83
-
84
- async qualifiedValidateTransactions(
85
- transactions: SignedHydratedTransaction[],
86
- config?: TransactionValidationConfig,
87
- ): Promise<[(HydratedTransactionValidationError[] | SignedHydratedTransactionWithHashMeta)[], TransactionValidationQualification]> {
88
- const { value, state } = config ?? {
89
- shape: true, links: true, state: true, head: undefined,
90
- }
91
-
92
- const transactionsWithMeta = await Promise.all(transactions.map(b => Promise.all([PayloadBuilder.addHashMeta(b[0]), PayloadBuilder.addHashMeta(b[1])])))
93
-
94
- const head = isChainQualifiedHeadConfig(config)
95
- ? assertEx(
96
- (await this.blockViewer.blockByHash(config.head))?.[0],
97
- () => `Specified a head that is not in the chain [${config.head}]`,
98
- )
99
- : undefined
100
-
101
- const headBlock = head ?? (await this.blockViewer.currentBlock())[0]
102
-
103
- const validateProtocol = value ? this.doValidateProtocol.bind(this) : undefined
104
- const validateState = state ? this.doValidateState.bind(this) : undefined
105
-
106
- const chainId = headBlock.chain
107
-
108
- const qualification = { head: headBlock._hash, range: asXL1BlockRange([0, headBlock.block], true) }
109
- const [protocolResults, stateResults] = await Promise.all([
110
- validateProtocol?.(transactionsWithMeta, chainId), validateState?.(transactionsWithMeta, chainId),
111
- ])
112
- const blockResults = transactionsWithMeta.map((r, i) => {
113
- const errors = []
114
- if (protocolResults && !isHydratedTransaction(protocolResults[i])) {
115
- errors.push(...(protocolResults[i]))
116
- }
117
- if (stateResults && !isHydratedTransaction(stateResults[i])) {
118
- errors.push(...(stateResults[i]))
119
- }
120
- return errors.length === 0 ? r : errors
121
- })
122
- return [blockResults, qualification]
123
- }
124
-
125
- qualifiedValidateUncle(
126
- _transactions: SignedHydratedTransaction[],
127
- _config?: TransactionValidationConfig,
128
- ): Promise<[(HydratedTransactionValidationError[] | SignedHydratedTransactionWithHashMeta)[], TransactionValidationQualification]> {
129
- throw new Error('Method not implemented.')
130
- }
131
-
132
- async validateTransaction(
133
- block: SignedHydratedTransaction,
134
- config?: TransactionValidationConfig,
135
- ): Promise<HydratedTransactionValidationError[] | SignedHydratedTransactionWithHashMeta> {
136
- return (await this.validateTransactions([block], config))[0]
137
- }
138
-
139
- async validateTransactions(
140
- transactions: SignedHydratedTransaction[],
141
- config?: TransactionValidationConfig,
142
- ): Promise<(HydratedTransactionValidationError[] | SignedHydratedTransactionWithHashMeta)[]> {
143
- return (await this.qualifiedValidateTransactions(transactions, config))[0]
144
- }
145
-
146
- private async doValidateProtocol(
147
- transactions: SignedHydratedTransactionWithHashMeta[],
148
- chainId: ChainId,
149
- ): Promise<(SignedHydratedTransactionWithHashMeta | HydratedTransactionValidationError[])[]> {
150
- return (await Promise.all(transactions.map(async (tx) => {
151
- const errors = await this.params.protocol!(
152
- { ...this.context, chainId },
153
- tx,
154
- )
155
- return (errors.length === 0) ? tx : errors
156
- })))
157
- }
158
-
159
- private async doValidateState(
160
- transactions: SignedHydratedTransactionWithHashMeta[],
161
- chainId: ChainId,
162
- ): Promise<(SignedHydratedTransactionWithHashMeta | HydratedTransactionValidationError[])[]> {
163
- return (await Promise.all(transactions.map(async (tx) => {
164
- const errors = await this.params.state!(
165
- {
166
- ...this.context, chainId, accountBalanceViewer: this._accountBalanceViewer, blockViewer: this.blockViewer,
167
- },
168
- tx,
169
- )
170
- return (errors.length === 0) ? tx : errors
171
- })))
172
- }
173
- }
@@ -1 +0,0 @@
1
- export * from './SimpleTransactionValidationViewer.ts'