主页 > imtoken官网地址打不开 > (转账)以太坊(Ethereum)全零地址(0x000000...)秘密

(转账)以太坊(Ethereum)全零地址(0x000000...)秘密

imtoken官网地址打不开 2023-09-15 05:12:34

最近有朋友问我一个问题,说他发现了一个奇怪的现象。

以太坊区块链实际上有一个全0的地址:0x0000000000000000000000000000000000000000

这到底是怎么回事?

看了区块链,觉得挺有意思的,慢慢听我说。

神秘而丰富的地址

使用在线区块链浏览器检查此地址。我去,有7228个ETH,价值500多w美金。

这是一个怎样的暴君?所有这些 ETH 是从哪里来的?

创世区块

上一篇《以太坊创世秘诀》中提到,ETH的主要来源不是挖矿,而是众筹时发行的。

即使在以太坊正式发布近三年后的今天,创世区块中发行的 7200w ETH 仍占 73.4%。

那么,这个全零地址中的 ETH 是不是来自创世区块中发行的 ETH?

创世区块中发行的 ETH 的分布可以在这里找到:genesis_block.json,这个全零地址不在其中。

但是通过分析创世块可以发现,挖出创世块的矿工其实就是这个全零地址。

{ difficulty: '17179869184',
  extraData: '0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa', gasLimit: 5000, gasUsed: 0, hash: '0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3', logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', miner: '0x0000000000000000000000000000000000000000', mixHash: '0x0000000000000000000000000000000000000000000000000000000000000000', nonce: '0x0000000000000042', number: 0, parentHash: '0x0000000000000000000000000000000000000000000000000000000000000000', receiptsRoot: '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421', sha3Uncles: '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347', size: 540, stateRoot: '0xd7f8974fb5ac78d9ac099b9ad5018bedc2ce0a72dad1827a1709da30580f0544', timestamp: 0, totalDifficulty: '17179869184', transactions: [], transactionsRoot: '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421', uncles: [] } 

创世块不是开采出来的,它是人工创建的,是整个区块链的起点。

由于它不是开采的,因此使用全零地址作为占位符是合理的。

因为创世块不是通过挖矿获得的,所以没有人为此消耗算力,自然不会有出块奖励。

转身后,这个全零地址中的ETH与创世块无关。

以太坊显卡挖矿成本_以太坊的成本_以太坊联盟和以太坊的关系

矿业

除了创世区块中发行的 ETH 之外,产生新 ETH 的方式只有一种,那就是挖矿。

为了更准确的计算,以下单位使用 ETH 的最小单位 Wei。有关单位问题,请参阅此处的“以太币单位”。

寻找矿工是这个全零地址的区块,有不少。

从这个全零地址总共挖出 94 个主链区块:

区块奖励由三部分组成:固定奖励、叔块奖励和手续费。

从这个全零地址中一共挖出了2个叔块:

通过挖矿,这个全零地址获得的ETH总量为:478889602212339229882wei。

为什么有人会使用全零地址来挖矿?

仔细一看,这个全零地址挖出的最后一个区块的高度是 1045864。

该区块于北京时间 2016 年 2 月 23 日 10:31:46 左右开采。

从那时到现在已经两年多了。那时距离以太坊正式发布才半年多,而以太坊只有少数人知道。

再来看看1045864区块的难度值:13,869,188,715,132,也就是14T左右。

在这个难度下,即使只有一块1060显卡,平均也只需要8天时间就能发现一个区块。如果是矿机,这个时间会缩短到几个小时到1天。

由于难度值较低,在此之前开采的块将花费更少的时间。

从全零地址挖出的最早区块是5305,难度值只有199,485,740,316,小于0.2T。以1060显卡为例,找块只需要不到3个小时。

那时,区块非常容易开采,几乎任何配备独立显卡的中端 PC 都可以开采区块。

于是,很多人用自己的普通PC以太坊的成本,抱着试一试的心态去尝试挖矿,成本几乎为零。

以太坊联盟和以太坊的关系_以太坊显卡挖矿成本_以太坊的成本

在这群人中,只会复制粘贴的小白也不少。可悲的是,他们忘记设置付款地址。部分专业矿工在调试机器稳定性时,为了方便没有配置挖矿软件。

单人挖矿时,如果没有设置支付地址,部分钱包软件会默认使用全零地址挖矿,如ethereum/cpp-ethereum。

这也解释了为什么这么多块的地址都是零的。

后来,出块越来越难,ETH越来越值钱。单靠普通电脑是不可能挖出块的。此时仍在挖矿的大多数人是投资者或极客。他们要么有技术支持人员,要么本身就是技术人员,自然不会犯这种低级错误。后来,挖矿难度进一步加大,矿池成为主流。矿池由更专业的团队运营,矿池不可能忘记填写支付地址。

这也解释了为什么过去两年所有零地址都没有挖出区块。

贸易

对于以太坊来说,挖矿是在创世区块之后生成 ETH 的唯一途径。

但是,对于一个钱包地址来说,它获取 ETH 的方式也可以是一笔交易。虽然交易不能创造更多的 ETH,但它们可以增加/减少一个钱包地址的余额,这本质上就是 ETH 的流动。

让我们看看有哪些交易与这个全零地址相关联。

扫描整个区块链,到目前为止,共有 757 笔交易与这个全零地址相关联。

为了不让这篇文章太长,我只挑一些有代表性的交易。毕竟已经粘贴了700多笔交易,真的不方便阅读。

奇怪的是,这个地址只输入交易,从不输出任何交易,这是什么原因呢?我们稍后会讨论这个。

我们先来看两个土豪交易:

在本次交易中,0x3F98e477a361F777DA14611a7e419A75Fd238b6b 转移了 2000 ETH。

在本次交易中,0xF5437e158090B2a2d68f82b54a5864B95dD6DBea 转移了 1000 ETH。

以太坊联盟和以太坊的关系_以太坊显卡挖矿成本_以太坊的成本

这两个大玩家加起来几乎占了全零地址中 ETH 的一半。

继续查看地址,可以发现矿池发起的支付交易,比如这些交易:

即使在矿池挖矿成为主流的今天,仍有小白忘记提供正确的矿池支付地址,竹篮空空如也。好在这起案件涉及的 ETH 很少,损失也不大。

矿池也遵守规则。它不把这些利润当成自己的,而是忠实地转移到这个全零地址。应该喜欢。

通过757次交易,全零地址一共收到4568520302798110070662wei。

挖矿加交易获得的ETH有多少?

478889602212339229882(挖矿)+4568520302798110070662(交易)

= 5047409905010449300544wei

大约是 5047.41ETH,与之前发现的 7000 多 ETH 似乎差距很大。

这里发生了什么?

别着急,我们来看看“人家坐,钱从天而降”是什么意思。

两个账户

以太坊平台的账户分为两类:

通常我们使用EOA进行转账交易。在一些在线区块链浏览器中,这两个账户会有不同的标记。

这是EOA:

这是合约账户:

以太坊显卡挖矿成本_以太坊的成本_以太坊联盟和以太坊的关系

指出不同?EOA 显示为“以太坊账户”,合约账户显示为“以太坊合约”。至于两者的区别和联系,我们有时间再谈。

内幕交易

通常我们的转账发生在两个 EOA 之间,A 将 ETH 转账给 B。

如果智能合约 C 在执行过程中将 ETH 转入 EOA,这种情况称为内部交易。

为什么叫内幕交易?

因为这种转账其实是智能合约执行的结果,并不是真正的交易,直接查询交易是找不到的。你必须自己执行智能合约才能知道结果。

这个全零地址共有 370 个内部交易。

其中两个智能合约因 gas 超过上限而未能执行:

智能合约因 gas 短缺以外的原因无法执行:

最后,只有 367 个有效。

让我们看一个涉及内幕交易的例子:

0x9e14d0adbce4a52f79df0b29bed6d47b966bd27a76cccbcc538021ed79f591e4

如您所见,此交易是对智能合约 (0x122De6B3635191aE7801235331bcAEC325eCB5B0) ) 的 EOA (0x2504a2f15Bd951291b2445F1660e5132A990402E) 调用。

