contract ReceiveEther { function takeMoney() public payable { } function myBalance() public view returns (uint256) { return address(this).balance; } } contract SendMoney { constructor() payable { } function sendMoney(address receiveEtherContract) public payable { uint256 amount = myBalance(); (bool ok, ) = receiveEtherContract.call{value: amount}(abi.encodeWithSignature("takeMoney()")); require(ok, "transfer failed"); } function myBalance() public view returns (uint256) { return address(this).balance; } }