go-ethereum/node
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
..
api.go node: fix vhosts for adminAPI (#32488) 2025-08-25 09:52:54 +08:00
api_test.go build: update to golangci-lint 1.61.0 (#30587) 2024-10-14 19:25:22 +02:00
config.go eth/catalyst: implement EIP-8161 SSZ-REST Engine API transport 2026-03-02 18:40:37 +01:00
config_test.go build: replace tenv linter with usetesting (#31172) 2025-02-21 13:36:18 +01:00
database.go node: do not double-wrap KV stores (#32089) 2025-06-27 15:27:52 +08:00
defaults.go eth/catalyst: implement EIP-8161 SSZ-REST Engine API transport 2026-03-02 18:40:37 +01:00
doc.go build: upgrade to go 1.19 (#25726) 2022-09-10 13:25:40 +02:00
endpoints.go node, rpc: add ReadHeaderTimeout config option (#25338) 2022-08-03 16:50:12 +02:00
errors.go node: remove unused err var (#32398) 2025-08-13 15:08:23 +08:00
jwt_auth.go node, rpc: add JWT auth support in client (#24911) 2022-09-02 17:40:41 +02:00
jwt_handler.go eth/catalyst: implement EIP-8161 SSZ-REST Engine API transport 2026-03-02 18:40:37 +01:00
lifecycle.go node: refactor package node (#21105) 2020-08-03 19:40:46 +02:00
node.go node: fix problematic function name in comment (#32510) 2025-08-28 21:15:20 +08:00
node_auth_test.go all: replace path.Join with filepath.Join (#29479) 2024-04-08 12:29:49 +03:00
node_example_test.go build: upgrade to go 1.19 (#25726) 2022-09-10 13:25:40 +02:00
node_test.go build: update to golangci-lint 1.61.0 (#30587) 2024-10-14 19:25:22 +02:00
rpcstack.go node: http2 for JSON-RPC API (#33812) 2026-02-12 10:33:12 +01:00
rpcstack_test.go node: http2 for JSON-RPC API (#33812) 2026-02-12 10:33:12 +01:00
utils_test.go all: remove version field from rpc.API 2022-06-27 12:39:46 +02:00