表面上看与这个全零地址无关,但在智能合约执行过程中,0.001ETH会在内部转入这个全零地址。

367 次有效内部交易,共计 2180953783303118115604wei 被转入全零地址。

现在让我们总结一下:

挖矿+交易+内部交易

以太坊的成本_以太坊显卡挖矿成本_以太坊联盟和以太坊的关系

=478889602212339229882+4568520302798110070662+2180953783303118115604

=7228363688313567416148wei

=7228.363688313567416148ETH

赶紧看看之前的截图,嗯,结果是一样的。

看来,这个全零地址的“巨额财产来源不明罪”可以被清除。

黑洞地址

我们先来回顾一下以太坊账户是如何创建的。

首先创建一个私钥,用这个私钥推导出公钥,公钥通过Hash变成账户地址,或者钱包地址。

这个过程可以用一个非常短的小脚本来完成:

(PS:如果你没有计算机基础知识,别着急,直接忽略这段代码,下面的内容都是人类语言)

#!/usr/bin/python3
# pip install ecdsa
# pip install pysha3
from ecdsa import SigningKey, SECP256k1 import sha3 keccak = sha3.keccak_256() priv = SigningKey.generate(curve=SECP256k1) pub = priv.get_verifying_key().to_string() keccak.update(pub) address = keccak.hexdigest()[24:] print("Private key:", priv.to_string().hex()) print("Public key: ", pub.hex()) print("Address: 0x" + address) 

在以太坊中,接收交易时只需要提供哈希后的钱包地址,发起交易时必须使用私钥签名。这也决定了要在账户里花钱,就必须有私钥。

如上图所示,私钥可以导出公钥以太坊的成本,公钥可以散列到钱包地址,也就是绿色部分。这些计算很容易完成。

但是,这两个过程是不可逆的,或者说逆向计算极其困难,也就是图中红色的部分。

以现在的人类科技,只能靠穷举法来解决,在一个极其巨大的空间里不断的搜索几乎是不可能的。

因此,如果你只知道公钥或钱包地址,几乎不可能获得私钥。没有私钥,这个地址上的 ETH 永远无法转移,并且被锁定在这个地址上。

如果私钥丢失或无法确定私钥的地址,则称为黑洞地址,因为一旦 ETH 进入这样的地址,就再也无法转出。黑洞是一种只能进入而不能逃逸的天体。连光都逃不掉。黑洞地址的行为与黑洞非常相似,因此得名。

现在明白为什么这个全零地址没有任何传出交易了吗?

因为这个地址上没有人知道私钥。