Commit de647f83 authored by tre's avatar tre

address comments

parent 391cdda4
...@@ -30,11 +30,13 @@ contract AdminFaucetAuthModuleTest is Test { ...@@ -30,11 +30,13 @@ contract AdminFaucetAuthModuleTest is Test {
/** /**
* @notice An instance of the `AdminFaucetAuthModule` contract. * @notice An instance of the `AdminFaucetAuthModule` contract.
*/ */
AdminFaucetAuthModule adminFam; AdminFaucetAuthModule internal adminFam;
/** /**
* @notice An instance of the `FaucetHelper` contract. * @notice An instance of the `FaucetHelper` contract.
*/ */
FaucetHelper faucetHelper; FaucetHelper internal faucetHelper;
string internal adminFamName = "AdminFAM";
string internal adminFamVersion = "1";
/** /**
* @notice Deploy the `AdminFaucetAuthModule` contract. * @notice Deploy the `AdminFaucetAuthModule` contract.
...@@ -46,8 +48,7 @@ contract AdminFaucetAuthModuleTest is Test { ...@@ -46,8 +48,7 @@ contract AdminFaucetAuthModuleTest is Test {
nonAdminKey = 0xC0C0C0C0; nonAdminKey = 0xC0C0C0C0;
nonAdmin = vm.addr(nonAdminKey); nonAdmin = vm.addr(nonAdminKey);
adminFam = new AdminFaucetAuthModule(admin); adminFam = new AdminFaucetAuthModule(admin, adminFamName, adminFamVersion);
adminFam.initialize("AdminFAM");
faucetHelper = new FaucetHelper(); faucetHelper = new FaucetHelper();
} }
...@@ -108,8 +109,8 @@ contract AdminFaucetAuthModuleTest is Test { ...@@ -108,8 +109,8 @@ contract AdminFaucetAuthModuleTest is Test {
address fundsReceiver = makeAddr("fundsReceiver"); address fundsReceiver = makeAddr("fundsReceiver");
bytes memory proof = issueProofWithEIP712Domain( bytes memory proof = issueProofWithEIP712Domain(
adminKey, adminKey,
bytes("AdminFAM"), bytes(adminFamName),
bytes(adminFam.version()), bytes(adminFamVersion),
block.chainid, block.chainid,
address(adminFam), address(adminFam),
fundsReceiver, fundsReceiver,
...@@ -136,8 +137,8 @@ contract AdminFaucetAuthModuleTest is Test { ...@@ -136,8 +137,8 @@ contract AdminFaucetAuthModuleTest is Test {
address fundsReceiver = makeAddr("fundsReceiver"); address fundsReceiver = makeAddr("fundsReceiver");
bytes memory proof = issueProofWithEIP712Domain( bytes memory proof = issueProofWithEIP712Domain(
nonAdminKey, nonAdminKey,
bytes("AdminFAM"), bytes(adminFamName),
bytes(adminFam.version()), bytes(adminFamVersion),
block.chainid, block.chainid,
address(adminFam), address(adminFam),
fundsReceiver, fundsReceiver,
...@@ -166,8 +167,8 @@ contract AdminFaucetAuthModuleTest is Test { ...@@ -166,8 +167,8 @@ contract AdminFaucetAuthModuleTest is Test {
address randomAddress = makeAddr("randomAddress"); address randomAddress = makeAddr("randomAddress");
bytes memory proof = issueProofWithEIP712Domain( bytes memory proof = issueProofWithEIP712Domain(
adminKey, adminKey,
bytes("AdminFAM"), bytes(adminFamName),
bytes(adminFam.version()), bytes(adminFamVersion),
block.chainid, block.chainid,
address(adminFam), address(adminFam),
fundsReceiver, fundsReceiver,
......
...@@ -23,7 +23,11 @@ contract Faucet_Initializer is Test { ...@@ -23,7 +23,11 @@ contract Faucet_Initializer is Test {
Faucet faucet; Faucet faucet;
AdminFaucetAuthModule optimistNftFam; AdminFaucetAuthModule optimistNftFam;
string internal optimistNftFamName = "OptimistNftFam";
string internal optimistNftFamVersion = "1";
AdminFaucetAuthModule githubFam; AdminFaucetAuthModule githubFam;
string internal githubFamName = "GithubFam";
string internal githubFamVersion = "1";
FaucetHelper faucetHelper; FaucetHelper faucetHelper;
...@@ -52,10 +56,12 @@ contract Faucet_Initializer is Test { ...@@ -52,10 +56,12 @@ contract Faucet_Initializer is Test {
vm.deal(address(faucetContractAdmin), 5 ether); vm.deal(address(faucetContractAdmin), 5 ether);
vm.deal(address(nonAdmin), 5 ether); vm.deal(address(nonAdmin), 5 ether);
optimistNftFam = new AdminFaucetAuthModule(faucetAuthAdmin); optimistNftFam = new AdminFaucetAuthModule(
optimistNftFam.initialize("OptimistNftFam"); faucetAuthAdmin,
githubFam = new AdminFaucetAuthModule(faucetAuthAdmin); optimistNftFamName,
githubFam.initialize("GithubFam"); optimistNftFamVersion
);
githubFam = new AdminFaucetAuthModule(faucetAuthAdmin, githubFamName, githubFamVersion);
faucetHelper = new FaucetHelper(); faucetHelper = new FaucetHelper();
} }
...@@ -129,8 +135,8 @@ contract FaucetTest is Faucet_Initializer { ...@@ -129,8 +135,8 @@ contract FaucetTest is Faucet_Initializer {
bytes32 nonce = faucetHelper.consumeNonce(); bytes32 nonce = faucetHelper.consumeNonce();
bytes memory signature = issueProofWithEIP712Domain( bytes memory signature = issueProofWithEIP712Domain(
faucetAuthAdminKey, faucetAuthAdminKey,
bytes("OptimistNftFam"), bytes(optimistNftFamName),
bytes(optimistNftFam.version()), bytes(optimistNftFamVersion),
block.chainid, block.chainid,
address(optimistNftFam), address(optimistNftFam),
fundsReceiver, fundsReceiver,
...@@ -150,8 +156,8 @@ contract FaucetTest is Faucet_Initializer { ...@@ -150,8 +156,8 @@ contract FaucetTest is Faucet_Initializer {
bytes32 nonce = faucetHelper.consumeNonce(); bytes32 nonce = faucetHelper.consumeNonce();
bytes memory signature = issueProofWithEIP712Domain( bytes memory signature = issueProofWithEIP712Domain(
nonAdminKey, nonAdminKey,
bytes("OptimistNftFam"), bytes(optimistNftFamName),
bytes(optimistNftFam.version()), bytes(optimistNftFamVersion),
block.chainid, block.chainid,
address(optimistNftFam), address(optimistNftFam),
fundsReceiver, fundsReceiver,
...@@ -172,8 +178,8 @@ contract FaucetTest is Faucet_Initializer { ...@@ -172,8 +178,8 @@ contract FaucetTest is Faucet_Initializer {
bytes32 nonce = faucetHelper.consumeNonce(); bytes32 nonce = faucetHelper.consumeNonce();
bytes memory signature = issueProofWithEIP712Domain( bytes memory signature = issueProofWithEIP712Domain(
faucetAuthAdminKey, faucetAuthAdminKey,
bytes("OptimistNftFam"), bytes(optimistNftFamName),
bytes(optimistNftFam.version()), bytes(optimistNftFamVersion),
block.chainid, block.chainid,
address(optimistNftFam), address(optimistNftFam),
fundsReceiver, fundsReceiver,
...@@ -200,8 +206,8 @@ contract FaucetTest is Faucet_Initializer { ...@@ -200,8 +206,8 @@ contract FaucetTest is Faucet_Initializer {
bytes32 nonce = faucetHelper.consumeNonce(); bytes32 nonce = faucetHelper.consumeNonce();
bytes memory signature = issueProofWithEIP712Domain( bytes memory signature = issueProofWithEIP712Domain(
faucetAuthAdminKey, faucetAuthAdminKey,
bytes("GithubFam"), bytes(githubFamName),
bytes(githubFam.version()), bytes(githubFamVersion),
block.chainid, block.chainid,
address(githubFam), address(githubFam),
fundsReceiver, fundsReceiver,
...@@ -228,8 +234,8 @@ contract FaucetTest is Faucet_Initializer { ...@@ -228,8 +234,8 @@ contract FaucetTest is Faucet_Initializer {
bytes32 nonce = faucetHelper.consumeNonce(); bytes32 nonce = faucetHelper.consumeNonce();
bytes memory signature = issueProofWithEIP712Domain( bytes memory signature = issueProofWithEIP712Domain(
faucetAuthAdminKey, faucetAuthAdminKey,
bytes("GithubFam"), bytes(githubFamName),
bytes(githubFam.version()), bytes(githubFamVersion),
block.chainid, block.chainid,
address(githubFam), address(githubFam),
fundsReceiver, fundsReceiver,
...@@ -252,8 +258,8 @@ contract FaucetTest is Faucet_Initializer { ...@@ -252,8 +258,8 @@ contract FaucetTest is Faucet_Initializer {
bytes32 nonce = faucetHelper.consumeNonce(); bytes32 nonce = faucetHelper.consumeNonce();
bytes memory signature = issueProofWithEIP712Domain( bytes memory signature = issueProofWithEIP712Domain(
faucetAuthAdminKey, faucetAuthAdminKey,
bytes("GithubFam"), bytes(githubFamName),
bytes(githubFam.version()), bytes(githubFamVersion),
block.chainid, block.chainid,
address(githubFam), address(githubFam),
fundsReceiver, fundsReceiver,
...@@ -282,8 +288,8 @@ contract FaucetTest is Faucet_Initializer { ...@@ -282,8 +288,8 @@ contract FaucetTest is Faucet_Initializer {
bytes32 nonce = faucetHelper.consumeNonce(); bytes32 nonce = faucetHelper.consumeNonce();
bytes memory signature = issueProofWithEIP712Domain( bytes memory signature = issueProofWithEIP712Domain(
faucetAuthAdminKey, faucetAuthAdminKey,
bytes("GithubFam"), bytes(githubFamName),
bytes(githubFam.version()), bytes(githubFamVersion),
block.chainid, block.chainid,
address(githubFam), address(githubFam),
fundsReceiver, fundsReceiver,
...@@ -310,8 +316,8 @@ contract FaucetTest is Faucet_Initializer { ...@@ -310,8 +316,8 @@ contract FaucetTest is Faucet_Initializer {
bytes32 nonce0 = faucetHelper.consumeNonce(); bytes32 nonce0 = faucetHelper.consumeNonce();
bytes memory signature0 = issueProofWithEIP712Domain( bytes memory signature0 = issueProofWithEIP712Domain(
faucetAuthAdminKey, faucetAuthAdminKey,
bytes("GithubFam"), bytes(githubFamName),
bytes(githubFam.version()), bytes(githubFamVersion),
block.chainid, block.chainid,
address(githubFam), address(githubFam),
fundsReceiver, fundsReceiver,
...@@ -328,8 +334,8 @@ contract FaucetTest is Faucet_Initializer { ...@@ -328,8 +334,8 @@ contract FaucetTest is Faucet_Initializer {
bytes32 nonce1 = faucetHelper.consumeNonce(); bytes32 nonce1 = faucetHelper.consumeNonce();
bytes memory signature1 = issueProofWithEIP712Domain( bytes memory signature1 = issueProofWithEIP712Domain(
faucetAuthAdminKey, faucetAuthAdminKey,
bytes("GithubFam"), bytes(githubFamName),
bytes(githubFam.version()), bytes(githubFamVersion),
block.chainid, block.chainid,
address(githubFam), address(githubFam),
fundsReceiver, fundsReceiver,
...@@ -350,8 +356,8 @@ contract FaucetTest is Faucet_Initializer { ...@@ -350,8 +356,8 @@ contract FaucetTest is Faucet_Initializer {
bytes32 nonce0 = faucetHelper.consumeNonce(); bytes32 nonce0 = faucetHelper.consumeNonce();
bytes memory signature0 = issueProofWithEIP712Domain( bytes memory signature0 = issueProofWithEIP712Domain(
faucetAuthAdminKey, faucetAuthAdminKey,
bytes("GithubFam"), bytes(githubFamName),
bytes(githubFam.version()), bytes(githubFamVersion),
block.chainid, block.chainid,
address(githubFam), address(githubFam),
fundsReceiver, fundsReceiver,
...@@ -368,8 +374,8 @@ contract FaucetTest is Faucet_Initializer { ...@@ -368,8 +374,8 @@ contract FaucetTest is Faucet_Initializer {
bytes32 nonce1 = faucetHelper.consumeNonce(); bytes32 nonce1 = faucetHelper.consumeNonce();
bytes memory signature1 = issueProofWithEIP712Domain( bytes memory signature1 = issueProofWithEIP712Domain(
faucetAuthAdminKey, faucetAuthAdminKey,
bytes("GithubFam"), bytes(githubFamName),
bytes(githubFam.version()), bytes(githubFamVersion),
block.chainid, block.chainid,
address(githubFam), address(githubFam),
fundsReceiver, fundsReceiver,
......
...@@ -80,7 +80,7 @@ contract Faucet { ...@@ -80,7 +80,7 @@ contract Faucet {
/** /**
* @notice Maps from id to nonces to whether or not they have been used. * @notice Maps from id to nonces to whether or not they have been used.
*/ */
mapping(bytes => mapping(bytes32 => bool)) public usedNonces; mapping(bytes => mapping(bytes32 => bool)) public nonces;
/** /**
* @notice Modifier that makes a function admin priviledged. * @notice Modifier that makes a function admin priviledged.
...@@ -141,10 +141,7 @@ contract Faucet { ...@@ -141,10 +141,7 @@ contract Faucet {
// This checks that the nonce has not been used for this issuer before. The nonces are // This checks that the nonce has not been used for this issuer before. The nonces are
// scoped to the issuer address, so the same nonce can be used by different issuers without // scoped to the issuer address, so the same nonce can be used by different issuers without
// clashing. // clashing.
require( require(nonces[_auth.id][_params.nonce] == false, "Faucet: nonce has already been used");
usedNonces[_auth.id][_params.nonce] == false,
"Faucet: nonce has already been used"
);
// Make sure the timeout has elapsed. // Make sure the timeout has elapsed.
require( require(
...@@ -162,7 +159,7 @@ contract Faucet { ...@@ -162,7 +159,7 @@ contract Faucet {
timeouts[_auth.module][_auth.id] = block.timestamp + config.ttl; timeouts[_auth.module][_auth.id] = block.timestamp + config.ttl;
// Mark the nonce as used. // Mark the nonce as used.
usedNonces[_auth.id][_params.nonce] = true; nonces[_auth.id][_params.nonce] = true;
// Execute a safe transfer of ETH to the recipient account. // Execute a safe transfer of ETH to the recipient account.
new SafeSend{ value: config.amount }(_params.recipient); new SafeSend{ value: config.amount }(_params.recipient);
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity 0.8.15; pragma solidity 0.8.15;
import { Semver } from "@eth-optimism/contracts-bedrock/contracts/universal/Semver.sol"; import { EIP712 } from "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol";
import {
EIP712Upgradeable
} from "@openzeppelin/contracts-upgradeable/utils/cryptography/draft-EIP712Upgradeable.sol";
import { SignatureChecker } from "@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol"; import { SignatureChecker } from "@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol";
import { IFaucetAuthModule } from "./IFaucetAuthModule.sol"; import { IFaucetAuthModule } from "./IFaucetAuthModule.sol";
import { Faucet } from "../Faucet.sol"; import { Faucet } from "../Faucet.sol";
...@@ -14,7 +11,7 @@ import { Faucet } from "../Faucet.sol"; ...@@ -14,7 +11,7 @@ import { Faucet } from "../Faucet.sol";
* @notice FaucetAuthModule that allows an admin to sign off on a given faucet drip. Takes an admin * @notice FaucetAuthModule that allows an admin to sign off on a given faucet drip. Takes an admin
* as the constructor argument. * as the constructor argument.
*/ */
contract AdminFaucetAuthModule is IFaucetAuthModule, Semver, EIP712Upgradeable { contract AdminFaucetAuthModule is IFaucetAuthModule, EIP712 {
/** /**
* @notice Admin address that can sign off on drips. * @notice Admin address that can sign off on drips.
*/ */
...@@ -40,19 +37,16 @@ contract AdminFaucetAuthModule is IFaucetAuthModule, Semver, EIP712Upgradeable { ...@@ -40,19 +37,16 @@ contract AdminFaucetAuthModule is IFaucetAuthModule, Semver, EIP712Upgradeable {
} }
/** /**
* @param admin Admin address that can sign off on drips. * @param _admin Admin address that can sign off on drips.
* @param _name Contract name.
* @param _version The current major version of the signing domain.
*/ */
constructor(address admin) Semver(1, 0, 0) { constructor(
ADMIN = admin; address _admin,
} string memory _name,
string memory _version
/** ) EIP712(_name, _version) {
* @notice Initializes this contract, setting the EIP712 context. ADMIN = _admin;
*
* @param _name Contract name.
*/
function initialize(string memory _name) public initializer {
__EIP712_init(_name, version());
} }
/** /**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment