# 关于上文Monad补充的一些修正 **Published by:** [crypto小趴菜](https://paragraph.com/@crypto-69/) **Published on:** 2025-02-21 **URL:** https://paragraph.com/@crypto-69/monad-2 ## Content 上文第2部分,合约更换为如下代码,可实现功能// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract MONRefund { event RefundSuccess( address indexed sender, uint256 amount, uint256 timestamp ); /** * 接收 MON 原生代币的函数 * 当用户向合约发送 MON 时,会自动触发此函数 * 合约会立即将 MON 原路返还给发送者 */ receive() external payable { require(msg.value > 0, "Amount must be greater than 0"); // 使用 call 进行原生代币转账 (bool success, ) = msg.sender.call{value: msg.value}(""); require(success, "Refund failed"); emit RefundSuccess(msg.sender, msg.value, block.timestamp); } /** * 查看合约中的 MON 余额 * 通常余额应为 0,因为 MON 会立即返还 */ function getMONBalance() public view returns (uint256) { return address(this).balance; } /** * 仅合约所有者可以提取意外发送的 MON */ function withdrawMON(address payable recipient) external { require(msg.sender == owner, "Only owner can withdraw"); uint256 balance = address(this).balance; require(balance > 0, "No MON to withdraw"); (bool success, ) = recipient.call{value: balance}(""); require(success, "Withdrawal failed"); } // 合约所有者地址 address public owner; // 构造函数,设置合约所有者 constructor() { owner = msg.sender; } } ## Publication Information - [crypto小趴菜](https://paragraph.com/@crypto-69/): Publication homepage - [All Posts](https://paragraph.com/@crypto-69/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@crypto-69): Subscribe to updates - [Twitter](https://twitter.com/cryptopacai): Follow on Twitter