I need to build an application that uses bilinear pairing operations for generating signatures. If I send a message with its signature to Ethereum, can Ethereum verify this message? Does the EVM support pairing operations?
This is an example of signature verification using BLS signature:
Given a signature S and a public key g^{x}, we verify that e(S ,g)=e(H(m),g^{x}).
Best Answer
Yes, at address 0x8 the EVM has a precompiled contract for optimal ate pairing check on the elliptic curve alt_bn128 described in EIP 197.
How can we verify BGLS aggregate signatures in Solidity? has a gist containing the following code which may be useful:
The whole Solidity file is included above to help avoid dead link.
The solcrypto library mentioned in how to implement Cryptographic algorithms in smart contracts may be helpful including the notes in https://ethresear.ch/t/precompiled-snark-pairing-for-bls-signatures/3196/5