6449 Commits

Author SHA1 Message Date
Etan Kissling
d8b8aee7b7
avoid style check issue with syncAggregate (#6013)
Style check confuses `func syncAggregate` because it accesses some other
object's `sync_aggregate` member in the body. Rename the func to avoid.
2024-03-02 02:54:37 +01:00
tersec
8015c0bb47
rm spec/forks capella_mev usage which had been for remote signer (#6009) 2024-03-02 01:12:48 +01:00
tersec
e12f5e0bba
rm more Capella builder API remote signer support (#6012) 2024-03-01 22:29:47 +00:00
Etan Kissling
45c283c256
bump nim-sqlite3-abi to 6d99f874d610d9ddac3c5b63ca5d0a341049c2ed (#5976)
- validate SHA3 hash
- bump `sqlite-amalgamation` to `3.41.2`
- bump `sqlite-amalgamation` to `3.42.0`
- apply nimble update and git commit in `update.sh`
- bump `sqlite-amalgamation` to `3.43.0`
- bump `sqlite-amalgamation` to `3.43.1`
- bump `sqlite-amalgamation` to `3.43.2`
- bump `sqlite-amalgamation` to `3.44.0`
- bump `sqlite-amalgamation` to `3.44.1`
- bump `sqlite-amalgamation` to `3.44.2`
- bump `sqlite-amalgamation` to `3.45.0`
- bump `sqlite-amalgamation` to `3.45.1`
2024-03-01 18:08:53 +01:00
tersec
0d48535f9a
refactor get_flag_and_inactivity_deltas() loop body to use per-validator get_flag_and_inactivity_delta() (#6007) 2024-03-01 16:31:25 +00:00
Etan Kissling
a802e68c9f
handle exceptions in generate_makefile tool (#5985)
Update `generate_makefile` to produce sensible error message in all
exceptional situations, instead of just some of them. These may surface
as one of the first things to someone getting started with the repo.
2024-03-01 16:15:23 +01:00
tersec
84034c0379
rm Capella builder API-related remote signer support (#6003) 2024-03-01 05:30:09 +00:00
tersec
684de046db
switch Builder API validator registration error to warning (#6005) 2024-03-01 06:25:29 +01:00
tersec
d7e9ff2a98
fix some stylecheck consistency Name hints in ncli/ and research/ (#6004) 2024-03-01 05:59:34 +01:00
tersec
f076502e25
rm Capella builder API bid types and blinded block construction (#6002) 2024-03-01 00:02:13 +00:00
Etan Kissling
f5e9d3ffe4
add trivial {.push raises: [].} to research and test folders (#5988)
Annotate the `research` and `test` files for which no further changes
are needed to successfully compile them, to not interfere with periodic
tasks such as spec reference bumps.
2024-02-29 13:24:08 +00:00
tersec
5da2bcd243
rm Capella builder API REST calls (#5997) 2024-02-29 12:37:08 +00:00
Etan Kissling
728f65080f
remove an unused metric in rest_remote_signer_calls (#5999)
The `nbc_remote_signer_communication_errors` metric is unused. Remove to
avoid verbose `XDeclaredButNotUsed` hint.
2024-02-29 12:00:15 +00:00
Jacek Sieka
21601f59e2
ssz: bump (#5996)
Avoids 25k allocations and >100mb memory overhead when saving a state
(etc everywhere else)
2024-02-29 12:03:10 +01:00
omahs
b66e6b61bb
fix link (#6000) 2024-02-29 11:01:05 +00:00
Etan Kissling
23fa8d0c70
handle scanf exceptions in test_fixture_ssz_generic_types (#5993)
`scanf` apparently has both a `bool` return as well as raising random
exceptions depending on what functions get called by the `macro`.
To make this explicit, catch the `ValueError` from the generated
`parseInt` call, to separate `scanf` behaviour from the actual SSZ
test logic. In the end, it mostly doesn't matter as there are some
`doAssert wasMatched` on the next line (not everywhere though).
But it still makes the `scanf` internals explicit, so is clearer.
2024-02-29 10:47:00 +00:00
Etan Kissling
f4ff438aab
explicitly mention {.raises.} in tests folder (#5990)
Add `{.raises.}` annotations to `tests` files where needed to enable
`{.push raises: [].}`. Avoids interfering with periodic changes such as
spec version bumps, and avoids special casing folders when editing.
The effort to maintain `{.raises.}` is trivial after the initial round.
2024-02-29 10:28:32 +00:00
Etan Kissling
794ec9ed19
use closureScope with {.raises.} in test_peer_pool (#5992)
`test_peer_pool` is a bit different from the other tests as it uses
`closureScope` which doesn't play well with `{.push raises: [].}`.
Define an overload instead that allows passing `{.raises.}` to the
`template`. This allows using `unittest2`'s exception handler without
having to refactor the test.
2024-02-29 00:57:19 +00:00
Etan Kissling
078f4ac347
assert exceptions that statically cannot occur in test code (#5989)
There are some spurious exceptions that statically cannot occur.
Add `raiseAssert` for these.
2024-02-28 20:15:49 +00:00
tersec
84b752c7a1
rm REST blinded forked Capella block support (#5994) 2024-02-28 18:27:26 +00:00
Etan Kissling
ecf175856f
bump actions/checkout and actions/cache to v4 (#5971)
Typically, mixing different versions of GitHub actions may lead to hard
to fix issues. As many libraries have been updated to use actions v4,
also bump our own `actions/checkout@v2`, `actions/checkout@v3`,
`actions/cache@v2` and `actions/cache@v3` to their `@v4` equivalents.
2024-02-28 19:04:34 +01:00
Etan Kissling
57f4886d39
improve cleanup in error situation in slashing protection tests (#5991)
If removing a file files during `slashing_protection/test_fixtures.nim`,
still continue to try to remove the other ephemeral test files.
2024-02-28 18:28:04 +01:00
Etan Kissling
d77af57ce0
bump nim-websock to 6db6088792bde0998c2b84c2d8e231f1d0507e49 (#5980)
- test refc in CI in Nim 2.0 and later
2024-02-28 16:39:19 +00:00
Etan Kissling
80d532abd7
avoid forgetting to quit in os_ops tools if log fails (#5986)
`stderr.write` may fail, e.g., if no tty is connected, which may happen
in some CI configurations. Discard such failures and continue quitting
instead of raising the error.
2024-02-28 16:04:34 +00:00
Etan Kissling
a91366734b
remove unnecessary exports in eth2_discovery (#5987)
The exports in `eth2_discovery` produce deprecation warnings as they
refer to `close`, `closeWait` and so on. Turns out that they are not
necessary at all. The `Eth2DiscoveryProtocol` is even already exported
two lines above using `*` marker...
2024-02-28 13:34:16 +00:00
Etan Kissling
4a74ef9cba
add {.raises.} annotations to test_fixture_operations (#5984)
Some more progress in making exception flow explicit.
2024-02-28 11:54:29 +00:00
Etan Kissling
ac11f50b77
bump nim-toml-serialization to 24bbfcb8e4e256883fc959dc6f5c15fe7a84fca5 (#5979)
- Upgrade github actions to v4
2024-02-28 11:19:59 +00:00
tersec
2b91b66679
rm REST Capella builder API support (#5981) 2024-02-28 01:10:19 +00:00
Etan Kissling
1f48795e91
bump nim-taskpools to d4c43137c0590cb47f893a66ca8cb027fa6c217e (#5978)
- test refc in CI in Nim 2.0 and later
2024-02-27 23:55:18 +00:00
Etan Kissling
80ed64d2ff
bump nim-stint to 7bb0ccc7842577243edc3b8d61f75bf498551a7a (#5977)
- Upgrade github actions to v4
2024-02-27 22:49:28 +00:00
Etan Kissling
170036af18
bump nim-snappy to 984bdad602e977ea6c461c28201422fdeeccfb7c (#5975)
- use non-EOL macOS version for GitHub Actions CI
2024-02-27 20:46:31 +00:00
Etan Kissling
3a74821d1e
bump nim-results to dfeef8ba705d7bab3e2073bb44549f0a2562df70 (#5974)
- Formatted with nph v0.4-0-g537f1ce
- Add 592e0dcba157da84e2cced2309fa27dc67b667f3 to .git-blame-ignore-revs
- restore 1.2 compat in tests
2024-02-27 21:06:42 +01:00
Etan Kissling
a38e17cd8d
bump nim-presto to 223aadeb82d35b57e6dae99f0b325ec6345ce7ff (#5973)
- test refc in CI in Nim 2.0 and later
- use non-EOL macOS version for GitHub Actions CI
- Add implementation of PRESTO middleware.
2024-02-27 19:36:37 +00:00
Etan Kissling
0356eda0db
bump nim-nat-traversal to d423ff9e436b8a8219926f4e3350b09108e42847 (#5972)
- bump `miniupnp` to `miniupnpc_2_2_6`
2024-02-27 18:02:23 +00:00
Etan Kissling
9d6be476cf
bump nim-kzg4844 to 39bee1b4c91a476ddcce04cd31e095063e993c2c (#5970)
- Upgrade github actions to v4
2024-02-27 17:48:56 +00:00
Etan Kissling
78b1514745
bump nim-blscurve to d091a579a2e7c4668140e675a6fb2c78b8c6dc57 (#5969)
- remove MIRACL Core backend
2024-02-27 16:50:10 +00:00
Etan Kissling
f1076bacaa
bump geth to v1.13.14 (#5968)
- https://github.com/ethereum/go-ethereum/releases/tag/v1.13.14
2024-02-27 15:57:18 +00:00
Jacek Sieka
2ea97e34bc
Merge remote-tracking branch 'origin/stable' into unstable 2024-02-27 14:03:41 +01:00
Eugene Kabanov
95280e6766
Fix stint parser to raise ValueError instead of RangeDefect. (#5967) 2024-02-27 03:46:12 +01:00
Zahary Karadjov
fc9c72f0eb
Version v24.2.2 v24.2.2 2024-02-27 03:24:30 +02:00
Zahary Karadjov
4a8d271c35
Bump nim-stint to e639ba700cb83a6b22e5b5a1053bea2820c8b4f6
Prevents RangeDefects when parsing invalid numeric values
2024-02-27 03:06:52 +02:00
Etan Kissling
26d0281e54
fix incorrect config validation regression from #5959 (#5966)
During refactoring of #5959, some implicit `return` were overlooked,
resulting in spurious `err()` being returned without message.

```
{"lvl":"WRN","ts":"2024-02-26 10:12:20.469+00:00","msg":"Beacon nodes report different configuration values","reason":"","service":"fallback_service","node":"http://127.0.0.1:9303[Nimbus/v24.2.1-4e9bc7-stateofus]","node_index":0,"node_roles":"AGBSDT"}
```

Correcting the helpers to return explicit result in all exhaustive
cases so that this cannot happen anymore by accident.
2024-02-26 16:25:12 +02:00
Etan Kissling
4fcfed2f1f
add EIP-7044 support to keymanager API (#5959)
* add EIP-7044 support to keymanager API

When trying to sign `VoluntaryExit` via keymanager API, the logic is not
yet aware of EIP-7044 (part of Deneb). This patch adds missing EIP-7044
support to the keymanager API as well.

As part of this, the VC needs to become aware about:

- `CAPELLA_FORK_VERSION`: To correctly form the EIP-7044 signing domain.
  The fork schedule does not indicate which of the results, if any,
  corresponds to Capella.
- `CAPELLA_FORK_EPOCH`: To detect whether Capella was scheduled.
  If a BN does not have it in its config while other BNs have it,
  this leads to a log if Capella has not activated yet, or marks the BN
  as incompatible if Capella already activated.
- `DENEB_FORK_EPOCH`: To check whether EIP-7044 logic should be used.

Related PRs:

- #5120 added support for processing EIP-7044 `VoluntaryExit` messages
  as part of the state transition functions (tested by EF spec tests).
- #5953 synced the support from #5120 to gossip validation.
- #5954 added support to the `nimbus_beacon_node deposits exit` command.
- #5956 contains an alternative generic version of `VCForkConfig`.

* address reviewer feedback: letter case, module location, double lookup

---------

Co-authored-by: cheatfate <eugene.kabanov@status.im>

* Update beacon_chain/rpc/rest_constants.nim

* move `VCRuntimeConfig` back to `rest_types`

---------

Co-authored-by: cheatfate <eugene.kabanov@status.im>

* fix `getForkVersion` helper

---------

Co-authored-by: cheatfate <eugene.kabanov@status.im>
2024-02-26 16:25:12 +02:00
Etan Kissling
c8adfb2336
use correct signing fork after Deneb when using deposits exit command (#5954)
In #5120, the `nimbus_beacon_node deposits exit` command was updated for
compatibility with EIP-7044, which forces signatures to be made using
`CAPELLA_FORK_VERSION` regardless of the `VoluntaryExit`'s `epoch` after
Deneb is activated.

This update had a regression, as an older mechanism was used to fetch
`RuntimeConfig`, resulting in an encoding issue (#5362). This was then
fixed in #5370, restoring general `deposits exit` functionality.

However, the logic from #5120 has another flaw, as it uses an incorrect
fork version based on the pre-Deneb logic even after Deneb and EIP-7044
are activated. Fix this now, so that `deposits exit` continues to work
correctly after Deneb activates.
2024-02-26 16:25:12 +02:00
Etan Kissling
48a4955e50
fix EIP-7044 implementation when using batch verification (#5953)
In #5120, EIP-7044 support got added to the state transition function to
force `CAPELLA_FORK_VERSION` to be used when validiting `VoluntaryExit`
messages, irrespective of their `epoch`.

In #5637, similar logic was added when batch verifying BLS signatures,
which is used during gossip validation (libp2p gossipsub, and req/resp).
However, that logic did not match the one introduced in #5120, and only
uses `CAPELLA_FORK_VERSION` when a `VoluntaryExit`'s `epoch` was set to
a value `>= CAPELLA_FORK_EPOCH`. Otherwise, `BELLATRIX_FORK_VERSION`
would still be used when validating `VoluntaryExit`, e.g., with `epoch`
set to `0`, as is the case in this Holesky block:

- https://holesky.beaconcha.in/slot/1076985#voluntary-exits

Extracting the correct logic from #5120 into a function, and reusing it
when verifying BLS signatures fixes this issue, and also leverages the
exhaustive EF test suite that covers the (correct) #5120 logic.

This fix only affects networks that have EIP-7044 applied (post-Deneb).

Without the fix, Deneb blocks with a `VoluntaryExit` with `epoch` set to
`< CAPELLA_FORK_EPOCH` incorrectly fail to validate despite being valid.

Incorrect blocks that contain a malicious `VoluntaryExit` with `epoch`
set to `< CAPELLA_FORK_EPOCH` and signed using `BELLATRIX_FORK_VERSION`
_would_ pass the BLS verification stage, but subsequently fail the state
transition logic. Such blocks would still correctly be labeled invalid.
2024-02-26 16:25:12 +02:00
Etan Kissling
c3fe055bd4
fix incorrect config validation regression from #5959 (#5966)
During refactoring of #5959, some implicit `return` were overlooked,
resulting in spurious `err()` being returned without message.

```
{"lvl":"WRN","ts":"2024-02-26 10:12:20.469+00:00","msg":"Beacon nodes report different configuration values","reason":"","service":"fallback_service","node":"http://127.0.0.1:9303[Nimbus/v24.2.1-4e9bc7-stateofus]","node_index":0,"node_roles":"AGBSDT"}
```

Correcting the helpers to return explicit result in all exhaustive
cases so that this cannot happen anymore by accident.
2024-02-26 13:32:01 +01:00
Etan Kissling
4e9bc7f570
add EIP-7044 support to keymanager API (#5959)
* add EIP-7044 support to keymanager API

When trying to sign `VoluntaryExit` via keymanager API, the logic is not
yet aware of EIP-7044 (part of Deneb). This patch adds missing EIP-7044
support to the keymanager API as well.

As part of this, the VC needs to become aware about:

- `CAPELLA_FORK_VERSION`: To correctly form the EIP-7044 signing domain.
  The fork schedule does not indicate which of the results, if any,
  corresponds to Capella.
- `CAPELLA_FORK_EPOCH`: To detect whether Capella was scheduled.
  If a BN does not have it in its config while other BNs have it,
  this leads to a log if Capella has not activated yet, or marks the BN
  as incompatible if Capella already activated.
- `DENEB_FORK_EPOCH`: To check whether EIP-7044 logic should be used.

Related PRs:

- #5120 added support for processing EIP-7044 `VoluntaryExit` messages
  as part of the state transition functions (tested by EF spec tests).
- #5953 synced the support from #5120 to gossip validation.
- #5954 added support to the `nimbus_beacon_node deposits exit` command.
- #5956 contains an alternative generic version of `VCForkConfig`.

* address reviewer feedback: letter case, module location, double lookup

---------

Co-authored-by: cheatfate <eugene.kabanov@status.im>

* Update beacon_chain/rpc/rest_constants.nim

* move `VCRuntimeConfig` back to `rest_types`

---------

Co-authored-by: cheatfate <eugene.kabanov@status.im>

* fix `getForkVersion` helper

---------

Co-authored-by: cheatfate <eugene.kabanov@status.im>
2024-02-26 09:48:07 +01:00
Etan Kissling
00510a9d2f
fix Eth-Consensus-Block-Value reading (#5964)
Fix regression from #5842 where `Eth-Execution-Payload-Value` is parsed
into `consensusValue` instead of `Eth-consensus-Block-Value`. We don't
use those values for now, but fixing avoids hard-to-debug bugs later.
2024-02-26 09:41:41 +01:00
tersec
fef831d92a
rm unused ForkedTrustedBeaconBlock; add some Electra overloads to consensus_object_pools; Electra BeaconBlock gossip support (#5965) 2024-02-26 06:49:12 +00:00
tersec
f65c1121d2
add Electra overloads for spec functions; add Electra block processing (#5963) 2024-02-26 02:38:21 +00:00