Transfer Assignment solution by Gaurav Sahoo

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;
}

}

1 Like