mirror of
https://github.com/sigp/lighthouse.git
synced 2026-06-30 19:34:37 +00:00
`dequeue_attestations` released votes by splitting the queue at the first entry with `slot >= current_slot`, which assumes the queue is sorted by slot. It isn't: `on_attestation` pushes attestations in arrival order and never sorts. When a future-slot vote sits ahead of a vote that is already due, the split happens at the future-slot vote and the due vote stays stuck behind it and is never applied to fork choice, even after its slot is in the past. The PR current uses a naive solution to solve the bug and also adds regression tests to exercise the bug. There are other competing solutions which can be used which also optimize this path at the same time. https://github.com/sigp/lighthouse/pull/8378 https://github.com/sigp/lighthouse/pull/8378#discussion_r2543322106 Co-Authored-By: hopinheimer <knmanas6@gmail.com> Co-Authored-By: hopinheimer <48147533+hopinheimer@users.noreply.github.com> Co-Authored-By: Michael Sproul <michael@sigmaprime.io>
30 lines
805 B
TOML
30 lines
805 B
TOML
[package]
|
|
name = "fork_choice"
|
|
version = "0.1.0"
|
|
authors = ["Paul Hauner <paul@paulhauner.com>"]
|
|
edition = { workspace = true }
|
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
|
|
[dependencies]
|
|
ethereum_ssz = { workspace = true }
|
|
ethereum_ssz_derive = { workspace = true }
|
|
fixed_bytes = { workspace = true }
|
|
logging = { workspace = true }
|
|
metrics = { workspace = true }
|
|
proto_array = { workspace = true }
|
|
state_processing = { workspace = true }
|
|
superstruct = { workspace = true }
|
|
tracing = { workspace = true }
|
|
types = { workspace = true }
|
|
|
|
[dev-dependencies]
|
|
beacon_chain = { workspace = true }
|
|
bls = { workspace = true }
|
|
criterion = { workspace = true }
|
|
store = { workspace = true }
|
|
tokio = { workspace = true }
|
|
|
|
[[bench]]
|
|
name = "benches"
|
|
harness = false
|