You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
935 B
31 lines
935 B
/* SPDX-License-Identifier: MIT */
|
|
pragma solidity >=0.8.0 <0.9.0;
|
|
|
|
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);
|
|
}
|
|
}
|
|
|