Ethernaut - Recovery

| Ethernaut | 469 | 2分钟 | 以太坊智能合约Ethernaut

过半了,快做完了。

一个合约创建者构建了一个非常简单的代币工厂合约。任何人都可以轻松创建新的代币。在部署第一个代币合约后,创建者发送了0.001以太币以获得更多的代币。此后,他们失去了合约地址。如果可以从丢失的合约地址中恢复(或删除)0.001以太币,则此级别将完成。

重点是,核心是区块链上的所有交易都是有记录的……在区块链浏览器里找一下就找到了。

但是感觉有点作弊,这题应该是想让我们了解智能合约的地址是怎么创建的。

这题的提示更有意思,因为智能合约创建的地址是可预测的,可以提前给这个地址发一些以太币,然后再在这个地址上创建智能合约,智能合约初始就拿到了这隐藏的钱。

创建者地址:这是部署合约的账户的地址(通常是外部拥有账户EOA的地址)。

Nonce:这是该地址已发送交易的数量,表示该地址的交易计数器。

address = keccak256(RLP(创建者地址 + nonce))[12:]

RLP 表示对数据进行 递归长度前缀编码(RLP Encoding)。即对创建者地址和nonce进行编码。