Etan Kissling
b6d6247fa1
fix light client topic subscriptions ( #6351 )
...
Using `let contextFork = consensusFork` no longer seems to work to avoid
capturing the `var` loop variable; it ends up being `Electra` for all
handlers. Use `closureScope` as a more sustainable fix.
2024-06-14 00:45:40 +00:00
andri lim
fb0494e739
Bump nim-eth for revert GasInt back to int64 ( #6347 )
...
* Bump nim-eth for revert GasInt back to int64
* Fix libnimbus_lc
2024-06-13 15:25:59 +02:00
Etan Kissling
20af24efdb
align field name across `SomeSig` ( #6348 )
...
`ValidatorSig` uses `blob` but `TrustedSig` uses `data`, aligning the
names reduces code duplication and improves clarity. It also simplifies
`StableContainer` compatibility checks.
2024-06-13 13:11:04 +00:00
andri lim
238589868c
Bump nim-web3 and nim-eth ( #6345 )
...
In nim-web3 all std.Option are replaced by results.Opt. The same goes in nim-eth, with additional fields name changes and GasInt changed from int64 to uint64.
2024-06-12 08:46:39 +07:00
Eugene Kabanov
27664291c4
VC/NIMBUS-BN validators protection. ( #6329 )
...
* Beacon node side implementation.
* Validator client side implementation.
* Address review comments and fix the test.
* Only 400 errors could be IndexedErrorMessage, 500 errors are always ErrorMessage.
* Remove VC shutdown functionality.
* Remove magic constants.
* Make arguments more visible and disable default values.
* Address review comments.
2024-06-11 19:38:16 +00:00
Kim De Mey
741075aada
Bump nim-eth module and add async raises for eth2 discovery ( #6344 )
2024-06-11 19:50:08 +02:00
tersec
77d926525f
stop using deprecated stew/results ( #6343 )
...
* stop using deprecated stew/results
* exception tracking linting
2024-06-11 02:34:56 +00:00
Etan Kissling
cccd81a47b
add ANSI art placeholder for Electra 🦒 ( #6338 )
...
Trigger ANSI art on upgrade to Electra
Art created by http://beatscribe.com (beatscribe#1008 on Discord)
2024-06-10 16:45:40 +00:00
tersec
598485ee1a
add consolidations block body packing plumbing and correct electra MEV block body htr override ( #6335 )
2024-06-10 05:05:51 +02:00
tersec
e3d4ad5d39
properly (re)factor consolidation signature checking ( #6334 )
2024-06-09 19:37:41 +02:00
Eugene Kabanov
0512d02766
VC enable block monitoring by default. ( #6331 )
2024-06-07 15:04:29 +00:00
Etan Kissling
ab892c1a04
bump `mainnet` to `f6b7882618a5ad2c1d2731ae35e5d16a660d5bb7` ( #6310 )
...
* bump `mainnet` to `f6b7882618a5ad2c1d2731ae35e5d16a660d5bb7`
- Initial commit
* fix soft links
2024-05-30 09:28:16 +00:00
Eugene Kabanov
1cdb32222b
VC: Add block scoring ( #6303 )
...
* Add scoring for blocks.
* Update Alltests.
2024-05-29 10:07:39 +00:00
Etan Kissling
0efc81d96d
use correct minimum size when reading block / state headers ( #6263 )
...
`sizeof` also includes padding between fields, while SSZ defines
`fixedPortionSize` (on type) or `sszSize` (on value) to denote
required bytes to encode. Switch forked block/state readers to SSZ size.
As blocks/states are much larger than the padding, this doesn't affect
practical use cases but is slightly more correct this way.
2024-05-25 07:30:05 +02:00
tersec
c7bf6fb542
rm debugRaiseAssert; clean up several debugComments ( #6308 )
...
* rm debugRaiseAssert; clean up several debugComments
* exception linting
2024-05-23 23:51:09 +02:00
tersec
a7b5741163
Merge remote-tracking branch 'origin/stable' into unstable
2024-05-23 13:29:21 +00:00
tersec
a98c119b98
version v24.5.1
2024-05-23 10:52:55 +00:00
tersec
73f56b5026
version v24.5.0
2024-05-23 03:44:54 +00:00
tersec
b56a671122
fix most ConvFromXtoItselfNotNeeded hints and unhide remaining ones ( #6307 )
2024-05-22 13:56:37 +02:00
tersec
708b23f084
rm unused produceBlockV2Plain() RPC signature ( #6304 )
2024-05-22 07:47:03 +02:00
tersec
3e6990ccc4
rm unused ProduceBlockResponseV2 type ( #6302 )
2024-05-22 04:52:35 +02:00
tersec
dd452f71d3
rm outdated/semi-duplicate execution layer withdrawal request processing ( #6301 )
2024-05-22 01:59:11 +02:00
Eugene Kabanov
34853ca155
VC: Deprecate fallback path to produceBlockV2, use produceBlockV3 always. ( #6300 )
...
* Remove fallback path to publishBlockV2(), use publishBlockV3().
* Update AllTests.md.
2024-05-22 00:03:38 +02:00
Eugene Kabanov
d7c5bc0397
[VC] Add builderBoostFactor support. ( #6294 )
...
* Initial commit.
* Replace localBlockValueBoost with builderBoostFactor.
* Add test.
* Update AllTests.
* Update options.md
* Recover `localBlockValueBoost` for BN-only mode.
* Address review comments.
2024-05-19 04:49:43 +03:00
Jacek Sieka
d191b35e2e
electra: attestatoin sending ( #6296 )
2024-05-17 17:34:46 +02:00
Jacek Sieka
045c4cf185
electra attestation updates ( #6295 )
...
* electra attestation updates
In Electra, we have two attestation formats: on-chain and on-network -
the former combines all committees of a slot in a single committee bit
list.
This PR makes a number of cleanups to move towards fixing this -
attestation packing however still needs to be fixed as it currently
creates attestations with a single committee only which is very
inefficient.
* more attestations in the blocks
* signing and aggregation fixes
* tool fix
* test, import
2024-05-17 15:37:41 +03:00
tersec
826bf4c3ee
be more optimistic about electra
2024-05-17 07:13:30 +00:00
Eugene Kabanov
41db536d63
Fix el-manager warnings and issues. ( #6293 )
2024-05-16 13:54:51 +02:00
tersec
4355f81731
temporarily disable optimistic block hashing on electra
2024-05-16 11:17:31 +00:00
tersec
c7b916fe7b
rename depositReceipts/exits to depositRequests/withdrawalRequests
2024-05-16 00:23:00 +00:00
tersec
b9151d43ce
produce blobs in electra
2024-05-15 14:49:57 +00:00
tersec
111e5d8006
add push raises to nimbus_light_client
2024-05-15 14:01:52 +00:00
tersec
69f13eaa51
add electra gossip transition
2024-05-15 13:30:49 +00:00
Eugene Kabanov
0b8cb4efc4
Add metrics to all RPC {state_id} endpoints. ( #6282 )
2024-05-15 09:52:57 +03:00
tersec
d0400e408b
rename ExitV1 to WithdrawalRequestV1 ( #6290 )
2024-05-15 06:44:52 +02:00
tersec
c0601608f9
rm future_combinators ( #6289 )
2024-05-14 22:14:26 +02:00
tersec
0ca5211f6a
enable nbn electra block processing ( #6288 )
2024-05-14 20:29:03 +02:00
Eugene Kabanov
e6b9bfc9e4
el_manager initial refactor. ( #6228 )
...
* Initial commit.
* Address review comments and fix missing primitive.
* Fix developer build.
* More asyncraises updates.
* Refactor and optimize forkchoiceUpdated() and sendNewPayload().
* Fix runtime assertion.
* Refactor getPayload().
2024-05-14 21:03:30 +03:00
tersec
c1b9e82502
electra attestation gossip plumbing ( #6287 )
2024-05-14 19:01:26 +03:00
tersec
1c3aaa7be2
add (Signed)AggregateAndProof SSZ tests ( #6285 )
2024-05-14 13:51:06 +02:00
tersec
9c669cf57a
some debugRaiseAssert to debugComment; unblock some spec tests ( #6284 )
2024-05-14 12:19:24 +03:00
tersec
3f972a2ca5
add some support for electra aggregated attestations ( #6283 )
2024-05-14 06:12:35 +02:00
Etan Kissling
87605d08a7
bump `nim-eth` to `c482b4c5b658a77cc96b49d4a397aa6d98472ac7` ( #6281 )
...
- Introduce wrapper type for EIP-4844 transactions
2024-05-13 17:58:47 +02:00
tersec
6b8061b5d6
automated consensus spec URL updating to v1.5.0-alpha.2 ( #6279 )
2024-05-09 05:03:10 +00:00
tersec
963e0bb92b
use EF consensus spec v1.5.0-alpha.2 test vectors ( #6272 )
2024-05-08 04:43:05 +02:00
tersec
1b30dcc165
initial electra attestation pool changes; electra block_sim ( #6255 )
2024-05-07 15:01:51 +00:00
tersec
c41fe698cf
small datatypes cleanups ( #6266 )
2024-05-06 10:21:37 +02:00
Eugene Kabanov
a6f68d3edc
Fix POST to /eth/v2/beacon/blocks unable to verify correct block signature. ( #6261 )
2024-05-06 04:15:17 +00:00
Eugene Kabanov
484f48953b
Fix POST to eth/v1/builder/blinded_blocks missing header Eth-Consensus-Version. ( #6256 )
...
* Fix submitBlindededBlock() do not send consensus-version HTTP header.
* Address review comments.
2024-05-03 01:08:16 +00:00
Eugene Kabanov
c9b54bf1aa
Enable IPv6 for discovery5 using dualstack support. ( #6242 )
...
* Make listen-address default to use dualstack.
* Use correct newProtocol().
* Bump nim-eth.
* Bump nim-eth one more time.
* Use `*` instead of IPv6 address for dualstack sockets.
* Bump chronos and nim-eth.
* Use new constructor.
* Fix listenAddress should be Opt[T] not Option[T].
* Fix options.md.
2024-05-01 19:29:39 +00:00
Eugene Kabanov
f3da063510
Fix VC not properly handled getAggregatedAttestation's 404 error. ( #6254 )
...
* Fix VC not properly handled getAggregatedAttestation's 404 error.
* Update AllTests.
2024-05-01 15:32:28 +00:00
tersec
1ab6f1654f
Merge remote-tracking branch 'origin/stable' into unstable
2024-04-29 06:08:43 +00:00
tersec
e70fa6d6de
rename ElectraIndexedAttestation/ElectraAttesterSlashing for consistency ( #6252 )
2024-04-29 04:19:10 +02:00
tersec
f20a21c015
v24.4.0
2024-04-29 01:00:13 +00:00
tersec
abc8bbbf23
add EF consensus spec test Electra fork and transition fixtures ( #6251 )
2024-04-28 16:13:17 +02:00
tersec
a66876c8e5
add EF consensus spec test Electra block sanity fixtures ( #6250 )
...
* add EF consensus spec test Electra block sanity fixtures
* move process_consolidation/process_deposit_receipt before usage
2024-04-28 09:15:03 +00:00
tersec
302f645a01
use EF consensus spec v1.5.0-alpha.1 test vectors ( #6249 )
2024-04-28 03:33:44 +00:00
tersec
6119389c3a
add EF consensus spec test Electra attestation operations fixture ( #6248 )
2024-04-28 00:52:14 +00:00
tersec
8f0a61b964
add EF consensus spec test Electra execution payload operations fixture ( #6246 )
2024-04-26 16:02:15 +00:00
tersec
63d00931a3
add EF consensus spec test Electra deposit receipt operations fixture ( #6245 )
2024-04-26 12:39:09 +00:00
tersec
34ba05f4d3
add EF consensus spec test Electra deposits operations fixture ( #6243 )
2024-04-26 07:18:44 +00:00
tersec
b0f58a58b6
add EF consensus spec test Electra consolidation operations fixture ( #6235 )
2024-04-25 18:50:54 +00:00
tersec
8c4ddd64c0
add EF consensus spec test attester slashing, proposer slashing, voluntary exit, and execution layer withdrawal request tests ( #6234 )
2024-04-25 08:41:17 +00:00
tersec
f53271eaaa
add rest of EF consensus spec test Electra epoch transition fixture(s) ( #6232 )
2024-04-24 12:28:47 +00:00
tersec
e6e95cbab7
add Electra slot sanity tests ( #6230 )
2024-04-23 07:58:32 +00:00
tersec
eb997f4e1f
add 10 sub-test-fixtures for electra epoch transitions; use v2.0.4 for Nim 2.x ( #6229 )
2024-04-23 01:15:55 +00:00
tersec
87452374e4
add Electra SSZ object test fixture ( #6225 )
2024-04-22 09:00:38 +00:00
tersec
d139c92df9
explicitly scope AttesterSlashing and IndexedAttestation types to phase0 ( #6224 )
2024-04-21 05:49:11 +00:00
tersec
caa3b73dbb
move AttesterSlashing and IndexedAttestation from base to phase0 ( #6223 )
2024-04-21 01:17:02 +00:00
tersec
41f8400f97
fix Electra light client objects; use version-2-0 for Nim again ( #6222 )
2024-04-19 19:20:45 +00:00
careworry
2ec82fe3ce
chore: remove repetitive words ( #6219 )
...
Signed-off-by: careworry <worrycare@outlook.com>
2024-04-19 11:31:15 +00:00
tersec
73738c702c
use consensus spec v1.5.0-alpha.0 test vectors; use Nim v2.0.4 specifically for 2.0.x ( #6221 )
2024-04-19 02:55:58 +00:00
tersec
e4b0e24614
add compounding withdrawal helpers ( #6217 )
2024-04-18 10:12:37 +00:00
tersec
645e627b03
add new Electra beacon chain containers and presets ( #6216 )
...
* add new Electra beacon chain containers and presets
* re-enable attestations in electra state transition
2024-04-18 07:30:01 +00:00
tersec
0132f5d689
some consensus spec v1.4.0 spec URL updates ( #6215 )
2024-04-18 03:00:04 +02:00
tersec
603c83522e
explicitly refer to phase0.{Attestation,TrustedAttestation} rather than sans module name ( #6214 )
2024-04-17 20:44:29 +00:00
tersec
867995acd1
some consensus spec v1.4.0 spec URL updates ( #6208 )
2024-04-17 05:51:16 +02:00
tersec
bb2ca747bc
move Attestation-related types/logging from base to phase0 types ( #6207 )
2024-04-16 19:01:30 +00:00
tersec
bd3c9af0f8
implement EIP-7002 ( #6206 )
...
* implement EIP-7002
* fix linting
2024-04-16 18:09:39 +00:00
Etan Kissling
c7d5ad78e1
avoid `--gc:arc` issue in validator key caching ( #6203 )
...
The current implementation of the validator key cache as introduced in
#5883 leads to issues when compiling with `--gc:arc`. Namely, the assert
in `injectdestructors.nim` > `destructiveMoveVar` is triggered:
```nim
assert n.kind != nkSym or not hasDestructor(c, n.sym.typ)
```
`cached == nkSym`, and `n.sym.typ == ref HashedValidatorPubKeyItem` with
`hasDestructor(c, n.sym.typ) == true`.
Inlining the `addr ...[]` avoids the problem and allows `--gc:arc`
compilation as part of LC wasm demo project.
Compilation command:
```sh
nim c \
-d:disable_libbacktrace \
-d:disableMarchNative \
-d:disableLTO \
-d:emscripten \
-d:release \
-d:useGcAssert \
-d:useSysAssert \
--debuginfo:off \
--nimcache:nimcache \
--os:linux \
--cpu:wasm32 \
--cc:clang \
--clang.exe:emcc \
--clang.linkerexe:emcc \
--gc:arc \
--exceptions:goto \
--define:noSignalHandler \
--define:danger \
--panics:on \
--passC:-fpic \
--passL:-Os \
--passL:-fpic \
--passC:'-pthread' \
--passL:'-pthread' \
--passC:'-sASSERTIONS' \
--passL:'-sASSERTIONS' \
--passC:'-sINITIAL_MEMORY=256MB' \
--passL:'-sINITIAL_MEMORY=256MB' \
--passC:'-sSTACK_SIZE=128MB' \
--passL:'-sSTACK_SIZE=128MB' \
--passC:'-sUSE_PTHREADS=1' \
--passL:'-sUSE_PTHREADS=1' \
--passC:'-sPTHREAD_POOL_SIZE_STRICT=0' \
--passL:'-sPTHREAD_POOL_SIZE_STRICT=0' \
--passL:'-sEXPORTED_FUNCTIONS="[_free, _malloc, _NimMain, _ETHRandomNumberCreate, _ETHConsensusConfigCreateFromYaml, _ETHConsensusConfigGetConsensusVersionAtEpoch, _ETHBeaconStateCreateFromSsz, _ETHBeaconStateDestroy, _ETHBeaconStateCopyGenesisValidatorsRoot, _ETHRootDestroy, _ETHForkDigestsCreateFromState, _ETHBeaconClockCreateFromState, _ETHBeaconClockGetSlot, _ETHLightClientStoreCreateFromBootstrap, _ETHLightClientStoreDestroy, _kETHLcSyncKind_UpdatesByRange, _kETHLcSyncKind_FinalityUpdate, _kETHLcSyncKind_OptimisticUpdate, _ETHLightClientStoreGetNextSyncTask, _ETHLightClientStoreGetMillisecondsToNextSyncTask, _ETHLightClientStoreProcessUpdatesByRange, _ETHLightClientStoreProcessFinalityUpdate, _ETHLightClientStoreProcessOptimisticUpdate, _ETHLightClientStoreGetFinalizedHeader, _ETHLightClientStoreIsNextSyncCommitteeKnown, _ETHLightClientStoreGetOptimisticHeader, _ETHLightClientStoreGetSafetyThreshold, _ETHLightClientHeaderCreateCopy, _ETHLightClientHeaderDestroy, _ETHLightClientHeaderCopyBeaconRoot, _ETHLightClientHeaderGetBeacon, _ETHBeaconBlockHeaderGetSlot, _ETHBeaconBlockHeaderGetProposerIndex, _ETHBeaconBlockHeaderGetParentRoot, _ETHBeaconBlockHeaderGetStateRoot, _ETHBeaconBlockHeaderGetBodyRoot, _ETHLightClientHeaderCopyExecutionHash, _ETHLightClientHeaderGetExecution, _ETHExecutionPayloadHeaderGetParentHash, _ETHExecutionPayloadHeaderGetFeeRecipient, _ETHExecutionPayloadHeaderGetStateRoot, _ETHExecutionPayloadHeaderGetReceiptsRoot, _ETHExecutionPayloadHeaderGetLogsBloom, _ETHExecutionPayloadHeaderGetPrevRandao, _ETHExecutionPayloadHeaderGetBlockNumber, _ETHExecutionPayloadHeaderGetGasLimit, _ETHExecutionPayloadHeaderGetGasUsed, _ETHExecutionPayloadHeaderGetTimestamp, _ETHExecutionPayloadHeaderGetExtraDataBytes, _ETHExecutionPayloadHeaderGetBaseFeePerGas, _ETHExecutionPayloadHeaderGetBlobGasUsed, _ETHExecutionPayloadHeaderGetExcessBlobGas, _ETHExecutionBlockHeaderCreateFromJson, _ETHExecutionBlockHeaderDestroy, _ETHExecutionBlockHeaderGetTransactionsRoot, _ETHExecutionBlockHeaderGetWithdrawalsRoot, _ETHTransactionsCreateFromJson, _ETHTransactionsDestroy, _ETHTransactionsGetCount, _ETHTransactionsGet, _ETHTransactionGetHash, _ETHTransactionGetFrom, _ETHTransactionGetNonce, _ETHTransactionGetMaxPriorityFeePerGas, _ETHTransactionGetMaxFeePerGas, _ETHTransactionGetGas, _ETHTransactionIsCreatingContract, _ETHTransactionGetTo, _ETHTransactionGetValue, _ETHTransactionGetInputBytes, _ETHTransactionGetBytes, _ETHTransactionGetEip6493Root, _ETHTransactionGetEip6493Bytes, _ETHTransactionGetNumEip6493SnappyBytes, _ETHReceiptsCreateFromJson, _ETHReceiptsDestroy, _ETHReceiptsGet, _ETHReceiptHasStatus, _ETHReceiptGetBytes, _ETHReceiptGetEip6493Bytes, _ETHReceiptGetNumEip6493SnappyBytes]"' \
--passL:'-sEXPORTED_RUNTIME_METHODS="[lengthBytesUTF8, stringToNewUTF8]"' \
--passL:'-Wl,--no-entry' \
--noMain:on \
--passL:'-o libnimbus_lc.js' \
nimbus-eth2/beacon_chain/libnimbus_lc/libnimbus_lc.nim
```
2024-04-16 11:47:18 +02:00
Eugene Kabanov
c5f04dd237
produceBlockV3 call should send `execution_payload_blinded` value as boolean. ( #6204 )
...
* Fix `execution_payload_blinded` in produceBlockV3 response should be boolean not string.
* Address review comments.
2024-04-15 23:08:41 +00:00
Etan Kissling
c57fcb426a
bump `nim-libp2p` to `89cad5a3ba9088cc721682469a10917903da25a0` ( #6199 )
...
- add support for setting protocol handlers with `{.raises.}` annotation
- fix: valueOr and withValue utilities
- fix: remove explicit param from GossipSubParams constructor
2024-04-12 11:12:44 +02:00
tersec
e51c5ec783
add Electra blob support to block/blob quarantines, block processor, and request manager ( #6201 )
2024-04-11 09:31:39 +00:00
tersec
205d63a897
fill in executionpayload for/from GetPayloadV4 ( #6200 )
2024-04-10 23:34:34 +00:00
Etan Kissling
9bffc51cf6
allow frontfilling finalized CP block from era file ( #6164 )
...
Add support for using era file for the initial checkpoint block.
This should also avoid an error when the beacon node is restarted
before the backfill process has made any progress (#6059 ).
2024-04-10 14:11:07 +02:00
Etan Kissling
a561024d88
rank peers by their score instead of their memory address ( #6149 )
...
The `<` function to compare peers was not exported, leading to the same
peer be acquired over and over again until kick. `mixin` doesn't pull it
into `peerCmp` without `*` export, and with the export no mixin needed.
2024-04-10 14:09:37 +02:00
tersec
e7dede344a
bump nim-web3 to get updated Pectra GetPayloadV4 types ( #6191 )
2024-04-10 11:38:38 +02:00
tersec
1bf4058e22
add Electra support to beacon API produceBlindedBlock and produceBlockV3 endpoints; add further VC publish(Blinded)Block Electra support ( #6190 )
2024-04-10 10:54:00 +02:00
tersec
8a30cffbcc
initial VC Electra publishBlock support ( #6189 )
2024-04-09 16:54:05 +02:00
tersec
749a45695f
support engine_newPayloadV4 ( #6188 )
2024-04-09 12:44:03 +02:00
tersec
6ce5d5814c
support electra block proposals for internal BN validators ( #6187 )
2024-04-09 12:04:33 +02:00
tersec
ba45a1821c
implement Electra beacon API publishBlindedBlock ( #6185 )
2024-04-08 18:03:20 +02:00
Etan Kissling
41a3b62fe2
update `wss_sim` for Bellatrix, Capella and Deneb ( #6170 )
...
The `wss_sim` was not properly maintained since Bellatrix. The missing
functionality is now added, including:
- Bellatrix: Connect to an EL for execution payload production
- Capella: Correct withdrawals processing, is mandatory to do
- Deneb: Dump blob sidecars into the output directory
See https://ethresear.ch/t/insecura-my-consensus-for-the-pyrmont-network/11833
2024-04-08 15:28:46 +02:00
tersec
97bfca4b88
implement Electra beacon API getBlindedBlock ( #6183 )
2024-04-08 14:49:03 +02:00
tersec
361be082ae
add Electra toSignedBlindedBlock tests ( #6182 )
2024-04-08 10:34:15 +02:00
tersec
937cc62b85
block_sim runs electra ( #6181 )
2024-04-07 09:58:11 +02:00
tersec
27921406e9
remove some debugRaiseAsserts and fill in Electra functionality ( #6179 )
2024-04-06 15:11:47 +02:00
tersec
0d534224b3
remove some debugRaiseAsserts and fill in Electra functionality ( #6178 )
2024-04-06 07:46:02 +00:00
tersec
06894dd2f6
remove some debugRaiseAsserts and fill in Electra functionality ( #6177 )
2024-04-05 21:30:06 +02:00
Etan Kissling
86a265308a
filter out `nil` values when iterating peers ( #6151 )
...
Iterating peers should only yield peers present in registry, otherwise
`nil` pointers are returned and depending on comparison function it will
break, see #6149 .
2024-04-05 16:38:04 +02:00