@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,137 +0,0 @@
1
- import type {
2
- Address, Hash, Hex,
3
- } from '@xylabs/sdk-js'
4
- import {
5
- assertEx, BigIntToJsonZod, isDefined,
6
- } from '@xylabs/sdk-js'
7
- import { type Payload, type WithHashMeta } from '@xyo-network/sdk-js'
8
- import { PayloadBuilder } from '@xyo-network/sdk-js'
9
- import type {
10
- AllowedBlockPayload, AttoXL1, ConfirmSubmittedTransactionOptions,
11
- DataLakeRunner, SignedHydratedTransaction, SignedHydratedTransactionWithHashMeta, TransactionOptions, Transfer, UnsignedHydratedTransaction,
12
- XyoConnection, XyoGatewayRunner, XyoSigner,
13
- } from '@xyo-network/xl1-protocol-lib'
14
- import {
15
- asXL1BlockNumber, DataLakeRunnerMoniker, isSignedHydratedTransaction, TransferSchema, XyoConnectionMoniker, XyoGatewayMoniker, XyoGatewayRunnerMoniker, XyoSignerMoniker,
16
- } from '@xyo-network/xl1-protocol-lib'
17
-
18
- import type { CreatableProviderParams } from '../../CreatableProvider/index.ts'
19
- import { AbstractCreatableProvider } from '../../CreatableProvider/index.ts'
20
- import {
21
- buildUnsignedTransaction, confirmSubmittedTransaction, flattenHydratedTransaction,
22
- } from '../../transaction/index.ts'
23
-
24
- /** Parameters for SimpleXyoGatewayRunner. */
25
- export interface SimpleXyoGatewayRunnerParams extends CreatableProviderParams {
26
-
27
- }
28
-
29
- /** SimpleXyoGatewayRunner implementation. */
30
- export class SimpleXyoGatewayRunner extends AbstractCreatableProvider<SimpleXyoGatewayRunnerParams> implements XyoGatewayRunner {
31
- static readonly defaultMoniker = XyoGatewayRunnerMoniker
32
- static readonly dependencies = [XyoConnectionMoniker, XyoSignerMoniker]
33
- static readonly monikers = [XyoGatewayRunnerMoniker, XyoGatewayMoniker]
34
- moniker = SimpleXyoGatewayRunner.defaultMoniker
35
-
36
- private _connection!: XyoConnection
37
- private _dataLakeRunner?: DataLakeRunner
38
- private _signer!: XyoSigner
39
-
40
- get connection(): XyoConnection {
41
- return this._connection
42
- }
43
-
44
- get dataLakeRunner(): DataLakeRunner | undefined {
45
- return this._dataLakeRunner
46
- }
47
-
48
- get signer(): XyoSigner {
49
- return this._signer
50
- }
51
-
52
- async addPayloadsToChain(
53
- onChain: AllowedBlockPayload[],
54
- offChain: Payload[],
55
- options?: TransactionOptions,
56
- ): Promise<[Hash, SignedHydratedTransactionWithHashMeta]> {
57
- // Get chain providers
58
- const viewer = assertEx(this.connection.viewer, () => 'No viewer available on connection')
59
-
60
- // Resolve transaction options
61
- const {
62
- nbf, exp, chain, fees,
63
- } = options ?? {}
64
- const resolvedChainId = isDefined(chain) ? chain : await viewer.chainId()
65
- const resolvedNbf = asXL1BlockNumber(isDefined(nbf) ? nbf : await viewer.currentBlockNumber(), true)
66
- const resolvedExp = asXL1BlockNumber(isDefined(exp) ? exp : resolvedNbf + 10, true)
67
-
68
- // Build, sign, and broadcast the transaction
69
- const tx = await buildUnsignedTransaction(resolvedChainId, onChain, offChain, resolvedNbf, resolvedExp, await this.signer.address(), fees)
70
- return await this.addTransactionToChain(tx, await PayloadBuilder.addHashMeta(offChain))
71
- }
72
-
73
- async addTransactionToChain(
74
- tx: UnsignedHydratedTransaction | SignedHydratedTransaction,
75
- offChain: WithHashMeta<Payload>[] = [],
76
- ): Promise<[Hash, SignedHydratedTransactionWithHashMeta]> {
77
- const connection = this.connection
78
-
79
- const signer = this.signer
80
- const runner = assertEx(connection.runner, () => 'No runner available on connection')
81
-
82
- // Prepare for returning the SignedHydratedTransactionWithHashMeta
83
- let signedTx: SignedHydratedTransactionWithHashMeta
84
-
85
- // If the supplied transaction is already signed
86
- if (isSignedHydratedTransaction(tx)) {
87
- // Ensure it has hash meta
88
- const [bw, payloads] = tx
89
- const hashedBw = await PayloadBuilder.addHashMeta(bw)
90
- const hashedPayloads = await PayloadBuilder.addHashMeta(payloads)
91
- signedTx = [hashedBw, hashedPayloads]
92
- } else {
93
- // Otherwise, sign it using our signer
94
- signedTx = await signer.signTransaction(tx)
95
- }
96
-
97
- await this._dataLakeRunner?.insert([...flattenHydratedTransaction(signedTx), ...offChain])
98
-
99
- // Broadcast the transaction
100
- return [await runner.broadcastTransaction([signedTx[0], signedTx[1]]), signedTx]
101
- }
102
-
103
- async confirmSubmittedTransaction(txHash: Hash, options?: ConfirmSubmittedTransactionOptions): Promise<SignedHydratedTransaction> {
104
- return await confirmSubmittedTransaction(
105
- assertEx(this.connection.viewer, () => 'Connection viewer is undefined'),
106
- txHash,
107
- options,
108
- )
109
- }
110
-
111
- override async createHandler() {
112
- await super.createHandler()
113
- this._connection = await this.locator.getInstance<XyoConnection>(XyoConnectionMoniker)
114
- this._signer = await this.locator.getInstance<XyoSigner>(XyoSignerMoniker)
115
- this._dataLakeRunner = await this.locator.tryGetInstance<DataLakeRunner>(DataLakeRunnerMoniker)
116
- }
117
-
118
- async send(to: Address, amount: AttoXL1, options?: TransactionOptions): Promise<Hash> {
119
- return await this.sendMany({ [to]: amount }, options)
120
- }
121
-
122
- async sendMany(transfers: Record<Address, AttoXL1>, options?: TransactionOptions): Promise<Hash> {
123
- const from = await this.signer.address()
124
- const hexTransfers: Record<Address, Hex> = Object.fromEntries(
125
- Object.entries(transfers).map(([address, amount]) => ([
126
- address, BigIntToJsonZod.parse(amount),
127
- ])),
128
- )
129
- const transfer = new PayloadBuilder<Transfer>({ schema: TransferSchema }).fields({
130
- from,
131
- transfers: hexTransfers,
132
- epoch: Date.now(),
133
- }).build()
134
- const [hash] = await this.addPayloadsToChain([transfer], [], options)
135
- return hash
136
- }
137
- }
@@ -1,2 +0,0 @@
1
- export * from './SimpleXyoGateway.ts'
2
- export * from './SimpleXyoGatewayRunner.ts'
@@ -1,22 +0,0 @@
1
- export * from './accountBalance/index.ts'
2
- export * from './block/index.ts'
3
- export * from './blockReward/index.ts'
4
- export * from './blockValidation/index.ts'
5
- export * from './chainContractViewer/index.ts'
6
- export * from './client/index.ts'
7
- export * from './datalake/index.ts'
8
- export * from './finalization/index.ts'
9
- export * from './gateway/index.ts'
10
- export * from './mempool/index.ts'
11
- export * from './network/index.ts'
12
- export * from './permissions/index.ts'
13
- export * from './runner/index.ts'
14
- export * from './signer/index.ts'
15
- export * from './StakeEventsViewer/index.ts'
16
- export * from './StakeTotalsViewer/index.ts'
17
- export * from './StakeViewer/index.ts'
18
- export * from './timeSync2/index.ts'
19
- export * from './transactionValidation/index.ts'
20
- export * from './transactionValidation/index.ts'
21
- export * from './TransactionViewer/index.ts'
22
- export * from './windowedBlock/index.ts'
@@ -1,390 +0,0 @@
1
- import {
2
- assertEx, exists, type Hash,
3
- } from '@xylabs/sdk-js'
4
- import type { ArchivistInstance } from '@xyo-network/sdk-js'
5
- import {
6
- isPayloadBundle, Payload, PayloadBuilder,
7
- Sequence,
8
- WithHashMeta,
9
- } from '@xyo-network/sdk-js'
10
- import {
11
- BlockValidationViewer,
12
- BlockValidationViewerMoniker,
13
- ChainContractViewer,
14
- ChainContractViewerMoniker,
15
- DEFAULT_MAX_EXP_AHEAD,
16
- FinalizationViewer,
17
- FinalizationViewerMoniker,
18
- isSignedHydratedBlockWithHashMeta, isSignedHydratedTransactionWithHashMeta, MempoolPruneOptions, MempoolRunner,
19
- MempoolRunnerMoniker, type MempoolViewer, type SignedHydratedBlock, SignedHydratedBlockWithHashMeta, type SignedHydratedTransaction,
20
- SignedHydratedTransactionWithHashMeta,
21
- TransactionValidationViewer,
22
- TransactionValidationViewerMoniker,
23
- } from '@xyo-network/xl1-protocol-lib'
24
- import { Mutex } from 'async-mutex'
25
-
26
- import { validateTransactionsOpcodes } from '../../block/index.ts'
27
- import {
28
- AbstractCreatableProvider, creatableProvider, CreatableProviderParams,
29
- } from '../../CreatableProvider/index.ts'
30
- import {
31
- bundledPayloadToHydratedBlock,
32
- bundledPayloadToHydratedTransaction,
33
- hydratedBlockToPayloadBundle, hydratedTransactionToPayloadBundle,
34
- } from '../../model/index.ts'
35
-
36
- const DEFAULT_SYNC_INTERVAL = 30_000
37
- const DEFAULT_SYNC_LIMIT = 100
38
-
39
- /** Parameters for SimpleMempoolRunner. */
40
- export interface SimpleMempoolRunnerParams extends CreatableProviderParams {
41
- externalMempools?: MempoolViewer[]
42
- maxExpAhead?: number
43
- pendingBlocksArchivist: ArchivistInstance
44
- pendingTransactionsArchivist: ArchivistInstance
45
- syncInterval?: number
46
- syncLimit?: number
47
- }
48
-
49
- /** SimpleMempoolRunner implementation. */
50
- @creatableProvider()
51
- export class SimpleMempoolRunner extends AbstractCreatableProvider<SimpleMempoolRunnerParams> implements MempoolRunner {
52
- static readonly defaultMoniker = MempoolRunnerMoniker
53
- static readonly dependencies = [FinalizationViewerMoniker, BlockValidationViewerMoniker, TransactionValidationViewerMoniker, ChainContractViewerMoniker]
54
- static readonly monikers = [MempoolRunnerMoniker]
55
- moniker = SimpleMempoolRunner.defaultMoniker
56
-
57
- protected _blockValidationViewer!: BlockValidationViewer
58
- protected _chainContractViewer!: ChainContractViewer
59
- protected _finalizationViewer!: FinalizationViewer
60
- protected _transactionValidationViewer!: TransactionValidationViewer
61
-
62
- private _syncMutex = new Mutex()
63
- private _syncTimerId: ReturnType<typeof setInterval> | null = null
64
-
65
- protected get blockValidationViewer() {
66
- return this._blockValidationViewer!
67
- }
68
-
69
- protected get chainContractViewer() {
70
- return this._chainContractViewer!
71
- }
72
-
73
- protected get externalMempools(): MempoolViewer[] {
74
- return this.params.externalMempools ?? []
75
- }
76
-
77
- protected get finalizationViewer() {
78
- return this._finalizationViewer!
79
- }
80
-
81
- protected get maxExpAhead() {
82
- return this.params.maxExpAhead ?? DEFAULT_MAX_EXP_AHEAD
83
- }
84
-
85
- protected get pendingBlocksArchivist() {
86
- return this.params.pendingBlocksArchivist
87
- }
88
-
89
- protected get pendingTransactionsArchivist() {
90
- return this.params.pendingTransactionsArchivist
91
- }
92
-
93
- protected get syncInterval(): number {
94
- return this.params.syncInterval ?? DEFAULT_SYNC_INTERVAL
95
- }
96
-
97
- protected get syncLimit(): number {
98
- return this.params.syncLimit ?? DEFAULT_SYNC_LIMIT
99
- }
100
-
101
- protected get transactionValidationViewer() {
102
- return this._transactionValidationViewer!
103
- }
104
-
105
- static override async paramsHandler(params?: Partial<SimpleMempoolRunnerParams>): Promise<SimpleMempoolRunnerParams> {
106
- return {
107
- ...await super.paramsHandler(params),
108
- pendingBlocksArchivist: assertEx(params?.pendingBlocksArchivist, () => 'pendingBlocksArchivist is required'),
109
- pendingTransactionsArchivist: assertEx(params?.pendingTransactionsArchivist, () => 'pendingTransactionsArchivist is required'),
110
- }
111
- }
112
-
113
- override async createHandler() {
114
- await super.createHandler()
115
- this._blockValidationViewer = await this.locator.getInstance<BlockValidationViewer>(BlockValidationViewerMoniker)
116
- this._chainContractViewer = await this.locator.getInstance<ChainContractViewer>(ChainContractViewerMoniker)
117
- this._finalizationViewer = await this.locator.getInstance<FinalizationViewer>(FinalizationViewerMoniker)
118
- this._transactionValidationViewer = await this.locator.getInstance<TransactionValidationViewer>(TransactionValidationViewerMoniker)
119
- }
120
-
121
- async prunePendingBlocks({
122
- batchSize = 10, maxPrune = 1000, maxCheck = 1000,
123
- }: MempoolPruneOptions = {}): Promise<[number, number]> {
124
- let total = 0
125
- let pruned = 0
126
- let cursor: Sequence | undefined
127
- let batch = await this.pendingBlocksArchivist.next({
128
- limit: batchSize, cursor, order: 'desc',
129
- })
130
- this.logger?.info(`Starting prunePendingBlocks with batchSize=${batchSize}, maxPrune=${maxPrune}, maxCheck=${maxCheck}`)
131
- while (batch.length > 0 && pruned < maxPrune && total < maxCheck) {
132
- const blocksAndBundles = await this.simpleBlockValidationCheck(batch)
133
- const blocks = blocksAndBundles.map(([b]) => b)
134
- const bundles = blocksAndBundles.map(([_, p]) => p)
135
- let valid = blocks.map(b => !!b)
136
- let remainingBlockMap: number[] = []
137
- let remainingBlocks = blocks.map((b, i) => {
138
- if (b) {
139
- remainingBlockMap.push(i)
140
- return b
141
- }
142
- }).filter(exists)
143
-
144
- assertEx(
145
- remainingBlockMap.length === remainingBlocks.length,
146
- () => `remainingBlockMap length should match remainingBlocks length [${remainingBlockMap.length}/${remainingBlocks.length}]`,
147
- )
148
- const validationResults = await Promise.all(remainingBlocks.map(remainingBlock => this.blockValidationViewer.validateBlock(
149
- remainingBlock,
150
- { value: true, state: true },
151
- )))
152
- for (const [i, r] of validationResults.entries()) {
153
- const validated = isSignedHydratedBlockWithHashMeta(r)
154
- if (!validated) {
155
- this.logger?.info(`Pruning block ${bundles[remainingBlockMap[i]]._hash} during block validation`)
156
- this.logger?.info(` - validation result: ${JSON.stringify(r, null, 2)}`)
157
- }
158
- valid[remainingBlockMap[i]] = validated
159
- }
160
- const pruneHashes = bundles.map((p, i) => {
161
- if (!valid[i]) {
162
- return p._hash
163
- }
164
- }).filter(exists)
165
-
166
- pruned += pruneHashes.length
167
- total += batch.length
168
- await this.pendingBlocksArchivist.delete(pruneHashes)
169
-
170
- cursor = batch.at(-1)?._sequence
171
-
172
- batch = cursor
173
- ? await this.pendingBlocksArchivist.next({
174
- limit: batchSize, cursor, order: 'desc',
175
- })
176
- : []
177
- }
178
- this.logger?.info(`prunePendingBlocks completed: pruned=${pruned}, totalChecked=${total}`)
179
- return [pruned, total]
180
- }
181
-
182
- async prunePendingTransactions({
183
- batchSize = 10, maxPrune = 1000, maxCheck = 1000,
184
- }: MempoolPruneOptions = {}): Promise<[number, number]> {
185
- let total = 0
186
- let pruned = 0
187
- let cursor: Sequence | undefined
188
- let batch = await this.pendingTransactionsArchivist.next({
189
- limit: batchSize, cursor, order: 'desc',
190
- })
191
- this.logger?.info(`Starting prunePendingTransactions with batchSize=${batchSize}, maxPrune=${maxPrune}, maxCheck=${maxCheck}`)
192
- while (batch.length > 0 && pruned < maxPrune && total < maxCheck) {
193
- const transactionsAndBundles = await this.simpleTransactionValidationCheck(batch)
194
- const transactions = transactionsAndBundles.map(([t]) => t)
195
- const bundles = transactionsAndBundles.map(([_, p]) => p)
196
- let valid = transactions.map(t => !!t)
197
- let remainingTransactionMap: number[] = []
198
- let remainingTransactions = transactions.map((t, i) => {
199
- if (t) {
200
- remainingTransactionMap.push(i)
201
- return t
202
- }
203
- }).filter(exists)
204
-
205
- assertEx(
206
- remainingTransactionMap.length === remainingTransactions.length,
207
- () => `remainingTransactionMap length should match remainingTransactions length [${remainingTransactionMap.length}/${remainingTransactions.length}]`,
208
- )
209
-
210
- const validationResults = await Promise.all(remainingTransactions.map(remainingTransaction => this.transactionValidationViewer.validateTransaction(
211
- remainingTransaction,
212
- { value: true, state: true },
213
- )))
214
- for (const [i, r] of validationResults.entries()) {
215
- const validated = isSignedHydratedTransactionWithHashMeta(r)
216
- if (!validated) {
217
- this.logger?.info(`Pruning transaction ${bundles[remainingTransactionMap[i]]._hash} during transaction validation`)
218
- this.logger?.info(` - validation result: ${JSON.stringify(r, null, 2)}`)
219
- }
220
- valid[remainingTransactionMap[i]] = validated
221
- }
222
- const pruneHashes = bundles.map((p, i) => {
223
- if (!valid[i]) {
224
- return p._hash
225
- }
226
- }).filter(exists)
227
-
228
- pruned += pruneHashes.length
229
- total += batch.length
230
- await this.pendingTransactionsArchivist.delete(pruneHashes)
231
-
232
- cursor = batch.at(-1)?._sequence
233
-
234
- batch = cursor
235
- ? await this.pendingTransactionsArchivist.next({
236
- limit: batchSize, cursor, order: 'desc',
237
- })
238
- : []
239
- }
240
- this.logger?.info(`prunePendingTransactions completed: pruned=${pruned}, totalChecked=${total}`)
241
- return [pruned, total]
242
- }
243
-
244
- async submitBlocks(blocks: SignedHydratedBlock[]): Promise<Hash[]> {
245
- const bundles = await Promise.all(blocks.map(async ([bw, payloads]) => {
246
- return hydratedBlockToPayloadBundle([
247
- await PayloadBuilder.addHashMeta(bw),
248
- await PayloadBuilder.addHashMeta(payloads),
249
- ])
250
- }))
251
- const inserted = await this.pendingBlocksArchivist.insert(bundles)
252
- return inserted.map(p => p._hash)
253
- }
254
-
255
- async submitTransactions(transactions: SignedHydratedTransaction[]): Promise<Hash[]> {
256
- const headNumber = await this.finalizationViewer.headNumber()
257
- const maxExp = headNumber + this.maxExpAhead
258
-
259
- const validTransactions = transactions.filter(([tx]) => {
260
- if (tx.exp > maxExp) {
261
- this.logger?.info(`Rejecting transaction with exp ${tx.exp} exceeding max allowed ${maxExp}`)
262
- return false
263
- }
264
- return true
265
- })
266
-
267
- const bundles = await Promise.all(validTransactions.map(async ([tx, payloads]) => {
268
- return hydratedTransactionToPayloadBundle([
269
- await PayloadBuilder.addHashMeta(tx),
270
- await PayloadBuilder.addHashMeta(payloads),
271
- ])
272
- }))
273
- const inserted = await this.pendingTransactionsArchivist.insert(bundles)
274
- return inserted.map(p => p._hash)
275
- }
276
-
277
- protected override async startHandler(): Promise<void> {
278
- await super.startHandler()
279
- if (this.externalMempools.length > 0) {
280
- await this.syncFromExternal()
281
- this._syncTimerId = setInterval(() => {
282
- void this.syncFromExternal()
283
- }, this.syncInterval)
284
- }
285
- }
286
-
287
- protected override async stopHandler(): Promise<void> {
288
- await super.stopHandler()
289
- if (this._syncTimerId) {
290
- clearInterval(this._syncTimerId)
291
- this._syncTimerId = null
292
- }
293
- }
294
-
295
- private async simpleBlockValidationCheck(payloads: WithHashMeta<Payload>[]): Promise<[(SignedHydratedBlockWithHashMeta | undefined), WithHashMeta<Payload>][]> {
296
- const headNumber = await this.finalizationViewer.headNumber()
297
- const chainId = await this.chainContractViewer.chainId()
298
-
299
- const blockBundles: [SignedHydratedBlockWithHashMeta | undefined, WithHashMeta<Payload>][] = await Promise.all(payloads.map(async (p) => {
300
- return [isPayloadBundle(p) ? await bundledPayloadToHydratedBlock(p) : undefined, p]
301
- }))
302
-
303
- return blockBundles.map(([block, bundle]) => {
304
- const blockCheckPassed = !!block
305
- const chainIdPassed = blockCheckPassed ? block[0].chain === chainId : false
306
- const blockNumberPassed = blockCheckPassed ? block[0].block > headNumber : false
307
- const typeCheckPassed = blockCheckPassed ? isSignedHydratedBlockWithHashMeta(block) : false
308
- const validationPassed = blockCheckPassed && chainIdPassed && blockNumberPassed && typeCheckPassed
309
- const validatedBlock = validationPassed ? block : undefined
310
- if (!validationPassed) {
311
- this.logger?.info(`Pruning block bundle ${bundle._hash} during simpleValidationCheck`)
312
- this.logger?.info(` - chainId match: ${chainIdPassed}`)
313
- this.logger?.info(` - blockNumber check: ${blockNumberPassed}`)
314
- this.logger?.info(` - typeCheck: ${typeCheckPassed}`)
315
- this.logger?.info(` - bundle hash: ${bundle._hash}`)
316
- }
317
- return [validatedBlock, bundle]
318
- })
319
- }
320
-
321
- private async simpleTransactionValidationCheck(payloads: WithHashMeta<Payload>[]): Promise<[(SignedHydratedTransactionWithHashMeta | undefined), WithHashMeta<Payload>][]> {
322
- const headNumber = await this.finalizationViewer.headNumber()
323
- const chainId = await this.chainContractViewer.chainId()
324
-
325
- const transactionBundles: [SignedHydratedTransactionWithHashMeta | undefined, WithHashMeta<Payload>][] = await Promise.all(payloads.map(async (p) => {
326
- return [isPayloadBundle(p) ? await bundledPayloadToHydratedTransaction(p) : undefined, p]
327
- }))
328
-
329
- // eslint-disable-next-line complexity
330
- return await Promise.all(transactionBundles.map(async ([transaction, bundle]) => {
331
- const transactionCheckPassed = !!transaction
332
- const chainIdPassed = transactionCheckPassed ? transaction[0].chain === chainId : false
333
- const expPassed = transactionCheckPassed
334
- ? transaction[0].exp > headNumber && transaction[0].exp <= headNumber + this.maxExpAhead
335
- : false
336
- const typeCheckPassed = transactionCheckPassed ? isSignedHydratedTransactionWithHashMeta(transaction) : false
337
- let opcodeCheckPassed = false
338
- try {
339
- await validateTransactionsOpcodes(transaction ? [transaction] : [])
340
- opcodeCheckPassed = true
341
- } catch (e) {
342
- this.logger?.info(`Opcode validation failed for transaction ${bundle._hash} during simpleValidationCheck`)
343
- this.logger?.info(` - error: ${(e as Error).message}`)
344
- }
345
- const validationPassed = transactionCheckPassed && chainIdPassed && expPassed && typeCheckPassed && opcodeCheckPassed
346
- const validatedTransaction = validationPassed ? transaction : undefined
347
- if (!validationPassed) {
348
- this.logger?.info(`Pruning block bundle ${bundle._hash} during simpleValidationCheck`)
349
- this.logger?.info(` - chainId match: ${chainIdPassed}`)
350
- this.logger?.info(` - exp check: ${expPassed}`)
351
- this.logger?.info(` - opcode check: ${opcodeCheckPassed}`)
352
- this.logger?.info(` - typeCheck: ${typeCheckPassed}`)
353
- this.logger?.info(` - bundle hash: ${bundle._hash}`)
354
- }
355
- return [validatedTransaction, bundle]
356
- }))
357
- }
358
-
359
- private async syncBlocksFrom(external: MempoolViewer): Promise<void> {
360
- const externalBlocks = await external.pendingBlocks({ limit: this.syncLimit })
361
- if (externalBlocks.length === 0) return
362
-
363
- const bundles = externalBlocks.map(block => hydratedBlockToPayloadBundle(block))
364
- await this.pendingBlocksArchivist.insert(bundles)
365
- this.logger?.info(`Synced ${externalBlocks.length} blocks from external mempool`)
366
- }
367
-
368
- private async syncFromExternal(): Promise<void> {
369
- if (this._syncMutex.isLocked()) return
370
- await this._syncMutex.runExclusive(async () => {
371
- for (const external of this.externalMempools) {
372
- try {
373
- await this.syncTransactionsFrom(external)
374
- await this.syncBlocksFrom(external)
375
- } catch (ex) {
376
- this.logger?.error(`Error syncing from external mempool: ${ex}`)
377
- }
378
- }
379
- })
380
- }
381
-
382
- private async syncTransactionsFrom(external: MempoolViewer): Promise<void> {
383
- const externalTxs = await external.pendingTransactions({ limit: this.syncLimit })
384
- if (externalTxs.length === 0) return
385
-
386
- const bundles = externalTxs.map(tx => hydratedTransactionToPayloadBundle(tx))
387
- await this.pendingTransactionsArchivist.insert(bundles)
388
- this.logger?.info(`Synced ${externalTxs.length} transactions from external mempool`)
389
- }
390
- }