@xyo-network/xl1-cli 1.7.4 → 1.7.6

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 (301) hide show
  1. package/README.md +29 -6
  2. package/dist/cli-min.mjs +97 -97
  3. package/package.json +22 -18
  4. package/lib/node/commands/api/index.d.ts +0 -2
  5. package/lib/node/commands/api/index.d.ts.map +0 -1
  6. package/lib/node/commands/api/runApi.d.ts +0 -9
  7. package/lib/node/commands/api/runApi.d.ts.map +0 -1
  8. package/lib/node/commands/index.d.ts +0 -4
  9. package/lib/node/commands/index.d.ts.map +0 -1
  10. package/lib/node/commands/producer/createDeclaration.d.ts +0 -3
  11. package/lib/node/commands/producer/createDeclaration.d.ts.map +0 -1
  12. package/lib/node/commands/producer/index.d.ts +0 -3
  13. package/lib/node/commands/producer/index.d.ts.map +0 -1
  14. package/lib/node/commands/producer/runProducer.d.ts +0 -11
  15. package/lib/node/commands/producer/runProducer.d.ts.map +0 -1
  16. package/lib/node/commands/validator/index.d.ts +0 -2
  17. package/lib/node/commands/validator/index.d.ts.map +0 -1
  18. package/lib/node/commands/validator/runValidator.d.ts +0 -9
  19. package/lib/node/commands/validator/runValidator.d.ts.map +0 -1
  20. package/lib/node/images.d.ts +0 -2
  21. package/lib/node/images.d.ts.map +0 -1
  22. package/lib/node/index.d.ts +0 -4
  23. package/lib/node/index.d.ts.map +0 -1
  24. package/lib/node/index.mjs +0 -1610
  25. package/lib/node/index.mjs.map +0 -1
  26. package/lib/node/initConfig.d.ts +0 -3
  27. package/lib/node/initConfig.d.ts.map +0 -1
  28. package/lib/node/initEnv.d.ts +0 -2
  29. package/lib/node/initEnv.d.ts.map +0 -1
  30. package/lib/node/initLogger.d.ts +0 -4
  31. package/lib/node/initLogger.d.ts.map +0 -1
  32. package/lib/node/optionsFromZodSchema.d.ts +0 -4
  33. package/lib/node/optionsFromZodSchema.d.ts.map +0 -1
  34. package/lib/node/orchestration/ChainInitializableParams.d.ts +0 -9
  35. package/lib/node/orchestration/ChainInitializableParams.d.ts.map +0 -1
  36. package/lib/node/orchestration/actor/implementation/BalanceActor.d.ts +0 -17
  37. package/lib/node/orchestration/actor/implementation/BalanceActor.d.ts.map +0 -1
  38. package/lib/node/orchestration/actor/implementation/ChainHeadUpdateActor.d.ts +0 -17
  39. package/lib/node/orchestration/actor/implementation/ChainHeadUpdateActor.d.ts.map +0 -1
  40. package/lib/node/orchestration/actor/implementation/ProducerActor.d.ts +0 -26
  41. package/lib/node/orchestration/actor/implementation/ProducerActor.d.ts.map +0 -1
  42. package/lib/node/orchestration/actor/implementation/index.d.ts +0 -4
  43. package/lib/node/orchestration/actor/implementation/index.d.ts.map +0 -1
  44. package/lib/node/orchestration/actor/index.d.ts +0 -3
  45. package/lib/node/orchestration/actor/index.d.ts.map +0 -1
  46. package/lib/node/orchestration/actor/model/Actor.d.ts +0 -37
  47. package/lib/node/orchestration/actor/model/Actor.d.ts.map +0 -1
  48. package/lib/node/orchestration/actor/model/Orchestrator.d.ts +0 -27
  49. package/lib/node/orchestration/actor/model/Orchestrator.d.ts.map +0 -1
  50. package/lib/node/orchestration/actor/model/index.d.ts +0 -3
  51. package/lib/node/orchestration/actor/model/index.d.ts.map +0 -1
  52. package/lib/node/orchestration/archivists/ChainFinalized/archivist.d.ts +0 -4
  53. package/lib/node/orchestration/archivists/ChainFinalized/archivist.d.ts.map +0 -1
  54. package/lib/node/orchestration/archivists/ChainFinalized/index.d.ts +0 -2
  55. package/lib/node/orchestration/archivists/ChainFinalized/index.d.ts.map +0 -1
  56. package/lib/node/orchestration/archivists/ChainFinalized/local.d.ts +0 -4
  57. package/lib/node/orchestration/archivists/ChainFinalized/local.d.ts.map +0 -1
  58. package/lib/node/orchestration/archivists/ChainFinalized/remote.d.ts +0 -4
  59. package/lib/node/orchestration/archivists/ChainFinalized/remote.d.ts.map +0 -1
  60. package/lib/node/orchestration/archivists/ChainSubmissions/archivist.d.ts +0 -4
  61. package/lib/node/orchestration/archivists/ChainSubmissions/archivist.d.ts.map +0 -1
  62. package/lib/node/orchestration/archivists/ChainSubmissions/index.d.ts +0 -2
  63. package/lib/node/orchestration/archivists/ChainSubmissions/index.d.ts.map +0 -1
  64. package/lib/node/orchestration/archivists/ChainSubmissions/remote.d.ts +0 -4
  65. package/lib/node/orchestration/archivists/ChainSubmissions/remote.d.ts.map +0 -1
  66. package/lib/node/orchestration/archivists/PendingTransactions/archivist.d.ts +0 -4
  67. package/lib/node/orchestration/archivists/PendingTransactions/archivist.d.ts.map +0 -1
  68. package/lib/node/orchestration/archivists/PendingTransactions/index.d.ts +0 -2
  69. package/lib/node/orchestration/archivists/PendingTransactions/index.d.ts.map +0 -1
  70. package/lib/node/orchestration/archivists/PendingTransactions/local.d.ts +0 -4
  71. package/lib/node/orchestration/archivists/PendingTransactions/local.d.ts.map +0 -1
  72. package/lib/node/orchestration/archivists/PendingTransactions/remote.d.ts +0 -4
  73. package/lib/node/orchestration/archivists/PendingTransactions/remote.d.ts.map +0 -1
  74. package/lib/node/orchestration/archivists/RejectedTransactions/archivist.d.ts +0 -4
  75. package/lib/node/orchestration/archivists/RejectedTransactions/archivist.d.ts.map +0 -1
  76. package/lib/node/orchestration/archivists/RejectedTransactions/index.d.ts +0 -2
  77. package/lib/node/orchestration/archivists/RejectedTransactions/index.d.ts.map +0 -1
  78. package/lib/node/orchestration/archivists/RejectedTransactions/local.d.ts +0 -4
  79. package/lib/node/orchestration/archivists/RejectedTransactions/local.d.ts.map +0 -1
  80. package/lib/node/orchestration/archivists/StakeIntentState/archivist.d.ts +0 -5
  81. package/lib/node/orchestration/archivists/StakeIntentState/archivist.d.ts.map +0 -1
  82. package/lib/node/orchestration/archivists/StakeIntentState/index.d.ts +0 -2
  83. package/lib/node/orchestration/archivists/StakeIntentState/index.d.ts.map +0 -1
  84. package/lib/node/orchestration/archivists/StakeIntentState/local.d.ts +0 -4
  85. package/lib/node/orchestration/archivists/StakeIntentState/local.d.ts.map +0 -1
  86. package/lib/node/orchestration/archivists/index.d.ts +0 -6
  87. package/lib/node/orchestration/archivists/index.d.ts.map +0 -1
  88. package/lib/node/orchestration/archivists/lib/index.d.ts +0 -2
  89. package/lib/node/orchestration/archivists/lib/index.d.ts.map +0 -1
  90. package/lib/node/orchestration/archivists/lib/localPersistentArchivist.d.ts +0 -12
  91. package/lib/node/orchestration/archivists/lib/localPersistentArchivist.d.ts.map +0 -1
  92. package/lib/node/orchestration/health/index.d.ts +0 -2
  93. package/lib/node/orchestration/health/index.d.ts.map +0 -1
  94. package/lib/node/orchestration/health/initHealthEndpoints.d.ts +0 -7
  95. package/lib/node/orchestration/health/initHealthEndpoints.d.ts.map +0 -1
  96. package/lib/node/orchestration/host/implementation/DefaultHost.d.ts +0 -12
  97. package/lib/node/orchestration/host/implementation/DefaultHost.d.ts.map +0 -1
  98. package/lib/node/orchestration/host/implementation/DefaultServiceCollection.d.ts +0 -24
  99. package/lib/node/orchestration/host/implementation/DefaultServiceCollection.d.ts.map +0 -1
  100. package/lib/node/orchestration/host/implementation/DefaultServiceProvider.d.ts +0 -7
  101. package/lib/node/orchestration/host/implementation/DefaultServiceProvider.d.ts.map +0 -1
  102. package/lib/node/orchestration/host/implementation/index.d.ts +0 -3
  103. package/lib/node/orchestration/host/implementation/index.d.ts.map +0 -1
  104. package/lib/node/orchestration/host/index.d.ts +0 -3
  105. package/lib/node/orchestration/host/index.d.ts.map +0 -1
  106. package/lib/node/orchestration/host/model/Host.d.ts +0 -19
  107. package/lib/node/orchestration/host/model/Host.d.ts.map +0 -1
  108. package/lib/node/orchestration/host/model/ServiceCollection.d.ts +0 -20
  109. package/lib/node/orchestration/host/model/ServiceCollection.d.ts.map +0 -1
  110. package/lib/node/orchestration/host/model/ServiceProvider.d.ts +0 -4
  111. package/lib/node/orchestration/host/model/ServiceProvider.d.ts.map +0 -1
  112. package/lib/node/orchestration/host/model/index.d.ts +0 -4
  113. package/lib/node/orchestration/host/model/index.d.ts.map +0 -1
  114. package/lib/node/orchestration/index.d.ts +0 -6
  115. package/lib/node/orchestration/index.d.ts.map +0 -1
  116. package/lib/node/orchestration/initServices.d.ts +0 -10
  117. package/lib/node/orchestration/initServices.d.ts.map +0 -1
  118. package/lib/node/orchestration/map/BalanceSummary/index.d.ts +0 -2
  119. package/lib/node/orchestration/map/BalanceSummary/index.d.ts.map +0 -1
  120. package/lib/node/orchestration/map/BalanceSummary/initBalanceSummaryMap.d.ts +0 -7
  121. package/lib/node/orchestration/map/BalanceSummary/initBalanceSummaryMap.d.ts.map +0 -1
  122. package/lib/node/orchestration/map/BalanceSummary/local.d.ts +0 -7
  123. package/lib/node/orchestration/map/BalanceSummary/local.d.ts.map +0 -1
  124. package/lib/node/orchestration/map/driver/index.d.ts +0 -2
  125. package/lib/node/orchestration/map/driver/index.d.ts.map +0 -1
  126. package/lib/node/orchestration/map/driver/lmdb/Params.d.ts +0 -7
  127. package/lib/node/orchestration/map/driver/lmdb/Params.d.ts.map +0 -1
  128. package/lib/node/orchestration/map/driver/lmdb/SynchronousLmdbMap.d.ts +0 -32
  129. package/lib/node/orchestration/map/driver/lmdb/SynchronousLmdbMap.d.ts.map +0 -1
  130. package/lib/node/orchestration/map/driver/lmdb/index.d.ts +0 -2
  131. package/lib/node/orchestration/map/driver/lmdb/index.d.ts.map +0 -1
  132. package/lib/node/orchestration/map/driver/lmdb/spec/SynchronousLmdbMap.spec.d.ts +0 -2
  133. package/lib/node/orchestration/map/driver/lmdb/spec/SynchronousLmdbMap.spec.d.ts.map +0 -1
  134. package/lib/node/orchestration/map/index.d.ts +0 -3
  135. package/lib/node/orchestration/map/index.d.ts.map +0 -1
  136. package/lib/node/orchestration/map/localPersistentMap.d.ts +0 -12
  137. package/lib/node/orchestration/map/localPersistentMap.d.ts.map +0 -1
  138. package/lib/node/orchestration/repository/index.d.ts +0 -2
  139. package/lib/node/orchestration/repository/index.d.ts.map +0 -1
  140. package/lib/node/orchestration/repository/lib/index.d.ts +0 -2
  141. package/lib/node/orchestration/repository/lib/index.d.ts.map +0 -1
  142. package/lib/node/orchestration/repository/lib/repositoryFromArchivist.d.ts +0 -6
  143. package/lib/node/orchestration/repository/lib/repositoryFromArchivist.d.ts.map +0 -1
  144. package/lib/node/orchestration/services/implementation/account.d.ts +0 -4
  145. package/lib/node/orchestration/services/implementation/account.d.ts.map +0 -1
  146. package/lib/node/orchestration/services/implementation/balance.d.ts +0 -4
  147. package/lib/node/orchestration/services/implementation/balance.d.ts.map +0 -1
  148. package/lib/node/orchestration/services/implementation/chain/evm.d.ts +0 -6
  149. package/lib/node/orchestration/services/implementation/chain/evm.d.ts.map +0 -1
  150. package/lib/node/orchestration/services/implementation/chain/index.d.ts +0 -4
  151. package/lib/node/orchestration/services/implementation/chain/index.d.ts.map +0 -1
  152. package/lib/node/orchestration/services/implementation/evm/index.d.ts +0 -2
  153. package/lib/node/orchestration/services/implementation/evm/index.d.ts.map +0 -1
  154. package/lib/node/orchestration/services/implementation/evm/initChainId.d.ts +0 -3
  155. package/lib/node/orchestration/services/implementation/evm/initChainId.d.ts.map +0 -1
  156. package/lib/node/orchestration/services/implementation/evm/initEvmProvider.d.ts +0 -4
  157. package/lib/node/orchestration/services/implementation/evm/initEvmProvider.d.ts.map +0 -1
  158. package/lib/node/orchestration/services/implementation/evm/initGanacheProvider.d.ts +0 -5
  159. package/lib/node/orchestration/services/implementation/evm/initGanacheProvider.d.ts.map +0 -1
  160. package/lib/node/orchestration/services/implementation/evm/initInfuraProvider.d.ts +0 -5
  161. package/lib/node/orchestration/services/implementation/evm/initInfuraProvider.d.ts.map +0 -1
  162. package/lib/node/orchestration/services/implementation/head.d.ts +0 -10
  163. package/lib/node/orchestration/services/implementation/head.d.ts.map +0 -1
  164. package/lib/node/orchestration/services/implementation/index.d.ts +0 -11
  165. package/lib/node/orchestration/services/implementation/index.d.ts.map +0 -1
  166. package/lib/node/orchestration/services/implementation/iterator.d.ts +0 -6
  167. package/lib/node/orchestration/services/implementation/iterator.d.ts.map +0 -1
  168. package/lib/node/orchestration/services/implementation/pendingTransactions.d.ts +0 -4
  169. package/lib/node/orchestration/services/implementation/pendingTransactions.d.ts.map +0 -1
  170. package/lib/node/orchestration/services/implementation/producer.d.ts +0 -4
  171. package/lib/node/orchestration/services/implementation/producer.d.ts.map +0 -1
  172. package/lib/node/orchestration/services/implementation/reward.d.ts +0 -4
  173. package/lib/node/orchestration/services/implementation/reward.d.ts.map +0 -1
  174. package/lib/node/orchestration/services/implementation/validator.d.ts +0 -4
  175. package/lib/node/orchestration/services/implementation/validator.d.ts.map +0 -1
  176. package/lib/node/orchestration/services/index.d.ts +0 -2
  177. package/lib/node/orchestration/services/index.d.ts.map +0 -1
  178. package/lib/node/orchestration/status/RuntimeStatusMonitor.d.ts +0 -31
  179. package/lib/node/orchestration/status/RuntimeStatusMonitor.d.ts.map +0 -1
  180. package/lib/node/orchestration/status/ServiceStatus.d.ts +0 -9
  181. package/lib/node/orchestration/status/ServiceStatus.d.ts.map +0 -1
  182. package/lib/node/orchestration/status/index.d.ts +0 -3
  183. package/lib/node/orchestration/status/index.d.ts.map +0 -1
  184. package/lib/node/orchestration/store/StoreKind.d.ts +0 -2
  185. package/lib/node/orchestration/store/StoreKind.d.ts.map +0 -1
  186. package/lib/node/orchestration/store/getStoreDirectory.d.ts +0 -9
  187. package/lib/node/orchestration/store/getStoreDirectory.d.ts.map +0 -1
  188. package/lib/node/orchestration/store/index.d.ts +0 -3
  189. package/lib/node/orchestration/store/index.d.ts.map +0 -1
  190. package/lib/node/runCLI.d.ts +0 -2
  191. package/lib/node/runCLI.d.ts.map +0 -1
  192. package/lib/node/spec/BootstrapChain.spec.d.ts +0 -2
  193. package/lib/node/spec/BootstrapChain.spec.d.ts.map +0 -1
  194. package/lib/node/start.d.ts +0 -2
  195. package/lib/node/start.d.ts.map +0 -1
  196. package/lib/node/waitForHostPort.d.ts +0 -2
  197. package/lib/node/waitForHostPort.d.ts.map +0 -1
  198. package/lib/node/xl1.d.ts +0 -2
  199. package/lib/node/xl1.d.ts.map +0 -1
  200. package/lib/node/xl1.mjs +0 -1582
  201. package/lib/node/xl1.mjs.map +0 -1
  202. package/nodemon.json +0 -9
  203. package/rollup.config.mjs +0 -79
  204. package/src/commands/api/index.ts +0 -1
  205. package/src/commands/api/runApi.ts +0 -12
  206. package/src/commands/index.ts +0 -3
  207. package/src/commands/producer/createDeclaration.ts +0 -18
  208. package/src/commands/producer/index.ts +0 -2
  209. package/src/commands/producer/runProducer.ts +0 -35
  210. package/src/commands/validator/index.ts +0 -1
  211. package/src/commands/validator/runValidator.ts +0 -22
  212. package/src/images.ts +0 -19
  213. package/src/index.ts +0 -3
  214. package/src/initConfig.ts +0 -6
  215. package/src/initEnv.ts +0 -8
  216. package/src/initLogger.ts +0 -16
  217. package/src/optionsFromZodSchema.ts +0 -69
  218. package/src/orchestration/ChainInitializableParams.ts +0 -10
  219. package/src/orchestration/actor/implementation/BalanceActor.ts +0 -51
  220. package/src/orchestration/actor/implementation/ChainHeadUpdateActor.ts +0 -65
  221. package/src/orchestration/actor/implementation/ProducerActor.ts +0 -250
  222. package/src/orchestration/actor/implementation/index.ts +0 -3
  223. package/src/orchestration/actor/index.ts +0 -2
  224. package/src/orchestration/actor/model/Actor.ts +0 -112
  225. package/src/orchestration/actor/model/Orchestrator.ts +0 -71
  226. package/src/orchestration/actor/model/index.ts +0 -2
  227. package/src/orchestration/archivists/ChainFinalized/archivist.ts +0 -27
  228. package/src/orchestration/archivists/ChainFinalized/index.ts +0 -1
  229. package/src/orchestration/archivists/ChainFinalized/local.ts +0 -16
  230. package/src/orchestration/archivists/ChainFinalized/remote.ts +0 -18
  231. package/src/orchestration/archivists/ChainSubmissions/archivist.ts +0 -19
  232. package/src/orchestration/archivists/ChainSubmissions/index.ts +0 -1
  233. package/src/orchestration/archivists/ChainSubmissions/remote.ts +0 -18
  234. package/src/orchestration/archivists/PendingTransactions/archivist.ts +0 -29
  235. package/src/orchestration/archivists/PendingTransactions/index.ts +0 -1
  236. package/src/orchestration/archivists/PendingTransactions/local.ts +0 -20
  237. package/src/orchestration/archivists/PendingTransactions/remote.ts +0 -18
  238. package/src/orchestration/archivists/RejectedTransactions/archivist.ts +0 -18
  239. package/src/orchestration/archivists/RejectedTransactions/index.ts +0 -1
  240. package/src/orchestration/archivists/RejectedTransactions/local.ts +0 -20
  241. package/src/orchestration/archivists/StakeIntentState/archivist.ts +0 -21
  242. package/src/orchestration/archivists/StakeIntentState/index.ts +0 -1
  243. package/src/orchestration/archivists/StakeIntentState/local.ts +0 -17
  244. package/src/orchestration/archivists/index.ts +0 -5
  245. package/src/orchestration/archivists/lib/index.ts +0 -1
  246. package/src/orchestration/archivists/lib/localPersistentArchivist.ts +0 -44
  247. package/src/orchestration/health/index.ts +0 -1
  248. package/src/orchestration/health/initHealthEndpoints.ts +0 -70
  249. package/src/orchestration/host/implementation/DefaultHost.ts +0 -25
  250. package/src/orchestration/host/implementation/DefaultServiceCollection.ts +0 -60
  251. package/src/orchestration/host/implementation/DefaultServiceProvider.ts +0 -12
  252. package/src/orchestration/host/implementation/index.ts +0 -2
  253. package/src/orchestration/host/index.ts +0 -2
  254. package/src/orchestration/host/model/Host.ts +0 -21
  255. package/src/orchestration/host/model/ServiceCollection.ts +0 -22
  256. package/src/orchestration/host/model/ServiceProvider.ts +0 -3
  257. package/src/orchestration/host/model/index.ts +0 -3
  258. package/src/orchestration/index.ts +0 -5
  259. package/src/orchestration/initServices.ts +0 -241
  260. package/src/orchestration/map/BalanceSummary/index.ts +0 -1
  261. package/src/orchestration/map/BalanceSummary/initBalanceSummaryMap.ts +0 -22
  262. package/src/orchestration/map/BalanceSummary/local.ts +0 -20
  263. package/src/orchestration/map/driver/index.ts +0 -1
  264. package/src/orchestration/map/driver/lmdb/Params.ts +0 -7
  265. package/src/orchestration/map/driver/lmdb/SynchronousLmdbMap.ts +0 -67
  266. package/src/orchestration/map/driver/lmdb/index.ts +0 -1
  267. package/src/orchestration/map/index.ts +0 -2
  268. package/src/orchestration/map/localPersistentMap.ts +0 -39
  269. package/src/orchestration/repository/index.ts +0 -1
  270. package/src/orchestration/repository/lib/index.ts +0 -1
  271. package/src/orchestration/repository/lib/repositoryFromArchivist.ts +0 -27
  272. package/src/orchestration/services/implementation/account.ts +0 -23
  273. package/src/orchestration/services/implementation/balance.ts +0 -13
  274. package/src/orchestration/services/implementation/chain/evm.ts +0 -35
  275. package/src/orchestration/services/implementation/chain/index.ts +0 -27
  276. package/src/orchestration/services/implementation/evm/index.ts +0 -1
  277. package/src/orchestration/services/implementation/evm/initChainId.ts +0 -18
  278. package/src/orchestration/services/implementation/evm/initEvmProvider.ts +0 -21
  279. package/src/orchestration/services/implementation/evm/initGanacheProvider.ts +0 -19
  280. package/src/orchestration/services/implementation/evm/initInfuraProvider.ts +0 -25
  281. package/src/orchestration/services/implementation/head.ts +0 -44
  282. package/src/orchestration/services/implementation/index.ts +0 -10
  283. package/src/orchestration/services/implementation/iterator.ts +0 -36
  284. package/src/orchestration/services/implementation/pendingTransactions.ts +0 -14
  285. package/src/orchestration/services/implementation/producer.ts +0 -13
  286. package/src/orchestration/services/implementation/reward.ts +0 -37
  287. package/src/orchestration/services/implementation/validator.ts +0 -14
  288. package/src/orchestration/services/index.ts +0 -1
  289. package/src/orchestration/status/RuntimeStatusMonitor.ts +0 -117
  290. package/src/orchestration/status/ServiceStatus.ts +0 -21
  291. package/src/orchestration/status/index.ts +0 -2
  292. package/src/orchestration/store/StoreKind.ts +0 -1
  293. package/src/orchestration/store/getStoreDirectory.ts +0 -15
  294. package/src/orchestration/store/index.ts +0 -2
  295. package/src/runCLI.ts +0 -111
  296. package/src/spec/MultiProducer.ChainOutput.json +0 -864
  297. package/src/start.ts +0 -7
  298. package/src/waitForHostPort.ts +0 -26
  299. package/src/xl1.ts +0 -7
  300. package/vitest.config.ts +0 -11
  301. package/xy.config.ts +0 -23
