Security 什么&x2019;检查msg.sender≠;0 ;?是否存在msg.sender可以为空的情况?

Security 什么&x2019;检查msg.sender≠;0 ;?是否存在msg.sender可以为空的情况?,security,null,ethereum,solidity,erc20,Security,Null,Ethereum,Solidity,Erc20,在(许多交易所上列出的大型ICO)中有一个用于所有令牌传输的修饰符: modifier validAddress { assert(0x0 != msg.sender); _; } 我理解合同如何直接写入分类账,即从0x0000000000000000000000000000000000进行令牌转移,但在这种情况下,消息仍然绑定到现有合同或私钥。 这意味着什么 ? 在挖掘的事务中,msg.sender如何等于0 ? (发现keccak256哈希冲突的假设情况除外) 您可以在此处

在(许多交易所上列出的大型ICO)中有一个用于所有令牌传输的修饰符:

modifier validAddress {
    assert(0x0 != msg.sender);
    _;
}
我理解合同如何直接写入分类账,即从0x0000000000000000000000000000000000进行令牌转移,但在这种情况下,消息仍然绑定到现有合同或私钥。
这意味着什么 ? 在挖掘的事务中,
msg.sender
如何等于0 ? (发现keccak256哈希冲突的假设情况除外)


您可以在此处找到完整的Tronix合同代码:

随着mainet的启动,开发人员不再回答令牌问题。很难相信,像50多个集中大容量交换机上列出的EOS这样严肃的项目,每天的交易量超过200000000美元,会留下无用的代码。我怀疑如果您使用
eth_call
调用函数(无事务),而不指定来自
地址的
,然后
msg.sender
为0。这只是猜测,但也许开发人员希望确保他们的视图函数在以这种方式错误调用时不会返回地址0的结果?@smarx调用函数是通过一个值为0但包含传递给接收方的数据的事务来完成的。在这种情况下,
e
c
v
在传递给ecrecover以验证签名时不允许检索原始地址。虽然我不是
secp256k1
cryptographic专家,而且有可能得到返回0的签名…但我不确定您的意思。不涉及签名,它将
from
地址作为可选参数。在交易的情况下,您当然可以恢复发送方,即使接收方是合同。(我想你的意思是
r
s
,和
v
,对吧?)你说了很多话,有些是真的,有些不是。:-)你还有问题吗?