Provides raw Edwards25519 point arithmetic as an EVM precompile. Lower-level than X25519 (LP-114), which only exposes Diffie-Hellman. This precompile enables direct point addition, scalar multiplication, basepoint multiplication, and multi-scalar multiplication for advanced cryptographic protocols: ring signatures, Bulletproofs, VRFs, and Ristretto255 primitives.
0x0000000000000000000000000000000000009204 -- Privacy range.
Operation selector is the first byte of input. All points are 32-byte compressed Edwards form.
0x01 PointAdd: P1(32) + P2(32) -> P3(32)
0x02 ScalarMul: P(32) + scalar(32) -> P*s(32)
0x03 BasepointMul: scalar(32) -> B*s(32) (constant-time)
0x04 MSM: n*(point(32) + scalar(32)) -> sum(32)
1. Uses filippo.io/edwards25519 for constant-time arithmetic.
2. Scalars are canonicalized; non-canonical inputs are clamped per RFC 7748.
3. Provides ~128-bit security (Curve25519 group order ~2^252). Not post-quantum.
4. MSM uses variable-time Straus/Pippenger internally -- safe because inputs are public on-chain.
github.com/luxfi/precompile/curve25519/Copyright (C) 2024-2026, Lux Partners Limited. All rights reserved.
Licensed under the MIT License.