// SPDX-License-Identifier: MIT pragma solidity ^0.8.19; contract TxOriginWallet { address public owner; constructor() payable { owner = msg.sender; } function transferAll(address payable to) external { require(tx.origin == owner, "not owner origin"); to.transfer(address(this).balance); } receive() external payable {} }