pragma solidity 0.7.5;
contract bank{
mapping(address=>uint)balance;
event DepositBalance(uint amt, address blc);
function deposit() public payable
{
uint prevBalance = balance[msg.sender];
balance[msg.sender] += msg.value;
emit DepositBalance(msg.value,msg.sender);
assert(balance[msg.sender]!=prevBalance);
}
function withdrawal(uint amt) public returns (uint)
{
require(balance[msg.sender] >= amt);
msg.sender.transfer(amt);
balance[msg.sender] -= amt;
return balance[msg.sender];
}
function getBalance() public view returns (uint)
{
return balance[msg.sender];
}
function transfer(address reciptent, uint amount) public
{
require(balance[msg.sender] >= amount, "Balance not sufficient");
require(msg.sender != reciptent, "Don't transfer money to yourself");
uint prevBalance = balance[msg.sender];
_tranfer(msg.sender,reciptent,amount);
assert(balance[msg.sender]!=prevBalance);
}
function _tranfer(address from,address to,uint amt) private
{
balance[from]-=amt;
balance[to]+=amt;
}
}