Add support for precompiled opcode for alt_bn128 pairing calculation
Motivation
We already have support for ecadd and ecmul which perform the corresponding alt_bn128 curve operations (and which should perhaps be renamed to bn128_ecadd and bn128_ecmul), but we do not have support for bn128 pairing operations, which allows the verification of Zero-Knowledge proofs using the alt-bn128 curve, such as in zk-SNARK implementations. This would allow ZKP verifier contracts to be created in Vyper (such as the ones ZoKrates can create).
Simple Summary
Add support for precompiled opcode for
alt_bn128
pairing calculationMotivation
We already have support for
ecadd
andecmul
which perform the correspondingalt_bn128
curve operations (and which should perhaps be renamed tobn128_ecadd
andbn128_ecmul
), but we do not have support forbn128
pairing operations, which allows the verification of Zero-Knowledge proofs using thealt-bn128
curve, such as in zk-SNARK implementations. This would allow ZKP verifier contracts to be created in Vyper (such as the ones ZoKrates can create).Specification
alt-bn128
elliptic curve pairing operations were already added as of Byzantium via EIP-197 (with gas costs to be updated in Istanbul via EIP-1108). A reference implementation is provided here: https://github.com/ethereum/py-evm/blob/master/eth/precompiles/ecpairing.pyBackwards Compatibility
No backwards incompatibilities
Dependencies
No dependencies
Copyright
Copyright and related rights waived via CC0