Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // SPDX-License-Identifier: MIT
- pragma solidity ^0.8.6;
- contract Bank {
- mapping(address=>uint256) public balances;
- mapping(address=>uint256) public last_refill_times;
- uint constant SECONDS_PER_DAY = 24 * 60 * 60;
- uint constant SECONDS_PER_HOUR = 60 * 60;
- uint constant SECONDS_PER_MINUTE = 60;
- int constant OFFSET19700101 = 2440588;
- uint constant INTEREST_TIME = 60;
- function Deposit() public payable {
- balances[msg.sender] += msg.value;
- last_refill_times[msg.sender] = block.timestamp;
- }
- function Withdrawal(uint256 _to_withdraw) external {
- require(balances[msg.sender] >= _to_withdraw, "not enough money");
- require(_to_withdraw <= 10 ether, "withdrawal more than 10 ETH");
- balances[msg.sender] -= _to_withdraw;
- (bool success, ) = msg.sender.call{value: _to_withdraw}("");
- require(success, "failed to complete");
- }
- function BalanceOf() public view returns(uint256) {
- return(balances[msg.sender]);
- }
- function TransferTo(address _to_transfer, uint256 _value) external {
- require(balances[msg.sender] >= _value, "not enough money");
- require(_value <= 10 ether, "transfer more than 10 ETH");
- balances[msg.sender] -= _value;
- balances[_to_transfer] += _value;
- last_refill_times[_to_transfer] = block.timestamp;
- (bool success, ) = msg.sender.call{value: _value}("");
- require(success, "failed to complete");
- }
- function Interest() public payable {
- uint256 diff = block.timestamp - last_refill_times[msg.sender];
- require(diff >= INTEREST_TIME, "time for interest hasn't passed");
- balances[msg.sender] += (diff / INTEREST_TIME) * (balances[msg.sender] * 7 / 100);
- last_refill_times[msg.sender] = block.timestamp;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement