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