从零地址发送交易

Send a transaction from Zero Address

我正在编写和测试智能合约。使用 web3,我无法从 零地址 (0x0) 发送交易。我想知道是否有可能使用零地址签署和发送交易。实际上,函数中的 msg.sender 应该是零地址。

换句话说,这个 require 语句可以随时 return true ?

require(msg.sender == address(0))

据我了解:

  1. 合约A不能使用零地址调用另一个合约B的函数。合约B函数中的msg.sender永远是合约A的发送者。
  2. 无法生成零地址作为以太坊钱包中的地址之一。也无法找出与零地址相关联的私钥。

是不是我的理解有问题或者遗漏了什么?

在此先感谢您的帮助。

I was wondering if it is ever possible to sign and send a transaction using the zero address.

仅当您持有控制零地址的私钥时。目前可能未知,甚至可能不存在。如您所见,目前有 no sent transactions 来自该地址。

require(msg.sender == address(0))

此语句与检查 require(block.timestamp == 0) 的价值大致相同。如果 EVM 正常工作,这将永远不会发生。

我不能代表作者的意图 - 也许他们将 msg.sender 与以下事实混淆了:发出 Transfer() 事件且第一个参数具有 0x0 是常见的做法地址(通常用于铸造代币,看起来好像是从 0x0 地址发送的)。


注意:在 2017 年之前,可以发送一个特别签名的交易(没有正确的私钥),导致 msg.sender 具有 空发件人 地址0xFFfFfFffFFfffFFfFFfFFFFFffFFFffffFfFFFfF。这已在 EIP-86, you can find more details in this article.

中修复