摘要:与此同时,Hardhat还会给这20个EOA账号初始化配置10000ETH余额,方便开发者用这些账号发布本地合约进行测试。eth这位朋友,发送到了Hardhat测试账号0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266为什么是0xf39F这个账号呢?...
1、2022年7月6日,一个不能再普通的星期三。
程序员小三终于完成了最终的合同测试,在人工学椅上转了一圈,兴奋地伸了个懒腰。
「接下来是今天的另一项任务——建立和部署一个以太坊质押节点。」
两个月后,以太坊即将迎来Merge,小三的钱包里有289个ETH,打算带他们去质押理财。
「但是今天的ledger钱夹好像有点bug。算了吧,先转到我分配合同的账号。简而言之,发布和测试合同需要一些通行证。」
敲完转账脚本后,小三去洗杯咖啡。一杯普通的拿铁和这个普通的星期三一样平淡。
喝完咖啡回来,小三一边喝一边开始在Etherscan上刷新,看看刚刚发出的交易是否确认。「嗯嗯,好像收款账号不对。」
突然,小三的心怦怦直跳,手里的咖啡滑落在地上,手脚冰凉的感觉突然涌了上来:
「结束了!将289个ETH发送到Hardhat检测账号!」
2、
Hardhat是以太坊最主流、最常用的开发框架。它提供了一系列工具功能,方便开发者在以太坊平台上开发、测试和安排智能合同。
对于开发人员来说,Hardhat最重要的功能之一就是在当地或Fork建立一个以太坊环境,以便进行合同的本地测试。
当您在当地执行npx hardhat 当node指令时,
Hardhat将在当地创建一个模拟网络,同时生成20个固定的检测EOA账号和相应的私钥。
与此同时,Hardhat还将为这20个EOA账户初始化配备1万ETH余额,方便开发人员使用这些账户发布当地合同进行检测。
(坐拥20个「价值过亿」的账户,I'm the king of localhost!)
请注意,本地模拟网络与以太坊主网无关,这20个EOA账号上的1万ETH余额仅为本地。
然而,由于生成的20个账户是固定的,私钥是开放的,以太坊所有者可以使用这些私钥从这些账户中提取资产。
如果工程师在完成合同测试后忘记改变环境,将测试环境视为主网络环境,并将ETH发送到这20个测试账户,那么悲剧就会发生...
3、
正如前面所描述的,去年7月6日,一笔289ETH被描述为 threepvault.这位朋友发到了Hardhat检测账号
FFFF6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
为什么是0xf39F这个账号?这就是为什么? Hardhat生成的第一个检测账号,因此最为常见。
因此,据推测,这位不幸的程序员复制了第一个测试账户,完成了测试。结果,他忘记了转换设备,并在主网上将289ETH发送到测试账户的地址。
根据当时的货币价格,289ETH价值34万美元,现在价值50多万美元,300万人民币的悲剧。
接下来发生了什么?让我们看看链上的数据:
这种错误的转移发生在15086827区块,当时还是以太坊的POW时代。
这个区块是Flashbots块,MEV Searcher幸运地捕捉到了这个Backrunn「机会」。
错误的转账被打入MEV包,其次是套利交易。支付4.8ETHGas费后,Hardhat测试账户0xf39F中剩余的284ETH转入0x043D账户。
从100ETH到10ETH再到1ETH,最后连0.1ETH都没有放过:
到目前为止,这笔价值200~300万元的资产应该算是泥牛入海,有去无回。
4、
悲剧发生40分钟后,我们的苦主上线了。
他给黑客发了一个叫Message的NFT In a Bottle,一段文本可以包装成照片铸造成NFT。
在NFT中,他描述了自己的心路历程:
hello I was tring to stake a validator node
tonight. Had to send eth to a hot wallet due to a ledger bug.
Thought I was sending it to my contract deployer wallet.. turns out it was a public hardhat test account.
I'm typically pretty careful (hw wallet, send small test transactions) but was careless tonight. Feels bad man.
On the off chance you see this, I'd love to try to negotiate a bounty or something similar. I made a really stupid mistake
翻译一下:
您好,今晚我想质押一个验证节点。由于ledger有bug,不得不将ethher提取。 送到热钱包。
我以为我把它发给了我的合同配置钱夹..(转账后)发现这是一个公开的Hardhat检测账号。
我通常非常小心(硬件钱包、发送小测试交易等),但今晚却非常粗心。感觉很糟糕。
如果你看到这一点,我很乐意尝试谈判赏金或类似的东西。我犯了一个非常愚蠢的错误
5、
但黑客并不理会苦主。
悲剧发生5个小时后,0x043D账户的所有者,也就是MEVSearcher黑客,一个个上线。它熟练地开始转移资产,拆散284个ETH,大大小小地转移到Tornado
6、
然而,这个故事还没有结束。
悲剧发生后15小时,我们的苦主又上线了。
失去289ETH后,不知道这15个小时,苦主是怎么来的。
现在他已经接受了失去289ETH的现实,但并没有完全接受。
苦主买了一个叫ENS域名的ENS域名,
wilthithifundsaretulethaletuleth.eth(假如你把钱还给我threepvault,我会给你100个 ETH),并将域名发送给黑客,提出他的 Offer。
也许他想通过这种方式传达信息,希望黑客能发现自己的良心或大发慈悲,转回189ETH。
2023年3月,悲剧发生已经半年多了。到目前为止,黑客地址还没有任何行动,也没有交易报告,受害者的账户也没有任何来自Tornado的账户。我想这个故事到此结束,不应该有后续。这是黑暗的森林。没有人会为你的错误付出代价。每个人都能相信的是他们自己。