@lodestar/beacon-node 1.50.0-dev.b4eaa62b30 → 1.50.0-dev.b726a05a4d

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 (370) hide show
  1. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +6 -1
  3. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  4. package/lib/api/impl/beacon/index.d.ts.map +1 -1
  5. package/lib/api/impl/beacon/index.js +13 -0
  6. package/lib/api/impl/beacon/index.js.map +1 -1
  7. package/lib/api/impl/beacon/pool/index.js +4 -4
  8. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  9. package/lib/api/impl/beacon/state/index.d.ts.map +1 -1
  10. package/lib/api/impl/beacon/state/index.js +28 -6
  11. package/lib/api/impl/beacon/state/index.js.map +1 -1
  12. package/lib/api/impl/debug/index.d.ts.map +1 -1
  13. package/lib/api/impl/debug/index.js +26 -18
  14. package/lib/api/impl/debug/index.js.map +1 -1
  15. package/lib/api/impl/validator/index.d.ts +1 -0
  16. package/lib/api/impl/validator/index.d.ts.map +1 -1
  17. package/lib/api/impl/validator/index.js +49 -1
  18. package/lib/api/impl/validator/index.js.map +1 -1
  19. package/lib/chain/archiveStore/archiveStore.d.ts +6 -0
  20. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  21. package/lib/chain/archiveStore/archiveStore.js +18 -24
  22. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  23. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts +2 -2
  24. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts.map +1 -1
  25. package/lib/chain/archiveStore/historicalState/getHistoricalState.js +5 -7
  26. package/lib/chain/archiveStore/historicalState/getHistoricalState.js.map +1 -1
  27. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js +1 -1
  28. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js.map +1 -1
  29. package/lib/chain/archiveStore/historicalState/types.d.ts +2 -2
  30. package/lib/chain/archiveStore/historicalState/types.d.ts.map +1 -1
  31. package/lib/chain/archiveStore/historicalState/worker.js +1 -1
  32. package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
  33. package/lib/chain/archiveStore/interface.d.ts +1 -1
  34. package/lib/chain/archiveStore/interface.d.ts.map +1 -1
  35. package/lib/chain/archiveStore/utils/pruneHistory.d.ts +4 -1
  36. package/lib/chain/archiveStore/utils/pruneHistory.d.ts.map +1 -1
  37. package/lib/chain/archiveStore/utils/pruneHistory.js +5 -3
  38. package/lib/chain/archiveStore/utils/pruneHistory.js.map +1 -1
  39. package/lib/chain/beaconProposerCache.d.ts +6 -0
  40. package/lib/chain/beaconProposerCache.d.ts.map +1 -1
  41. package/lib/chain/beaconProposerCache.js +16 -0
  42. package/lib/chain/beaconProposerCache.js.map +1 -1
  43. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  44. package/lib/chain/blocks/importBlock.js +18 -8
  45. package/lib/chain/blocks/importBlock.js.map +1 -1
  46. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts +2 -1
  47. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts.map +1 -1
  48. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  49. package/lib/chain/blocks/verifyBlock.js +7 -7
  50. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  51. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts +2 -1
  52. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +1 -1
  53. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js +5 -4
  54. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
  55. package/lib/chain/chain.d.ts +10 -5
  56. package/lib/chain/chain.d.ts.map +1 -1
  57. package/lib/chain/chain.js +105 -36
  58. package/lib/chain/chain.js.map +1 -1
  59. package/lib/chain/emitter.d.ts +7 -1
  60. package/lib/chain/emitter.d.ts.map +1 -1
  61. package/lib/chain/emitter.js +5 -0
  62. package/lib/chain/emitter.js.map +1 -1
  63. package/lib/chain/errors/envelopeReconstructionError.d.ts +5 -0
  64. package/lib/chain/errors/envelopeReconstructionError.d.ts.map +1 -1
  65. package/lib/chain/errors/envelopeReconstructionError.js +2 -0
  66. package/lib/chain/errors/envelopeReconstructionError.js.map +1 -1
  67. package/lib/chain/errors/gossipValidation.d.ts +3 -1
  68. package/lib/chain/errors/gossipValidation.d.ts.map +1 -1
  69. package/lib/chain/errors/gossipValidation.js +2 -0
  70. package/lib/chain/errors/gossipValidation.js.map +1 -1
  71. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  72. package/lib/chain/forkChoice/index.js +2 -0
  73. package/lib/chain/forkChoice/index.js.map +1 -1
  74. package/lib/chain/initState.d.ts +2 -9
  75. package/lib/chain/initState.d.ts.map +1 -1
  76. package/lib/chain/initState.js +5 -38
  77. package/lib/chain/initState.js.map +1 -1
  78. package/lib/chain/interface.d.ts +5 -2
  79. package/lib/chain/interface.d.ts.map +1 -1
  80. package/lib/chain/opPools/aggregatedAttestationPool.d.ts +4 -2
  81. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  82. package/lib/chain/opPools/aggregatedAttestationPool.js +30 -8
  83. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  84. package/lib/chain/opPools/opPool.d.ts +5 -4
  85. package/lib/chain/opPools/opPool.d.ts.map +1 -1
  86. package/lib/chain/opPools/opPool.js +60 -38
  87. package/lib/chain/opPools/opPool.js.map +1 -1
  88. package/lib/chain/opPools/proposerPreferencesPool.d.ts +8 -4
  89. package/lib/chain/opPools/proposerPreferencesPool.d.ts.map +1 -1
  90. package/lib/chain/opPools/proposerPreferencesPool.js +27 -12
  91. package/lib/chain/opPools/proposerPreferencesPool.js.map +1 -1
  92. package/lib/chain/opPools/utils.d.ts +15 -1
  93. package/lib/chain/opPools/utils.d.ts.map +1 -1
  94. package/lib/chain/opPools/utils.js +33 -1
  95. package/lib/chain/opPools/utils.js.map +1 -1
  96. package/lib/chain/options.d.ts +2 -1
  97. package/lib/chain/options.d.ts.map +1 -1
  98. package/lib/chain/options.js +1 -1
  99. package/lib/chain/options.js.map +1 -1
  100. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  101. package/lib/chain/prepareNextSlot.js +16 -5
  102. package/lib/chain/prepareNextSlot.js.map +1 -1
  103. package/lib/chain/produceBlock/computeNewStateRoot.js +1 -1
  104. package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
  105. package/lib/chain/produceBlock/produceBlockBody.d.ts +11 -1
  106. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  107. package/lib/chain/produceBlock/produceBlockBody.js +46 -30
  108. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  109. package/lib/chain/regen/regen.d.ts +2 -0
  110. package/lib/chain/regen/regen.d.ts.map +1 -1
  111. package/lib/chain/regen/regen.js +10 -4
  112. package/lib/chain/regen/regen.js.map +1 -1
  113. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +7 -0
  114. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -1
  115. package/lib/chain/seenCache/seenGossipBlockInput.js +21 -0
  116. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  117. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts +9 -2
  118. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts.map +1 -1
  119. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js +23 -13
  120. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js.map +1 -1
  121. package/lib/chain/shufflingCache.d.ts +18 -8
  122. package/lib/chain/shufflingCache.d.ts.map +1 -1
  123. package/lib/chain/shufflingCache.js +72 -18
  124. package/lib/chain/shufflingCache.js.map +1 -1
  125. package/lib/chain/validation/attesterSlashing.d.ts +4 -4
  126. package/lib/chain/validation/attesterSlashing.d.ts.map +1 -1
  127. package/lib/chain/validation/attesterSlashing.js +3 -0
  128. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  129. package/lib/chain/validation/proposerSlashing.d.ts +3 -3
  130. package/lib/chain/validation/proposerSlashing.d.ts.map +1 -1
  131. package/lib/chain/validation/proposerSlashing.js +3 -0
  132. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  133. package/lib/chain/validatorMonitor.d.ts +5 -1
  134. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  135. package/lib/chain/validatorMonitor.js +64 -54
  136. package/lib/chain/validatorMonitor.js.map +1 -1
  137. package/lib/db/beacon.d.ts +4 -1
  138. package/lib/db/beacon.d.ts.map +1 -1
  139. package/lib/db/beacon.js +8 -1
  140. package/lib/db/beacon.js.map +1 -1
  141. package/lib/db/buckets.d.ts +3 -1
  142. package/lib/db/buckets.d.ts.map +1 -1
  143. package/lib/db/buckets.js +2 -0
  144. package/lib/db/buckets.js.map +1 -1
  145. package/lib/db/interface.d.ts +4 -1
  146. package/lib/db/interface.d.ts.map +1 -1
  147. package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
  148. package/lib/db/repositories/blockArchiveIndex.d.ts.map +1 -1
  149. package/lib/db/repositories/earliestAvailableSlot.d.ts +11 -0
  150. package/lib/db/repositories/earliestAvailableSlot.d.ts.map +1 -0
  151. package/lib/db/repositories/earliestAvailableSlot.js +19 -0
  152. package/lib/db/repositories/earliestAvailableSlot.js.map +1 -0
  153. package/lib/db/repositories/index.d.ts +1 -0
  154. package/lib/db/repositories/index.d.ts.map +1 -1
  155. package/lib/db/repositories/index.js +1 -0
  156. package/lib/db/repositories/index.js.map +1 -1
  157. package/lib/db/repositories/proposerPreferences.d.ts +14 -0
  158. package/lib/db/repositories/proposerPreferences.d.ts.map +1 -0
  159. package/lib/db/repositories/proposerPreferences.js +21 -0
  160. package/lib/db/repositories/proposerPreferences.js.map +1 -0
  161. package/lib/db/repositories/proposerSlashing.d.ts +1 -0
  162. package/lib/db/repositories/proposerSlashing.d.ts.map +1 -1
  163. package/lib/db/repositories/proposerSlashing.js +5 -1
  164. package/lib/db/repositories/proposerSlashing.js.map +1 -1
  165. package/lib/execution/engine/blobVersionedHashes.d.ts +9 -0
  166. package/lib/execution/engine/blobVersionedHashes.d.ts.map +1 -0
  167. package/lib/execution/engine/blobVersionedHashes.js +74 -0
  168. package/lib/execution/engine/blobVersionedHashes.js.map +1 -0
  169. package/lib/execution/engine/disabled.d.ts +0 -2
  170. package/lib/execution/engine/disabled.d.ts.map +1 -1
  171. package/lib/execution/engine/disabled.js +0 -6
  172. package/lib/execution/engine/disabled.js.map +1 -1
  173. package/lib/execution/engine/http.d.ts +46 -16
  174. package/lib/execution/engine/http.d.ts.map +1 -1
  175. package/lib/execution/engine/http.js +236 -213
  176. package/lib/execution/engine/http.js.map +1 -1
  177. package/lib/execution/engine/index.d.ts +3 -2
  178. package/lib/execution/engine/index.d.ts.map +1 -1
  179. package/lib/execution/engine/index.js +33 -8
  180. package/lib/execution/engine/index.js.map +1 -1
  181. package/lib/execution/engine/interface.d.ts +2 -4
  182. package/lib/execution/engine/interface.d.ts.map +1 -1
  183. package/lib/execution/engine/jsonRpcTransport.d.ts +25 -0
  184. package/lib/execution/engine/jsonRpcTransport.d.ts.map +1 -0
  185. package/lib/execution/engine/jsonRpcTransport.js +158 -0
  186. package/lib/execution/engine/jsonRpcTransport.js.map +1 -0
  187. package/lib/execution/engine/mock.d.ts +0 -2
  188. package/lib/execution/engine/mock.d.ts.map +1 -1
  189. package/lib/execution/engine/mock.js +0 -8
  190. package/lib/execution/engine/mock.js.map +1 -1
  191. package/lib/execution/engine/restHttpClient.d.ts +71 -0
  192. package/lib/execution/engine/restHttpClient.d.ts.map +1 -0
  193. package/lib/execution/engine/restHttpClient.js +201 -0
  194. package/lib/execution/engine/restHttpClient.js.map +1 -0
  195. package/lib/execution/engine/restTransport.d.ts +46 -0
  196. package/lib/execution/engine/restTransport.d.ts.map +1 -0
  197. package/lib/execution/engine/restTransport.js +399 -0
  198. package/lib/execution/engine/restTransport.js.map +1 -0
  199. package/lib/execution/engine/sszTypes.d.ts +1261 -0
  200. package/lib/execution/engine/sszTypes.d.ts.map +1 -0
  201. package/lib/execution/engine/sszTypes.js +216 -0
  202. package/lib/execution/engine/sszTypes.js.map +1 -0
  203. package/lib/execution/engine/transport.d.ts +39 -0
  204. package/lib/execution/engine/transport.d.ts.map +1 -0
  205. package/lib/execution/engine/transport.js +2 -0
  206. package/lib/execution/engine/transport.js.map +1 -0
  207. package/lib/execution/engine/types.d.ts +2 -8
  208. package/lib/execution/engine/types.d.ts.map +1 -1
  209. package/lib/execution/engine/types.js +24 -57
  210. package/lib/execution/engine/types.js.map +1 -1
  211. package/lib/execution/engine/utils.d.ts.map +1 -1
  212. package/lib/execution/engine/utils.js +9 -2
  213. package/lib/execution/engine/utils.js.map +1 -1
  214. package/lib/index.d.ts +1 -1
  215. package/lib/index.d.ts.map +1 -1
  216. package/lib/index.js +1 -1
  217. package/lib/index.js.map +1 -1
  218. package/lib/metrics/metrics/lodestar.d.ts +10 -0
  219. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  220. package/lib/metrics/metrics/lodestar.js +22 -0
  221. package/lib/metrics/metrics/lodestar.js.map +1 -1
  222. package/lib/metrics/metrics.d.ts +7 -3
  223. package/lib/metrics/metrics.d.ts.map +1 -1
  224. package/lib/metrics/metrics.js +4 -4
  225. package/lib/metrics/metrics.js.map +1 -1
  226. package/lib/network/core/events.d.ts +5 -1
  227. package/lib/network/core/events.d.ts.map +1 -1
  228. package/lib/network/core/events.js +8 -0
  229. package/lib/network/core/events.js.map +1 -1
  230. package/lib/network/metadata.d.ts +1 -1
  231. package/lib/network/metadata.d.ts.map +1 -1
  232. package/lib/network/metadata.js +17 -17
  233. package/lib/network/metadata.js.map +1 -1
  234. package/lib/network/peers/datastore.d.ts +9 -9
  235. package/lib/network/peers/datastore.d.ts.map +1 -1
  236. package/lib/network/peers/datastore.js +36 -36
  237. package/lib/network/peers/datastore.js.map +1 -1
  238. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  239. package/lib/network/processor/gossipHandlers.js +67 -68
  240. package/lib/network/processor/gossipHandlers.js.map +1 -1
  241. package/lib/network/processor/gossipValidatorFn.d.ts +7 -3
  242. package/lib/network/processor/gossipValidatorFn.d.ts.map +1 -1
  243. package/lib/network/processor/gossipValidatorFn.js +7 -3
  244. package/lib/network/processor/gossipValidatorFn.js.map +1 -1
  245. package/lib/network/processor/index.d.ts +9 -0
  246. package/lib/network/processor/index.d.ts.map +1 -1
  247. package/lib/network/processor/index.js +77 -10
  248. package/lib/network/processor/index.js.map +1 -1
  249. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.d.ts.map +1 -1
  250. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.js +41 -26
  251. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.js.map +1 -1
  252. package/lib/node/nodejs.d.ts +3 -1
  253. package/lib/node/nodejs.d.ts.map +1 -1
  254. package/lib/node/nodejs.js +27 -4
  255. package/lib/node/nodejs.js.map +1 -1
  256. package/lib/node/options.d.ts +3 -2
  257. package/lib/node/options.d.ts.map +1 -1
  258. package/lib/node/options.js +2 -2
  259. package/lib/node/options.js.map +1 -1
  260. package/lib/sync/range/batch.d.ts +11 -5
  261. package/lib/sync/range/batch.d.ts.map +1 -1
  262. package/lib/sync/range/batch.js +21 -17
  263. package/lib/sync/range/batch.js.map +1 -1
  264. package/lib/sync/range/chain.d.ts +4 -4
  265. package/lib/sync/range/chain.d.ts.map +1 -1
  266. package/lib/sync/range/chain.js +12 -6
  267. package/lib/sync/range/chain.js.map +1 -1
  268. package/lib/sync/range/range.d.ts.map +1 -1
  269. package/lib/sync/range/range.js +75 -29
  270. package/lib/sync/range/range.js.map +1 -1
  271. package/lib/sync/unknownBlock.d.ts +14 -7
  272. package/lib/sync/unknownBlock.d.ts.map +1 -1
  273. package/lib/sync/unknownBlock.js +132 -66
  274. package/lib/sync/unknownBlock.js.map +1 -1
  275. package/lib/sync/utils/downloadByRange.d.ts +38 -14
  276. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  277. package/lib/sync/utils/downloadByRange.js +84 -39
  278. package/lib/sync/utils/downloadByRange.js.map +1 -1
  279. package/lib/util/asyncIterableToEvents.d.ts +10 -2
  280. package/lib/util/asyncIterableToEvents.d.ts.map +1 -1
  281. package/lib/util/asyncIterableToEvents.js +29 -3
  282. package/lib/util/asyncIterableToEvents.js.map +1 -1
  283. package/lib/util/execution.d.ts +11 -11
  284. package/lib/util/execution.d.ts.map +1 -1
  285. package/lib/util/execution.js +6 -2
  286. package/lib/util/execution.js.map +1 -1
  287. package/lib/util/metadata.d.ts.map +1 -1
  288. package/lib/util/metadata.js +2 -1
  289. package/lib/util/metadata.js.map +1 -1
  290. package/package.json +18 -17
  291. package/src/api/impl/beacon/blocks/index.ts +7 -4
  292. package/src/api/impl/beacon/index.ts +15 -0
  293. package/src/api/impl/beacon/pool/index.ts +4 -4
  294. package/src/api/impl/beacon/state/index.ts +43 -6
  295. package/src/api/impl/debug/index.ts +28 -19
  296. package/src/api/impl/validator/index.ts +61 -2
  297. package/src/chain/archiveStore/archiveStore.ts +26 -26
  298. package/src/chain/archiveStore/historicalState/getHistoricalState.ts +5 -7
  299. package/src/chain/archiveStore/historicalState/historicalStateRegen.ts +1 -1
  300. package/src/chain/archiveStore/historicalState/types.ts +2 -2
  301. package/src/chain/archiveStore/historicalState/worker.ts +1 -2
  302. package/src/chain/archiveStore/interface.ts +1 -1
  303. package/src/chain/archiveStore/utils/pruneHistory.ts +9 -4
  304. package/src/chain/beaconProposerCache.ts +19 -1
  305. package/src/chain/blocks/importBlock.ts +21 -7
  306. package/src/chain/blocks/payloadEnvelopeInput/types.ts +2 -1
  307. package/src/chain/blocks/verifyBlock.ts +8 -6
  308. package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +6 -3
  309. package/src/chain/chain.ts +135 -38
  310. package/src/chain/emitter.ts +7 -1
  311. package/src/chain/errors/envelopeReconstructionError.ts +3 -0
  312. package/src/chain/errors/gossipValidation.ts +2 -0
  313. package/src/chain/forkChoice/index.ts +2 -0
  314. package/src/chain/initState.ts +8 -60
  315. package/src/chain/interface.ts +5 -2
  316. package/src/chain/opPools/aggregatedAttestationPool.ts +34 -10
  317. package/src/chain/opPools/opPool.ts +89 -46
  318. package/src/chain/opPools/proposerPreferencesPool.ts +34 -11
  319. package/src/chain/opPools/utils.ts +62 -3
  320. package/src/chain/options.ts +3 -3
  321. package/src/chain/prepareNextSlot.ts +21 -6
  322. package/src/chain/produceBlock/computeNewStateRoot.ts +1 -1
  323. package/src/chain/produceBlock/produceBlockBody.ts +76 -35
  324. package/src/chain/regen/regen.ts +12 -4
  325. package/src/chain/seenCache/seenGossipBlockInput.ts +23 -0
  326. package/src/chain/seenCache/seenPayloadEnvelopeInput.ts +31 -13
  327. package/src/chain/shufflingCache.ts +84 -22
  328. package/src/chain/validation/attesterSlashing.ts +7 -4
  329. package/src/chain/validation/proposerSlashing.ts +7 -4
  330. package/src/chain/validatorMonitor.ts +75 -57
  331. package/src/db/beacon.ts +8 -0
  332. package/src/db/buckets.ts +2 -0
  333. package/src/db/interface.ts +4 -0
  334. package/src/db/repositories/earliestAvailableSlot.ts +19 -0
  335. package/src/db/repositories/index.ts +1 -0
  336. package/src/db/repositories/proposerPreferences.ts +23 -0
  337. package/src/db/repositories/proposerSlashing.ts +6 -1
  338. package/src/execution/engine/blobVersionedHashes.ts +72 -0
  339. package/src/execution/engine/disabled.ts +0 -8
  340. package/src/execution/engine/http.ts +304 -300
  341. package/src/execution/engine/index.ts +41 -7
  342. package/src/execution/engine/interface.ts +2 -6
  343. package/src/execution/engine/jsonRpcTransport.ts +247 -0
  344. package/src/execution/engine/mock.ts +1 -19
  345. package/src/execution/engine/restHttpClient.ts +269 -0
  346. package/src/execution/engine/restTransport.ts +544 -0
  347. package/src/execution/engine/sszTypes.ts +354 -0
  348. package/src/execution/engine/transport.ts +61 -0
  349. package/src/execution/engine/types.ts +34 -84
  350. package/src/execution/engine/utils.ts +12 -2
  351. package/src/index.ts +1 -1
  352. package/src/metrics/metrics/lodestar.ts +23 -0
  353. package/src/metrics/metrics.ts +21 -6
  354. package/src/network/core/events.ts +16 -1
  355. package/src/network/metadata.ts +17 -17
  356. package/src/network/peers/datastore.ts +36 -36
  357. package/src/network/processor/gossipHandlers.ts +98 -81
  358. package/src/network/processor/gossipValidatorFn.ts +13 -3
  359. package/src/network/processor/index.ts +89 -10
  360. package/src/network/reqresp/handlers/executionPayloadEnvelopesByRoot.ts +42 -28
  361. package/src/node/nodejs.ts +35 -3
  362. package/src/node/options.ts +10 -1
  363. package/src/sync/range/batch.ts +25 -19
  364. package/src/sync/range/chain.ts +15 -8
  365. package/src/sync/range/range.ts +76 -30
  366. package/src/sync/unknownBlock.ts +156 -71
  367. package/src/sync/utils/downloadByRange.ts +123 -58
  368. package/src/util/asyncIterableToEvents.ts +44 -5
  369. package/src/util/execution.ts +17 -9
  370. package/src/util/metadata.ts +2 -1
