This visual execution trace shows how a smart contract receives Ether. When the contract is deployed, its balance starts at zero. Sending Ether with empty data triggers the receive() function, which accepts the Ether and increases the contract balance. Sending Ether with data triggers the fallback() function if it is payable; otherwise, the transaction is rejected. Sending calls without Ether triggers fallback() without balance change. If neither receive() nor fallback() is payable, any Ether sent causes rejection. Variables like contract_balance update accordingly after each step. Key moments clarify why receive() triggers only on empty data and the importance of payable fallback. The quiz tests understanding of which function triggers and what happens on payable or non-payable fallback. The snapshot summarizes the rules for receiving Ether in contracts.