SIGN IN SIGN UP

fix: Render full 48-byte ETH2 deposit BLS pubkey on validator screen

The ETH2 deposit plugin reassembled the 48-byte BLS12-381 G1
compressed pubkey from two parameter chunks, then passed the raw
buffer to getEthDisplayableAddress() to produce the screen string.
That helper is hard-coded for 20-byte Ethereum addresses: its inner
getEthAddressStringFromBinary() loops `for (i = 0; i < 20; i++)` and
silently ignores the trailing 28 bytes of the pubkey. The validator
"deposit address" shown to the user was therefore only the first 20
bytes of the 48-byte pubkey, hex-encoded, leaving the user unable to
verify they were approving the intended validator.

Keep the pubkey stored as raw 48 bytes and render it on screen as
"0x" + bytes_to_lowercase_hex() inside the QUERY_CONTRACT_UI
handler. Lowercase matches the casing the original
getEthDisplayableAddress path produced for the truncated display.

(cherry picked from commit c2e7e3fa4c69c40fb6d4e195199b154bed832a30)
C
Charles-Edouard de la Vergne committed
126f073dc12667ab079a4898d2786146035fcf80
Parent: cf2d0aa
Committed by Alexandre Paillier <alexandre.paillier@ledger.fr> on 8/25/2026, 3:04:00 PM