问题描述
我正在为 solidity 中的接收功能苦苦挣扎。我尝试通过 ContractOne 为 ContractTwo 提供资金,然后立即将收到的资金转换为 WETH。如果我通过调用具有价值的合约来实现(在 Remix 上按交易),一切正常,但是,一旦我尝试使用另一个合约,它就会失败。
ContractOne 如下所示:
contract ParteinaherVerein {
constructor(address payable party) payable {
party.transfer(msg.value);
}}
ContractTwo 有如下接收函数:
receive() external payable {
if (msg.sender == wrappedEtherAddr) {
// Do nothing
} else {
ETH2WETH(); // Locks Eth to get Weth
}
}
在 Remix 中,我的错误如下所示: VM 错误:还原。 revert 事务已恢复到初始状态。注意:如果您发送价值并且您发送的价值应小于您当前的余额,则应支付被调用的函数。调试事务以获取更多信息。
注意:我的 ETH2WETH 由以下几行组成:(但这不应该包括任何错误,因为当我通过 Remix 界面直接从 EOA 与它进行交易时,它可以正常工作)
function ETH2WETH()
public
{
(bool success,) = address(WETHLike).call
{
value: address(this).balance
}
(
abi.encodeWithSignature("deposit(uint256)",address(this).balance)
);
require(success);
}
提前致谢。现在已经花费了我的时间。 最好!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)