如果我有一个实体函数被调用,该函数是否可以知道msg.sender
是否是智能合约?
答案 0 :(得分:2)
是的,您可以:
Statement -> Label -> Identifier : Statement -> Identifier : WhileStatement
答案 1 :(得分:0)
我认为没有安全的方法来检测msg.sender是否为智能合约,因为可以通过执行智能合约的构造函数的调用来破解它。
Etherenaut的第14级“ Gatekeeper Two”是关于此问题的。参见以下说明: Ethernaut Lvl 14 Gatekeeper 2 Walkthrough: How contracts initialize (and how to do bitwise operations)
如果extcodesize是发送方合同原始构造函数中的子例程,则extcodesize(sender)应该返回0