Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
154ff88
header stream toggler (#511)
ninaiiad Aug 25, 2026
3e4b78f
move from floodsub to gossipsub for operator p2p (#505)
vladimir-ea Aug 25, 2026
ec755ba
fix(relay): scope the unbundling check to appended txs only (#524)
0w3n-d Aug 26, 2026
7f64ac4
Fix flaky/slow test_duration_into_slot (#522)
0w3n-d Aug 26, 2026
d4a27c5
Withhold V1 getPayload response inside a safety buffer before the cut…
0w3n-d Aug 26, 2026
d702ee0
Fix needless-borrow clippy lint in header_stream.rs (#516)
0w3n-d Aug 26, 2026
5ecade4
Stop mis-routing Gloas submissions to the Electra-shaped validation R…
0w3n-d Aug 26, 2026
3a53b61
Re-arm ChainHead to send a corrective SlotUpdate on late data (#526)
0w3n-d Aug 27, 2026
701970c
add links to tg merge blk msg
0w3n-d Aug 28, 2026
a122a02
Add admin-toggled block_merging_enabled kill switch (#502)
0w3n-d Aug 29, 2026
6eb2ce1
Add SimRequest::ValidateMerged and dispatch merged blocks through the…
0w3n-d Aug 29, 2026
2d23533
Simulate merged blocks and disable block merging on builder-attributa…
0w3n-d Aug 29, 2026
34a1da0
Wire block-merging re-enable into the admin portal (#513)
0w3n-d Aug 29, 2026
c972bdd
combined adjustable + mergeable submissions (#482)
ckoopmann Aug 29, 2026
e71b386
Select the builder's roles from the supplied configs
0w3n-d Aug 28, 2026
9165a12
Share the simulators' payment and disallow-list helpers from helix-co…
0w3n-d Aug 28, 2026
f252ec9
Convert a submitted payload to an ethrex block and locate its parent
0w3n-d Aug 28, 2026
3824c92
Execute a submitted block and check it against its header
0w3n-d Aug 28, 2026
7f001d9
Check the proposer payment on both the regular and merged paths
0w3n-d Aug 29, 2026
ca5b60c
Reject blocks that interact with a blacklisted address
0w3n-d Aug 31, 2026
66cbbfc
Verify the blobs bundle against the block's blob hashes
0w3n-d Aug 31, 2026
feeee12
Serve the SSZ validation routes from the simulation role
0w3n-d Aug 31, 2026
ae18195
Document the builder's two roles and expose the validation port
0w3n-d Aug 31, 2026
59ce6d3
Select the building role from a supplied config
0w3n-d Aug 31, 2026
86f7681
Merge beacon payload attributes with relay duties into a slot context
0w3n-d Aug 31, 2026
54ae1fc
Build a block for each slot from the node's mempool
0w3n-d Sep 1, 2026
d2f4d8a
Sign the built block and submit it to the relay
0w3n-d Sep 1, 2026
a5dba0e
Build at each configured offset and resubmit only on a higher value
0w3n-d Sep 1, 2026
21e58b4
Document the builder's third role
0w3n-d Sep 1, 2026
01597b2
Merge the ethrex builder stack into the Gloas stack
0w3n-d Sep 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
122 changes: 45 additions & 77 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ lh-eth2 = { package = "eth2", git = "https://github.com/sigp/lighthouse", rev =
lh-kzg = { package = "kzg", git = "https://github.com/sigp/lighthouse", rev = "f064e9e061997c41658c3544da47627c6db92bc9" }
lh-slot-clock = { package = "slot_clock", git = "https://github.com/sigp/lighthouse", rev = "f064e9e061997c41658c3544da47627c6db92bc9" }
lh-types = { package = "types", git = "https://github.com/sigp/lighthouse", rev = "f064e9e061997c41658c3544da47627c6db92bc9" }
libp2p = { version = "0.56", features = ["macros", "ping", "quic", "floodsub", "secp256k1", "tokio"] }
libp2p = { version = "0.56", features = ["macros", "ping", "quic", "gossipsub", "secp256k1", "tokio"] }
metrics = "0.24.0"
mime_guess = "2"
mockito = "1.1.1"
Expand Down
3 changes: 2 additions & 1 deletion builder.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,11 @@ RUN apt-get update && apt-get install -y \
COPY --from=builder /app/target/release/helix-builder ./

# 9876 merging TCP (relay connections)
# 8552 SSZ block validation (simulation role)
# 8551 authrpc / Engine API (beacon node)
# 8545 http json-rpc
# 30303 devp2p tcp+udp
# 9090 prometheus metrics
EXPOSE 9876 8551 8545 30303/tcp 30303/udp 9090
EXPOSE 9876 8552 8551 8545 30303/tcp 30303/udp 9090

ENTRYPOINT ["/app/helix-builder"]
1 change: 1 addition & 0 deletions config.example.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ block_merging_config:
# - builder_coinbase: "0x0000000000000000000000000000000000000000"
# collateral_safe: "0x0000000000000000000000000000000000000000"
target_get_payload_propagation_duration_ms: 0
get_payload_v1_response_buffer_ms: 800
primev_config: null
discord_webhook_url: null
is_submission_instance: true
Expand Down
3 changes: 3 additions & 0 deletions crates/admin/frontend/src/lib/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ async function apiFetch<T>(path: string, init?: RequestInit): Promise<T> {
export interface Overview {
adjustments_enabled: boolean;
kill_switch_enabled: boolean | null;
block_merging_enabled: boolean | null;
builders_pending_promotion: number;
}

Expand Down Expand Up @@ -107,6 +108,8 @@ export const api = {

setKillSwitch: (enabled: boolean) =>
apiFetch<void>("/api/v1/actions/killswitch", { method: enabled ? "POST" : "DELETE" }),
setBlockMerging: (enabled: boolean) =>
apiFetch<void>("/api/v1/actions/block-merging", { method: enabled ? "POST" : "DELETE" }),
demoteBuilder: (pubkey: string, reason: string) =>
apiFetch<void>(`/api/v1/actions/builders/${pubkey}/demote`, {
method: "POST",
Expand Down
7 changes: 7 additions & 0 deletions crates/admin/frontend/src/pages/Overview.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,13 @@ export default function Overview() {
badText="Engaged — relay halted"
unknown={data.kill_switch_enabled === null}
/>
<StatusTile
label="Block merging"
ok={data.block_merging_enabled !== false}
okText="Enabled"
badText="Disabled"
unknown={data.block_merging_enabled === null}
/>
<StatusTile
label="Bid adjustments"
ok={data.adjustments_enabled}
Expand Down
Loading
Loading