我试图从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}((来解决;