@@ -1,10 +1,10 @@
1
1
  import { BLS_WITHDRAWAL_PREFIX, ForkName, ForkSeq, MAX_ATTESTER_SLASHINGS, MAX_ATTESTER_SLASHINGS_ELECTRA, MAX_BLS_TO_EXECUTION_CHANGES, MAX_PROPOSER_SLASHINGS, MAX_VOLUNTARY_EXITS, } from "@lodestar/params";
2
- import { computeEpochAtSlot, computeStartSlotAtEpoch, getAttesterSlashableIndices, } from "@lodestar/state-transition";
3
- import { sszTypesFor, } from "@lodestar/types";
4
- import { fromHex, toHex, toRootHex } from "@lodestar/utils";
2
+ import { assertValidAttesterSlashing, computeEpochAtSlot, computeStartSlotAtEpoch, getAttesterSlashableIndices, getAttesterSlashingSignatureSets, getProposerSlashingSignatureSets, } from "@lodestar/state-transition";
3
+ import { ssz, sszTypesFor, } from "@lodestar/types";
4
+ import { byteArrayEquals, fromHex, toHex, toRootHex } from "@lodestar/utils";
5
5
  import { BlockType } from "../interface.js";
6
6
  import { BlockProductionStep } from "../produceBlock/produceBlockBody.js";
