Skip to content

Feature: Use Opt instead of Option in Presto code - #8817

Closed
moigagoo wants to merge 56 commits into
stablefrom
feature/presto_opt
Closed

Feature: Use Opt instead of Option in Presto code#8817
moigagoo wants to merge 56 commits into
stablefrom
feature/presto_opt

Conversation

@moigagoo

Copy link
Copy Markdown
Contributor

Per @arnetheduck's request in status-im/nim-presto#87, Presto allows to use Opt along with Option to denote optional params: status-im/nim-presto#99

This PR utilizes this new ability, replacing Option with Opt where Presto is used.

dependabot Bot and others added 30 commits July 13, 2026 14:19
Bumps [vendor/nim-eth](https://github.com/status-im/nim-eth) from `ccc1d55` to `5125d7c`.
- [Release notes](https://github.com/status-im/nim-eth/releases)
- [Commits](status-im/nim-eth@ccc1d55...5125d7c)

---
updated-dependencies:
- dependency-name: vendor/nim-eth
  dependency-version: 5125d7c92faaa1b14d2278ec769807d4be954690
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Flag isn't used anywhere in code, and it's a "debug-" flag so can be
removed at any time without warning.
Bumps [vendor/nim-bearssl](https://github.com/status-im/nim-bearssl) from `22c6a76` to `7c30702`.
- [Release notes](https://github.com/status-im/nim-bearssl/releases)
- [Commits](status-im/nim-bearssl@22c6a76...7c30702)

---
updated-dependencies:
- dependency-name: vendor/nim-bearssl
  dependency-version: 7c307026d4d86dc560880c6fa716f5e626ff7fc2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [vendor/nim-ssz-serialization](https://github.com/status-im/nim-ssz-serialization) from `38c06c4` to `e7e0cd9`.
- [Commits](status-im/nim-ssz-serialization@38c06c4...e7e0cd9)

---
updated-dependencies:
- dependency-name: vendor/nim-ssz-serialization
  dependency-version: e7e0cd90dd932e658e90b4d40a60f7175c3c0f83
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [vendor/nim-lsquic](https://github.com/vacp2p/nim-lsquic) from `186ec5b` to `0797689`.
- [Release notes](https://github.com/vacp2p/nim-lsquic/releases)
- [Commits](vacp2p/nim-lsquic@186ec5b...0797689)

---
updated-dependencies:
- dependency-name: vendor/nim-lsquic
  dependency-version: '079768948ac03d8f2384e03045a090cb88aeb7d9'
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore: bump libp2p to 2.1.5

* chore: revert .gitmodules branch change on nim-libp2p
Extra bytes beyond the `n` SSZ bytes in a Req/Resp request are required
to invalidate the prior request:

- ethereum/consensus-specs#1606

Should be fine on all of Mplex, Yamux and Quic, i.e., the protocol
requires the sender to explicitly half-close their end of the stream,
so we can always read the EOF explicitly on the reading end.

If there's a disconnect between the end of the request or the EOF,
the regular 10 second read timeout would eventually hit.

Impact is potentially a tiny higher latency before requests are answered
as we wait for 1 more signal that may or may not be combined with the
last request byte.

Closes #8435
toPeerAddr built /tcp/0 and /udp/0 (quic) dial addresses for a peer ENR
advertising a tcp/tcp6/quic/quic6 port of 0, producing guaranteed-failing
dials. Treat a zero port as absent for the TCP and QUIC dial transports.
Bumps [vendor/nim-lsquic](https://github.com/vacp2p/nim-lsquic) from `0797689` to `b778d16`.
- [Release notes](https://github.com/vacp2p/nim-lsquic/releases)
- [Commits](vacp2p/nim-lsquic@0797689...b778d16)

---
updated-dependencies:
- dependency-name: vendor/nim-lsquic
  dependency-version: b778d16d6f00b47249e2674c23f21aa26b711eb7
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Changed very recently on nimbus-eth1 side.

Co-authored-by: tersec <tersec@users.noreply.github.com>
updateDataColumnSidecarHandlers only bumps one gossip epoch at a time.
Around fork transition multiple can be active, sync the changes to
all of them.
Light client was not raising its fd limit from system default, so that
with too many peers, it could have trouble responding to port checks.
Mirror the file limit setup to match the one from the BN/VC.
The earlier #8411 should further help monitoring peer count.

Closes #8371
--peerdas-supernode was temporarily downgraded to --light-supernode
while the reconstruction flow was improved. Now that reconstruction
works properly, restore the full 128 columns --peerdas-supernode.

Closes #8420
* fix: set sse cb

* fix: underflow

---------

Co-authored-by: tersec <tersec@users.noreply.github.com>
Bumps [vendor/nim-snappy](https://github.com/status-im/nim-snappy) from `27f0254` to `0efc309`.
- [Commits](status-im/nim-snappy@27f0254...0efc309)

---
updated-dependencies:
- dependency-name: vendor/nim-snappy
  dependency-version: 0efc3097f6f83775f55be52ebeee62ec951088c5
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…#8782)

* optimize is_valid_light_client_header default/zero comparisons

* copyright year linting

* don't use short-circuiting operator; cap unrolling to 32
Bumps [vendor/gnosis-chain-configs](https://github.com/gnosischain/configs) from `b88a0a8` to `e542d13`.
- [Commits](gnosischain/configs@b88a0a8...e542d13)

---
updated-dependencies:
- dependency-name: vendor/gnosis-chain-configs
  dependency-version: e542d132340e68fd7922149b145a0d361e1c87d4
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [vendor/nim-eth](https://github.com/status-im/nim-eth) from `5125d7c` to `f185c53`.
- [Release notes](https://github.com/status-im/nim-eth/releases)
- [Commits](status-im/nim-eth@5125d7c...f185c53)

---
updated-dependencies:
- dependency-name: vendor/nim-eth
  dependency-version: f185c530fa01a1cb54884d32a57400e3fdc2dd0f
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
tersec and others added 25 commits July 20, 2026 12:14
* feat: add payload verifier error

* refactor: use payload error

* refactor: verify forky payload on CL

* chore: style

* refactor: error message
`gitFolderExists` uses `dirExists`, which checks the cross-compile
target (not the host) and thus is unavailable under any/standalone
Allows using `clang` on windows/linux and gcc on mac, per the usual
makefile standards
* feat: pass finalized slot for pruning

* feat: prune for rman
Bumps [vendor/nim-presto](https://github.com/status-im/nim-presto) from `b687ef7` to `8549aa9`.
- [Release notes](https://github.com/status-im/nim-presto/releases)
- [Commits](status-im/nim-presto@b687ef7...8549aa9)

---
updated-dependencies:
- dependency-name: vendor/nim-presto
  dependency-version: 8549aa9d872272923825430f5580ba7b1784886e
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* feat: check execution parent block

* fix: execution parent check post-checkpoint-sync

* fix: forks

* refactor: execution parent check

* fix: hashes from previous forks

* refactor: execution checkpoint check

* chore: comment

* chore: comment
Bumps [vendor/nim-http-utils](https://github.com/status-im/nim-http-utils) from `a9ca860` to `1e11ab9`.
- [Release notes](https://github.com/status-im/nim-http-utils/releases)
- [Commits](status-im/nim-http-utils@a9ca860...1e11ab9)

---
updated-dependencies:
- dependency-name: vendor/nim-http-utils
  dependency-version: 1e11ab929058e43c825d92006660c84caea9b1c0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
While light client is significantly ahead, its head overrides the head
from forward sync when interacting with the ELs. That forward sync still
triggers fcU periodically, though, which all get overridden with the
same head information, leading to exact duplicates being sent.

This is changed to only send one duplicate per slot (still needed as the
EL may be restarted or replaced in-between fcU calls). Also fix a race
when switching over from the LC head to the forward sync head, where two
fcU could be in flight simultaneously.

Closes #8041
* split the LC startup, to install in nimbus single bianry

* same style as the beacon node

* remove comments

* rename config
* add inclusion list pool

* comments

* reviews

* address reviews

* conflict

* more reviews

* fixes

* apply suggestions on design

* udpate after rebasing

---------

Co-authored-by: tersec <tersec@users.noreply.github.com>
Bumps [vendor/nim-bearssl](https://github.com/status-im/nim-bearssl) from `7c30702` to `945ac7b`.
- [Release notes](https://github.com/status-im/nim-bearssl/releases)
- [Commits](status-im/nim-bearssl@7c30702...945ac7b)

---
updated-dependencies:
- dependency-name: vendor/nim-bearssl
  dependency-version: 945ac7beb5f18172c04f253e6210ebe9b0545050
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Ensure sigsets are part of async env in batch validation

(Patch was generated by Fable)

Since nim-lang/Nim#23787:

> we lift only those locals that appear in more than one state

Therefore, the `let sigsets = batch[].multiSets.combineAll(verifier)`
variable is only present in the stack, as it is not used anymore after
the `await signal.wait()` further down.

To fix that, either we have to directly take an `addr` (or via template)
but because we only do `baseAddr sigsets` it doesn't extend lifetime
as that's just a regular `func` in stew.

Moving the section that converts the seq to unchecked array into the
task fixes this, as the `task` is still used after the `await`.

Impact here is that some batch verifies may end up reporting a wrong
result, and then fallback to the individual sig check. But we use refc
so it's not deterministically hit.

nim-lang/Nim#26041

* Create the UncheckedArray on the main thread

* Just access sigsets to make the compiler think it's used across awaits
* use fork choice's payload status decision for head payload

* avoid stale headPayload on startup

* implement  for proposer payload decisionn

* update test

* set voted tally

* take payload status as a param

* review: revert 'avoid stale headPayload on startup'

* replace  with

* diff hygiene

* review

* review: early return

* review: use correct spec links

* review: bound PTC vote tally

* skip PTC votes older than the previous slots
Bumps [vendor/nim-lsquic](https://github.com/vacp2p/nim-lsquic) from `b778d16` to `d6d8f81`.
- [Release notes](https://github.com/vacp2p/nim-lsquic/releases)
- [Commits](vacp2p/nim-lsquic@b778d16...d6d8f81)

---
updated-dependencies:
- dependency-name: vendor/nim-lsquic
  dependency-version: d6d8f81d854cbc575f6206aa6d72bcdfbe5d07aa
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
While processing KZG isn't as heavy as BLS, the timing of KZG gossip
overlaps with attestation duties (Fulu) / payload attestations (Gloas).
As soon as we received enough columns, the head event is sent to the VC
but remaining data columns are still streaming in, potentially slowing
down the submission of attestations, e.g., this should help with #7981.

As we already have the infrastructure for offloading the cryptographic
verification work for other gossip topics, it's straightforward to just
reuse the same machinery for KZG proofs. It's a bit simpler than BLS as
we don't batch across columns, but follows the same flow.
* add gloas builder-API execution-payload-bid client

* add getExecutionPayloadBid builder API client

* add helper

* integrate builder-API bid into proposal bid selection

* fix

* request builder-API bids on the correct parent
@github-actions

Copy link
Copy Markdown

Pull requests to the stable branch are not allowed.
Please open your pull request against the unstable branch.
See https://nimbus.guide/contribute.html#build-and-deploy

@github-actions github-actions Bot closed this Jul 28, 2026
@moigagoo moigagoo reopened this Jul 28, 2026
@github-actions

Copy link
Copy Markdown

Pull requests to the stable branch are not allowed.
Please open your pull request against the unstable branch.
See https://nimbus.guide/contribute.html#build-and-deploy

@github-actions github-actions Bot closed this Jul 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.