松露不会编译,但混音可以



所以我试图从智能合约中向用户发送一些以太币,但我无法用truffle编译它,它确实是在remix上编译的,所以我找不到问题,除了这个函数之外,所有的东西都编译得很好,有人知道是什么原因造成的吗?

function sendEther(address _to, uint _amount) public returns(bool){
require(address(this).balance >= _amount);
(bool success, bytes memory data) = payable(_to).call{value: _amount}("");
require(success, "Failed to send Ether");
return true;
}
function sellTokens(uint _amount) public{
uint etherAmount = _amount / rate;
token.transferFrom(msg.sender, address(this), _amount);
sendEther(msg.sender, etherAmount);
emit TokensSold(msg.sender, address(token), _amount, rate);
}   

它抛出一个解析错误:

expected primary expression when the call function is called.

您的消息指示这一行:

(bool success, bytes memory data) = payable(_to).call{value: _amount}("");

并且它是正确的语法。truffle没有编译的原因可能是使用了旧的solc版本。如果您没有在truffle配置中设置solc版本,我认为默认情况下truffle使用版本5.6。在您的松露中。config.js

compilers: {
solc: {
// adjus tthis based on contract's solidity version
version: "0.8.4",
}
}

合同上的solidity版本不需要完全是";0.8.4〃;。你可以这样设置:

pragma solidity >=0.4.22 <0.9.0;

相关内容

  • 没有找到相关文章

最新更新