@@ -1,241 +0,0 @@
1
- import { assertEx } from '@xylabs/assert'
2
- import { asAddress } from '@xylabs/hex'
3
- import type { Logger } from '@xylabs/logger'
4
- import { isDefined } from '@xylabs/typeof'
5
- import { balanceSummaryRepositoryFromMap } from '@xyo-network/chain-modules'
6
- import type { Config } from '@xyo-network/chain-protocol'
7
- import type { BaseBlockProducerServiceParams, XyoValidatorParams } from '@xyo-network/chain-services'
8
- import { initTelemetry } from '@xyo-network/chain-telemetry'
9
- import { startupSpanAsync } from '@xyo-network/chain-utils'
10
- import { validateHydratedBlockState } from '@xyo-network/chain-validation'
11
- import type { ChainServiceCollectionV2 } from '@xyo-network/xl1-protocol-sdk'
12
-
13
- import {
14
- initChainFinalizedArchivist, initChainSubmissionsArchivist, initPendingBundledTransactionsArchivist, initRejectedTransactionsArchivist,
15
- initStakeIntentStateArchivist,
16
- } from './archivists/index.ts'
17
- import type { ChainInitializableParams } from './ChainInitializableParams.ts'
18
- import { initHealthEndpoints } from './health/index.ts'
19
- import { initBalanceSummaryMap } from './map/index.ts'
20
- import {
21
- initAccount, initBalanceService, initBlockProducer, initBlockRewardService, initChainIterator, initChainService, initElectionService, initHead,
22
- initPendingTransactions, initStakeIntentService,
23
- } from './services/index.ts'
24
- import { RuntimeStatusMonitor } from './status/index.ts'
25
-
26
- const telemetryConfig = {
27
- attributes: {
28
- serviceName: 'xl1-producer',
29
- serviceVersion: '1.0.0',
30
- },
31
- metricsConfig: {
32
- endpoint: '/metrics',
33
- port: 9464,
34
- },
35
- }
36
-
37
- interface Startable {
38
- start: () => Promise<void>
39
- }
40
-
41
- const isStartable = (value: unknown): value is Startable => {
42
- return isDefined((value as Startable).start) && typeof (value as Startable).start === 'function'
43
- }
44
-
45
- interface InitServicesContext {
46
- config: Config
47
- logger: Logger
48
- }
49
-
50
- export const initServices = async (context: InitServicesContext): Promise<ChainServiceCollectionV2> => {
51
- const { config, logger } = context
52
- const statusReporter = new RuntimeStatusMonitor(logger)
53
- statusReporter.onGlobalTransition({ to: 'started' }, () => {
54
- logger.log('All services started.')
55
- })
56
- statusReporter.onGlobalTransition({ to: 'error' }, () => {
57
- logger.error('Producer encountered an unhandled error!')
58
- // eslint-disable-next-line unicorn/no-process-exit
59
- process.exit(1)
60
- })
61
-
62
- await startupSpanAsync('initHealthEndpoints', () => initHealthEndpoints({ statusReporter }))
63
-
64
- const [
65
- { traceProvider, meterProvider },
66
- account,
67
- ] = await Promise.all([
68
- startupSpanAsync('initTelemetry', () => initTelemetry(telemetryConfig)),
69
- startupSpanAsync('initAccount', () => initAccount({ logger })),
70
- ])
71
-
72
- const initParams: ChainInitializableParams = {
73
- logger, traceProvider, meterProvider, statusReporter,
74
- }
75
-
76
- // Archivists
77
- const [
78
- chainArchivist,
79
- [pendingBundledTransactionsArchivist, pendingBundledTransactionsArchivistWrite],
80
- rejectedTransactionsArchivist,
81
- chainSubmissionsArchivistWrite,
82
- stakeIntentStateArchivist,
83
- chainService,
84
- balanceSummaryMap,
85
- ] = await Promise.all([
86
- startupSpanAsync(
87
- 'ChainFinalizedArchivist',
88
- () => initChainFinalizedArchivist(initParams),
89
- ),
90
- startupSpanAsync(
91
- 'PendingBundledTransactionsArchivist',
92
- () => initPendingBundledTransactionsArchivist(initParams),
93
- ),
94
- startupSpanAsync(
95
- 'RejectedTransactionsArchivist',
96
- () => initRejectedTransactionsArchivist(initParams),
97
- ),
98
- startupSpanAsync(
99
- 'ChainSubmissionsArchivist',
100
- () => initChainSubmissionsArchivist(initParams),
101
- ),
102
- startupSpanAsync(
103
- 'StakeIntentStateArchivist',
104
- () => initStakeIntentStateArchivist(initParams),
105
- ),
106
- startupSpanAsync(
107
- 'ChainService',
108
- () => initChainService({
109
- ...initParams, account, name: 'ChainService',
110
- }),
111
- ),
112
- startupSpanAsync(
113
- 'BalanceSummaryMap',
114
- () => initBalanceSummaryMap(initParams),
115
- ),
116
- ])
117
-
118
- const chainId = chainService.chainId
119
- const chainContractViewer = chainService
120
- const chainStakeViewer = chainService
121
- const chainStaker = chainService
122
- const head = await startupSpanAsync('initHead', () => initHead({
123
- ...initParams, account, chainArchivist, chainSubmissionsArchivistWrite,
124
- }))
125
- const [
126
- pendingTransactionsService,
127
- rewardService,
128
- chainIterator,
129
- balanceService,
130
- ] = await Promise.all([
131
- startupSpanAsync('PendingTransactions', () => initPendingTransactions({
132
- name: 'PendingTransactionsService',
133
- chainArchivist,
134
- chainId,
135
- pendingBundledTransactionsArchivist,
136
- rejectedTransactionsArchivist,
137
- ...initParams,
138
- })),
139
- startupSpanAsync(
140
- 'RewardService',
141
- () => initBlockRewardService({
142
- name: 'RewardService',
143
- account,
144
- chainService,
145
- ...initParams,
146
- }),
147
- ),
148
- startupSpanAsync(
149
- 'ChainIterator',
150
- () => initChainIterator({
151
- name: 'ChainIterator',
152
- chainArchivist,
153
- head,
154
- ...initParams,
155
- }),
156
- ),
157
- startupSpanAsync(
158
- 'BalanceService',
159
- () => initBalanceService({
160
- name: 'BalanceService',
161
- chainArchivist,
162
- summaryRepository: balanceSummaryRepositoryFromMap(balanceSummaryMap),
163
- ...initParams,
164
- }),
165
- ),
166
- ])
167
-
168
- const stakeIntentService = await startupSpanAsync(
169
- 'StakeIntentService',
170
- () => initStakeIntentService({
171
- name: 'StakeIntentService',
172
- chainArchivist,
173
- chainIterator,
174
- chainStakeViewer,
175
- stakeIntentStateArchivist,
176
- ...initParams,
177
- }),
178
- )
179
-
180
- const electionService = await startupSpanAsync(
181
- 'ElectionService',
182
- () => initElectionService({
183
- name: 'ElectionService',
184
- chainIterator,
185
- chainStakeViewer,
186
- stakeIntentService,
187
- ...initParams,
188
- }),
189
- )
190
-
191
- const validatorParams: XyoValidatorParams = {
192
- name: 'Validator',
193
- account,
194
- chainId,
195
- pendingBundledTransactionsArchivist,
196
- chainArchivist,
197
- electionService,
198
- rewardService,
199
- stakeIntentService,
200
- validateHydratedBlockState,
201
- ...initParams,
202
- }
203
- const rewardAddress = isDefined(process.env.XYO_BLOCK_REWARD_ADDRESS)
204
- ? assertEx(asAddress(process.env.XYO_BLOCK_REWARD_ADDRESS), () => 'Invalid block reward address provided')
205
- : account.address
206
- const producerParams: BaseBlockProducerServiceParams = {
207
- ...validatorParams,
208
- name: 'Producer',
209
- balanceService,
210
- chainArchivist,
211
- pendingBundledTransactionsArchivist,
212
- pendingTransactionsService,
213
- rejectedTransactionsArchivist,
214
- rewardAddress,
215
- ...initParams,
216
- }
217
- const producer = await startupSpanAsync('Producer', () => initBlockProducer(producerParams))
218
- // TODO: Add to base service collection
219
- const result: ChainServiceCollectionV2 = {
220
- account,
221
- balanceService,
222
- chainArchivist,
223
- chainContractViewer,
224
- chainIterator,
225
- chainStaker,
226
- chainStakeViewer,
227
- chainSubmissionsArchivistWrite,
228
- electionService,
229
- pendingBundledTransactionsArchivistWrite,
230
- pendingTransactionsService,
231
- producer,
232
- rewardService,
233
- stakeIntentService,
234
- }
235
-
236
- logger?.log('All services created. Starting...')
237
- const startableServices = [balanceSummaryMap, ...Object.values(result)].filter(isStartable)
238
- // Start all services that have a start method
239
- await Promise.all(startableServices.map(service => service.start()))
240
- return result
241
- }
@@ -1 +0,0 @@
1
- export * from './initBalanceSummaryMap.ts'
@@ -1,22 +0,0 @@
1
- import type { Hash } from '@xylabs/hex'
2
- import { isDefined } from '@xylabs/typeof'
3
- import type { MapType } from '@xyo-network/chain-protocol'
4
- import { startupSpanAsync } from '@xyo-network/chain-utils'
5
- import type { WithStorageMeta } from '@xyo-network/payload-model'
6
- import type { BalancesStepSummary } from '@xyo-network/xl1-protocol-sdk'
7
- import { Mutex } from 'async-mutex'
8
-
9
- import type { ChainInitializableParams } from '../../ChainInitializableParams.ts'
10
- import { initLocalBalanceSummaryMap } from './local.ts'
11
-
12
- const mutex = new Mutex()
13
- let singleton: MapType<Hash, WithStorageMeta<BalancesStepSummary>> | undefined
14
-
15
- export async function initBalanceSummaryMap(params: ChainInitializableParams): Promise<MapType<Hash, WithStorageMeta<BalancesStepSummary>>> {
16
- return await mutex.runExclusive(async () => {
17
- if (isDefined(singleton)) return singleton
18
- const local = await startupSpanAsync('BalanceSummaryMap:initLocal', () => initLocalBalanceSummaryMap(params))
19
- singleton = local
20
- return singleton
21
- })
22
- }
@@ -1,20 +0,0 @@
1
- import type { Hash } from '@xylabs/hex'
2
- import { isDefined } from '@xylabs/typeof'
3
- import type { MapType } from '@xyo-network/chain-protocol'
4
- import type { WithStorageMeta } from '@xyo-network/payload-model'
5
- import type { BalancesStepSummary } from '@xyo-network/xl1-protocol-sdk'
6
- import { Mutex } from 'async-mutex'
7
-
8
- import type { ChainInitializableParams } from '../../ChainInitializableParams.ts'
9
- import { getLocalPersistentMap } from '../localPersistentMap.ts'
10
-
11
- const mutex = new Mutex()
12
- let singleton: MapType<Hash, WithStorageMeta<BalancesStepSummary>> | undefined
13
-
14
- export const initLocalBalanceSummaryMap = async (_params: ChainInitializableParams): Promise<MapType<Hash, WithStorageMeta<BalancesStepSummary>>> => {
15
- return await mutex.runExclusive(async () => {
16
- if (isDefined(singleton)) return singleton
17
- singleton = await getLocalPersistentMap<Hash, WithStorageMeta<BalancesStepSummary>>('balance', 'summary')
18
- return singleton
19
- })
20
- }
@@ -1 +0,0 @@
1
- export * from './lmdb/index.ts'
@@ -1,7 +0,0 @@
1
- import type { BaseServiceParams } from '@xyo-network/chain-services'
2
-
3
- export interface LmdbMapParams extends BaseServiceParams {
4
- dbName: string
5
- location: string
6
- storeName: string
7
- }
@@ -1,67 +0,0 @@
1
- import { creatable } from '@xylabs/creatable'
2
- import { SynchronousMap } from '@xyo-network/chain-protocol'
3
- import { BaseService } from '@xyo-network/chain-services'
4
- import {
5
- Database, Key, open, RootDatabase,
6
- } from 'lmdb'
7
-
8
- import { LmdbMapParams } from './Params.ts'
9
-
10
- // TODO: Abstract creatable instead of service?
11
- /**
12
- * A synchronous LMDB-backed Map implementation.
13
- * This class provides a synchronous interface to an LMDB database, allowing for key-value storage.
14
- * It allows for multi-tenancy within a single LMDB environment by using a root database (located
15
- * at this.folderPath) and a specific DB within the environment (specified by this.params.storeName).
16
- * @template K - The type of keys in the map.
17
- * @template V - The type of values in the map.
18
- */
19
- @creatable()
20
- export class SynchronousLmdbMap<K extends Key, V> extends BaseService<LmdbMapParams> implements SynchronousMap<K, V> {
21
- protected db!: Database<V, K>
22
- protected rootDatabase!: RootDatabase
23
-
24
- /**
25
- * The path to the LMDB folder where the database is stored.
26
- * This is constructed from the location and dbName parameters
27
- * allowing for multiple DBs within the root (by specifying a
28
- * different storeName).
29
- * @returns The folder path for the LMDB database.
30
- */
31
- get folderPath() {
32
- return `${this.params.location}/${this.params.dbName}`
33
- }
34
-
35
- all(): V[] {
36
- return [...this.db.getRange({})].map(entry => entry.value)
37
- }
38
-
39
- clear(): void {
40
- this.db.clearSync()
41
- }
42
-
43
- delete(id: K): boolean {
44
- return this.db.removeSync(id)
45
- }
46
-
47
- get(id: K): V | undefined {
48
- return this.db.get(id)
49
- }
50
-
51
- has(id: K): boolean {
52
- return this.db.doesExist(id)
53
- }
54
-
55
- set(id: K, data: V): this {
56
- this.db.putSync(id, data)
57
- return this
58
- }
59
-
60
- override async startHandler(): Promise<void> {
61
- await super.startHandler()
62
- // Initialize the DB Environment (opens the default LMDB database)
63
- this.rootDatabase = open({ path: this.folderPath })
64
- // Open the desired DB (using the store name)
65
- this.db = this.rootDatabase.openDB<V, K>({ name: this.params.storeName })
66
- }
67
- }
@@ -1 +0,0 @@
1
- export * from './SynchronousLmdbMap.ts'
@@ -1,2 +0,0 @@
1
- export * from './BalanceSummary/index.ts'
2
- export * from './driver/index.ts'
@@ -1,39 +0,0 @@
1
- import { rm } from 'node:fs/promises'
2
-
3
- import type { MapType } from '@xyo-network/chain-protocol'
4
-
5
- import type { StoreKind } from '../store/index.ts'
6
- import { getStoreDirectory } from '../store/index.ts'
7
- import { SynchronousLmdbMap } from './driver/index.ts'
8
-
9
- /**
10
- * Returns a local persistent map
11
- * @param dbName The name of the database
12
- * @param storeName The name of the store
13
- * @param kind The kind of the map
14
- * @returns a map
15
- */
16
- export const getLocalPersistentMap = async <TId, TData>(dbName: string, storeName: string, kind: StoreKind = 'lmdb'): Promise<MapType<TId, TData>> => {
17
- switch (kind) {
18
- case 'lmdb': {
19
- const location = getStoreDirectory(dbName, 'lmdb')
20
- const store = await SynchronousLmdbMap.create({
21
- location, dbName, storeName,
22
- })
23
- return store as unknown as MapType<TId, TData>
24
- }
25
- }
26
- }
27
-
28
- export const deleteLocalPersistentMap = async (dbName: string, _storeName: string, kind: StoreKind = 'lmdb'): Promise<void> => {
29
- await Promise.resolve()
30
- console.warn(`Deleting local persistent map for ${dbName} of kind ${kind}.`)
31
- let location = ''
32
- switch (kind) {
33
- case 'lmdb': {
34
- location = getStoreDirectory(dbName, 'lmdb')
35
- break
36
- }
37
- }
38
- await rm(location, { recursive: true, force: true })
39
- }
@@ -1 +0,0 @@
1
- export * from './lib/index.ts'
@@ -1 +0,0 @@
1
- export * from './repositoryFromArchivist.ts'
@@ -1,27 +0,0 @@
1
- import { filterAs } from '@xylabs/array'
2
- import type { Hash } from '@xylabs/hex'
3
- import type { AnyNonPromise } from '@xylabs/promise'
4
- import type { ArchivistInstance } from '@xyo-network/archivist-model'
5
- import type { Payload, WithStorageMeta } from '@xyo-network/payload-model'
6
- import type { PayloadRepository } from '@xyo-network/xl1-protocol'
7
-
8
- export const repositoryFromArchivist = <T extends Payload = Payload>(
9
- archivist: ArchivistInstance,
10
- predicate: (value: AnyNonPromise) => WithStorageMeta<T>) => {
11
- const repository: PayloadRepository<Hash, WithStorageMeta<T>> = {
12
- get: async (hashes: Hash[]) => {
13
- const payloads = await archivist.get(hashes)
14
- const filtered = filterAs(payloads, predicate)
15
- return filtered
16
- },
17
- insert: async (payloads: T[]) => {
18
- const filtered = filterAs(payloads, predicate)
19
- await archivist.insert(filtered)
20
- return filtered
21
- },
22
- next: () => {
23
- throw new Error('Not implemented')
24
- },
25
- }
26
- return repository
27
- }
@@ -1,23 +0,0 @@
1
- import type { Promisable } from '@xylabs/promise'
2
- import { isUndefined } from '@xylabs/typeof'
3
- import { ADDRESS_INDEX, generateXyoBaseWalletFromPhrase } from '@xyo-network/chain-protocol'
4
- import { HDWallet } from '@xyo-network/wallet'
5
- import type { WalletInstance } from '@xyo-network/wallet-model'
6
- import type { Initializable, InitializableParams } from '@xyo-network/xl1-protocol'
7
-
8
- let accountServiceSingleton: Promisable<WalletInstance> | undefined
9
-
10
- export const initAccount: Initializable<InitializableParams, WalletInstance> = async ({ logger }): Promise<WalletInstance> => {
11
- if (accountServiceSingleton) return accountServiceSingleton
12
- let walletPhrase = process.env.XYO_WALLET_MNEMONIC
13
- if (isUndefined(walletPhrase)) {
14
- logger?.log('No wallet mnemonic specified!')
15
- const randomMnemonic = HDWallet.generateMnemonic()
16
- logger?.log(`Using randomly generated mnemonic: ${randomMnemonic}`)
17
- walletPhrase = randomMnemonic
18
- }
19
- const wallet = await generateXyoBaseWalletFromPhrase(walletPhrase)
20
- const account = await wallet.derivePath(ADDRESS_INDEX.XYO)
21
- accountServiceSingleton = account
22
- return accountServiceSingleton
23
- }
@@ -1,13 +0,0 @@
1
- import type { Promisable } from '@xylabs/promise'
2
- import type { BaseAccountBalanceServiceParams } from '@xyo-network/chain-services'
3
- import { BaseAccountBalanceService } from '@xyo-network/chain-services'
4
- import type { AccountBalanceServiceV2, Initializable } from '@xyo-network/xl1-protocol'
5
-
6
- let balanceServiceSingleton: Promisable<AccountBalanceServiceV2> | undefined
7
-
8
- export const initBalanceService: Initializable<BaseAccountBalanceServiceParams, AccountBalanceServiceV2>
9
- = async (params): Promise<AccountBalanceServiceV2> => {
10
- if (balanceServiceSingleton) return balanceServiceSingleton
11
- balanceServiceSingleton = await BaseAccountBalanceService.create(params)
12
- return balanceServiceSingleton
13
- }
@@ -1,35 +0,0 @@
1
- import { assertEx } from '@xylabs/assert'
2
- import type { Address } from '@xylabs/hex'
3
- import { asAddress } from '@xylabs/hex'
4
- import type { Promisable } from '@xylabs/promise'
5
- import type { BaseAccountableServiceParams } from '@xyo-network/chain-services'
6
- import { EvmChainService } from '@xyo-network/chain-services'
7
- import type { Initializable } from '@xyo-network/xl1-protocol'
8
- import type { ContractRunner } from 'ethers'
9
- import { Wallet } from 'ethers/wallet'
10
-
11
- import { canUseEvmProvider, initEvmProvider } from '../evm/index.ts'
12
-
13
- let chainStakeServiceSingleton: Promisable<EvmChainService> | undefined
14
-
15
- export const canUseEvmContractChainService = () => {
16
- return process.env.XYO_EVM_STAKING_CONTRACT_ADDRESS !== undefined && canUseEvmProvider()
17
- }
18
-
19
- export const initEvmContractChainService: Initializable<BaseAccountableServiceParams, EvmChainService> = async ({
20
- account, traceProvider, meterProvider, logger,
21
- }) => {
22
- if (chainStakeServiceSingleton) return chainStakeServiceSingleton
23
- // Parse ENV
24
- const emvStakingContractAddress = assertEx(process.env.XYO_EVM_STAKING_CONTRACT_ADDRESS, () => 'Error: XYO_EVM_STAKING_CONTRACT_ADDRESS is required')
25
- // Configure wallet
26
- const id: Address = assertEx(asAddress(emvStakingContractAddress), () => 'Error: XYO_EVM_STAKING_CONTRACT_ADDRESS is invalid')
27
- const provider = assertEx(await initEvmProvider())
28
- const privateKey = assertEx(account.private?.hex, () => 'Error: Account does not have a private key')
29
- const runner: ContractRunner = new Wallet(privateKey, provider)
30
- // Create service
31
- chainStakeServiceSingleton = EvmChainService.create({
32
- id, runner, traceProvider, meterProvider, logger,
33
- })
34
- return await chainStakeServiceSingleton
35
- }
@@ -1,27 +0,0 @@
1
- import type { Promisable } from '@xylabs/promise'
2
- import type { BaseAccountableServiceParams } from '@xyo-network/chain-services'
3
- import { MemoryChainService } from '@xyo-network/chain-services'
4
- import type { ChainService, Initializable } from '@xyo-network/xl1-protocol'
5
-
6
- import { canUseEvmContractChainService, initEvmContractChainService } from './evm.ts'
7
-
8
- let chainStakeServiceSingleton: Promisable<ChainService> | undefined
9
-
10
- export const initChainService: Initializable<BaseAccountableServiceParams, ChainService> = ({ account }) => init({ name: 'ChainService', account })
11
-
12
- const init: Initializable<BaseAccountableServiceParams, ChainService> = ({
13
- account, traceProvider, meterProvider, logger,
14
- }): Promisable<ChainService> => {
15
- if (chainStakeServiceSingleton) return chainStakeServiceSingleton
16
- chainStakeServiceSingleton = canUseEvmContractChainService()
17
- ? initEvmContractChainService({
18
- name: 'ChainStakeService',
19
- account,
20
- traceProvider,
21
- meterProvider,
22
- logger,
23
- })
24
- : MemoryChainService.create({})
25
- // Create service
26
- return chainStakeServiceSingleton
27
- }
@@ -1 +0,0 @@
1
- export * from './initEvmProvider.ts'
@@ -1,18 +0,0 @@
1
- import { assertEx } from '@xylabs/assert'
2
- import { hexFrom, isHex } from '@xylabs/hex'
3
-
4
- export const canUseChainId = (): boolean => {
5
- return process.env.XYO_JSON_RPC_NETWORK !== undefined
6
- }
7
-
8
- export const getChainId = () => {
9
- const chainId = assertEx(process.env.XYO_JSON_RPC_NETWORK, () => 'Missing XYO_JSON_RPC_NETWORK ENV VAR')
10
- if (isHex(chainId, { prefix: true })) {
11
- const hex = hexFrom(chainId)
12
- const parsed = Number.parseInt(hex, 16)
13
- return parsed
14
- } else {
15
- const parsed = Number.parseInt(chainId, 10)
16
- return parsed
17
- }
18
- }
@@ -1,21 +0,0 @@
1
- import { assertEx } from '@xylabs/assert'
2
- import type { JsonRpcProvider } from 'ethers/providers'
3
-
4
- import { canUseJsonRpcProvider, initJsonRpcProvider } from './initGanacheProvider.ts'
5
- import { canUseInfuraProvider, initInfuraProvider } from './initInfuraProvider.ts'
6
-
7
- let provider: Promise<JsonRpcProvider> | undefined
8
-
9
- export const initEvmProvider = async () => {
10
- if (provider) return provider
11
- if (canUseInfuraProvider()) {
12
- provider = initInfuraProvider()
13
- } else if (canUseJsonRpcProvider()) {
14
- provider = initJsonRpcProvider()
15
- }
16
- return assertEx(await provider, () => 'Error: No provider available')
17
- }
18
-
19
- export const canUseEvmProvider = () => {
20
- return canUseInfuraProvider() || canUseJsonRpcProvider()
21
- }
@@ -1,19 +0,0 @@
1
- import { assertEx } from '@xylabs/assert'
2
- import { JsonRpcProvider } from 'ethers/providers'
3
-
4
- import { canUseChainId, getChainId } from './initChainId.ts'
5
-
6
- export const initJsonRpcProvider = () => {
7
- const config = getJsonRpcProviderConfig()
8
- return Promise.resolve(new JsonRpcProvider(...config))
9
- }
10
-
11
- export const canUseJsonRpcProvider = () => {
12
- return canUseChainId()
13
- && process.env.XYO_JSON_RPC_URL !== undefined
14
- }
15
-
16
- export const getJsonRpcProviderConfig = () => {
17
- const jsonRpcUrl = assertEx(process.env.XYO_JSON_RPC_URL, () => 'Missing XYO_JSON_RPC_URL ENV VAR')
18
- return [jsonRpcUrl, getChainId()] as const
19
- }
@@ -1,25 +0,0 @@
1
- import { assertEx } from '@xylabs/assert'
2
- import { InfuraProvider } from 'ethers/providers'
3
-
4
- import { canUseChainId, getChainId } from './initChainId.ts'
5
-
6
- let instance: Promise<InfuraProvider> | undefined
7
-
8
- export const initInfuraProvider = () => {
9
- if (instance) return instance
10
- const config = getInfuraProviderConfig()
11
- instance = Promise.resolve(new InfuraProvider(...config))
12
- return instance
13
- }
14
-
15
- export const canUseInfuraProvider = (): boolean => {
16
- return canUseChainId()
17
- && process.env.INFURA_PROJECT_ID != undefined
18
- && process.env.INFURA_PROJECT_SECRET != undefined
19
- }
20
-
21
- export const getInfuraProviderConfig = () => {
22
- const projectId = assertEx(process.env.INFURA_PROJECT_ID, () => 'Missing INFURA_PROJECT_ID ENV VAR')
23
- const projectSecret = assertEx(process.env.INFURA_PROJECT_SECRET, () => 'Missing INFURA_PROJECT_SECRET ENV VAR')
24
- return [getChainId(), projectId, projectSecret] as const
25
- }