diff --git a/packages/contracts/foundry.toml b/packages/contracts/foundry.toml index e094e4f5..5c546414 100644 --- a/packages/contracts/foundry.toml +++ b/packages/contracts/foundry.toml @@ -3,7 +3,9 @@ src = "src" out = "artifacts" libs = ["../../node_modules", "lib"] optimizer = true -# via-ir = true +# The following line `via-ir = true` is needed to compile this project using zksync features +# See README.md for more details -> TODO +# via-ir = true optimizer-runs = 20_000 fs_permissions = [ { access = "read", path = "./artifacts/WETH9.sol/WETH9.json" }, @@ -12,7 +14,6 @@ fs_permissions = [ ] solc = "0.8.26" -via_ir = true # See more config options https://github.com/foundry-rs/foundry/tree/master/config diff --git a/packages/contracts/src/EmailAccountRecovery.sol b/packages/contracts/src/EmailAccountRecovery.sol index 17bc41f5..5de05919 100644 --- a/packages/contracts/src/EmailAccountRecovery.sol +++ b/packages/contracts/src/EmailAccountRecovery.sol @@ -5,8 +5,8 @@ import "./EmailAuth.sol"; import "@openzeppelin/contracts/utils/Create2.sol"; import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; import {L2ContractHelper} from "@matterlabs/zksync-contracts/l2/contracts/L2ContractHelper.sol"; -import {SystemContractsCaller} from "@matterlabs/zksync-contracts/l2/system-contracts/libraries/SystemContractsCaller.sol"; -import {DEPLOYER_SYSTEM_CONTRACT} from "@matterlabs/zksync-contracts/l2/system-contracts/Constants.sol"; +// import {SystemContractsCaller} from "@matterlabs/zksync-contracts/l2/system-contracts/libraries/SystemContractsCaller.sol"; +// import {DEPLOYER_SYSTEM_CONTRACT} from "@matterlabs/zksync-contracts/l2/system-contracts/Constants.sol"; /// @title Email Account Recovery Contract /// @notice Provides mechanisms for email-based account recovery, leveraging guardians and template-based email verification. @@ -226,41 +226,41 @@ abstract contract EmailAccountRecovery { EmailAuth guardianEmailAuth; if (guardian.code.length == 0) { - // Deploy proxy of the guardian's EmailAuth contract - if (block.chainid == 324 || block.chainid == 300) { - (bool success, bytes memory returnData) = SystemContractsCaller - .systemCallWithReturndata( - uint32(gasleft()), - address(DEPLOYER_SYSTEM_CONTRACT), - uint128(0), - abi.encodeCall( - DEPLOYER_SYSTEM_CONTRACT.create2, - ( - emailAuthMsg.proof.accountSalt, - proxyBytecodeHash, - abi.encode( - emailAuthImplementation(), - abi.encodeCall( - EmailAuth.initialize, - ( - recoveredAccount, - emailAuthMsg.proof.accountSalt, - address(this) - ) - ) - ) - ) - ) - ); - address payable proxyAddress = abi.decode(returnData, (address)); - ERC1967Proxy proxy = ERC1967Proxy(proxyAddress); - guardianEmailAuth = EmailAuth(address(proxy)); - guardianEmailAuth.initialize( - recoveredAccount, - emailAuthMsg.proof.accountSalt, - address(this) - ); - } else { + // // Deploy proxy of the guardian's EmailAuth contract + // if (block.chainid == 324 || block.chainid == 300) { + // (bool success, bytes memory returnData) = SystemContractsCaller + // .systemCallWithReturndata( + // uint32(gasleft()), + // address(DEPLOYER_SYSTEM_CONTRACT), + // uint128(0), + // abi.encodeCall( + // DEPLOYER_SYSTEM_CONTRACT.create2, + // ( + // emailAuthMsg.proof.accountSalt, + // proxyBytecodeHash, + // abi.encode( + // emailAuthImplementation(), + // abi.encodeCall( + // EmailAuth.initialize, + // ( + // recoveredAccount, + // emailAuthMsg.proof.accountSalt, + // address(this) + // ) + // ) + // ) + // ) + // ) + // ); + // address payable proxyAddress = abi.decode(returnData, (address)); + // ERC1967Proxy proxy = ERC1967Proxy(proxyAddress); + // guardianEmailAuth = EmailAuth(address(proxy)); + // guardianEmailAuth.initialize( + // recoveredAccount, + // emailAuthMsg.proof.accountSalt, + // address(this) + // ); + // } else { // Deploy proxy of the guardian's EmailAuth contract ERC1967Proxy proxy = new ERC1967Proxy{salt: emailAuthMsg.proof.accountSalt}( emailAuthImplementation(), @@ -270,7 +270,7 @@ abstract contract EmailAccountRecovery { ) ); guardianEmailAuth = EmailAuth(address(proxy)); - } + // } guardianEmailAuth.initDKIMRegistry(dkim()); guardianEmailAuth.initVerifier(verifier()); for ( diff --git a/packages/contracts/test/ComputeCreate2Address.t.sol b/packages/contracts/test/ComputeCreate2Address.t.sol index 8c17961c..abd02898 100644 --- a/packages/contracts/test/ComputeCreate2Address.t.sol +++ b/packages/contracts/test/ComputeCreate2Address.t.sol @@ -6,8 +6,8 @@ import "forge-std/console.sol"; import {L2ContractHelper} from "@matterlabs/zksync-contracts/l2/contracts/L2ContractHelper.sol"; import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; -import {SystemContractsCaller} from "@matterlabs/zksync-contracts/l2/system-contracts/libraries/SystemContractsCaller.sol"; -import {DEPLOYER_SYSTEM_CONTRACT} from "@matterlabs/zksync-contracts/l2/system-contracts/Constants.sol"; +// import {SystemContractsCaller} from "@matterlabs/zksync-contracts/l2/system-contracts/libraries/SystemContractsCaller.sol"; +// import {DEPLOYER_SYSTEM_CONTRACT} from "@matterlabs/zksync-contracts/l2/system-contracts/Constants.sol"; import "../src/EmailAuth.sol"; import "./helpers/StructHelper.sol"; @@ -64,30 +64,30 @@ contract ComputeCreate2AddressTest is StructHelper { // console.log("proxy", address(proxy)); // assertEq(computedAddress, address(proxy)); - (bool success, bytes memory returnData) = SystemContractsCaller - .systemCallWithReturndata( - uint32(gasleft()), - address(DEPLOYER_SYSTEM_CONTRACT), - uint128(0), - abi.encodeCall( - DEPLOYER_SYSTEM_CONTRACT.create2, - ( - accountSalt, - bytecodeHash, - abi.encode( - address(emailAuth), - abi.encodeCall( - EmailAuth.initialize, - ( - recoveredAccount, - accountSalt, - address(this) - ) - ) - ) - ) - ) - ); - address payable proxyAddress = abi.decode(returnData, (address)); + // (bool success, bytes memory returnData) = SystemContractsCaller + // .systemCallWithReturndata( + // uint32(gasleft()), + // address(DEPLOYER_SYSTEM_CONTRACT), + // uint128(0), + // abi.encodeCall( + // DEPLOYER_SYSTEM_CONTRACT.create2, + // ( + // accountSalt, + // bytecodeHash, + // abi.encode( + // address(emailAuth), + // abi.encodeCall( + // EmailAuth.initialize, + // ( + // recoveredAccount, + // accountSalt, + // address(this) + // ) + // ) + // ) + // ) + // ) + // ); + // address payable proxyAddress = abi.decode(returnData, (address)); } }