From dca5b1a58a294f3ee678e43ca6acce1d17823fbe Mon Sep 17 00:00:00 2001 From: primata Date: Mon, 14 Oct 2024 13:26:48 -0300 Subject: [PATCH] fix: faucet --- .../contracts/src/token/faucet/MOVEFaucet.sol | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/protocol-units/settlement/mcr/contracts/src/token/faucet/MOVEFaucet.sol b/protocol-units/settlement/mcr/contracts/src/token/faucet/MOVEFaucet.sol index ff678ebc7..226eea517 100644 --- a/protocol-units/settlement/mcr/contracts/src/token/faucet/MOVEFaucet.sol +++ b/protocol-units/settlement/mcr/contracts/src/token/faucet/MOVEFaucet.sol @@ -12,27 +12,32 @@ contract MOVEFaucet { IERC20 public move; uint256 public rateLimit = 1 days; uint256 public amount = 10; - address receiver; + address owner; mapping(address => uint256) public lastFaucetClaim; constructor(IERC20 _move) { move = _move; - receiver = msg.sender; + owner = msg.sender; } function faucet() external payable { - require(msg.value == 10 ** 17, "MOVEFaucet: invalid amount"); - require(move.balanceOf(msg.sender) == 0, "MOVEFaucet: balance must be 0"); + require(msg.value == 10 ** 17, "MOVEFaucet: eth invalid amount"); + require(move.balanceOf(msg.sender) < 10 ** move.decimals(), "MOVEFaucet: balance must be less than 1 MOVE"); require(block.timestamp - lastFaucetClaim[msg.sender] >= rateLimit, "MOVEFaucet: rate limit exceeded"); - payable(receiver).transfer(msg.value); lastFaucetClaim[msg.sender] = block.timestamp; require(move.transfer(msg.sender, amount * 10 ** move.decimals()), "MOVEFaucet: transfer failed"); } - function setConfig(uint256 _rateLimit, uint256 _amount, address _receiver) external { - require(msg.sender == receiver, "MOVEFaucet: only receiver can set config"); + function setConfig(uint256 _rateLimit, uint256 _amount, address _owner) external { + require(msg.sender == owner, "MOVEFaucet: only owner can set config"); rateLimit = _rateLimit; amount = _amount; - receiver = _receiver; + owner = _owner; + } + + function withdraw() external { + require(msg.sender == owner, "MOVEFaucet: only owner can retrieve funds"); + (bool status,) = owner.call{value: address(this).balance}(""); + require(status == true, "error during transaction"); } } \ No newline at end of file