LPsLux Proposals
Precompiles
LP-4340

Keccak-256 / SHA-3 Hash Family Precompile

Draft

Native EVM-default hash (Keccak-256, the EVM `KECCAK256` opcode) and standardized SHA-3 family (FIPS 202) including SHA3-256, SHA3-384, SHA3-512, SHAKE128, SHAKE256.

Category
Core
Created
2026-05-18

Abstract

Keccak (Bertoni, Daemen, Peeters, Van Assche 2008) is the sponge- construction hash function selected by NIST as SHA-3 (FIPS 202, 2015). Ethereum (and the Lux EVM) uses Keccak-256 — the original Keccak with the pre-final padding rule, not the NIST-standardized SHA3-256 — as the universal address-derivation / storage-slot / event-topic hash, exposed via the KECCAK256 opcode (0x20). This LP pins:

  1. Keccak-256 (KECCAK256 opcode) — EVM-default, used in address derivation and state-trie keying.
  2. SHA-3 family precompiles (SHA3-256, SHA3-384, SHA3-512, SHAKE128, SHAKE256) at reserved precompile addresses — FIPS 202 compliant for standards-track applications (P3Q hash binding LP-4810, PQ-cert profiles, RFC-compliant signing).
  3. The 1-byte domain-separation flag distinguishing Keccak from SHA-3 in shared codebases.

Per LP-0120 the precompile address registry assigns dedicated slots for SHAKE128/256 to feed P3Q-FRI's hash-based PCS.

Reference implementation

  • Primitive: golang.org/x/crypto/sha3 (FIPS 202 + Keccak-256)
  • Opcode: KECCAK256 (0x20)
  • P3Q hash binding: LP-4810 (SHA3 family for FRI)

Copyright and related rights waived via CC0.