gpt4 book ai didi

blockchain - 使用 interface 和 delegateCall 调用外部 Solidity 合约

转载 作者:行者123 更新时间:2023-12-04 15:58:50 29 4
gpt4 key购买 nike

通常我通过导入外部契约(Contract)的接口(interface)并生成契约(Contract)的“局部变量”来调用外部契约(Contract),一旦我需要它。像这样的东西:

import "./CalleeInterface";

contract Caller {

function callExternalFunction(address _calleeAddr){
CalleeInternface callee = CalleeInterface(_calleeAddr);
callee.someExternalFunction();
}

我的问题是,上面的方法似乎使用了函数 call含蓄地。
现在我面临一种情况,外部函数检查发件人的地址。当我使用上述方式时, msg.sender是合约地址 Caller .由于我想“转发”实际调用者的地址,我需要使用 delegatecall 调用外部函数:
contract Caller {
function callExternalFunction(address _calleeAddr){
_calleeAddr.delegatecall(bytes4(keccak256("someExternalFunction()")));
}

如您所见,这种情况下不需要接口(interface),但代码稍微复杂一些。
现在我的问题是,是否有办法使用 delegatecall用调用外部函数的“接口(interface)方式”?

最佳答案

我终于找到了我的问题的答案:
遗憾的是,无法从 delegatecall 接收值函数调用。

关于blockchain - 使用 interface 和 delegateCall 调用外部 Solidity 合约,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50999801/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com