从零地址发送交易
Send a transaction from Zero Address
我正在编写和测试智能合约。使用 web3,我无法从 零地址 (0x0) 发送交易。我想知道是否有可能使用零地址签署和发送交易。实际上,函数中的 msg.sender
应该是零地址。
换句话说,这个 require 语句可以随时 return true
?
require(msg.sender == address(0))
据我了解:
- 合约A不能使用零地址调用另一个合约B的函数。合约B函数中的
msg.sender
永远是合约A的发送者。
- 无法生成零地址作为以太坊钱包中的地址之一。也无法找出与零地址相关联的私钥。
是不是我的理解有问题或者遗漏了什么?
在此先感谢您的帮助。
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.
中修复
我正在编写和测试智能合约。使用 web3,我无法从 零地址 (0x0) 发送交易。我想知道是否有可能使用零地址签署和发送交易。实际上,函数中的 msg.sender
应该是零地址。
换句话说,这个 require 语句可以随时 return true
?
require(msg.sender == address(0))
据我了解:
- 合约A不能使用零地址调用另一个合约B的函数。合约B函数中的
msg.sender
永远是合约A的发送者。 - 无法生成零地址作为以太坊钱包中的地址之一。也无法找出与零地址相关联的私钥。
是不是我的理解有问题或者遗漏了什么?
在此先感谢您的帮助。
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.