go-ethereum/eth
Giulio 2e357729a3 eth/catalyst: implement EIP-8161 SSZ-REST Engine API transport
Add SSZ-REST as an alternative Engine API transport alongside JSON-RPC.
When enabled via --authrpc.ssz-rest (alias: --rest), Geth starts an
additional HTTP server that accepts SSZ-encoded payloads over REST,
cutting wire size ~50% and eliminating JSON encode/decode overhead.

New files:
- beacon/engine/ssz.go: SSZ encoding/decoding for all Engine API types
- beacon/engine/ssz_test.go: round-trip tests for SSZ codecs
- eth/catalyst/ssz_rest.go: SSZ-REST HTTP server with JWT auth
- eth/catalyst/ssz_rest_test.go: server unit tests

Modified files:
- beacon/engine/types.go: CommunicationChannel, ExchangeCapabilitiesV2Response
- eth/catalyst/api.go: ExchangeCapabilitiesV2, getSupportedProtocols, server wiring
- node/config.go, defaults.go: SszRestEnabled, SszRestPort config
- node/jwt_handler.go: exported NewJWTHandler for reuse
- cmd/utils/flags.go, cmd/geth/main.go: CLI flags

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 18:40:37 +01:00
..
catalyst eth/catalyst: implement EIP-8161 SSZ-REST Engine API transport 2026-03-02 18:40:37 +01:00
downloader eth/protocols/eth: drop protocol version eth/68 (#33511) 2026-02-28 21:43:40 +01:00
ethconfig core: standardize slow block JSON output for cross-client metrics (#33655) 2026-01-28 20:58:41 +08:00
fetcher eth: check for tx on chain as well (#33607) 2026-02-24 11:21:03 +01:00
filters rpc: add a rpc.rangelimit flag (#33163) 2026-01-17 14:34:08 +01:00
gasestimator eth/gasestimator: check ErrGasLimitTooHigh conditions (#32348) 2025-08-05 19:51:16 +08:00
gasprice eth/gasprice: reduce allocations (#33698) 2026-01-28 20:33:04 +01:00
protocols eth/protocols/eth: drop protocol version eth/68 (#33511) 2026-02-28 21:43:40 +01:00
syncer eth/downloader: keep current syncmode in downloader only (#33157) 2025-12-08 22:49:57 +01:00
tracers eth/catalyst: implement testing_buildBlockV1 (#33656) 2026-02-23 15:56:31 +01:00
api_admin.go eth: ignore genesis block on importChain (#27956) 2023-08-21 13:32:34 -04:00
api_backend.go ethstats: report newPayload processing time to stats server (#33395) 2026-01-05 17:49:30 +01:00
api_backend_test.go core/txpool: add eip2681 check for incoming transactions (#32726) 2025-09-25 13:15:12 +02:00
api_debug.go eth/catalyst: add initial OpenTelemetry tracing for newPayload (#33521) 2026-02-17 17:08:57 +01:00
api_debug_test.go core: consolidate BlockChain constructor options (#31925) 2025-06-19 12:21:15 +02:00
api_miner.go miner: refactor the miner, make the pending block on demand (#28623) 2024-03-06 14:45:03 +02:00
backend.go eth: fix targetView==nil case (#33810) 2026-02-10 14:15:18 +01:00
dropper.go eth: fix panic in randomDuration when min equals max (#33193) 2025-11-19 01:54:53 +08:00
handler.go eth: check for tx on chain as well (#33607) 2026-02-24 11:21:03 +01:00
handler_eth.go eth/protocols/eth, eth/protocols/snap: delayed p2p message decoding (#33835) 2026-02-15 21:21:16 +08:00
handler_eth_test.go eth/protocols/eth: drop protocol version eth/68 (#33511) 2026-02-28 21:43:40 +01:00
handler_snap.go eth: check snap satelliteness, delegate drop to eth (#22235) 2021-02-02 10:44:36 +02:00
handler_test.go eth/fetcher: add metadata validation in tx announcement (#33378) 2025-12-11 12:11:52 +08:00
peer.go eth/protocols/eth: implement eth/69 (#29158) 2025-05-16 17:10:47 +02:00
peerset.go eth: stabilize tx relay peer selection (#31714) 2025-08-28 16:05:54 +02:00
state_accessor.go eth/catalyst: add initial OpenTelemetry tracing for newPayload (#33521) 2026-02-17 17:08:57 +01:00
sync.go core/txpool/blobpool: filter blob txs with sidecar version (#32577) 2025-09-15 20:48:59 +08:00
sync_test.go eth/protocols/eth: drop protocol version eth/68 (#33511) 2026-02-28 21:43:40 +01:00