首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套委托链中的msg.sender是谁?

嵌套委托链中的msg.sender是谁?
EN

Ethereum用户
提问于 2023-01-03 13:52:37
回答 1查看 198关注 0票数 1

通过调用合同D上的msg.sender方法,发出事件中的callMe是谁?

代码语言:javascript
复制
pragma solidity 0.8.10;

contract A {

    event LogMsgSender(address who);

    function callMe() public {
        emit LogMsgSender(msg.sender);
    }
}

contract B {

    function callMe(address a) public {
        a.delegatecall(
            abi.encodeWithSignature("callMe()")
        );
    }
}

contract C {

    function callMe(address a, address b) public {
         b.delegatecall(
            abi.encodeWithSignature("callMe(address)",a)
        );
    }
}

contract D {

    function callMe(address a, address b, address c) public {
        c.delegatecall(
            abi.encodeWithSignature("callMe(address,address)",a,b)
        );
    }
}
EN

回答 1

Ethereum用户

回答已采纳

发布于 2023-01-03 15:23:51

它是原始的msg.sender (在合同D上调用callMe ),因为msg.sender上下文在D、C、B、A中都是相同的。例如,用户有一个帐户0x1111...在D上调用callMe(a,b,c),登录到合同A上的msg.sender (address a)将被0x1111...读取更多关于坚实性文件上的委托调用的信息。

票数 2
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/142225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档