ethsync.wtf
/Light Client Verifier

Ethereum Light Client — in your browser

This page fetches a real Ethereum block header and its sync committee aggregate signature, then verifies the BLS12-381 cryptography locally in your browser — the server is only used to fetch data, never to assert validity. The one trust assumption: a single finalized checkpoint root used to bootstrap the sync committee. After that, light client verification is fully self-contained with ~24 KB of SSZ committee state.

Library: @noble/curves (pure JS)
Trust assumption: 1 finalized checkpoint root
Data per header: ≈ 160 bytes (sig + bitfield)
Full execution block: ~100 KB–2 MB typical
spec consensus-specs/altair (Deneb-compatible)api beacon-APIs v2provider publicnode.com (mainnet beacon RPC — results depend on provider availability)last validated Apr 2026

Verification steps

Fetch genesis data
01
Fetch current fork version
02
Fetch finalized checkpoint
03
Fetch sync committee pubkeys
04
Fetch latest finality update
05
SSZ hash_tree_root(BeaconBlockHeader)
06
compute_domain(SYNC_COMMITTEE, fork, genesis)
07
compute_signing_root(header_root, domain)
08
Aggregate public keys (G1 sum of signed validators)
09
Hash signing_root → G2 point (hash_to_curve)
10
BLS pairing check: e(G1, σ) == e(pk_agg, H(m))
11

Result

Run verification to see the result