Code
solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
contract EthVault {
receive() external payable {
// called on plain ETH transfer (no calldata)
}
fallback() external payable {
// called when no function signature matches
}
function deposit() external payable {
require(msg.value > 0, "send eth");
}
function withdraw(uint256 amount) external {
payable(msg.sender).transfer(amount); // 2300 gas stub, reverts on failure
}
function withdrawCall(uint256 amount) external {
(bool ok, ) = payable(msg.sender).call{value: amount}("");
require(ok, "transfer failed");
}
function balance() external view returns (uint256) {
return address(this).balance;
}
}