Spaces:
Sleeping
Sleeping
| // SPDX-License-Identifier: UNLICENSED | |
| pragma solidity ^0.8.24; | |
| // Uncomment this line to use console.log | |
| // import "hardhat/console.sol"; | |
| contract Lock { | |
| uint public unlockTime; | |
| address payable public owner; | |
| event Withdrawal(uint amount, uint when); | |
| constructor(uint _unlockTime) payable { | |
| require( | |
| block.timestamp < _unlockTime, | |
| "Unlock time should be in the future" | |
| ); | |
| unlockTime = _unlockTime; | |
| owner = payable(msg.sender); | |
| } | |
| function withdraw() public { | |
| // Uncomment this line, and the import of "hardhat/console.sol", to print a log in your terminal | |
| // console.log("Unlock time is %o and block timestamp is %o", unlockTime, block.timestamp); | |
| require(block.timestamp >= unlockTime, "You can't withdraw yet"); | |
| require(msg.sender == owner, "You aren't the owner"); | |
| emit Withdrawal(address(this).balance, block.timestamp); | |
| owner.transfer(address(this).balance); | |
| } | |
| } | |