后端开发人员最近在学习智能合约开发,在网上下载了一个demo,自己在本地编译,部署,向合约账户转账发现了一个奇怪的问题,转账金额并不是传入的payAmount,查询余额发现余额并不是payAmount,转账的金额是前端页面传过来的msg.value的值,然后把代码复制到remix也是同样的问题,有没有大神给解释一下是什么问题
// 函数:published,用于发布新的待办事项 function published(string memory _message) public p if (msg.value < payAmount) { revert("msg.value less than payAmout"); } require(msg.value >= payAmount, "\u4f59\u989d\u4e0d\u8db3"); console.log("before transfer money"); (bool success, ) = payable(address(this)).call{value:payAmount}(""); }
// 函数:receive,用于接收以太币 receive() external payable { console.log("msg.data 1", msg.value); emit receiveLog(msg.sender, msg.value); } fallback() external payable { console.log("msg.data 2", msg.value); }