我正在编写和测试智能合约。使用 web3,我无法从零地址(0x0)发送交易。我想知道是否可以使用零地址签署并发送交易。实际上,msg.sender
函数中的地址应该是零。
换句话说,这个 require 语句可以随时返回吗true
?
require(msg.sender == address(0))
Run Code Online (Sandbox Code Playgroud)
据我了解:
msg.sender
将始终是合约 A 的发送者。我的理解有问题还是我遗漏了什么?
在此先感谢您的帮助。
Pet*_*jda 10
我想知道是否可以使用零地址签署并发送交易。
仅当您持有控制零地址的私钥时。目前这可能是未知的,甚至可能不存在。如您所见,目前该地址没有发送任何交易。
require(msg.sender == address(0))
该语句与检查具有大致相同的价值require(block.timestamp == 0)
。如果 EVM 正常工作,这种情况就永远不会发生。
我不能代表作者的意图 - 也许他们msg.sender
对以下事实感到困惑:通常的做法是Transfer()
使用具有地址的第一个参数来发出事件0x0
(通常用于铸造代币,看起来就像是从该0x0
地址发送的)。
注意:直到 2017 年,发送专门签名的交易(没有正确的私钥)才可能导致发件人地址为msg.sender
空。这已在EIP-86中得到修复,您可以在本文中找到更多详细信息。0xFFfFfFffFFfffFFfFFfFFFFFffFFFffffFfFFFfF
归档时间: |
|
查看次数: |
3428 次 |
最近记录: |