Challenge #5tx.origin Misuse

Difficulty: High
#Security#AccessControl
This contract uses tx.origin for access control, which is insecure.
Illustration for tx.origin Misuse

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract Wallet {
mapping (address => uint256) public balances;
function deposit() public {
}
balances [msg.sender] += msg.value;
function withdraw(uint256 amount) public { require(balances [msg.sender] >= amount,
"Insufficient balance");
balances [msg.sender] -= amount;
payable(msg.sender).tranfer (amount);
}
}
    
💡 Hint: tx.origin can be manipulated. Prefer msg.sender.