Skip to content

Commit

Permalink
Add IGroth16Verifier
Browse files Browse the repository at this point in the history
  • Loading branch information
SoraSuegami committed Sep 10, 2024
1 parent f6433a1 commit 5002ab3
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 8 deletions.
7 changes: 6 additions & 1 deletion packages/contracts/script/DeployCommons.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import "forge-std/Script.sol";
import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";
import "../test/helpers/SimpleWallet.sol";
import "../src/utils/Verifier.sol";
import "../src/utils/Groth16Verifier.sol";
import "../src/utils/ECDSAOwnedDKIMRegistry.sol";
// import "../src/utils/ForwardDKIMRegistry.sol";
import "../src/EmailAuth.sol";
Expand Down Expand Up @@ -80,9 +81,13 @@ contract Deploy is Script {
"Verifier implementation deployed at: %s",
address(verifierImpl)
);
Groth16Verifier groth16Verifier = new Groth16Verifier();
ERC1967Proxy verifierProxy = new ERC1967Proxy(
address(verifierImpl),
abi.encodeCall(verifierImpl.initialize, (initialOwner))
abi.encodeCall(
verifierImpl.initialize,
(initialOwner, address(groth16Verifier))
)
);
verifier = Verifier(address(verifierProxy));
console.log("Verifier deployed at: %s", address(verifier));
Expand Down
7 changes: 6 additions & 1 deletion packages/contracts/script/DeployRecoveryController.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";
import "../test/helpers/SimpleWallet.sol";
import "../test/helpers/RecoveryController.sol";
import "../src/utils/Verifier.sol";
import "../src/utils/Groth16Verifier.sol";
import "../src/utils/ECDSAOwnedDKIMRegistry.sol";
// import "../src/utils/ForwardDKIMRegistry.sol";
import "../src/EmailAuth.sol";
Expand Down Expand Up @@ -75,9 +76,13 @@ contract Deploy is Script {
"Verifier implementation deployed at: %s",
address(verifierImpl)
);
Groth16Verifier groth16Verifier = new Groth16Verifier();
ERC1967Proxy verifierProxy = new ERC1967Proxy(
address(verifierImpl),
abi.encodeCall(verifierImpl.initialize, (initialOwner))
abi.encodeCall(
verifierImpl.initialize,
(initialOwner, address(groth16Verifier))
)
);
verifier = Verifier(address(verifierProxy));
console.log("Verifier deployed at: %s", address(verifier));
Expand Down
11 changes: 11 additions & 0 deletions packages/contracts/src/interfaces/IGroth16Verifier.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;

interface IGroth16Verifier {
function verifyProof(
uint[2] calldata _pA,
uint[2][2] calldata _pB,
uint[2] calldata _pC,
uint[34] calldata _pubSignals
) external view returns (bool);
}
11 changes: 7 additions & 4 deletions packages/contracts/src/utils/Verifier.sol
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;

import "./Groth16Verifier.sol";
import "../interfaces/IGroth16Verifier.sol";
import {UUPSUpgradeable} from "@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol";
import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";

Expand All @@ -17,7 +17,7 @@ struct EmailProof {
}

contract Verifier is OwnableUpgradeable, UUPSUpgradeable {
Groth16Verifier groth16Verifier;
IGroth16Verifier groth16Verifier;

uint256 public constant DOMAIN_FIELDS = 9;
uint256 public constant DOMAIN_BYTES = 255;
Expand All @@ -28,9 +28,12 @@ contract Verifier is OwnableUpgradeable, UUPSUpgradeable {

/// @notice Initialize the contract with the initial owner and deploy Groth16Verifier
/// @param _initialOwner The address of the initial owner
function initialize(address _initialOwner) public initializer {
function initialize(
address _initialOwner,
address _groth16Verifier
) public initializer {
__Ownable_init(_initialOwner);
groth16Verifier = new Groth16Verifier();
groth16Verifier = IGroth16Verifier(_groth16Verifier);
}

function verifyEmailProof(
Expand Down
7 changes: 6 additions & 1 deletion packages/contracts/test/Integration.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import "@zk-email/contracts/DKIMRegistry.sol";
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "../src/EmailAuth.sol";
import "../src/utils/Verifier.sol";
import "../src/utils/Groth16Verifier.sol";
import "../src/utils/ECDSAOwnedDKIMRegistry.sol";
import "./helpers/SimpleWallet.sol";
import "./helpers/RecoveryController.sol";
Expand Down Expand Up @@ -83,9 +84,13 @@ contract IntegrationTest is Test {
// Create Verifier
{
Verifier verifierImpl = new Verifier();
Groth16Verifier groth16Verifier = new Groth16Verifier();
ERC1967Proxy verifierProxy = new ERC1967Proxy(
address(verifierImpl),
abi.encodeCall(verifierImpl.initialize, (msg.sender))
abi.encodeCall(
verifierImpl.initialize,
(msg.sender, address(groth16Verifier))
)
);
verifier = Verifier(address(verifierProxy));
}
Expand Down
7 changes: 6 additions & 1 deletion packages/contracts/test/helpers/DeploymentHelper.sol
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import "forge-std/console.sol";
import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";
import "../../src/EmailAuth.sol";
import "../../src/utils/Verifier.sol";
import "../../src/utils/Groth16Verifier.sol";
import "../../src/utils/ECDSAOwnedDKIMRegistry.sol";
// import "../../src/utils/ForwardDKIMRegistry.sol";
import {UserOverrideableDKIMRegistry} from "@zk-email/contracts/UserOverrideableDKIMRegistry.sol";
Expand Down Expand Up @@ -92,9 +93,13 @@ contract DeploymentHelper is Test {
"Verifier implementation deployed at: %s",
address(verifierImpl)
);
Groth16Verifier groth16Verifier = new Groth16Verifier();
ERC1967Proxy verifierProxy = new ERC1967Proxy(
address(verifierImpl),
abi.encodeCall(verifierImpl.initialize, (msg.sender))
abi.encodeCall(
verifierImpl.initialize,
(msg.sender, address(groth16Verifier))
)
);
verifier = Verifier(address(verifierProxy));
}
Expand Down

0 comments on commit 5002ab3

Please sign in to comment.