Ed25519 is one of the most common public-key signature schemes, used by protocols like TLS 1.3, Signal, Tor, and commonly recommended as the default SSH authentication key scheme by corporations like GitHub.

EIP-665 (originally proposed in 2018), adds a new ED25519VFY precompile contract at address(0x9), enabling signature verification at a cost of 2000 gas.


EIP Specification

If block.number >= CONSTANTINOPLE_FORK_BLKNUM, add a precompiled contract for Ed25519 signature verification (ED25519VFY).

The proposal adds a new precompiled function ED25519VFY with the following input and output.

ED25519VFY takes as input 128 octets:

  1. message: the 32-octet message that was signed
  2. public key: the 32-octet Ed25519 public key of the signer
  3. signature: the 64-octet Ed25519 signature

ED25519VFY returns as output 4 octets:

  • 0x00000000 if signature is valid
  • any non-zero value indicates a signature verification failure