Skip to main content
← Projects

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 Updated
Hyperledger Besu project mark
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