谁能向我解释一下什么address(0)
是在 Solidity 中吗?我在文档中找到了以下内容,但对我来说并没有真正意义:
如果目标账户是零账户(地址为0的账户),则交易创建一个新合约。如前所述,该合约的地址不是零地址,而是从发送方及其发送的交易数量(“随机数”)派生的地址。这种合约创建交易的有效负载被视为 EVM 字节码并被执行。此执行的输出将作为合约代码永久存储。这意味着,为了创建合约,您不需要发送合约的实际代码,而是发送返回该代码的代码。
http://solidity.readthedocs.io/en/develop/introduction-to-smart-contracts.html?highlight=address(0)#index-8 http://solidity.readthedocs.io/en/develop/introduction-to-smart-contracts.html?highlight=address(0)#index-8
在以太坊交易中,零账户只是一个特殊情况,用于指示正在部署新合约。它实际上是“0x0”设置为to
原始交易中的字段。
每笔以太坊交易,无论是两个外部账户之间的转账、执行合约代码的请求,还是部署新合约的请求,都以相同的方式编码。原始交易对象看起来像这样:
transaction = {
nonce: '0x0',
gasLimit: '0x6acfc0', // 7000000
gasPrice: '0x4a817c800', // 20000000000
to: '0x0',
value: '0x0',
data: '0xfffff'
};
If to
设置为“0x0”以外的其他值,该请求将导致将以太币传输到该地址(如果value
非零),并执行编码在data
场地。请记住,该地址可以是合约,也可以是外部账户。
当。。。的时候to
地址是零地址,将通过执行中的代码创建一个新合约data
(这就是“返回代码的代码”的含义)。新创建的合约的地址在技术上是预先已知的,因为它基于发送者的地址和当前的随机数。该地址在挖矿后成为合约的正式地址。
有关以太坊交易的详细阅读,请查看此博客文章 https://medium.com/@codetractio/inside-an-ethereum-transaction-fa94ffca912f.
注:还有实际的Solidity代码语句address(0)
这是类型变量的初始值address
。然而,您发布的文档具体指的是to
交易中的账户地址设置为“0x0”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)