设置 msg.value 以将值发送到其他合约失败,并显示"function call failed to execute"



我试图从solidity函数中调用另一个合约的合约方法。问题是,一旦添加msg.value参数,函数调用就会失败。则例外是";错误:事务已恢复:函数调用无法执行";

合同1

function deposit(uint256 amount) payable public {
IDefiAdapter(defiAdapterAddress).deposit{value: amount}();
}

合同2 的接口

interface IDefiAdapter {
function deposit() external payable;
function withdraw() external;
function getBalance() external view returns(uint256 balance);
}

我想像这样传递值,而不是将其作为方法param传递。如果没有添加msg.value,则呼叫正在工作。

我是否需要以不同的方式定义Contract2的接口,以使其成为可能或向Contract2实现添加任何额外的导入?

通过删除Contract1 deposit((函数中的金额并将函数调用替换为Contract1(address(deposit{msg.value}((来解决;

最新更新