7
- import { isValidBlsToExecutionChangeForBlockInclusion } from "./utils.js";
7
+ import { getAttesterSlashingSignatureDomains, getProposerSlashingSignatureDomain, isValidBlsToExecutionChangeForBlockInclusion, persistDiff, } from "./utils.js";
8
8
  export class OpPool {
9
9
  config;
10
10
  /** Map of uniqueId(AttesterSlashing) -> AttesterSlashing */
@@ -33,18 +33,44 @@ export class OpPool {
33
33
  get blsToExecutionChangeSize() {
34
34
  return this.blsToExecutionChanges.size;
35
35
  }
36
- async fromPersisted(db) {
36
+ async fromPersisted(db, state, bls, currentSlot) {
37
37
  const [attesterSlashings, proposerSlashings, voluntaryExits, blsToExecutionChanges] = await Promise.all([
38
38
  db.attesterSlashing.entries(),
39
39
  db.proposerSlashing.values(),
40
40
  db.voluntaryExit.values(),
41
41
  db.blsToExecutionChange.values(),
42
42
  ]);
43
- for (const attesterSlashing of attesterSlashings) {
44
- this.insertAttesterSlashing(ForkName.electra, attesterSlashing.value, attesterSlashing.key);
43
+ // Persisted operations have no verification context. Rebuild it before they can enter the pool.
44
+ // The startup anchor may precede a fork whose slashings are already persisted.
45
+ for (const { key, value: attesterSlashing } of attesterSlashings) {
46
+ try {
47
+ assertValidAttesterSlashing(this.config, currentSlot, state.validatorCount, attesterSlashing, false);
48
+ }
49
+ catch {
50
+ continue;
51
+ }
52
+ const verifiedDomains = getAttesterSlashingSignatureDomains(this.config, currentSlot, attesterSlashing);
53
+ if (!(await bls.verifySignatureSets(getAttesterSlashingSignatureSets(this.config, currentSlot, attesterSlashing)))) {
54
+ continue;
55
+ }
56
+ this.insertAttesterSlashing(ForkName.electra, attesterSlashing, verifiedDomains, key);
45
57
  }
46
58
  for (const proposerSlashing of proposerSlashings) {
47
- this.insertProposerSlashing(proposerSlashing);
59
+ const header1 = proposerSlashing.signedHeader1.message;
60
+ const header2 = proposerSlashing.signedHeader2.message;
61
+ // Startup may restore a state from before activation. Current slashability is checked
62
+ // when selecting operations, so it must not prevent restoring an otherwise valid slashing.
63
+ if (header1.slot !== header2.slot ||
64
+ header1.proposerIndex !== header2.proposerIndex ||
65
+ header1.proposerIndex >= state.validatorCount ||
66
+ ssz.phase0.BeaconBlockHeaderBigint.equals(header1, header2)) {
67
+ continue;
68
+ }
69
+ const verifiedDomain = getProposerSlashingSignatureDomain(this.config, currentSlot, proposerSlashing);
70
+ if (!(await bls.verifySignatureSets(getProposerSlashingSignatureSets(this.config, currentSlot, proposerSlashing)))) {
71
+ continue;
72
+ }
73
+ this.insertProposerSlashing(proposerSlashing, verifiedDomain);
48
74
  }
49
75
  for (const voluntaryExit of voluntaryExits) {
50
76
  this.insertVoluntaryExit(voluntaryExit);
@@ -59,7 +85,11 @@ export class OpPool {
59
85
  key: fromHex(key),
60
86
  value: value.attesterSlashing,
61
87
  })), toHex),
62
- persistDiff(db.proposerSlashing, Array.from(this.proposerSlashings.entries()).map(([key, value]) => ({ key, value })), (index) => index),
88
+ persistDiff(db.proposerSlashing, Array.from(this.proposerSlashings.entries()).map(([key, value]) => ({ key, value: value.proposerSlashing })), (index) => index,
89
+ // A slashing invalidated by a fork may remain on disk after eviction from the pool.
90
+ // A new valid slashing for that validator has the same database key, so comparing
91
+ // keys alone would retain the invalid slashing and lose the replacement on restart.
92
+ { updateExisting: true }),
63
93
  persistDiff(db.voluntaryExit, Array.from(this.voluntaryExits.entries()).map(([key, value]) => ({ key, value })), (index) => index),
64
94
  persistDiff(db.blsToExecutionChange, Array.from(this.blsToExecutionChanges.entries()).map(([key, value]) => ({ key, value })), (index) => index),
65
95
  ]);
@@ -84,7 +114,7 @@ export class OpPool {
84
114
  return this.proposerSlashings.has(validatorIndex);
85
115
  }
86
116
  /** Must be validated beforehand */
87
- insertAttesterSlashing(fork, attesterSlashing, rootHash) {
117
+ insertAttesterSlashing(fork, attesterSlashing, verifiedDomains, rootHash) {
88
118
  if (!rootHash) {
89
119
  rootHash = sszTypesFor(fork).AttesterSlashing.hashTreeRoot(attesterSlashing);
90
120
  }
@@ -93,14 +123,18 @@ export class OpPool {
93
123
  this.attesterSlashings.set(toRootHex(rootHash), {
94
124
  attesterSlashing,
95
125
  intersectingIndices,
126
+ verifiedDomains,
96
127
  });
97
128
  for (const index of intersectingIndices) {
98
129
  this.attesterSlashingIndexes.add(index);
99
130
  }
100
131
  }
101
132
  /** Must be validated beforehand */
102
- insertProposerSlashing(proposerSlashing) {
103
- this.proposerSlashings.set(proposerSlashing.signedHeader1.message.proposerIndex, proposerSlashing);
133
+ insertProposerSlashing(proposerSlashing, verifiedDomain) {
134
+ this.proposerSlashings.set(proposerSlashing.signedHeader1.message.proposerIndex, {
135
+ proposerSlashing,
136
+ verifiedDomain,
137
+ });
104
138
  }
105
139
  /** Must be validated beforehand */
106
140
  insertVoluntaryExit(voluntaryExit) {
@@ -128,7 +162,12 @@ export class OpPool {
128
162
  ? metrics?.executionBlockProductionTimeSteps
129
163
  : metrics?.builderBlockProductionTimeSteps;
130
164
  const endProposerSlashing = stepsMetrics?.startTimer();
131
- for (const proposerSlashing of this.proposerSlashings.values()) {
165
+ for (const [key, { proposerSlashing, verifiedDomain }] of this.proposerSlashings) {
166
+ // A fork can change the required domain even for verified slashings, including those with future-slot headers.
167
+ if (!byteArrayEquals(verifiedDomain, getProposerSlashingSignatureDomain(this.config, state.slot, proposerSlashing))) {
168
+ this.proposerSlashings.delete(key);
169
+ continue;
170
+ }
132
171
  const index = proposerSlashing.signedHeader1.message.proposerIndex;
133
172
  const validator = state.getValidator(index);
134
173
  if (!validator.slashed && validator.activationEpoch <= stateEpoch && stateEpoch < validator.withdrawableEpoch) {
@@ -146,7 +185,12 @@ export class OpPool {
146
185
  const endAttesterSlashings = stepsMetrics?.startTimer();
147
186
  const attesterSlashings = [];
148
187
  const maxAttesterSlashings = stateFork >= ForkSeq.electra ? MAX_ATTESTER_SLASHINGS_ELECTRA : MAX_ATTESTER_SLASHINGS;
149
- attesterSlashing: for (const attesterSlashing of this.attesterSlashings.values()) {
188
+ attesterSlashing: for (const [key, attesterSlashing] of this.attesterSlashings) {
189
+ const domains = getAttesterSlashingSignatureDomains(this.config, state.slot, attesterSlashing.attesterSlashing);
190
+ if (!attesterSlashing.verifiedDomains.every((domain, i) => byteArrayEquals(domain, domains[i]))) {
191
+ this.attesterSlashings.delete(key);
192
+ continue;
193
+ }
150
194
  /** Indices slashable in this attester slashing */
151
195
  const slashableIndices = new Set();
152
196
  for (let i = 0; i < attesterSlashing.intersectingIndices.length; i++) {
@@ -214,7 +258,7 @@ export class OpPool {
214
258
  }
215
259
  /** For beacon pool API */
216
260
  getAllProposerSlashings() {
217
- return Array.from(this.proposerSlashings.values());
261
+ return Array.from(this.proposerSlashings.values()).map(({ proposerSlashing }) => proposerSlashing);
218
262
  }
219
263
  /** For beacon pool API */
220
264
  getAllVoluntaryExits() {
@@ -260,7 +304,7 @@ export class OpPool {
260
304
  */
261
305
  pruneProposerSlashings(headState) {
262
306
  const finalizedEpoch = headState.finalizedCheckpoint.epoch;
263
- for (const [key, proposerSlashing] of this.proposerSlashings.entries()) {
307
+ for (const [key, { proposerSlashing }] of this.proposerSlashings.entries()) {
264
308
  const index = proposerSlashing.signedHeader1.message.proposerIndex;
265
309
  if (headState.getValidator(index).exitEpoch <= finalizedEpoch) {
266
310
  this.proposerSlashings.delete(key);
@@ -321,26 +365,4 @@ function isVoluntaryExitSignatureIncludable(stateFork, voluntaryExitFork) {
321
365
  function isSlashableAtEpoch(validator, epoch) {
322
366
  return !validator.slashed && validator.activationEpoch <= epoch && epoch < validator.withdrawableEpoch;
323
367
  }
324
- /**
325
- * Persist target items `items` in `dbRepo` doing minimum put and delete writes.
326
- * Reads all keys in repository to compute the diff between current persisted data and target data.
327
- */
328
- async function persistDiff(dbRepo, items, serializeKey) {
329
- const persistedKeys = await dbRepo.keys();
330
- const batch = [];
331
- const persistedKeysSerialized = new Set(persistedKeys.map(serializeKey));
332
- for (const item of items) {
333
- if (!persistedKeysSerialized.has(serializeKey(item.key))) {
334
- batch.push({ type: "put", key: item.key, value: item.value });
335
- }
336
- }
337
- const targetKeysSerialized = new Set(items.map((item) => serializeKey(item.key)));
338
- for (const persistedKey of persistedKeys) {
339
- if (!targetKeysSerialized.has(serializeKey(persistedKey))) {
340
- batch.push({ type: "del", key: persistedKey });
341
- }
342
- }
343
- if (batch.length > 0)
344
- await dbRepo.batch(batch);
345
- }
346
368
  //# sourceMappingURL=opPool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"opPool.js","sourceRoot":"","sources":["../../../src/chain/opPools/opPool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"opPool.js","sourceRoot":"","sources":["../../../src/chain/opPools/opPool.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  import { RootHex, Slot, ValidatorIndex, gloas } from "@lodestar/types";
2
+ import { IBeaconDb } from "../../db/index.js";
2
3
  /**
3
4
  * Pool of validated `SignedProposerPreferences` indexed by `(slot, dependent_root)`.
4
5
  *
5
6
  * The primary consumer is `validateExecutionPayloadBid`, which looks up the matching
6
7
  * preferences via `get(bid.slot, dependent_root)` to enforce the IGNORE-existence and
7
- * REJECT-equality rules from the gloas spec. The beacon API `/pool/proposer_preferences`
8
- * GET endpoint reads from the same pool via `getAll`.
8
+ * REJECT-equality rules from the gloas spec. The beacon API `getProposerPreferences`
9
+ * endpoint reads from the same pool via `getAll`.
9
10
  *
10
11
  * `validator_index` is intentionally not part of the key: gossip validation enforces
11
12
  * `proposers[proposalSlot % SLOTS_PER_EPOCH] === validatorIndex` against the shuffling
@@ -18,13 +19,16 @@ export declare class ProposerPreferencesPool {
18
19
  get(slot: Slot, dependentRootHex: RootHex): gloas.SignedProposerPreferences | null;
19
20
  isKnown(proposalSlot: Slot, dependentRoot: RootHex, validatorIndex: ValidatorIndex): boolean;
20
21
  add(signed: gloas.SignedProposerPreferences): void;
21
- /** API read-out: flatten across branches, optionally filtered by slot. */
22
- getAll(slot?: Slot): gloas.SignedProposerPreferences[];
22
+ /** API read-out: flatten across branches, optionally filtered by slot and dependent root. */
23
+ getAll(slot?: Slot, dependentRootHex?: RootHex): gloas.SignedProposerPreferences[];
23
24
  /**
24
25
  * Entries are only load-bearing while `proposal_slot >= current_slot`. Once the slot has
25
26
  * passed the `[IGNORE] proposal_slot > current_slot` gossip rule takes over, so drop them
26
27
  * on each slot tick.
27
28
  */
28
29
  prune(currentSlot: Slot): void;
30
+ /** Restore the preferences of upcoming slots, they were validated before they were persisted */
31
+ fromPersisted(db: IBeaconDb, currentSlot: Slot): Promise<void>;
32
+ toPersisted(db: IBeaconDb): Promise<void>;
29
33
  }
30
34
  //# sourceMappingURL=proposerPreferencesPool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"proposerPreferencesPool.d.ts","sourceRoot":"","sources":["../../../src/chain/opPools/proposerPreferencesPool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAGrE;;;;;;;;;;;;GAYG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkE;IAEzF,0HAA0H;IAC1H,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,GAAG,KAAK,CAAC,yBAAyB,GAAG,IAAI,CAEjF;IAED,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,GAAG,OAAO,CAE3F;IAED,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,yBAAyB,GAAG,IAAI,CASjD;IAED,0EAA0E;IAC1E,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,yBAAyB,EAAE,CAUrD;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,EAAE,IAAI,GAAG,IAAI,CAI7B;CACF"}
1
+ {"version":3,"file":"proposerPreferencesPool.d.ts","sourceRoot":"","sources":["../../../src/chain/opPools/proposerPreferencesPool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAG5C;;;;;;;;;;;;GAYG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkE;IAEzF,0HAA0H;IAC1H,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,GAAG,KAAK,CAAC,yBAAyB,GAAG,IAAI,CAEjF;IAED,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,GAAG,OAAO,CAE3F;IAED,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,yBAAyB,GAAG,IAAI,CASjD;IAED,6FAA6F;IAC7F,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC,yBAAyB,EAAE,CAcjF;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,EAAE,IAAI,GAAG,IAAI,CAI7B;IAED,gGAAgG;IAC1F,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAMnE;IAEK,WAAW,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAM9C;CACF"}
@@ -1,11 +1,12 @@
1
- import { toRootHex } from "@lodestar/utils";
1
+ import { toHex, toRootHex } from "@lodestar/utils";
2
+ import { persistDiff } from "./utils.js";
2
3
  /**
3
4
  * Pool of validated `SignedProposerPreferences` indexed by `(slot, dependent_root)`.
4
5
  *
5
6
  * The primary consumer is `validateExecutionPayloadBid`, which looks up the matching
6
7
  * preferences via `get(bid.slot, dependent_root)` to enforce the IGNORE-existence and
7
- * REJECT-equality rules from the gloas spec. The beacon API `/pool/proposer_preferences`
8
- * GET endpoint reads from the same pool via `getAll`.
8
+ * REJECT-equality rules from the gloas spec. The beacon API `getProposerPreferences`
9
+ * endpoint reads from the same pool via `getAll`.
9
10
  *
10
11
  * `validator_index` is intentionally not part of the key: gossip validation enforces
11
12
  * `proposers[proposalSlot % SLOTS_PER_EPOCH] === validatorIndex` against the shuffling
@@ -31,16 +32,19 @@ export class ProposerPreferencesPool {
31
32
  }
32
33
  byRoot.set(rootHex, signed);
33
34
  }
34
- /** API read-out: flatten across branches, optionally filtered by slot. */
35
- getAll(slot) {
36
- if (slot !== undefined) {
37
- const byRoot = this.bySlot.get(slot);
38
- return byRoot ? Array.from(byRoot.values()) : [];
39
- }
35
+ /** API read-out: flatten across branches, optionally filtered by slot and dependent root. */
36
+ getAll(slot, dependentRootHex) {
40
37
  const out = [];
41
- for (const byRoot of this.bySlot.values()) {
42
- for (const v of byRoot.values())
43
- out.push(v);
38
+ for (const [s, byRoot] of this.bySlot) {
39
+ if (slot !== undefined && s !== slot) {
40
+ continue;
41
+ }
42
+ for (const [root, signed] of byRoot) {
43
+ if (dependentRootHex !== undefined && root !== dependentRootHex) {
44
+ continue;
45
+ }
46
+ out.push(signed);
47
+ }
44
48
  }
45
49
  return out;
46
50
  }
@@ -55,5 +59,16 @@ export class ProposerPreferencesPool {
55
59
  this.bySlot.delete(slot);
56
60
  }
57
61
  }
62
+ /** Restore the preferences of upcoming slots, they were validated before they were persisted */
63
+ async fromPersisted(db, currentSlot) {
64
+ for (const signed of await db.proposerPreferences.values()) {
65
+ if (signed.message.proposalSlot >= currentSlot) {
66
+ this.add(signed);
67
+ }
68
+ }
69
+ }
70
+ async toPersisted(db) {
71
+ await persistDiff(db.proposerPreferences, this.getAll().map((signed) => ({ key: db.proposerPreferences.getId(signed), value: signed })), toHex);
72
+ }
58
73
  }
59
74
  //# sourceMappingURL=proposerPreferencesPool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"proposerPreferencesPool.js","sourceRoot":"","sources":["../../../src/chain/opPools/proposerPreferencesPool.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAE1C;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,uBAAuB;IACjB,MAAM,GAAG,IAAI,GAAG,EAAuD,CAAC;IAEzF,0HAA0H;IAC1H,GAAG,CAAC,IAAU,EAAE,gBAAyB;QACvC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC;IAC9D,CAAC;IAED,OAAO,CAAC,YAAkB,EAAE,aAAsB,EAAE,cAA8B;QAChF,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE,OAAO,CAAC,cAAc,KAAK,cAAc,CAAC;IAC1F,CAAC;IAED,GAAG,CAAC,MAAuC;QACzC,MAAM,EAAC,YAAY,EAAE,aAAa,EAAC,GAAG,MAAM,CAAC,OAAO,CAAC;QACrD,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;QACzC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,0EAA0E;IAC1E,MAAM,CAAC,IAAW;QAChB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrC,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,CAAC;QACD,MAAM,GAAG,GAAsC,EAAE,CAAC;QAClD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAiB;QACrB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YACtC,IAAI,IAAI,GAAG,WAAW;gBAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"proposerPreferencesPool.js","sourceRoot":"","sources":["../../../src/chain/opPools/proposerPreferencesPool.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,11 @@
1
1
  import { Signature } from "@chainsafe/lodestar-z/blst";
2
+ import { BeaconConfig } from "@lodestar/config";
3
+ import { Id, Repository } from "@lodestar/db";
2
4
  import { IBeaconStateView } from "@lodestar/state-transition";
3
- import { Slot, capella } from "@lodestar/types";
5
+ import { AttesterSlashing, Domain, Slot, capella, phase0 } from "@lodestar/types";
4
6
  import { AggregateFast, AggregateFastElectra } from "./attestationPool.js";
7
+ export declare function getProposerSlashingSignatureDomain(config: BeaconConfig, stateSlot: Slot, slashing: phase0.ProposerSlashing): Domain;
8
+ export declare function getAttesterSlashingSignatureDomains(config: BeaconConfig, stateSlot: Slot, slashing: AttesterSlashing): [Domain, Domain];
5
9
  /**
6
10
  * Prune a Map indexed by slot to keep the most recent slots, up to `slotsRetained`
7
11
  */
@@ -17,4 +21,14 @@ export declare function signatureFromBytesNoCheck(signature: Uint8Array): Signat
17
21
  */
18
22
  export declare function isValidBlsToExecutionChangeForBlockInclusion(state: IBeaconStateView, signedBLSToExecutionChange: capella.SignedBLSToExecutionChange): boolean;
19
23
  export declare function isElectraAggregate(aggregate: AggregateFast): aggregate is AggregateFastElectra;
24
+ /**
25
+ * Persist target items `items` in `dbRepo` doing minimum put and delete writes.
26
+ * Reads all keys in repository to compute the diff between current persisted data and target data.
27
+ */
28
+ export declare function persistDiff<K extends Id, V>(dbRepo: Repository<K, V>, items: {
29
+ key: K;
30
+ value: V;
31
+ }[], serializeKey: (key: K) => number | string, opts?: {
32
+ updateExisting?: boolean;
33
+ }): Promise<void>;
20
34
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/chain/opPools/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,4BAA4B,CAAC;AAErD,OAAO,EAAC,gBAAgB,EAAC,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAC,IAAI,EAAE,OAAO,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAC,aAAa,EAAE,oBAAoB,EAAC,MAAM,sBAAsB,CAAC;AAEzE;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,GAAG,IAAI,CAgB1F;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,UAAU,GAAG,SAAS,CAE1E;AAED;;;GAGG;AACH,wBAAgB,4CAA4C,CAC1D,KAAK,EAAE,gBAAgB,EACvB,0BAA0B,EAAE,OAAO,CAAC,0BAA0B,GAC7D,OAAO,CAkBT;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,aAAa,GAAG,SAAS,IAAI,oBAAoB,CAE9F"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/chain/opPools/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAU,EAAE,EAAE,UAAU,EAAC,MAAM,cAAc,CAAC;AAErD,OAAO,EAAC,gBAAgB,EAA0B,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAC,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAC,aAAa,EAAE,oBAAoB,EAAC,MAAM,sBAAsB,CAAC;AAEzE,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,IAAI,EACf,QAAQ,EAAE,MAAM,CAAC,gBAAgB,GAChC,MAAM,CAER;AAED,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,IAAI,EACf,QAAQ,EAAE,gBAAgB,GACzB,CAAC,MAAM,EAAE,MAAM,CAAC,CAalB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,GAAG,IAAI,CAgB1F;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,UAAU,GAAG,SAAS,CAE1E;AAED;;;GAGG;AACH,wBAAgB,4CAA4C,CAC1D,KAAK,EAAE,gBAAgB,EACvB,0BAA0B,EAAE,OAAO,CAAC,0BAA0B,GAC7D,OAAO,CAkBT;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,aAAa,GAAG,SAAS,IAAI,oBAAoB,CAE9F;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,EAC/C,MAAM,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EACxB,KAAK,EAAE;IAAC,GAAG,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAC,EAAE,EAC3B,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,EACzC,IAAI,GAAE;IAAC,cAAc,CAAC,EAAE,OAAO,CAAA;CAAM,GACpC,OAAO,CAAC,IAAI,CAAC,CAmBf"}
@@ -1,5 +1,15 @@
1
1
  import { Signature } from "@chainsafe/lodestar-z/blst";
2
- import { BLS_WITHDRAWAL_PREFIX } from "@lodestar/params";
2
+ import { BLS_WITHDRAWAL_PREFIX, DOMAIN_BEACON_ATTESTER, DOMAIN_BEACON_PROPOSER } from "@lodestar/params";
3
+ import { computeStartSlotAtEpoch } from "@lodestar/state-transition";
4
+ export function getProposerSlashingSignatureDomain(config, stateSlot, slashing) {
5
+ return config.getDomain(stateSlot, DOMAIN_BEACON_PROPOSER, Number(slashing.signedHeader1.message.slot));
6
+ }
7
+ export function getAttesterSlashingSignatureDomains(config, stateSlot, slashing) {
8
+ return [
9
+ config.getDomain(stateSlot, DOMAIN_BEACON_ATTESTER, computeStartSlotAtEpoch(Number(slashing.attestation1.data.target.epoch))),
10
+ config.getDomain(stateSlot, DOMAIN_BEACON_ATTESTER, computeStartSlotAtEpoch(Number(slashing.attestation2.data.target.epoch))),
11
+ ];
12
+ }
3
13
  /**
4
14
  * Prune a Map indexed by slot to keep the most recent slots, up to `slotsRetained`
5
15
  */
@@ -48,4 +58,26 @@ export function isValidBlsToExecutionChangeForBlockInclusion(state, signedBLSToE
48
58
  export function isElectraAggregate(aggregate) {
49
59
  return aggregate.committeeBits !== undefined;
50
60
  }
61
+ /**
62
+ * Persist target items `items` in `dbRepo` doing minimum put and delete writes.
63
+ * Reads all keys in repository to compute the diff between current persisted data and target data.
64
+ */
65
+ export async function persistDiff(dbRepo, items, serializeKey, opts = {}) {
66
+ const persistedKeys = await dbRepo.keys();
67
+ const batch = [];
68
+ const persistedKeysSerialized = new Set(persistedKeys.map(serializeKey));
69
+ for (const item of items) {
70
+ if (opts.updateExisting || !persistedKeysSerialized.has(serializeKey(item.key))) {
71
+ batch.push({ type: "put", key: item.key, value: item.value });
72
+ }
73
+ }
74
+ const targetKeysSerialized = new Set(items.map((item) => serializeKey(item.key)));
75
+ for (const persistedKey of persistedKeys) {
76
+ if (!targetKeysSerialized.has(serializeKey(persistedKey))) {
77
+ batch.push({ type: "del", key: persistedKey });
78
+ }
79
+ }
80
+ if (batch.length > 0)
81
+ await dbRepo.batch(batch);
82
+ }
51
83
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/chain/opPools/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAC,qBAAqB,EAAC,MAAM,kBAAkB,CAAC;AAKvD;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,GAAuB,EAAE,IAAU,EAAE,aAAmB;IAClF,MAAM,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,aAAa,EAAE,CAAC,CAAC,CAAC;IAEhE,gHAAgH;IAChH,IAAI,GAAG,CAAC,IAAI,IAAI,aAAa,EAAE,CAAC;QAC9B,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IAED,iEAAiE;IACjE,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IACrC,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACvE,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,qBAAqB,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,SAAqB;IAC7D,OAAO,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,4CAA4C,CAC1D,KAAuB,EACvB,0BAA8D;IAE9D,oJAAoJ;IACpJ,EAAE;IACF,oEAAoE;IACpE,0EAA0E;IAC1E,EAAE;IACF,2EAA2E;IAC3E,oEAAoE;IACpE,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,0BAA0B,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACxF,MAAM,EAAC,qBAAqB,EAAC,GAAG,SAAS,CAAC;IAC1C,IAAI,qBAAqB,CAAC,CAAC,CAAC,KAAK,qBAAqB,EAAE,CAAC;QACvD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,8FAA8F;IAC9F,0EAA0E;IAE1E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAAwB;IACzD,OAAQ,SAAkC,CAAC,aAAa,KAAK,SAAS,CAAC;AACzE,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/chain/opPools/utils.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ export type IChainOptions = BlockProcessOpts & PoolOpts & SeenCacheOpts & ForkCh
12
12
  blsVerifyAllMultiThread?: boolean;
13
13
  blacklistedBlocks?: string[];
14
14
  persistProducedBlocks?: boolean;
15
+ persistProducedPayloadEnvelopes?: boolean;
15
16
  /** Archive finalized Gloas payload envelopes as headers (bodies reconstructed from the EL on read) */
16
17
  dedupePayloads?: boolean;
17
18
  persistInvalidSszObjects?: boolean;
@@ -35,7 +36,7 @@ export type IChainOptions = BlockProcessOpts & PoolOpts & SeenCacheOpts & ForkCh
35
36
  minSameMessageSignatureSetsToBatch: number;
36
37
  archiveDateEpochs?: number;
37
38
  nHistoricalStatesFileDataStore?: boolean;
38
- nativeStateView?: boolean;
39
+ nativeStateTransition?: boolean;
39
40
  /** Builder circuit breaker fault inspection window in slots */
40
41
  faultInspectionWindow?: number;
41
42
  /** Canonical EMPTY blocks allowed per `faultInspectionWindow` observed blocks */
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/chain/options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/chain/options.ts"],"names":[],"mappings":"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"}
@@ -35,7 +35,7 @@ export const defaultChainOptions = {
35
35
  // - users can prune the persisted checkpoint state files manually to save disc space
36
36
  // - it helps debug easier when network is unfinalized
37
37
  nHistoricalStatesFileDataStore: true,
38
- nativeStateView: false,
38
+ nativeStateTransition: false,
39
39
  maxBlockStates: DEFAULT_MAX_BLOCK_STATES,
40
40
  maxCPStateEpochsInMemory: DEFAULT_MAX_CP_STATE_EPOCHS_IN_MEMORY,
41
41
  maxCPStateEpochsOnDisk: DEFAULT_MAX_CP_STATE_ON_DISK,
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/chain/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,IAAI,uBAAuB,EAAC,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAC,oBAAoB,EAAC,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAC,WAAW,EAAmB,MAAM,6BAA6B,CAAC;AAI1E,OAAO,EAAC,wBAAwB,EAA0B,MAAM,qCAAqC,CAAC;AACtG,OAAO,EACL,qCAAqC,EACrC,4BAA4B,GAE7B,MAAM,4CAA4C,CAAC;AAGpD,OAAO,EAAC,WAAW,EAAE,oBAAoB,EAAC,CAAC;AAwF3C,MAAM,CAAC,MAAM,mBAAmB,GAAkB;IAChD,sBAAsB,EAAE,KAAK;IAC7B,uBAAuB,EAAE,KAAK;IAC9B,iBAAiB,EAAE,EAAE;IACrB,qBAAqB,EAAE,KAAK;IAC5B,aAAa,EAAE,IAAI;IACnB,kBAAkB,EAAE,IAAI;IACxB,cAAc,EAAE,IAAI;IACpB,iBAAiB,EAAE,IAAI;IACvB,gBAAgB,EAAE,KAAK;IACvB,qBAAqB,EAAE,uBAAuB,CAAC,qBAAqB;IACpE,cAAc,EAAE,IAAI;IACpB,oBAAoB,EAAE,KAAK;IAC3B,0BAA0B,EAAE,IAAI;IAChC,WAAW,EAAE,oBAAoB;IACjC,YAAY,EAAE,KAAK;IACnB,qBAAqB,EAAE,KAAK;IAC5B,0EAA0E;IAC1E,uGAAuG;IACvG,YAAY,EAAE,EAAE;IAChB,wBAAwB,EAAE,KAAK;IAC/B,6BAA6B,EAAE,MAAM;IACrC,qEAAqE;IACrE,gGAAgG;IAChG,wGAAwG;IACxG,kCAAkC,EAAE,CAAC;IACrC,4DAA4D;IAC5D,qEAAqE;IACrE,uFAAuF;IACvF,wDAAwD;IACxD,8BAA8B,EAAE,IAAI;IACpC,eAAe,EAAE,KAAK;IACtB,cAAc,EAAE,wBAAwB;IACxC,wBAAwB,EAAE,qCAAqC;IAC/D,sBAAsB,EAAE,4BAA4B;CACrD,CAAC"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/chain/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,IAAI,uBAAuB,EAAC,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAC,oBAAoB,EAAC,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAC,WAAW,EAAmB,MAAM,6BAA6B,CAAC;AAI1E,OAAO,EAAC,wBAAwB,EAA0B,MAAM,qCAAqC,CAAC;AACtG,OAAO,EACL,qCAAqC,EACrC,4BAA4B,GAE7B,MAAM,4CAA4C,CAAC;AAGpD,OAAO,EAAC,WAAW,EAAE,oBAAoB,EAAC,CAAC;AAwF3C,MAAM,CAAC,MAAM,mBAAmB,GAAkB;IAChD,sBAAsB,EAAE,KAAK;IAC7B,uBAAuB,EAAE,KAAK;IAC9B,iBAAiB,EAAE,EAAE;IACrB,qBAAqB,EAAE,KAAK;IAC5B,aAAa,EAAE,IAAI;IACnB,kBAAkB,EAAE,IAAI;IACxB,cAAc,EAAE,IAAI;IACpB,iBAAiB,EAAE,IAAI;IACvB,gBAAgB,EAAE,KAAK;IACvB,qBAAqB,EAAE,uBAAuB,CAAC,qBAAqB;IACpE,cAAc,EAAE,IAAI;IACpB,oBAAoB,EAAE,KAAK;IAC3B,0BAA0B,EAAE,IAAI;IAChC,WAAW,EAAE,oBAAoB;IACjC,YAAY,EAAE,KAAK;IACnB,qBAAqB,EAAE,KAAK;IAC5B,0EAA0E;IAC1E,uGAAuG;IACvG,YAAY,EAAE,EAAE;IAChB,wBAAwB,EAAE,KAAK;IAC/B,6BAA6B,EAAE,MAAM;IACrC,qEAAqE;IACrE,gGAAgG;IAChG,wGAAwG;IACxG,kCAAkC,EAAE,CAAC;IACrC,4DAA4D;IAC5D,qEAAqE;IACrE,uFAAuF;IACvF,wDAAwD;IACxD,8BAA8B,EAAE,IAAI;IACpC,qBAAqB,EAAE,KAAK;IAC5B,cAAc,EAAE,wBAAwB;IACxC,wBAAwB,EAAE,qCAAqC;IAC/D,sBAAsB,EAAE,4BAA4B;CACrD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"prepareNextSlot.d.ts","sourceRoot":"","sources":["../../src/chain/prepareNextSlot.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAUjD,OAAO,EAEL,gBAAgB,EASjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAU,IAAI,EAAiB,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAC,MAAM,EAAiC,MAAM,iBAAiB,CAAC;AAIvE,OAAO,EAAC,OAAO,EAAC,MAAM,qBAAqB,CAAC;AAI5C,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAM5C,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAkB1C;;;;;;;;;;GAUG;AACH,qBAAa,wBAAwB;IAEjC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,YACmB,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,EAUrC;IAED;;OAEG;IACH,kBAAkB,cAAqB,IAAI,KAAG,OAAO,CAAC,IAAI,CAAC,CA2TzD;IAEF;;;OAGG;IACH,OAAO,CAAC,4BAA4B;IAYpC,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,OAAO,GAAG,IAAI,CAQlF;CACF"}
1
+ {"version":3,"file":"prepareNextSlot.d.ts","sourceRoot":"","sources":["../../src/chain/prepareNextSlot.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAUjD,OAAO,EAEL,gBAAgB,EASjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAU,IAAI,EAAiB,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAC,MAAM,EAAwC,MAAM,iBAAiB,CAAC;AAI9E,OAAO,EAAC,OAAO,EAAC,MAAM,qBAAqB,CAAC;AAI5C,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAU5C,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAkB1C;;;;;;;;;;GAUG;AACH,qBAAa,wBAAwB;IAEjC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,YACmB,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,EAUrC;IAED;;OAEG;IACH,kBAAkB,cAAqB,IAAI,KAAG,OAAO,CAAC,IAAI,CAAC,CAsUzD;IAEF;;;OAGG;IACH,OAAO,CAAC,4BAA4B;IAYpC,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,OAAO,GAAG,IAAI,CAQlF;CACF"}
@@ -2,13 +2,13 @@ import { routes } from "@lodestar/api";
2
2
  import { getFinalizedExecutionBlockHash, getSafeExecutionBlockHash } from "@lodestar/fork-choice";
3
3
  import { ForkSeq, SLOTS_PER_EPOCH, isForkPostBellatrix, isForkPostFulu, isForkPostGloas, } from "@lodestar/params";
4
4
  import { GLOAS_PREVERIFY_WINDOW_EPOCHS, MAX_BUILDER_DEPOSITS_PER_SLOT, StateHashTreeRootSource, computeEpochAtSlot, computeTimeAtSlot, isStatePostBellatrix, isStatePostFulu, isStatePostGloas, } from "@lodestar/state-transition";
5
- import { fromHex, isErrorAborted, sleep } from "@lodestar/utils";
5
+ import { fromHex, isErrorAborted, sleep, toHex } from "@lodestar/utils";
6
6
  import { GENESIS_SLOT } from "../constants/constants.js";
7
7
  import { BuilderStatus } from "../execution/builder/http.js";
8
8
  import { ClockEvent } from "../util/clock.js";
9
9
  import { isQueueErrorAborted } from "../util/queue/index.js";
10
10
  import { ForkchoiceCaller } from "./forkChoice/index.js";
11
- import { getPayloadAttributesForSSE, prepareExecutionPayload } from "./produceBlock/produceBlockBody.js";
11
+ import { getPayloadAttributesForSSE, getPooledProposerPreferences, prepareExecutionPayload, } from "./produceBlock/produceBlockBody.js";
12
12
  import { RegenCaller } from "./regen/index.js";
13
13
  // TODO GLOAS: re-evaluate this timing
14
14
  /* With 12s slot times, this scheduler will run 4s before the start of each slot (`12 - 0.6667 * 12 = 4`). */
@@ -116,7 +116,15 @@ export class PrepareNextSlotScheduler {
116
116
  return preparedState.getBeaconProposer(prepareSlot);
117
117
  };
118
118
  const proposerIndex = await getProposerIndex();
119
- feeRecipient = this.chain.beaconProposerCache.get(proposerIndex);
119
+ if (this.chain.beaconProposerCache.has(proposerIndex)) {
120
+ const pooledPreferences = isForkPostGloas(fork)
121
+ ? getPooledProposerPreferences(this.chain, prepareSlot, headRoot)
122
+ : null;
123
+ feeRecipient =
124
+ pooledPreferences !== null
125
+ ? toHex(pooledPreferences.feeRecipient)
126
+ : this.chain.beaconProposerCache.getOrDefault(proposerIndex);
127
+ }
120
128
  // Predict the proposer head of the next slot when either:
121
129
  // - we are proposing the next slot (single-slot proposer-boost-reorg), or
122
130
  // - this is an epoch transition: post-Fulu the next proposer may reorg a weak
@@ -191,6 +199,9 @@ export class PrepareNextSlotScheduler {
191
199
  else {
192
200
  parentBlockHash = preparedState.latestExecutionPayloadHeader.blockHash;
193
201
  }
202
+ // The payload_attributes event must carry the same hashes we send to the EL
203
+ const safeBlockHash = getSafeExecutionBlockHash(this.chain.forkChoice, this.logger);
204
+ const finalizedBlockHash = getFinalizedExecutionBlockHash(this.chain.forkChoice);
194
205
  let payloadAttributes;
195
206
  // If emitPayloadAttributes is true emit a SSE payloadAttributes event for
196
207
  // every slot. Without the flag, only emit the event if we are proposing in the next slot.
@@ -201,6 +212,8 @@ export class PrepareNextSlotScheduler {
201
212
  prepareSlot,
202
213
  parentBlockRoot: fromHex(updatedHead.blockRoot),
203
214
  parentBlockHash,
215
+ safeBlockHash,
216
+ finalizedBlockHash,
204
217
  feeRecipient: feeRecipient ?? "0x0000000000000000000000000000000000000000",
205
218
  });
206
219
  this.chain.emitter.emit(routes.events.EventType.payloadAttributes, { data, version: fork });
@@ -209,8 +222,6 @@ export class PrepareNextSlotScheduler {
209
222
  if (feeRecipient) {
210
223
  const preparationTime = computeTimeAtSlot(this.config, prepareSlot, this.chain.genesisTime) - Date.now() / 1000;
211
224
  this.metrics?.blockPayload.payloadAdvancePrepTime.observe(preparationTime);
212
- const safeBlockHash = getSafeExecutionBlockHash(this.chain.forkChoice, this.logger);
213
- const finalizedBlockHash = getFinalizedExecutionBlockHash(this.chain.forkChoice);
214
225
  // awaiting here instead of throwing an async call because there is no other task
215
226
  // left for scheduler and this gives nice semantics to catch and log errors in the
216
227
  // try/catch wrapper here.