codex-contracts-eth/contracts/Groth16.sol

34 lines
623 B
Solidity
Raw Normal View History

2024-01-18 12:50:54 +00:00
// SPDX-License-Identifier: MIT
2024-01-23 09:24:02 +00:00
pragma solidity 0.8.23;
2024-01-18 12:50:54 +00:00
struct G1Point {
2024-01-23 12:26:05 +00:00
uint x;
uint y;
2024-01-18 12:50:54 +00:00
}
// A field element F_{p^2} encoded as `real + i * imag`.
// We chose to not represent this as an array of 2 numbers, because both Circom
// and Ethereum EIP-197 encode to an array, but with conflicting encodings.
struct Fp2Element {
uint real;
uint imag;
}
2024-01-18 12:50:54 +00:00
struct G2Point {
Fp2Element x;
Fp2Element y;
2024-01-18 12:50:54 +00:00
}
struct Groth16Proof {
2024-01-23 12:26:05 +00:00
G1Point a;
G2Point b;
G1Point c;
2024-01-18 12:50:54 +00:00
}
interface IGroth16Verifier {
function verify(
Groth16Proof calldata proof,
uint[] calldata pubSignals
) external view returns (bool);
}