@lodestar/beacon-node 1.39.0-dev.aceb5b7416 → 1.39.0-dev.b37f2bd1bd

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 (248) hide show
  1. package/lib/api/impl/beacon/blocks/utils.js +1 -1
  2. package/lib/api/impl/beacon/blocks/utils.js.map +1 -1
  3. package/lib/chain/chain.d.ts +4 -1
  4. package/lib/chain/chain.d.ts.map +1 -1
  5. package/lib/chain/chain.js +12 -2
  6. package/lib/chain/chain.js.map +1 -1
  7. package/lib/chain/genesis/genesis.d.ts +51 -0
  8. package/lib/chain/genesis/genesis.d.ts.map +1 -0
  9. package/lib/chain/genesis/genesis.js +123 -0
  10. package/lib/chain/genesis/genesis.js.map +1 -0
  11. package/lib/chain/genesis/interface.d.ts +13 -0
  12. package/lib/chain/genesis/interface.d.ts.map +1 -0
  13. package/lib/chain/genesis/interface.js +2 -0
  14. package/lib/chain/genesis/interface.js.map +1 -0
  15. package/lib/chain/initState.d.ts +14 -1
  16. package/lib/chain/initState.d.ts.map +1 -1
  17. package/lib/chain/initState.js +62 -1
  18. package/lib/chain/initState.js.map +1 -1
  19. package/lib/chain/interface.d.ts +2 -0
  20. package/lib/chain/interface.d.ts.map +1 -1
  21. package/lib/chain/interface.js.map +1 -1
  22. package/lib/chain/prepareNextSlot.d.ts +4 -0
  23. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  24. package/lib/chain/prepareNextSlot.js +21 -1
  25. package/lib/chain/prepareNextSlot.js.map +1 -1
  26. package/lib/chain/produceBlock/produceBlockBody.d.ts +1 -0
  27. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  28. package/lib/chain/produceBlock/produceBlockBody.js +9 -6
  29. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  30. package/lib/db/beacon.d.ts +7 -1
  31. package/lib/db/beacon.d.ts.map +1 -1
  32. package/lib/db/beacon.js +12 -1
  33. package/lib/db/beacon.js.map +1 -1
  34. package/lib/db/buckets.d.ts +6 -0
  35. package/lib/db/buckets.d.ts.map +1 -1
  36. package/lib/db/buckets.js +7 -6
  37. package/lib/db/buckets.js.map +1 -1
  38. package/lib/db/interface.d.ts +7 -1
  39. package/lib/db/interface.d.ts.map +1 -1
  40. package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
  41. package/lib/db/repositories/blockArchiveIndex.d.ts.map +1 -1
  42. package/lib/db/repositories/depositDataRoot.d.ts +22 -0
  43. package/lib/db/repositories/depositDataRoot.d.ts.map +1 -0
  44. package/lib/db/repositories/depositDataRoot.js +62 -0
  45. package/lib/db/repositories/depositDataRoot.js.map +1 -0
  46. package/lib/db/repositories/depositEvent.d.ts +13 -0
  47. package/lib/db/repositories/depositEvent.d.ts.map +1 -0
  48. package/lib/db/repositories/depositEvent.js +27 -0
  49. package/lib/db/repositories/depositEvent.js.map +1 -0
  50. package/lib/db/repositories/eth1Data.d.ts +13 -0
  51. package/lib/db/repositories/eth1Data.d.ts.map +1 -0
  52. package/lib/db/repositories/eth1Data.js +26 -0
  53. package/lib/db/repositories/eth1Data.js.map +1 -0
  54. package/lib/db/repositories/index.d.ts +3 -0
  55. package/lib/db/repositories/index.d.ts.map +1 -1
  56. package/lib/db/repositories/index.js +3 -0
  57. package/lib/db/repositories/index.js.map +1 -1
  58. package/lib/db/single/index.d.ts +3 -0
  59. package/lib/db/single/index.d.ts.map +1 -0
  60. package/lib/db/single/index.js +3 -0
  61. package/lib/db/single/index.js.map +1 -0
  62. package/lib/db/single/preGenesisState.d.ts +16 -0
  63. package/lib/db/single/preGenesisState.d.ts.map +1 -0
  64. package/lib/db/single/preGenesisState.js +29 -0
  65. package/lib/db/single/preGenesisState.js.map +1 -0
  66. package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts +14 -0
  67. package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts.map +1 -0
  68. package/lib/db/single/preGenesisStateLastProcessedBlock.js +27 -0
  69. package/lib/db/single/preGenesisStateLastProcessedBlock.js.map +1 -0
  70. package/lib/eth1/errors.d.ts +66 -0
  71. package/lib/eth1/errors.d.ts.map +1 -0
  72. package/lib/eth1/errors.js +27 -0
  73. package/lib/eth1/errors.js.map +1 -0
  74. package/lib/eth1/eth1DataCache.d.ts +19 -0
  75. package/lib/eth1/eth1DataCache.d.ts.map +1 -0
  76. package/lib/eth1/eth1DataCache.js +19 -0
  77. package/lib/eth1/eth1DataCache.js.map +1 -0
  78. package/lib/eth1/eth1DepositDataTracker.d.ts +80 -0
  79. package/lib/eth1/eth1DepositDataTracker.d.ts.map +1 -0
  80. package/lib/eth1/eth1DepositDataTracker.js +317 -0
  81. package/lib/eth1/eth1DepositDataTracker.js.map +1 -0
  82. package/lib/eth1/eth1DepositsCache.d.ts +42 -0
  83. package/lib/eth1/eth1DepositsCache.d.ts.map +1 -0
  84. package/lib/eth1/eth1DepositsCache.js +119 -0
  85. package/lib/eth1/eth1DepositsCache.js.map +1 -0
  86. package/lib/eth1/index.d.ts +31 -0
  87. package/lib/eth1/index.d.ts.map +1 -0
  88. package/lib/eth1/index.js +71 -0
  89. package/lib/eth1/index.js.map +1 -0
  90. package/lib/eth1/interface.d.ts +74 -0
  91. package/lib/eth1/interface.d.ts.map +1 -0
  92. package/lib/eth1/interface.js +8 -0
  93. package/lib/eth1/interface.js.map +1 -0
  94. package/lib/eth1/options.d.ts +22 -0
  95. package/lib/eth1/options.d.ts.map +1 -0
  96. package/lib/eth1/options.js +8 -0
  97. package/lib/eth1/options.js.map +1 -0
  98. package/lib/eth1/provider/eth1Provider.d.ts +39 -0
  99. package/lib/eth1/provider/eth1Provider.d.ts.map +1 -0
  100. package/lib/eth1/provider/eth1Provider.js +147 -0
  101. package/lib/eth1/provider/eth1Provider.js.map +1 -0
  102. package/lib/{execution/engine → eth1/provider}/jsonRpcHttpClient.d.ts +1 -1
  103. package/lib/eth1/provider/jsonRpcHttpClient.d.ts.map +1 -0
  104. package/lib/eth1/provider/jsonRpcHttpClient.js.map +1 -0
  105. package/lib/eth1/provider/jwt.d.ts.map +1 -0
  106. package/lib/eth1/provider/jwt.js.map +1 -0
  107. package/lib/eth1/provider/utils.d.ts +65 -0
  108. package/lib/eth1/provider/utils.d.ts.map +1 -0
  109. package/lib/eth1/provider/utils.js +120 -0
  110. package/lib/eth1/provider/utils.js.map +1 -0
  111. package/lib/eth1/stream.d.ts +15 -0
  112. package/lib/eth1/stream.d.ts.map +1 -0
  113. package/lib/eth1/stream.js +54 -0
  114. package/lib/eth1/stream.js.map +1 -0
  115. package/lib/eth1/utils/depositContract.d.ts +14 -0
  116. package/lib/eth1/utils/depositContract.d.ts.map +1 -0
  117. package/lib/eth1/utils/depositContract.js +33 -0
  118. package/lib/eth1/utils/depositContract.js.map +1 -0
  119. package/lib/eth1/utils/deposits.d.ts +8 -0
  120. package/lib/eth1/utils/deposits.d.ts.map +1 -0
  121. package/lib/eth1/utils/deposits.js +47 -0
  122. package/lib/eth1/utils/deposits.js.map +1 -0
  123. package/lib/eth1/utils/eth1Data.d.ts +22 -0
  124. package/lib/eth1/utils/eth1Data.d.ts.map +1 -0
  125. package/lib/eth1/utils/eth1Data.js +77 -0
  126. package/lib/eth1/utils/eth1Data.js.map +1 -0
  127. package/lib/eth1/utils/eth1DepositEvent.d.ts +7 -0
  128. package/lib/eth1/utils/eth1DepositEvent.d.ts.map +1 -0
  129. package/lib/eth1/utils/eth1DepositEvent.js +13 -0
  130. package/lib/eth1/utils/eth1DepositEvent.js.map +1 -0
  131. package/lib/eth1/utils/eth1Vote.d.ts +17 -0
  132. package/lib/eth1/utils/eth1Vote.d.ts.map +1 -0
  133. package/lib/eth1/utils/eth1Vote.js +111 -0
  134. package/lib/eth1/utils/eth1Vote.js.map +1 -0
  135. package/lib/eth1/utils/groupDepositEventsByBlock.d.ts +9 -0
  136. package/lib/eth1/utils/groupDepositEventsByBlock.d.ts.map +1 -0
  137. package/lib/eth1/utils/groupDepositEventsByBlock.js +17 -0
  138. package/lib/eth1/utils/groupDepositEventsByBlock.js.map +1 -0
  139. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts +10 -0
  140. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts.map +1 -0
  141. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js +14 -0
  142. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js.map +1 -0
  143. package/lib/execution/engine/http.d.ts +1 -1
  144. package/lib/execution/engine/http.d.ts.map +1 -1
  145. package/lib/execution/engine/http.js +3 -2
  146. package/lib/execution/engine/http.js.map +1 -1
  147. package/lib/execution/engine/index.d.ts.map +1 -1
  148. package/lib/execution/engine/index.js +1 -1
  149. package/lib/execution/engine/index.js.map +1 -1
  150. package/lib/execution/engine/interface.d.ts +1 -1
  151. package/lib/execution/engine/interface.d.ts.map +1 -1
  152. package/lib/execution/engine/interface.js.map +1 -1
  153. package/lib/execution/engine/mock.d.ts.map +1 -1
  154. package/lib/execution/engine/mock.js +1 -1
  155. package/lib/execution/engine/mock.js.map +1 -1
  156. package/lib/execution/engine/payloadIdCache.d.ts +1 -1
  157. package/lib/execution/engine/payloadIdCache.d.ts.map +1 -1
  158. package/lib/execution/engine/types.d.ts +1 -1
  159. package/lib/execution/engine/types.d.ts.map +1 -1
  160. package/lib/execution/engine/types.js +1 -1
  161. package/lib/execution/engine/types.js.map +1 -1
  162. package/lib/execution/engine/utils.d.ts +2 -64
  163. package/lib/execution/engine/utils.d.ts.map +1 -1
  164. package/lib/execution/engine/utils.js +2 -91
  165. package/lib/execution/engine/utils.js.map +1 -1
  166. package/lib/index.d.ts +2 -1
  167. package/lib/index.d.ts.map +1 -1
  168. package/lib/index.js +2 -1
  169. package/lib/index.js.map +1 -1
  170. package/lib/metrics/metrics/lodestar.d.ts +35 -0
  171. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  172. package/lib/metrics/metrics/lodestar.js +90 -0
  173. package/lib/metrics/metrics/lodestar.js.map +1 -1
  174. package/lib/node/nodejs.d.ts.map +1 -1
  175. package/lib/node/nodejs.js +9 -0
  176. package/lib/node/nodejs.js.map +1 -1
  177. package/lib/node/options.d.ts +2 -0
  178. package/lib/node/options.d.ts.map +1 -1
  179. package/lib/node/options.js +2 -0
  180. package/lib/node/options.js.map +1 -1
  181. package/lib/node/utils/interop/deposits.d.ts +1 -2
  182. package/lib/node/utils/interop/deposits.d.ts.map +1 -1
  183. package/lib/node/utils/interop/deposits.js.map +1 -1
  184. package/lib/node/utils/interop/state.d.ts +1 -1
  185. package/lib/node/utils/interop/state.d.ts.map +1 -1
  186. package/lib/node/utils/state.d.ts +7 -1
  187. package/lib/node/utils/state.d.ts.map +1 -1
  188. package/lib/node/utils/state.js +14 -1
  189. package/lib/node/utils/state.js.map +1 -1
  190. package/package.json +20 -14
  191. package/src/api/impl/beacon/blocks/utils.ts +1 -1
  192. package/src/chain/chain.ts +15 -1
  193. package/src/chain/genesis/genesis.ts +190 -0
  194. package/src/chain/genesis/interface.ts +14 -0
  195. package/src/chain/initState.ts +97 -1
  196. package/src/chain/interface.ts +2 -0
  197. package/src/chain/prepareNextSlot.ts +28 -1
  198. package/src/chain/produceBlock/produceBlockBody.ts +10 -6
  199. package/src/db/beacon.ts +15 -0
  200. package/src/db/buckets.ts +7 -6
  201. package/src/db/interface.ts +13 -0
  202. package/src/db/repositories/depositDataRoot.ts +80 -0
  203. package/src/db/repositories/depositEvent.ts +32 -0
  204. package/src/db/repositories/eth1Data.ts +33 -0
  205. package/src/db/repositories/index.ts +3 -0
  206. package/src/db/single/index.ts +2 -0
  207. package/src/db/single/preGenesisState.ts +37 -0
  208. package/src/db/single/preGenesisStateLastProcessedBlock.ts +34 -0
  209. package/src/eth1/errors.ts +40 -0
  210. package/src/eth1/eth1DataCache.ts +26 -0
  211. package/src/eth1/eth1DepositDataTracker.ts +410 -0
  212. package/src/eth1/eth1DepositsCache.ts +141 -0
  213. package/src/eth1/index.ts +94 -0
  214. package/src/eth1/interface.ts +87 -0
  215. package/src/eth1/options.ts +28 -0
  216. package/src/eth1/provider/eth1Provider.ts +229 -0
  217. package/src/{execution/engine → eth1/provider}/jsonRpcHttpClient.ts +1 -1
  218. package/src/eth1/provider/utils.ts +136 -0
  219. package/src/eth1/stream.ts +75 -0
  220. package/src/eth1/utils/depositContract.ts +37 -0
  221. package/src/eth1/utils/deposits.ts +70 -0
  222. package/src/eth1/utils/eth1Data.ts +100 -0
  223. package/src/eth1/utils/eth1DepositEvent.ts +12 -0
  224. package/src/eth1/utils/eth1Vote.ts +142 -0
  225. package/src/eth1/utils/groupDepositEventsByBlock.ts +19 -0
  226. package/src/eth1/utils/optimizeNextBlockDiffForGenesis.ts +18 -0
  227. package/src/execution/engine/http.ts +9 -8
  228. package/src/execution/engine/index.ts +1 -1
  229. package/src/execution/engine/interface.ts +1 -1
  230. package/src/execution/engine/mock.ts +2 -1
  231. package/src/execution/engine/payloadIdCache.ts +1 -1
  232. package/src/execution/engine/types.ts +9 -9
  233. package/src/execution/engine/utils.ts +5 -111
  234. package/src/index.ts +2 -1
  235. package/src/metrics/metrics/lodestar.ts +92 -0
  236. package/src/node/nodejs.ts +9 -0
  237. package/src/node/options.ts +3 -0
  238. package/src/node/utils/interop/deposits.ts +1 -3
  239. package/src/node/utils/interop/state.ts +1 -1
  240. package/src/node/utils/state.ts +18 -3
  241. package/lib/execution/engine/jsonRpcHttpClient.d.ts.map +0 -1
  242. package/lib/execution/engine/jsonRpcHttpClient.js.map +0 -1
  243. package/lib/execution/engine/jwt.d.ts.map +0 -1
  244. package/lib/execution/engine/jwt.js.map +0 -1
  245. /package/lib/{execution/engine → eth1/provider}/jsonRpcHttpClient.js +0 -0
  246. /package/lib/{execution/engine → eth1/provider}/jwt.d.ts +0 -0
  247. /package/lib/{execution/engine → eth1/provider}/jwt.js +0 -0
  248. /package/src/{execution/engine → eth1/provider}/jwt.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"nodejs.js","sourceRoot":"","sources":["../../src/node/nodejs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nodejs.js","sourceRoot":"","sources":["../../src/node/nodejs.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { ApiOptions } from "../api/options.js";
2
2
  import { ArchiveMode, DEFAULT_ARCHIVE_MODE, IChainOptions } from "../chain/options.js";
3
3
  import { ValidatorMonitorOpts } from "../chain/validatorMonitor.js";
4
4
  import { DatabaseOptions } from "../db/options.js";
5
+ import { Eth1Options } from "../eth1/options.js";
5
6
  import { ExecutionBuilderOpts, ExecutionEngineOpts, defaultExecutionBuilderHttpOpts, defaultExecutionEngineHttpOpts } from "../execution/index.js";
6
7
  import { MetricsOptions } from "../metrics/options.js";
7
8
  import { MonitoringOptions } from "../monitoring/options.js";
@@ -13,6 +14,7 @@ export interface IBeaconNodeOptions {
13
14
  api: ApiOptions;
14
15
  chain: IChainOptions;
15
16
  db: DatabaseOptions;
17
+ eth1: Eth1Options;
16
18
  executionEngine: ExecutionEngineOpts;
17
19
  executionBuilder: ExecutionBuilderOpts;
18
20
  metrics: MetricsOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/node/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAoB,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAC,WAAW,EAAE,oBAAoB,EAAE,aAAa,EAAsB,MAAM,qBAAqB,CAAC;AAC1G,OAAO,EAAC,oBAAoB,EAA8B,MAAM,8BAA8B,CAAC;AAC/F,OAAO,EAAC,eAAe,EAAmB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,+BAA+B,EAE/B,8BAA8B,EAE/B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,cAAc,EAAwB,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAC,iBAAiB,EAA2B,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAC,cAAc,EAAwB,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAC,WAAW,EAAqB,MAAM,oBAAoB,CAAC;AAGnE,OAAO,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AAGnD,OAAO,EAAC,8BAA8B,EAAE,+BAA+B,EAAE,WAAW,EAAE,oBAAoB,EAAC,CAAC;AAE5G,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,UAAU,CAAC;IAChB,KAAK,EAAE,aAAa,CAAC;IACrB,EAAE,EAAE,eAAe,CAAC;IACpB,eAAe,EAAE,mBAAmB,CAAC;IACrC,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,OAAO,EAAE,cAAc,CAAC;IACxB,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,UAAU,EAAE,iBAAiB,CAAC;IAC9B,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,eAAO,MAAM,cAAc,EAAE,kBAW5B,CAAC"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/node/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAoB,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAC,WAAW,EAAE,oBAAoB,EAAE,aAAa,EAAsB,MAAM,qBAAqB,CAAC;AAC1G,OAAO,EAAC,oBAAoB,EAA8B,MAAM,8BAA8B,CAAC;AAC/F,OAAO,EAAC,eAAe,EAAmB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAC,WAAW,EAAqB,MAAM,oBAAoB,CAAC;AACnE,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,+BAA+B,EAE/B,8BAA8B,EAE/B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,cAAc,EAAwB,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAC,iBAAiB,EAA2B,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAC,cAAc,EAAwB,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAC,WAAW,EAAqB,MAAM,oBAAoB,CAAC;AAGnE,OAAO,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AAGnD,OAAO,EAAC,8BAA8B,EAAE,+BAA+B,EAAE,WAAW,EAAE,oBAAoB,EAAC,CAAC;AAE5G,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,UAAU,CAAC;IAChB,KAAK,EAAE,aAAa,CAAC;IACrB,EAAE,EAAE,eAAe,CAAC;IACpB,IAAI,EAAE,WAAW,CAAC;IAClB,eAAe,EAAE,mBAAmB,CAAC;IACrC,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,OAAO,EAAE,cAAc,CAAC;IACxB,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,UAAU,EAAE,iBAAiB,CAAC;IAC9B,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,eAAO,MAAM,cAAc,EAAE,kBAY5B,CAAC"}
@@ -2,6 +2,7 @@ import { defaultApiOptions } from "../api/options.js";
2
2
  import { ArchiveMode, DEFAULT_ARCHIVE_MODE, defaultChainOptions } from "../chain/options.js";
3
3
  import { defaultValidatorMonitorOpts } from "../chain/validatorMonitor.js";
4
4
  import { defaultDbOptions } from "../db/options.js";
5
+ import { defaultEth1Options } from "../eth1/options.js";
5
6
  import { defaultExecutionBuilderHttpOpts, defaultExecutionBuilderOpts, defaultExecutionEngineHttpOpts, defaultExecutionEngineOpts, } from "../execution/index.js";
6
7
  import { defaultMetricsOptions } from "../metrics/options.js";
7
8
  import { defaultMonitoringOptions } from "../monitoring/options.js";
@@ -15,6 +16,7 @@ export const defaultOptions = {
15
16
  api: defaultApiOptions,
16
17
  chain: defaultChainOptions,
17
18
  db: defaultDbOptions,
19
+ eth1: defaultEth1Options,
18
20
  executionEngine: defaultExecutionEngineOpts,
19
21
  executionBuilder: defaultExecutionBuilderOpts,
20
22
  metrics: defaultMetricsOptions,
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/node/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,iBAAiB,EAAC,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAC,WAAW,EAAE,oBAAoB,EAAiB,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;AAC1G,OAAO,EAAuB,2BAA2B,EAAC,MAAM,8BAA8B,CAAC;AAC/F,OAAO,EAAkB,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAGL,+BAA+B,EAC/B,2BAA2B,EAC3B,8BAA8B,EAC9B,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAiB,qBAAqB,EAAC,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAoB,wBAAwB,EAAC,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAiB,qBAAqB,EAAC,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAc,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AAEnE,8DAA8D;AAC9D,OAAO,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AAEnD,iDAAiD;AACjD,OAAO,EAAC,8BAA8B,EAAE,+BAA+B,EAAE,WAAW,EAAE,oBAAoB,EAAC,CAAC;AAe5G,MAAM,CAAC,MAAM,cAAc,GAAuB;IAChD,GAAG,EAAE,iBAAiB;IACtB,KAAK,EAAE,mBAAmB;IAC1B,EAAE,EAAE,gBAAgB;IACpB,eAAe,EAAE,0BAA0B;IAC3C,gBAAgB,EAAE,2BAA2B;IAC7C,OAAO,EAAE,qBAAqB;IAC9B,gBAAgB,EAAE,2BAA2B;IAC7C,UAAU,EAAE,wBAAwB;IACpC,OAAO,EAAE,qBAAqB;IAC9B,IAAI,EAAE,kBAAkB;CACzB,CAAC"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/node/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,iBAAiB,EAAC,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAC,WAAW,EAAE,oBAAoB,EAAiB,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;AAC1G,OAAO,EAAuB,2BAA2B,EAAC,MAAM,8BAA8B,CAAC;AAC/F,OAAO,EAAkB,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAc,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAGL,+BAA+B,EAC/B,2BAA2B,EAC3B,8BAA8B,EAC9B,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAiB,qBAAqB,EAAC,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAoB,wBAAwB,EAAC,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAiB,qBAAqB,EAAC,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAc,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AAEnE,8DAA8D;AAC9D,OAAO,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AAEnD,iDAAiD;AACjD,OAAO,EAAC,8BAA8B,EAAE,+BAA+B,EAAE,WAAW,EAAE,oBAAoB,EAAC,CAAC;AAgB5G,MAAM,CAAC,MAAM,cAAc,GAAuB;IAChD,GAAG,EAAE,iBAAiB;IACtB,KAAK,EAAE,mBAAmB;IAC1B,EAAE,EAAE,gBAAgB;IACpB,IAAI,EAAE,kBAAkB;IACxB,eAAe,EAAE,0BAA0B;IAC3C,gBAAgB,EAAE,2BAA2B;IAC7C,OAAO,EAAE,qBAAqB;IAC9B,gBAAgB,EAAE,2BAA2B;IAC7C,UAAU,EAAE,wBAAwB;IACpC,OAAO,EAAE,qBAAqB;IAC9B,IAAI,EAAE,kBAAkB;CACzB,CAAC"}
@@ -1,7 +1,6 @@
1
- import { ByteVectorType, CompositeViewDU, ListCompositeType } from "@chainsafe/ssz";
2
1
  import { ChainConfig } from "@lodestar/config";
3
2
  import { phase0 } from "@lodestar/types";
4
- export type DepositTree = CompositeViewDU<ListCompositeType<ByteVectorType>>;
3
+ import { DepositTree } from "../../../db/repositories/depositDataRoot.js";
5
4
  /**
6
5
  * Compute and return deposit data from other validators.
7
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"deposits.d.ts","sourceRoot":"","sources":["../../../../src/node/utils/interop/deposits.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAC,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAQ7C,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAE5C,MAAM,MAAM,WAAW,GAAG,eAAe,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC;AAE7E;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,EACnB,mBAAmB,EAAE,WAAW,EAChC,cAAc,EAAE,MAAM,EACtB,EAAC,mBAAmB,EAAC,GAAE;IAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAAM,GAC1D,MAAM,CAAC,OAAO,EAAE,CA+BlB"}
1
+ {"version":3,"file":"deposits.d.ts","sourceRoot":"","sources":["../../../../src/node/utils/interop/deposits.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAQ7C,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAC,WAAW,EAAC,MAAM,6CAA6C,CAAC;AAExE;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,EACnB,mBAAmB,EAAE,WAAW,EAChC,cAAc,EAAE,MAAM,EACtB,EAAC,mBAAmB,EAAC,GAAE;IAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAAM,GAC1D,MAAM,CAAC,OAAO,EAAE,CA+BlB"}
@@ -1 +1 @@
1
- {"version":3,"file":"deposits.js","sourceRoot":"","sources":["../../../../src/node/utils/interop/deposits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAC,IAAI,EAAE,QAAQ,EAAC,MAAM,mCAAmC,CAAC;AAGjE,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,8BAA8B,EAC9B,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAC,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,4BAA4B,CAAC;AAC3G,OAAO,EAAS,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAI5C;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAmB,EACnB,mBAAgC,EAChC,cAAsB,EACtB,EAAC,mBAAmB,KAAqC,EAAE;IAE3D,mBAAmB,CAAC,MAAM,EAAE,CAAC;IAC7B,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;IACxD,kDAAkD;IAClD,MAAM,2BAA2B,GAAG,mBAAmB,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,qBAAqB,CAAC;IAEjH,OAAO,iBAAiB,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE;QAC5D,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC;QAEjD,qBAAqB;QACrB,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7C,qBAAqB,CAAC,CAAC,CAAC,GAAG,2BAA2B,CAAC;QACvD,MAAM,IAAI,GAAuB;YAC/B,MAAM;YACN,qBAAqB;YACrB,MAAM,EAAE,qBAAqB;YAC7B,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;SAC3B,CAAC;QAEF,MAAM,MAAM,GAAG,aAAa,CAAC,cAAc,EAAE,MAAM,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC;QACrF,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAChF,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;QAEvD,qBAAqB;QACrB,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,mBAAmB,CAAC,MAAM,EAAE,CAAC;QAC7B,OAAO;YACL,KAAK,EAAE,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/F,IAAI;SACL,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"deposits.js","sourceRoot":"","sources":["../../../../src/node/utils/interop/deposits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAC,IAAI,EAAE,QAAQ,EAAC,MAAM,mCAAmC,CAAC;AAEjE,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,8BAA8B,EAC9B,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAC,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,4BAA4B,CAAC;AAC3G,OAAO,EAAS,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAG5C;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAmB,EACnB,mBAAgC,EAChC,cAAsB,EACtB,EAAC,mBAAmB,KAAqC,EAAE;IAE3D,mBAAmB,CAAC,MAAM,EAAE,CAAC;IAC7B,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;IACxD,kDAAkD;IAClD,MAAM,2BAA2B,GAAG,mBAAmB,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,qBAAqB,CAAC;IAEjH,OAAO,iBAAiB,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE;QAC5D,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC;QAEjD,qBAAqB;QACrB,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7C,qBAAqB,CAAC,CAAC,CAAC,GAAG,2BAA2B,CAAC;QACvD,MAAM,IAAI,GAAuB;YAC/B,MAAM;YACN,qBAAqB;YACrB,MAAM,EAAE,qBAAqB;YAC7B,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;SAC3B,CAAC;QAEF,MAAM,MAAM,GAAG,aAAa,CAAC,cAAc,EAAE,MAAM,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC;QACrF,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAChF,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;QAEvD,qBAAqB;QACrB,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,mBAAmB,CAAC,MAAM,EAAE,CAAC;QAC7B,OAAO;YACL,KAAK,EAAE,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/F,IAAI;SACL,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { ChainForkConfig } from "@lodestar/config";
2
2
  import { BeaconStateAllForks } from "@lodestar/state-transition";
3
3
  import { Bytes32, TimeSeconds, phase0 } from "@lodestar/types";
4
- import { DepositTree } from "./deposits.js";
4
+ import { DepositTree } from "../../../db/repositories/depositDataRoot.js";
5
5
  export declare const INTEROP_BLOCK_HASH: Buffer<ArrayBuffer>;
6
6
  export declare const INTEROP_TIMESTAMP: number;
7
7
  export declare const GENESIS_GAS_LIMIT = 30000000;
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../../src/node/utils/interop/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EACL,mBAAmB,EAGpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAmB,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAE1C,eAAO,MAAM,kBAAkB,qBAAwB,CAAC;AACxD,eAAO,MAAM,iBAAiB,QAAkB,CAAC;AAGjD,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAC1C,eAAO,MAAM,wBAAwB,QAAqB,CAAC;AAE3D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,WAAW,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAGF,wBAAgB,eAAe,CAC7B,MAAM,EAAE,eAAe,EACvB,EACE,WAA2C,EAC3C,aAAkC,EAClC,aAAiC,GAClC,EAAE,gBAAgB,EACnB,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,EAC1B,uBAAuB,CAAC,EAAE,WAAW,GACpC,mBAAmB,CAwBrB"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../../src/node/utils/interop/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EACL,mBAAmB,EAGpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAmB,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAC,WAAW,EAAC,MAAM,6CAA6C,CAAC;AAExE,eAAO,MAAM,kBAAkB,qBAAwB,CAAC;AACxD,eAAO,MAAM,iBAAiB,QAAkB,CAAC;AAGjD,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAC1C,eAAO,MAAM,wBAAwB,QAAqB,CAAC;AAE3D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,WAAW,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAGF,wBAAgB,eAAe,CAC7B,MAAM,EAAE,eAAe,EACvB,EACE,WAA2C,EAC3C,aAAkC,EAClC,aAAiC,GAClC,EAAE,gBAAgB,EACnB,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,EAC1B,uBAAuB,CAAC,EAAE,WAAW,GACpC,mBAAmB,CAwBrB"}
@@ -1,8 +1,14 @@
1
1
  import { ChainForkConfig } from "@lodestar/config";
2
2
  import { BeaconStateAllForks } from "@lodestar/state-transition";
3
+ import { phase0 } from "@lodestar/types";
4
+ import { IBeaconDb } from "../../db/index.js";
3
5
  import { InteropStateOpts } from "./interop/state.js";
4
6
  /**
5
7
  * Builds state for `dev` command, for sim testing and some other tests
6
8
  */
7
- export declare function initDevState(config: ChainForkConfig, validatorCount: number, interopStateOpts: InteropStateOpts): BeaconStateAllForks;
9
+ export declare function initDevState(config: ChainForkConfig, validatorCount: number, interopStateOpts: InteropStateOpts): {
10
+ deposits: phase0.Deposit[];
11
+ state: BeaconStateAllForks;
12
+ };
13
+ export declare function writeDeposits(db: IBeaconDb, deposits: phase0.Deposit[]): Promise<void>;
8
14
  //# sourceMappingURL=state.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/node/utils/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,mBAAmB,EAAC,MAAM,4BAA4B,CAAC;AAG/D,OAAO,EAAC,gBAAgB,EAAkB,MAAM,oBAAoB,CAAC;AAErE;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,eAAe,EACvB,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,gBAAgB,GACjC,mBAAmB,CAQrB"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/node/utils/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,mBAAmB,EAAC,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAC,gBAAgB,EAAkB,MAAM,oBAAoB,CAAC;AAErE;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,eAAe,EACvB,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,gBAAgB,GACjC;IAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;IAAC,KAAK,EAAE,mBAAmB,CAAA;CAAC,CAS1D;AAED,wBAAsB,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAW5F"}
@@ -6,6 +6,19 @@ import { getInteropState } from "./interop/state.js";
6
6
  */
7
7
  export function initDevState(config, validatorCount, interopStateOpts) {
8
8
  const deposits = interopDeposits(config, ssz.phase0.DepositDataRootList.defaultViewDU(), validatorCount, interopStateOpts);
9
- return getInteropState(config, interopStateOpts, deposits);
9
+ const state = getInteropState(config, interopStateOpts, deposits);
10
+ return { deposits, state };
11
+ }
12
+ export async function writeDeposits(db, deposits) {
13
+ for (let i = 0; i < deposits.length; i++) {
14
+ await Promise.all([
15
+ db.depositEvent.put(i, {
16
+ blockNumber: i,
17
+ index: i,
18
+ depositData: deposits[i].data,
19
+ }),
20
+ db.depositDataRoot.put(i, ssz.phase0.DepositData.hashTreeRoot(deposits[i].data)),
21
+ ]);
22
+ }
10
23
  }
11
24
  //# sourceMappingURL=state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/node/utils/state.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACpC,OAAO,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAmB,eAAe,EAAC,MAAM,oBAAoB,CAAC;AAErE;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAuB,EACvB,cAAsB,EACtB,gBAAkC;IAElC,MAAM,QAAQ,GAAG,eAAe,CAC9B,MAAM,EACN,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,EAC9C,cAAc,EACd,gBAAgB,CACjB,CAAC;IACF,OAAO,eAAe,CAAC,MAAM,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;AAC7D,CAAC"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/node/utils/state.ts"],"names":[],"mappings":"AAEA,OAAO,EAAS,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAmB,eAAe,EAAC,MAAM,oBAAoB,CAAC;AAErE;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAuB,EACvB,cAAsB,EACtB,gBAAkC;IAElC,MAAM,QAAQ,GAAG,eAAe,CAC9B,MAAM,EACN,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,EAC9C,cAAc,EACd,gBAAgB,CACjB,CAAC;IACF,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IAClE,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAC,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAAa,EAAE,QAA0B;IAC3E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;gBACrB,WAAW,EAAE,CAAC;gBACd,KAAK,EAAE,CAAC;gBACR,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;aAC9B,CAAC;YACF,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SACjF,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "bugs": {
12
12
  "url": "https://github.com/ChainSafe/lodestar/issues"
13
13
  },
14
- "version": "1.39.0-dev.aceb5b7416",
14
+ "version": "1.39.0-dev.b37f2bd1bd",
15
15
  "type": "module",
16
16
  "exports": {
17
17
  ".": {
@@ -39,6 +39,11 @@
39
39
  "types": "./lib/db/index.d.ts",
40
40
  "import": "./lib/db/index.js"
41
41
  },
42
+ "./eth1": {
43
+ "bun": "./src/eth1/index.ts",
44
+ "types": "./lib/eth1/index.d.ts",
45
+ "import": "./lib/eth1/index.js"
46
+ },
42
47
  "./metrics": {
43
48
  "bun": "./src/metrics/index.ts",
44
49
  "types": "./lib/metrics/index.d.ts",
@@ -121,6 +126,7 @@
121
126
  "@chainsafe/ssz": "^1.2.2",
122
127
  "@chainsafe/threads": "^1.11.3",
123
128
  "@crate-crypto/node-eth-kzg": "0.9.1",
129
+ "@ethersproject/abi": "^5.7.0",
124
130
  "@fastify/bearer-auth": "^10.0.1",
125
131
  "@fastify/cors": "^10.0.1",
126
132
  "@fastify/swagger": "^9.0.0",
@@ -134,18 +140,18 @@
134
140
  "@libp2p/peer-id": "^5.1.0",
135
141
  "@libp2p/prometheus-metrics": "^4.3.15",
136
142
  "@libp2p/tcp": "^10.1.8",
137
- "@lodestar/api": "1.39.0-dev.aceb5b7416",
138
- "@lodestar/config": "1.39.0-dev.aceb5b7416",
139
- "@lodestar/db": "1.39.0-dev.aceb5b7416",
140
- "@lodestar/fork-choice": "1.39.0-dev.aceb5b7416",
141
- "@lodestar/light-client": "1.39.0-dev.aceb5b7416",
142
- "@lodestar/logger": "1.39.0-dev.aceb5b7416",
143
- "@lodestar/params": "1.39.0-dev.aceb5b7416",
144
- "@lodestar/reqresp": "1.39.0-dev.aceb5b7416",
145
- "@lodestar/state-transition": "1.39.0-dev.aceb5b7416",
146
- "@lodestar/types": "1.39.0-dev.aceb5b7416",
147
- "@lodestar/utils": "1.39.0-dev.aceb5b7416",
148
- "@lodestar/validator": "1.39.0-dev.aceb5b7416",
143
+ "@lodestar/api": "1.39.0-dev.b37f2bd1bd",
144
+ "@lodestar/config": "1.39.0-dev.b37f2bd1bd",
145
+ "@lodestar/db": "1.39.0-dev.b37f2bd1bd",
146
+ "@lodestar/fork-choice": "1.39.0-dev.b37f2bd1bd",
147
+ "@lodestar/light-client": "1.39.0-dev.b37f2bd1bd",
148
+ "@lodestar/logger": "1.39.0-dev.b37f2bd1bd",
149
+ "@lodestar/params": "1.39.0-dev.b37f2bd1bd",
150
+ "@lodestar/reqresp": "1.39.0-dev.b37f2bd1bd",
151
+ "@lodestar/state-transition": "1.39.0-dev.b37f2bd1bd",
152
+ "@lodestar/types": "1.39.0-dev.b37f2bd1bd",
153
+ "@lodestar/utils": "1.39.0-dev.b37f2bd1bd",
154
+ "@lodestar/validator": "1.39.0-dev.b37f2bd1bd",
149
155
  "@multiformats/multiaddr": "^12.1.3",
150
156
  "datastore-core": "^10.0.2",
151
157
  "datastore-fs": "^10.0.6",
@@ -180,5 +186,5 @@
180
186
  "beacon",
181
187
  "blockchain"
182
188
  ],
183
- "gitHead": "84def35d08355dfa2f53c71abbced440b870629b"
189
+ "gitHead": "d2d0808597a7c8e20703a9b6ee4041a4e25ed638"
184
190
  }
@@ -5,7 +5,7 @@ import {blockToHeader} from "@lodestar/state-transition";
5
5
  import {RootHex, SignedBeaconBlock, Slot} from "@lodestar/types";
6
6
  import {IBeaconChain} from "../../../../chain/interface.js";
7
7
  import {GENESIS_SLOT} from "../../../../constants/index.js";
8
- import {rootHexRegex} from "../../../../execution/engine/utils.js";
8
+ import {rootHexRegex} from "../../../../eth1/provider/utils.js";
9
9
  import {ApiError, ValidationError} from "../../errors.js";
10
10
 
11
11
  export function toBeaconHeaderResponse(
@@ -43,6 +43,7 @@ import {Logger, fromHex, gweiToWei, isErrorAborted, pruneSetToMax, sleep, toRoot
43
43
  import {ProcessShutdownCallback} from "@lodestar/validator";
44
44
  import {GENESIS_EPOCH, ZERO_HASH} from "../constants/index.js";
45
45
  import {IBeaconDb} from "../db/index.js";
46
+ import {IEth1ForBlockProduction} from "../eth1/index.js";
46
47
  import {BuilderStatus} from "../execution/builder/http.js";
47
48
  import {IExecutionBuilder, IExecutionEngine} from "../execution/index.js";
48
49
  import {Metrics} from "../metrics/index.js";
@@ -116,6 +117,7 @@ const DEFAULT_MAX_CACHED_PRODUCED_RESULTS = 4;
116
117
  export class BeaconChain implements IBeaconChain {
117
118
  readonly genesisTime: UintNum64;
118
119
  readonly genesisValidatorsRoot: Root;
120
+ readonly eth1: IEth1ForBlockProduction;
119
121
  readonly executionEngine: IExecutionEngine;
120
122
  readonly executionBuilder?: IExecutionBuilder;
121
123
  // Expose config for convenience in modularized functions
@@ -214,6 +216,7 @@ export class BeaconChain implements IBeaconChain {
214
216
  validatorMonitor,
215
217
  anchorState,
216
218
  isAnchorStateFinalized,
219
+ eth1,
217
220
  executionEngine,
218
221
  executionBuilder,
219
222
  }: {
@@ -230,6 +233,7 @@ export class BeaconChain implements IBeaconChain {
230
233
  validatorMonitor: ValidatorMonitor | null;
231
234
  anchorState: BeaconStateAllForks;
232
235
  isAnchorStateFinalized: boolean;
236
+ eth1: IEth1ForBlockProduction;
233
237
  executionEngine: IExecutionEngine;
234
238
  executionBuilder?: IExecutionBuilder;
235
239
  }
@@ -244,6 +248,7 @@ export class BeaconChain implements IBeaconChain {
244
248
  this.genesisTime = anchorState.genesisTime;
245
249
  this.anchorStateLatestBlockSlot = anchorState.latestBlockHeader.slot;
246
250
  this.genesisValidatorsRoot = anchorState.genesisValidatorsRoot;
251
+ this.eth1 = eth1;
247
252
  this.executionEngine = executionEngine;
248
253
  this.executionBuilder = executionBuilder;
249
254
  const signal = this.abortController.signal;
@@ -289,7 +294,7 @@ export class BeaconChain implements IBeaconChain {
289
294
  // Restore state caches
290
295
  // anchorState may already by a CachedBeaconState. If so, don't create the cache again, since deserializing all
291
296
  // pubkeys takes ~30 seconds for 350k keys (mainnet 2022Q2).
292
- // When the BeaconStateCache is created in initializeBeaconStateFromEth1 it may be incorrect. Until we can ensure that
297
+ // When the BeaconStateCache is created in eth1 genesis builder it may be incorrect. Until we can ensure that
293
298
  // it's safe to re-use _ANY_ BeaconStateCache, this option is disabled by default and only used in tests.
294
299
  const cachedState =
295
300
  isCachedBeaconState(anchorState) && opts.skipCreateStateCacheIfAvailable
@@ -412,6 +417,15 @@ export class BeaconChain implements IBeaconChain {
412
417
  signal
413
418
  );
414
419
 
420
+ // Stop polling eth1 data if anchor state is in Electra AND deposit_requests_start_index is reached
421
+ const anchorStateFork = this.config.getForkName(anchorState.slot);
422
+ if (isForkPostElectra(anchorStateFork)) {
423
+ const {eth1DepositIndex, depositRequestsStartIndex} = anchorState as BeaconStateElectra;
424
+ if (eth1DepositIndex === Number(depositRequestsStartIndex)) {
425
+ this.eth1.stopPollingEth1Data();
426
+ }
427
+ }
428
+
415
429
  // always run PrepareNextSlotScheduler except for fork_choice spec tests
416
430
  if (!opts?.disablePrepareNextSlot) {
417
431
  new PrepareNextSlotScheduler(this, this.config, metrics, this.logger, signal);
@@ -0,0 +1,190 @@
1
+ import {Tree, toGindex} from "@chainsafe/persistent-merkle-tree";
2
+ import {BeaconConfig, ChainForkConfig} from "@lodestar/config";
3
+ import {GENESIS_EPOCH, GENESIS_SLOT} from "@lodestar/params";
4
+ import {
5
+ BeaconStateAllForks,
6
+ CachedBeaconStateAllForks,
7
+ applyDeposits,
8
+ applyEth1BlockHash,
9
+ applyTimestamp,
10
+ createCachedBeaconState,
11
+ createEmptyEpochCacheImmutableData,
12
+ getActiveValidatorIndices,
13
+ getGenesisBeaconState,
14
+ getTemporaryBlockHeader,
15
+ } from "@lodestar/state-transition";
16
+ import {phase0, ssz} from "@lodestar/types";
17
+ import {Logger} from "@lodestar/utils";
18
+ import {DepositTree} from "../../db/repositories/depositDataRoot.js";
19
+ import {IEth1Provider} from "../../eth1/index.js";
20
+ import {IEth1StreamParams} from "../../eth1/interface.js";
21
+ import {getDepositsAndBlockStreamForGenesis, getDepositsStream} from "../../eth1/stream.js";
22
+ import {GenesisResult, IGenesisBuilder} from "./interface.js";
23
+
24
+ export type GenesisBuilderKwargs = {
25
+ config: ChainForkConfig;
26
+ eth1Provider: IEth1Provider;
27
+ logger: Logger;
28
+
29
+ /** Use to restore pending progress */
30
+ pendingStatus?: {
31
+ state: BeaconStateAllForks;
32
+ depositTree: DepositTree;
33
+ lastProcessedBlockNumber: number;
34
+ };
35
+
36
+ signal?: AbortSignal;
37
+ maxBlocksPerPoll?: number;
38
+ };
39
+
40
+ export class GenesisBuilder implements IGenesisBuilder {
41
+ // Expose state to persist on error
42
+ readonly state: CachedBeaconStateAllForks;
43
+ readonly depositTree: DepositTree;
44
+ /** Is null if no block has been processed yet */
45
+ lastProcessedBlockNumber: number | null = null;
46
+
47
+ private readonly config: BeaconConfig;
48
+ private readonly eth1Provider: IEth1Provider;
49
+ private readonly logger: Logger;
50
+ private readonly signal?: AbortSignal;
51
+ private readonly eth1Params: IEth1StreamParams;
52
+ private readonly depositCache = new Set<number>();
53
+ private readonly fromBlock: number;
54
+ private readonly logEvery = 30 * 1000;
55
+ private lastLog = 0;
56
+ /** Current count of active validators in the state */
57
+ private activatedValidatorCount: number;
58
+
59
+ constructor({config, eth1Provider, logger, signal, pendingStatus, maxBlocksPerPoll}: GenesisBuilderKwargs) {
60
+ // at genesis builder, there is no genesis validator so we don't have a real BeaconConfig
61
+ // but we need BeaconConfig to temporarily create CachedBeaconState, the cast here is safe since we don't use any getDomain here
62
+ // the use of state as CachedBeaconState is just for convenient, GenesisResult returns TreeView anyway
63
+ this.eth1Provider = eth1Provider;
64
+ this.logger = logger;
65
+ this.signal = signal;
66
+ this.eth1Params = {
67
+ ...config,
68
+ maxBlocksPerPoll: maxBlocksPerPoll ?? 10000,
69
+ };
70
+
71
+ let stateView: BeaconStateAllForks;
72
+
73
+ if (pendingStatus) {
74
+ this.logger.info("Restoring pending genesis state", {block: pendingStatus.lastProcessedBlockNumber});
75
+ stateView = pendingStatus.state;
76
+ this.depositTree = pendingStatus.depositTree;
77
+ this.fromBlock = Math.max(pendingStatus.lastProcessedBlockNumber + 1, this.eth1Provider.deployBlock);
78
+ } else {
79
+ stateView = getGenesisBeaconState(
80
+ config,
81
+ ssz.phase0.Eth1Data.defaultValue(),
82
+ getTemporaryBlockHeader(config, config.getForkTypes(GENESIS_SLOT).BeaconBlock.defaultValue())
83
+ );
84
+ this.depositTree = ssz.phase0.DepositDataRootList.defaultViewDU();
85
+ this.fromBlock = this.eth1Provider.deployBlock;
86
+ }
87
+
88
+ // TODO - PENDING: Ensure EpochCacheImmutableData is created only once
89
+ this.state = createCachedBeaconState(stateView, createEmptyEpochCacheImmutableData(config, stateView));
90
+ this.config = this.state.config;
91
+ this.activatedValidatorCount = getActiveValidatorIndices(stateView, GENESIS_EPOCH).length;
92
+ }
93
+
94
+ /**
95
+ * Get eth1 deposit events and blocks and apply to this.state until we found genesis.
96
+ */
97
+ async waitForGenesis(): Promise<GenesisResult> {
98
+ await this.eth1Provider.validateContract();
99
+
100
+ // Load data from data from this.db.depositData, this.db.depositDataRoot
101
+ // And start from a more recent fromBlock
102
+ const blockNumberValidatorGenesis = await this.waitForGenesisValidators();
103
+
104
+ const depositsAndBlocksStream = getDepositsAndBlockStreamForGenesis(
105
+ blockNumberValidatorGenesis,
106
+ this.eth1Provider,
107
+ this.eth1Params,
108
+ this.signal
109
+ );
110
+
111
+ for await (const [depositEvents, block] of depositsAndBlocksStream) {
112
+ this.applyDeposits(depositEvents);
113
+ applyTimestamp(this.config, this.state, block.timestamp);
114
+ applyEth1BlockHash(this.state, block.blockHash);
115
+ this.lastProcessedBlockNumber = block.blockNumber;
116
+
117
+ if (
118
+ this.state.genesisTime >= this.config.MIN_GENESIS_TIME &&
119
+ this.activatedValidatorCount >= this.config.MIN_GENESIS_ACTIVE_VALIDATOR_COUNT
120
+ ) {
121
+ this.logger.info("Found genesis state", {blockNumber: block.blockNumber});
122
+ return {
123
+ state: this.state,
124
+ depositTree: this.depositTree,
125
+ block,
126
+ };
127
+ }
128
+
129
+ this.throttledLog(`Waiting for min genesis time ${block.timestamp} / ${this.config.MIN_GENESIS_TIME}`);
130
+ }
131
+
132
+ throw Error("depositsStream stopped without a valid genesis state");
133
+ }
134
+
135
+ /**
136
+ * First phase of waiting for genesis.
137
+ * Stream deposits events in batches as big as possible without querying block data
138
+ * @returns Block number at which there are enough active validators is state for genesis
139
+ */
140
+ private async waitForGenesisValidators(): Promise<number> {
141
+ const depositsStream = getDepositsStream(this.fromBlock, this.eth1Provider, this.eth1Params, this.signal);
142
+
143
+ for await (const {depositEvents, blockNumber} of depositsStream) {
144
+ this.applyDeposits(depositEvents);
145
+ this.lastProcessedBlockNumber = blockNumber;
146
+
147
+ if (this.activatedValidatorCount >= this.config.MIN_GENESIS_ACTIVE_VALIDATOR_COUNT) {
148
+ this.logger.info("Found enough genesis validators", {blockNumber});
149
+ return blockNumber;
150
+ }
151
+
152
+ this.throttledLog(
153
+ `Found ${this.state.validators.length} / ${this.config.MIN_GENESIS_ACTIVE_VALIDATOR_COUNT} validators to genesis`
154
+ );
155
+ }
156
+
157
+ throw Error("depositsStream stopped without a valid genesis state");
158
+ }
159
+
160
+ private applyDeposits(depositEvents: phase0.DepositEvent[]): void {
161
+ const newDeposits = depositEvents
162
+ .filter((depositEvent) => !this.depositCache.has(depositEvent.index))
163
+ .map((depositEvent) => {
164
+ this.depositCache.add(depositEvent.index);
165
+ this.depositTree.push(ssz.phase0.DepositData.hashTreeRoot(depositEvent.depositData));
166
+ const gindex = toGindex(this.depositTree.type.depth, BigInt(depositEvent.index));
167
+
168
+ // Apply changes from the push above
169
+ this.depositTree.commit();
170
+ const depositTreeNode = this.depositTree.node;
171
+ return {
172
+ proof: new Tree(depositTreeNode).getSingleProof(gindex),
173
+ data: depositEvent.depositData,
174
+ };
175
+ });
176
+
177
+ const {activatedValidatorCount} = applyDeposits(this.config, this.state, newDeposits, this.depositTree);
178
+ this.activatedValidatorCount += activatedValidatorCount;
179
+
180
+ // TODO: If necessary persist deposits here to this.db.depositData, this.db.depositDataRoot
181
+ }
182
+
183
+ /** Throttle genesis generation status log to prevent spamming */
184
+ private throttledLog(message: string): void {
185
+ if (Date.now() - this.lastLog > this.logEvery) {
186
+ this.lastLog = Date.now();
187
+ this.logger.info(message);
188
+ }
189
+ }
190
+ }
@@ -0,0 +1,14 @@
1
+ import {CompositeViewDU, VectorCompositeType} from "@chainsafe/ssz";
2
+ import {CachedBeaconStateAllForks} from "@lodestar/state-transition";
3
+ import {ssz} from "@lodestar/types";
4
+ import {Eth1Block} from "../../eth1/interface.js";
5
+
6
+ export type GenesisResult = {
7
+ state: CachedBeaconStateAllForks;
8
+ depositTree: CompositeViewDU<VectorCompositeType<typeof ssz.Root>>;
9
+ block: Eth1Block;
10
+ };
11
+
12
+ export interface IGenesisBuilder {
13
+ waitForGenesis: () => Promise<GenesisResult>;
14
+ }
@@ -1,11 +1,37 @@
1
1
  import {ChainForkConfig} from "@lodestar/config";
2
2
  import {ZERO_HASH} from "@lodestar/params";
3
- import {BeaconStateAllForks, computeEpochAtSlot, computeStartSlotAtEpoch} from "@lodestar/state-transition";
3
+ import {
4
+ BeaconStateAllForks,
5
+ CachedBeaconStateAllForks,
6
+ computeEpochAtSlot,
7
+ computeStartSlotAtEpoch,
8
+ } from "@lodestar/state-transition";
4
9
  import {SignedBeaconBlock, ssz} from "@lodestar/types";
5
10
  import {Logger, toHex, toRootHex} from "@lodestar/utils";
6
11
  import {GENESIS_SLOT} from "../constants/index.js";
7
12
  import {IBeaconDb} from "../db/index.js";
13
+ import {Eth1Provider} from "../eth1/index.js";
14
+ import {Eth1Options} from "../eth1/options.js";
8
15
  import {Metrics} from "../metrics/index.js";
16
+ import {GenesisBuilder} from "./genesis/genesis.js";
17
+ import {GenesisResult} from "./genesis/interface.js";
18
+
19
+ export async function persistGenesisResult(
20
+ db: IBeaconDb,
21
+ genesisResult: GenesisResult,
22
+ genesisBlock: SignedBeaconBlock
23
+ ): Promise<void> {
24
+ await Promise.all([
25
+ db.stateArchive.add(genesisResult.state),
26
+ db.blockArchive.add(genesisBlock),
27
+ db.depositDataRoot.putList(genesisResult.depositTree.getAllReadonlyValues()),
28
+ db.eth1Data.put(genesisResult.block.timestamp, {
29
+ ...genesisResult.block,
30
+ depositCount: genesisResult.depositTree.length,
31
+ depositRoot: genesisResult.depositTree.hashTreeRoot(),
32
+ }),
33
+ ]);
34
+ }
9
35
 
10
36
  export async function persistAnchorState(
11
37
  config: ChainForkConfig,
@@ -49,6 +75,76 @@ export function createGenesisBlock(config: ChainForkConfig, genesisState: Beacon
49
75
  return genesisBlock;
50
76
  }
51
77
 
78
+ /**
79
+ * Initialize and persist a genesis state and related data
80
+ */
81
+ export async function initStateFromEth1({
82
+ config,
83
+ db,
84
+ logger,
85
+ opts,
86
+ signal,
87
+ }: {
88
+ config: ChainForkConfig;
89
+ db: IBeaconDb;
90
+ logger: Logger;
91
+ opts: Eth1Options;
92
+ signal: AbortSignal;
93
+ }): Promise<CachedBeaconStateAllForks> {
94
+ logger.info("Listening to eth1 for genesis state");
95
+
96
+ const statePreGenesis = await db.preGenesisState.get();
97
+ const depositTree = await db.depositDataRoot.getDepositRootTree();
98
+ const lastProcessedBlockNumber = await db.preGenesisStateLastProcessedBlock.get();
99
+
100
+ const builder = new GenesisBuilder({
101
+ config,
102
+ eth1Provider: new Eth1Provider(config, {...opts, logger}, signal),
103
+ logger,
104
+ signal,
105
+ pendingStatus:
106
+ statePreGenesis && depositTree !== undefined && lastProcessedBlockNumber != null
107
+ ? {state: statePreGenesis, depositTree, lastProcessedBlockNumber}
108
+ : undefined,
109
+ });
110
+
111
+ try {
112
+ const genesisResult = await builder.waitForGenesis();
113
+
114
+ // Note: .hashTreeRoot() automatically commits()
115
+ const genesisBlock = createGenesisBlock(config, genesisResult.state);
116
+ const types = config.getForkTypes(GENESIS_SLOT);
117
+ const stateRoot = genesisResult.state.hashTreeRoot();
118
+ const blockRoot = types.BeaconBlock.hashTreeRoot(genesisBlock.message);
119
+
120
+ logger.info("Initializing genesis state", {
121
+ stateRoot: toRootHex(stateRoot),
122
+ blockRoot: toRootHex(blockRoot),
123
+ validatorCount: genesisResult.state.validators.length,
124
+ });
125
+
126
+ await persistGenesisResult(db, genesisResult, genesisBlock);
127
+
128
+ logger.verbose("Clearing pending genesis state if any");
129
+ await db.preGenesisState.delete();
130
+ await db.preGenesisStateLastProcessedBlock.delete();
131
+
132
+ return genesisResult.state;
133
+ } catch (e) {
134
+ if (builder.lastProcessedBlockNumber != null) {
135
+ logger.info("Persisting genesis state", {block: builder.lastProcessedBlockNumber});
136
+
137
+ // Commit changed before serializing
138
+ builder.state.commit();
139
+
140
+ await db.preGenesisState.put(builder.state);
141
+ await db.depositDataRoot.putList(builder.depositTree.getAllReadonlyValues());
142
+ await db.preGenesisStateLastProcessedBlock.put(builder.lastProcessedBlockNumber);
143
+ }
144
+ throw e;
145
+ }
146
+ }
147
+
52
148
  /**
53
149
  * Restore the latest beacon state from db
54
150
  */