外部账户给智能合约转账,转账金额不是传入的值

252 阅读1分钟
  后端开发人员最近在学习智能合约开发,在网上下载了一个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);     }