Case study
Hyperledger Besu
Fixed Besu's malformed RLP validation so bad transactions return Invalid params. Added tests for eight payloads; merged and released upstream.
By Mishal ShanavasUpdated

- What was going on
- Besu is a Java Ethereum client. An empty RLP transaction payload was being reported as a server error, even though the client had sent invalid input.
- What I did
- I traced the 0x80 payload to TransactionDecoder, added the missing validation, and wrote parameterized tests for eight malformed inputs. The tests check that none reaches the transaction pool.
- How it turned out
- The fix passed 36 checks and RPC compatibility tests, was merged by the maintainers, and shipped in Besu 26.7.1. One byte caused quite a detour.
Technical details
- Traced an empty RLP transaction payload through the JSON-RPC and transaction-decoding path.
- Changed malformed client input from an internal server error to the correct Invalid params response.
- Added parameterized regression coverage for eight invalid payload shapes and verified the transaction pool stays untouched.
JavaEthereumJSON-RPCRLPJUnit