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

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract ReentrancyIssue {
mapping (address => uint) public balances;
function deposit() public payable {
}
balances [msg.sender] += msg.value;
function withdraw() public {
uint amount = balances[msg.sender]; require (amount > 0, "No balance to
withdraw");
(bool success, )
payable (msg.sender).call{value: amount}(""); require(success, "Transfer failed");
balances [msg.sender] -= amount;
}
}
💡 Hint: tx.origin can be manipulated. Prefer msg.sender.